diff --git a/bin/generate.js b/bin/generate.js
index 59f55585c..7a18475b5 100644
--- a/bin/generate.js
+++ b/bin/generate.js
@@ -11,10 +11,9 @@ const {
LayerElementsCompositeLoader,
MultipleByLoaderGenerator,
MultipleWithAssociationsByLoaderGenerator
-} = require("@reldens/tile-map-generator");
+} = require('@reldens/tile-map-generator');
const { FileHandler } = require('../lib/game/server/file-handler');
-const path = require("path");
-const {Logger} = require("@reldens/utils");
+const { Logger } = require('@reldens/utils');
/**
*
@@ -38,15 +37,15 @@ const {Logger} = require("@reldens/utils");
let mapsGenerateModes = {
LayerElementsObjectLoader: async (commandParams) => {
- const loader = new LayerElementsObjectLoader(commandParams);
+ let loader = new LayerElementsObjectLoader(commandParams);
await loader.load();
- const generator = new RandomMapGenerator(loader.mapData);
+ let generator = new RandomMapGenerator(loader.mapData);
return await generator.generate();
},
LayerElementsCompositeLoader: async (commandParams) => {
- const loader = new LayerElementsCompositeLoader(commandParams);
+ let loader = new LayerElementsCompositeLoader(commandParams);
await loader.load();
- const generator = new RandomMapGenerator();
+ let generator = new RandomMapGenerator();
await generator.fromElementsProvider(loader.mapData);
return await generator.generate();
},
@@ -58,7 +57,7 @@ let mapsGenerateModes = {
let generator = new MultipleWithAssociationsByLoaderGenerator({loaderData: commandParams});
await generator.generate();
}
-}
+};
let validCommands = {
'players-experience-per-level': (commandParams) => {
@@ -74,7 +73,7 @@ let validCommands = {
attributesPerLevel.generate();
},
'maps': async (commandParams) => {
- if (!mapsGenerateModes[commandParams.importMode]) {
+ if(!mapsGenerateModes[commandParams.importMode]){
console.error('- Invalid import mode. Valid options: '+Object.keys(mapsGenerateModes).join(', '));
}
let pathParts = commandParams.mapDataFile.split('/');
@@ -102,12 +101,12 @@ if(2 === args.length){
let extractedParams = args.slice(2);
let command = extractedParams[0] || false;
-if (!command) {
+if(!command){
console.error('- Missing command.');
return false;
}
-if (-1 === Object.keys(validCommands).indexOf(command)) {
+if(-1 === Object.keys(validCommands).indexOf(command)){
console.error('- Invalid command.', command);
return false;
}
@@ -116,25 +115,25 @@ let importJson = 'monsters-experience-per-level' === command
|| 'players-experience-per-level' === command
|| 'attributes-per-level' === command;
-if (importJson) {
- let filePath = path.join(process.cwd(), extractedParams[1] || '');
+if(importJson){
+ let filePath = FileHandler.joinPaths(process.cwd(), extractedParams[1] || '');
if(!filePath){
Logger.error('Invalid data file path.', process.cwd(), filePath);
return false;
}
let importedJson = FileHandler.fetchFileJson(filePath);
- if (!importedJson) {
+ if(!importedJson){
console.error('- Can not parse data file.');
return false;
}
- if ('monsters-experience-per-level' === command) {
- let secondaryFilePath = path.join(process.cwd(), extractedParams[2] || '');
+ if('monsters-experience-per-level' === command){
+ let secondaryFilePath = FileHandler.joinPaths(process.cwd(), extractedParams[2] || '');
if(!secondaryFilePath){
Logger.error('Invalid data file path.', process.cwd(), secondaryFilePath);
return false;
}
let importedPlayerLevelsJson = FileHandler.fetchFileJson(secondaryFilePath);
- if (!importedPlayerLevelsJson) {
+ if(!importedPlayerLevelsJson){
console.error('- Can not parse data file for player levels.');
return false;
}
@@ -145,10 +144,9 @@ if (importJson) {
}
-if ('maps' === command) {
+if('maps' === command){
return validCommands[command]({
mapDataFile: extractedParams[1],
- // mapData: fetchFileContents(extractedParams[1] || ''),
importMode: extractedParams[2] || ''
});
}
diff --git a/install/assets/favicon/android-chrome-192x192.png b/install/assets/favicons/android-chrome-192x192.png
similarity index 100%
rename from install/assets/favicon/android-chrome-192x192.png
rename to install/assets/favicons/android-chrome-192x192.png
diff --git a/install/assets/favicon/android-chrome-512x512.png b/install/assets/favicons/android-chrome-512x512.png
similarity index 100%
rename from install/assets/favicon/android-chrome-512x512.png
rename to install/assets/favicons/android-chrome-512x512.png
diff --git a/install/assets/favicon/apple-touch-icon.png b/install/assets/favicons/apple-touch-icon.png
similarity index 100%
rename from install/assets/favicon/apple-touch-icon.png
rename to install/assets/favicons/apple-touch-icon.png
diff --git a/install/assets/favicon/favicon-16x16.png b/install/assets/favicons/favicon-16x16.png
similarity index 100%
rename from install/assets/favicon/favicon-16x16.png
rename to install/assets/favicons/favicon-16x16.png
diff --git a/install/assets/favicon/favicon-32x32.png b/install/assets/favicons/favicon-32x32.png
similarity index 100%
rename from install/assets/favicon/favicon-32x32.png
rename to install/assets/favicons/favicon-32x32.png
diff --git a/install/index.html b/install/index.html
index 68c3a43d9..7a4e61da7 100644
--- a/install/index.html
+++ b/install/index.html
@@ -4,9 +4,9 @@
DwDeveloper - Reldens | MMORPG Platform
-
-
-
+
+
+
@@ -37,11 +37,14 @@
Public URL (useful if you have a reverse proxy)
-
diff --git a/install/site.webmanifest b/install/site.webmanifest
index 7423f6318..87b3a3e0d 100644
--- a/install/site.webmanifest
+++ b/install/site.webmanifest
@@ -1 +1 @@
-{"name":"","short_name":"","icons":[{"src":"./assets/favicon/android-chrome-192x192.png","sizes":"192x192","type":"image/png"},{"src":"./assets/favicon/android-chrome-512x512.png","sizes":"512x512","type":"image/png"}],"theme_color":"#ffffff","background_color":"#ffffff","display":"standalone"}
\ No newline at end of file
+{"name":"","short_name":"","icons":[{"src":"./assets/favicons/android-chrome-192x192.png","sizes":"192x192","type":"image/png"},{"src":"./assets/favicons/android-chrome-512x512.png","sizes":"512x512","type":"image/png"}],"theme_color":"#ffffff","background_color":"#ffffff","display":"standalone"}
\ No newline at end of file
diff --git a/lib/actions/server/data-loader.js b/lib/actions/server/data-loader.js
index 4c7ecf6c1..48fb74ce7 100644
--- a/lib/actions/server/data-loader.js
+++ b/lib/actions/server/data-loader.js
@@ -55,7 +55,7 @@ class DataLoader
static async loadClassPathFullList(configProcessor, skillsModelsManager)
{
configProcessor.skills.classPaths = await skillsModelsManager.generateClassPathInstances(
- (configProcessor.getWithoutLogs('server/customClasses/skills/classPath', {}))
+ configProcessor.getWithoutLogs('server/customClasses/skills/classPath', {})
);
}
diff --git a/lib/actions/server/entities-translations.js b/lib/actions/server/entities-translations.js
index 20217117e..babc96317 100644
--- a/lib/actions/server/entities-translations.js
+++ b/lib/actions/server/entities-translations.js
@@ -22,6 +22,7 @@ module.exports.entitiesTranslations = {
skills_skill_group_relation: 'Groups Relation',
skills_skill_owner_conditions: 'Owner Conditions',
skills_skill_owner_effects: 'Owner Effects',
+ skills_groups: 'Groups',
skills_skill_type: 'Skill Types',
operation_types: 'Operation Types'
}
diff --git a/lib/actions/server/entities/animations-entity.js b/lib/actions/server/entities/animations-entity.js
index 12fcfa203..90f8094f7 100644
--- a/lib/actions/server/entities/animations-entity.js
+++ b/lib/actions/server/entities/animations-entity.js
@@ -11,15 +11,16 @@ class AnimationsEntity extends EntityProperties
static propertiesConfig(extraProps)
{
+ let titleProperty = 'key';
let properties = {
id: {},
skill_id: {
type: 'reference',
reference: 'skills_skill',
+ alias: 'skill',
isRequired: true
},
- key: {
- isTitle: true,
+ [titleProperty]: {
isRequired: true
},
classKey: {},
@@ -28,19 +29,20 @@ class AnimationsEntity extends EntityProperties
}
};
- let listPropertiesKeys = Object.keys(properties);
- let editPropertiesKeys = [...listPropertiesKeys];
-
- listPropertiesKeys.splice(listPropertiesKeys.indexOf('animationData'), 1);
- listPropertiesKeys.splice(listPropertiesKeys.indexOf('classKey'), 1);
- editPropertiesKeys.splice(editPropertiesKeys.indexOf('id'), 1);
+ let showProperties = Object.keys(properties);
+ let listProperties = [...showProperties];
+ let editProperties = [...listProperties];
+ listProperties.splice(listProperties.indexOf('animationData'), 1);
+ listProperties.splice(listProperties.indexOf('classKey'), 1);
+ editProperties.splice(editProperties.indexOf('id'), 1);
return {
- listProperties: listPropertiesKeys,
- showProperties: Object.keys(properties),
- filterProperties: listPropertiesKeys,
- editProperties: editPropertiesKeys,
+ showProperties,
+ editProperties,
+ listProperties,
+ filterProperties: showProperties,
properties,
+ titleProperty,
...extraProps
};
}
diff --git a/lib/actions/server/entities/class-path-entity.js b/lib/actions/server/entities/class-path-entity.js
index f78217753..4cf37e2ac 100644
--- a/lib/actions/server/entities/class-path-entity.js
+++ b/lib/actions/server/entities/class-path-entity.js
@@ -11,14 +11,13 @@ class ClassPathEntity extends EntityProperties
static propertiesConfig(extraProps)
{
+ let titleProperty = 'label';
let properties = {
id: {},
key: {
isRequired: true
},
- label: {
- isTitle: true
- },
+ [titleProperty]: {},
levels_set_id: {
type: 'reference',
reference: 'skills_levels_set',
@@ -26,17 +25,17 @@ class ClassPathEntity extends EntityProperties
}
};
- let listPropertiesKeys = Object.keys(properties);
- let editPropertiesKeys = [...listPropertiesKeys];
-
- editPropertiesKeys.splice(editPropertiesKeys.indexOf('id'), 1);
+ let showProperties = Object.keys(properties);
+ let editProperties = [...showProperties];
+ editProperties.splice(editProperties.indexOf('id'), 1);
return {
- listProperties: listPropertiesKeys,
- showProperties: Object.keys(properties),
- filterProperties: listPropertiesKeys,
- editProperties: editPropertiesKeys,
+ showProperties,
+ editProperties,
+ listProperties: showProperties,
+ filterProperties: showProperties,
properties,
+ titleProperty,
...extraProps
};
}
diff --git a/lib/actions/server/entities/class-path-level-label-entity.js b/lib/actions/server/entities/class-path-level-label-entity.js
index 443ff88fd..4d95479ff 100644
--- a/lib/actions/server/entities/class-path-level-label-entity.js
+++ b/lib/actions/server/entities/class-path-level-label-entity.js
@@ -11,35 +11,37 @@ class ClassPathLevelLabelEntity extends EntityProperties
static propertiesConfig(extraProps)
{
+ let titleProperty = 'label';
let properties = {
id: {},
class_path_id: {
type: 'reference',
reference: 'skills_class_path',
+ alias: 'class_path',
isRequired: true
},
level_id: {
type: 'reference',
reference: 'skills_levels',
+ alias: 'label_level',
isRequired: true
},
- label: {
- isTitle: true,
+ [titleProperty]: {
isRequired: true
},
};
- let listPropertiesKeys = Object.keys(properties);
- let editPropertiesKeys = [...listPropertiesKeys];
-
- editPropertiesKeys.splice(editPropertiesKeys.indexOf('id'), 1);
+ let showProperties = Object.keys(properties);
+ let editProperties = [...showProperties];
+ editProperties.splice(editProperties.indexOf('id'), 1);
return {
- listProperties: listPropertiesKeys,
- showProperties: Object.keys(properties),
- filterProperties: listPropertiesKeys,
- editProperties: editPropertiesKeys,
+ showProperties,
+ editProperties,
+ listProperties: showProperties,
+ filterProperties: showProperties,
properties,
+ titleProperty,
...extraProps
};
}
diff --git a/lib/actions/server/entities/class-path-level-skills-entity.js b/lib/actions/server/entities/class-path-level-skills-entity.js
index 24a0233c4..c86303fab 100644
--- a/lib/actions/server/entities/class-path-level-skills-entity.js
+++ b/lib/actions/server/entities/class-path-level-skills-entity.js
@@ -16,30 +16,32 @@ class ClassPathLevelSkillsEntity extends EntityProperties
class_path_id: {
type: 'reference',
reference: 'skills_class_path',
+ alias: 'class_path',
isRequired: true
},
level_id: {
type: 'reference',
reference: 'skills_levels',
+ alias: 'class_path_level',
isRequired: true
},
skill_id: {
type: 'reference',
reference: 'skills_skill',
+ alias: 'class_path_level_skill',
isRequired: true
},
};
- let listPropertiesKeys = Object.keys(properties);
- let editPropertiesKeys = [...listPropertiesKeys];
-
- editPropertiesKeys.splice(editPropertiesKeys.indexOf('id'), 1);
+ let showProperties = Object.keys(properties);
+ let editProperties = [...showProperties];
+ editProperties.splice(editProperties.indexOf('id'), 1);
return {
- listProperties: listPropertiesKeys,
- showProperties: Object.keys(properties),
- filterProperties: listPropertiesKeys,
- editProperties: editPropertiesKeys,
+ showProperties,
+ editProperties,
+ listProperties: showProperties,
+ filterProperties: showProperties,
properties,
...extraProps
};
diff --git a/lib/actions/server/entities/level-entity.js b/lib/actions/server/entities/level-entity.js
index a15df045c..e7eee59d0 100644
--- a/lib/actions/server/entities/level-entity.js
+++ b/lib/actions/server/entities/level-entity.js
@@ -11,37 +11,38 @@ class LevelEntity extends EntityProperties
static propertiesConfig(extraProps)
{
+ let titleProperty = 'label';
let properties = {
id: {},
key: {
isRequired: true
},
- label: {
- isTitle: true,
+ [titleProperty]: {
isRequired: true
},
required_experience: {
type: 'number',
isRequired: true
},
- levels_set_id: {
+ level_set_id: {
type: 'reference',
reference: 'skills_levels_set',
+ alias: 'level_set',
isRequired: true
}
};
- let listPropertiesKeys = Object.keys(properties);
- let editPropertiesKeys = [...listPropertiesKeys];
-
- editPropertiesKeys.splice(editPropertiesKeys.indexOf('id'), 1);
+ let showProperties = Object.keys(properties);
+ let editProperties = [...showProperties];
+ editProperties.splice(editProperties.indexOf('id'), 1);
return {
- listProperties: listPropertiesKeys,
- showProperties: Object.keys(properties),
- filterProperties: listPropertiesKeys,
- editProperties: editPropertiesKeys,
+ showProperties,
+ editProperties,
+ listProperties: showProperties,
+ filterProperties: showProperties,
properties,
+ titleProperty,
...extraProps
};
}
diff --git a/lib/actions/server/entities/level-modifiers-entity.js b/lib/actions/server/entities/level-modifiers-entity.js
index a01179fd3..06135eedc 100644
--- a/lib/actions/server/entities/level-modifiers-entity.js
+++ b/lib/actions/server/entities/level-modifiers-entity.js
@@ -12,15 +12,16 @@ class LevelModifiersEntity extends EntityProperties
static propertiesConfig(extraProps)
{
+ let titleProperty = 'key';
let properties = {
id: {},
level_id: {
type: 'reference',
reference: 'skills_levels',
+ alias: 'level_owner',
isRequired: true
},
- key: {
- isTitle: true,
+ [titleProperty]: {
isRequired: true
},
property_key: {
@@ -49,23 +50,24 @@ class LevelModifiersEntity extends EntityProperties
maxProperty: {},
};
- let listPropertiesKeys = Object.keys(properties);
- let editPropertiesKeys = [...listPropertiesKeys];
-
- listPropertiesKeys = sc.removeFromArray(listPropertiesKeys, [
+ let showProperties = Object.keys(properties);
+ let listProperties = [...showProperties];
+ let editProperties = [...listProperties];
+ listProperties = sc.removeFromArray(listProperties, [
'minValue',
'maxValue',
'minProperty',
'maxProperty'
]);
- editPropertiesKeys.splice(editPropertiesKeys.indexOf('id'), 1);
+ editProperties.splice(editProperties.indexOf('id'), 1);
return {
- listProperties: listPropertiesKeys,
- showProperties: Object.keys(properties),
- filterProperties: listPropertiesKeys,
- editProperties: editPropertiesKeys,
+ showProperties,
+ editProperties,
+ listProperties,
+ filterProperties: listProperties,
properties,
+ titleProperty,
...extraProps
};
}
diff --git a/lib/actions/server/entities/level-up-animations-entity.js b/lib/actions/server/entities/level-up-animations-entity.js
index 965b7d951..9c20419d6 100644
--- a/lib/actions/server/entities/level-up-animations-entity.js
+++ b/lib/actions/server/entities/level-up-animations-entity.js
@@ -15,28 +15,30 @@ class LevelUpAnimationsEntity extends EntityProperties
id: {},
class_path_id: {
type: 'reference',
- reference: 'skills_class_path'
+ reference: 'skills_class_path',
+ alias: 'class_path',
},
level_id: {
type: 'reference',
- reference: 'skills_levels'
+ reference: 'skills_levels',
+ alias: 'level',
},
animationData: {
isRequired: true
}
};
- let listPropertiesKeys = Object.keys(properties);
- let editPropertiesKeys = [...listPropertiesKeys];
-
- listPropertiesKeys.splice(listPropertiesKeys.indexOf('animationData'), 1);
- editPropertiesKeys.splice(editPropertiesKeys.indexOf('id'), 1);
+ let showProperties = Object.keys(properties);
+ let listProperties = [...showProperties];
+ let editProperties = [...listProperties];
+ listProperties.splice(listProperties.indexOf('animationData'), 1);
+ editProperties.splice(editProperties.indexOf('id'), 1);
return {
- listProperties: listPropertiesKeys,
- showProperties: Object.keys(properties),
- filterProperties: listPropertiesKeys,
- editProperties: editPropertiesKeys,
+ showProperties,
+ editProperties,
+ listProperties,
+ filterProperties: listProperties,
properties,
...extraProps
};
diff --git a/lib/actions/server/entities/levels-set-entity.js b/lib/actions/server/entities/levels-set-entity.js
index c5ecb65bb..742c0d7cb 100644
--- a/lib/actions/server/entities/levels-set-entity.js
+++ b/lib/actions/server/entities/levels-set-entity.js
@@ -22,16 +22,15 @@ class LevelsSetEntity extends EntityProperties
}
};
- let listPropertiesKeys = Object.keys(properties);
- let editPropertiesKeys = [...listPropertiesKeys];
-
- editPropertiesKeys.splice(editPropertiesKeys.indexOf('id'), 1);
+ let showProperties = Object.keys(properties);
+ let editProperties = [...showProperties];
+ editProperties.splice(editProperties.indexOf('id'), 1);
return {
- listProperties: listPropertiesKeys,
- showProperties: Object.keys(properties),
- filterProperties: listPropertiesKeys,
- editProperties: editPropertiesKeys,
+ showProperties,
+ editProperties,
+ listProperties: showProperties,
+ filterProperties: showProperties,
properties,
...extraProps
};
diff --git a/lib/actions/server/entities/operation-types-entity.js b/lib/actions/server/entities/operation-types-entity.js
index cf6e1f00e..8a66bf241 100644
--- a/lib/actions/server/entities/operation-types-entity.js
+++ b/lib/actions/server/entities/operation-types-entity.js
@@ -11,24 +11,26 @@ class OperationTypesEntity extends EntityProperties
static propertiesConfig(extraProps)
{
+ let titleProperty = 'label';
let properties = {
id: {},
- label: {},
+ [titleProperty]: {},
key: {}
};
- let listPropertiesKeys = Object.keys(properties);
- let editPropertiesKeys = [...listPropertiesKeys];
-
- editPropertiesKeys.splice(editPropertiesKeys.indexOf('id'), 1);
-
- return Object.assign({
- listProperties: listPropertiesKeys,
- showProperties: Object.keys(properties),
- filterProperties: listPropertiesKeys,
- editProperties: editPropertiesKeys,
- properties
- }, extraProps);
+ let showProperties = Object.keys(properties);
+ let editProperties = [...showProperties];
+ editProperties.splice(editProperties.indexOf('id'), 1);
+
+ return {
+ showProperties,
+ editProperties,
+ listProperties: showProperties,
+ filterProperties: showProperties,
+ properties,
+ titleProperty,
+ ...extraProps
+ };
}
}
diff --git a/lib/actions/server/entities/owners-class-path-entity.js b/lib/actions/server/entities/owners-class-path-entity.js
index f261638ce..39af136a0 100644
--- a/lib/actions/server/entities/owners-class-path-entity.js
+++ b/lib/actions/server/entities/owners-class-path-entity.js
@@ -16,7 +16,8 @@ class OwnersClassPathEntity extends EntityProperties
class_path_id: {
type: 'reference',
reference: 'skills_class_path',
- isRequired: true
+ isRequired: true,
+ alias: 'class_path_owner'
},
owner_id: {
type: 'reference',
@@ -33,16 +34,15 @@ class OwnersClassPathEntity extends EntityProperties
}
};
- let listPropertiesKeys = Object.keys(properties);
- let editPropertiesKeys = [...listPropertiesKeys];
-
- editPropertiesKeys.splice(editPropertiesKeys.indexOf('id'), 1);
+ let showProperties = Object.keys(properties);
+ let editProperties = [...showProperties];
+ editProperties.splice(editProperties.indexOf('id'), 1);
return {
- listProperties: listPropertiesKeys,
- showProperties: Object.keys(properties),
- filterProperties: listPropertiesKeys,
- editProperties: editPropertiesKeys,
+ showProperties,
+ editProperties,
+ listProperties: showProperties,
+ filterProperties: showProperties,
properties,
...extraProps
};
diff --git a/lib/actions/server/entities/skill-attack-entity.js b/lib/actions/server/entities/skill-attack-entity.js
index 618175b7e..1dfb505d3 100644
--- a/lib/actions/server/entities/skill-attack-entity.js
+++ b/lib/actions/server/entities/skill-attack-entity.js
@@ -17,6 +17,7 @@ class SkillAttackEntity extends EntityProperties
skill_id: {
type: 'reference',
reference: 'skills_skill',
+ alias: 'parent_skill',
isRequired: true
},
affectedProperty: {
@@ -56,10 +57,10 @@ class SkillAttackEntity extends EntityProperties
}
};
- let listPropertiesKeys = Object.keys(properties);
- let editPropertiesKeys = [...listPropertiesKeys];
-
- listPropertiesKeys = sc.removeFromArray(listPropertiesKeys, [
+ let showProperties = Object.keys(properties);
+ let listProperties = [...showProperties];
+ let editProperties = [...listProperties];
+ listProperties = sc.removeFromArray(listProperties, [
'allowEffectBelowZero',
'applyDirectDamage',
'dodgeFullEnabled',
@@ -67,13 +68,13 @@ class SkillAttackEntity extends EntityProperties
'damageAffected',
'criticalAffected'
]);
- editPropertiesKeys.splice(editPropertiesKeys.indexOf('id'), 1);
+ editProperties.splice(editProperties.indexOf('id'), 1);
return {
- listProperties: listPropertiesKeys,
- showProperties: Object.keys(properties),
- filterProperties: listPropertiesKeys,
- editProperties: editPropertiesKeys,
+ showProperties,
+ editProperties,
+ listProperties,
+ filterProperties: listProperties,
properties,
...extraProps
};
diff --git a/lib/actions/server/entities/skill-entity.js b/lib/actions/server/entities/skill-entity.js
index 77335f941..b737b90a8 100644
--- a/lib/actions/server/entities/skill-entity.js
+++ b/lib/actions/server/entities/skill-entity.js
@@ -12,10 +12,10 @@ class SkillEntity extends EntityProperties
static propertiesConfig(extraProps)
{
+ let titleProperty = 'key';
let properties = {
id: {},
- key: {
- isTitle: true,
+ [titleProperty]: {
isRequired: true
},
type: {
@@ -71,10 +71,10 @@ class SkillEntity extends EntityProperties
customData: {}
};
- let listPropertiesKeys = Object.keys(properties);
- let editPropertiesKeys = [...listPropertiesKeys];
-
- listPropertiesKeys = sc.removeFromArray(listPropertiesKeys, [
+ let showProperties = Object.keys(properties);
+ let listProperties = [...showProperties];
+ let editProperties = [...listProperties];
+ listProperties = sc.removeFromArray(listProperties, [
'autoValidation',
'rangeAutomaticValidation',
'rangePropertyX',
@@ -87,15 +87,15 @@ class SkillEntity extends EntityProperties
'criticalFixedValue',
'customData'
]);
-
- editPropertiesKeys.splice(editPropertiesKeys.indexOf('id'), 1);
+ editProperties.splice(editProperties.indexOf('id'), 1);
return {
- listProperties: listPropertiesKeys,
- showProperties: Object.keys(properties),
- filterProperties: listPropertiesKeys,
- editProperties: editPropertiesKeys,
+ showProperties,
+ editProperties,
+ listProperties,
+ filterProperties: listProperties,
properties,
+ titleProperty,
...extraProps
};
}
diff --git a/lib/actions/server/entities/skill-group-relation-entity.js b/lib/actions/server/entities/skill-group-relation-entity.js
index a64f07547..4e4cf27a1 100644
--- a/lib/actions/server/entities/skill-group-relation-entity.js
+++ b/lib/actions/server/entities/skill-group-relation-entity.js
@@ -16,25 +16,26 @@ class SkillGroupRelationEntity extends EntityProperties
skill_id: {
type: 'reference',
reference: 'skills_skill',
+ alias: 'parent_skill',
isRequired: true
},
group_id: {
type: 'reference',
reference: 'skills_groups',
+ alias: 'parent_group',
isRequired: true
}
};
- let listPropertiesKeys = Object.keys(properties);
- let editPropertiesKeys = [...listPropertiesKeys];
-
- editPropertiesKeys.splice(editPropertiesKeys.indexOf('id'), 1);
+ let showProperties = Object.keys(properties);
+ let editProperties = [...showProperties];
+ editProperties.splice(editProperties.indexOf('id'), 1);
return {
- listProperties: listPropertiesKeys,
- showProperties: Object.keys(properties),
- filterProperties: listPropertiesKeys,
- editProperties: editPropertiesKeys,
+ showProperties,
+ editProperties,
+ listProperties: showProperties,
+ filterProperties: showProperties,
properties,
...extraProps
};
diff --git a/lib/actions/server/entities/skill-groups-entity.js b/lib/actions/server/entities/skill-groups-entity.js
index 402d33395..cf7a89285 100644
--- a/lib/actions/server/entities/skill-groups-entity.js
+++ b/lib/actions/server/entities/skill-groups-entity.js
@@ -11,10 +11,10 @@ class SkillGroupsEntity extends EntityProperties
static propertiesConfig(extraProps)
{
+ let titleProperty = 'key';
let properties = {
id: {},
- key: {
- isTitle: true,
+ [titleProperty]: {
isRequired: true
},
label: {
@@ -29,17 +29,17 @@ class SkillGroupsEntity extends EntityProperties
}
};
- let listPropertiesKeys = Object.keys(properties);
- let editPropertiesKeys = [...listPropertiesKeys];
-
- editPropertiesKeys.splice(editPropertiesKeys.indexOf('id'), 1);
+ let showProperties = Object.keys(properties);
+ let editProperties = [...showProperties];
+ editProperties.splice(editProperties.indexOf('id'), 1);
return {
- listProperties: listPropertiesKeys,
- showProperties: Object.keys(properties),
- filterProperties: listPropertiesKeys,
- editProperties: editPropertiesKeys,
+ showProperties,
+ editProperties,
+ listProperties: showProperties,
+ filterProperties: showProperties,
properties,
+ titleProperty,
...extraProps
};
}
diff --git a/lib/actions/server/entities/skill-owner-conditions-entity.js b/lib/actions/server/entities/skill-owner-conditions-entity.js
index 96bef8838..170fa87e2 100644
--- a/lib/actions/server/entities/skill-owner-conditions-entity.js
+++ b/lib/actions/server/entities/skill-owner-conditions-entity.js
@@ -11,15 +11,16 @@ class SkillOwnerConditionsEntity extends EntityProperties
static propertiesConfig(extraProps)
{
+ let titleProperty = 'key';
let properties = {
id: {},
skill_id: {
type: 'reference',
reference: 'skills_skill',
+ alias: 'parent_skill',
isRequired: true
},
- key: {
- isTitle: true,
+ [titleProperty]: {
isRequired: true
},
property_key: {
@@ -33,17 +34,17 @@ class SkillOwnerConditionsEntity extends EntityProperties
},
};
- let listPropertiesKeys = Object.keys(properties);
- let editPropertiesKeys = [...listPropertiesKeys];
-
- editPropertiesKeys.splice(editPropertiesKeys.indexOf('id'), 1);
+ let showProperties = Object.keys(properties);
+ let editProperties = [...showProperties];
+ editProperties.splice(editProperties.indexOf('id'), 1);
return {
- listProperties: listPropertiesKeys,
- showProperties: Object.keys(properties),
- filterProperties: listPropertiesKeys,
- editProperties: editPropertiesKeys,
+ showProperties,
+ editProperties,
+ listProperties: showProperties,
+ filterProperties: showProperties,
properties,
+ titleProperty,
...extraProps
};
}
diff --git a/lib/actions/server/entities/skill-owner-effects-entity.js b/lib/actions/server/entities/skill-owner-effects-entity.js
index 8c12fd6ec..f33e1a18e 100644
--- a/lib/actions/server/entities/skill-owner-effects-entity.js
+++ b/lib/actions/server/entities/skill-owner-effects-entity.js
@@ -12,15 +12,16 @@ class SkillOwnerEffectsEntity extends EntityProperties
static propertiesConfig(extraProps)
{
+ let titleProperty = 'key';
let properties = {
id: {},
skill_id: {
type: 'reference',
reference: 'skills_skill',
+ alias: 'parent_skill',
isRequired: true
},
- key: {
- isTitle: true,
+ [titleProperty]: {
isRequired: true
},
property_key: {
@@ -53,23 +54,24 @@ class SkillOwnerEffectsEntity extends EntityProperties
maxProperty: {},
};
- let listPropertiesKeys = Object.keys(properties);
- let editPropertiesKeys = [...listPropertiesKeys];
-
- listPropertiesKeys = sc.removeFromArray(listPropertiesKeys, [
+ let showProperties = Object.keys(properties);
+ let listProperties = [...showProperties];
+ let editProperties = [...listProperties];
+ listProperties = sc.removeFromArray(listProperties, [
'minValue',
'maxValue',
'minProperty',
'maxProperty'
]);
- editPropertiesKeys.splice(editPropertiesKeys.indexOf('id'), 1);
+ editProperties.splice(editProperties.indexOf('id'), 1);
return {
- listProperties: listPropertiesKeys,
- showProperties: Object.keys(properties),
- filterProperties: listPropertiesKeys,
- editProperties: editPropertiesKeys,
+ showProperties,
+ editProperties,
+ listProperties,
+ filterProperties: listProperties,
properties,
+ titleProperty,
...extraProps
};
}
diff --git a/lib/actions/server/entities/skill-physical-data-entity.js b/lib/actions/server/entities/skill-physical-data-entity.js
index abe7f9044..c6ded8c9b 100644
--- a/lib/actions/server/entities/skill-physical-data-entity.js
+++ b/lib/actions/server/entities/skill-physical-data-entity.js
@@ -16,6 +16,7 @@ class SkillPhysicalDataEntity extends EntityProperties
skill_id: {
type: 'reference',
reference: 'skills_skill',
+ alias: 'parent_skill',
isRequired: true
},
magnitude: {
@@ -36,16 +37,15 @@ class SkillPhysicalDataEntity extends EntityProperties
}
};
- let listPropertiesKeys = Object.keys(properties);
- let editPropertiesKeys = [...listPropertiesKeys];
-
- editPropertiesKeys.splice(editPropertiesKeys.indexOf('id'), 1);
+ let showProperties = Object.keys(properties);
+ let editProperties = [...showProperties];
+ editProperties.splice(editProperties.indexOf('id'), 1);
return {
- listProperties: listPropertiesKeys,
- showProperties: Object.keys(properties),
- filterProperties: listPropertiesKeys,
- editProperties: editPropertiesKeys,
+ showProperties,
+ editProperties,
+ listProperties: showProperties,
+ filterProperties: showProperties,
properties,
...extraProps
};
diff --git a/lib/actions/server/entities/skill-target-effects-entity.js b/lib/actions/server/entities/skill-target-effects-entity.js
index 0706a4ae4..e8f724886 100644
--- a/lib/actions/server/entities/skill-target-effects-entity.js
+++ b/lib/actions/server/entities/skill-target-effects-entity.js
@@ -12,15 +12,16 @@ class SkillTargetEffectsEntity extends EntityProperties
static propertiesConfig(extraProps)
{
+ let titleProperty = 'key';
let properties = {
id: {},
skill_id: {
type: 'reference',
reference: 'skills_skill',
+ alias: 'parent_skill',
isRequired: true
},
- key: {
- isTitle: true,
+ [titleProperty]: {
isRequired: true
},
property_key: {
@@ -53,23 +54,24 @@ class SkillTargetEffectsEntity extends EntityProperties
maxProperty: {}
};
- let listPropertiesKeys = Object.keys(properties);
- let editPropertiesKeys = [...listPropertiesKeys];
-
- listPropertiesKeys = sc.removeFromArray(listPropertiesKeys, [
+ let showProperties = Object.keys(properties);
+ let listProperties = [...showProperties];
+ let editProperties = [...listProperties];
+ listProperties = sc.removeFromArray(listProperties, [
'minValue',
'maxValue',
'minProperty',
'maxProperty'
]);
- editPropertiesKeys.splice(editPropertiesKeys.indexOf('id'), 1);
+ editProperties.splice(editProperties.indexOf('id'), 1);
return {
- listProperties: listPropertiesKeys,
- showProperties: Object.keys(properties),
- filterProperties: listPropertiesKeys,
- editProperties: editPropertiesKeys,
+ showProperties,
+ editProperties,
+ listProperties,
+ filterProperties: listProperties,
properties,
+ titleProperty,
...extraProps
};
}
diff --git a/lib/actions/server/entities/skill-type-entity.js b/lib/actions/server/entities/skill-type-entity.js
index e53163467..c998f81b2 100644
--- a/lib/actions/server/entities/skill-type-entity.js
+++ b/lib/actions/server/entities/skill-type-entity.js
@@ -11,23 +11,25 @@ class SkillTypeEntity extends EntityProperties
static propertiesConfig(extraProps)
{
+ let titleProperty = 'key';
let properties = {
id: {},
- key: {}
+ [titleProperty]: {}
};
- let listPropertiesKeys = Object.keys(properties);
- let editPropertiesKeys = [...listPropertiesKeys];
-
- editPropertiesKeys.splice(editPropertiesKeys.indexOf('id'), 1);
-
- return Object.assign({
- listProperties: listPropertiesKeys,
- showProperties: Object.keys(properties),
- filterProperties: listPropertiesKeys,
- editProperties: editPropertiesKeys,
- properties
- }, extraProps);
+ let showProperties = Object.keys(properties);
+ let editProperties = [...showProperties];
+ editProperties.splice(editProperties.indexOf('id'), 1);
+
+ return {
+ showProperties,
+ editProperties,
+ listProperties: showProperties,
+ filterProperties: showProperties,
+ properties,
+ titleProperty,
+ ...extraProps
+ };
}
}
diff --git a/lib/actions/server/player-enricher.js b/lib/actions/server/player-enricher.js
index f6d3d7c11..206c17833 100644
--- a/lib/actions/server/player-enricher.js
+++ b/lib/actions/server/player-enricher.js
@@ -16,7 +16,7 @@ class PlayerEnricher
static async withClassPath(roomGame, superInitialGameData, dataServer)
{
- if(!roomGame.config.get('client/players/multiplePlayers/enabled') || !superInitialGameData.players){
+ if(!superInitialGameData.players){
return;
}
for(let i of Object.keys(superInitialGameData.players)){
diff --git a/lib/admin/server/upload-file/admin-dist-helper.js b/lib/admin/server/admin-dist-helper.js
similarity index 79%
rename from lib/admin/server/upload-file/admin-dist-helper.js
rename to lib/admin/server/admin-dist-helper.js
index 459b1dec5..37f37629f 100644
--- a/lib/admin/server/upload-file/admin-dist-helper.js
+++ b/lib/admin/server/admin-dist-helper.js
@@ -4,7 +4,7 @@
*
*/
-const { AdminLocalProvider } = require('./admin-local-provider');
+const { FileHandler } = require('../../game/server/file-handler');
const { Logger, sc } = require('@reldens/utils');
class AdminDistHelper
@@ -23,8 +23,8 @@ class AdminDistHelper
return false;
}
for(let file of files){
- await AdminLocalProvider.deleteFile([bucket, file]);
- await AdminLocalProvider.deleteFile([distPath, file]);
+ await FileHandler.deleteFile([bucket, file]);
+ await FileHandler.deleteFile([distPath, file]);
}
}
@@ -41,7 +41,7 @@ class AdminDistHelper
return false;
}
for(let file of files){
- await AdminLocalProvider.copyFile([bucket, file], [distPath, file]);
+ await FileHandler.copyFile([bucket, file], [distPath, file]);
}
}
diff --git a/lib/admin/server/admin-entities-generator.js b/lib/admin/server/admin-entities-generator.js
index 40a801c9b..0d078de06 100644
--- a/lib/admin/server/admin-entities-generator.js
+++ b/lib/admin/server/admin-entities-generator.js
@@ -9,7 +9,7 @@ const { Logger } = require('@reldens/utils');
class AdminEntitiesGenerator
{
- static generateEntities(loadedEntities, generatedDrivers)
+ generate(loadedEntities, generatedDrivers)
{
let rawEntitiesKeys = Object.keys(loadedEntities);
let driverEntitiesKeys = Object.keys(generatedDrivers);
diff --git a/lib/admin/server/admin-manager-config.js b/lib/admin/server/admin-manager-config.js
new file mode 100644
index 000000000..ef92ac62c
--- /dev/null
+++ b/lib/admin/server/admin-manager-config.js
@@ -0,0 +1,32 @@
+/**
+ *
+ * Reldens - AdminManagerConfig
+ *
+ */
+
+const { PropertiesHandler } = require('../../game/properties-handler');
+
+class AdminManagerConfig extends PropertiesHandler
+{
+
+ constructor(serverManager)
+ {
+ super();
+ this.events = serverManager?.events;
+ this.themeManager = serverManager?.themeManager;
+ this.config = serverManager?.configManager;
+ this.dataServer = serverManager?.dataServer;
+ this.dataServerConfig = serverManager?.dataServerConfig;
+ this.gameServer = serverManager?.gameServer;
+ this.loginManager = serverManager?.loginManager;
+ this.app = serverManager?.app;
+ this.applicationFramework = serverManager?.appServerFactory?.applicationFramework;
+ this.fileStorageManager = serverManager?.appServerFactory?.fileStorageManager;
+ this.bodyParser = serverManager?.appServerFactory?.bodyParser;
+ this.session = serverManager?.appServerFactory?.session;
+ this.requiredProperties = Object.keys(this);
+ }
+
+}
+
+module.exports.AdminManagerConfig = AdminManagerConfig;
diff --git a/lib/admin/server/admin-manager.js b/lib/admin/server/admin-manager.js
index 049a84bb6..2cb7326a9 100644
--- a/lib/admin/server/admin-manager.js
+++ b/lib/admin/server/admin-manager.js
@@ -4,78 +4,377 @@
*
*/
+const { UploaderFactory } = require('./uploader-factory');
const { AdminTranslations } = require('./admin-translations');
+const { AdminEntitiesGenerator } = require('./admin-entities-generator');
+const { AdminManagerConfig } = require('./admin-manager-config');
+const { AdminDistHelper } = require('./admin-dist-helper');
+const { FileHandler } = require('../../game/server/file-handler');
+const { GameConst } = require('../../game/constants');
const { Logger, sc } = require('@reldens/utils');
class AdminManager
{
- router = false;
- adminPanel = false;
- pagesHandlers = {};
-
- constructor(props)
- {
- this.events = props.events;
- this.app = props.app;
- this.config = props.config;
- this.configManager = props.configManager;
- this.databases = sc.get(props, 'databases', []);
- this.translations = sc.get(props, 'translations', {});
+
+ dataServerConfig = null;
+ dataServer = null;
+ events = null;
+ loginManager = null;
+ app = null;
+ applicationFramework = null;
+ fileStorageManager = null;
+ bodyParser = null;
+ session = null;
+ gameServer = null;
+ config = null;
+ themeManager = null;
+ secret = '';
+ useSecureLogin = false;
+ rootPath = '';
+ adminRoleId = null;
+ buildAdminScriptsOnActivation = null;
+ buildAdminCssOnActivation = null;
+ buckets = null;
+ adminContents = {};
+
+ constructor(adminManagerConfig)
+ {
+ // @TODO - BETA - Refactor, split class in multiple services.
+ if(!(adminManagerConfig instanceof AdminManagerConfig)){
+ Logger.error('The adminManagerConfig param must be an instance of AdminManagerConfig.');
+ return false;
+ }
+ if(!adminManagerConfig.validate()){
+ return false;
+ }
+ adminManagerConfig.assignProperties(this);
+ this.logoutPath = '/logout';
+ this.loginPath = '/login';
+ this.viewPath = '/view';
+ this.editPath = '/edit';
+ this.savePath = '/save';
+ this.deletePath = '/delete';
+ this.adminEntitiesGenerator = new AdminEntitiesGenerator();
+ this.uploaderFactory = new UploaderFactory();
+ }
+
+ async setupAdmin()
+ {
+ this.secret = (process.env.RELDENS_ADMIN_SECRET || '').toString();
this.useSecureLogin = Boolean(Number(process.env.RELDENS_ADMIN_SECURE_LOGIN || 0) || false);
- this.authenticateCallback = sc.get(props, 'authenticateCallback', () => {
- Logger.info('Authenticate callback undefined.')
- });
- this.authCookiePassword = (process.env.ADMIN_COOKIE_PASSWORD || 'secret-password-to-secure-the-admin-cookie');
- this.dashboardComponent = sc.get(props, 'dashboardComponent', false);
- this.rootPath = sc.get(props, 'rootPath', (process.env.RELDENS_ADMIN_ROUTE_PATH || '/reldens-admin'));
- this.setupPagesHandlers(props);
- }
-
- setupAdmin()
- {
- let adminPanelConfig = {
- databases: this.databases,
- rootPath: this.rootPath,
- logoutPath: this.rootPath+'/logout',
- loginPath: this.rootPath+'/login',
- branding: {
- companyName: this.configManager.getWithoutLogs(
- 'server/admin/companyName',
- 'Reldens - Administration Panel'
+ this.rootPath = process.env.RELDENS_ADMIN_ROUTE_PATH || '/reldens-admin';
+ this.entities = this.adminEntitiesGenerator.generate(
+ this.dataServerConfig.loadedEntities,
+ this.dataServer.entityManager.entities
+ );
+ this.resourcesByReference = {};
+ this.resources = this.prepareResources(this.entities);
+ this.relations = this.prepareRelations(this.entities);
+ this.buckets = this.fetchThemesFolders();
+ this.adminRoleId = this.config.get('server/admin/roleId', 1);
+ this.buildAdminCssOnActivation = this.config.getWithoutLogs('server/admin/buildAdminCssOnActivation', true);
+ this.buildAdminScriptsOnActivation = this.config.getWithoutLogs(
+ 'server/admin/buildAdminScriptsOnActivation',
+ true
+ );
+ this.translations = AdminTranslations.appendTranslations(this.dataServerConfig?.translations || {});
+ this.stylesFilePath = this.config.getWithoutLogs(
+ 'server/admin/stylesPath',
+ '/css/'+GameConst.STRUCTURE.ADMIN_CSS_FILE
+ );
+ this.scriptsFilePath = this.config.getWithoutLogs(
+ 'server/admin/scriptsPath',
+ '/'+GameConst.STRUCTURE.ADMIN_JS_FILE
+ );
+ this.autoSyncDist = this.config.getWithoutLogs('server/admin/autoSyncDist', true);
+ this.branding = {
+ companyName: this.config.getWithoutLogs('server/admin/companyName', 'Reldens - Administration Panel'),
+ logo: this.config.getWithoutLogs('server/admin/logoPath', '/assets/web/reldens-your-logo-mage.png'),
+ favicon: this.config.getWithoutLogs('server/admin/faviconPath', '/assets/web/favicon.ico'),
+ copyRight: this.config.getWithoutLogs(
+ 'server/admin/copyRight',
+ await FileHandler.fetchFileContents(
+ FileHandler.joinPaths(
+ this.themeManager.projectAdminTemplatesPath,
+ this.themeManager.adminTemplatesList.defaultCopyRight
+ )
+ )
+ )
+ };
+ this.adminFilesContents = await this.fetchAdminFilesContents(this.themeManager.adminTemplates);
+ if(!this.adminFilesContents){
+ return;
+ }
+ await this.buildAdminContents();
+ await this.buildAdminScripts();
+ await this.buildAdminCss();
+ this.setupAdminRoutes();
+ this.setupEntitiesRoutes();
+ }
+
+ fetchThemesFolders()
+ {
+ let allFolders = FileHandler.fetchSubFoldersList(this.themeManager.themePath);
+ let pluginsIndex = allFolders.indexOf('plugins');
+ if(-1 !== pluginsIndex){
+ allFolders.splice(pluginsIndex, 1);
+ }
+ return allFolders;
+ }
+
+ async buildAdminContents()
+ {
+ this.adminContents.layout = await this.buildLayout();
+ this.adminContents.sideBar = await this.buildSideBar();
+ this.adminContents.login = await this.buildLogin();
+ this.adminContents.dashboard = await this.buildDashboard();
+ this.adminContents.entities = await this.buildEntitiesContents();
+ }
+
+ async buildLayout()
+ {
+ return await this.render(
+ this.adminFilesContents.layout,
+ {
+ sideBar: '{{&sideBar}}',
+ pageContent: '{{&pageContent}}',
+ stylesFilePath: this.stylesFilePath,
+ scriptsFilePath: this.scriptsFilePath,
+ rootPath: this.rootPath,
+ brandingCompanyName: this.branding.companyName,
+ copyRight: this.branding.copyRight
+ }
+ );
+ }
+
+ async buildSideBar()
+ {
+ let navigationContents = {};
+ for(let driverResource of this.resources){
+ let navigation = driverResource.options?.navigation;
+ let name = this.translations.labels[driverResource.id()] || this.translations.labels[driverResource.entityKey];
+ let path = this.rootPath+'/'+(driverResource.id().replace(/_/g, '-'));
+ if(navigation?.name){
+ if(!navigationContents[navigation.name]){
+ navigationContents[navigation.name] = {};
+ }
+ navigationContents[navigation.name][driverResource.id()] = await this.render(
+ this.adminFilesContents.sideBarItem,
+ {name, path}
+ );
+ continue;
+ }
+ navigationContents[driverResource.id()] = await this.render(
+ this.adminFilesContents.sideBarItem,
+ {name, path}
+ );
+ }
+ let navigationView = '';
+ for(let id of Object.keys(navigationContents)){
+ if(sc.isObject(navigationContents[id])){
+ let subItems = '';
+ for(let subId of Object.keys(navigationContents[id])){
+ subItems += navigationContents[id][subId];
+ }
+ navigationView += await this.render(
+ this.adminFilesContents.sideBarHeader,
+ {name: id, subItems}
+ );
+ continue;
+ }
+ navigationView += navigationContents[id];
+ }
+ return await this.render(
+ this.adminFilesContents.sideBar,
+ {
+ rootPath: this.rootPath,
+ navigationView
+ }
+ );
+ }
+
+ async buildLogin()
+ {
+ return await this.render(
+ this.adminContents.layout,
+ {
+ sideBar: '',
+ pageContent: this.adminFilesContents.login,
+ stylesFilePath: this.stylesFilePath,
+ scriptsFilePath: this.scriptsFilePath,
+ brandingCompanyName: this.branding.companyName,
+ copyRight: this.branding.copyRight
+ }
+ );
+ }
+
+ async buildDashboard()
+ {
+ return await this.render(
+ this.adminContents.layout,
+ {
+ sideBar: this.adminContents.sideBar,
+ pageContent: this.adminFilesContents.dashboard,
+ stylesFilePath: this.stylesFilePath,
+ scriptsFilePath: this.scriptsFilePath,
+ brandingCompanyName: this.branding.companyName,
+ copyRight: this.branding.copyRight
+ }
+ );
+ }
+
+ async buildEntitiesContents()
+ {
+ let entitiesContents = {};
+ for(let driverResource of this.resources){
+ let templateTitle = this.translations.labels[driverResource.id()];
+ let entityName = (driverResource.id().replace(/_/g, '-'));
+ let entityListRoute = this.rootPath+'/'+entityName;
+ let entityEditRoute = entityListRoute+this.editPath;
+ let entitySaveRoute = entityListRoute+this.savePath;
+ let entityDeleteRoute = entityListRoute+this.deletePath;
+ let uploadProperties = this.fetchUploadProperties(driverResource);
+ let multipartFormData = 0 < Object.keys(uploadProperties).length ? ' enctype="multipart/form-data"' : '';
+ let idProperty = this.fetchEntityIdPropertyKey(driverResource);
+ let editProperties = Object.keys(driverResource.options.properties);
+ editProperties.splice(editProperties.indexOf(idProperty), 1);
+ entitiesContents[entityName] = {
+ list: await this.render(
+ this.adminFilesContents.list,
+ {
+ entityName,
+ templateTitle,
+ entityListRoute,
+ entityEditRoute,
+ filters: driverResource.options.filterProperties.map((property) => {
+ let propertyName = property.replace(/_/g, ' ');
+ let name = propertyName.slice(0, 1).toUpperCase() + propertyName.slice(1).toLowerCase();
+ return {
+ name,
+ value: '{{&'+property+'}}'
+ };
+ }),
+ list: '{{&list}}',
+ pagination: '{{&pagination}}'
+ }
),
- softwareBrothers: false,
- logo: this.configManager.getWithoutLogs(
- 'server/admin/logoPath',
- '/assets/web/reldens-your-logo-mage.png'
+ view: await this.render(
+ this.adminFilesContents.view,
+ {
+ entityName,
+ templateTitle,
+ fields: driverResource.options.showProperties.map((property) => {
+ let propertyName = property.replace(/_/g, ' ');
+ let name = propertyName.slice(0, 1).toUpperCase() + propertyName.slice(1).toLowerCase();
+ return {
+ name,
+ value: '{{&'+property+'}}'
+ };
+ }),
+ entityDeleteRoute,
+ id: '{{&id}}',
+ entityListRoute,
+ entityEditRoute: '{{&entityEditRoute}}'
+ }
),
- favicon: this.configManager.getWithoutLogs('server/admin/faviconPath', '/assets/web/favicon.ico'),
- },
- locale: {
- translations: AdminTranslations.appendTranslations(this.translations)
- },
- assets: {
- styles: [this.configManager.getWithoutLogs('server/admin/stylesPath', '/css/reldens-admin.css')],
- },
- dashboard: {
- handler: () => {
- return { manager: this }
- },
- component: this.dashboardComponent
- },
- pages: {
- management: {
- icon: 'Settings',
- handler: this.pagesHandlers['management'],
- component: {},
+ edit: await this.render(
+ this.adminFilesContents.edit,
+ {
+ entityName,
+ entitySaveRoute,
+ idValue: '{{&idValue}}',
+ idProperty: '{{&idProperty}}',
+ templateTitle: '{{&templateTitle}}',
+ entityViewRoute: '{{&entityViewRoute}}',
+ multipartFormData,
+ editFields: editProperties.map((property) => {
+ let propertyName = property.replace(/_/g, ' ');
+ let name = propertyName.slice(0, 1).toUpperCase() + propertyName.slice(1).toLowerCase();
+ return {
+ name,
+ value: '{{&'+property+'}}'
+ };
+ })
+ }
+ )
+ };
+ }
+ return entitiesContents;
+ }
+
+ fetchUploadProperties(driverResource)
+ {
+ if(!driverResource.options.uploadProperties){
+ driverResource.options.uploadProperties = {};
+ for(let propertyKey of Object.keys(driverResource.options.properties)){
+ let property = driverResource.options.properties[propertyKey];
+ if(property.isUpload){
+ driverResource.options.uploadProperties[propertyKey] = property;
}
}
- };
- this.events.emit('reldens.beforeAdminPanel', {adminManager: this, adminPanelConfig});
- this.adminPanel = {config: adminPanelConfig};
- this.events.emit('reldens.afterAdminPanel', {adminManager: this});
+ }
+ return driverResource.options.uploadProperties;
+ }
+
+ render(content, params)
+ {
+ return this.themeManager.templateEngine.render(content, params);
+ }
+
+ async renderRoute(pageContent, sideBar)
+ {
+ return await this.render(
+ this.adminContents.layout,
+ {
+ stylesFilePath: this.stylesFilePath,
+ scriptsFilePath: this.scriptsFilePath,
+ brandingCompanyName: this.branding.companyName,
+ copyRight: this.branding.copyRight,
+ pageContent,
+ sideBar
+ }
+ );
+ }
+
+ async fetchAdminFilesContents(adminTemplates)
+ {
+ let adminFilesContents = {};
+ for(let template of Object.keys(adminTemplates)){
+ let templateData = adminTemplates[template];
+ if(sc.isObject(templateData)){
+ let subFoldersContents = await this.fetchAdminFilesContents(templateData);
+ if(!subFoldersContents){
+ return false;
+ }
+ adminFilesContents[template] = subFoldersContents;
+ continue;
+ }
+ if(!FileHandler.isFile(templateData)){
+ Logger.critical('Admin template file not found.', template);
+ return false;
+ }
+ adminFilesContents[template] = await FileHandler.fetchFileContents(templateData);
+ }
+ return adminFilesContents;
}
- static prepareResources(rawResources)
+ async buildAdminScripts()
+ {
+ if(!this.buildAdminScriptsOnActivation){
+ return;
+ }
+ await this.themeManager.buildAdminScripts();
+ }
+
+ async buildAdminCss()
+ {
+ if(!this.buildAdminCssOnActivation){
+ return;
+ }
+ await this.themeManager.buildAdminCss();
+ }
+
+ prepareResources(rawResources)
{
let rawResourcesKeys = Object.keys(rawResources);
if(!rawResources || 0 === rawResourcesKeys.length){
@@ -84,11 +383,14 @@ class AdminManager
let registeredResources = [];
for(let i of rawResourcesKeys){
let rawResource = rawResources[i];
+ let tableName = rawResource.rawEntity.tableName();
+ // @TODO - BETA - Refactor to add the ID property and composed labels (id + label), in the resource.
let driverResource = {
- resource: {},
id: () => {
- return rawResource.rawEntity.tableName();
+ return tableName;
},
+ entityKey: i,
+ entityPath: (tableName.replace(/_/g, '-')),
options: {
navigation: sc.hasOwn(rawResource.config, 'parentItemLabel') ? {
name: rawResource.config.parentItemLabel,
@@ -98,31 +400,685 @@ class AdminManager
showProperties: rawResource.config.showProperties || [],
filterProperties: rawResource.config.filterProperties || [],
editProperties: rawResource.config.editProperties || [],
- properties: rawResource.config.properties || [],
+ properties: rawResource.config.properties || {},
+ titleProperty: sc.get(rawResource.config, 'titleProperty', null),
sort: sc.get(rawResource.config, 'sort', null)
},
- features: sc.get(rawResource.config, 'features', [])
};
+ this.resourcesByReference[tableName] = driverResource;
registeredResources.push(driverResource);
}
return registeredResources;
}
- setupPagesHandlers(props)
+ prepareRelations()
+ {
+ // @TODO - BETA - Refactor, include in resources generation at once.
+ let registeredRelations = {};
+ for(let resource of this.resources){
+ for(let propertyKey of Object.keys(resource.options.properties)){
+ let property = resource.options.properties[propertyKey];
+ if('reference' !== property.type){
+ continue;
+ }
+ let relationResource = this.resources.filter((resource) => {
+ return resource.id() === property.reference;
+ }).shift();
+ let relationKey = property.alias || property.reference;
+ let titleProperty = relationResource?.options?.titleProperty;
+ if(!titleProperty){
+ continue;
+ }
+ if(!registeredRelations[property.reference]){
+ registeredRelations[property.reference] = {};
+ }
+ registeredRelations[property.reference][relationKey] = titleProperty;
+ }
+ }
+ return registeredRelations;
+ }
+
+ setupAdminRoutes()
+ {
+ // apply session middleware only to /admin routes:
+ this.adminRouter = this.applicationFramework.Router();
+ this.adminRouter.use(this.session({
+ secret: this.secret,
+ resave: false,
+ saveUninitialized: true
+ }));
+ this.adminRouter.use(this.bodyParser.json());
+ // route for the login page:
+ this.adminRouter.get(this.loginPath, async (req, res) => {
+ return res.send(this.adminContents.login);
+ });
+ // route for handling login:
+ this.adminRouter.post(this.loginPath, async (req, res) => {
+ let { email, password } = req.body;
+ let loginResult = await this.loginManager.roleAuthenticationCallback(email, password, this.adminRoleId);
+ if(loginResult){
+ req.session.user = loginResult.username;
+ return res.redirect(this.rootPath);
+ }
+ return res.redirect(this.rootPath+this.loginPath);
+ });
+ // route for the admin panel dashboard:
+ this.adminRouter.get('/', this.isAuthenticated.bind(this), async (req, res) => {
+ return res.send(this.adminContents.dashboard);
+ });
+ // route for logging out:
+ this.adminRouter.get(this.logoutPath, (req, res) => {
+ req.session.destroy();
+ res.redirect(this.rootPath+this.loginPath);
+ });
+ // apply the adminRouter to the /admin path:
+ this.app.use(this.rootPath, this.adminRouter);
+ }
+
+ setupEntitiesRoutes()
+ {
+ if(!this.resources || 0 === this.resources.length){
+ return;
+ }
+ for(let driverResource of this.resources){
+ let entityPath = driverResource.entityPath;
+ let entityRoute = '/'+entityPath;
+ this.adminRouter.get(entityRoute, this.isAuthenticated.bind(this), async (req, res) => {
+ let routeContents = await this.generateListRouteContent(req, driverResource, entityPath);
+ return res.send(routeContents);
+ });
+ this.adminRouter.post(entityRoute, this.isAuthenticated.bind(this), async (req, res) => {
+ let routeContents = await this.generateListRouteContent(req, driverResource, entityPath);
+ return res.send(routeContents);
+ });
+ this.adminRouter.get(entityRoute+this.viewPath, this.isAuthenticated.bind(this), async (req, res) => {
+ let routeContents = await this.generateViewRouteContent(req, driverResource, entityPath);
+ if('' === routeContents){
+ return res.redirect(this.rootPath+'/'+entityPath+'?result=errorView');
+ }
+ return res.send(routeContents);
+ });
+ this.adminRouter.get(entityRoute+this.editPath, this.isAuthenticated.bind(this), async (req, res) => {
+ let routeContents = await this.generateEditRouteContent(req, driverResource, entityPath);
+ if('' === routeContents){
+ return res.redirect(this.rootPath+'/'+entityPath+'?result=errorEdit');
+ }
+ return res.send(routeContents);
+ });
+ this.setupSavePath(entityRoute, driverResource, entityPath);
+ this.adminRouter.post(entityRoute+this.deletePath, this.isAuthenticated.bind(this), async (req, res) => {
+ let redirectResult = await this.processDeleteEntities(req, res, driverResource, entityPath);
+ return res.redirect(redirectResult);
+ });
+ }
+ }
+
+ setupSavePath(entityRoute, driverResource, entityPath)
+ {
+ let uploadProperties = this.fetchUploadProperties(driverResource);
+ let uploadPropertiesKeys = Object.keys(uploadProperties || {});
+ if(0 === uploadPropertiesKeys.length){
+ this.adminRouter.post(entityRoute + this.savePath, this.isAuthenticated.bind(this), async (req, res) => {
+ let redirectResult = await this.processSaveEntity(req, res, driverResource, entityPath);
+ return res.redirect(redirectResult);
+ });
+ return;
+ }
+ let fields = [];
+ let buckets = {};
+ let allowedFileTypes = {};
+ for(let uploadPropertyKey of uploadPropertiesKeys){
+ let property = uploadProperties[uploadPropertyKey];
+ allowedFileTypes[uploadPropertyKey] = property.allowedTypes || false;
+ let field = {name: uploadPropertyKey};
+ if(!property.isArray){
+ field.maxCount = 1;
+ }
+ fields.push(field);
+ buckets[uploadPropertyKey] = property.bucket;
+ }
+ this.adminRouter.post(
+ entityRoute + this.savePath,
+ this.isAuthenticated.bind(this),
+ this.uploaderFactory.createUploader(fields, buckets, allowedFileTypes),
+ async (req, res) => {
+ let redirectResult = await this.processSaveEntity(req, res, driverResource, entityPath);
+ return res.redirect(redirectResult);
+ }
+ );
+ }
+
+ async processDeleteEntities(req, res, driverResource, entityPath)
+ {
+ let ids = req?.body?.ids;
+ let redirectPath = this.rootPath+'/'+entityPath+'?result=';
+ let resultString = 'errorMissingId';
+ if(!ids || 0 === ids.length){
+ return redirectPath + resultString;
+ }
+ let entityRepository = this.dataServer.getEntity(driverResource.entityKey);
+ let idProperty = this.fetchEntityIdPropertyKey(driverResource);
+ let idsFilter = {[idProperty]: {operator: 'IN', value: ids}};
+ let loadedEntities = await entityRepository.load(idsFilter);
+ await this.deleteEntitiesRelatedFiles(driverResource, loadedEntities);
+ let deleteResult = await entityRepository.delete(idsFilter);
+ resultString = deleteResult ? 'success' : 'errorDeleteFailure';
+ return redirectPath + resultString;
+ }
+
+ async deleteEntitiesRelatedFiles(driverResource, entities)
+ {
+ let resourcePropertiesKeys = Object.keys(driverResource.options.properties);
+ for(let propertyKey of resourcePropertiesKeys){
+ let property = driverResource.options.properties[propertyKey];
+ if(!property.isUpload){
+ continue;
+ }
+ for(let entity of entities){
+ if(!property.isArray){
+ await FileHandler.deleteFile(
+ FileHandler.joinPaths((property.bucket || ''), entity[propertyKey])
+ );
+ continue;
+ }
+ let entityFiles = entity[propertyKey].split(property.isArray);
+ for(let entityFile of entityFiles){
+ await FileHandler.deleteFile(
+ FileHandler.joinPaths((property.bucket || ''), entityFile)
+ );
+ }
+ }
+ }
+ }
+
+ async processSaveEntity(req, res, driverResource, entityPath)
+ {
+ let idProperty = this.fetchEntityIdPropertyKey(driverResource);
+ let id = (req?.body[idProperty] || '').toString();
+ let entityRepository = this.dataServer.getEntity(driverResource.entityKey);
+ let resourceProperties = driverResource.options.properties;
+ let entityDataPatch = this.preparePatchData(driverResource, idProperty, req, resourceProperties, id);
+ if(!entityDataPatch){
+ Logger.error('Bad patch data.', entityDataPatch);
+ return this.rootPath+'/'+entityPath+'?error=saveBadPatchData';
+ }
+ let saveResult = await this.saveEntity(id, entityRepository, entityDataPatch);
+ if(!saveResult){
+ return this.generateEntityRoute('editPath', driverResource, idProperty, saveResult) +'&result=error';
+ }
+ if(this.autoSyncDist){
+ let uploadProperties = this.fetchUploadProperties(driverResource);
+ if(0 < Object.keys(uploadProperties).length){
+ for (let uploadPropertyKey of Object.keys(uploadProperties)){
+ let property = uploadProperties[uploadPropertyKey];
+ await AdminDistHelper.copyBucketFilesToDist(
+ property.bucket,
+ saveResult[uploadPropertyKey],
+ property.distFolder
+ );
+ }
+ }
+ }
+ return this.generateEntityRoute('viewPath', driverResource, idProperty, saveResult) +'&result=success';
+ }
+
+ async saveEntity(id, entityRepository, entityDataPatch)
{
- this.pagesHandlers['management'] = async (request, response, context) => {
- let result = {};
- if(request.query.buildClient){
- let themeManager = props.serverManager.themeManager;
- await themeManager.buildClient();
- result.buildClient = true;
+ if('' === id){
+ return entityRepository.create(entityDataPatch);
+ }
+ return entityRepository.updateById(id, entityDataPatch);
+ }
+
+ preparePatchData(driverResource, idProperty, req, resourceProperties, id)
+ {
+ let entityDataPatch = {};
+ for(let i of driverResource.options.editProperties){
+ if(i === idProperty){
+ continue;
+ }
+ let propertyUpdateValue = sc.get(req.body, i, null);
+ let property = resourceProperties[i];
+ let isNullValue = null === propertyUpdateValue;
+ let propertyType = property.type || 'string';
+ if(property.isUpload){
+ propertyType = 'upload';
+ propertyUpdateValue = this.prepareUploadPatchData(req, i, propertyUpdateValue, property);
+ }
+ if('number' === propertyType && !isNullValue){
+ propertyUpdateValue = Number(propertyUpdateValue);
+ }
+ if('string' === propertyType && !isNullValue){
+ propertyUpdateValue = String(propertyUpdateValue);
}
- if(request.query.shootDownServer){
- await props.serverManager.gameServer.gracefullyShutdown();
- result.shootDownServer = true; // you will never reach this :)
+ if('boolean' === propertyType){
+ propertyUpdateValue = Boolean(propertyUpdateValue);
}
- return {result};
+ let isUploadCreate = property.isUpload && !id;
+ if(property.isRequired && null === propertyUpdateValue && (!property.isUpload || isUploadCreate)){
+ // missing required fields would break the update:
+ Logger.critical('Bad patch data on update.', propertyUpdateValue, property);
+ return false;
+ }
+ if(!property.isUpload || (property.isUpload && null !== propertyUpdateValue)){
+ entityDataPatch[i] = propertyUpdateValue;
+ }
+ }
+ return entityDataPatch;
+ }
+
+ prepareUploadPatchData(req, i, propertyUpdateValue, property)
+ {
+ let filesData = sc.get(req.files, i, null);
+ if(null === filesData){
+ return null;
+ }
+ let fileNames = [];
+ for(let file of filesData){
+ fileNames.push(file.filename);
+ }
+ return fileNames.join(property.isArray);
+ }
+
+ async generateEditRouteContent(req, driverResource, entityPath)
+ {
+ let idProperty = this.fetchEntityIdPropertyKey(driverResource);
+ let idValue = (req?.query[idProperty] || '').toString();
+ let templateTitle = ('' === idValue ? 'Create' : 'Edit')+' '+this.translations.labels[driverResource.id()];
+ let loadedEntity = '' === idValue ? null :await this.loadEntityById(driverResource, idValue);
+ let entityViewRoute = '' === idValue
+ ? this.rootPath+'/'+driverResource.entityPath
+ : this.generateEntityRoute('viewPath', driverResource, idProperty, loadedEntity);
+ let renderedEditProperties = {
+ idValue,
+ idProperty,
+ templateTitle,
+ entityViewRoute
};
+ let propertiesKeys = Object.keys(driverResource.options.properties);
+ for(let propertyKey of propertiesKeys){
+ let resourceProperty = driverResource.options.properties[propertyKey];
+ let fieldDisabled = -1 === driverResource.options.editProperties.indexOf(propertyKey);
+ let isRequired = resourceProperty.isRequired ? ' required="required"' : '';
+ if(resourceProperty.isUpload && loadedEntity){
+ isRequired = '';
+ }
+ renderedEditProperties[propertyKey] = await this.render(
+ this.adminFilesContents.fields.edit[this.propertyType(resourceProperty, 'edit')],
+ {
+ fieldName: propertyKey,
+ fieldValue: await this.generatePropertyEditRenderedValue(
+ loadedEntity,
+ propertyKey,
+ resourceProperty
+ ),
+ fieldDisabled: fieldDisabled ? ' disabled="disabled"' : '',
+ required: isRequired,
+ multiple: resourceProperty.isArray ? ' multiple="multiple"' : ''
+ }
+ );
+ }
+ let renderedView = await this.render(this.adminContents.entities[entityPath].edit, renderedEditProperties);
+ return await this.renderRoute(renderedView, this.adminContents.sideBar);
+ }
+
+ async loadEntityById(driverResource, id)
+ {
+ let entityRepository = this.dataServer.getEntity(driverResource.entityKey);
+ return await entityRepository.loadByIdWithRelations(id);
+ }
+
+ async generateViewRouteContent(req, driverResource, entityPath)
+ {
+ let id = (req?.query?.id || '').toString();
+ if('' === id){
+ return '';
+ }
+ let loadedEntity = await this.loadEntityById(driverResource, id);
+ let idProperty = this.fetchEntityIdPropertyKey(driverResource);
+ let renderedViewProperties = {
+ entityEditRoute: this.generateEntityRoute('editPath', driverResource, idProperty, loadedEntity),
+ id
+ };
+ for(let propertyKey of driverResource.options.showProperties){
+ let resourceProperty = driverResource.options.properties[propertyKey];
+ let {fieldValue, fieldName} = this.generatePropertyRenderedValueWithLabel(
+ loadedEntity,
+ propertyKey,
+ resourceProperty
+ );
+ let renderedFieldValue = await this.generatePropertyRenderedValue(
+ fieldValue,
+ fieldName,
+ resourceProperty,
+ 'view'
+ );
+ renderedViewProperties[propertyKey] = await this.render(
+ this.adminFilesContents.fields.view[this.propertyType(resourceProperty)],
+ {
+ fieldName: propertyKey,
+ fieldValue: renderedFieldValue,
+ fieldOriginalValue: fieldValue,
+ target: ' target="_blank"'
+ }
+ );
+ }
+ let renderedView = await this.render(this.adminContents.entities[entityPath].view, renderedViewProperties);
+ return await this.renderRoute(renderedView, this.adminContents.sideBar);
+ }
+
+ propertyType(resourceProperty, templateType)
+ {
+ let propertyType = resourceProperty.type || 'text';
+ if('reference' === propertyType && 'edit' === templateType){
+ return 'select';
+ }
+ if(resourceProperty.isUpload){
+ if('edit' === templateType){
+ return 'file';
+ }
+ if('view' === templateType){
+ let multiple = resourceProperty.isArray ? 's' : '';
+ if('image' === resourceProperty.allowedTypes){
+ return resourceProperty.allowedTypes + multiple;
+ }
+ if('text' === resourceProperty.allowedTypes){
+ return 'link'+multiple
+ }
+ return 'text';
+ }
+ }
+ if(-1 !== ['reference', 'number', 'datetime'].indexOf(propertyType)){
+ propertyType = 'text';
+ }
+ return propertyType;
+ }
+
+ async generateListRouteContent(req, driverResource, entityPath)
+ {
+ let page = Number(req?.query?.page || 1);
+ let pageSize = Number(req?.query?.pageSize || 25);
+ let filtersFromParams = req?.body?.filters || {};
+ let filters = this.prepareFilters(filtersFromParams, driverResource);
+ let mappedFiltersValues = driverResource.options.filterProperties.map((property) => {
+ let filterValue = (filtersFromParams[property] || '').toString();
+ return {[property]: '' === filterValue ? '' : 'value="'+filterValue+'"'};
+ });
+ let entitiesRows = await this.loadEntitiesForList(driverResource, pageSize, page, req, filters);
+ let listRawContent = this.adminContents.entities[entityPath].list.toString();
+ let totalPages = Math.ceil(await this.countTotalEntities(driverResource) / pageSize);
+ let pages = this.getPageRange(page, totalPages);
+ let renderedPagination = '';
+ if(0 < pages.length){
+ for (let page of pages){
+ renderedPagination += await this.render(
+ this.adminFilesContents.fields.view['link'],
+ {
+ fieldName: page.label,
+ fieldValue: this.rootPath+'/'+driverResource.entityPath+'?page='+ page.value,
+ fieldOriginalValue: page.value,
+ }
+ );
+ }
+ }
+ let listVars = {
+ fieldsHeaders: driverResource.options.listProperties.map((property) => {
+ // @TODO - BETA - Replace by translations.
+ let propertyTitle = property.replace(/_/g, ' ');
+ let alias = driverResource.options.properties[property]?.alias || '';
+ let title = alias ? alias + ' ('+propertyTitle+')' : propertyTitle;
+ return {name: property, value: title.charAt(0).toUpperCase() + title.slice(1).toLowerCase()};
+ }),
+ rows: entitiesRows
+ };
+ let list = await this.render(this.adminFilesContents.listContent, listVars);
+ let entitiesListView = await this.render(
+ listRawContent,
+ Object.assign({list, pagination: renderedPagination}, ...mappedFiltersValues)
+ );
+ return await this.renderRoute(
+ entitiesListView,
+ this.adminContents.sideBar
+ );
+ }
+
+ getPageRange(page, totalPages)
+ {
+ let totalDisplayedPages = 5;
+ let half = Math.floor(totalDisplayedPages / 2);
+ let start = page - half;
+ let end = page + half;
+ start = Math.max(1, start);
+ end = Math.min(totalPages, end);
+ if(end - start + 1 < totalDisplayedPages){
+ if(start === 1){
+ end = Math.min(totalPages, start + totalDisplayedPages - 1);
+ }
+ start = Math.max(1, end - totalDisplayedPages + 1);
+ }
+ let range = [];
+ if(1 < start){
+ range.push({label: 'first', value: 1});
+ }
+ for(let i = start; i <= end; i++){
+ range.push({label: i, value: i});
+ }
+ if(end < totalPages){
+ range.push({label: 'last', value: totalPages - 1});
+ }
+ return range;
+ }
+
+ async countTotalEntities(driverResource)
+ {
+ let entityRepository = this.dataServer.getEntity(driverResource.entityKey);
+ return await entityRepository.count({});
+ }
+
+ async loadEntitiesForList(driverResource, pageSize, page, req, filters)
+ {
+ let entityRepository = this.dataServer.getEntity(driverResource.entityKey);
+ entityRepository.limit = pageSize;
+ if(1 < page){
+ entityRepository.offset = (page - 1) * pageSize;
+ }
+ entityRepository.sortBy = req?.body?.sortBy || false;
+ entityRepository.sortDirection = req?.body?.sortDirection || false;
+ let loadedEntities = await entityRepository.loadWithRelations(filters, []);
+ entityRepository.limit = 0;
+ entityRepository.offset = 0;
+ entityRepository.sortBy = false;
+ entityRepository.sortDirection = false;
+ let entityRows = [];
+ for(let entity of loadedEntities){
+ let entityRow = {fields: []};
+ let resourceProperties = driverResource.options?.properties;
+ let idProperty = this.fetchEntityIdPropertyKey(driverResource);
+ let viewLink = '';
+ let editLink = '';
+ if('' !== idProperty){
+ viewLink = this.generateEntityRoute('viewPath', driverResource, idProperty, entity);
+ editLink = this.generateEntityRoute('editPath', driverResource, idProperty, entity);
+ }
+ for(let property of driverResource.options.listProperties){
+ let {fieldValue, fieldName} = this.generatePropertyRenderedValueWithLabel(
+ entity,
+ property,
+ resourceProperties[property]
+ );
+ let value = await this.generatePropertyRenderedValue(
+ fieldValue,
+ fieldName,
+ resourceProperties[property]
+ );
+ entityRow.fields.push({
+ name: property,
+ value,
+ viewLink
+ });
+ }
+ entityRow.editLink = editLink;
+ entityRow.deleteLink = this.rootPath + '/' + driverResource.entityPath + this.deletePath;
+ entityRow.id = entity[idProperty];
+ entityRows.push(entityRow);
+ }
+ return entityRows;
+ }
+
+ async generatePropertyRenderedValue(fieldValue, fieldName, resourceProperty, templateType)
+ {
+ let fieldOriginalValue = fieldValue;
+ if('view' === templateType){
+ if(resourceProperty.isArray){
+ fieldValue = fieldValue.split(resourceProperty.isArray).map((value) => {
+ let target = resourceProperty.isUpload ? ' target="_blank"' : '';
+ let fieldValuePart = resourceProperty.isUpload && resourceProperty.bucketPath
+ ? resourceProperty.bucketPath+value
+ : value;
+ return {fieldValuePart, fieldOriginalValuePart: value, target};
+ });
+ }
+ if(!resourceProperty.isArray && resourceProperty.isUpload){
+ fieldValue = resourceProperty.bucketPath+fieldValue;
+ }
+ }
+ return await this.render(
+ this.adminFilesContents.fields.view[this.propertyType(resourceProperty, templateType)],
+ {fieldName, fieldValue, fieldOriginalValue, target: ' target="_blank"'}
+ );
+ }
+
+ generatePropertyRenderedValueWithLabel(entity, propertyKey, resourceProperty)
+ {
+ let fieldValue = (0 === entity[propertyKey] ? '0' : entity[propertyKey] || '').toString();
+ let fieldName = propertyKey;
+ if('boolean' === resourceProperty.type){
+ fieldValue = '1' === fieldValue || 'true' === fieldValue ? 'Yes' : 'No';
+ }
+ if('datetime' === resourceProperty.type){
+ fieldValue = sc.formatDate(new Date(fieldValue));
+ }
+ if('reference' === resourceProperty.type){
+ let relationKey = resourceProperty.alias || resourceProperty.reference;
+ let relationEntity = entity[relationKey];
+ if(relationEntity){
+ let relation = this.relations[resourceProperty.reference];
+ if(relation){
+ let relationTitleProperty = relation[relationKey];
+ if(relationTitleProperty && '' !== String(relationEntity[relationTitleProperty] || '')){
+ fieldName = relationTitleProperty;
+ fieldValue = relationEntity[relationTitleProperty];
+ }
+ }
+ }
+ }
+ if(resourceProperty.availableValues){
+ let optionData = resourceProperty.availableValues.filter((availableValue) => {
+ return String(availableValue.value) === String(fieldValue);
+ }).shift();
+ if(optionData){
+ fieldValue = optionData.label + ' (' + fieldValue + ')';
+ }
+ }
+ return {fieldValue, fieldName};
+ }
+
+ async generatePropertyEditRenderedValue(entity, propertyKey, resourceProperty)
+ {
+ let entityPropertyValue = sc.get(entity, propertyKey, null);
+ let fieldValue = (0 === entityPropertyValue ? '0' : entityPropertyValue || '').toString();
+ if('boolean' === resourceProperty.type){
+ fieldValue = '1' === fieldValue || 'true' === fieldValue ? ' checked="checked"' : '';
+ }
+ if('reference' === resourceProperty.type){
+ let relationDriverResource = this.resourcesByReference[resourceProperty.reference];
+ let relation = this.relations[resourceProperty.reference];
+ let relationKey = resourceProperty.alias || resourceProperty.reference;
+ let idProperty = this.fetchEntityIdPropertyKey(relationDriverResource);
+ let relationTitleProperty = relation ? relation[relationKey] : idProperty;
+ let relationOptions = await this.fetchRelationOptions(relationDriverResource);
+ return relationOptions.map((option) => {
+ let value = option[idProperty];
+ let selected = entity && entity[propertyKey] === value ? ' selected="selected"' : '';
+ return {label: option[relationTitleProperty]+' (ID: '+value+')', value, selected}
+ });
+ }
+ return await this.render(
+ this.adminFilesContents.fields.view[this.propertyType(resourceProperty)],
+ {fieldName: propertyKey, fieldValue}
+ );
+ }
+
+ async fetchRelationOptions(relationDriverResource)
+ {
+ let relationEntityRepository = this.dataServer.getEntity(relationDriverResource.entityKey);
+ return await relationEntityRepository.loadAll();
+ }
+
+ fetchEntityIdPropertyKey(driverResource)
+ {
+ let resourceProperties = driverResource.options?.properties;
+ if(!resourceProperties){
+ Logger.error('Property "ID" not found.', resourceProperties);
+ return '';
+ }
+ if(resourceProperties['id']){
+ return 'id';
+ }
+ let idProperty = '';
+ let idProperties = Object.keys(resourceProperties).filter((propertyKey) => {
+ return resourceProperties[propertyKey].isId;
+ });
+ if(0 < idProperties.length){
+ idProperty = idProperties.shift();
+ }
+ return idProperty;
+ }
+
+ generateEntityRoute(routeType, driverResource, idProperty, entity)
+ {
+ let idParam = '';
+ if(entity){
+ idParam = '?' + idProperty + '=' + entity[idProperty];
+ }
+ return this.rootPath + '/' + driverResource.entityPath + this[routeType] + idParam;
+ }
+
+ isAuthenticated(req, res, next)
+ {
+ if(req.session?.user){
+ return next();
+ }
+ res.redirect(this.rootPath+this.loginPath);
+ }
+
+ prepareFilters(filtersList, driverResource)
+ {
+ let filtersKeys = Object.keys(filtersList);
+ if(0 === filtersKeys.length){
+ return {};
+ }
+ let filters = {};
+ for(let i of filtersKeys){
+ let filter = filtersList[i];
+ if ('' === filter){
+ continue;
+ }
+ let rawConfigFilterProperties = driverResource.options.properties[i];
+ if(rawConfigFilterProperties.isUpload){
+ continue;
+ }
+ if('reference' === rawConfigFilterProperties.type){
+ filters[i] = filter;
+ continue;
+ }
+ if('boolean' === rawConfigFilterProperties.type){
+ filters[i] = ('true' === filter);
+ continue;
+ }
+ filters[i] = {operator: 'like', value: '%'+filter+'%'};
+ }
+ return filters;
}
}
diff --git a/lib/admin/server/plugin.js b/lib/admin/server/plugin.js
index f2fb6410f..906b1172b 100644
--- a/lib/admin/server/plugin.js
+++ b/lib/admin/server/plugin.js
@@ -4,56 +4,32 @@
*
*/
-const { AdminManager } = require('./admin-manager');
const { PluginInterface } = require('../../features/plugin-interface');
-const { AdminEntitiesGenerator } = require('./admin-entities-generator');
-const { Logger, sc } = require('@reldens/utils');
+const { SetupServerProperties } = require('../../features/server/setup-server-properties');
+const { ActivateAdminSubscriber } = require('./subscribers/activate-admin-subscriber');
+const { Logger } = require('@reldens/utils');
class AdminPlugin extends PluginInterface
{
- setup(props)
+ setup(setupServerProperties)
{
- this.events = sc.get(props, 'events', false);
- if(!this.events){
- Logger.error('EventsManager undefined in AdminPlugin.');
+ if(!(setupServerProperties instanceof SetupServerProperties)){
+ Logger.error('The setupServerProperties param must be an instance of SetupServerProperties.');
+ return false;
}
+ if(!setupServerProperties.validate()){
+ return false;
+ }
+ setupServerProperties.assignProperties(this);
+ this.activateAdminSubscriber = new ActivateAdminSubscriber();
+ this.listenEvents();
+ }
+
+ listenEvents()
+ {
this.events.on('reldens.serverBeforeListen', async (event) => {
- let serverManager = event.serverManager;
- this.adminRoleId = sc.get(
- props,
- 'adminRoleId',
- serverManager.configManager.get('server/admin/roleId', 1)
- );
- let bucket = serverManager.themeManager.projectThemePath;
- await serverManager.themeManager.buildAdminCss();
- serverManager.app.use('/uploads', serverManager.express.static(bucket));
- let entities = AdminEntitiesGenerator.generateEntities(
- serverManager.dataServerConfig.loadedEntities,
- serverManager.dataServer.entityManager.entities
- );
- serverManager.dataServer.resources = AdminManager.prepareResources(entities);
- let adminManagerConfig = {
- serverManager,
- events: this.events,
- app: serverManager.app,
- configManager: serverManager.configManager, // reldens config processor
- config: serverManager.configServer, // is the config of the server itself (port, host, etc.)
- databases: [serverManager.dataServer],
- translations: serverManager.dataServerConfig.translations,
- authenticateCallback: async (email, password) => {
- return await serverManager.loginManager.roleAuthenticationCallback(
- email,
- password,
- this.adminRoleId
- );
- }
- };
- this.events.emit('reldens.beforeCreateAdminManager', this, event);
- serverManager.serverAdmin = new AdminManager(adminManagerConfig);
- this.events.emit('reldens.beforeSetupAdminManager', this, event);
- serverManager.serverAdmin.setupAdmin();
- this.events.emit('reldens.afterCreateAdminManager', this, event);
+ await this.activateAdminSubscriber.activateAdmin(event);
});
}
diff --git a/lib/admin/server/subscribers/activate-admin-subscriber.js b/lib/admin/server/subscribers/activate-admin-subscriber.js
new file mode 100644
index 000000000..cd43a1eb7
--- /dev/null
+++ b/lib/admin/server/subscribers/activate-admin-subscriber.js
@@ -0,0 +1,34 @@
+/**
+ *
+ * Reldens - ActivateAdminSubscriber
+ *
+ */
+
+const { AdminManager } = require('../admin-manager');
+const { AdminManagerConfig } = require('../admin-manager-config');
+const { Logger, sc } = require('@reldens/utils');
+
+class ActivateAdminSubscriber
+{
+
+ async activateAdmin(event)
+ {
+ let serverManager = sc.get(event, 'serverManager', false);
+ if(!serverManager){
+ Logger.error('ServerManager not found in ActivateAdminSubscriber.');
+ return false;
+ }
+ if(!serverManager.events){
+ Logger.error('EventsManager not found in ActivateAdminSubscriber.');
+ return false;
+ }
+ serverManager.events.emit('reldens.beforeCreateAdminManager', this);
+ serverManager.serverAdmin = new AdminManager(new AdminManagerConfig(serverManager));
+ serverManager.events.emit('reldens.beforeSetupAdminManager', this);
+ await serverManager.serverAdmin.setupAdmin();
+ serverManager.events.emit('reldens.afterCreateAdminManager', this);
+ }
+
+}
+
+module.exports.ActivateAdminSubscriber = ActivateAdminSubscriber;
diff --git a/lib/admin/server/templates-list.js b/lib/admin/server/templates-list.js
new file mode 100644
index 000000000..cea5b0aa4
--- /dev/null
+++ b/lib/admin/server/templates-list.js
@@ -0,0 +1,40 @@
+/**
+ *
+ * Reldens - TemplatesList
+ *
+ */
+
+module.exports.TemplatesList = {
+ login: 'login.html',
+ dashboard: 'dashboard.html',
+ list: 'list.html',
+ listContent: 'list-content.html',
+ view: 'view.html',
+ edit: 'edit.html',
+ layout: 'layout.html',
+ sideBar: 'sidebar.html',
+ sideBarHeader: 'sidebar-header.html',
+ sideBarItem: 'sidebar-item.html',
+ paginationLink: 'pagination-link.html',
+ defaultCopyRight: 'default-copyright.html',
+ fields: {
+ view: {
+ text: 'text.html',
+ image: 'image.html',
+ images: 'images.html',
+ link: 'link.html',
+ links: 'links.html',
+ boolean: 'boolean.html'
+ },
+ edit: {
+ text: 'text.html',
+ textarea: 'textarea.html',
+ select: 'select.html',
+ checkbox: 'checkbox.html',
+ boolean: 'checkbox.html',
+ radio: 'radio.html',
+ button: 'button.html',
+ file: 'file.html'
+ }
+ }
+};
diff --git a/lib/admin/server/upload-file/admin-local-provider.js b/lib/admin/server/upload-file/admin-local-provider.js
deleted file mode 100644
index 2b5f4fd7a..000000000
--- a/lib/admin/server/upload-file/admin-local-provider.js
+++ /dev/null
@@ -1,77 +0,0 @@
-/**
- *
- * Reldens - AdminLocalProvider
- *
- */
-
-const fs = require('fs');
-const path = require('path');
-const { Logger, sc } = require('@reldens/utils');
-
-class AdminLocalProvider
-{
-
- constructor(options)
- {
- if(!fs.existsSync(options.bucket)){
- throw new Error('Directory not found: ' + options.bucket);
- }
- this.isWin32 = process.platform === 'win32';
- }
-
- async upload(uploadedFile, key, actionContext)
- {
- if(!uploadedFile){
- return false;
- }
- // adjusting file path according to OS:
- const filePath = this.isWin32 ? this.path(key) : this.path(key).slice(1);
- await fs.promises.mkdir(path.dirname(filePath), { recursive: true });
- await fs.promises.copyFile(uploadedFile.path, filePath);
- }
-
- async delete(key, bucket, actionContext)
- {
- try {
- await fs.promises.unlink(this.isWin32 ? this.path(key, bucket) : this.path(key, bucket).slice(1));
- } catch (err) {
- // Logger.error(err);
- }
- }
-
- path(key, bucket, actionContext)
- {
- // Windows does not require the '/' in path, while UNIX system does
- return this.isWin32 ? `${path.join(bucket || this.bucket, key)}` : `/${path.join(bucket || this.bucket, key)}`;
- }
-
- static joinPath(...paths)
- {
- return path.join(...paths);
- }
-
- static async copyFile(from, to)
- {
- let origin = sc.isArray(from) ? this.joinPath(...from) : from;
- let dest = sc.isArray(to) ? this.joinPath(...to) : to;
- try {
- return await fs.promises.copyFile(origin, dest);
- } catch (error) {
- Logger.error(error.message);
- return false;
- }
- }
-
- static async deleteFile(filePath)
- {
- try {
- let deleteFile = sc.isArray(filePath) ? this.joinPath(...filePath) : filePath
- await fs.promises.unlink(deleteFile);
- } catch (err) {
- // Logger.error(err);
- }
- }
-
-}
-
-module.exports.AdminLocalProvider = AdminLocalProvider;
diff --git a/lib/admin/server/uploader-factory.js b/lib/admin/server/uploader-factory.js
new file mode 100644
index 000000000..6ea129ac8
--- /dev/null
+++ b/lib/admin/server/uploader-factory.js
@@ -0,0 +1,67 @@
+/**
+ *
+ * Reldens - UploaderFactory
+ *
+ */
+
+const multer = require('multer');
+const { FileHandler } = require('../../game/server/file-handler');
+const { MimeTypes } = require('../../game/mime-types');
+const { Logger } = require('@reldens/utils');
+
+class UploaderFactory
+{
+
+ createUploader(fields, buckets, allowedFileTypes)
+ {
+ let storage = multer.diskStorage({
+ destination: (req,file,cb) => {
+ cb(null, buckets[file.fieldname]);
+ },
+ filename: (req,file,cb) => {
+ cb(null, file.originalname);
+ }
+ })
+ return multer({
+ storage,
+ fileFilter: (req, file, cb) => {
+ return this.checkFileType(file, allowedFileTypes[file.fieldname], cb);
+ }
+ }).fields(fields);
+ }
+
+ checkFileType(file, allowedFileTypes, cb)
+ {
+ if(!allowedFileTypes){
+ return cb(null, true);
+ }
+ let allowedFileTypeCheck = this.convertToRegex(allowedFileTypes);
+ if(!allowedFileTypeCheck){
+ Logger.error('File type could not be converted to regex.', allowedFileTypes);
+ return cb(null, false);
+ }
+ let extname = allowedFileTypeCheck.test(FileHandler.extension(file.originalname).toLowerCase());
+ let mimetype = allowedFileTypeCheck.test(file.mimetype);
+ if(mimetype && extname){
+ return cb(null, true);
+ }
+ Logger.error('File type not supported.', {
+ extension: extname,
+ mimetype,
+ allowedFileTypes: allowedFileTypeCheck
+ });
+ return cb(null, false);
+ }
+
+ convertToRegex(key)
+ {
+ if(!MimeTypes[key]){
+ return false;
+ }
+ let types = MimeTypes[key].map(type => type.split('/').pop().replace('+', '\\+'));
+ return new RegExp(types.join('|'));
+ }
+
+}
+
+module.exports.UploaderFactory = UploaderFactory;
diff --git a/lib/ads/server/entities/ads-banner-entity.js b/lib/ads/server/entities/ads-banner-entity.js
index ebf3e6c44..53f092828 100644
--- a/lib/ads/server/entities/ads-banner-entity.js
+++ b/lib/ads/server/entities/ads-banner-entity.js
@@ -21,18 +21,18 @@ class AdsBannerEntity extends EntityProperties
banner_data: {}
};
- let listPropertiesKeys = Object.keys(properties);
- let editPropertiesKeys = [...listPropertiesKeys];
-
- editPropertiesKeys.splice(editPropertiesKeys.indexOf('id'), 1);
-
- return Object.assign({
- listProperties: listPropertiesKeys,
- showProperties: Object.keys(properties),
- filterProperties: listPropertiesKeys,
- editProperties: editPropertiesKeys,
- properties
- }, extraProps);
+ let showProperties = Object.keys(properties);
+ let editProperties = [...showProperties];
+ editProperties.splice(editProperties.indexOf('id'), 1);
+
+ return {
+ showProperties,
+ editProperties,
+ listProperties: showProperties,
+ filterProperties: showProperties,
+ properties,
+ ...extraProps
+ };
}
}
diff --git a/lib/ads/server/entities/ads-entity.js b/lib/ads/server/entities/ads-entity.js
index afa0368f6..92c4a2d8d 100644
--- a/lib/ads/server/entities/ads-entity.js
+++ b/lib/ads/server/entities/ads-entity.js
@@ -12,10 +12,10 @@ class AdsEntity extends EntityProperties
static propertiesConfig(extraProps)
{
+ let titleProperty = 'key';
let properties = {
id: {},
- key: {
- isTitle: true,
+ [titleProperty]: {
isRequired: true
},
provider_id: {
@@ -50,24 +50,26 @@ class AdsEntity extends EntityProperties
}
};
- let listPropertiesKeys = Object.keys(properties);
- let editPropertiesKeys = [...listPropertiesKeys];
-
- listPropertiesKeys = sc.removeFromArray(listPropertiesKeys, [
+ let showProperties = Object.keys(properties);
+ let listProperties = [...showProperties];
+ let editProperties = [...showProperties];
+ listProperties = sc.removeFromArray(listProperties, [
'position_top',
'position_bottom',
'position_left',
'position_right'
]);
- editPropertiesKeys.splice(editPropertiesKeys.indexOf('id'), 1);
+ editProperties.splice(editProperties.indexOf('id'), 1);
- return Object.assign({
- listProperties: listPropertiesKeys,
- showProperties: Object.keys(properties),
- filterProperties: listPropertiesKeys,
- editProperties: editPropertiesKeys,
- properties
- }, extraProps);
+ return {
+ showProperties,
+ editProperties,
+ listProperties,
+ filterProperties: listProperties,
+ properties,
+ titleProperty,
+ ...extraProps
+ };
}
}
diff --git a/lib/ads/server/entities/ads-event-video-entity.js b/lib/ads/server/entities/ads-event-video-entity.js
index 992fd1f0a..2892d4eee 100644
--- a/lib/ads/server/entities/ads-event-video-entity.js
+++ b/lib/ads/server/entities/ads-event-video-entity.js
@@ -11,6 +11,7 @@ class AdsEventVideoEntity extends EntityProperties
static propertiesConfig(extraProps)
{
+ let titleProperty = 'event_key';
let properties = {
id: {},
ads_id: {
@@ -18,26 +19,27 @@ class AdsEventVideoEntity extends EntityProperties
reference: 'ads',
isRequired: true
},
- event_key: {
- isTitle: true,
+ [titleProperty]: {
isRequired: true
},
event_data: {}
};
- let listPropertiesKeys = Object.keys(properties);
- let editPropertiesKeys = [...listPropertiesKeys];
-
- editPropertiesKeys.splice(editPropertiesKeys.indexOf('id'), 1);
- listPropertiesKeys.splice(listPropertiesKeys.indexOf('event_data'), 1);
-
- return Object.assign({
- listProperties: listPropertiesKeys,
- showProperties: Object.keys(properties),
- filterProperties: listPropertiesKeys,
- editProperties: editPropertiesKeys,
- properties
- }, extraProps);
+ let showProperties = Object.keys(properties);
+ let listProperties = [...showProperties];
+ let editProperties = [...listProperties];
+ listProperties.splice(listProperties.indexOf('event_data'), 1);
+ editProperties.splice(editProperties.indexOf('id'), 1);
+
+ return {
+ showProperties,
+ editProperties,
+ listProperties,
+ filterProperties: listProperties,
+ properties,
+ titleProperty,
+ ...extraProps
+ };
}
}
diff --git a/lib/ads/server/entities/ads-played-entity.js b/lib/ads/server/entities/ads-played-entity.js
index 6c2b1057c..0a0193ae2 100644
--- a/lib/ads/server/entities/ads-played-entity.js
+++ b/lib/ads/server/entities/ads-played-entity.js
@@ -25,18 +25,18 @@ class AdsPlayedEntity extends EntityProperties
}
};
- let listPropertiesKeys = Object.keys(properties);
- let editPropertiesKeys = [...listPropertiesKeys];
-
- editPropertiesKeys.splice(editPropertiesKeys.indexOf('id'), 1);
-
- return Object.assign({
- listProperties: listPropertiesKeys,
- showProperties: Object.keys(properties),
- filterProperties: listPropertiesKeys,
- editProperties: editPropertiesKeys,
- properties
- }, extraProps);
+ let showProperties = Object.keys(properties);
+ let editProperties = [...showProperties];
+ editProperties.splice(editProperties.indexOf('id'), 1);
+
+ return {
+ showProperties,
+ editProperties,
+ listProperties: showProperties,
+ filterProperties: showProperties,
+ properties,
+ ...extraProps
+ };
}
}
diff --git a/lib/ads/server/entities/ads-providers-entity.js b/lib/ads/server/entities/ads-providers-entity.js
index 51306401c..a81b14724 100644
--- a/lib/ads/server/entities/ads-providers-entity.js
+++ b/lib/ads/server/entities/ads-providers-entity.js
@@ -11,26 +11,27 @@ class AdsProvidersEntity extends EntityProperties
static propertiesConfig(extraProps)
{
+ let titleProperty = 'key';
let properties = {
id: {},
- key: {
- isTitle: true,
+ [titleProperty]: {
isRequired: true
}
};
- let listPropertiesKeys = Object.keys(properties);
- let editPropertiesKeys = [...listPropertiesKeys];
-
- editPropertiesKeys.splice(editPropertiesKeys.indexOf('id'), 1);
-
- return Object.assign({
- listProperties: listPropertiesKeys,
- showProperties: Object.keys(properties),
- filterProperties: listPropertiesKeys,
- editProperties: editPropertiesKeys,
- properties
- }, extraProps);
+ let showProperties = Object.keys(properties);
+ let editProperties = [...showProperties];
+ editProperties.splice(editProperties.indexOf('id'), 1);
+
+ return {
+ showProperties,
+ editProperties,
+ listProperties: showProperties,
+ filterProperties: showProperties,
+ properties,
+ titleProperty,
+ ...extraProps
+ };
}
}
diff --git a/lib/ads/server/entities/ads-types-entity.js b/lib/ads/server/entities/ads-types-entity.js
index add5839d2..1da9533ac 100644
--- a/lib/ads/server/entities/ads-types-entity.js
+++ b/lib/ads/server/entities/ads-types-entity.js
@@ -11,26 +11,27 @@ class AdsTypesEntity extends EntityProperties
static propertiesConfig(extraProps)
{
+ let titleProperty = 'key';
let properties = {
id: {},
- key: {
- isTitle: true,
+ [titleProperty]: {
isRequired: true
}
};
- let listPropertiesKeys = Object.keys(properties);
- let editPropertiesKeys = [...listPropertiesKeys];
-
- editPropertiesKeys.splice(editPropertiesKeys.indexOf('id'), 1);
-
- return Object.assign({
- listProperties: listPropertiesKeys,
- showProperties: Object.keys(properties),
- filterProperties: listPropertiesKeys,
- editProperties: editPropertiesKeys,
- properties
- }, extraProps);
+ let showProperties = Object.keys(properties);
+ let editProperties = [...showProperties];
+ editProperties.splice(editProperties.indexOf('id'), 1);
+
+ return {
+ showProperties,
+ editProperties,
+ listProperties: showProperties,
+ filterProperties: showProperties,
+ properties,
+ titleProperty,
+ ...extraProps
+ };
}
}
diff --git a/lib/audio/constants.js b/lib/audio/constants.js
index d24e1f807..100457a3a 100644
--- a/lib/audio/constants.js
+++ b/lib/audio/constants.js
@@ -1,10 +1,9 @@
/**
*
- * Reldens - audio/constants
+ * Reldens - AudioConst
*
*/
-// constants:
module.exports.AudioConst = {
AUDIO_UPDATE: 'ap',
AUDIO_DELETE: 'ad',
diff --git a/lib/audio/server/audio-hot-plug-callbacks.js b/lib/audio/server/audio-hot-plug-callbacks.js
index 4d42ab585..f39fcda64 100644
--- a/lib/audio/server/audio-hot-plug-callbacks.js
+++ b/lib/audio/server/audio-hot-plug-callbacks.js
@@ -4,7 +4,7 @@
*
*/
-const { AdminDistHelper } = require('../../admin/server/upload-file/admin-dist-helper');
+const { AdminDistHelper } = require('../../admin/server/admin-dist-helper');
const { sc } = require('@reldens/utils');
class AudioHotPlugCallbacks
diff --git a/lib/audio/server/entities/audio-categories-entity.js b/lib/audio/server/entities/audio-categories-entity.js
index ea267ffb9..4c417fba7 100644
--- a/lib/audio/server/entities/audio-categories-entity.js
+++ b/lib/audio/server/entities/audio-categories-entity.js
@@ -11,10 +11,10 @@ class AudioCategoriesEntity extends EntityProperties
static propertiesConfig(extraProps)
{
+ let titleProperty = 'category_key';
let properties = {
id: {},
- category_key: {
- isTitle: true,
+ [titleProperty]: {
isRequired: true
},
category_label: {
@@ -29,18 +29,19 @@ class AudioCategoriesEntity extends EntityProperties
}
};
- let listPropertiesKeys = Object.keys(properties);
- let editPropertiesKeys = [...listPropertiesKeys];
-
- editPropertiesKeys.splice(editPropertiesKeys.indexOf('id'), 1);
-
- return Object.assign({
- listProperties: listPropertiesKeys,
- showProperties: Object.keys(properties),
- filterProperties: listPropertiesKeys,
- editProperties: editPropertiesKeys,
- properties
- }, extraProps);
+ let showProperties = Object.keys(properties);
+ let editProperties = [...showProperties];
+ editProperties.splice(editProperties.indexOf('id'), 1);
+
+ return {
+ showProperties,
+ editProperties,
+ listProperties: showProperties,
+ filterProperties: showProperties,
+ properties,
+ titleProperty,
+ ...extraProps
+ };
}
}
diff --git a/lib/audio/server/entities/audio-entity.js b/lib/audio/server/entities/audio-entity.js
index 0f9fd55f5..c7f0ba443 100644
--- a/lib/audio/server/entities/audio-entity.js
+++ b/lib/audio/server/entities/audio-entity.js
@@ -5,28 +5,34 @@
*/
const { EntityProperties } = require('../../../game/server/entity-properties');
-const { AdminLocalProvider } = require('../../../admin/server/upload-file/admin-local-provider');
const { AudioHotPlugCallbacks } = require('../audio-hot-plug-callbacks');
+const { AllowedFileTypes } = require('../../../game/allowed-file-types');
+const { FileHandler } = require('../../../game/server/file-handler');
const { AudioConst } = require('../../constants');
const { sc } = require('@reldens/utils');
class AudioEntity extends EntityProperties
{
- static propertiesDefinition()
+ static propertiesConfig(extraProps, projectConfig)
{
- return {
+ let titleProperty = 'audio_key';
+ let bucket = FileHandler.joinPaths(projectConfig.bucketFullPath, 'assets', 'audio');
+ let bucketPath = '/assets/audio/';
+ let distFolder = FileHandler.joinPaths(projectConfig.distPath, 'assets', 'audio');
+ let properties = {
id: {},
- audio_key: {
- isTitle: true,
+ [titleProperty]: {
isRequired: true
},
files_name: {
isRequired: true,
- isArray: true
- },
- uploadedFile: {
- isVirtual: true
+ isArray: ',',
+ isUpload: true,
+ allowedTypes: AllowedFileTypes.AUDIO,
+ bucket,
+ bucketPath,
+ distFolder
},
config: {},
room_id: {
@@ -41,26 +47,12 @@ class AudioEntity extends EntityProperties
type: 'boolean'
}
};
- }
-
- static propertiesConfig(extraProps, projectConfig)
- {
- let properties = this.propertiesDefinition();
- let arrayColumns = {files_name: {splitBy: ','}};
let showProperties = Object.keys(properties);
let listProperties = [...showProperties];
- let filterProperties = [...showProperties];
let editProperties = [...showProperties];
-
- showProperties = sc.removeFromArray(showProperties, ['files_name']);
- listProperties = sc.removeFromArray(listProperties, ['files_name', 'config']);
- filterProperties = sc.removeFromArray(filterProperties, ['uploadedFile']);
- editProperties = sc.removeFromArray(editProperties, ['id', 'files_name']);
-
- let bucket = AdminLocalProvider.joinPath(projectConfig.bucketFullPath, 'assets', 'audio');
- let distFolder = AdminLocalProvider.joinPath(projectConfig.distPath, 'assets', 'audio');
-
+ listProperties = sc.removeFromArray(listProperties, ['config']);
+ editProperties = sc.removeFromArray(editProperties, ['id']);
let callbacks = {
// @NOTE: we use the update callback because that's when the file_name is updated with the upload plugin.
beforeUpdate: AudioHotPlugCallbacks.beforeUpdateCallback(projectConfig, bucket, distFolder),
@@ -68,17 +60,18 @@ class AudioEntity extends EntityProperties
beforeDelete: AudioHotPlugCallbacks.beforeDeleteCallback(projectConfig, bucket, distFolder)
};
- return Object.assign({
- listProperties,
+ return {
showProperties,
- filterProperties,
editProperties,
+ listProperties,
+ filterProperties: listProperties,
properties,
- features: [],
- arrayColumns,
bucketPath: AudioConst.AUDIO_BUCKET+'/',
- callbacks
- }, extraProps);
+ bucket,
+ callbacks,
+ titleProperty,
+ ...extraProps
+ };
}
}
diff --git a/lib/audio/server/entities/audio-markers-entity.js b/lib/audio/server/entities/audio-markers-entity.js
index 6ede23d6e..9489ad9f9 100644
--- a/lib/audio/server/entities/audio-markers-entity.js
+++ b/lib/audio/server/entities/audio-markers-entity.js
@@ -11,6 +11,7 @@ class AudioMarkersEntity extends EntityProperties
static propertiesConfig(extraProps)
{
+ let titleProperty = 'marker_key';
let properties = {
id: {},
audio_id: {
@@ -18,8 +19,7 @@ class AudioMarkersEntity extends EntityProperties
reference: 'audio',
isRequired: true
},
- marker_key: {
- isTitle: true,
+ [titleProperty]: {
isRequired: true
},
start: {
@@ -33,19 +33,21 @@ class AudioMarkersEntity extends EntityProperties
config: {}
};
- let listPropertiesKeys = Object.keys(properties);
- let editPropertiesKeys = [...listPropertiesKeys];
-
- listPropertiesKeys.splice(editPropertiesKeys.indexOf('config'), 1);
- editPropertiesKeys.splice(editPropertiesKeys.indexOf('id'), 1);
-
- return Object.assign({
- listProperties: listPropertiesKeys,
- showProperties: Object.keys(properties),
- filterProperties: listPropertiesKeys,
- editProperties: editPropertiesKeys,
- properties
- }, extraProps);
+ let showProperties = Object.keys(properties);
+ let listProperties = [...showProperties];
+ let editProperties = [...listProperties];
+ listProperties.splice(editProperties.indexOf('config'), 1);
+ editProperties.splice(editProperties.indexOf('id'), 1);
+
+ return {
+ showProperties,
+ editProperties,
+ listProperties,
+ filterProperties: listProperties,
+ properties,
+ titleProperty,
+ ...extraProps
+ };
}
}
diff --git a/lib/audio/server/entities/audio-player-config-entity.js b/lib/audio/server/entities/audio-player-config-entity.js
index 31017d7e5..c2e2167cf 100644
--- a/lib/audio/server/entities/audio-player-config-entity.js
+++ b/lib/audio/server/entities/audio-player-config-entity.js
@@ -27,18 +27,18 @@ class AudioPlayerConfigEntity extends EntityProperties
}
};
- let listPropertiesKeys = Object.keys(properties);
- let editPropertiesKeys = [...listPropertiesKeys];
-
- editPropertiesKeys.splice(editPropertiesKeys.indexOf('id'), 1);
-
- return Object.assign({
- listProperties: listPropertiesKeys,
- showProperties: Object.keys(properties),
- filterProperties: listPropertiesKeys,
- editProperties: editPropertiesKeys,
- properties
- }, extraProps);
+ let showProperties = Object.keys(properties);
+ let editProperties = [...showProperties];
+ editProperties.splice(editProperties.indexOf('id'), 1);
+
+ return {
+ showProperties,
+ editProperties,
+ listProperties: showProperties,
+ filterProperties: showProperties,
+ properties,
+ ...extraProps
+ };
}
}
diff --git a/lib/bundlers/drivers/parcel-config.json b/lib/bundlers/drivers/parcel-config.json
index be00f9189..0bffc8fae 100644
--- a/lib/bundlers/drivers/parcel-config.json
+++ b/lib/bundlers/drivers/parcel-config.json
@@ -33,7 +33,6 @@
"*.pug": ["@parcel/transformer-pug"],
"*.coffee": ["@parcel/transformer-coffeescript"],
"*.elm": ["@parcel/transformer-elm"],
- "*.mdx": ["@parcel/transformer-mdx"],
"*.vue": ["@parcel/transformer-vue"],
"template:*.vue": ["@parcel/transformer-vue"],
"script:*.vue": ["@parcel/transformer-vue"],
diff --git a/lib/chat/server/entities-translations.js b/lib/chat/server/entities-translations.js
index fa80867e8..bc4bbe4a6 100644
--- a/lib/chat/server/entities-translations.js
+++ b/lib/chat/server/entities-translations.js
@@ -7,6 +7,6 @@
module.exports.entitiesTranslations = {
labels: {
chat: 'Chat',
- chat_message_types: 'Message Types'
+ chatMessagesTypes: 'Messages Types'
}
};
diff --git a/lib/chat/server/entities/chat-entity.js b/lib/chat/server/entities/chat-entity.js
index 3120291ba..960577548 100644
--- a/lib/chat/server/entities/chat-entity.js
+++ b/lib/chat/server/entities/chat-entity.js
@@ -16,22 +16,26 @@ class ChatEntity extends EntityProperties
player_id: {
type: 'reference',
reference: 'players',
+ alias: 'chat_player_id',
isRequired: true
},
room_id: {
type: 'reference',
- reference: 'rooms'
+ reference: 'rooms',
+ alias: 'chat_room'
},
message: {
isRequired: true
},
private_player_id: {
type: 'reference',
- reference: 'players'
+ reference: 'players',
+ alias: 'chat_private_player_id'
},
message_type: {
type: 'reference',
- reference: 'chat_message_types'
+ reference: 'chat_message_types',
+ alias: 'chat_type'
},
message_time: {
type: 'datetime',
@@ -39,18 +43,18 @@ class ChatEntity extends EntityProperties
}
};
- let listPropertiesKeys = Object.keys(properties);
- let editPropertiesKeys = [...listPropertiesKeys];
-
- editPropertiesKeys.splice(editPropertiesKeys.indexOf('id'), 1);
-
- return Object.assign({
- listProperties: listPropertiesKeys,
- showProperties: Object.keys(properties),
- filterProperties: listPropertiesKeys,
- editProperties: editPropertiesKeys,
- properties
- }, extraProps);
+ let showProperties = Object.keys(properties);
+ let editProperties = [...showProperties];
+ editProperties.splice(editProperties.indexOf('id'), 1);
+
+ return {
+ showProperties,
+ editProperties,
+ listProperties: showProperties,
+ filterProperties: showProperties,
+ properties,
+ ...extraProps
+ };
}
}
diff --git a/lib/chat/server/entities/chat-message-types-entity.js b/lib/chat/server/entities/chat-message-types-entity.js
index 8bae0bd32..9896ce126 100644
--- a/lib/chat/server/entities/chat-message-types-entity.js
+++ b/lib/chat/server/entities/chat-message-types-entity.js
@@ -11,9 +11,10 @@ class ChatMessageTypesEntity extends EntityProperties
static propertiesConfig(extraProps)
{
+ let titleProperty = 'key';
let properties = {
id: {},
- key: {
+ [titleProperty]: {
isRequired: true
},
show_tab: {
@@ -24,18 +25,19 @@ class ChatMessageTypesEntity extends EntityProperties
}
};
- let listPropertiesKeys = Object.keys(properties);
- let editPropertiesKeys = [...listPropertiesKeys];
-
- editPropertiesKeys.splice(editPropertiesKeys.indexOf('id'), 1);
-
- return Object.assign({
- listProperties: listPropertiesKeys,
- showProperties: Object.keys(properties),
- filterProperties: listPropertiesKeys,
- editProperties: editPropertiesKeys,
- properties
- }, extraProps);
+ let showProperties = Object.keys(properties);
+ let editProperties = [...showProperties];
+ editProperties.splice(editProperties.indexOf('id'), 1);
+
+ return {
+ showProperties,
+ editProperties,
+ listProperties: showProperties,
+ filterProperties: showProperties,
+ properties,
+ titleProperty,
+ ...extraProps
+ };
}
}
diff --git a/lib/chat/server/event-listener/guest-invalid-change-point.js b/lib/chat/server/event-listener/guest-invalid-change-point.js
index 3fc5b3e10..e31f0d487 100644
--- a/lib/chat/server/event-listener/guest-invalid-change-point.js
+++ b/lib/chat/server/event-listener/guest-invalid-change-point.js
@@ -6,7 +6,7 @@
const { MessageFactory } = require('../../message-factory');
const { ChatConst } = require('../../constants');
-const {Logger} = require("@reldens/utils");
+const { Logger } = require('@reldens/utils');
class GuestInvalidChangePoint
{
diff --git a/lib/chat/server/models/objection-js/registered-models-objection-js.js b/lib/chat/server/models/objection-js/registered-models-objection-js.js
index 1432c9103..e67f93dbe 100644
--- a/lib/chat/server/models/objection-js/registered-models-objection-js.js
+++ b/lib/chat/server/models/objection-js/registered-models-objection-js.js
@@ -7,7 +7,7 @@
const { ChatModel } = require('./chat-model');
const { ChatMessageTypesModel } = require('./chat-message-types-model');
const { entitiesConfig } = require('../../entities-config');
-const { entitiesTranslations } = require('../../../../actions/server/entities-translations');
+const { entitiesTranslations } = require('../../entities-translations');
let rawRegisteredEntities = {
chat: ChatModel,
diff --git a/lib/config/server/entities-translations.js b/lib/config/server/entities-translations.js
new file mode 100644
index 000000000..fa5c52be6
--- /dev/null
+++ b/lib/config/server/entities-translations.js
@@ -0,0 +1,13 @@
+/**
+ *
+ * Reldens - Entities Translations
+ *
+ */
+
+module.exports.entitiesTranslations = {
+ labels: {
+ settings: 'Settings',
+ config: 'Config',
+ config_types: 'Config Types'
+ }
+};
diff --git a/lib/config/server/entities/config-entity.js b/lib/config/server/entities/config-entity.js
index ba7eaada0..1e6f9741b 100644
--- a/lib/config/server/entities/config-entity.js
+++ b/lib/config/server/entities/config-entity.js
@@ -11,13 +11,13 @@ class ConfigEntity extends EntityProperties
static propertiesConfig(extraProps)
{
+ let titleProperty = 'path';
let properties = {
id: {},
scope: {
isRequired: true
},
- path: {
- isTitle: true,
+ [titleProperty]: {
isRequired: true
},
value: {
@@ -30,18 +30,19 @@ class ConfigEntity extends EntityProperties
}
};
- let listPropertiesKeys = Object.keys(properties);
- let editPropertiesKeys = [...listPropertiesKeys];
-
- editPropertiesKeys.splice(editPropertiesKeys.indexOf('id'), 1);
-
- return Object.assign({
- listProperties: listPropertiesKeys,
- showProperties: Object.keys(properties),
- filterProperties: listPropertiesKeys,
- editProperties: editPropertiesKeys,
- properties
- }, extraProps);
+ let showProperties = Object.keys(properties);
+ let editProperties = [...showProperties];
+ editProperties.splice(editProperties.indexOf('id'), 1);
+
+ return {
+ showProperties,
+ editProperties,
+ listProperties: showProperties,
+ filterProperties: showProperties,
+ properties,
+ titleProperty,
+ ...extraProps
+ };
}
}
diff --git a/lib/config/server/entities/config-types-entity.js b/lib/config/server/entities/config-types-entity.js
index cb0a7cf3c..44932d86d 100644
--- a/lib/config/server/entities/config-types-entity.js
+++ b/lib/config/server/entities/config-types-entity.js
@@ -11,26 +11,27 @@ class ConfigTypesEntity extends EntityProperties
static propertiesConfig(extraProps)
{
+ let titleProperty = 'label';
let properties = {
id: {},
- label: {
- isTitle: true,
+ [titleProperty]: {
isRequired: true
}
};
- let listPropertiesKeys = Object.keys(properties);
- let editPropertiesKeys = [...listPropertiesKeys];
-
- editPropertiesKeys.splice(editPropertiesKeys.indexOf('id'), 1);
-
- return Object.assign({
- listProperties: listPropertiesKeys,
- showProperties: Object.keys(properties),
- filterProperties: listPropertiesKeys,
- editProperties: editPropertiesKeys,
- properties
- }, extraProps);
+ let showProperties = Object.keys(properties);
+ let editProperties = [...showProperties];
+ editProperties.splice(editProperties.indexOf('id'), 1);
+
+ return {
+ showProperties,
+ editProperties,
+ listProperties: showProperties,
+ filterProperties: showProperties,
+ properties,
+ titleProperty,
+ ...extraProps
+ };
}
}
diff --git a/lib/config/server/models/objection-js/registered-models-objection-js.js b/lib/config/server/models/objection-js/registered-models-objection-js.js
index ee7969776..c3fb2eab8 100644
--- a/lib/config/server/models/objection-js/registered-models-objection-js.js
+++ b/lib/config/server/models/objection-js/registered-models-objection-js.js
@@ -7,6 +7,7 @@
const { ConfigModel } = require('./config-model');
const { ConfigTypesModel } = require('./config-types-model');
const { entitiesConfig } = require('../../entities-config');
+const { entitiesTranslations } = require('../../entities-translations');
let rawRegisteredEntities = {
config: ConfigModel,
@@ -16,3 +17,6 @@ let rawRegisteredEntities = {
module.exports.rawRegisteredEntities = rawRegisteredEntities;
module.exports.entitiesConfig = entitiesConfig;
+
+module.exports.entitiesTranslations = entitiesTranslations;
+
diff --git a/lib/features/server/entities-translations.js b/lib/features/server/entities-translations.js
new file mode 100644
index 000000000..28c82f0c1
--- /dev/null
+++ b/lib/features/server/entities-translations.js
@@ -0,0 +1,11 @@
+/**
+ *
+ * Reldens - Entities Translations
+ *
+ */
+
+module.exports.entitiesTranslations = {
+ labels: {
+ features: 'Features'
+ }
+};
diff --git a/lib/features/server/entities/features-entity.js b/lib/features/server/entities/features-entity.js
index 0ecf49fca..e79637850 100644
--- a/lib/features/server/entities/features-entity.js
+++ b/lib/features/server/entities/features-entity.js
@@ -11,13 +11,13 @@ class FeaturesEntity extends EntityProperties
static propertiesConfig(extraProps)
{
+ let titleProperty = 'title';
let properties = {
id: {},
code: {
isRequired: true
},
- title: {
- isTitle: true,
+ [titleProperty]: {
isRequired: true
},
is_enabled: {
@@ -26,20 +26,21 @@ class FeaturesEntity extends EntityProperties
}
};
- let listPropertiesKeys = Object.keys(properties);
- let editPropertiesKeys = [...listPropertiesKeys];
-
- listPropertiesKeys.splice(listPropertiesKeys.indexOf('id'), 1);
- listPropertiesKeys.splice(listPropertiesKeys.indexOf('code'), 1);
- editPropertiesKeys.splice(editPropertiesKeys.indexOf('id'), 1);
-
- return Object.assign({
- listProperties: listPropertiesKeys,
- showProperties: Object.keys(properties),
- filterProperties: listPropertiesKeys,
- editProperties: editPropertiesKeys,
- properties
- }, extraProps);
+ let showProperties = Object.keys(properties);
+ let listProperties = [...showProperties];
+ let editProperties = [...showProperties];
+ listProperties.splice(listProperties.indexOf('code'), 1);
+ editProperties.splice(editProperties.indexOf('id'), 1);
+
+ return {
+ showProperties,
+ editProperties,
+ listProperties,
+ filterProperties: listProperties,
+ properties,
+ titleProperty,
+ ...extraProps
+ };
}
}
diff --git a/lib/features/server/manager.js b/lib/features/server/manager.js
index b3e6355bb..3f122c69f 100644
--- a/lib/features/server/manager.js
+++ b/lib/features/server/manager.js
@@ -4,6 +4,7 @@
*
*/
+const { SetupServerProperties } = require('./setup-server-properties');
const { ServerCoreFeatures } = require('./config-server');
const { Logger, sc } = require('@reldens/utils');
@@ -28,10 +29,19 @@ class FeaturesManager
return false;
}
if(!this.dataServer){
- Logger.error('dataServer undefined in FeaturesManager.');
+ Logger.error('DataServer undefined in FeaturesManager.');
return false;
}
let featuresCollection = await this.dataServer.getEntity('features').loadBy('is_enabled', 1);
+ let setupServerProperties = new SetupServerProperties({
+ events: this.events,
+ dataServer: this.dataServer,
+ config: this.config,
+ featuresManager: this,
+ });
+ if(!setupServerProperties.validate()){
+ return false;
+ }
for(let featureEntity of featuresCollection){
this.featuresCodeList.push(featureEntity.code);
// @NOTE: featuresCodeList this will be sent to the client, so we need the complete list from the database
@@ -47,12 +57,7 @@ class FeaturesManager
// set package on entity:
featureEntity.package = new featurePackage();
if('function' === typeof featureEntity.package.setup){
- await featureEntity.package.setup({
- events: this.events,
- dataServer: this.dataServer,
- featuresManager: this,
- config: this.config
- });
+ await featureEntity.package.setup(setupServerProperties);
}
// for last add the feature entity to the list:
this.featuresList[featureEntity.code] = featureEntity;
diff --git a/lib/features/server/models/objection-js/registered-models-objection-js.js b/lib/features/server/models/objection-js/registered-models-objection-js.js
index 0e28eb3db..b6f447d4d 100644
--- a/lib/features/server/models/objection-js/registered-models-objection-js.js
+++ b/lib/features/server/models/objection-js/registered-models-objection-js.js
@@ -6,6 +6,7 @@
const { FeaturesModel } = require('./features-model');
const { entitiesConfig } = require('../../entities-config');
+const { entitiesTranslations } = require('../../entities-translations');
let rawRegisteredEntities = {
features: FeaturesModel
@@ -14,3 +15,5 @@ let rawRegisteredEntities = {
module.exports.rawRegisteredEntities = rawRegisteredEntities;
module.exports.entitiesConfig = entitiesConfig;
+
+module.exports.entitiesTranslations = entitiesTranslations;
diff --git a/lib/features/server/setup-server-properties.js b/lib/features/server/setup-server-properties.js
new file mode 100644
index 000000000..f1df7463e
--- /dev/null
+++ b/lib/features/server/setup-server-properties.js
@@ -0,0 +1,25 @@
+/**
+ *
+ * Reldens - SetupServerProperties
+ *
+ */
+
+const { PropertiesHandler } = require('../../game/properties-handler');
+const { sc } = require('@reldens/utils');
+
+class SetupServerProperties extends PropertiesHandler
+{
+
+ constructor(props)
+ {
+ super();
+ this.events = sc.get(props, 'events', false);
+ this.dataServer = sc.get(props, 'dataServer', false);
+ this.config = sc.get(props, 'config', {});
+ this.featuresManager = sc.get(props, 'featuresManager', false);
+ this.requiredProperties = Object.keys(this);
+ }
+
+}
+
+module.exports.SetupServerProperties = SetupServerProperties
diff --git a/lib/game/allowed-file-types.js b/lib/game/allowed-file-types.js
new file mode 100644
index 000000000..7bd0cec41
--- /dev/null
+++ b/lib/game/allowed-file-types.js
@@ -0,0 +1,11 @@
+/**
+ *
+ * Reldens - AllowedFileTypes
+ *
+ */
+
+module.exports.AllowedFileTypes = {
+ AUDIO: 'audio',
+ IMAGE: 'image',
+ TEXT: 'text'
+};
diff --git a/lib/game/client/game-engine.js b/lib/game/client/game-engine.js
index 61d31d967..1a1ed314e 100644
--- a/lib/game/client/game-engine.js
+++ b/lib/game/client/game-engine.js
@@ -4,7 +4,7 @@
*
*/
-const TemplateEngine = require('mustache');
+const TemplateEngineRender = require('mustache');
const { Game, Input } = require('phaser');
const { FPSCounter } = require('./fps-counter');
const { GameConst } = require('../constants');
@@ -24,7 +24,7 @@ class GameEngine extends Game
// - Extract the tab target methods into a new TabPlugin class.
// uiScene is where we will keep all the game UI elements:
this.uiScene = false;
- this.TemplateEngine = TemplateEngine;
+ this.TemplateEngine = TemplateEngineRender;
this.eventsManager = props.events;
this.eventsManager.on('reldens.beforeReconnectGameClient', () => {
this.clearTarget();
diff --git a/lib/game/client/game-manager.js b/lib/game/client/game-manager.js
index 72806f32b..cc9ce3580 100644
--- a/lib/game/client/game-manager.js
+++ b/lib/game/client/game-manager.js
@@ -76,16 +76,18 @@ class GameManager
body.classList.remove(GameConst.CLASSES.GAME_ERROR);
this.gameDom.getElement(GameConst.SELECTORS.FORMS_CONTAINER).remove();
this.gameDom.getElement(GameConst.SELECTORS.GAME_CONTAINER).classList.remove(GameConst.CLASSES.HIDDEN);
- }).catch((err) => {
+ }).catch((error) => {
body.classList.remove(GameConst.CLASSES.GAME_STARTED);
body.classList.add(GameConst.CLASSES.GAME_ERROR);
// @NOTE: game room errors should be always because some wrong login or registration data. For these cases
// we will check the isNewUser variable to know where display the error.
this.submitedForm = false;
if(errorElement){
- Logger.error(err);
- errorElement.innerHTML = err.message || err;
+ Logger.error(error);
+ errorElement.innerHTML = error.message || error;
}
+ this.events.emitSync('reldens.gameRoomError', this, error);
+ // @TODO - BETA - Move to firebase plugin with an event subscriber.
if(this.firebase && 'firebase-login' === formData.formId){
this.firebase.app.auth().signOut();
}
diff --git a/lib/game/constants.js b/lib/game/constants.js
index 375c7f8cd..e8cc0ede5 100644
--- a/lib/game/constants.js
+++ b/lib/game/constants.js
@@ -1,6 +1,6 @@
/**
*
- * Reldens - game/constants
+ * Reldens - GameConst
*
*/
@@ -48,14 +48,18 @@ module.exports.GameConst = {
DIST: 'dist',
THEME: 'theme',
LIB: 'lib',
+ SERVER: 'server',
+ CLIENT: 'client',
PLUGINS: 'plugins',
INDEX: 'index.html',
SCSS_FILE: 'styles.scss',
CSS_FILE: 'styles.css',
- ADMIN_SCSS_FILE: 'reldens-admin.scss',
- ADMIN_CSS_FILE: 'reldens-admin.css',
+ ADMIN: 'admin',
+ TEMPLATES: 'templates',
+ ADMIN_JS_FILE: 'reldens-admin-client.js',
+ ADMIN_SCSS_FILE: 'reldens-admin-client.scss',
+ ADMIN_CSS_FILE: 'reldens-admin-client.css',
INSTALLER_FOLDER: 'install',
- INSTALLER_INDEX: 'index.html',
INSTALL_LOCK: 'install.lock',
},
ROUTE_PATHS: {
diff --git a/lib/admin/server/upload-file/mime-types.js b/lib/game/mime-types.js
similarity index 100%
rename from lib/admin/server/upload-file/mime-types.js
rename to lib/game/mime-types.js
diff --git a/lib/game/properties-handler.js b/lib/game/properties-handler.js
new file mode 100644
index 000000000..5ef884482
--- /dev/null
+++ b/lib/game/properties-handler.js
@@ -0,0 +1,38 @@
+/**
+ *
+ * Reldens - PropertiesHandler
+ *
+ */
+
+const { Logger } = require('@reldens/utils');
+
+class PropertiesHandler
+{
+
+ constructor()
+ {
+ this.requiredProperties = [];
+ }
+
+ validate()
+ {
+ for(let i of this.requiredProperties){
+ if(!this[i]){
+ Logger.error('Missing "'+i+'" in "'+this.constructor.name+'".');
+ return false;
+ }
+ }
+ return true;
+ }
+
+ assignProperties(objectInstance)
+ {
+ for(let i of this.requiredProperties){
+ objectInstance[i] = this[i];
+ }
+ return objectInstance;
+ }
+
+}
+
+module.exports.PropertiesHandler = PropertiesHandler;
diff --git a/lib/game/server/app-server-factory.js b/lib/game/server/app-server-factory.js
index 6141932cc..e4a888edf 100644
--- a/lib/game/server/app-server-factory.js
+++ b/lib/game/server/app-server-factory.js
@@ -4,87 +4,91 @@
*
*/
+const { FileHandler } = require('./file-handler');
+const { HomepageLoader } = require('./homepage-loader');
const http = require('http');
const https = require('https');
-const fs = require('fs');
-const path = require('path');
const express = require('express');
+const bodyParser = require('body-parser');
+const session = require('express-session');
const rateLimit = require('express-rate-limit');
const cors = require('cors');
-const TemplateEngine = require('mustache');
-const { Logger, sc } = require('@reldens/utils');
-const { GameConst } = require('../constants');
+const multer = require('multer');
+const { Logger } = require('@reldens/utils');
class AppServerFactory
{
constructor()
{
- this.encoding = process.env.RELDENS_DEFAULT_ENCODING || 'utf8';
+ this.applicationFramework = express;
+ this.bodyParser = bodyParser;
+ this.session = session;
+ this.fileStorageManager = multer;
+ this.appServer = false;
+ this.app = express();
+ this.encoding = (process.env.RELDENS_DEFAULT_ENCODING || 'utf-8').toString();
+ this.useHttps = 1 === Number(process.env.RELDENS_EXPRESS_USE_HTTPS || 0);
+ this.passphrase = (process.env.RELDENS_EXPRESS_HTTPS_PASSPHRASE || '').toString();
+ this.httpsChain = (process.env.RELDENS_EXPRESS_HTTPS_CHAIN || '').toString();
+ this.keyPath = (process.env.RELDENS_EXPRESS_HTTPS_PRIVATE_KEY || '').toString();
+ this.certPath = (process.env.RELDENS_EXPRESS_HTTPS_CERT || '').toString();
+ this.windowMs = Number(process.env.RELDENS_EXPRESS_RATE_LIMIT_MS || 60000);
+ this.maxRequests = Number(process.env.RELDENS_EXPRESS_RATE_LIMIT_MAX_REQUESTS || 30);
}
-
createAppServer()
{
- // @TODO - BETA - Refactor this entire class.
- let appServer = false;
- let app = express();
- app.use(cors());
- app.use(express.json());
- // if https is not running then by default we will run on http:
- appServer = 1 === Number(process.env.RELDENS_EXPRESS_USE_HTTPS || 0)
- ? this.createHttpsServer(appServer, app)
- : http.createServer(app);
- return {app, appServer, express};
+ this.app.use(cors());
+ this.app.use(express.json());
+ this.app.use(bodyParser.urlencoded({extended: true}));
+ this.appServer = this.createServer();
+ // @TODO - BETA - Rename the class and use it as wrapper for the server and the associated services.
+ return {app: this.app, appServer: this.appServer, express};
}
- createHttpsServer(appServer, app)
+ createServer()
{
+ if(!this.useHttps){
+ return http.createServer(this.app);
+ }
+ let key = FileHandler.readFile(this.keyPath);
+ if(!key){
+ Logger.error('Key file not found: ' + this.keyPath);
+ return false;
+ }
+ let cert = FileHandler.readFile(this.certPath);
+ if(!cert){
+ Logger.error('Cert file not found: ' + this.certPath);
+ return false;
+ }
let credentials = {
- key: fs.readFileSync(process.env.RELDENS_EXPRESS_HTTPS_PRIVATE_KEY, this.encoding),
- cert: fs.readFileSync(process.env.RELDENS_EXPRESS_HTTPS_CERT, this.encoding)
+ key: key.toString(),
+ cert: cert.toString(),
+ passphrase: this.passphrase
};
- let httpsChain = (process.env.RELDENS_EXPRESS_HTTPS_CHAIN || '').toString();
- if('' !== httpsChain){
- credentials['ca'] = fs.readFileSync(httpsChain, this.encoding);
+ if('' !== this.httpsChain){
+ let ca = FileHandler.readFile(this.httpsChain);
+ if(ca){
+ credentials.ca = ca;
+ }
}
- credentials['passphrase'] = (process.env.RELDENS_EXPRESS_HTTPS_PASSPHRASE || '').toString();
- return https.createServer(credentials, app);
+ return https.createServer(credentials, this.app);
}
enableServeHome(app, distPath, initialConfiguration)
{
let limiter = rateLimit({
// default 60000 = 1 minute:
- windowMs: Number(process.env.RELDENS_EXPRESS_RATE_LIMIT_MS || 60000),
+ windowMs: this.windowMs,
// limit each IP to 30 requests per windowMs:
- max: Number(process.env.RELDENS_EXPRESS_RATE_LIMIT_MAX_REQUESTS || 30),
+ max: this.maxRequests,
});
app.post('/', limiter);
app.get('/', limiter);
- app.get('/', (req, res, next) => {
+ app.get('/', async (req, res, next) => {
if('/' === req._parsedUrl.pathname){
- let languageParam = (req.query.lang || '').toString();
- if('' !== languageParam){
- if(!sc.isValidIsoCode(languageParam)){
- Logger.error('Invalid selected language ISO code.');
- languageParam = '';
- }
- Logger.info('Selected language: '+languageParam);
- }
- let indexPath = path.join(distPath, languageParam+'-'+GameConst.STRUCTURE.INDEX);
- let defaultIndexPath = path.join(distPath, GameConst.STRUCTURE.INDEX);
- let filePath = '' !== languageParam && fs.existsSync(indexPath) ? indexPath : defaultIndexPath;
- Logger.info('Loading index: '+filePath);
- // @TODO - BETA - Move the rendering process outside this AppServerFactory.
- let html = fs.readFileSync(filePath, this.encoding);
- html = html.replace(
- '',
- ''
- );
- return res.send(TemplateEngine.render(html, {}));
+ return res.send(await HomepageLoader.loadContents(req.query?.lang, distPath, initialConfiguration));
}
next();
});
diff --git a/lib/game/server/file-handler.js b/lib/game/server/file-handler.js
index fd100130f..013023021 100644
--- a/lib/game/server/file-handler.js
+++ b/lib/game/server/file-handler.js
@@ -6,7 +6,7 @@
const path = require('path');
const fs = require('fs');
-const { Logger } = require('@reldens/utils');
+const { Logger, sc } = require('@reldens/utils');
class FileHandler
{
@@ -14,6 +14,7 @@ class FileHandler
constructor()
{
this.encoding = (process.env.RELDENS_DEFAULT_ENCODING || 'utf8');
+ this.sep = path.sep;
}
joinPaths(...args)
@@ -26,6 +27,16 @@ class FileHandler
return fs.existsSync(fullPath);
}
+ async deleteFile(filePath)
+ {
+ try {
+ let deleteFile = sc.isArray(filePath) ? this.joinPaths(...filePath) : filePath
+ await fs.promises.unlink(deleteFile);
+ } catch (err) {
+ // Logger.error(err);
+ }
+ }
+
removeFolder(folderPath)
{
try {
@@ -85,9 +96,39 @@ class FileHandler
}
}
- readFolder(folder)
+ async copyFile(from, to)
{
- return fs.readdirSync(folder);
+ let origin = sc.isArray(from) ? this.joinPaths(...from) : from;
+ let dest = sc.isArray(to) ? this.joinPaths(...to) : to;
+ try {
+ return await fs.promises.copyFile(origin, dest);
+ } catch (error) {
+ Logger.error(error.message);
+ return false;
+ }
+ }
+
+ extension(filePath)
+ {
+ return path.extname(filePath);
+ }
+
+ readFolder(folder, options)
+ {
+ return fs.readdirSync(folder, options);
+ }
+
+ fetchSubFoldersList(folder, options)
+ {
+ let files = fs.readdirSync(folder, options);
+ let subFolders = [];
+ for(let file of files){
+ let filePath = path.join(folder, file);
+ if(fs.lstatSync(filePath).isDirectory()){
+ subFolders.push(file);
+ }
+ }
+ return subFolders;
}
isFile(filePath)
@@ -109,7 +150,11 @@ class FileHandler
fetchFileJson(filePath)
{
- let importedJson = JSON.parse(this.fetchFileContents(filePath));
+ let fileContents = this.fetchFileContents(filePath);
+ if(!fileContents){
+ return false;
+ }
+ let importedJson = JSON.parse(fileContents);
if(!importedJson){
Logger.error('Can not parse data file.');
return false;
@@ -119,11 +164,7 @@ class FileHandler
fetchFileContents(filePath)
{
- if(!filePath){
- Logger.error('Missing data file.', filePath);
- return false;
- }
- let fileContent = fs.readFileSync(filePath, {encoding: this.encoding, flag: 'r'});
+ let fileContent = this.readFile(filePath);
if(!fileContent){
Logger.error('Can not read data file or file empty.', filePath);
return false;
@@ -131,6 +172,15 @@ class FileHandler
return fileContent;
}
+ readFile(filePath)
+ {
+ if(!filePath){
+ Logger.error('Missing data file.', filePath);
+ return false;
+ }
+ return fs.readFileSync(filePath, {encoding: this.encoding, flag: 'r'});
+ }
+
async updateFileContents(filePath, contents)
{
return fs.writeFileSync(fs.openSync(filePath, 'w+'), contents);
diff --git a/lib/game/server/homepage-loader.js b/lib/game/server/homepage-loader.js
new file mode 100644
index 000000000..7bc867664
--- /dev/null
+++ b/lib/game/server/homepage-loader.js
@@ -0,0 +1,45 @@
+/**
+ *
+ * Reldens - HomepageLoader
+ *
+ */
+
+const { FileHandler } = require('./file-handler');
+const { GameConst } = require('../constants');
+const { Logger, sc } = require('@reldens/utils');
+
+class HomepageLoader
+{
+
+ static async loadContents(requestLanguage, distPath, initialConfiguration)
+ {
+ let languageParam = (requestLanguage || '').toString();
+ if ('' !== languageParam) {
+ if (!sc.isValidIsoCode(languageParam)) {
+ Logger.error('Invalid selected language ISO code.');
+ languageParam = '';
+ }
+ Logger.info('Selected language: ' + languageParam);
+ }
+ let indexPath = FileHandler.joinPaths(distPath, languageParam + '-' + GameConst.STRUCTURE.INDEX);
+ let defaultIndexPath = FileHandler.joinPaths(distPath, GameConst.STRUCTURE.INDEX);
+ let filePath = '' !== languageParam && FileHandler.exists(indexPath) ? indexPath : defaultIndexPath;
+ Logger.info('Loading index: ' + filePath);
+ let html = FileHandler.readFile(filePath);
+ let configScriptContents = '';
+ if(!html){
+ Logger.error('File not found: ' + filePath);
+ return configScriptContents;
+ }
+ html = html.replace(
+ '',
+ configScriptContents
+ );
+ return html;
+ }
+
+}
+
+module.exports.HomepageLoader = HomepageLoader;
diff --git a/lib/game/server/install-templates/.env.dist b/lib/game/server/install-templates/.env.dist
index e3e2f1468..5173c7c3a 100644
--- a/lib/game/server/install-templates/.env.dist
+++ b/lib/game/server/install-templates/.env.dist
@@ -15,6 +15,7 @@ RELDENS_EXPRESS_HTTPS_PASSPHRASE={{&app-https-passphrase}}
# Admin:
RELDENS_ADMIN_SECURE_LOGIN={{&app-secure-admin}}
RELDENS_ADMIN_ROUTE_PATH={{&app-admin-path}}
+RELDENS_ADMIN_SECRET={{&app-admin-secret}}
RELDENS_HOT_PLUG={{&app-admin-hot-plug}}
# Colyseus Monitor:
RELDENS_MONITOR={{&app-monitor-enable}}
diff --git a/lib/game/server/installer.js b/lib/game/server/installer.js
index 12dcd0e57..2e6ad4a2c 100644
--- a/lib/game/server/installer.js
+++ b/lib/game/server/installer.js
@@ -10,7 +10,7 @@ const express = require('express');
const bodyParser = require('body-parser');
const session = require('express-session');
const crypto = require('crypto');
-const TemplateEngine = require('mustache');
+const TemplateEngine = require('./template-engine');
const { DriversMap } = require('./storage/drivers-map');
const { Logger, sc } = require('@reldens/utils');
diff --git a/lib/game/server/manager.js b/lib/game/server/manager.js
index 7877b9b4c..01c52bd3e 100644
--- a/lib/game/server/manager.js
+++ b/lib/game/server/manager.js
@@ -30,6 +30,7 @@ class ServerManager
app = false;
appServer = {};
gameServer = false;
+ events = false;
dataServerDriver = false;
dataServerConfig = {};
dataServer = false;
@@ -52,6 +53,7 @@ class ServerManager
this.dataServerDriver = dataServerDriver;
this.events = eventsManager || EventsManagerSingleton;
this.themeManager = new ThemeManager(config);
+ this.appServerFactory = AppServerFactory;
dotenv.config({debug: process.env.DEBUG, path: this.themeManager.envFilePath});
this.installer = new Installer({
themeManager: this.themeManager,
diff --git a/lib/game/server/template-engine.js b/lib/game/server/template-engine.js
new file mode 100644
index 000000000..920215e08
--- /dev/null
+++ b/lib/game/server/template-engine.js
@@ -0,0 +1,31 @@
+/**
+ *
+ * Reldens - TemplateEngine
+ *
+ */
+
+const TemplateEngineRender = require('mustache');
+const { FileHandler } = require('./file-handler');
+const { Logger } = require('@reldens/utils');
+
+class TemplateEngine
+{
+
+ static async render(content, params)
+ {
+ return await TemplateEngineRender.render(content, params);
+ }
+
+ static async renderFile(filePath, params)
+ {
+ let fileContent = FileHandler.fetchFileContents(filePath);
+ if(!fileContent){
+ Logger.error('File to be rendered not found.', {filePath});
+ return '';
+ }
+ return await this.render(fileContent, params);
+ }
+
+}
+
+module.exports.TemplateEngine = TemplateEngine;
diff --git a/lib/game/server/theme-manager.js b/lib/game/server/theme-manager.js
index 754416d85..99ff4c9aa 100644
--- a/lib/game/server/theme-manager.js
+++ b/lib/game/server/theme-manager.js
@@ -4,11 +4,12 @@
*
*/
-const TemplateEngine = require('mustache');
-const { Parcel } = require('@parcel/core');
+const { TemplatesList } = require('../../admin/server/templates-list');
const { FileHandler } = require('./file-handler');
-const { ErrorManager, Logger, sc } = require('@reldens/utils');
+const { TemplateEngine } = require('./template-engine');
const { GameConst } = require('../constants');
+const { Parcel } = require('@parcel/core');
+const { ErrorManager, Logger, sc } = require('@reldens/utils');
class ThemeManager
{
@@ -25,6 +26,7 @@ class ThemeManager
reldensModuleThemePluginsPath = '';
reldensModuleInstallerPath = '';
reldensModulePathInstallTemplatesFolder = '';
+ reldensModuleThemeAdminPath = '';
distPath = '';
assetsDistPath = '';
cssDistPath = '';
@@ -32,6 +34,7 @@ class ThemeManager
projectThemeName = GameConst.STRUCTURE.DEFAULT;
projectThemePath = '';
projectPluginsPath = '';
+ projectAdminPath = '';
projectAssetsPath = '';
projectCssPath = '';
projectIndexPath = '';
@@ -43,35 +46,36 @@ class ThemeManager
ErrorManager.error('Missing project property.');
}
this.encoding = (process.env.RELDENS_DEFAULT_ENCODING || 'utf8');
+ this.templateEngine = TemplateEngine;
+ this.adminTemplatesList = TemplatesList;
this.setupPaths(props);
}
setupPaths(props)
{
+ let structure = GameConst.STRUCTURE;
this.projectRoot = sc.get(props, 'projectRoot', '');
this.projectRootPackageJson = FileHandler.joinPaths(this.projectRoot, 'package.json');
this.envFilePath = FileHandler.joinPaths(this.projectRoot, '.env');
- this.installationLockPath = FileHandler.joinPaths(this.projectRoot, 'install.lock');
- this.projectThemeName = sc.get(props, 'projectThemeName', GameConst.STRUCTURE.DEFAULT);
+ this.installationLockPath = FileHandler.joinPaths(this.projectRoot, structure.INSTALL_LOCK);
+ this.projectThemeName = sc.get(props, 'projectThemeName', structure.DEFAULT);
this.reldensModulePath = FileHandler.joinPaths(this.projectRoot, 'node_modules', 'reldens');
- this.reldensModuleLibPath = FileHandler.joinPaths(this.reldensModulePath, GameConst.STRUCTURE.LIB);
- this.reldensModuleThemePath = FileHandler.joinPaths(this.reldensModulePath, GameConst.STRUCTURE.THEME);
- this.reldensModuleDefaultThemePath = FileHandler.joinPaths(this.reldensModuleThemePath, GameConst.STRUCTURE.DEFAULT);
+ this.reldensModuleLibPath = FileHandler.joinPaths(this.reldensModulePath, structure.LIB);
+ this.reldensModuleThemePath = FileHandler.joinPaths(this.reldensModulePath, structure.THEME);
+ this.reldensModuleDefaultThemePath = FileHandler.joinPaths(this.reldensModuleThemePath, structure.DEFAULT);
this.reldensModuleDefaultThemeAssetsPath = FileHandler.joinPaths(
this.reldensModuleDefaultThemePath,
- GameConst.STRUCTURE.ASSETS
- );
- this.reldensModuleThemePluginsPath = FileHandler.joinPaths(this.reldensModuleThemePath, GameConst.STRUCTURE.PLUGINS);
- this.reldensModuleInstallerPath = FileHandler.joinPaths(this.reldensModulePath, GameConst.STRUCTURE.INSTALLER_FOLDER);
- this.reldensModuleInstallerIndexPath = FileHandler.joinPaths(
- this.reldensModuleInstallerPath,
- GameConst.STRUCTURE.INSTALLER_INDEX
+ structure.ASSETS
);
+ this.reldensModuleThemePluginsPath = FileHandler.joinPaths(this.reldensModuleThemePath, structure.PLUGINS);
+ this.reldensModuleThemeAdminPath = FileHandler.joinPaths(this.reldensModuleThemePath, structure.ADMIN);
+ this.reldensModuleInstallerPath = FileHandler.joinPaths(this.reldensModulePath, structure.INSTALLER_FOLDER);
+ this.reldensModuleInstallerIndexPath = FileHandler.joinPaths(this.reldensModuleInstallerPath, structure.INDEX);
this.reldensModulePathInstallTemplatesFolder = FileHandler.joinPaths(
this.reldensModulePath,
- 'lib',
+ structure.LIB,
'game',
- 'server',
+ structure.SERVER,
'install-templates'
);
this.reldensModulePathInstallTemplateEnvDist = FileHandler.joinPaths(
@@ -82,17 +86,20 @@ class ThemeManager
this.reldensModulePathInstallTemplatesFolder,
'knexfile.js.dist'
);
- this.installerPath = FileHandler.joinPaths(this.projectRoot, GameConst.STRUCTURE.INSTALLER_FOLDER);
- this.installerPathIndex = FileHandler.joinPaths(this.installerPath, GameConst.STRUCTURE.INSTALLER_INDEX);
- this.distPath = FileHandler.joinPaths(this.projectRoot, GameConst.STRUCTURE.DIST);
- this.assetsDistPath = FileHandler.joinPaths(this.distPath, GameConst.STRUCTURE.ASSETS);
- this.cssDistPath = FileHandler.joinPaths(this.distPath, GameConst.STRUCTURE.CSS);
- this.themePath = FileHandler.joinPaths(this.projectRoot, GameConst.STRUCTURE.THEME);
+ this.installerPath = FileHandler.joinPaths(this.projectRoot, structure.INSTALLER_FOLDER);
+ this.installerPathIndex = FileHandler.joinPaths(this.installerPath, structure.INDEX);
+ this.themePath = FileHandler.joinPaths(this.projectRoot, structure.THEME);
+ this.projectAdminPath = FileHandler.joinPaths(this.themePath, structure.ADMIN);
+ this.projectAdminTemplatesPath = FileHandler.joinPaths(this.projectAdminPath, structure.TEMPLATES);
+ this.adminTemplates = this.mapTemplatesToPaths(this.adminTemplatesList, this.projectAdminTemplatesPath);
+ this.distPath = FileHandler.joinPaths(this.projectRoot, structure.DIST);
+ this.assetsDistPath = FileHandler.joinPaths(this.distPath, structure.ASSETS);
+ this.cssDistPath = FileHandler.joinPaths(this.distPath, structure.CSS);
this.projectThemePath = FileHandler.joinPaths(this.themePath, this.projectThemeName);
- this.projectPluginsPath = FileHandler.joinPaths(this.themePath, GameConst.STRUCTURE.PLUGINS);
- this.projectAssetsPath = FileHandler.joinPaths(this.projectThemePath, GameConst.STRUCTURE.ASSETS);
- this.projectCssPath = FileHandler.joinPaths(this.projectThemePath, GameConst.STRUCTURE.CSS);
- this.projectIndexPath = FileHandler.joinPaths(this.projectThemePath, GameConst.STRUCTURE.INDEX);
+ this.projectPluginsPath = FileHandler.joinPaths(this.themePath, structure.PLUGINS);
+ this.projectAssetsPath = FileHandler.joinPaths(this.projectThemePath, structure.ASSETS);
+ this.projectCssPath = FileHandler.joinPaths(this.projectThemePath, structure.CSS);
+ this.projectIndexPath = FileHandler.joinPaths(this.projectThemePath, structure.INDEX);
}
paths()
@@ -143,6 +150,7 @@ class ThemeManager
{
FileHandler.copyFolderSync(this.reldensModuleDefaultThemePath, this.projectThemePath);
FileHandler.copyFolderSync(this.reldensModuleThemePluginsPath, this.projectPluginsPath);
+ FileHandler.copyFolderSync(this.reldensModuleThemeAdminPath, this.projectAdminPath);
FileHandler.copyFolderSync(this.reldensModuleDefaultThemePath, this.distPath);
Logger.info('Install "default" theme:'
+'\n'+this.reldensModuleDefaultThemePath+' > '+this.projectThemePath
@@ -189,7 +197,7 @@ class ThemeManager
let fileContent = FileHandler.fetchFileContents(
FileHandler.joinPaths(this.reldensModuleThemePath, 'index.js.dist'),
);
- let parsedIndexContents = await TemplateEngine.render(
+ let parsedIndexContents = await this.templateEngine.render(
fileContent,
{yourThemeName: this.projectThemeName ?? 'default'}
);
@@ -218,21 +226,21 @@ class ThemeManager
);
}
- copyCustomAssets()
+ copyPackage()
{
- FileHandler.copyFolderSync(this.projectAssetsPath, this.assetsDistPath);
+ FileHandler.copyFolderSync(this.reldensModuleThemePluginsPath, this.projectPluginsPath);
Logger.info(
- 'Copied custom assets:'+
- '\n'+this.projectAssetsPath+' > '+this.assetsDistPath
+ 'Copied plugins:'+
+ '\n'+this.reldensModuleThemePluginsPath+' > '+this.projectPluginsPath
);
}
- copyPackage()
+ copyAdmin()
{
- FileHandler.copyFolderSync(this.reldensModuleThemePluginsPath, this.projectPluginsPath);
+ FileHandler.copyFolderSync(this.reldensModuleThemeAdminPath, this.projectAdminPath);
Logger.info(
- 'Copied plugins:'+
- '\n'+this.reldensModuleThemePluginsPath+' > '+this.projectPluginsPath
+ 'Copied admin:'+
+ '\n'+this.reldensModuleThemeAdminPath+' > '+this.projectAdminPath
);
}
@@ -249,14 +257,30 @@ class ThemeManager
}
}
- async buildAdminCss()
+ async buildAdminScripts()
{
- let bundler = this.createCssBundler(
- FileHandler.joinPaths(this.projectCssPath, GameConst.STRUCTURE.ADMIN_SCSS_FILE)
+ let jsSourceFile = FileHandler.joinPaths(this.projectAdminPath, GameConst.STRUCTURE.ADMIN_JS_FILE);
+ let bundler = this.createBrowserBundler(jsSourceFile);
+ try {
+ let { buildTime } = await bundler.run();
+ Logger.info('Built Admin JS in '+buildTime+'ms!', jsSourceFile);
+ } catch (err) {
+ Logger.critical({'Parcel diagnostics for error': sc.get(err, 'diagnostics', err)});
+ return false;
+ }
+ FileHandler.copyFileSyncIfDoesNotExist(
+ jsSourceFile,
+ FileHandler.joinPaths(this.distPath, GameConst.STRUCTURE.ADMIN_JS_FILE)
);
+ }
+
+ async buildAdminCss()
+ {
+ let scssSourceFile = FileHandler.joinPaths(this.projectAdminPath, GameConst.STRUCTURE.ADMIN_SCSS_FILE);
+ let bundler = this.createCssBundler(scssSourceFile);
try {
let { buildTime } = await bundler.run();
- Logger.info('Built Admin CSS in '+buildTime+'ms!');
+ Logger.info('Built Admin CSS in '+buildTime+'ms!', scssSourceFile);
} catch (err) {
Logger.critical({'Parcel diagnostics for error': sc.get(err, 'diagnostics', err)});
return false;
@@ -375,6 +399,7 @@ class ThemeManager
this.copyDefaultAssets();
this.copyDefaultTheme();
this.copyPackage();
+ this.copyAdmin();
}
async fullRebuild()
@@ -444,7 +469,7 @@ class ThemeManager
return false;
}
let fileContent = FileHandler.fetchFileContents(filePath);
- return await TemplateEngine.render(fileContent, params);
+ return await this.templateEngine.render(fileContent, params);
}
async createClientBundle()
@@ -498,6 +523,23 @@ class ThemeManager
data.targets.main = false;
await FileHandler.updateFileContents(jsonFile, JSON.stringify(data, null, 2));
Logger.info('File package.json updated successfully.', jsonFile);
+
+ }
+
+ mapTemplatesToPaths(templateList, path)
+ {
+ let result = {};
+ for(let templateName of Object.keys(templateList)){
+ if(sc.isObject(templateList[templateName])){
+ result[templateName] = this.mapTemplatesToPaths(
+ templateList[templateName],
+ FileHandler.joinPaths(path, templateName)
+ );
+ continue;
+ }
+ result[templateName] = FileHandler.joinPaths(path, templateList[templateName]);
+ }
+ return result;
}
}
diff --git a/lib/inventory/server/entities/inventory-entity.js b/lib/inventory/server/entities/inventory-entity.js
index 22b35faf9..ebba35088 100644
--- a/lib/inventory/server/entities/inventory-entity.js
+++ b/lib/inventory/server/entities/inventory-entity.js
@@ -35,18 +35,18 @@ class InventoryEntity extends EntityProperties
}
};
- let listPropertiesKeys = Object.keys(properties);
- let editPropertiesKeys = [...listPropertiesKeys];
-
- editPropertiesKeys.splice(editPropertiesKeys.indexOf('id'), 1);
-
- return Object.assign({
- listProperties: listPropertiesKeys,
- showProperties: Object.keys(properties),
- filterProperties: listPropertiesKeys,
- editProperties: editPropertiesKeys,
- properties
- }, extraProps);
+ let showProperties = Object.keys(properties);
+ let editProperties = [...showProperties];
+ editProperties.splice(editProperties.indexOf('id'), 1);
+
+ return {
+ showProperties,
+ editProperties,
+ listProperties: showProperties,
+ filterProperties: showProperties,
+ properties,
+ ...extraProps
+ };
}
}
diff --git a/lib/inventory/server/entities/item-entity.js b/lib/inventory/server/entities/item-entity.js
index 6518e65fa..421fbd926 100644
--- a/lib/inventory/server/entities/item-entity.js
+++ b/lib/inventory/server/entities/item-entity.js
@@ -12,10 +12,10 @@ class ItemEntity extends EntityProperties
static propertiesConfig(extraProps)
{
+ let titleProperty = 'key';
let properties = {
id: {},
- key: {
- isTitle: true,
+ [titleProperty]: {
isRequired: true
},
type: {
@@ -48,10 +48,10 @@ class ItemEntity extends EntityProperties
customData: {}
};
- let listPropertiesKeys = Object.keys(properties);
- let editPropertiesKeys = [...listPropertiesKeys];
-
- listPropertiesKeys = sc.removeFromArray(listPropertiesKeys, [
+ let showProperties = Object.keys(properties);
+ let listProperties = [...showProperties];
+ let editProperties = [...listProperties];
+ listProperties = sc.removeFromArray(listProperties, [
'description',
'qty_limit',
'uses_limit',
@@ -59,15 +59,17 @@ class ItemEntity extends EntityProperties
'execTimeOut',
'customData'
]);
- editPropertiesKeys.splice(editPropertiesKeys.indexOf('id'), 1);
+ editProperties.splice(editProperties.indexOf('id'), 1);
- return Object.assign({
- listProperties: listPropertiesKeys,
- showProperties: Object.keys(properties),
- filterProperties: listPropertiesKeys,
- editProperties: editPropertiesKeys,
- properties
- }, extraProps);
+ return {
+ showProperties,
+ editProperties,
+ listProperties,
+ filterProperties: listProperties,
+ properties,
+ titleProperty,
+ ...extraProps
+ };
}
}
diff --git a/lib/inventory/server/entities/item-group-entity.js b/lib/inventory/server/entities/item-group-entity.js
index 7221500a8..ac881f8ef 100644
--- a/lib/inventory/server/entities/item-group-entity.js
+++ b/lib/inventory/server/entities/item-group-entity.js
@@ -1,36 +1,42 @@
/**
*
- * Reldens - GroupEntity
+ * Reldens - ItemGroupEntity
*
*/
const { EntityProperties } = require('../../../game/server/entity-properties');
-const { AdminLocalProvider } = require('../../../admin/server/upload-file/admin-local-provider');
const { GroupHotPlugCallbacks } = require('../group-hot-plug-callbacks');
const { InventoryConst } = require('../../constants');
+const { AllowedFileTypes } = require('../../../game/allowed-file-types');
+const { FileHandler } = require('../../../game/server/file-handler');
const { sc } = require('@reldens/utils');
class ItemGroupEntity extends EntityProperties
{
- static propertiesDefinition()
+ static propertiesConfig(extraProps, projectConfig)
{
- return {
+ let titleProperty = 'label';
+ let bucket = FileHandler.joinPaths(projectConfig.bucketFullPath, 'assets', 'custom', 'groups');
+ let bucketPath = '/assets/custom/groups/';
+ let distFolder = FileHandler.joinPaths(projectConfig.distPath, 'assets', 'custom', 'groups');
+ let properties = {
id: {},
key: {
isRequired: true
},
- label: {
- isTitle: true,
+ [titleProperty]: {
isRequired: true
},
description: {},
files_name: {
isRequired: false,
- isArray: true
- },
- uploadedFile: {
- isVirtual: true
+ isArray: ',',
+ isUpload: true,
+ allowedTypes: AllowedFileTypes.IMAGE,
+ bucket,
+ bucketPath,
+ distFolder
},
sort: {
type: 'number'
@@ -44,48 +50,34 @@ class ItemGroupEntity extends EntityProperties
isRequired: true
}
};
- }
-
- static propertiesConfig(extraProps, projectConfig)
- {
- let properties = this.propertiesDefinition();
- let arrayColumns = {files_name: {splitBy: ','}};
-
let showProperties = Object.keys(properties);
let listProperties = [...showProperties];
- let filterProperties = [...showProperties];
let editProperties = [...showProperties];
-
- showProperties = sc.removeFromArray(showProperties, ['files_name']);
listProperties = sc.removeFromArray(listProperties, [
'files_name',
'description',
'items_limit',
'limit_per_item'
]);
- filterProperties = sc.removeFromArray(filterProperties, ['uploadedFile']);
- editProperties = sc.removeFromArray(editProperties, ['id', 'files_name']);
-
- let bucket = AdminLocalProvider.joinPath(projectConfig.bucketFullPath, 'assets', 'custom', 'groups');
- let distFolder = AdminLocalProvider.joinPath(projectConfig.distPath, 'assets', 'custom', 'groups');
-
+ editProperties = sc.removeFromArray(editProperties, ['id']);
let callbacks = {
// @NOTE: we use the update callback because that's when the file_name is updated with the upload plugin.
afterUpdate: GroupHotPlugCallbacks.afterUpdateCallback(projectConfig, bucket, distFolder),
beforeDelete: GroupHotPlugCallbacks.beforeDeleteCallback(projectConfig, bucket, distFolder)
};
- return Object.assign({
- listProperties,
+ return {
showProperties,
- filterProperties,
editProperties,
+ listProperties,
+ filterProperties: listProperties,
properties,
- features: [],
- arrayColumns,
- bucketPath: '/'+InventoryConst.GROUP_BUCKET+'/',
- callbacks
- }, extraProps);
+ titleProperty,
+ bucketPath: '/' + InventoryConst.GROUP_BUCKET + '/',
+ bucket,
+ callbacks,
+ ...extraProps
+ };
}
}
diff --git a/lib/inventory/server/entities/item-modifiers-entity.js b/lib/inventory/server/entities/item-modifiers-entity.js
index 04fbd9d70..9636da8e3 100644
--- a/lib/inventory/server/entities/item-modifiers-entity.js
+++ b/lib/inventory/server/entities/item-modifiers-entity.js
@@ -11,6 +11,7 @@ class ItemModifiersEntity extends EntityProperties
static propertiesConfig(extraProps)
{
+ let titleProperty = 'key';
let properties = {
id: {},
item_id: {
@@ -18,8 +19,7 @@ class ItemModifiersEntity extends EntityProperties
reference: 'items_item',
isRequired: true
},
- key: {
- isTitle: true,
+ [titleProperty]: {
isRequired: true
},
property_key: {
@@ -45,18 +45,19 @@ class ItemModifiersEntity extends EntityProperties
maxProperty: {}
};
- let listPropertiesKeys = Object.keys(properties);
- let editPropertiesKeys = [...listPropertiesKeys];
+ let showProperties = Object.keys(properties);
+ let editProperties = [...showProperties];
+ editProperties.splice(editProperties.indexOf('id'), 1);
- editPropertiesKeys.splice(editPropertiesKeys.indexOf('id'), 1);
-
- return Object.assign({
- listProperties: listPropertiesKeys,
- showProperties: Object.keys(properties),
- filterProperties: listPropertiesKeys,
- editProperties: editPropertiesKeys,
- properties
- }, extraProps);
+ return {
+ showProperties,
+ editProperties,
+ listProperties: showProperties,
+ filterProperties: showProperties,
+ properties,
+ titleProperty,
+ ...extraProps
+ };
}
}
diff --git a/lib/inventory/server/entities/item-types-entity.js b/lib/inventory/server/entities/item-types-entity.js
index 5d8aafc9d..9c6d0f22e 100644
--- a/lib/inventory/server/entities/item-types-entity.js
+++ b/lib/inventory/server/entities/item-types-entity.js
@@ -11,26 +11,27 @@ class ItemTypesEntity extends EntityProperties
static propertiesConfig(extraProps)
{
+ let titleProperty = 'key';
let properties = {
id: {},
- key: {
- isTitle: true,
+ [titleProperty]: {
isRequired: true
}
};
- let listPropertiesKeys = Object.keys(properties);
- let editPropertiesKeys = [...listPropertiesKeys];
-
- editPropertiesKeys.splice(editPropertiesKeys.indexOf('id'), 1);
-
- return Object.assign({
- listProperties: listPropertiesKeys,
- showProperties: Object.keys(properties),
- filterProperties: listPropertiesKeys,
- editProperties: editPropertiesKeys,
- properties
- }, extraProps);
+ let showProperties = Object.keys(properties);
+ let editProperties = [...showProperties];
+ editProperties.splice(editProperties.indexOf('id'), 1);
+
+ return {
+ showProperties,
+ editProperties,
+ listProperties: showProperties,
+ filterProperties: showProperties,
+ properties,
+ titleProperty,
+ ...extraProps
+ };
}
}
diff --git a/lib/inventory/server/group-hot-plug-callbacks.js b/lib/inventory/server/group-hot-plug-callbacks.js
index 45efd2a4a..3e210ef8e 100644
--- a/lib/inventory/server/group-hot-plug-callbacks.js
+++ b/lib/inventory/server/group-hot-plug-callbacks.js
@@ -4,7 +4,7 @@
*
*/
-const { AdminDistHelper } = require('../../admin/server/upload-file/admin-dist-helper');
+const { AdminDistHelper } = require('../../admin/server/admin-dist-helper');
const { GroupsDataGenerator } = require('@reldens/items-system');
const { GroupsDataRemover } = require('./groups-data-remover');
const { RoomsConst } = require('../../rooms/constants');
diff --git a/lib/objects/server/entities-translations.js b/lib/objects/server/entities-translations.js
index a12a21b75..7807c7bec 100644
--- a/lib/objects/server/entities-translations.js
+++ b/lib/objects/server/entities-translations.js
@@ -9,7 +9,7 @@ module.exports.entitiesTranslations = {
objects: 'Objects',
objects_animations: 'Animations',
objects_assets: 'Assets',
- objects_inventory: 'NPCs Inventories',
+ objectsInventory: 'NPCs Inventories',
objects_items_requirements: 'Trade Objects - Items Requirements',
objects_items_rewards: 'Trade Objects - Items Rewards',
objects_skills: 'Objects - Skills',
diff --git a/lib/objects/server/entities/objects-animations-entity.js b/lib/objects/server/entities/objects-animations-entity.js
index cdc680285..5ef83d5cf 100644
--- a/lib/objects/server/entities/objects-animations-entity.js
+++ b/lib/objects/server/entities/objects-animations-entity.js
@@ -11,6 +11,7 @@ class ObjectsAnimationsEntity extends EntityProperties
static propertiesConfig(extraProps)
{
+ let titleProperty = 'animationKey';
let properties = {
id: {},
object_id: {
@@ -18,8 +19,7 @@ class ObjectsAnimationsEntity extends EntityProperties
reference: 'objects',
isRequired: true
},
- animationKey: {
- isTitle: true,
+ [titleProperty]: {
isRequired: true
},
animationData: {
@@ -27,19 +27,21 @@ class ObjectsAnimationsEntity extends EntityProperties
}
};
- let listPropertiesKeys = Object.keys(properties);
- let editPropertiesKeys = [...listPropertiesKeys];
-
- listPropertiesKeys.splice(listPropertiesKeys.indexOf('animationData'), 1);
- editPropertiesKeys.splice(editPropertiesKeys.indexOf('id'), 1);
-
- return Object.assign({
- listProperties: listPropertiesKeys,
- showProperties: Object.keys(properties),
- filterProperties: listPropertiesKeys,
- editProperties: editPropertiesKeys,
- properties
- }, extraProps);
+ let showProperties = Object.keys(properties);
+ let listProperties = [...showProperties];
+ let editProperties = [...showProperties];
+ listProperties.splice(listProperties.indexOf('animationData'), 1);
+ editProperties.splice(editProperties.indexOf('id'), 1);
+
+ return {
+ showProperties,
+ editProperties,
+ listProperties,
+ filterProperties: listProperties,
+ properties,
+ titleProperty,
+ ...extraProps
+ };
}
}
diff --git a/lib/objects/server/entities/objects-assets-entity.js b/lib/objects/server/entities/objects-assets-entity.js
index b679a095b..d6bb9f361 100644
--- a/lib/objects/server/entities/objects-assets-entity.js
+++ b/lib/objects/server/entities/objects-assets-entity.js
@@ -5,7 +5,6 @@
*/
const { EntityProperties } = require('../../../game/server/entity-properties');
-const { sc } = require('@reldens/utils');
class ObjectsAssetsEntity extends EntityProperties
{
@@ -33,22 +32,20 @@ class ObjectsAssetsEntity extends EntityProperties
extra_params: {}
};
- let listPropertiesKeys = Object.keys(properties);
- let editPropertiesKeys = [...listPropertiesKeys];
-
- listPropertiesKeys = sc.removeFromArray(listPropertiesKeys, [
- 'file',
- 'extra_params'
- ]);
- editPropertiesKeys.splice(editPropertiesKeys.indexOf('id'), 1);
-
- return Object.assign({
- listProperties: listPropertiesKeys,
- showProperties: Object.keys(properties),
- filterProperties: listPropertiesKeys,
- editProperties: editPropertiesKeys,
- properties
- }, extraProps);
+ let showProperties = Object.keys(properties);
+ let listProperties = [...showProperties];
+ let editProperties = [...listProperties];
+ listProperties.splice(listProperties.indexOf('extra_params'), 1);
+ editProperties.splice(editProperties.indexOf('id'), 1);
+
+ return {
+ showProperties,
+ editProperties,
+ listProperties,
+ filterProperties: listProperties,
+ properties,
+ ...extraProps
+ };
}
}
diff --git a/lib/objects/server/entities/objects-entity.js b/lib/objects/server/entities/objects-entity.js
index e679e50d4..3ea4eb0c4 100644
--- a/lib/objects/server/entities/objects-entity.js
+++ b/lib/objects/server/entities/objects-entity.js
@@ -12,6 +12,7 @@ class ObjectsEntity extends EntityProperties
static propertiesConfig(extraProps)
{
+ let titleProperty = 'object_class_key';
let properties = {
id: {},
room_id: {
@@ -29,8 +30,7 @@ class ObjectsEntity extends EntityProperties
type: 'reference',
reference: 'objects_types'
},
- object_class_key: {
- isTitle: true,
+ [titleProperty]: {
isRequired: true
},
client_key: {
@@ -45,23 +45,25 @@ class ObjectsEntity extends EntityProperties
}
};
- let listPropertiesKeys = Object.keys(properties);
- let editPropertiesKeys = [...listPropertiesKeys];
-
- listPropertiesKeys = sc.removeFromArray(listPropertiesKeys, [
+ let showProperties = Object.keys(properties);
+ let listProperties = [...showProperties];
+ let editProperties = [...showProperties];
+ listProperties = sc.removeFromArray(listProperties, [
'client_key',
'private_params',
'client_params'
]);
- editPropertiesKeys.splice(editPropertiesKeys.indexOf('id'), 1);
+ editProperties.splice(editProperties.indexOf('id'), 1);
- return Object.assign({
- listProperties: listPropertiesKeys,
- showProperties: Object.keys(properties),
- filterProperties: listPropertiesKeys,
- editProperties: editPropertiesKeys,
- properties
- }, extraProps);
+ return {
+ showProperties,
+ editProperties,
+ listProperties,
+ filterProperties: listProperties,
+ properties,
+ titleProperty,
+ ...extraProps
+ };
}
}
diff --git a/lib/objects/server/entities/objects-inventory-entity.js b/lib/objects/server/entities/objects-inventory-entity.js
index 5974a0e32..99765bd15 100644
--- a/lib/objects/server/entities/objects-inventory-entity.js
+++ b/lib/objects/server/entities/objects-inventory-entity.js
@@ -35,18 +35,18 @@ class ObjectsInventoryEntity extends EntityProperties
}
};
- let listPropertiesKeys = Object.keys(properties);
- let editPropertiesKeys = [...listPropertiesKeys];
-
- editPropertiesKeys.splice(editPropertiesKeys.indexOf('id'), 1);
-
- return Object.assign({
- listProperties: listPropertiesKeys,
- showProperties: Object.keys(properties),
- filterProperties: listPropertiesKeys,
- editProperties: editPropertiesKeys,
- properties
- }, extraProps);
+ let showProperties = Object.keys(properties);
+ let editProperties = [...showProperties];
+ editProperties.splice(editProperties.indexOf('id'), 1);
+
+ return {
+ showProperties,
+ editProperties,
+ listProperties: showProperties,
+ filterProperties: showProperties,
+ properties,
+ ...extraProps
+ };
}
}
diff --git a/lib/objects/server/entities/objects-items-requirements-entity.js b/lib/objects/server/entities/objects-items-requirements-entity.js
index ca59f40ff..a1dffe8ed 100644
--- a/lib/objects/server/entities/objects-items-requirements-entity.js
+++ b/lib/objects/server/entities/objects-items-requirements-entity.js
@@ -33,18 +33,18 @@ class ObjectsItemsRequirementsEntity extends EntityProperties
}
};
- let listPropertiesKeys = Object.keys(properties);
- let editPropertiesKeys = [...listPropertiesKeys];
-
- editPropertiesKeys.splice(editPropertiesKeys.indexOf('id'), 1);
-
- return Object.assign({
- listProperties: listPropertiesKeys,
- showProperties: Object.keys(properties),
- filterProperties: listPropertiesKeys,
- editProperties: editPropertiesKeys,
- properties
- }, extraProps);
+ let showProperties = Object.keys(properties);
+ let editProperties = [...showProperties];
+ editProperties.splice(editProperties.indexOf('id'), 1);
+
+ return {
+ showProperties,
+ editProperties,
+ listProperties: showProperties,
+ filterProperties: showProperties,
+ properties,
+ ...extraProps
+ };
}
}
diff --git a/lib/objects/server/entities/objects-items-rewards-entity.js b/lib/objects/server/entities/objects-items-rewards-entity.js
index 1b72fbc98..5f96e2436 100644
--- a/lib/objects/server/entities/objects-items-rewards-entity.js
+++ b/lib/objects/server/entities/objects-items-rewards-entity.js
@@ -33,18 +33,18 @@ class ObjectsItemsRewardsEntity extends EntityProperties
}
};
- let listPropertiesKeys = Object.keys(properties);
- let editPropertiesKeys = [...listPropertiesKeys];
-
- editPropertiesKeys.splice(editPropertiesKeys.indexOf('id'), 1);
-
- return Object.assign({
- listProperties: listPropertiesKeys,
- showProperties: Object.keys(properties),
- filterProperties: listPropertiesKeys,
- editProperties: editPropertiesKeys,
- properties
- }, extraProps);
+ let showProperties = Object.keys(properties);
+ let editProperties = [...showProperties];
+ editProperties.splice(editProperties.indexOf('id'), 1);
+
+ return {
+ showProperties,
+ editProperties,
+ listProperties: showProperties,
+ filterProperties: showProperties,
+ properties,
+ ...extraProps
+ };
}
}
diff --git a/lib/objects/server/entities/objects-skills-entity.js b/lib/objects/server/entities/objects-skills-entity.js
index 61013b02e..ae3119fd1 100644
--- a/lib/objects/server/entities/objects-skills-entity.js
+++ b/lib/objects/server/entities/objects-skills-entity.js
@@ -30,18 +30,18 @@ class ObjectsSkillsEntity extends EntityProperties
}
};
- let listPropertiesKeys = Object.keys(properties);
- let editPropertiesKeys = [...listPropertiesKeys];
-
- editPropertiesKeys.splice(editPropertiesKeys.indexOf('id'), 1);
-
- return Object.assign({
- listProperties: listPropertiesKeys,
- showProperties: Object.keys(properties),
- filterProperties: listPropertiesKeys,
- editProperties: editPropertiesKeys,
- properties
- }, extraProps);
+ let showProperties = Object.keys(properties);
+ let editProperties = [...showProperties];
+ editProperties.splice(editProperties.indexOf('id'), 1);
+
+ return {
+ showProperties,
+ editProperties,
+ listProperties: showProperties,
+ filterProperties: showProperties,
+ properties,
+ ...extraProps
+ };
}
}
diff --git a/lib/objects/server/entities/objects-stats-entity.js b/lib/objects/server/entities/objects-stats-entity.js
index 219afc924..14f3bfe00 100644
--- a/lib/objects/server/entities/objects-stats-entity.js
+++ b/lib/objects/server/entities/objects-stats-entity.js
@@ -31,18 +31,18 @@ class ObjectsStatsEntity extends EntityProperties
}
};
- let listPropertiesKeys = Object.keys(properties);
- let editPropertiesKeys = [...listPropertiesKeys];
-
- editPropertiesKeys.splice(editPropertiesKeys.indexOf('id'), 1);
-
- return Object.assign({
- listProperties: listPropertiesKeys,
- showProperties: Object.keys(properties),
- filterProperties: listPropertiesKeys,
- editProperties: editPropertiesKeys,
- properties
- }, extraProps);
+ let showProperties = Object.keys(properties);
+ let editProperties = [...showProperties];
+ editProperties.splice(editProperties.indexOf('id'), 1);
+
+ return {
+ showProperties,
+ editProperties,
+ listProperties: showProperties,
+ filterProperties: showProperties,
+ properties,
+ ...extraProps
+ };
}
}
diff --git a/lib/objects/server/entities/objects-types-entity.js b/lib/objects/server/entities/objects-types-entity.js
index 75d12e16d..1bf2b0779 100644
--- a/lib/objects/server/entities/objects-types-entity.js
+++ b/lib/objects/server/entities/objects-types-entity.js
@@ -11,23 +11,25 @@ class ObjectsTypesEntity extends EntityProperties
static propertiesConfig(extraProps)
{
+ let titleProperty = 'key';
let properties = {
id: {},
- key: {}
+ [titleProperty]: {}
};
- let listPropertiesKeys = Object.keys(properties);
- let editPropertiesKeys = [...listPropertiesKeys];
-
- editPropertiesKeys.splice(editPropertiesKeys.indexOf('id'), 1);
-
- return Object.assign({
- listProperties: listPropertiesKeys,
- showProperties: Object.keys(properties),
- filterProperties: listPropertiesKeys,
- editProperties: editPropertiesKeys,
- properties
- }, extraProps);
+ let showProperties = Object.keys(properties);
+ let editProperties = [...showProperties];
+ editProperties.splice(editProperties.indexOf('id'), 1);
+
+ return {
+ showProperties,
+ editProperties,
+ listProperties: showProperties,
+ filterProperties: showProperties,
+ properties,
+ titleProperty,
+ ...extraProps
+ };
}
}
diff --git a/lib/objects/server/entities/target-options-entity.js b/lib/objects/server/entities/target-options-entity.js
index 8e309cf6e..71e84030f 100644
--- a/lib/objects/server/entities/target-options-entity.js
+++ b/lib/objects/server/entities/target-options-entity.js
@@ -11,24 +11,26 @@ class TargetOptionsEntity extends EntityProperties
static propertiesConfig(extraProps)
{
+ let titleProperty = 'target_key';
let properties = {
id: {},
- target_key: {},
+ [titleProperty]: {},
target_label: {}
};
- let listPropertiesKeys = Object.keys(properties);
- let editPropertiesKeys = [...listPropertiesKeys];
-
- editPropertiesKeys.splice(editPropertiesKeys.indexOf('id'), 1);
-
- return Object.assign({
- listProperties: listPropertiesKeys,
- showProperties: Object.keys(properties),
- filterProperties: listPropertiesKeys,
- editProperties: editPropertiesKeys,
- properties
- }, extraProps);
+ let showProperties = Object.keys(properties);
+ let editProperties = [...showProperties];
+ editProperties.splice(editProperties.indexOf('id'), 1);
+
+ return {
+ showProperties,
+ editProperties,
+ listProperties: showProperties,
+ filterProperties: showProperties,
+ properties,
+ titleProperty,
+ ...extraProps
+ };
}
}
diff --git a/lib/respawn/server/entities/respawn-entity.js b/lib/respawn/server/entities/respawn-entity.js
index c96fb456c..a33bc4839 100644
--- a/lib/respawn/server/entities/respawn-entity.js
+++ b/lib/respawn/server/entities/respawn-entity.js
@@ -11,6 +11,7 @@ class RespawnEntity extends EntityProperties
static propertiesConfig(extraProps)
{
+ let titleProperty = 'layer';
let properties = {
id: {},
object_id: {
@@ -26,25 +27,25 @@ class RespawnEntity extends EntityProperties
type: 'number',
isRequired: true
},
- layer: {
- isTitle: true,
+ [titleProperty]: {
isRequired: true
}
};
- let listPropertiesKeys = Object.keys(properties);
- let editPropertiesKeys = [...listPropertiesKeys];
-
- editPropertiesKeys.splice(editPropertiesKeys.indexOf('id'), 1);
-
- return Object.assign({
- listProperties: listPropertiesKeys,
- showProperties: Object.keys(properties),
- filterProperties: listPropertiesKeys,
- editProperties: editPropertiesKeys,
- properties
- }, extraProps);
+ let showProperties = Object.keys(properties);
+ let editProperties = [...showProperties];
+ editProperties.splice(editProperties.indexOf('id'), 1);
+
+ return {
+ showProperties,
+ editProperties,
+ listProperties: showProperties,
+ filterProperties: showProperties,
+ properties,
+ titleProperty,
+ ...extraProps
+ };
}
}
diff --git a/lib/rewards/server/entities-config.js b/lib/rewards/server/entities-config.js
index 070b6d085..7cd39da5d 100644
--- a/lib/rewards/server/entities-config.js
+++ b/lib/rewards/server/entities-config.js
@@ -13,10 +13,10 @@ let objectsConfig = {
icon: 'WatsonHealth3DSoftware'
};
-let entitiesConfig = {
+let entitiesConfig = (projectConfig) => { return {
rewards: RewardsEntity.propertiesConfig(objectsConfig),
rewardsModifiers: RewardsModifiersEntity.propertiesConfig(objectsConfig),
- dropsAnimations: DropsAnimationsEntity.propertiesConfig(objectsConfig)
-};
+ dropsAnimations: DropsAnimationsEntity.propertiesConfig(objectsConfig, projectConfig)
+}};
module.exports.entitiesConfig = entitiesConfig;
diff --git a/lib/rewards/server/entities/drops-animations-entity.js b/lib/rewards/server/entities/drops-animations-entity.js
index 0e632c5c0..8e4c348c9 100644
--- a/lib/rewards/server/entities/drops-animations-entity.js
+++ b/lib/rewards/server/entities/drops-animations-entity.js
@@ -5,20 +5,25 @@
*/
const { EntityProperties } = require('../../../game/server/entity-properties');
+const { AllowedFileTypes } = require('../../../game/allowed-file-types');
+const { FileHandler } = require('../../../game/server/file-handler');
const { sc } = require('@reldens/utils');
class DropsAnimationsEntity extends EntityProperties
{
- static propertiesConfig(extraProps)
+ static propertiesConfig(extraProps, projectConfig)
{
+ let bucket = FileHandler.joinPaths(projectConfig.bucketFullPath, 'assets', 'custom', 'sprites');
+ let bucketPath = '/assets/custom/sprites/';
+ let distFolder = FileHandler.joinPaths(projectConfig.distPath, 'assets', 'custom', 'sprites');
let properties = {
id: {
isId: true
},
- reward_id: {
+ item_id: {
type: 'reference',
- reference: 'rewards',
+ reference: 'items_item',
isRequired: true
},
asset_type: {
@@ -28,27 +33,30 @@ class DropsAnimationsEntity extends EntityProperties
isRequired: true
},
file: {
- isRequired: true
+ isRequired: true,
+ isUpload: true,
+ allowedTypes: AllowedFileTypes.IMAGE,
+ bucket,
+ bucketPath,
+ distFolder
},
extra_params: {}
};
- let listPropertiesKeys = Object.keys(properties);
- let editPropertiesKeys = [...listPropertiesKeys];
-
- listPropertiesKeys = sc.removeFromArray(listPropertiesKeys, [
- 'file',
- 'extra_params'
- ]);
- editPropertiesKeys.splice(editPropertiesKeys.indexOf('id'), 1);
+ let showProperties = Object.keys(properties);
+ let listProperties = [...showProperties];
+ let editProperties = [...showProperties];
+ listProperties = sc.removeFromArray(listProperties, ['extra_params']);
+ editProperties.splice(editProperties.indexOf('id'), 1);
- return Object.assign({
- listProperties: listPropertiesKeys,
- showProperties: Object.keys(properties),
- filterProperties: listPropertiesKeys,
- editProperties: editPropertiesKeys,
- properties
- }, extraProps);
+ return {
+ showProperties,
+ editProperties,
+ listProperties,
+ filterProperties: listProperties,
+ properties,
+ ...extraProps
+ };
}
}
diff --git a/lib/rewards/server/entities/rewards-entity.js b/lib/rewards/server/entities/rewards-entity.js
index a75cb174d..1eb15b21c 100644
--- a/lib/rewards/server/entities/rewards-entity.js
+++ b/lib/rewards/server/entities/rewards-entity.js
@@ -8,6 +8,7 @@ const { EntityProperties } = require('../../../game/server/entity-properties');
class RewardsEntity extends EntityProperties
{
+
static propertiesConfig(extraProps)
{
let properties = {
@@ -47,18 +48,18 @@ class RewardsEntity extends EntityProperties
}
};
- let listPropertiesKeys = Object.keys(properties);
- let editPropertiesKeys = [...listPropertiesKeys];
-
- editPropertiesKeys.splice(editPropertiesKeys.indexOf('id'), 1);
+ let showProperties = Object.keys(properties);
+ let editProperties = [...showProperties];
+ editProperties.splice(editProperties.indexOf('id'), 1);
- return Object.assign({
- listProperties: listPropertiesKeys,
- showProperties: Object.keys(properties),
- filterProperties: listPropertiesKeys,
- editProperties: editPropertiesKeys,
- properties
- }, extraProps);
+ return {
+ showProperties,
+ editProperties,
+ listProperties: showProperties,
+ filterProperties: showProperties,
+ properties,
+ ...extraProps
+ };
}
}
diff --git a/lib/rewards/server/entities/rewards-modifiers-entity.js b/lib/rewards/server/entities/rewards-modifiers-entity.js
index 24522b4b2..7a56c7686 100644
--- a/lib/rewards/server/entities/rewards-modifiers-entity.js
+++ b/lib/rewards/server/entities/rewards-modifiers-entity.js
@@ -9,17 +9,16 @@ const { sc } = require('@reldens/utils');
class RewardsModifiersEntity extends EntityProperties
{
+
static propertiesConfig(extraProps)
{
+ let titleProperty = 'key';
let properties = {
id: {},
- key: {
- type: 'string',
- isTitle: true,
+ [titleProperty]: {
isRequired: true
},
property_key: {
- type: 'string',
isRequired: true
},
operation: {
@@ -45,24 +44,26 @@ class RewardsModifiersEntity extends EntityProperties
maxProperty: {}
};
- let listPropertiesKeys = Object.keys(properties);
- let editPropertiesKeys = [...listPropertiesKeys];
-
- listPropertiesKeys = sc.removeFromArray(listPropertiesKeys, [
+ let showProperties = Object.keys(properties);
+ let listProperties = [...showProperties];
+ let editProperties = [...showProperties];
+ listProperties = sc.removeFromArray(listProperties, [
'minValue',
'maxValue',
'minProperty',
'maxProperty'
]);
- editPropertiesKeys.splice(editPropertiesKeys.indexOf('id'), 1);
+ editProperties.splice(editProperties.indexOf('id'), 1);
- return Object.assign({
- listProperties: listPropertiesKeys,
- showProperties: Object.keys(properties),
- filterProperties: listPropertiesKeys,
- editProperties: editPropertiesKeys,
- properties
- }, extraProps);
+ return {
+ showProperties,
+ editProperties,
+ listProperties,
+ filterProperties: listProperties,
+ properties,
+ titleProperty,
+ ...extraProps
+ };
}
}
diff --git a/lib/rooms/client/plugin.js b/lib/rooms/client/plugin.js
index f2e6a3010..d3bed26f8 100644
--- a/lib/rooms/client/plugin.js
+++ b/lib/rooms/client/plugin.js
@@ -23,29 +23,19 @@ class RoomsPlugin extends PluginInterface
Logger.error('EventsManager undefined in RoomsPlugin.');
}
this.events.on('reldens.beforeCreateEngine', (initialGameData, gameManager) => {
- let playersConfig = initialGameData.gameConfig.client.players;
- let multiConfig = sc.get(playersConfig, 'multiplePlayers', false);
- let playersCount = sc.isTrue(initialGameData, 'players') ? Object.keys(initialGameData.players).length : 0;
- if(initialGameData.roomSelection && ((multiConfig && multiConfig.enabled) || 0 === playersCount)){
+ let isRoomSelectionDisabled = gameManager.config.get('client/rooms/selection/allowOnLogin', false);
+ if(isRoomSelectionDisabled && initialGameData.roomSelection){
this.populateSceneSelector(initialGameData.roomSelection, gameManager);
}
});
- // @TODO - BETA - Make room selection available for single players login and guest users.
- this.events.on('reldens.onPreparePlayerSelectorFormSubmit', (
- usersPack,
- form,
- select,
- selectedPlayer,
- gameManager
- ) => {
- this.appendSelectedScene(gameManager, form);
+ this.events.on('reldens.onPrepareSinglePlayerSelectorFormSubmit', (event) => {
+ this.appendSelectedScene(event.gameManager, event.form);
});
- this.events.on('reldens.onPreparePlayerCreationFormSubmit', (
- usersPack,
- form,
- gameManager
- ) => {
- this.appendSelectedScene(gameManager, form);
+ this.events.on('reldens.onPreparePlayerSelectorFormSubmit', (event) => {
+ this.appendSelectedScene(event.gameManager, event.form);
+ });
+ this.events.on('reldens.onPreparePlayerCreationFormSubmit', (event) => {
+ this.appendSelectedScene(event.gameManager, event.form);
});
}
diff --git a/lib/rooms/server/entities/rooms-change-points-entity.js b/lib/rooms/server/entities/rooms-change-points-entity.js
index e37875478..115366438 100644
--- a/lib/rooms/server/entities/rooms-change-points-entity.js
+++ b/lib/rooms/server/entities/rooms-change-points-entity.js
@@ -30,18 +30,18 @@ class RoomsChangePointsEntity extends EntityProperties
},
};
- let listPropertiesKeys = Object.keys(properties);
- let editPropertiesKeys = [...listPropertiesKeys];
-
- editPropertiesKeys.splice(editPropertiesKeys.indexOf('id'), 1);
-
- return Object.assign({
- listProperties: listPropertiesKeys,
- showProperties: Object.keys(properties),
- filterProperties: listPropertiesKeys,
- editProperties: editPropertiesKeys,
- properties
- }, extraProps);
+ let showProperties = Object.keys(properties);
+ let editProperties = [...showProperties];
+ editProperties.splice(editProperties.indexOf('id'), 1);
+
+ return {
+ showProperties,
+ editProperties,
+ listProperties: showProperties,
+ filterProperties: showProperties,
+ properties,
+ ...extraProps
+ };
}
}
diff --git a/lib/rooms/server/entities/rooms-entity.js b/lib/rooms/server/entities/rooms-entity.js
index 0d30b9aa3..db5e1efb7 100644
--- a/lib/rooms/server/entities/rooms-entity.js
+++ b/lib/rooms/server/entities/rooms-entity.js
@@ -6,66 +6,62 @@
const { EntityProperties } = require('../../../game/server/entity-properties');
const { RoomsConst } = require('../../constants');
+const { AllowedFileTypes } = require('../../../game/allowed-file-types');
+const { FileHandler } = require('../../../game/server/file-handler');
const { sc } = require('@reldens/utils');
class RoomsEntity extends EntityProperties
{
- static propertiesDefinition()
+ static propertiesConfig(extraProps, projectConfig)
{
- return {
+ let titleProperty = 'name';
+ let bucket = FileHandler.joinPaths(projectConfig.bucketFullPath, 'assets', 'maps');
+ let bucketPath = '/assets/maps/';
+ let distFolder = FileHandler.joinPaths(projectConfig.distPath, 'assets', 'maps');
+ let properties = {
id: {},
- name: {
- isTitle: true,
+ [titleProperty]: {
isRequired: true
},
title: {
isRequired: true
},
map_filename: {
- isRequired: true
- },
- uploadedFile: {
- isVirtual: true,
+ isRequired: true,
+ isUpload: true,
+ allowedTypes: AllowedFileTypes.TEXT,
+ bucket,
+ bucketPath,
+ distFolder
},
scene_images: {
isRequired: true,
- // @TODO - BETA - Fix multiple images upload.
- // isArray: true
- },
- uploadedImagesFile: {
- isVirtual: true
+ isArray: ',',
+ isUpload: true,
+ allowedTypes: AllowedFileTypes.IMAGE,
+ bucket,
+ bucketPath,
+ distFolder
},
room_class_key: {}
};
- }
-
- static propertiesConfig(extraProps, projectConfig)
- {
- let properties = this.propertiesDefinition();
- // @TODO - BETA - Fix multiple images upload.
- let arrayColumns = {}; // {scene_images: {splitBy: ','}};
let showProperties = Object.keys(properties);
- let listProperties = [...showProperties];
- let filterProperties = [...showProperties];
let editProperties = [...showProperties];
+ editProperties = sc.removeFromArray(editProperties, ['id']);
- showProperties = sc.removeFromArray(showProperties, ['map_filename', 'scene_images', 'room_class_key']);
- listProperties = sc.removeFromArray(listProperties, ['map_filename', 'scene_images', 'room_class_key']);
- filterProperties = sc.removeFromArray(filterProperties, ['uploadedFile', 'uploadedImagesFile']);
- editProperties = sc.removeFromArray(editProperties, ['id', 'map_filename', 'scene_images']);
-
- return Object.assign({
- listProperties,
+ return {
showProperties,
- filterProperties,
editProperties,
+ listProperties: showProperties,
+ filterProperties: showProperties,
properties,
- features: [],
- arrayColumns,
- bucketPath: RoomsConst.MAPS_BUCKET+'/',
- }, extraProps);
+ titleProperty,
+ bucketPath: RoomsConst.MAPS_BUCKET + '/',
+ bucket,
+ ...extraProps
+ };
}
}
diff --git a/lib/rooms/server/entities/rooms-return-points-entity.js b/lib/rooms/server/entities/rooms-return-points-entity.js
index 23e6ef1fd..9fc1ea3a7 100644
--- a/lib/rooms/server/entities/rooms-return-points-entity.js
+++ b/lib/rooms/server/entities/rooms-return-points-entity.js
@@ -40,18 +40,18 @@ class RoomsReturnPointsEntity extends EntityProperties
},
};
- let listPropertiesKeys = Object.keys(properties);
- let editPropertiesKeys = [...listPropertiesKeys];
-
- editPropertiesKeys.splice(editPropertiesKeys.indexOf('id'), 1);
-
- return Object.assign({
- listProperties: listPropertiesKeys,
- showProperties: Object.keys(properties),
- filterProperties: listPropertiesKeys,
- editProperties: editPropertiesKeys,
- properties
- }, extraProps);
+ let showProperties = Object.keys(properties);
+ let editProperties = [...showProperties];
+ editProperties.splice(editProperties.indexOf('id'), 1);
+
+ return {
+ showProperties,
+ editProperties,
+ listProperties: showProperties,
+ filterProperties: showProperties,
+ properties,
+ ...extraProps
+ };
}
}
diff --git a/lib/rooms/server/models/objection-js/rooms-model.js b/lib/rooms/server/models/objection-js/rooms-model.js
index 37400c60c..c4310a826 100644
--- a/lib/rooms/server/models/objection-js/rooms-model.js
+++ b/lib/rooms/server/models/objection-js/rooms-model.js
@@ -48,7 +48,7 @@ class RoomsModel extends ObjectionJsRawModel
modelClass: RoomsReturnPointsModel,
join: {
from: this.tableName+'.id',
- to: RoomsReturnPointsModel.tableName+'.next_room_id'
+ to: RoomsReturnPointsModel.tableName+'.from_room_id'
}
}
};
diff --git a/lib/snippets/server/entities/locale-entity.js b/lib/snippets/server/entities/locale-entity.js
index d2be6df3d..8778fd0ef 100644
--- a/lib/snippets/server/entities/locale-entity.js
+++ b/lib/snippets/server/entities/locale-entity.js
@@ -11,10 +11,10 @@ class LocaleEntity extends EntityProperties
static propertiesConfig(extraProps)
{
+ let titleProperty = 'locale';
let properties = {
id: {},
- locale: {
- isTitle: true,
+ [titleProperty]: {
isRequired: true
},
language_code: {
@@ -25,18 +25,19 @@ class LocaleEntity extends EntityProperties
}
};
- let listPropertiesKeys = Object.keys(properties);
- let editPropertiesKeys = [...listPropertiesKeys];
-
- editPropertiesKeys.splice(editPropertiesKeys.indexOf('id'), 1);
-
- return Object.assign({
- listProperties: listPropertiesKeys,
- showProperties: Object.keys(properties),
- filterProperties: listPropertiesKeys,
- editProperties: editPropertiesKeys,
- properties
- }, extraProps);
+ let showProperties = Object.keys(properties);
+ let editProperties = [...showProperties];
+ editProperties.splice(editProperties.indexOf('id'), 1);
+
+ return {
+ showProperties,
+ editProperties,
+ listProperties: showProperties,
+ filterProperties: showProperties,
+ properties,
+ titleProperty,
+ ...extraProps
+ };
}
}
diff --git a/lib/snippets/server/entities/snippet-entity.js b/lib/snippets/server/entities/snippet-entity.js
index 1a7e15959..706cd84d7 100644
--- a/lib/snippets/server/entities/snippet-entity.js
+++ b/lib/snippets/server/entities/snippet-entity.js
@@ -26,18 +26,18 @@ class SnippetEntity extends EntityProperties
}
};
- let listPropertiesKeys = Object.keys(properties);
- let editPropertiesKeys = [...listPropertiesKeys];
-
- editPropertiesKeys.splice(editPropertiesKeys.indexOf('id'), 1);
-
- return Object.assign({
- listProperties: listPropertiesKeys,
- showProperties: Object.keys(properties),
- filterProperties: listPropertiesKeys,
- editProperties: editPropertiesKeys,
- properties
- }, extraProps);
+ let showProperties = Object.keys(properties);
+ let editProperties = [...showProperties];
+ editProperties.splice(editProperties.indexOf('id'), 1);
+
+ return {
+ showProperties,
+ editProperties,
+ listProperties: showProperties,
+ filterProperties: showProperties,
+ properties,
+ ...extraProps
+ };
}
}
diff --git a/lib/snippets/server/entities/users-locale-entity.js b/lib/snippets/server/entities/users-locale-entity.js
index f6b061ca1..9cbdb2c15 100644
--- a/lib/snippets/server/entities/users-locale-entity.js
+++ b/lib/snippets/server/entities/users-locale-entity.js
@@ -21,18 +21,18 @@ class UsersLocaleEntity extends EntityProperties
}
};
- let listPropertiesKeys = Object.keys(properties);
- let editPropertiesKeys = [...listPropertiesKeys];
-
- editPropertiesKeys.splice(editPropertiesKeys.indexOf('id'), 1);
-
- return Object.assign({
- listProperties: listPropertiesKeys,
- showProperties: Object.keys(properties),
- filterProperties: listPropertiesKeys,
- editProperties: editPropertiesKeys,
- properties
- }, extraProps);
+ let showProperties = Object.keys(properties);
+ let editProperties = [...showProperties];
+ editProperties.splice(editProperties.indexOf('id'), 1);
+
+ return {
+ showProperties,
+ editProperties,
+ listProperties: showProperties,
+ filterProperties: showProperties,
+ properties,
+ ...extraProps
+ };
}
}
diff --git a/lib/teams/server/entities/clan-entity.js b/lib/teams/server/entities/clan-entity.js
index f7ed95642..70333da24 100644
--- a/lib/teams/server/entities/clan-entity.js
+++ b/lib/teams/server/entities/clan-entity.js
@@ -11,6 +11,7 @@ class ClanEntity extends EntityProperties
static propertiesConfig(extraProps)
{
+ let titleProperty = 'name';
let properties = {
id: {},
owner_id: {
@@ -18,7 +19,7 @@ class ClanEntity extends EntityProperties
reference: 'players',
isRequired: true
},
- name: {
+ [titleProperty]: {
isRequired: true
},
points: {
@@ -27,17 +28,19 @@ class ClanEntity extends EntityProperties
level: {}
};
- let listPropertiesKeys = Object.keys(properties);
- let editPropertiesKeys = [...listPropertiesKeys];
- editPropertiesKeys.splice(editPropertiesKeys.indexOf('id'), 1);
+ let showProperties = Object.keys(properties);
+ let editProperties = [...showProperties];
+ editProperties.splice(editProperties.indexOf('id'), 1);
- return Object.assign({
- listProperties: listPropertiesKeys,
- showProperties: Object.keys(properties),
- filterProperties: listPropertiesKeys,
- editProperties: editPropertiesKeys,
- properties
- }, extraProps);
+ return {
+ showProperties,
+ editProperties,
+ listProperties: showProperties,
+ filterProperties: showProperties,
+ properties,
+ titleProperty,
+ ...extraProps
+ };
}
}
diff --git a/lib/teams/server/entities/clan-levels-entity.js b/lib/teams/server/entities/clan-levels-entity.js
index 841f4120a..ae6e57ed8 100644
--- a/lib/teams/server/entities/clan-levels-entity.js
+++ b/lib/teams/server/entities/clan-levels-entity.js
@@ -11,13 +11,14 @@ class ClanLevelsEntity extends EntityProperties
static propertiesConfig(extraProps)
{
+ let titleProperty = 'label';
let properties = {
id: {},
key: {
type: 'number',
isRequired: true
},
- label: {
+ [titleProperty]: {
isRequired: true
},
required_experience: {
@@ -26,17 +27,19 @@ class ClanLevelsEntity extends EntityProperties
}
};
- let listPropertiesKeys = Object.keys(properties);
- let editPropertiesKeys = [...listPropertiesKeys];
- editPropertiesKeys.splice(editPropertiesKeys.indexOf('id'), 1);
+ let showProperties = Object.keys(properties);
+ let editProperties = [...showProperties];
+ editProperties.splice(editProperties.indexOf('id'), 1);
- return Object.assign({
- listProperties: listPropertiesKeys,
- showProperties: Object.keys(properties),
- filterProperties: listPropertiesKeys,
- editProperties: editPropertiesKeys,
- properties
- }, extraProps);
+ return {
+ showProperties,
+ editProperties,
+ listProperties: showProperties,
+ filterProperties: showProperties,
+ properties,
+ titleProperty,
+ ...extraProps
+ };
}
}
diff --git a/lib/teams/server/entities/clan-levels-modifiers-entity.js b/lib/teams/server/entities/clan-levels-modifiers-entity.js
index fd652cb0d..d8938eb73 100644
--- a/lib/teams/server/entities/clan-levels-modifiers-entity.js
+++ b/lib/teams/server/entities/clan-levels-modifiers-entity.js
@@ -12,6 +12,7 @@ class ClanLevelsModifiersEntity extends EntityProperties
static propertiesConfig(extraProps)
{
+ let titleProperty = 'key';
let properties = {
id: {},
level_id: {
@@ -19,8 +20,7 @@ class ClanLevelsModifiersEntity extends EntityProperties
reference: 'clan_levels',
isRequired: true
},
- key: {
- isTitle: true,
+ [titleProperty]: {
isRequired: true
},
property_key: {
@@ -49,23 +49,24 @@ class ClanLevelsModifiersEntity extends EntityProperties
maxProperty: {},
};
- let listPropertiesKeys = Object.keys(properties);
- let editPropertiesKeys = [...listPropertiesKeys];
-
- listPropertiesKeys = sc.removeFromArray(listPropertiesKeys, [
+ let showProperties = Object.keys(properties);
+ let listProperties = [...showProperties];
+ let editProperties = [...showProperties];
+ listProperties = sc.removeFromArray(listProperties, [
'minValue',
'maxValue',
'minProperty',
'maxProperty'
]);
- editPropertiesKeys.splice(editPropertiesKeys.indexOf('id'), 1);
+ editProperties.splice(editProperties.indexOf('id'), 1);
return {
- listProperties: listPropertiesKeys,
- showProperties: Object.keys(properties),
- filterProperties: listPropertiesKeys,
- editProperties: editPropertiesKeys,
+ showProperties,
+ editProperties,
+ listProperties,
+ filterProperties: listProperties,
properties,
+ titleProperty,
...extraProps
};
}
diff --git a/lib/teams/server/entities/clan-members-entity.js b/lib/teams/server/entities/clan-members-entity.js
index 336f7ebc1..c8e3e47fc 100644
--- a/lib/teams/server/entities/clan-members-entity.js
+++ b/lib/teams/server/entities/clan-members-entity.js
@@ -25,17 +25,18 @@ class ClanMembersEntity extends EntityProperties
},
};
- let listPropertiesKeys = Object.keys(properties);
- let editPropertiesKeys = [...listPropertiesKeys];
- editPropertiesKeys.splice(editPropertiesKeys.indexOf('id'), 1);
+ let showProperties = Object.keys(properties);
+ let editProperties = [...showProperties];
+ editProperties.splice(editProperties.indexOf('id'), 1);
- return Object.assign({
- listProperties: listPropertiesKeys,
- showProperties: Object.keys(properties),
- filterProperties: listPropertiesKeys,
- editProperties: editPropertiesKeys,
- properties
- }, extraProps);
+ return {
+ showProperties,
+ editProperties,
+ listProperties: showProperties,
+ filterProperties: showProperties,
+ properties,
+ ...extraProps
+ };
}
}
diff --git a/lib/users/client/plugin.js b/lib/users/client/plugin.js
index f84031c66..f034a747b 100644
--- a/lib/users/client/plugin.js
+++ b/lib/users/client/plugin.js
@@ -51,12 +51,13 @@ class UsersPlugin extends PluginInterface
onBeforeCreateEngine(initialGameData, gameManager)
{
- let isMultiplayerEnabled = sc.isTrue(initialGameData.gameConfig.client.players.multiplePlayers, 'enabled');
+ let isMultiplayerEnabled = gameManager.config.get('client/players/multiplePlayers/enabled', false);
+ let isRoomSelectionDisabled = gameManager.config.get('client/rooms/selection/allowOnLogin', false);
let playerSelection = gameManager.gameDom.getElement('#player-selection');
// @TODO - BETA - If the player selection container doesn't exist we should create one.
let playersCount = sc.isTrue(initialGameData, 'players') ? Object.keys(initialGameData.players).length : 0;
// if multiplayer is disabled and the user already has a player then just allow the engine to be executed:
- if(0 < playersCount && !isMultiplayerEnabled){
+ if(0 < playersCount && !isMultiplayerEnabled && !isRoomSelectionDisabled){
// before return set the only player available:
initialGameData.player = initialGameData.players[0];
return;
@@ -64,6 +65,11 @@ class UsersPlugin extends PluginInterface
// for every other case we will stop the normal execution of the engine and show the selection/creation block:
gameManager.canInitEngine = false;
playerSelection.classList.remove('hidden');
+ // if multiplayer is enabled, the user already has a player it can only select the room:
+ if(!isMultiplayerEnabled && 1 === playersCount){
+ this.prepareSinglePlayerInput(playerSelection, initialGameData, gameManager);
+ return;
+ }
// if multiplayer is enabled and the user already has a player then set up the selector form:
if(isMultiplayerEnabled && 0 < playersCount){
this.preparePlayerSelector(playerSelection, initialGameData, gameManager);
@@ -71,6 +77,84 @@ class UsersPlugin extends PluginInterface
this.preparePlayerCreator(playerSelection, initialGameData, gameManager);
}
+ prepareSinglePlayerInput(playerSelection, initialGameData, gameManager)
+ {
+ // @TODO - BETA - Extract all this.
+ let form = gameManager.gameDom.getElement('#player-selector-form');
+ let player = initialGameData.player;
+ if(!form || !player){
+ Logger.error('Form or player not defined in prepareSinglePlayerInput.');
+ return false;
+ }
+ gameManager.gameDom.getElement('#player-select-element')?.remove();
+ let playerLabel = this.gameManager.services.translator.t(
+ UsersConst.SNIPPETS.OPTION_LABEL,
+ {
+ playerName: player.name,
+ currentLevel: player.currentLevel,
+ classPathLabel: player.currentClassPathLabel
+ }
+ );
+ let selectedPlayerHiddenInput = gameManager.gameDom.createElement('input');
+ selectedPlayerHiddenInput.type = 'hidden';
+ selectedPlayerHiddenInput.id = '#player-select-element';
+ selectedPlayerHiddenInput.value = player.id;
+ let playerLabelElement = gameManager.gameDom.createElement('div');
+ playerLabelElement.innerText = playerLabel;
+ form.append(selectedPlayerHiddenInput);
+ let playerSelectBox = gameManager.gameDom.getElement('.player-select-box');
+ playerSelectBox?.append(playerLabelElement);
+ form.addEventListener('submit', (e) => {
+ e.preventDefault();
+ playerSelection.classList.add('hidden');
+ this.submitSelectedPlayer(gameManager, form, selectedPlayerHiddenInput, player);
+ return false;
+ });
+ this.showAvatarContainer(gameManager, initialGameData, selectedPlayerHiddenInput);
+ form.classList.remove('hidden');
+ }
+
+ submitSelectedPlayer(gameManager, form, selectElement, player)
+ {
+ // @TODO - BETA - Extract all this.
+ gameManager.events.emitSync('reldens.onPrepareSinglePlayerSelectorFormSubmit', {
+ usersPlugin: this,
+ form,
+ selectElement,
+ player,
+ gameManager
+ });
+ gameManager.initEngine().catch((err) => {
+ Logger.error(err);
+ // @TODO - BETA - Add error handling here.
+ });
+ }
+
+ showAvatarContainer(gameManager, initialGameData, selectElement)
+ {
+ // @TODO - BETA - Extract all this.
+ let additionalInfoContainer = gameManager.gameDom.getElement('.player-selection-additional-info');
+ if(!additionalInfoContainer){
+ return;
+ }
+ if(!this.gameManager.config.getWithoutLogs('client/players/multiplePlayers/showAvatar', true)){
+ return;
+ }
+ let avatarContainer = gameManager.gameDom.createElement('div');
+ avatarContainer.className = 'avatar-container';
+ // @TODO - BETA - Refactor, extract all the styles and replace the avatar background by an element.
+ let avatar = gameManager.gameDom.createElement('div');
+ let avatarKey = initialGameData.player.avatarKey;
+ avatar.classList.add('class-path-select-avatar');
+ avatar.style.backgroundImage = `url('/assets/custom/sprites/${avatarKey}${GameConst.FILES.EXTENSIONS.PNG}')`;
+ let widthInPx = this.gameManager.config.getWithoutLogs('client/players/size/width', '0')+'px';
+ avatar.style.backgroundPositionX = '-'+widthInPx;
+ avatar.style.width = widthInPx;
+ avatar.style.height = this.gameManager.config.getWithoutLogs('client/players/size/height', '0')+'px';
+ avatarContainer.append(avatar);
+ additionalInfoContainer.append(avatarContainer);
+ }
+
preparePlayerSelector(playerSelection, initialGameData, gameManager)
{
let form = gameManager.gameDom.getElement('#player-selector-form');
@@ -85,13 +169,13 @@ class UsersPlugin extends PluginInterface
if(selectedPlayer){
playerSelection.classList.add('hidden');
gameManager.initialGameData.player = selectedPlayer;
- gameManager.events.emitSync('reldens.onPreparePlayerSelectorFormSubmit',
- this,
+ gameManager.events.emitSync('reldens.onPreparePlayerSelectorFormSubmit', {
+ usersPlugin: this,
form,
select,
selectedPlayer,
gameManager
- );
+ });
gameManager.initEngine().catch((err) => {
Logger.error(err);
});
@@ -114,15 +198,7 @@ class UsersPlugin extends PluginInterface
option.dataset.key = player.avatarKey;
select.append(option);
}
- let avatarContainer = gameManager.gameDom.getElement('.player-selection-additional-info');
- if(avatarContainer){
- let playersConfig = initialGameData.gameConfig.client.players;
- gameManager.getFeature('actions').playerSelector.appendAvatarOnSelector(
- select,
- avatarContainer,
- playersConfig
- );
- }
+ this.showAvatarContainer(gameManager, initialGameData, select);
form.classList.remove('hidden');
}
@@ -143,11 +219,11 @@ class UsersPlugin extends PluginInterface
return false;
}
gameManager.submitedForm = true;
- gameManager.events.emitSync('reldens.onPreparePlayerCreationFormSubmit',
- this,
+ gameManager.events.emitSync('reldens.onPreparePlayerCreationFormSubmit', {
+ usersPlugin: this,
form,
gameManager
- );
+ });
try {
gameManager.gameRoom.send('*', {act: GameConst.CREATE_PLAYER, formData: serializedForm});
} catch (error) {
diff --git a/lib/users/server/entities-translations.js b/lib/users/server/entities-translations.js
new file mode 100644
index 000000000..0bcf1b857
--- /dev/null
+++ b/lib/users/server/entities-translations.js
@@ -0,0 +1,16 @@
+/**
+ *
+ * Reldens - Entities Translations
+ *
+ */
+
+module.exports.entitiesTranslations = {
+ labels: {
+ users: 'Users',
+ usersLocale: 'Users Locale',
+ players: 'Players',
+ playerStats: 'Players Stats',
+ playerState: 'Players State',
+ stats: 'Stats'
+ }
+};
diff --git a/lib/users/server/entities/players-entity.js b/lib/users/server/entities/players-entity.js
index 9a16d8262..a90886b6e 100644
--- a/lib/users/server/entities/players-entity.js
+++ b/lib/users/server/entities/players-entity.js
@@ -5,16 +5,17 @@
*/
const { EntityProperties } = require('../../../game/server/entity-properties');
+const {sc} = require("@reldens/utils");
class PlayersEntity extends EntityProperties
{
static propertiesConfig(extraProps)
{
+ let titleProperty = 'name';
let properties = {
id: {},
- name: {
- isTitle: true,
+ [titleProperty]: {
isRequired: true
},
user_id: {
@@ -28,19 +29,19 @@ class PlayersEntity extends EntityProperties
}
};
- let listPropertiesKeys = Object.keys(properties);
- let editPropertiesKeys = [...listPropertiesKeys];
-
- editPropertiesKeys.splice(editPropertiesKeys.indexOf('id'), 1);
- editPropertiesKeys.splice(editPropertiesKeys.indexOf('created_at'), 1);
-
- return Object.assign({
- listProperties: listPropertiesKeys,
- showProperties: Object.keys(properties),
- filterProperties: listPropertiesKeys,
- editProperties: editPropertiesKeys,
- properties
- }, extraProps);
+ let showProperties = Object.keys(properties);
+ let editProperties = [...showProperties];
+ editProperties = sc.removeFromArray([...editProperties], ['id', 'created_at']);
+
+ return {
+ showProperties,
+ editProperties,
+ listProperties: showProperties,
+ filterProperties: showProperties,
+ properties,
+ titleProperty,
+ ...extraProps
+ };
}
}
diff --git a/lib/users/server/entities/players-state-entity.js b/lib/users/server/entities/players-state-entity.js
index 3444cba05..38da45b6c 100644
--- a/lib/users/server/entities/players-state-entity.js
+++ b/lib/users/server/entities/players-state-entity.js
@@ -5,6 +5,7 @@
*/
const { EntityProperties } = require('../../../game/server/entity-properties');
+const {sc} = require("@reldens/utils");
class PlayersStateEntity extends EntityProperties
{
@@ -36,19 +37,18 @@ class PlayersStateEntity extends EntityProperties
}
};
- let listPropertiesKeys = Object.keys(properties);
- let editPropertiesKeys = [...listPropertiesKeys];
-
- editPropertiesKeys.splice(editPropertiesKeys.indexOf('id'), 1);
- editPropertiesKeys.splice(editPropertiesKeys.indexOf('player_id'), 1);
-
- return Object.assign({
- listProperties: listPropertiesKeys,
- showProperties: Object.keys(properties),
- filterProperties: listPropertiesKeys,
- editProperties: editPropertiesKeys,
- properties
- }, extraProps);
+ let showProperties = Object.keys(properties);
+ let editProperties = [...showProperties];
+ editProperties = sc.removeFromArray([...editProperties], ['id', 'player_id']);
+
+ return {
+ showProperties,
+ editProperties,
+ listProperties: showProperties,
+ filterProperties: showProperties,
+ properties,
+ ...extraProps
+ };
}
}
diff --git a/lib/users/server/entities/players-stats-entity.js b/lib/users/server/entities/players-stats-entity.js
index fc3bcfa9d..7e406a675 100644
--- a/lib/users/server/entities/players-stats-entity.js
+++ b/lib/users/server/entities/players-stats-entity.js
@@ -34,20 +34,18 @@ class PlayersStatsEntity extends EntityProperties
},
};
- let listPropertiesKeys = Object.keys(properties);
- let editPropertiesKeys = sc.removeFromArray(listPropertiesKeys, [
- 'id',
- 'player_id',
- 'stat_id'
- ]);
+ let showProperties = Object.keys(properties);
+ let editProperties = [...showProperties];
+ editProperties = sc.removeFromArray(editProperties, ['id', 'player_id', 'stat_id']);
- return Object.assign({
- listProperties: listPropertiesKeys,
- showProperties: Object.keys(properties),
- filterProperties: listPropertiesKeys,
- editProperties: editPropertiesKeys,
- properties
- }, extraProps);
+ return {
+ showProperties,
+ editProperties,
+ listProperties: showProperties,
+ filterProperties: showProperties,
+ properties,
+ ...extraProps
+ };
}
}
diff --git a/lib/users/server/entities/stats-entity.js b/lib/users/server/entities/stats-entity.js
index 994898c82..790bbf953 100644
--- a/lib/users/server/entities/stats-entity.js
+++ b/lib/users/server/entities/stats-entity.js
@@ -12,13 +12,13 @@ class StatsEntity extends EntityProperties
static propertiesConfig(extraProps)
{
+ let titleProperty = 'label';
let properties = {
id: {},
key: {
isRequired: true
},
- label: {
- isTitle: true,
+ [titleProperty]: {
isRequired: true
},
description: {
@@ -31,22 +31,21 @@ class StatsEntity extends EntityProperties
customData: {},
};
- let listPropertiesKeys = Object.keys(properties);
- let editPropertiesKeys = [...listPropertiesKeys];
-
- listPropertiesKeys = sc.removeFromArray(listPropertiesKeys, [
- 'description',
- 'customData'
- ]);
- editPropertiesKeys.splice(editPropertiesKeys.indexOf('id'), 1);
-
- return Object.assign({
- listProperties: listPropertiesKeys,
- showProperties: Object.keys(properties),
- filterProperties: listPropertiesKeys,
- editProperties: editPropertiesKeys,
- properties
- }, extraProps);
+ let showProperties = Object.keys(properties);
+ let listProperties = [...showProperties];
+ let editProperties = [...showProperties];
+ listProperties = sc.removeFromArray(listProperties, ['description', 'customData']);
+ editProperties.splice(editProperties.indexOf('id'), 1);
+
+ return {
+ showProperties,
+ editProperties,
+ listProperties,
+ filterProperties: listProperties,
+ properties,
+ titleProperty,
+ ...extraProps
+ };
}
}
diff --git a/lib/users/server/entities/users-entity.js b/lib/users/server/entities/users-entity.js
index ef81946e6..1c04056c9 100644
--- a/lib/users/server/entities/users-entity.js
+++ b/lib/users/server/entities/users-entity.js
@@ -12,10 +12,10 @@ class UsersEntity extends EntityProperties
static propertiesConfig(extraProps)
{
+ let titleProperty = 'email';
let properties = {
id: {},
- email: {
- isTitle: true,
+ [titleProperty]: {
isRequired: true,
validate: {
isEmail: true
@@ -46,22 +46,20 @@ class UsersEntity extends EntityProperties
let showProperties = Object.keys(properties);
let listProperties = [...showProperties];
- let editProperties = sc.removeFromArray([...listProperties], [
- 'id',
- 'created_at',
- 'updated_at'
- ]);
-
+ let editProperties = [...showProperties];
+ editProperties = sc.removeFromArray(editProperties, ['id', 'created_at', 'updated_at']);
showProperties.splice(listProperties.indexOf('password'), 1);
listProperties.splice(listProperties.indexOf('password'), 1);
- return Object.assign({
- listProperties,
+ return {
showProperties,
- filterProperties: listProperties,
editProperties,
- properties
- }, extraProps);
+ listProperties,
+ filterProperties: listProperties,
+ properties,
+ titleProperty,
+ ...extraProps
+ };
}
}
diff --git a/lib/users/server/models/objection-js/registered-models-objection-js.js b/lib/users/server/models/objection-js/registered-models-objection-js.js
index 847ce8c2a..9ca8b94c4 100644
--- a/lib/users/server/models/objection-js/registered-models-objection-js.js
+++ b/lib/users/server/models/objection-js/registered-models-objection-js.js
@@ -10,6 +10,7 @@ const { PlayersModel } = require('./players-model');
const { PlayersStatsModel } = require('./players-stats-model');
const { PlayersStateModel } = require('./players-state-model');
const { entitiesConfig } = require('../../entities-config');
+const { entitiesTranslations } = require('../../entities-translations');
let rawRegisteredEntities = {
users: UsersModel,
@@ -22,3 +23,5 @@ let rawRegisteredEntities = {
module.exports.rawRegisteredEntities = rawRegisteredEntities;
module.exports.entitiesConfig = entitiesConfig;
+
+module.exports.entitiesTranslations = entitiesTranslations;
diff --git a/lib/world/server/physical-body.js b/lib/world/server/physical-body.js
index 519516eb3..0fa01f852 100644
--- a/lib/world/server/physical-body.js
+++ b/lib/world/server/physical-body.js
@@ -193,6 +193,10 @@ class PhysicalBody extends Body
simultaneousKeyPressMovement(direction, speed)
{
+ if(!this.world.applyGravity){
+ this.simultaneousMovementDiagonalSpeedFix(direction, speed);
+ return;
+ }
if(direction === GameConst.RIGHT){
this.validateAndSetDirection(direction, this.diagonalHorizontal, this.velocity[1]);
this.velocity[0] = speed;
@@ -205,12 +209,32 @@ class PhysicalBody extends Body
this.validateAndSetDirection(direction, !this.diagonalHorizontal, this.velocity[0]);
this.moveUp(speed);
}
+ }
+
+ simultaneousMovementDiagonalSpeedFix(direction, speed)
+ {
+ let dx = 0 === this.velocity[0] ? 0 : 0 > this.velocity[0] ? -1 : 1;
+ let dy = 0 === this.velocity[1] ? 0 : 0 > this.velocity[1] ? -1 : 1;
+ if(direction === GameConst.RIGHT){
+ dx = 1;
+ }
+ if(direction === GameConst.LEFT){
+ dx = -1;
+ }
+ if(direction === GameConst.UP){
+ dy = -1;
+ }
if(direction === GameConst.DOWN){
- if(this.world.applyGravity){
- return;
- }
+ dy = 1;
+ }
+ let normalization = this.normalizeSpeed(dx, dy);
+ this.velocity[0] = speed * dx * normalization;
+ this.velocity[1] = speed * dy * normalization;
+ if(direction === GameConst.RIGHT || direction === GameConst.LEFT){
+ this.validateAndSetDirection(direction, this.diagonalHorizontal, this.velocity[1]);
+ }
+ if(direction === GameConst.UP || direction === GameConst.DOWN){
this.validateAndSetDirection(direction, !this.diagonalHorizontal, this.velocity[0]);
- this.velocity[1] = speed;
}
}
@@ -229,6 +253,21 @@ class PhysicalBody extends Body
}, this.jumpTimeMs);
}
+ calculateMagnitude(x, y)
+ {
+ return Math.sqrt(Math.pow(x, 2) + Math.pow(y, 2));
+ }
+
+ checkNonZeroComponents(x, y)
+ {
+ return Math.abs(x) > 0 || Math.abs(y) > 0;
+ }
+
+ normalizeSpeed(x, y)
+ {
+ return this.checkNonZeroComponents(x, y) ? 1 / this.calculateMagnitude(x, y) : 0;
+ }
+
validateAndSetDirection(direction, diagonal, velocity)
{
if((this.animationBasedOnPress || this.bodyState.autoDirection) && (diagonal || 0 === velocity)){
diff --git a/migrations/development/beta.35-sql-update.sql b/migrations/development/beta.35-sql-update.sql
index fcbeb3c93..5f406d20e 100644
--- a/migrations/development/beta.35-sql-update.sql
+++ b/migrations/development/beta.35-sql-update.sql
@@ -94,13 +94,18 @@ ALTER TABLE `skills_class_path_level_skills`
ALTER TABLE `skills_class_path_level_skills`
DROP FOREIGN KEY `FK_skills_class_path_level_skills_skills_levels`;
+ALTER TABLE `skills_class_path`
+ ADD COLUMN `enabled` INT(10) UNSIGNED NOT NULL DEFAULT '0' AFTER `levels_set_id`;
+
+UPDATE `skills_class_path` SET `enabled` = 1;
+
-- Rooms:
UPDATE `rooms` SET `customData` = '{"allowGuest":true}' WHERE `name` IN ('reldens-house-1', 'reldens-town', 'reldens-forest');
UPDATE `rooms` SET `customData` = NULL WHERE `name` = 'reldens-house-1-2d-floor';
UPDATE `rooms` SET `customData` = '{"allowGuest":true,"gravity":[0,625],"applyGravity":true,"allowPassWallsFromBelow":true,"timeStep":0.012,"type":"TOP_DOWN_WITH_GRAVITY","useFixedWorldStep":false,"maxSubSteps":2,"movementSpeed":160,"usePathFinder":false}' WHERE `name` = 'reldens-gravity';
-- Rewards assets fix:
-UPDATE `objects_items_rewards_animations` SET `file` = CONCAT(`file`, '.png') WHERE `file` NOT LIKE '%.png';
+UPDATE `drops_animations` SET `file` = CONCAT(`file`, '.png') WHERE `file` NOT LIKE '%.png';
-- Items close inventory fix:
UPDATE items_item SET customData = JSON_REMOVE(customData, '$.animationData.closeInventoryOnUse') WHERE JSON_CONTAINS(customData, '{"animationData":{"closeInventoryOnUse":true}}');
diff --git a/migrations/production/reldens-basic-config-v4.0.0.sql b/migrations/production/reldens-basic-config-v4.0.0.sql
index 5bd37bfbb..8f8c29b69 100644
--- a/migrations/production/reldens-basic-config-v4.0.0.sql
+++ b/migrations/production/reldens-basic-config-v4.0.0.sql
@@ -332,7 +332,7 @@ REPLACE INTO `config` (`id`, `scope`, `path`, `value`, `type`) VALUES
(286, 'server', 'admin/faviconPath', '/assets/web/favicon.ico', 1),
(287, 'server', 'admin/logoPath', '/assets/web/reldens-your-logo-mage.png', 1),
(288, 'server', 'admin/roleId', '99', 2),
- (289, 'server', 'admin/stylesPath', '/css/reldens-admin.css', 1),
+ (289, 'server', 'admin/stylesPath', '/css/reldens-admin-client.css', 1),
(290, 'server', 'chat/messages/broadcast_join', '1', 3),
(291, 'server', 'chat/messages/broadcast_leave', '1', 3),
(292, 'server', 'chat/messages/global_allowed_roles', '1,9000', 1),
diff --git a/migrations/production/reldens-sample-data-v4.0.0.sql b/migrations/production/reldens-sample-data-v4.0.0.sql
index 3fdc09935..db8ba3d90 100644
--- a/migrations/production/reldens-sample-data-v4.0.0.sql
+++ b/migrations/production/reldens-sample-data-v4.0.0.sql
@@ -460,7 +460,7 @@ REPLACE INTO `config` (`id`, `scope`, `path`, `value`, `type`) VALUES
(286, 'server', 'admin/faviconPath', '/assets/web/favicon.ico', 1),
(287, 'server', 'admin/logoPath', '/assets/web/reldens-your-logo-mage.png', 1),
(288, 'server', 'admin/roleId', '99', 2),
- (289, 'server', 'admin/stylesPath', '/css/reldens-admin.css', 1),
+ (289, 'server', 'admin/stylesPath', '/css/reldens-admin-client.css', 1),
(290, 'server', 'chat/messages/broadcast_join', '1', 3),
(291, 'server', 'chat/messages/broadcast_leave', '1', 3),
(292, 'server', 'chat/messages/global_allowed_roles', '1,9000', 1),
diff --git a/package-lock.json b/package-lock.json
index fe6432486..1f0c3e7c7 100644
--- a/package-lock.json
+++ b/package-lock.json
@@ -1,68 +1,83 @@
{
"name": "reldens",
- "version": "4.0.0-beta.35",
+ "version": "4.0.0-beta.36",
"lockfileVersion": 2,
"requires": true,
"packages": {
"": {
"name": "reldens",
- "version": "4.0.0-beta.35",
+ "version": "4.0.0-beta.36",
"license": "MIT",
"dependencies": {
"@colyseus/monitor": "0.15.6",
- "@colyseus/schema": "2.0.32",
+ "@colyseus/schema": "2.0.34",
"@colyseus/ws-transport": "0.15.2",
- "@parcel/bundler-default": "2.11.0",
- "@parcel/compressor-raw": "2.11.0",
- "@parcel/config-default": "2.11.0",
- "@parcel/core": "2.11.0",
- "@parcel/namer-default": "2.11.0",
- "@parcel/optimizer-css": "2.11.0",
- "@parcel/optimizer-data-url": "2.11.0",
- "@parcel/optimizer-htmlnano": "2.11.0",
- "@parcel/optimizer-image": "2.11.0",
- "@parcel/optimizer-svgo": "2.11.0",
- "@parcel/optimizer-swc": "2.11.0",
- "@parcel/packager-css": "2.11.0",
- "@parcel/packager-html": "2.11.0",
- "@parcel/packager-js": "2.11.0",
- "@parcel/packager-raw": "2.11.0",
- "@parcel/packager-raw-url": "2.11.0",
- "@parcel/packager-svg": "2.11.0",
- "@parcel/packager-wasm": "2.11.0",
- "@parcel/reporter-dev-server": "2.11.0",
- "@parcel/resolver-default": "2.11.0",
- "@parcel/runtime-browser-hmr": "2.11.0",
- "@parcel/runtime-js": "2.11.0",
- "@parcel/runtime-react-refresh": "2.11.0",
- "@parcel/runtime-service-worker": "2.11.0",
- "@parcel/transformer-babel": "2.11.0",
- "@parcel/transformer-css": "2.11.0",
- "@parcel/transformer-html": "2.11.0",
- "@parcel/transformer-image": "2.11.0",
- "@parcel/transformer-inline-string": "2.11.0",
- "@parcel/transformer-js": "2.11.0",
- "@parcel/transformer-json": "2.11.0",
- "@parcel/transformer-postcss": "2.11.0",
- "@parcel/transformer-posthtml": "2.11.0",
- "@parcel/transformer-raw": "2.11.0",
- "@parcel/transformer-react-refresh-wrap": "2.11.0",
- "@parcel/transformer-sass": "2.11.0",
- "@parcel/transformer-svg": "2.11.0",
- "@parcel/transformer-webmanifest": "2.11.0",
- "@parcel/transformer-worklet": "2.11.0",
+ "@parcel/bundler-default": "2.12.0",
+ "@parcel/compressor-raw": "2.12.0",
+ "@parcel/core": "2.12.0",
+ "@parcel/namer-default": "2.12.0",
+ "@parcel/optimizer-css": "2.12.0",
+ "@parcel/optimizer-data-url": "2.12.0",
+ "@parcel/optimizer-htmlnano": "2.12.0",
+ "@parcel/optimizer-image": "2.12.0",
+ "@parcel/optimizer-svgo": "2.12.0",
+ "@parcel/optimizer-swc": "2.12.0",
+ "@parcel/packager-css": "2.12.0",
+ "@parcel/packager-html": "2.12.0",
+ "@parcel/packager-js": "2.12.0",
+ "@parcel/packager-raw": "2.12.0",
+ "@parcel/packager-raw-url": "2.12.0",
+ "@parcel/packager-svg": "2.12.0",
+ "@parcel/packager-ts": "2.12.0",
+ "@parcel/packager-wasm": "2.12.0",
+ "@parcel/packager-xml": "2.12.0",
+ "@parcel/reporter-dev-server": "2.12.0",
+ "@parcel/resolver-default": "2.12.0",
+ "@parcel/runtime-browser-hmr": "2.12.0",
+ "@parcel/runtime-js": "2.12.0",
+ "@parcel/runtime-react-refresh": "2.12.0",
+ "@parcel/runtime-service-worker": "2.12.0",
+ "@parcel/transformer-babel": "2.12.0",
+ "@parcel/transformer-coffeescript": "2.12.0",
+ "@parcel/transformer-css": "2.12.0",
+ "@parcel/transformer-elm": "2.12.0",
+ "@parcel/transformer-glsl": "2.12.0",
+ "@parcel/transformer-graphql": "2.12.0",
+ "@parcel/transformer-html": "2.12.0",
+ "@parcel/transformer-image": "2.12.0",
+ "@parcel/transformer-inline-string": "2.12.0",
+ "@parcel/transformer-js": "2.12.0",
+ "@parcel/transformer-json": "2.12.0",
+ "@parcel/transformer-jsonld": "2.12.0",
+ "@parcel/transformer-less": "2.12.0",
+ "@parcel/transformer-postcss": "2.12.0",
+ "@parcel/transformer-posthtml": "2.12.0",
+ "@parcel/transformer-pug": "2.12.0",
+ "@parcel/transformer-raw": "2.12.0",
+ "@parcel/transformer-react-refresh-wrap": "2.12.0",
+ "@parcel/transformer-sass": "2.12.0",
+ "@parcel/transformer-stylus": "2.12.0",
+ "@parcel/transformer-sugarss": "2.12.0",
+ "@parcel/transformer-svg": "2.12.0",
+ "@parcel/transformer-toml": "2.12.0",
+ "@parcel/transformer-typescript-types": "2.12.0",
+ "@parcel/transformer-vue": "2.12.0",
+ "@parcel/transformer-webmanifest": "2.12.0",
+ "@parcel/transformer-worklet": "2.12.0",
+ "@parcel/transformer-xml": "2.12.0",
+ "@parcel/transformer-yaml": "2.12.0",
"@reldens/game-data-generator": "^0.8.0",
"@reldens/items-system": "^0.27.0",
"@reldens/modifiers": "^0.22.0",
- "@reldens/skills": "^0.26.0",
- "@reldens/storage": "^0.24.0",
+ "@reldens/skills": "^0.27.0",
+ "@reldens/storage": "^0.25.0",
"@reldens/tile-map-generator": "^0.13.0",
- "@reldens/utils": "^0.32.0",
+ "@reldens/utils": "^0.33.0",
"@sendgrid/mail": "8.1.3",
"bcrypt": "5.1.1",
"body-parser": "1.20.2",
"colyseus": "0.15.17",
- "colyseus.js": "0.15.22",
+ "colyseus.js": "0.15.25",
"core-js": "3.37.1",
"cors": "2.8.5",
"dotenv": "16.4.5",
@@ -71,16 +86,17 @@
"express-formidable": "1.2.0",
"express-rate-limit": "7.3.0",
"express-session": "1.18.0",
- "firebase": "10.12.2",
+ "firebase": "10.12.3",
"firebaseui": "6.1.0",
"mime-types": "2.1.35",
+ "multer": "^1.4.5-lts.1",
"mustache": "4.2.0",
- "nodemailer": "6.9.13",
+ "nodemailer": "6.9.14",
"p2": "0.7.1",
"pathfinding": "0.4.18",
"phaser": "3.80.1",
"regenerator-runtime": "0.14.1",
- "tslib": "2.6.2"
+ "tslib": "2.6.3"
},
"bin": {
"reldens": "bin/reldens-commands.js",
@@ -93,89 +109,42 @@
}
},
"node_modules/@babel/code-frame": {
- "version": "7.22.13",
- "resolved": "https://registry.npmjs.org/@babel/code-frame/-/code-frame-7.22.13.tgz",
- "integrity": "sha512-XktuhWlJ5g+3TJXc5upd9Ks1HutSArik6jf2eAjYFyIOf4ej3RN+184cZbzDvbPnuTJIUhPKKJE3cIsYTiAT3w==",
+ "version": "7.24.7",
+ "resolved": "https://registry.npmjs.org/@babel/code-frame/-/code-frame-7.24.7.tgz",
+ "integrity": "sha512-BcYH1CVJBO9tvyIZ2jVeXgSIMvGZ2FDRvDdOIVQyuklNKSsx+eppDEBq/g47Ayw+RqNFE+URvOShmf+f/qwAlA==",
"dependencies": {
- "@babel/highlight": "^7.22.13",
- "chalk": "^2.4.2"
+ "@babel/highlight": "^7.24.7",
+ "picocolors": "^1.0.0"
},
"engines": {
"node": ">=6.9.0"
}
},
- "node_modules/@babel/code-frame/node_modules/ansi-styles": {
- "version": "3.2.1",
- "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-3.2.1.tgz",
- "integrity": "sha512-VT0ZI6kZRdTh8YyJw3SMbYm/u+NqfsAxEpWO0Pf9sq8/e94WxxOpPKx9FR1FlyCtOVDNOQ+8ntlqFxiRc+r5qA==",
- "dependencies": {
- "color-convert": "^1.9.0"
- },
- "engines": {
- "node": ">=4"
- }
- },
- "node_modules/@babel/code-frame/node_modules/chalk": {
- "version": "2.4.2",
- "resolved": "https://registry.npmjs.org/chalk/-/chalk-2.4.2.tgz",
- "integrity": "sha512-Mti+f9lpJNcwF4tWV8/OrTTtF1gZi+f8FqlyAdouralcFWFQWF2+NgCHShjkCb+IFBLq9buZwE1xckQU4peSuQ==",
- "dependencies": {
- "ansi-styles": "^3.2.1",
- "escape-string-regexp": "^1.0.5",
- "supports-color": "^5.3.0"
- },
- "engines": {
- "node": ">=4"
- }
- },
- "node_modules/@babel/code-frame/node_modules/color-convert": {
- "version": "1.9.3",
- "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-1.9.3.tgz",
- "integrity": "sha512-QfAUtd+vFdAtFQcC8CCyYt1fYWxSqAiK2cSD6zDB8N3cpsEBAvRxp9zOGg6G/SHHJYAT88/az/IuDGALsNVbGg==",
- "dependencies": {
- "color-name": "1.1.3"
- }
- },
- "node_modules/@babel/code-frame/node_modules/color-name": {
- "version": "1.1.3",
- "resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.3.tgz",
- "integrity": "sha512-72fSenhMw2HZMTVHeCA9KCmpEIbzWiQsjN+BHcBbS9vr1mtt+vJjPdksIBNUmKAW8TFUDPJK5SUU3QhE9NEXDw=="
- },
- "node_modules/@babel/code-frame/node_modules/has-flag": {
- "version": "3.0.0",
- "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-3.0.0.tgz",
- "integrity": "sha512-sKJf1+ceQBr4SMkvQnBDNDtf4TXpVhVGateu0t918bl30FnbE2m4vNLX+VWe/dpjlb+HugGYzW7uQXH98HPEYw==",
- "engines": {
- "node": ">=4"
- }
- },
- "node_modules/@babel/code-frame/node_modules/supports-color": {
- "version": "5.5.0",
- "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-5.5.0.tgz",
- "integrity": "sha512-QjVjwdXIt408MIiAqCX4oUKsgU2EqAGzs2Ppkm4aQYbjm+ZEWEcW4SfFNTr4uMNZma0ey4f5lgLrkB0aX0QMow==",
- "dependencies": {
- "has-flag": "^3.0.0"
- },
+ "node_modules/@babel/helper-string-parser": {
+ "version": "7.24.7",
+ "resolved": "https://registry.npmjs.org/@babel/helper-string-parser/-/helper-string-parser-7.24.7.tgz",
+ "integrity": "sha512-7MbVt6xrwFQbunH2DNQsAP5sTGxfqQtErvBIvIMi6EQnbgUOuVYanvREcmFrOPhoXBrTtjhhP+lW+o5UfK+tDg==",
"engines": {
- "node": ">=4"
+ "node": ">=6.9.0"
}
},
"node_modules/@babel/helper-validator-identifier": {
- "version": "7.22.20",
- "resolved": "https://registry.npmjs.org/@babel/helper-validator-identifier/-/helper-validator-identifier-7.22.20.tgz",
- "integrity": "sha512-Y4OZ+ytlatR8AI+8KZfKuL5urKp7qey08ha31L8b3BwewJAoJamTzyvxPR/5D+KkdJCGPq/+8TukHBlY10FX9A==",
+ "version": "7.24.7",
+ "resolved": "https://registry.npmjs.org/@babel/helper-validator-identifier/-/helper-validator-identifier-7.24.7.tgz",
+ "integrity": "sha512-rR+PBcQ1SMQDDyF6X0wxtG8QyLCgUB0eRAGguqRLfkCA87l7yAP7ehq8SNj96OOGTO8OBV70KhuFYcIkHXOg0w==",
"engines": {
"node": ">=6.9.0"
}
},
"node_modules/@babel/highlight": {
- "version": "7.22.20",
- "resolved": "https://registry.npmjs.org/@babel/highlight/-/highlight-7.22.20.tgz",
- "integrity": "sha512-dkdMCN3py0+ksCgYmGG8jKeGA/8Tk+gJwSYYlFGxG5lmhfKNoAy004YpLxpS1W2J8m/EK2Ew+yOs9pVRwO89mg==",
+ "version": "7.24.7",
+ "resolved": "https://registry.npmjs.org/@babel/highlight/-/highlight-7.24.7.tgz",
+ "integrity": "sha512-EStJpq4OuY8xYfhGVXngigBJRWxftKX9ksiGDnmlY3o7B/V7KIAc9X4oiK87uPJSc/vs5L869bem5fhZa8caZw==",
"dependencies": {
- "@babel/helper-validator-identifier": "^7.22.20",
+ "@babel/helper-validator-identifier": "^7.24.7",
"chalk": "^2.4.2",
- "js-tokens": "^4.0.0"
+ "js-tokens": "^4.0.0",
+ "picocolors": "^1.0.0"
},
"engines": {
"node": ">=6.9.0"
@@ -237,6 +206,46 @@
"node": ">=4"
}
},
+ "node_modules/@babel/parser": {
+ "version": "7.24.7",
+ "resolved": "https://registry.npmjs.org/@babel/parser/-/parser-7.24.7.tgz",
+ "integrity": "sha512-9uUYRm6OqQrCqQdG1iCBwBPZgN8ciDBro2nIOFaiRz1/BCxaI7CNvQbDHvsArAC7Tw9Hda/B3U+6ui9u4HWXPw==",
+ "bin": {
+ "parser": "bin/babel-parser.js"
+ },
+ "engines": {
+ "node": ">=6.0.0"
+ }
+ },
+ "node_modules/@babel/types": {
+ "version": "7.24.7",
+ "resolved": "https://registry.npmjs.org/@babel/types/-/types-7.24.7.tgz",
+ "integrity": "sha512-XEFXSlxiG5td2EJRe8vOmRbaXVgfcBlszKujvVmWIK/UpywWljQCfzAv3RQCGujWQ1RD4YYWEAqDXfuJiy8f5Q==",
+ "dependencies": {
+ "@babel/helper-string-parser": "^7.24.7",
+ "@babel/helper-validator-identifier": "^7.24.7",
+ "to-fast-properties": "^2.0.0"
+ },
+ "engines": {
+ "node": ">=6.9.0"
+ }
+ },
+ "node_modules/@choojs/findup": {
+ "version": "0.2.1",
+ "resolved": "https://registry.npmjs.org/@choojs/findup/-/findup-0.2.1.tgz",
+ "integrity": "sha512-YstAqNb0MCN8PjdLCDfRsBcGVRN41f3vgLvaI0IrIcBp4AqILRSS0DeWNGkicC+f/zRIPJLc+9RURVSepwvfBw==",
+ "dependencies": {
+ "commander": "^2.15.1"
+ },
+ "bin": {
+ "findup": "bin/findup.js"
+ }
+ },
+ "node_modules/@choojs/findup/node_modules/commander": {
+ "version": "2.20.3",
+ "resolved": "https://registry.npmjs.org/commander/-/commander-2.20.3.tgz",
+ "integrity": "sha512-GpVkmM8vF2vQUkj2LvZmD35JxeJOLCwJ9cUkugyk2nuhbv3+mJvpLYYt+0+USMxE+oj+ey/lJEnhZw75x/OMcQ=="
+ },
"node_modules/@colyseus/auth": {
"version": "0.15.10",
"resolved": "https://registry.npmjs.org/@colyseus/auth/-/auth-0.15.10.tgz",
@@ -314,9 +323,9 @@
}
},
"node_modules/@colyseus/schema": {
- "version": "2.0.32",
- "resolved": "https://registry.npmjs.org/@colyseus/schema/-/schema-2.0.32.tgz",
- "integrity": "sha512-Y5a3E4pjJK8tLPY4f0ur+/xeGBqysxKgMlumSR6JWXwX0SVIdk4o7IqFlKau8BkB6OVOwAP5SoPFSWO6/a2NwQ==",
+ "version": "2.0.34",
+ "resolved": "https://registry.npmjs.org/@colyseus/schema/-/schema-2.0.34.tgz",
+ "integrity": "sha512-bDQ9tLjoAgTEkjSl+RU1j5w3YIa7Y49OOh6YL48QpITwYhHjqgDw2mkOCOlQhJJxT46X/nOwIKuDiu5GVpNzyA==",
"bin": {
"schema-codegen": "bin/schema-codegen"
}
@@ -334,6 +343,58 @@
"@colyseus/schema": ">=1.0.0"
}
},
+ "node_modules/@elm_binaries/darwin_arm64": {
+ "version": "0.19.1-0",
+ "resolved": "https://registry.npmjs.org/@elm_binaries/darwin_arm64/-/darwin_arm64-0.19.1-0.tgz",
+ "integrity": "sha512-mjbsH7BNHEAmoE2SCJFcfk5fIHwFIpxtSgnEAqMsVLpBUFoEtAeX+LQ+N0vSFJB3WAh73+QYx/xSluxxLcL6dA==",
+ "cpu": [
+ "arm64"
+ ],
+ "optional": true,
+ "os": [
+ "darwin"
+ ],
+ "peer": true
+ },
+ "node_modules/@elm_binaries/darwin_x64": {
+ "version": "0.19.1-0",
+ "resolved": "https://registry.npmjs.org/@elm_binaries/darwin_x64/-/darwin_x64-0.19.1-0.tgz",
+ "integrity": "sha512-QGUtrZTPBzaxgi9al6nr+9313wrnUVHuijzUK39UsPS+pa+n6CmWyV/69sHZeX9qy6UfeugE0PzF3qcUiy2GDQ==",
+ "cpu": [
+ "x64"
+ ],
+ "optional": true,
+ "os": [
+ "darwin"
+ ],
+ "peer": true
+ },
+ "node_modules/@elm_binaries/linux_x64": {
+ "version": "0.19.1-0",
+ "resolved": "https://registry.npmjs.org/@elm_binaries/linux_x64/-/linux_x64-0.19.1-0.tgz",
+ "integrity": "sha512-T1ZrWVhg2kKAsi8caOd3vp/1A3e21VuCpSG63x8rDie50fHbCytTway9B8WHEdnBFv4mYWiA68dzGxYCiFmU2w==",
+ "cpu": [
+ "x64"
+ ],
+ "optional": true,
+ "os": [
+ "linux"
+ ],
+ "peer": true
+ },
+ "node_modules/@elm_binaries/win32_x64": {
+ "version": "0.19.1-0",
+ "resolved": "https://registry.npmjs.org/@elm_binaries/win32_x64/-/win32_x64-0.19.1-0.tgz",
+ "integrity": "sha512-yDleiXqSE9EcqKtd9SkC/4RIW8I71YsXzMPL79ub2bBPHjWTcoyyeBbYjoOB9SxSlArJ74HaoBApzT6hY7Zobg==",
+ "cpu": [
+ "x64"
+ ],
+ "optional": true,
+ "os": [
+ "win32"
+ ],
+ "peer": true
+ },
"node_modules/@emnapi/runtime": {
"version": "1.1.1",
"resolved": "https://registry.npmjs.org/@emnapi/runtime/-/runtime-1.1.1.tgz",
@@ -352,14 +413,14 @@
}
},
"node_modules/@firebase/analytics": {
- "version": "0.10.4",
- "resolved": "https://registry.npmjs.org/@firebase/analytics/-/analytics-0.10.4.tgz",
- "integrity": "sha512-OJEl/8Oye/k+vJ1zV/1L6eGpc1XzAj+WG2TPznJ7PszL7sOFLBXkL9IjHfOCGDGpXeO3btozy/cYUqv4zgNeHg==",
+ "version": "0.10.5",
+ "resolved": "https://registry.npmjs.org/@firebase/analytics/-/analytics-0.10.5.tgz",
+ "integrity": "sha512-d0X2ksTOKHMf5zFAMKFZWXa8hSbgohsG507xFsGhF4Uet2b8uEUL/YLrEth67jXEbGEi1UQZX4AaGBxKNiDzjw==",
"dependencies": {
- "@firebase/component": "0.6.7",
- "@firebase/installations": "0.6.7",
+ "@firebase/component": "0.6.8",
+ "@firebase/installations": "0.6.8",
"@firebase/logger": "0.4.2",
- "@firebase/util": "1.9.6",
+ "@firebase/util": "1.9.7",
"tslib": "^2.1.0"
},
"peerDependencies": {
@@ -367,14 +428,14 @@
}
},
"node_modules/@firebase/analytics-compat": {
- "version": "0.2.10",
- "resolved": "https://registry.npmjs.org/@firebase/analytics-compat/-/analytics-compat-0.2.10.tgz",
- "integrity": "sha512-ia68RcLQLLMFWrM10JfmFod7eJGwqr4/uyrtzHpTDnxGX/6gNCBTOuxdAbyWIqXI5XmcMQdz9hDijGKOHgDfPw==",
+ "version": "0.2.11",
+ "resolved": "https://registry.npmjs.org/@firebase/analytics-compat/-/analytics-compat-0.2.11.tgz",
+ "integrity": "sha512-wmXxJ49pEY7H549Pa4CDPOTzkPJnfG2Yolptg72ntTgSrbKVq+Eg9cAQY6Z5Kn9ATSQRX5oGXKlNfEk5DJBvvA==",
"dependencies": {
- "@firebase/analytics": "0.10.4",
+ "@firebase/analytics": "0.10.5",
"@firebase/analytics-types": "0.8.2",
- "@firebase/component": "0.6.7",
- "@firebase/util": "1.9.6",
+ "@firebase/component": "0.6.8",
+ "@firebase/util": "1.9.7",
"tslib": "^2.1.0"
},
"peerDependencies": {
@@ -387,25 +448,25 @@
"integrity": "sha512-EnzNNLh+9/sJsimsA/FGqzakmrAUKLeJvjRHlg8df1f97NLUlFidk9600y0ZgWOp3CAxn6Hjtk+08tixlUOWyw=="
},
"node_modules/@firebase/app": {
- "version": "0.10.5",
- "resolved": "https://registry.npmjs.org/@firebase/app/-/app-0.10.5.tgz",
- "integrity": "sha512-iY/fNot+hWPk9sTX8aHMqlcX9ynRvpGkskWAdUZ2eQQdLo8d1hSFYcYNwPv0Q/frGMasw8udKWMcFOEpC9fG8g==",
+ "version": "0.10.6",
+ "resolved": "https://registry.npmjs.org/@firebase/app/-/app-0.10.6.tgz",
+ "integrity": "sha512-/r8Ikp7TOrIIdp7v2adD2kg9SqIXMGOoJXJB1HsX7LjpjWdsoy1fMkP0HlI7GQqqRxDueHNhETx5Zn5E8HyVAQ==",
"dependencies": {
- "@firebase/component": "0.6.7",
+ "@firebase/component": "0.6.8",
"@firebase/logger": "0.4.2",
- "@firebase/util": "1.9.6",
+ "@firebase/util": "1.9.7",
"idb": "7.1.1",
"tslib": "^2.1.0"
}
},
"node_modules/@firebase/app-check": {
- "version": "0.8.4",
- "resolved": "https://registry.npmjs.org/@firebase/app-check/-/app-check-0.8.4.tgz",
- "integrity": "sha512-2tjRDaxcM5G7BEpytiDcIl+NovV99q8yEqRMKDbn4J4i/XjjuThuB4S+4PkmTnZiCbdLXQiBhkVxNlUDcfog5Q==",
+ "version": "0.8.5",
+ "resolved": "https://registry.npmjs.org/@firebase/app-check/-/app-check-0.8.5.tgz",
+ "integrity": "sha512-WyIckkVYAfnzsPIw6EAt/qBUANkUAVl6irF0xuJ1R9ISNyUT1h7dPAwvs/g3rsx0fpBWaHRAH0IFiN6zO6yLqQ==",
"dependencies": {
- "@firebase/component": "0.6.7",
+ "@firebase/component": "0.6.8",
"@firebase/logger": "0.4.2",
- "@firebase/util": "1.9.6",
+ "@firebase/util": "1.9.7",
"tslib": "^2.1.0"
},
"peerDependencies": {
@@ -413,15 +474,15 @@
}
},
"node_modules/@firebase/app-check-compat": {
- "version": "0.3.11",
- "resolved": "https://registry.npmjs.org/@firebase/app-check-compat/-/app-check-compat-0.3.11.tgz",
- "integrity": "sha512-t01zaH3RJpKEey0nGduz3Is+uSz7Sj4U5nwOV6lWb+86s5xtxpIvBJzu/lKxJfYyfZ29eJwpdjEgT1/lm4iQyA==",
+ "version": "0.3.12",
+ "resolved": "https://registry.npmjs.org/@firebase/app-check-compat/-/app-check-compat-0.3.12.tgz",
+ "integrity": "sha512-p/5w3pMih3JVT6u7g04KXgSZr6HDsQXyeWZkIe0+r71dPOlcKyUooe9/feTc8BWpjha3rUOkqQ7+JXZObwvYoQ==",
"dependencies": {
- "@firebase/app-check": "0.8.4",
+ "@firebase/app-check": "0.8.5",
"@firebase/app-check-types": "0.5.2",
- "@firebase/component": "0.6.7",
+ "@firebase/component": "0.6.8",
"@firebase/logger": "0.4.2",
- "@firebase/util": "1.9.6",
+ "@firebase/util": "1.9.7",
"tslib": "^2.1.0"
},
"peerDependencies": {
@@ -439,14 +500,14 @@
"integrity": "sha512-FSOEzTzL5bLUbD2co3Zut46iyPWML6xc4x+78TeaXMSuJap5QObfb+rVvZJtla3asN4RwU7elaQaduP+HFizDA=="
},
"node_modules/@firebase/app-compat": {
- "version": "0.2.35",
- "resolved": "https://registry.npmjs.org/@firebase/app-compat/-/app-compat-0.2.35.tgz",
- "integrity": "sha512-vgay/WRjeH0r97/Q6L6df2CMx7oyNFDsE5yPQ9oR1G+zx2eT0s8vNNh0WlKqQxUEWaOLRnXhQ8gy7uu0cBgTRg==",
+ "version": "0.2.36",
+ "resolved": "https://registry.npmjs.org/@firebase/app-compat/-/app-compat-0.2.36.tgz",
+ "integrity": "sha512-qsf+pllpgy1IGe2f5vfenOHSX8Cs58sVR5L6h/zBlNy9Yo54B2jy61KxLpSOgyRZb18IlnLLGjo7VtGU1CHvHA==",
"dependencies": {
- "@firebase/app": "0.10.5",
- "@firebase/component": "0.6.7",
+ "@firebase/app": "0.10.6",
+ "@firebase/component": "0.6.8",
"@firebase/logger": "0.4.2",
- "@firebase/util": "1.9.6",
+ "@firebase/util": "1.9.7",
"tslib": "^2.1.0"
}
},
@@ -456,13 +517,13 @@
"integrity": "sha512-oMEZ1TDlBz479lmABwWsWjzHwheQKiAgnuKxE0pz0IXCVx7/rtlkx1fQ6GfgK24WCrxDKMplZrT50Kh04iMbXQ=="
},
"node_modules/@firebase/auth": {
- "version": "1.7.4",
- "resolved": "https://registry.npmjs.org/@firebase/auth/-/auth-1.7.4.tgz",
- "integrity": "sha512-d2Fw17s5QesojwebrA903el20Li9/YGgkoOGJjagM4I1qAT36APa/FcZ+OX86KxbYKCtQKTMqraU8pxG7C2JWA==",
+ "version": "1.7.5",
+ "resolved": "https://registry.npmjs.org/@firebase/auth/-/auth-1.7.5.tgz",
+ "integrity": "sha512-DMFR1OA/f1/voeuFbSORg9AP36pMgOoSb/DRgiDalLmIJsDTlQNMCu+givjMP4s/XL85+tBk2MerYnK/AscJjw==",
"dependencies": {
- "@firebase/component": "0.6.7",
+ "@firebase/component": "0.6.8",
"@firebase/logger": "0.4.2",
- "@firebase/util": "1.9.6",
+ "@firebase/util": "1.9.7",
"tslib": "^2.1.0",
"undici": "5.28.4"
},
@@ -477,14 +538,14 @@
}
},
"node_modules/@firebase/auth-compat": {
- "version": "0.5.9",
- "resolved": "https://registry.npmjs.org/@firebase/auth-compat/-/auth-compat-0.5.9.tgz",
- "integrity": "sha512-RX8Zh/3zz2CsVbmYfgHkfUm4fAEPCl+KHVIImNygV5jTGDF6oKOhBIpf4Yigclyu8ESQKZ4elyN0MBYm9/7zGw==",
+ "version": "0.5.10",
+ "resolved": "https://registry.npmjs.org/@firebase/auth-compat/-/auth-compat-0.5.10.tgz",
+ "integrity": "sha512-epDhgNIXmhl9DPuTW9Ec5NDJJKMFIdXBXiQI9O0xNHveow/ETtBCY86srzF7iCacqsd30CcpLwwXlhk8Y19Olg==",
"dependencies": {
- "@firebase/auth": "1.7.4",
+ "@firebase/auth": "1.7.5",
"@firebase/auth-types": "0.12.2",
- "@firebase/component": "0.6.7",
- "@firebase/util": "1.9.6",
+ "@firebase/component": "0.6.8",
+ "@firebase/util": "1.9.7",
"tslib": "^2.1.0",
"undici": "5.28.4"
},
@@ -507,59 +568,59 @@
}
},
"node_modules/@firebase/component": {
- "version": "0.6.7",
- "resolved": "https://registry.npmjs.org/@firebase/component/-/component-0.6.7.tgz",
- "integrity": "sha512-baH1AA5zxfaz4O8w0vDwETByrKTQqB5CDjRls79Sa4eAGAoERw4Tnung7XbMl3jbJ4B/dmmtsMrdki0KikwDYA==",
+ "version": "0.6.8",
+ "resolved": "https://registry.npmjs.org/@firebase/component/-/component-0.6.8.tgz",
+ "integrity": "sha512-LcNvxGLLGjBwB0dJUsBGCej2fqAepWyBubs4jt1Tiuns7QLbXHuyObZ4aMeBjZjWx4m8g1LoVI9QFpSaq/k4/g==",
"dependencies": {
- "@firebase/util": "1.9.6",
+ "@firebase/util": "1.9.7",
"tslib": "^2.1.0"
}
},
"node_modules/@firebase/database": {
- "version": "1.0.5",
- "resolved": "https://registry.npmjs.org/@firebase/database/-/database-1.0.5.tgz",
- "integrity": "sha512-cAfwBqMQuW6HbhwI3Cb/gDqZg7aR0OmaJ85WUxlnoYW2Tm4eR0hFl5FEijI3/gYPUiUcUPQvTkGV222VkT7KPw==",
+ "version": "1.0.6",
+ "resolved": "https://registry.npmjs.org/@firebase/database/-/database-1.0.6.tgz",
+ "integrity": "sha512-nrexUEG/fpVlHtWKkyfhTC3834kZ1WS7voNyqbBsBCqHXQOvznN5Z0L3nxBqdXSJyltNAf4ndFlQqm5gZiEczQ==",
"dependencies": {
"@firebase/app-check-interop-types": "0.3.2",
"@firebase/auth-interop-types": "0.2.3",
- "@firebase/component": "0.6.7",
+ "@firebase/component": "0.6.8",
"@firebase/logger": "0.4.2",
- "@firebase/util": "1.9.6",
+ "@firebase/util": "1.9.7",
"faye-websocket": "0.11.4",
"tslib": "^2.1.0"
}
},
"node_modules/@firebase/database-compat": {
- "version": "1.0.5",
- "resolved": "https://registry.npmjs.org/@firebase/database-compat/-/database-compat-1.0.5.tgz",
- "integrity": "sha512-NDSMaDjQ+TZEMDMmzJwlTL05kh1+0Y84C+kVMaOmNOzRGRM7VHi29I6YUhCetXH+/b1Wh4ZZRyp1CuWkd8s6hg==",
+ "version": "1.0.6",
+ "resolved": "https://registry.npmjs.org/@firebase/database-compat/-/database-compat-1.0.6.tgz",
+ "integrity": "sha512-1OGA0sLY47mkXjhICCrUTXEYFnSSXoiXWm1SHsN62b+Lzs5aKA3aWTjTUmYIoK93kDAMPkYpulSv8jcbH4Hwew==",
"dependencies": {
- "@firebase/component": "0.6.7",
- "@firebase/database": "1.0.5",
- "@firebase/database-types": "1.0.3",
+ "@firebase/component": "0.6.8",
+ "@firebase/database": "1.0.6",
+ "@firebase/database-types": "1.0.4",
"@firebase/logger": "0.4.2",
- "@firebase/util": "1.9.6",
+ "@firebase/util": "1.9.7",
"tslib": "^2.1.0"
}
},
"node_modules/@firebase/database-types": {
- "version": "1.0.3",
- "resolved": "https://registry.npmjs.org/@firebase/database-types/-/database-types-1.0.3.tgz",
- "integrity": "sha512-39V/Riv2R3O/aUjYKh0xypj7NTNXNAK1bcgY5Kx+hdQPRS/aPTS8/5c0CGFYKgVuFbYlnlnhrCTYsh2uNhGwzA==",
+ "version": "1.0.4",
+ "resolved": "https://registry.npmjs.org/@firebase/database-types/-/database-types-1.0.4.tgz",
+ "integrity": "sha512-mz9ZzbH6euFXbcBo+enuJ36I5dR5w+enJHHjy9Y5ThCdKUseqfDjW3vCp1YxE9zygFCSjJJ/z1cQ+zodvUcwPQ==",
"dependencies": {
"@firebase/app-types": "0.9.2",
- "@firebase/util": "1.9.6"
+ "@firebase/util": "1.9.7"
}
},
"node_modules/@firebase/firestore": {
- "version": "4.6.3",
- "resolved": "https://registry.npmjs.org/@firebase/firestore/-/firestore-4.6.3.tgz",
- "integrity": "sha512-d/+N2iUsiJ/Dc7fApdpdmmTXzwuTCromsdA1lKwYfZtMIOd1fI881NSLwK2wV4I38wkLnvfKJUV6WpU1f3/ONg==",
+ "version": "4.6.4",
+ "resolved": "https://registry.npmjs.org/@firebase/firestore/-/firestore-4.6.4.tgz",
+ "integrity": "sha512-vk2MoH5HxYEhiNg1l+yBXq1Fkhue/11bFg4HdlTv6BJHcTnnAj2a+/afPpatcW4MOdYA3Tv+d5nGzWbbOC1SHw==",
"dependencies": {
- "@firebase/component": "0.6.7",
+ "@firebase/component": "0.6.8",
"@firebase/logger": "0.4.2",
- "@firebase/util": "1.9.6",
- "@firebase/webchannel-wrapper": "1.0.0",
+ "@firebase/util": "1.9.7",
+ "@firebase/webchannel-wrapper": "1.0.1",
"@grpc/grpc-js": "~1.9.0",
"@grpc/proto-loader": "^0.7.8",
"tslib": "^2.1.0",
@@ -573,14 +634,14 @@
}
},
"node_modules/@firebase/firestore-compat": {
- "version": "0.3.32",
- "resolved": "https://registry.npmjs.org/@firebase/firestore-compat/-/firestore-compat-0.3.32.tgz",
- "integrity": "sha512-at71mwK7a/mUXH0OgyY0+gUzedm/EUydDFYSFsBoO8DYowZ23Mgd6P4Rzq/Ll3zI/3xJN7LGe7Qp4iE/V/3Arg==",
+ "version": "0.3.33",
+ "resolved": "https://registry.npmjs.org/@firebase/firestore-compat/-/firestore-compat-0.3.33.tgz",
+ "integrity": "sha512-i42a2l31N95CwYEB7zmfK0FS1mrO6pwOLwxavCrwu1BCFrVVVQhUheTPIda/iGguK/2Nog0RaIR1bo7QkZEz3g==",
"dependencies": {
- "@firebase/component": "0.6.7",
- "@firebase/firestore": "4.6.3",
+ "@firebase/component": "0.6.8",
+ "@firebase/firestore": "4.6.4",
"@firebase/firestore-types": "3.0.2",
- "@firebase/util": "1.9.6",
+ "@firebase/util": "1.9.7",
"tslib": "^2.1.0"
},
"peerDependencies": {
@@ -597,15 +658,15 @@
}
},
"node_modules/@firebase/functions": {
- "version": "0.11.5",
- "resolved": "https://registry.npmjs.org/@firebase/functions/-/functions-0.11.5.tgz",
- "integrity": "sha512-qrHJ+l62mZiU5UZiVi84t/iLXZlhRuSvBQsa2qvNLgPsEWR7wdpWhRmVdB7AU8ndkSHJjGlMICqrVnz47sgU7Q==",
+ "version": "0.11.6",
+ "resolved": "https://registry.npmjs.org/@firebase/functions/-/functions-0.11.6.tgz",
+ "integrity": "sha512-GPfIBPtpwQvsC7SQbgaUjLTdja0CsNwMoKSgrzA1FGGRk4NX6qO7VQU6XCwBiAFWbpbQex6QWkSMsCzLx1uibQ==",
"dependencies": {
"@firebase/app-check-interop-types": "0.3.2",
"@firebase/auth-interop-types": "0.2.3",
- "@firebase/component": "0.6.7",
+ "@firebase/component": "0.6.8",
"@firebase/messaging-interop-types": "0.2.2",
- "@firebase/util": "1.9.6",
+ "@firebase/util": "1.9.7",
"tslib": "^2.1.0",
"undici": "5.28.4"
},
@@ -614,14 +675,14 @@
}
},
"node_modules/@firebase/functions-compat": {
- "version": "0.3.11",
- "resolved": "https://registry.npmjs.org/@firebase/functions-compat/-/functions-compat-0.3.11.tgz",
- "integrity": "sha512-Qn+ts/M6Lj2/6i1cp5V5TRR+Hi9kyXyHbo+w9GguINJ87zxrCe6ulx3TI5AGQkoQa8YFHUhT3DMGmLFiJjWTSQ==",
+ "version": "0.3.12",
+ "resolved": "https://registry.npmjs.org/@firebase/functions-compat/-/functions-compat-0.3.12.tgz",
+ "integrity": "sha512-r3XUb5VlITWpML46JymfJPkK6I9j4SNlO7qWIXUc0TUmkv0oAfVoiIt1F83/NuMZXaGr4YWA/794nVSy4GV8tw==",
"dependencies": {
- "@firebase/component": "0.6.7",
- "@firebase/functions": "0.11.5",
+ "@firebase/component": "0.6.8",
+ "@firebase/functions": "0.11.6",
"@firebase/functions-types": "0.6.2",
- "@firebase/util": "1.9.6",
+ "@firebase/util": "1.9.7",
"tslib": "^2.1.0"
},
"peerDependencies": {
@@ -634,12 +695,12 @@
"integrity": "sha512-0KiJ9lZ28nS2iJJvimpY4nNccV21rkQyor5Iheu/nq8aKXJqtJdeSlZDspjPSBBiHRzo7/GMUttegnsEITqR+w=="
},
"node_modules/@firebase/installations": {
- "version": "0.6.7",
- "resolved": "https://registry.npmjs.org/@firebase/installations/-/installations-0.6.7.tgz",
- "integrity": "sha512-i6iGoXRu5mX4rTsiMSSKrgh9pSEzD4hwBEzRh5kEhOTr8xN/wvQcCPZDSMVYKwM2XyCPBLVq0JzjyerwL0Rihg==",
+ "version": "0.6.8",
+ "resolved": "https://registry.npmjs.org/@firebase/installations/-/installations-0.6.8.tgz",
+ "integrity": "sha512-57V374qdb2+wT5v7+ntpLXBjZkO6WRgmAUbVkRfFTM/4t980p0FesbqTAcOIiM8U866UeuuuF8lYH70D3jM/jQ==",
"dependencies": {
- "@firebase/component": "0.6.7",
- "@firebase/util": "1.9.6",
+ "@firebase/component": "0.6.8",
+ "@firebase/util": "1.9.7",
"idb": "7.1.1",
"tslib": "^2.1.0"
},
@@ -648,14 +709,14 @@
}
},
"node_modules/@firebase/installations-compat": {
- "version": "0.2.7",
- "resolved": "https://registry.npmjs.org/@firebase/installations-compat/-/installations-compat-0.2.7.tgz",
- "integrity": "sha512-RPcbD+3nqHbnhVjIOpWK2H5qzZ8pAAAScceiWph0VNTqpKyPQ5tDcp4V5fS0ELpfgsHYvroMLDKfeHxpfvm8cw==",
+ "version": "0.2.8",
+ "resolved": "https://registry.npmjs.org/@firebase/installations-compat/-/installations-compat-0.2.8.tgz",
+ "integrity": "sha512-pI2q8JFHB7yIq/szmhzGSWXtOvtzl6tCUmyykv5C8vvfOVJUH6mP4M4iwjbK8S1JotKd/K70+JWyYlxgQ0Kpyw==",
"dependencies": {
- "@firebase/component": "0.6.7",
- "@firebase/installations": "0.6.7",
+ "@firebase/component": "0.6.8",
+ "@firebase/installations": "0.6.8",
"@firebase/installations-types": "0.5.2",
- "@firebase/util": "1.9.6",
+ "@firebase/util": "1.9.7",
"tslib": "^2.1.0"
},
"peerDependencies": {
@@ -679,14 +740,14 @@
}
},
"node_modules/@firebase/messaging": {
- "version": "0.12.9",
- "resolved": "https://registry.npmjs.org/@firebase/messaging/-/messaging-0.12.9.tgz",
- "integrity": "sha512-IH+JJmzbFGZXV3+TDyKdqqKPVfKRqBBg2BfYYOy7cm7J+SwV+uJMe8EnDKYeQLEQhtpwciPfJ3qQXJs2lbxDTw==",
+ "version": "0.12.10",
+ "resolved": "https://registry.npmjs.org/@firebase/messaging/-/messaging-0.12.10.tgz",
+ "integrity": "sha512-fGbxJPKpl2DIKNJGhbk4mYPcM+qE2gl91r6xPoiol/mN88F5Ym6UeRdMVZah+pijh9WxM55alTYwXuW40r1Y2Q==",
"dependencies": {
- "@firebase/component": "0.6.7",
- "@firebase/installations": "0.6.7",
+ "@firebase/component": "0.6.8",
+ "@firebase/installations": "0.6.8",
"@firebase/messaging-interop-types": "0.2.2",
- "@firebase/util": "1.9.6",
+ "@firebase/util": "1.9.7",
"idb": "7.1.1",
"tslib": "^2.1.0"
},
@@ -695,13 +756,13 @@
}
},
"node_modules/@firebase/messaging-compat": {
- "version": "0.2.9",
- "resolved": "https://registry.npmjs.org/@firebase/messaging-compat/-/messaging-compat-0.2.9.tgz",
- "integrity": "sha512-5jN6wyhwPgBH02zOtmmoOeyfsmoD7ty48D1m0vVPsFg55RqN2Z3Q9gkZ5GmPklFPjTPLcxB1ObcHOZvThTkm7g==",
+ "version": "0.2.10",
+ "resolved": "https://registry.npmjs.org/@firebase/messaging-compat/-/messaging-compat-0.2.10.tgz",
+ "integrity": "sha512-FXQm7rcowkDm8kFLduHV35IRYCRo+Ng0PIp/t1+EBuEbyplaKkGjZ932pE+owf/XR+G/60ku2QRBptRGLXZydg==",
"dependencies": {
- "@firebase/component": "0.6.7",
- "@firebase/messaging": "0.12.9",
- "@firebase/util": "1.9.6",
+ "@firebase/component": "0.6.8",
+ "@firebase/messaging": "0.12.10",
+ "@firebase/util": "1.9.7",
"tslib": "^2.1.0"
},
"peerDependencies": {
@@ -714,14 +775,14 @@
"integrity": "sha512-l68HXbuD2PPzDUOFb3aG+nZj5KA3INcPwlocwLZOzPp9rFM9yeuI9YLl6DQfguTX5eAGxO0doTR+rDLDvQb5tA=="
},
"node_modules/@firebase/performance": {
- "version": "0.6.7",
- "resolved": "https://registry.npmjs.org/@firebase/performance/-/performance-0.6.7.tgz",
- "integrity": "sha512-d+Q4ltjdJZqjzcdms5i0UC9KLYX7vKGcygZ+7zHA/Xk+bAbMD2CPU0nWTnlNFWifZWIcXZ/2mAMvaGMW3lypUA==",
+ "version": "0.6.8",
+ "resolved": "https://registry.npmjs.org/@firebase/performance/-/performance-0.6.8.tgz",
+ "integrity": "sha512-F+alziiIZ6Yn8FG47mxwljq+4XkgkT2uJIFRlkyViUQRLzrogaUJW6u/+6ZrePXnouKlKIwzqos3PVJraPEcCA==",
"dependencies": {
- "@firebase/component": "0.6.7",
- "@firebase/installations": "0.6.7",
+ "@firebase/component": "0.6.8",
+ "@firebase/installations": "0.6.8",
"@firebase/logger": "0.4.2",
- "@firebase/util": "1.9.6",
+ "@firebase/util": "1.9.7",
"tslib": "^2.1.0"
},
"peerDependencies": {
@@ -729,15 +790,15 @@
}
},
"node_modules/@firebase/performance-compat": {
- "version": "0.2.7",
- "resolved": "https://registry.npmjs.org/@firebase/performance-compat/-/performance-compat-0.2.7.tgz",
- "integrity": "sha512-cb8ge/5iTstxfIGW+iiY+7l3FtN8gobNh9JSQNZgLC9xmcfBYWEs8IeEWMI6S8T+At0oHc3lv+b2kpRMUWr8zQ==",
+ "version": "0.2.8",
+ "resolved": "https://registry.npmjs.org/@firebase/performance-compat/-/performance-compat-0.2.8.tgz",
+ "integrity": "sha512-o7TFClRVJd3VIBoY7KZQqtCeW0PC6v9uBzM6Lfw3Nc9D7hM6OonqecYvh7NwJ6R14k+xM27frLS4BcCvFHKw2A==",
"dependencies": {
- "@firebase/component": "0.6.7",
+ "@firebase/component": "0.6.8",
"@firebase/logger": "0.4.2",
- "@firebase/performance": "0.6.7",
+ "@firebase/performance": "0.6.8",
"@firebase/performance-types": "0.2.2",
- "@firebase/util": "1.9.6",
+ "@firebase/util": "1.9.7",
"tslib": "^2.1.0"
},
"peerDependencies": {
@@ -750,14 +811,14 @@
"integrity": "sha512-gVq0/lAClVH5STrIdKnHnCo2UcPLjJlDUoEB/tB4KM+hAeHUxWKnpT0nemUPvxZ5nbdY/pybeyMe8Cs29gEcHA=="
},
"node_modules/@firebase/remote-config": {
- "version": "0.4.7",
- "resolved": "https://registry.npmjs.org/@firebase/remote-config/-/remote-config-0.4.7.tgz",
- "integrity": "sha512-5oPNrPFLsbsjpq0lUEIXoDF2eJK7vAbyXe/DEuZQxnwJlfR7aQbtUlEkRgQWcicXpyDmAmDLo7q7lDbCYa6CpA==",
+ "version": "0.4.8",
+ "resolved": "https://registry.npmjs.org/@firebase/remote-config/-/remote-config-0.4.8.tgz",
+ "integrity": "sha512-AMLqe6wfIRnjc6FkCWOSUjhc1fSTEf8o+cv1NolFvbiJ/tU+TqN4pI7pT+MIKQzNiq5fxLehkOx+xtAQBxPJKQ==",
"dependencies": {
- "@firebase/component": "0.6.7",
- "@firebase/installations": "0.6.7",
+ "@firebase/component": "0.6.8",
+ "@firebase/installations": "0.6.8",
"@firebase/logger": "0.4.2",
- "@firebase/util": "1.9.6",
+ "@firebase/util": "1.9.7",
"tslib": "^2.1.0"
},
"peerDependencies": {
@@ -765,15 +826,15 @@
}
},
"node_modules/@firebase/remote-config-compat": {
- "version": "0.2.7",
- "resolved": "https://registry.npmjs.org/@firebase/remote-config-compat/-/remote-config-compat-0.2.7.tgz",
- "integrity": "sha512-Fq0oneQ4SluLnfr5/HfzRS1TZf1ANj1rWbCCW3+oC98An3nE+sCdp+FSuHsEVNwgMg4Tkwx9Oom2lkKeU+Vn+w==",
+ "version": "0.2.8",
+ "resolved": "https://registry.npmjs.org/@firebase/remote-config-compat/-/remote-config-compat-0.2.8.tgz",
+ "integrity": "sha512-UxSFOp6dzFj2AHB8Bq/BYtbq5iFyizKx4Rd6WxAdaKYM8cnPMeK+l2v+Oogtjae+AeyHRI+MfL2acsfVe5cd2A==",
"dependencies": {
- "@firebase/component": "0.6.7",
+ "@firebase/component": "0.6.8",
"@firebase/logger": "0.4.2",
- "@firebase/remote-config": "0.4.7",
+ "@firebase/remote-config": "0.4.8",
"@firebase/remote-config-types": "0.3.2",
- "@firebase/util": "1.9.6",
+ "@firebase/util": "1.9.7",
"tslib": "^2.1.0"
},
"peerDependencies": {
@@ -786,12 +847,12 @@
"integrity": "sha512-0BC4+Ud7y2aPTyhXJTMTFfrGGLqdYXrUB9sJVAB8NiqJswDTc4/2qrE/yfUbnQJhbSi6ZaTTBKyG3n1nplssaA=="
},
"node_modules/@firebase/storage": {
- "version": "0.12.5",
- "resolved": "https://registry.npmjs.org/@firebase/storage/-/storage-0.12.5.tgz",
- "integrity": "sha512-nGWBOGFNr10j0LA4NJ3/Yh3us/lb0Q1xSIKZ38N6FcS+vY54nqJ7k3zE3PENregHC8+8txRow++A568G3v8hOA==",
+ "version": "0.12.6",
+ "resolved": "https://registry.npmjs.org/@firebase/storage/-/storage-0.12.6.tgz",
+ "integrity": "sha512-Zgb9WuehJxzhj7pGXUvkAEaH+3HvLjD9xSZ9nepuXf5f8378xME7oGJtREr/RnepdDA5YW0XIxe0QQBNHpe1nw==",
"dependencies": {
- "@firebase/component": "0.6.7",
- "@firebase/util": "1.9.6",
+ "@firebase/component": "0.6.8",
+ "@firebase/util": "1.9.7",
"tslib": "^2.1.0",
"undici": "5.28.4"
},
@@ -800,14 +861,14 @@
}
},
"node_modules/@firebase/storage-compat": {
- "version": "0.3.8",
- "resolved": "https://registry.npmjs.org/@firebase/storage-compat/-/storage-compat-0.3.8.tgz",
- "integrity": "sha512-qDfY9kMb6Ch2hZb40sBjDQ8YPxbjGOxuT+gU1Z0iIVSSpSX0f4YpGJCypUXiA0T11n6InCXB+T/Dknh2yxVTkg==",
+ "version": "0.3.9",
+ "resolved": "https://registry.npmjs.org/@firebase/storage-compat/-/storage-compat-0.3.9.tgz",
+ "integrity": "sha512-WWgAp5bTW961oIsCc9+98m4MIVKpEqztAlIngfHfwO/x3DYoBPRl/awMRG3CAXyVxG+7B7oHC5IsnqM+vTwx2A==",
"dependencies": {
- "@firebase/component": "0.6.7",
- "@firebase/storage": "0.12.5",
+ "@firebase/component": "0.6.8",
+ "@firebase/storage": "0.12.6",
"@firebase/storage-types": "0.8.2",
- "@firebase/util": "1.9.6",
+ "@firebase/util": "1.9.7",
"tslib": "^2.1.0"
},
"peerDependencies": {
@@ -824,22 +885,22 @@
}
},
"node_modules/@firebase/util": {
- "version": "1.9.6",
- "resolved": "https://registry.npmjs.org/@firebase/util/-/util-1.9.6.tgz",
- "integrity": "sha512-IBr1MZbp4d5MjBCXL3TW1dK/PDXX4yOGbiwRNh1oAbE/+ci5Uuvy9KIrsFYY80as1I0iOaD5oOMA9Q8j4TJWcw==",
+ "version": "1.9.7",
+ "resolved": "https://registry.npmjs.org/@firebase/util/-/util-1.9.7.tgz",
+ "integrity": "sha512-fBVNH/8bRbYjqlbIhZ+lBtdAAS4WqZumx03K06/u7fJSpz1TGjEMm1ImvKD47w+xaFKIP2ori6z8BrbakRfjJA==",
"dependencies": {
"tslib": "^2.1.0"
}
},
"node_modules/@firebase/vertexai-preview": {
- "version": "0.0.2",
- "resolved": "https://registry.npmjs.org/@firebase/vertexai-preview/-/vertexai-preview-0.0.2.tgz",
- "integrity": "sha512-NOOL63kFQRq45ioi5P+hlqj/4LNmvn1URhGjQdvyV54c1Irvoq26aW861PRRLjrSMIeNeiLtCLD5pe+ediepAg==",
+ "version": "0.0.3",
+ "resolved": "https://registry.npmjs.org/@firebase/vertexai-preview/-/vertexai-preview-0.0.3.tgz",
+ "integrity": "sha512-KVtUWLp+ScgiwkDKAvNkVucAyhLVQp6C6lhnVEuIg4mWhWcS3oerjAeVhZT4uNofKwWxRsOaB2Yec7DMTXlQPQ==",
"dependencies": {
"@firebase/app-check-interop-types": "0.3.2",
- "@firebase/component": "0.6.7",
+ "@firebase/component": "0.6.8",
"@firebase/logger": "0.4.2",
- "@firebase/util": "1.9.6",
+ "@firebase/util": "1.9.7",
"tslib": "^2.1.0"
},
"engines": {
@@ -851,9 +912,9 @@
}
},
"node_modules/@firebase/webchannel-wrapper": {
- "version": "1.0.0",
- "resolved": "https://registry.npmjs.org/@firebase/webchannel-wrapper/-/webchannel-wrapper-1.0.0.tgz",
- "integrity": "sha512-zuWxyfXNbsKbm96HhXzainONPFqRcoZblQ++e9cAIGUuHfl2cFSBzW01jtesqWG/lqaUyX3H8O1y9oWboGNQBA=="
+ "version": "1.0.1",
+ "resolved": "https://registry.npmjs.org/@firebase/webchannel-wrapper/-/webchannel-wrapper-1.0.1.tgz",
+ "integrity": "sha512-jmEnr/pk0yVkA7mIlHNnxCi+wWzOFUg0WyIotgkKAb2u1J7fAeDBcVNSTjTihbAYNusCLQdW5s9IJ5qwnEufcQ=="
},
"node_modules/@gamestdio/clock": {
"version": "1.1.9",
@@ -869,9 +930,9 @@
}
},
"node_modules/@grpc/grpc-js": {
- "version": "1.9.14",
- "resolved": "https://registry.npmjs.org/@grpc/grpc-js/-/grpc-js-1.9.14.tgz",
- "integrity": "sha512-nOpuzZ2G3IuMFN+UPPpKrC6NsLmWsTqSsm66IRfnBt1D4pwTqE27lmbpcPM+l2Ua4gE7PfjRHI6uedAy7hoXUw==",
+ "version": "1.9.15",
+ "resolved": "https://registry.npmjs.org/@grpc/grpc-js/-/grpc-js-1.9.15.tgz",
+ "integrity": "sha512-nqE7Hc0AzI+euzUwDAy0aY5hCp10r734gMGRdU+qOPX0XSceI2ULrcXB5U2xSc5VkWwalCj4M7GzCAygZl2KoQ==",
"dependencies": {
"@grpc/proto-loader": "^0.7.8",
"@types/node": ">=12.12.47"
@@ -897,6 +958,11 @@
"node": ">=6"
}
},
+ "node_modules/@iarna/toml": {
+ "version": "2.2.5",
+ "resolved": "https://registry.npmjs.org/@iarna/toml/-/toml-2.2.5.tgz",
+ "integrity": "sha512-trnsAYxU3xnS1gPHPyU961coFyLkh4gAD/0zQ5mymY4yOZ+CYvsPqUbOFSw0aDM4y0tV7tiFxL/1XfXPNC6IPg=="
+ },
"node_modules/@img/sharp-darwin-arm64": {
"version": "0.33.3",
"resolved": "https://registry.npmjs.org/@img/sharp-darwin-arm64/-/sharp-darwin-arm64-0.33.3.tgz",
@@ -1333,6 +1399,58 @@
"resolved": "https://registry.npmjs.org/@ioredis/commands/-/commands-1.2.0.tgz",
"integrity": "sha512-Sx1pU8EM64o2BrqNpEO1CNLtKQwyhuXuqyfH7oGKCk+1a33d2r5saW8zNwm3j6BTExtjrv2BxTgzzkMwts6vGg=="
},
+ "node_modules/@jridgewell/gen-mapping": {
+ "version": "0.3.5",
+ "resolved": "https://registry.npmjs.org/@jridgewell/gen-mapping/-/gen-mapping-0.3.5.tgz",
+ "integrity": "sha512-IzL8ZoEDIBRWEzlCcRhOaCupYyN5gdIK+Q6fbFdPDg6HqX6jpkItn7DFIpW9LQzXG6Df9sA7+OKnq0qlz/GaQg==",
+ "dependencies": {
+ "@jridgewell/set-array": "^1.2.1",
+ "@jridgewell/sourcemap-codec": "^1.4.10",
+ "@jridgewell/trace-mapping": "^0.3.24"
+ },
+ "engines": {
+ "node": ">=6.0.0"
+ }
+ },
+ "node_modules/@jridgewell/resolve-uri": {
+ "version": "3.1.2",
+ "resolved": "https://registry.npmjs.org/@jridgewell/resolve-uri/-/resolve-uri-3.1.2.tgz",
+ "integrity": "sha512-bRISgCIjP20/tbWSPWMEi54QVPRZExkuD9lJL+UIxUKtwVJA8wW1Trb1jMs1RFXo1CBTNZ/5hpC9QvmKWdopKw==",
+ "engines": {
+ "node": ">=6.0.0"
+ }
+ },
+ "node_modules/@jridgewell/set-array": {
+ "version": "1.2.1",
+ "resolved": "https://registry.npmjs.org/@jridgewell/set-array/-/set-array-1.2.1.tgz",
+ "integrity": "sha512-R8gLRTZeyp03ymzP/6Lil/28tGeGEzhx1q2k703KGWRAI1VdvPIXdG70VJc2pAMw3NA6JKL5hhFu1sJX0Mnn/A==",
+ "engines": {
+ "node": ">=6.0.0"
+ }
+ },
+ "node_modules/@jridgewell/source-map": {
+ "version": "0.3.6",
+ "resolved": "https://registry.npmjs.org/@jridgewell/source-map/-/source-map-0.3.6.tgz",
+ "integrity": "sha512-1ZJTZebgqllO79ue2bm3rIGud/bOe0pP5BjSRCRxxYkEZS8STV7zN84UBbiYu7jy+eCKSnVIUgoWWE/tt+shMQ==",
+ "dependencies": {
+ "@jridgewell/gen-mapping": "^0.3.5",
+ "@jridgewell/trace-mapping": "^0.3.25"
+ }
+ },
+ "node_modules/@jridgewell/sourcemap-codec": {
+ "version": "1.4.15",
+ "resolved": "https://registry.npmjs.org/@jridgewell/sourcemap-codec/-/sourcemap-codec-1.4.15.tgz",
+ "integrity": "sha512-eF2rxCRulEKXHTRiDrDy6erMYWqNw4LPdQ8UQA4huuxaQsVeRPFl2oM8oDGxMFhJUWZf9McpLtJasDDZb/Bpeg=="
+ },
+ "node_modules/@jridgewell/trace-mapping": {
+ "version": "0.3.25",
+ "resolved": "https://registry.npmjs.org/@jridgewell/trace-mapping/-/trace-mapping-0.3.25.tgz",
+ "integrity": "sha512-vNk6aEwybGtawWmy/PzwnGDOjCkLWSD2wqvjGGAgOAwCGWySYXfYoxt00IJkTF+8Lb57DwOb3Aa0o9CApepiYQ==",
+ "dependencies": {
+ "@jridgewell/resolve-uri": "^3.1.0",
+ "@jridgewell/sourcemap-codec": "^1.4.14"
+ }
+ },
"node_modules/@lezer/common": {
"version": "0.15.12",
"resolved": "https://registry.npmjs.org/@lezer/common/-/common-0.15.12.tgz",
@@ -1467,31 +1585,17 @@
"semver": "bin/semver.js"
}
},
- "node_modules/@mapbox/node-pre-gyp/node_modules/semver": {
- "version": "7.5.4",
- "resolved": "https://registry.npmjs.org/semver/-/semver-7.5.4.tgz",
- "integrity": "sha512-1bCSESV6Pv+i21Hvpxp3Dx+pSD8lIPt8uVjRrxAUt/nbswYc+tK6Y2btiULjd4+fnq15PX+nqQDC7Oft7WkwcA==",
- "dependencies": {
- "lru-cache": "^6.0.0"
- },
- "bin": {
- "semver": "bin/semver.js"
- },
- "engines": {
- "node": ">=10"
- }
- },
"node_modules/@mikro-orm/core": {
- "version": "6.2.5",
- "resolved": "https://registry.npmjs.org/@mikro-orm/core/-/core-6.2.5.tgz",
- "integrity": "sha512-KZvirbAoFNjR/Sx30Jr7j6y5oEofNr13llPvCPUQlWQzHrFXedU1Td5AtVeBkOzp7f5FDBSv/a/wMRXqyqkrcA==",
+ "version": "6.2.9",
+ "resolved": "https://registry.npmjs.org/@mikro-orm/core/-/core-6.2.9.tgz",
+ "integrity": "sha512-fzeg8qNwNr0f9embDhs0L75EBC8ivIOsK1GGPXe48Ab+P0Vmv1qCskSP7/vNDsz4s1xDu0h0l6fIsv1N7j4jKQ==",
"dependencies": {
"dataloader": "2.2.2",
"dotenv": "16.4.5",
"esprima": "4.0.1",
"fs-extra": "11.2.0",
"globby": "11.1.0",
- "mikro-orm": "6.2.5",
+ "mikro-orm": "6.2.9",
"reflect-metadata": "0.2.2"
},
"engines": {
@@ -1502,12 +1606,12 @@
}
},
"node_modules/@mikro-orm/mongodb": {
- "version": "6.2.5",
- "resolved": "https://registry.npmjs.org/@mikro-orm/mongodb/-/mongodb-6.2.5.tgz",
- "integrity": "sha512-Z1cqgB0+L/U9PEvEdP5/qj1dKno/Xa/3P2IX2O5fjvUY0ZBGXrESC4WoExb9FeqG6SArmBofNCcmmI4DjMZ8QQ==",
+ "version": "6.2.9",
+ "resolved": "https://registry.npmjs.org/@mikro-orm/mongodb/-/mongodb-6.2.9.tgz",
+ "integrity": "sha512-ryFIFZVMwmlAW7p+/rmvIHZP2cpQ01h8bXvgZw0ri5rqXWHpTg+eQliaXlxum2yJdUSFNK4pjPvS2gyYcph+Sw==",
"dependencies": {
"bson": "^6.7.0",
- "mongodb": "6.6.0"
+ "mongodb": "6.7.0"
},
"engines": {
"node": ">= 18.12.0"
@@ -1530,9 +1634,9 @@
}
},
"node_modules/@mongodb-js/saslprep": {
- "version": "1.1.6",
- "resolved": "https://registry.npmjs.org/@mongodb-js/saslprep/-/saslprep-1.1.6.tgz",
- "integrity": "sha512-jqTTXQ46H8cAxmXBu8wm1HTSIMBMrIcoVrsjdQkKdMBj3il/fSCgWyya4P2I1xjPBl69mw+nRphrPlcIqBd20Q==",
+ "version": "1.1.7",
+ "resolved": "https://registry.npmjs.org/@mongodb-js/saslprep/-/saslprep-1.1.7.tgz",
+ "integrity": "sha512-dCHW/oEX0KJ4NjDULBo3JiOaK5+6axtpBbS+ao2ZInoAL9/YRQLhXzSNAFz7hP4nzLkIqsfYAK/PDE3+XHny0Q==",
"dependencies": {
"sparse-bitfield": "^3.0.3"
}
@@ -1642,20 +1746,20 @@
}
},
"node_modules/@parcel/bundler-default": {
- "version": "2.11.0",
- "resolved": "https://registry.npmjs.org/@parcel/bundler-default/-/bundler-default-2.11.0.tgz",
- "integrity": "sha512-ZIs0865Lp871ZK83k5I9L4DeeE26muNMrHa7j8bvls6fKBJKAn8djrhfU4XOLyziU4aAOobcPwXU0+npWqs52g==",
- "dependencies": {
- "@parcel/diagnostic": "2.11.0",
- "@parcel/graph": "3.1.0",
- "@parcel/plugin": "2.11.0",
- "@parcel/rust": "2.11.0",
- "@parcel/utils": "2.11.0",
+ "version": "2.12.0",
+ "resolved": "https://registry.npmjs.org/@parcel/bundler-default/-/bundler-default-2.12.0.tgz",
+ "integrity": "sha512-3ybN74oYNMKyjD6V20c9Gerdbh7teeNvVMwIoHIQMzuIFT6IGX53PyOLlOKRLbjxMc0TMimQQxIt2eQqxR5LsA==",
+ "dependencies": {
+ "@parcel/diagnostic": "2.12.0",
+ "@parcel/graph": "3.2.0",
+ "@parcel/plugin": "2.12.0",
+ "@parcel/rust": "2.12.0",
+ "@parcel/utils": "2.12.0",
"nullthrows": "^1.1.1"
},
"engines": {
"node": ">= 12.0.0",
- "parcel": "^2.11.0"
+ "parcel": "^2.12.0"
},
"funding": {
"type": "opencollective",
@@ -1663,13 +1767,13 @@
}
},
"node_modules/@parcel/cache": {
- "version": "2.11.0",
- "resolved": "https://registry.npmjs.org/@parcel/cache/-/cache-2.11.0.tgz",
- "integrity": "sha512-RSSkGNjO00lJPyftzaC9eaNVs4jMjPSAm0VJNWQ9JSm2n4A9BzQtTFAt1vhJOzzW1UsQvvBge9DdfkB7a2gIOw==",
+ "version": "2.12.0",
+ "resolved": "https://registry.npmjs.org/@parcel/cache/-/cache-2.12.0.tgz",
+ "integrity": "sha512-FX5ZpTEkxvq/yvWklRHDESVRz+c7sLTXgFuzz6uEnBcXV38j6dMSikflNpHA6q/L4GKkCqRywm9R6XQwhwIMyw==",
"dependencies": {
- "@parcel/fs": "2.11.0",
- "@parcel/logger": "2.11.0",
- "@parcel/utils": "2.11.0",
+ "@parcel/fs": "2.12.0",
+ "@parcel/logger": "2.12.0",
+ "@parcel/utils": "2.12.0",
"lmdb": "2.8.5"
},
"engines": {
@@ -1680,13 +1784,13 @@
"url": "https://opencollective.com/parcel"
},
"peerDependencies": {
- "@parcel/core": "^2.11.0"
+ "@parcel/core": "^2.12.0"
}
},
"node_modules/@parcel/codeframe": {
- "version": "2.11.0",
- "resolved": "https://registry.npmjs.org/@parcel/codeframe/-/codeframe-2.11.0.tgz",
- "integrity": "sha512-YHs9g/i5af/sd/JrWAojU9YFbKffcJ3Tx2EJaK0ME8OJsye91UaI/3lxSUYLmJG9e4WLNJtqci8V5FBMz//ZPg==",
+ "version": "2.12.0",
+ "resolved": "https://registry.npmjs.org/@parcel/codeframe/-/codeframe-2.12.0.tgz",
+ "integrity": "sha512-v2VmneILFiHZJTxPiR7GEF1wey1/IXPdZMcUlNXBiPZyWDfcuNgGGVQkx/xW561rULLIvDPharOMdxz5oHOKQg==",
"dependencies": {
"chalk": "^4.1.0"
},
@@ -1699,86 +1803,41 @@
}
},
"node_modules/@parcel/compressor-raw": {
- "version": "2.11.0",
- "resolved": "https://registry.npmjs.org/@parcel/compressor-raw/-/compressor-raw-2.11.0.tgz",
- "integrity": "sha512-RArhBPRTCfz77soX2IECH09NUd76UBWujXiPRcXGPIHK+C3L1cRuzsNcA39QeSb3thz3b99JcozMJ1nkC2Bsgw==",
+ "version": "2.12.0",
+ "resolved": "https://registry.npmjs.org/@parcel/compressor-raw/-/compressor-raw-2.12.0.tgz",
+ "integrity": "sha512-h41Q3X7ZAQ9wbQ2csP8QGrwepasLZdXiuEdpUryDce6rF9ZiHoJ97MRpdLxOhOPyASTw/xDgE1xyaPQr0Q3f5A==",
"dependencies": {
- "@parcel/plugin": "2.11.0"
+ "@parcel/plugin": "2.12.0"
},
"engines": {
"node": ">= 12.0.0",
- "parcel": "^2.11.0"
+ "parcel": "^2.12.0"
},
"funding": {
"type": "opencollective",
"url": "https://opencollective.com/parcel"
}
},
- "node_modules/@parcel/config-default": {
- "version": "2.11.0",
- "resolved": "https://registry.npmjs.org/@parcel/config-default/-/config-default-2.11.0.tgz",
- "integrity": "sha512-1e2+qcZkm5/0f4eI20p/DemcYiSxq9d/eyjpTXA7PulJaHbL1wonwUAuy3mvnAvDnLOJmAk/obDVgX1ZfxMGtg==",
- "dependencies": {
- "@parcel/bundler-default": "2.11.0",
- "@parcel/compressor-raw": "2.11.0",
- "@parcel/namer-default": "2.11.0",
- "@parcel/optimizer-css": "2.11.0",
- "@parcel/optimizer-htmlnano": "2.11.0",
- "@parcel/optimizer-image": "2.11.0",
- "@parcel/optimizer-svgo": "2.11.0",
- "@parcel/optimizer-swc": "2.11.0",
- "@parcel/packager-css": "2.11.0",
- "@parcel/packager-html": "2.11.0",
- "@parcel/packager-js": "2.11.0",
- "@parcel/packager-raw": "2.11.0",
- "@parcel/packager-svg": "2.11.0",
- "@parcel/packager-wasm": "2.11.0",
- "@parcel/reporter-dev-server": "2.11.0",
- "@parcel/resolver-default": "2.11.0",
- "@parcel/runtime-browser-hmr": "2.11.0",
- "@parcel/runtime-js": "2.11.0",
- "@parcel/runtime-react-refresh": "2.11.0",
- "@parcel/runtime-service-worker": "2.11.0",
- "@parcel/transformer-babel": "2.11.0",
- "@parcel/transformer-css": "2.11.0",
- "@parcel/transformer-html": "2.11.0",
- "@parcel/transformer-image": "2.11.0",
- "@parcel/transformer-js": "2.11.0",
- "@parcel/transformer-json": "2.11.0",
- "@parcel/transformer-postcss": "2.11.0",
- "@parcel/transformer-posthtml": "2.11.0",
- "@parcel/transformer-raw": "2.11.0",
- "@parcel/transformer-react-refresh-wrap": "2.11.0",
- "@parcel/transformer-svg": "2.11.0"
- },
- "funding": {
- "type": "opencollective",
- "url": "https://opencollective.com/parcel"
- },
- "peerDependencies": {
- "@parcel/core": "^2.11.0"
- }
- },
"node_modules/@parcel/core": {
- "version": "2.11.0",
- "resolved": "https://registry.npmjs.org/@parcel/core/-/core-2.11.0.tgz",
- "integrity": "sha512-Npe0S6hVaqWEwRL+HI7gtOYOaoE5bJQZTgUDhsDoppWbau51jOlRYOZTXuvRK/jxXnze4/S1sdM24xBYAQ5qkw==",
+ "version": "2.12.0",
+ "resolved": "https://registry.npmjs.org/@parcel/core/-/core-2.12.0.tgz",
+ "integrity": "sha512-s+6pwEj+GfKf7vqGUzN9iSEPueUssCCQrCBUlcAfKrJe0a22hTUCjewpB0I7lNrCIULt8dkndD+sMdOrXsRl6Q==",
"dependencies": {
"@mischnic/json-sourcemap": "^0.1.0",
- "@parcel/cache": "2.11.0",
- "@parcel/diagnostic": "2.11.0",
- "@parcel/events": "2.11.0",
- "@parcel/fs": "2.11.0",
- "@parcel/graph": "3.1.0",
- "@parcel/logger": "2.11.0",
- "@parcel/package-manager": "2.11.0",
- "@parcel/plugin": "2.11.0",
- "@parcel/profiler": "2.11.0",
- "@parcel/rust": "2.11.0",
+ "@parcel/cache": "2.12.0",
+ "@parcel/diagnostic": "2.12.0",
+ "@parcel/events": "2.12.0",
+ "@parcel/fs": "2.12.0",
+ "@parcel/graph": "3.2.0",
+ "@parcel/logger": "2.12.0",
+ "@parcel/package-manager": "2.12.0",
+ "@parcel/plugin": "2.12.0",
+ "@parcel/profiler": "2.12.0",
+ "@parcel/rust": "2.12.0",
"@parcel/source-map": "^2.1.1",
- "@parcel/types": "2.11.0",
- "@parcel/utils": "2.11.0",
- "@parcel/workers": "2.11.0",
+ "@parcel/types": "2.12.0",
+ "@parcel/utils": "2.12.0",
+ "@parcel/workers": "2.12.0",
"abortcontroller-polyfill": "^1.1.9",
"base-x": "^3.0.8",
"browserslist": "^4.6.6",
@@ -1806,24 +1865,10 @@
"node": ">=6"
}
},
- "node_modules/@parcel/core/node_modules/semver": {
- "version": "7.5.4",
- "resolved": "https://registry.npmjs.org/semver/-/semver-7.5.4.tgz",
- "integrity": "sha512-1bCSESV6Pv+i21Hvpxp3Dx+pSD8lIPt8uVjRrxAUt/nbswYc+tK6Y2btiULjd4+fnq15PX+nqQDC7Oft7WkwcA==",
- "dependencies": {
- "lru-cache": "^6.0.0"
- },
- "bin": {
- "semver": "bin/semver.js"
- },
- "engines": {
- "node": ">=10"
- }
- },
"node_modules/@parcel/diagnostic": {
- "version": "2.11.0",
- "resolved": "https://registry.npmjs.org/@parcel/diagnostic/-/diagnostic-2.11.0.tgz",
- "integrity": "sha512-4dJmOXVL5YGGQRRsQosQbSRONBcboB71mSwaeaEgz3pPdq9QXVPLACkGe/jTXSqa3OnAHu3g5vQLpE1g5xqBqw==",
+ "version": "2.12.0",
+ "resolved": "https://registry.npmjs.org/@parcel/diagnostic/-/diagnostic-2.12.0.tgz",
+ "integrity": "sha512-8f1NOsSFK+F4AwFCKynyIu9Kr/uWHC+SywAv4oS6Bv3Acig0gtwUjugk0C9UaB8ztBZiW5TQZhw+uPZn9T/lJA==",
"dependencies": {
"@mischnic/json-sourcemap": "^0.1.0",
"nullthrows": "^1.1.1"
@@ -1837,9 +1882,9 @@
}
},
"node_modules/@parcel/events": {
- "version": "2.11.0",
- "resolved": "https://registry.npmjs.org/@parcel/events/-/events-2.11.0.tgz",
- "integrity": "sha512-K6SOjOrQsz1GdNl2qKBktq7KJ3Q3yxK8WXdmQYo10wG39dr051xtMb38aqieTp4eVhL8Yaq2iJgGkdr11fuBnA==",
+ "version": "2.12.0",
+ "resolved": "https://registry.npmjs.org/@parcel/events/-/events-2.12.0.tgz",
+ "integrity": "sha512-nmAAEIKLjW1kB2cUbCYSmZOGbnGj8wCzhqnK727zCCWaA25ogzAtt657GPOeFyqW77KyosU728Tl63Fc8hphIA==",
"engines": {
"node": ">= 12.0.0"
},
@@ -1849,15 +1894,15 @@
}
},
"node_modules/@parcel/fs": {
- "version": "2.11.0",
- "resolved": "https://registry.npmjs.org/@parcel/fs/-/fs-2.11.0.tgz",
- "integrity": "sha512-zWckdnnovdrgdFX4QYuQV4bbKCsh6IYCkmwaB4yp47rhw1MP0lkBINLt4yFPHBxWXOpElCfxjL+z69c9xJQRBQ==",
+ "version": "2.12.0",
+ "resolved": "https://registry.npmjs.org/@parcel/fs/-/fs-2.12.0.tgz",
+ "integrity": "sha512-NnFkuvou1YBtPOhTdZr44WN7I60cGyly2wpHzqRl62yhObyi1KvW0SjwOMa0QGNcBOIzp4G0CapoZ93hD0RG5Q==",
"dependencies": {
- "@parcel/rust": "2.11.0",
- "@parcel/types": "2.11.0",
- "@parcel/utils": "2.11.0",
+ "@parcel/rust": "2.12.0",
+ "@parcel/types": "2.12.0",
+ "@parcel/utils": "2.12.0",
"@parcel/watcher": "^2.0.7",
- "@parcel/workers": "2.11.0"
+ "@parcel/workers": "2.12.0"
},
"engines": {
"node": ">= 12.0.0"
@@ -1867,13 +1912,13 @@
"url": "https://opencollective.com/parcel"
},
"peerDependencies": {
- "@parcel/core": "^2.11.0"
+ "@parcel/core": "^2.12.0"
}
},
"node_modules/@parcel/graph": {
- "version": "3.1.0",
- "resolved": "https://registry.npmjs.org/@parcel/graph/-/graph-3.1.0.tgz",
- "integrity": "sha512-d1dTW5C7A52HgDtoXlyvlET1ypSlmIxSIZOJ1xp3R9L9hgo3h1u3jHNyaoTe/WPkGVe2QnFxh0h+UibVJhu9vg==",
+ "version": "3.2.0",
+ "resolved": "https://registry.npmjs.org/@parcel/graph/-/graph-3.2.0.tgz",
+ "integrity": "sha512-xlrmCPqy58D4Fg5umV7bpwDx5Vyt7MlnQPxW68vae5+BA4GSWetfZt+Cs5dtotMG2oCHzZxhIPt7YZ7NRyQzLA==",
"dependencies": {
"nullthrows": "^1.1.1"
},
@@ -1886,12 +1931,12 @@
}
},
"node_modules/@parcel/logger": {
- "version": "2.11.0",
- "resolved": "https://registry.npmjs.org/@parcel/logger/-/logger-2.11.0.tgz",
- "integrity": "sha512-HtMEdCq3LKnvv4T2CIskcqlf2gpBvHMm3pkeUFB/hc/7hW/hE1k6/HA2VOQvc0tBsaMpmEx7PCrfrH56usQSyA==",
+ "version": "2.12.0",
+ "resolved": "https://registry.npmjs.org/@parcel/logger/-/logger-2.12.0.tgz",
+ "integrity": "sha512-cJ7Paqa7/9VJ7C+KwgJlwMqTQBOjjn71FbKk0G07hydUEBISU2aDfmc/52o60ErL9l+vXB26zTrIBanbxS8rVg==",
"dependencies": {
- "@parcel/diagnostic": "2.11.0",
- "@parcel/events": "2.11.0"
+ "@parcel/diagnostic": "2.12.0",
+ "@parcel/events": "2.12.0"
},
"engines": {
"node": ">= 12.0.0"
@@ -1902,9 +1947,9 @@
}
},
"node_modules/@parcel/markdown-ansi": {
- "version": "2.11.0",
- "resolved": "https://registry.npmjs.org/@parcel/markdown-ansi/-/markdown-ansi-2.11.0.tgz",
- "integrity": "sha512-YA60EWbXi6cLOIzcwRC2wijotPauOGQbUi0vSbu0O6/mjQ68kWCMGz0hwZjDRQcPypQVJEIvTgMymLbvumxwhg==",
+ "version": "2.12.0",
+ "resolved": "https://registry.npmjs.org/@parcel/markdown-ansi/-/markdown-ansi-2.12.0.tgz",
+ "integrity": "sha512-WZz3rzL8k0H3WR4qTHX6Ic8DlEs17keO9gtD4MNGyMNQbqQEvQ61lWJaIH0nAtgEetu0SOITiVqdZrb8zx/M7w==",
"dependencies": {
"chalk": "^4.1.0"
},
@@ -1917,17 +1962,17 @@
}
},
"node_modules/@parcel/namer-default": {
- "version": "2.11.0",
- "resolved": "https://registry.npmjs.org/@parcel/namer-default/-/namer-default-2.11.0.tgz",
- "integrity": "sha512-DEwBSKSClg4DA2xAWimYkw9bFi7MFb9TdT7/TYZStMTsfYHPWOyyjGR7aVr3Ra4wNb+XX6g4rR41yp3HD6KO7A==",
+ "version": "2.12.0",
+ "resolved": "https://registry.npmjs.org/@parcel/namer-default/-/namer-default-2.12.0.tgz",
+ "integrity": "sha512-9DNKPDHWgMnMtqqZIMiEj/R9PNWW16lpnlHjwK3ciRlMPgjPJ8+UNc255teZODhX0T17GOzPdGbU/O/xbxVPzA==",
"dependencies": {
- "@parcel/diagnostic": "2.11.0",
- "@parcel/plugin": "2.11.0",
+ "@parcel/diagnostic": "2.12.0",
+ "@parcel/plugin": "2.12.0",
"nullthrows": "^1.1.1"
},
"engines": {
"node": ">= 12.0.0",
- "parcel": "^2.11.0"
+ "parcel": "^2.12.0"
},
"funding": {
"type": "opencollective",
@@ -1935,15 +1980,15 @@
}
},
"node_modules/@parcel/node-resolver-core": {
- "version": "3.2.0",
- "resolved": "https://registry.npmjs.org/@parcel/node-resolver-core/-/node-resolver-core-3.2.0.tgz",
- "integrity": "sha512-XJRSxCkNbGFWjfmwFdcQZ/qlzWZd35qLtvLz2va8euGL7M5OMEQOv7dsvEhl0R+CC2zcnfFzZwxk78q6ezs8AQ==",
+ "version": "3.3.0",
+ "resolved": "https://registry.npmjs.org/@parcel/node-resolver-core/-/node-resolver-core-3.3.0.tgz",
+ "integrity": "sha512-rhPW9DYPEIqQBSlYzz3S0AjXxjN6Ub2yS6tzzsW/4S3Gpsgk/uEq4ZfxPvoPf/6TgZndVxmKwpmxaKtGMmf3cA==",
"dependencies": {
"@mischnic/json-sourcemap": "^0.1.0",
- "@parcel/diagnostic": "2.11.0",
- "@parcel/fs": "2.11.0",
- "@parcel/rust": "2.11.0",
- "@parcel/utils": "2.11.0",
+ "@parcel/diagnostic": "2.12.0",
+ "@parcel/fs": "2.12.0",
+ "@parcel/rust": "2.12.0",
+ "@parcel/utils": "2.12.0",
"nullthrows": "^1.1.1",
"semver": "^7.5.2"
},
@@ -1955,36 +2000,22 @@
"url": "https://opencollective.com/parcel"
}
},
- "node_modules/@parcel/node-resolver-core/node_modules/semver": {
- "version": "7.6.0",
- "resolved": "https://registry.npmjs.org/semver/-/semver-7.6.0.tgz",
- "integrity": "sha512-EnwXhrlwXMk9gKu5/flx5sv/an57AkRplG3hTK68W7FRDN+k+OWBj65M7719OkA82XLBxrcX0KSHj+X5COhOVg==",
- "dependencies": {
- "lru-cache": "^6.0.0"
- },
- "bin": {
- "semver": "bin/semver.js"
- },
- "engines": {
- "node": ">=10"
- }
- },
"node_modules/@parcel/optimizer-css": {
- "version": "2.11.0",
- "resolved": "https://registry.npmjs.org/@parcel/optimizer-css/-/optimizer-css-2.11.0.tgz",
- "integrity": "sha512-bV97PRxshHV3dMwOpLRgcP1QNhrVWh6VVDfm2gmWULpvsjoykcPS6vrCFksY5CpQsSvNHqJBzQjWS8FubUI76w==",
+ "version": "2.12.0",
+ "resolved": "https://registry.npmjs.org/@parcel/optimizer-css/-/optimizer-css-2.12.0.tgz",
+ "integrity": "sha512-ifbcC97fRzpruTjaa8axIFeX4MjjSIlQfem3EJug3L2AVqQUXnM1XO8L0NaXGNLTW2qnh1ZjIJ7vXT/QhsphsA==",
"dependencies": {
- "@parcel/diagnostic": "2.11.0",
- "@parcel/plugin": "2.11.0",
+ "@parcel/diagnostic": "2.12.0",
+ "@parcel/plugin": "2.12.0",
"@parcel/source-map": "^2.1.1",
- "@parcel/utils": "2.11.0",
+ "@parcel/utils": "2.12.0",
"browserslist": "^4.6.6",
"lightningcss": "^1.22.1",
"nullthrows": "^1.1.1"
},
"engines": {
"node": ">= 12.0.0",
- "parcel": "^2.11.0"
+ "parcel": "^2.12.0"
},
"funding": {
"type": "opencollective",
@@ -1992,41 +2023,30 @@
}
},
"node_modules/@parcel/optimizer-data-url": {
- "version": "2.11.0",
- "resolved": "https://registry.npmjs.org/@parcel/optimizer-data-url/-/optimizer-data-url-2.11.0.tgz",
- "integrity": "sha512-k/BCJMNhqN+3vykp1jVR8AvCrbV8sYBC3gYh/qNzeS+mcmWaF4VIeoJj/nwIu7qYgb6LIC1Ib0ph6i16YmcRFg==",
+ "version": "2.12.0",
+ "resolved": "https://registry.npmjs.org/@parcel/optimizer-data-url/-/optimizer-data-url-2.12.0.tgz",
+ "integrity": "sha512-9g7+1bXZkLFFQ2cLm+CsiJzxMMSDxdo3w3xcqzIj5hcha22jaPP6N1weCAbfxkd6D8wgmljeNUzewFMT0Ob2FQ==",
"dependencies": {
- "@parcel/plugin": "2.11.0",
- "@parcel/utils": "2.11.0",
+ "@parcel/plugin": "2.12.0",
+ "@parcel/utils": "2.12.0",
"isbinaryfile": "^4.0.2",
"mime": "^2.4.4"
},
"engines": {
"node": ">= 12.0.0",
- "parcel": "^2.11.0"
+ "parcel": "^2.12.0"
},
"funding": {
"type": "opencollective",
"url": "https://opencollective.com/parcel"
}
},
- "node_modules/@parcel/optimizer-data-url/node_modules/mime": {
- "version": "2.6.0",
- "resolved": "https://registry.npmjs.org/mime/-/mime-2.6.0.tgz",
- "integrity": "sha512-USPkMeET31rOMiarsBNIHZKLGgvKc/LrjofAnBlOttf5ajRvqiRA8QsenbcooctK6d6Ts6aqZXBA+XbkKthiQg==",
- "bin": {
- "mime": "cli.js"
- },
- "engines": {
- "node": ">=4.0.0"
- }
- },
"node_modules/@parcel/optimizer-htmlnano": {
- "version": "2.11.0",
- "resolved": "https://registry.npmjs.org/@parcel/optimizer-htmlnano/-/optimizer-htmlnano-2.11.0.tgz",
- "integrity": "sha512-c20pz4EFF5DNFmqYgptlIj49eT6xjGLkDTdHH3RRzxKovuSXWfYSPs3GED3ZsjVuQyjNQif+/MAk9547F7hrdQ==",
+ "version": "2.12.0",
+ "resolved": "https://registry.npmjs.org/@parcel/optimizer-htmlnano/-/optimizer-htmlnano-2.12.0.tgz",
+ "integrity": "sha512-MfPMeCrT8FYiOrpFHVR+NcZQlXAptK2r4nGJjfT+ndPBhEEZp4yyL7n1y7HfX9geg5altc4WTb4Gug7rCoW8VQ==",
"dependencies": {
- "@parcel/plugin": "2.11.0",
+ "@parcel/plugin": "2.12.0",
"htmlnano": "^2.0.0",
"nullthrows": "^1.1.1",
"posthtml": "^0.16.5",
@@ -2034,21 +2054,13 @@
},
"engines": {
"node": ">= 12.0.0",
- "parcel": "^2.11.0"
+ "parcel": "^2.12.0"
},
"funding": {
"type": "opencollective",
"url": "https://opencollective.com/parcel"
}
},
- "node_modules/@parcel/optimizer-htmlnano/node_modules/commander": {
- "version": "7.2.0",
- "resolved": "https://registry.npmjs.org/commander/-/commander-7.2.0.tgz",
- "integrity": "sha512-QrWXB+ZQSVPmIWIhtEO9H+gwHaMGYiF5ChvoJ+K9ZGHG/sVsa6yiesAD1GC/x46sET00Xlwo1u49RVVVzvcSkw==",
- "engines": {
- "node": ">= 10"
- }
- },
"node_modules/@parcel/optimizer-htmlnano/node_modules/css-select": {
"version": "4.3.0",
"resolved": "https://registry.npmjs.org/css-select/-/css-select-4.3.0.tgz",
@@ -2092,14 +2104,6 @@
"resolved": "https://registry.npmjs.org/mdn-data/-/mdn-data-2.0.14.tgz",
"integrity": "sha512-dn6wd0uw5GsdswPFfsgMp5NSB0/aDe6fK94YJV/AJDYXL6HVLWBsxeq7js7Ad+mU2K9LAlwpk6kN2D5mwCPVow=="
},
- "node_modules/@parcel/optimizer-htmlnano/node_modules/source-map": {
- "version": "0.6.1",
- "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.6.1.tgz",
- "integrity": "sha512-UjgapumWlbMhkBgzT7Ykc5YXUT46F0iKu8SGXq0bcwP5dz/h0Plj6enJqjz1Zbq2l5WaqYnrVbwWOWMyF3F47g==",
- "engines": {
- "node": ">=0.10.0"
- }
- },
"node_modules/@parcel/optimizer-htmlnano/node_modules/svgo": {
"version": "2.8.0",
"resolved": "https://registry.npmjs.org/svgo/-/svgo-2.8.0.tgz",
@@ -2121,55 +2125,47 @@
}
},
"node_modules/@parcel/optimizer-image": {
- "version": "2.11.0",
- "resolved": "https://registry.npmjs.org/@parcel/optimizer-image/-/optimizer-image-2.11.0.tgz",
- "integrity": "sha512-jCaJww5QFG2GuNzYW8nlSW+Ea+Cv47TRnOPJNquFIajgfTLJ5ddsWbaNal0GQsL8yNiCBKWd1AV4W0RH9tG0Jg==",
+ "version": "2.12.0",
+ "resolved": "https://registry.npmjs.org/@parcel/optimizer-image/-/optimizer-image-2.12.0.tgz",
+ "integrity": "sha512-bo1O7raeAIbRU5nmNVtx8divLW9Xqn0c57GVNGeAK4mygnQoqHqRZ0mR9uboh64pxv6ijXZHPhKvU9HEpjPjBQ==",
"dependencies": {
- "@parcel/diagnostic": "2.11.0",
- "@parcel/plugin": "2.11.0",
- "@parcel/rust": "2.11.0",
- "@parcel/utils": "2.11.0",
- "@parcel/workers": "2.11.0"
+ "@parcel/diagnostic": "2.12.0",
+ "@parcel/plugin": "2.12.0",
+ "@parcel/rust": "2.12.0",
+ "@parcel/utils": "2.12.0",
+ "@parcel/workers": "2.12.0"
},
"engines": {
"node": ">= 12.0.0",
- "parcel": "^2.11.0"
+ "parcel": "^2.12.0"
},
"funding": {
"type": "opencollective",
"url": "https://opencollective.com/parcel"
},
"peerDependencies": {
- "@parcel/core": "^2.11.0"
+ "@parcel/core": "^2.12.0"
}
},
"node_modules/@parcel/optimizer-svgo": {
- "version": "2.11.0",
- "resolved": "https://registry.npmjs.org/@parcel/optimizer-svgo/-/optimizer-svgo-2.11.0.tgz",
- "integrity": "sha512-TQpvfBhjV2IsuFHXUolbDS6XWB3DDR2rYTlqlA8LMmuOY7jQd9Bnkl4JnapzWm/bRuzRlzdGjjVCPGL8iShFvA==",
+ "version": "2.12.0",
+ "resolved": "https://registry.npmjs.org/@parcel/optimizer-svgo/-/optimizer-svgo-2.12.0.tgz",
+ "integrity": "sha512-Kyli+ZZXnoonnbeRQdoWwee9Bk2jm/49xvnfb+2OO8NN0d41lblBoRhOyFiScRnJrw7eVl1Xrz7NTkXCIO7XFQ==",
"dependencies": {
- "@parcel/diagnostic": "2.11.0",
- "@parcel/plugin": "2.11.0",
- "@parcel/utils": "2.11.0",
+ "@parcel/diagnostic": "2.12.0",
+ "@parcel/plugin": "2.12.0",
+ "@parcel/utils": "2.12.0",
"svgo": "^2.4.0"
},
"engines": {
"node": ">= 12.0.0",
- "parcel": "^2.11.0"
+ "parcel": "^2.12.0"
},
"funding": {
"type": "opencollective",
"url": "https://opencollective.com/parcel"
}
},
- "node_modules/@parcel/optimizer-svgo/node_modules/commander": {
- "version": "7.2.0",
- "resolved": "https://registry.npmjs.org/commander/-/commander-7.2.0.tgz",
- "integrity": "sha512-QrWXB+ZQSVPmIWIhtEO9H+gwHaMGYiF5ChvoJ+K9ZGHG/sVsa6yiesAD1GC/x46sET00Xlwo1u49RVVVzvcSkw==",
- "engines": {
- "node": ">= 10"
- }
- },
"node_modules/@parcel/optimizer-svgo/node_modules/css-select": {
"version": "4.3.0",
"resolved": "https://registry.npmjs.org/css-select/-/css-select-4.3.0.tgz",
@@ -2213,14 +2209,6 @@
"resolved": "https://registry.npmjs.org/mdn-data/-/mdn-data-2.0.14.tgz",
"integrity": "sha512-dn6wd0uw5GsdswPFfsgMp5NSB0/aDe6fK94YJV/AJDYXL6HVLWBsxeq7js7Ad+mU2K9LAlwpk6kN2D5mwCPVow=="
},
- "node_modules/@parcel/optimizer-svgo/node_modules/source-map": {
- "version": "0.6.1",
- "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.6.1.tgz",
- "integrity": "sha512-UjgapumWlbMhkBgzT7Ykc5YXUT46F0iKu8SGXq0bcwP5dz/h0Plj6enJqjz1Zbq2l5WaqYnrVbwWOWMyF3F47g==",
- "engines": {
- "node": ">=0.10.0"
- }
- },
"node_modules/@parcel/optimizer-svgo/node_modules/svgo": {
"version": "2.8.0",
"resolved": "https://registry.npmjs.org/svgo/-/svgo-2.8.0.tgz",
@@ -2242,20 +2230,20 @@
}
},
"node_modules/@parcel/optimizer-swc": {
- "version": "2.11.0",
- "resolved": "https://registry.npmjs.org/@parcel/optimizer-swc/-/optimizer-swc-2.11.0.tgz",
- "integrity": "sha512-ftf42F3JyZxJb6nnLlgNGyNQ273YOla4dFGH/tWC8iTwObHUpWe7cMbCGcrSJBvAlsLkZfLpFNAXFxUgxdKyHQ==",
+ "version": "2.12.0",
+ "resolved": "https://registry.npmjs.org/@parcel/optimizer-swc/-/optimizer-swc-2.12.0.tgz",
+ "integrity": "sha512-iBi6LZB3lm6WmbXfzi8J3DCVPmn4FN2lw7DGXxUXu7MouDPVWfTsM6U/5TkSHJRNRogZ2gqy5q9g34NPxHbJcw==",
"dependencies": {
- "@parcel/diagnostic": "2.11.0",
- "@parcel/plugin": "2.11.0",
+ "@parcel/diagnostic": "2.12.0",
+ "@parcel/plugin": "2.12.0",
"@parcel/source-map": "^2.1.1",
- "@parcel/utils": "2.11.0",
+ "@parcel/utils": "2.12.0",
"@swc/core": "^1.3.36",
"nullthrows": "^1.1.1"
},
"engines": {
"node": ">= 12.0.0",
- "parcel": "^2.11.0"
+ "parcel": "^2.12.0"
},
"funding": {
"type": "opencollective",
@@ -2263,17 +2251,18 @@
}
},
"node_modules/@parcel/package-manager": {
- "version": "2.11.0",
- "resolved": "https://registry.npmjs.org/@parcel/package-manager/-/package-manager-2.11.0.tgz",
- "integrity": "sha512-QzdsrUYlAwIzb8by7WJjqYnbR1MoMKWbtE1MXUeYsZbFusV8B6pOH+lwqNJKS/BFtddZMRPYFueZS2N2fwzjig==",
- "dependencies": {
- "@parcel/diagnostic": "2.11.0",
- "@parcel/fs": "2.11.0",
- "@parcel/logger": "2.11.0",
- "@parcel/node-resolver-core": "3.2.0",
- "@parcel/types": "2.11.0",
- "@parcel/utils": "2.11.0",
- "@parcel/workers": "2.11.0",
+ "version": "2.12.0",
+ "resolved": "https://registry.npmjs.org/@parcel/package-manager/-/package-manager-2.12.0.tgz",
+ "integrity": "sha512-0nvAezcjPx9FT+hIL+LS1jb0aohwLZXct7jAh7i0MLMtehOi0z1Sau+QpgMlA9rfEZZ1LIeFdnZZwqSy7Ccspw==",
+ "dependencies": {
+ "@parcel/diagnostic": "2.12.0",
+ "@parcel/fs": "2.12.0",
+ "@parcel/logger": "2.12.0",
+ "@parcel/node-resolver-core": "3.3.0",
+ "@parcel/types": "2.12.0",
+ "@parcel/utils": "2.12.0",
+ "@parcel/workers": "2.12.0",
+ "@swc/core": "^1.3.36",
"semver": "^7.5.2"
},
"engines": {
@@ -2284,37 +2273,24 @@
"url": "https://opencollective.com/parcel"
},
"peerDependencies": {
- "@parcel/core": "^2.11.0"
- }
- },
- "node_modules/@parcel/package-manager/node_modules/semver": {
- "version": "7.6.0",
- "resolved": "https://registry.npmjs.org/semver/-/semver-7.6.0.tgz",
- "integrity": "sha512-EnwXhrlwXMk9gKu5/flx5sv/an57AkRplG3hTK68W7FRDN+k+OWBj65M7719OkA82XLBxrcX0KSHj+X5COhOVg==",
- "dependencies": {
- "lru-cache": "^6.0.0"
- },
- "bin": {
- "semver": "bin/semver.js"
- },
- "engines": {
- "node": ">=10"
+ "@parcel/core": "^2.12.0"
}
},
"node_modules/@parcel/packager-css": {
- "version": "2.11.0",
- "resolved": "https://registry.npmjs.org/@parcel/packager-css/-/packager-css-2.11.0.tgz",
- "integrity": "sha512-AyIxsp4eL8c22vp2oO2hSRnr3hSVNkARNZc9DG6uXxCc2Is5tUEX0I4PwxWnAx0EI44l+3zX/o414zT8yV9wwQ==",
+ "version": "2.12.0",
+ "resolved": "https://registry.npmjs.org/@parcel/packager-css/-/packager-css-2.12.0.tgz",
+ "integrity": "sha512-j3a/ODciaNKD19IYdWJT+TP+tnhhn5koBGBWWtrKSu0UxWpnezIGZetit3eE+Y9+NTePalMkvpIlit2eDhvfJA==",
"dependencies": {
- "@parcel/diagnostic": "2.11.0",
- "@parcel/plugin": "2.11.0",
+ "@parcel/diagnostic": "2.12.0",
+ "@parcel/plugin": "2.12.0",
"@parcel/source-map": "^2.1.1",
- "@parcel/utils": "2.11.0",
+ "@parcel/utils": "2.12.0",
+ "lightningcss": "^1.22.1",
"nullthrows": "^1.1.1"
},
"engines": {
"node": ">= 12.0.0",
- "parcel": "^2.11.0"
+ "parcel": "^2.12.0"
},
"funding": {
"type": "opencollective",
@@ -2322,19 +2298,19 @@
}
},
"node_modules/@parcel/packager-html": {
- "version": "2.11.0",
- "resolved": "https://registry.npmjs.org/@parcel/packager-html/-/packager-html-2.11.0.tgz",
- "integrity": "sha512-ho5AQ70naTV8IqkKIbKtK+jsXQ5TJfFgtBvmJlyB3YydRMbIc+3g4G0xgIvf15V4uCMw9Md0Sv1W65nQXHPQoA==",
+ "version": "2.12.0",
+ "resolved": "https://registry.npmjs.org/@parcel/packager-html/-/packager-html-2.12.0.tgz",
+ "integrity": "sha512-PpvGB9hFFe+19NXGz2ApvPrkA9GwEqaDAninT+3pJD57OVBaxB8U+HN4a5LICKxjUppPPqmrLb6YPbD65IX4RA==",
"dependencies": {
- "@parcel/plugin": "2.11.0",
- "@parcel/types": "2.11.0",
- "@parcel/utils": "2.11.0",
+ "@parcel/plugin": "2.12.0",
+ "@parcel/types": "2.12.0",
+ "@parcel/utils": "2.12.0",
"nullthrows": "^1.1.1",
"posthtml": "^0.16.5"
},
"engines": {
"node": ">= 12.0.0",
- "parcel": "^2.11.0"
+ "parcel": "^2.12.0"
},
"funding": {
"type": "opencollective",
@@ -2342,22 +2318,22 @@
}
},
"node_modules/@parcel/packager-js": {
- "version": "2.11.0",
- "resolved": "https://registry.npmjs.org/@parcel/packager-js/-/packager-js-2.11.0.tgz",
- "integrity": "sha512-SxjCsd0xQfg5H73YtVJj9VOpr9s0rwMsSoeykjkatbkEla9NsZajsUkd/bfYf+/0WvEKOrB8oUBo15HkGOgKug==",
+ "version": "2.12.0",
+ "resolved": "https://registry.npmjs.org/@parcel/packager-js/-/packager-js-2.12.0.tgz",
+ "integrity": "sha512-viMF+FszITRRr8+2iJyk+4ruGiL27Y6AF7hQ3xbJfzqnmbOhGFtLTQwuwhOLqN/mWR2VKdgbLpZSarWaO3yAMg==",
"dependencies": {
- "@parcel/diagnostic": "2.11.0",
- "@parcel/plugin": "2.11.0",
- "@parcel/rust": "2.11.0",
+ "@parcel/diagnostic": "2.12.0",
+ "@parcel/plugin": "2.12.0",
+ "@parcel/rust": "2.12.0",
"@parcel/source-map": "^2.1.1",
- "@parcel/types": "2.11.0",
- "@parcel/utils": "2.11.0",
+ "@parcel/types": "2.12.0",
+ "@parcel/utils": "2.12.0",
"globals": "^13.2.0",
"nullthrows": "^1.1.1"
},
"engines": {
"node": ">= 12.0.0",
- "parcel": "^2.11.0"
+ "parcel": "^2.12.0"
},
"funding": {
"type": "opencollective",
@@ -2365,15 +2341,15 @@
}
},
"node_modules/@parcel/packager-raw": {
- "version": "2.11.0",
- "resolved": "https://registry.npmjs.org/@parcel/packager-raw/-/packager-raw-2.11.0.tgz",
- "integrity": "sha512-2/0JQ8DZrz7cVNXwD6OYoUUtSSnlr4dsz8ZkpFDKsBJhvMHtC78Sq+1EDixDGOMiUcalSEjNsoHtkpq9uNh+Xw==",
+ "version": "2.12.0",
+ "resolved": "https://registry.npmjs.org/@parcel/packager-raw/-/packager-raw-2.12.0.tgz",
+ "integrity": "sha512-tJZqFbHqP24aq1F+OojFbQIc09P/u8HAW5xfndCrFnXpW4wTgM3p03P0xfw3gnNq+TtxHJ8c3UFE5LnXNNKhYA==",
"dependencies": {
- "@parcel/plugin": "2.11.0"
+ "@parcel/plugin": "2.12.0"
},
"engines": {
"node": ">= 12.0.0",
- "parcel": "^2.11.0"
+ "parcel": "^2.12.0"
},
"funding": {
"type": "opencollective",
@@ -2381,16 +2357,16 @@
}
},
"node_modules/@parcel/packager-raw-url": {
- "version": "2.11.0",
- "resolved": "https://registry.npmjs.org/@parcel/packager-raw-url/-/packager-raw-url-2.11.0.tgz",
- "integrity": "sha512-CAa+zTXRotlAgb0eRg//NBVaXRsomWowl7weWeOgRDCq80gqPLAli9k5N9l+048gBiY+OORRtMRM32QgO59tfg==",
+ "version": "2.12.0",
+ "resolved": "https://registry.npmjs.org/@parcel/packager-raw-url/-/packager-raw-url-2.12.0.tgz",
+ "integrity": "sha512-sH7cvLbotS+qknhQUCGfd9mslQr4KcanlZE5CgzM0uGn3SnyZoKznqHrbouzgnIP/LHgXKOKmMaNjPLtVe4rcA==",
"dependencies": {
- "@parcel/plugin": "2.11.0",
- "@parcel/utils": "2.11.0"
+ "@parcel/plugin": "2.12.0",
+ "@parcel/utils": "2.12.0"
},
"engines": {
"node": ">= 12.0.0",
- "parcel": "^2.11.0"
+ "parcel": "^2.12.0"
},
"funding": {
"type": "opencollective",
@@ -2398,18 +2374,34 @@
}
},
"node_modules/@parcel/packager-svg": {
- "version": "2.11.0",
- "resolved": "https://registry.npmjs.org/@parcel/packager-svg/-/packager-svg-2.11.0.tgz",
- "integrity": "sha512-2wQBkzLwcaWFGWz8TP+bgsXgiueWPzrjKsWugWdDfq0FbXh8XVeR/599qnus3RFHZy4cH6L6yq/7zxcljtxK8A==",
+ "version": "2.12.0",
+ "resolved": "https://registry.npmjs.org/@parcel/packager-svg/-/packager-svg-2.12.0.tgz",
+ "integrity": "sha512-ldaGiacGb2lLqcXas97k8JiZRbAnNREmcvoY2W2dvW4loVuDT9B9fU777mbV6zODpcgcHWsLL3lYbJ5Lt3y9cg==",
"dependencies": {
- "@parcel/plugin": "2.11.0",
- "@parcel/types": "2.11.0",
- "@parcel/utils": "2.11.0",
+ "@parcel/plugin": "2.12.0",
+ "@parcel/types": "2.12.0",
+ "@parcel/utils": "2.12.0",
"posthtml": "^0.16.4"
},
"engines": {
"node": ">= 12.0.0",
- "parcel": "^2.11.0"
+ "parcel": "^2.12.0"
+ },
+ "funding": {
+ "type": "opencollective",
+ "url": "https://opencollective.com/parcel"
+ }
+ },
+ "node_modules/@parcel/packager-ts": {
+ "version": "2.12.0",
+ "resolved": "https://registry.npmjs.org/@parcel/packager-ts/-/packager-ts-2.12.0.tgz",
+ "integrity": "sha512-8wR0BNN2NBD+IIU0tjioK+lRD4p2Qi/fKxDH5ixEW912tRV+Vd4kE8k++U6YQIpSlK4FRnjFod5zYYhNSLuiXg==",
+ "dependencies": {
+ "@parcel/plugin": "2.12.0"
+ },
+ "engines": {
+ "node": ">= 12.0.0",
+ "parcel": "^2.12.0"
},
"funding": {
"type": "opencollective",
@@ -2417,15 +2409,34 @@
}
},
"node_modules/@parcel/packager-wasm": {
- "version": "2.11.0",
- "resolved": "https://registry.npmjs.org/@parcel/packager-wasm/-/packager-wasm-2.11.0.tgz",
- "integrity": "sha512-tTy4EbDXeeiZ0oB7L2FWaHSD1mbmYZP6R5HXqkvc5dECGUKPU5Jz6ek2C5AM+HfQdQLKXPQ/Xw3eJnI/AmctVg==",
+ "version": "2.12.0",
+ "resolved": "https://registry.npmjs.org/@parcel/packager-wasm/-/packager-wasm-2.12.0.tgz",
+ "integrity": "sha512-fYqZzIqO9fGYveeImzF8ll6KRo2LrOXfD+2Y5U3BiX/wp9wv17dz50QLDQm9hmTcKGWxK4yWqKQh+Evp/fae7A==",
"dependencies": {
- "@parcel/plugin": "2.11.0"
+ "@parcel/plugin": "2.12.0"
},
"engines": {
"node": ">=12.0.0",
- "parcel": "^2.11.0"
+ "parcel": "^2.12.0"
+ },
+ "funding": {
+ "type": "opencollective",
+ "url": "https://opencollective.com/parcel"
+ }
+ },
+ "node_modules/@parcel/packager-xml": {
+ "version": "2.12.0",
+ "resolved": "https://registry.npmjs.org/@parcel/packager-xml/-/packager-xml-2.12.0.tgz",
+ "integrity": "sha512-k5/5IkvtmFGvgjDLZE6EVJBntxVfifUGw2UdM1DNChYdEuo18Ch3dcXTTRJim5wfjB0ZXscL12xV0JOeSiolSw==",
+ "dependencies": {
+ "@parcel/plugin": "2.12.0",
+ "@parcel/types": "2.12.0",
+ "@parcel/utils": "2.12.0",
+ "@xmldom/xmldom": "^0.7.9"
+ },
+ "engines": {
+ "node": ">= 12.0.0",
+ "parcel": "^2.12.0"
},
"funding": {
"type": "opencollective",
@@ -2433,11 +2444,11 @@
}
},
"node_modules/@parcel/plugin": {
- "version": "2.11.0",
- "resolved": "https://registry.npmjs.org/@parcel/plugin/-/plugin-2.11.0.tgz",
- "integrity": "sha512-9npuKBlhnPn7oeUpLJGecceg16GkXbvzbr6MNSZiHhkx3IBeITHQXlZnp2zAjUOFreNsYOfifwEF2S4KsARfBQ==",
+ "version": "2.12.0",
+ "resolved": "https://registry.npmjs.org/@parcel/plugin/-/plugin-2.12.0.tgz",
+ "integrity": "sha512-nc/uRA8DiMoe4neBbzV6kDndh/58a4wQuGKw5oEoIwBCHUvE2W8ZFSu7ollSXUGRzfacTt4NdY8TwS73ScWZ+g==",
"dependencies": {
- "@parcel/types": "2.11.0"
+ "@parcel/types": "2.12.0"
},
"engines": {
"node": ">= 12.0.0"
@@ -2448,12 +2459,12 @@
}
},
"node_modules/@parcel/profiler": {
- "version": "2.11.0",
- "resolved": "https://registry.npmjs.org/@parcel/profiler/-/profiler-2.11.0.tgz",
- "integrity": "sha512-s10SS09prOdwnaAcjK8M5zO8o+zPJJW5oOqXPNdf6KH4NGD/ue7iOk2xM8QLw6ulSwxE7NDt++lyfW3AXgCZwg==",
+ "version": "2.12.0",
+ "resolved": "https://registry.npmjs.org/@parcel/profiler/-/profiler-2.12.0.tgz",
+ "integrity": "sha512-q53fvl5LDcFYzMUtSusUBZSjQrKjMlLEBgKeQHFwkimwR1mgoseaDBDuNz0XvmzDzF1UelJ02TUKCGacU8W2qA==",
"dependencies": {
- "@parcel/diagnostic": "2.11.0",
- "@parcel/events": "2.11.0",
+ "@parcel/diagnostic": "2.12.0",
+ "@parcel/events": "2.12.0",
"chrome-trace-event": "^1.0.2"
},
"engines": {
@@ -2465,16 +2476,16 @@
}
},
"node_modules/@parcel/reporter-dev-server": {
- "version": "2.11.0",
- "resolved": "https://registry.npmjs.org/@parcel/reporter-dev-server/-/reporter-dev-server-2.11.0.tgz",
- "integrity": "sha512-T4ue1+oLFNdcd9maw8QWQuxzOS2kX2jOrSvYKwYd9oGnqiAr1rpiHYYKJhHng+PF5ybwWkj8dUJfGh2NoQysJA==",
+ "version": "2.12.0",
+ "resolved": "https://registry.npmjs.org/@parcel/reporter-dev-server/-/reporter-dev-server-2.12.0.tgz",
+ "integrity": "sha512-tIcDqRvAPAttRlTV28dHcbWT5K2r/MBFks7nM4nrEDHWtnrCwimkDmZTc1kD8QOCCjGVwRHcQybpHvxfwol6GA==",
"dependencies": {
- "@parcel/plugin": "2.11.0",
- "@parcel/utils": "2.11.0"
+ "@parcel/plugin": "2.12.0",
+ "@parcel/utils": "2.12.0"
},
"engines": {
"node": ">= 12.0.0",
- "parcel": "^2.11.0"
+ "parcel": "^2.12.0"
},
"funding": {
"type": "opencollective",
@@ -2482,16 +2493,16 @@
}
},
"node_modules/@parcel/resolver-default": {
- "version": "2.11.0",
- "resolved": "https://registry.npmjs.org/@parcel/resolver-default/-/resolver-default-2.11.0.tgz",
- "integrity": "sha512-suZNN2lE5W48LPTwAbG7gnj1IeubkCVEm0XspWXcXUtCzglimNJ8PVVBGx171o5CqDpdbGF3AqHjG9N3uOwXag==",
+ "version": "2.12.0",
+ "resolved": "https://registry.npmjs.org/@parcel/resolver-default/-/resolver-default-2.12.0.tgz",
+ "integrity": "sha512-uuhbajTax37TwCxu7V98JtRLiT6hzE4VYSu5B7Qkauy14/WFt2dz6GOUXPgVsED569/hkxebPx3KCMtZW6cHHA==",
"dependencies": {
- "@parcel/node-resolver-core": "3.2.0",
- "@parcel/plugin": "2.11.0"
+ "@parcel/node-resolver-core": "3.3.0",
+ "@parcel/plugin": "2.12.0"
},
"engines": {
"node": ">= 12.0.0",
- "parcel": "^2.11.0"
+ "parcel": "^2.12.0"
},
"funding": {
"type": "opencollective",
@@ -2499,16 +2510,16 @@
}
},
"node_modules/@parcel/runtime-browser-hmr": {
- "version": "2.11.0",
- "resolved": "https://registry.npmjs.org/@parcel/runtime-browser-hmr/-/runtime-browser-hmr-2.11.0.tgz",
- "integrity": "sha512-uVwNBtoLMrlPHLvRS05BVhLseduMOpZT36yiIjS0YSBJcC6/otI9AY7ZiDPYmrB5xTqM0R+D554JhPaJHCuocw==",
+ "version": "2.12.0",
+ "resolved": "https://registry.npmjs.org/@parcel/runtime-browser-hmr/-/runtime-browser-hmr-2.12.0.tgz",
+ "integrity": "sha512-4ZLp2FWyD32r0GlTulO3+jxgsA3oO1P1b5oO2IWuWilfhcJH5LTiazpL5YdusUjtNn9PGN6QLAWfxmzRIfM+Ow==",
"dependencies": {
- "@parcel/plugin": "2.11.0",
- "@parcel/utils": "2.11.0"
+ "@parcel/plugin": "2.12.0",
+ "@parcel/utils": "2.12.0"
},
"engines": {
"node": ">= 12.0.0",
- "parcel": "^2.11.0"
+ "parcel": "^2.12.0"
},
"funding": {
"type": "opencollective",
@@ -2516,18 +2527,18 @@
}
},
"node_modules/@parcel/runtime-js": {
- "version": "2.11.0",
- "resolved": "https://registry.npmjs.org/@parcel/runtime-js/-/runtime-js-2.11.0.tgz",
- "integrity": "sha512-fH3nJoexINz7s4cDzp0Vjsx0k1pMYSa5ch38LbbNqCKTermy0pS0zZuvgfLfHFFP+AMRpFQenrF7h7N3bgDmHw==",
+ "version": "2.12.0",
+ "resolved": "https://registry.npmjs.org/@parcel/runtime-js/-/runtime-js-2.12.0.tgz",
+ "integrity": "sha512-sBerP32Z1crX5PfLNGDSXSdqzlllM++GVnVQVeM7DgMKS8JIFG3VLi28YkX+dYYGtPypm01JoIHCkvwiZEcQJg==",
"dependencies": {
- "@parcel/diagnostic": "2.11.0",
- "@parcel/plugin": "2.11.0",
- "@parcel/utils": "2.11.0",
+ "@parcel/diagnostic": "2.12.0",
+ "@parcel/plugin": "2.12.0",
+ "@parcel/utils": "2.12.0",
"nullthrows": "^1.1.1"
},
"engines": {
"node": ">= 12.0.0",
- "parcel": "^2.11.0"
+ "parcel": "^2.12.0"
},
"funding": {
"type": "opencollective",
@@ -2535,18 +2546,18 @@
}
},
"node_modules/@parcel/runtime-react-refresh": {
- "version": "2.11.0",
- "resolved": "https://registry.npmjs.org/@parcel/runtime-react-refresh/-/runtime-react-refresh-2.11.0.tgz",
- "integrity": "sha512-Kfnc7gLjhoephLMnjABrkIkzVfzPrpJlxiJFIleY2Fm57YhmCfKsEYxm3lHOutNaYl1VArW0LKClPH/VHG9vfQ==",
+ "version": "2.12.0",
+ "resolved": "https://registry.npmjs.org/@parcel/runtime-react-refresh/-/runtime-react-refresh-2.12.0.tgz",
+ "integrity": "sha512-SCHkcczJIDFTFdLTzrHTkQ0aTrX3xH6jrA4UsCBL6ji61+w+ohy4jEEe9qCgJVXhnJfGLE43HNXek+0MStX+Mw==",
"dependencies": {
- "@parcel/plugin": "2.11.0",
- "@parcel/utils": "2.11.0",
+ "@parcel/plugin": "2.12.0",
+ "@parcel/utils": "2.12.0",
"react-error-overlay": "6.0.9",
"react-refresh": "^0.9.0"
},
"engines": {
"node": ">= 12.0.0",
- "parcel": "^2.11.0"
+ "parcel": "^2.12.0"
},
"funding": {
"type": "opencollective",
@@ -2554,17 +2565,17 @@
}
},
"node_modules/@parcel/runtime-service-worker": {
- "version": "2.11.0",
- "resolved": "https://registry.npmjs.org/@parcel/runtime-service-worker/-/runtime-service-worker-2.11.0.tgz",
- "integrity": "sha512-c8MaSpSbXIKuN5sA/g4UsrsH1BtBZ6Em+eSxt9AYbdPtWrW+qwCioNVZj9lugBRUzDMjVfJz0yK59nS42hABvw==",
+ "version": "2.12.0",
+ "resolved": "https://registry.npmjs.org/@parcel/runtime-service-worker/-/runtime-service-worker-2.12.0.tgz",
+ "integrity": "sha512-BXuMBsfiwpIEnssn+jqfC3jkgbS8oxeo3C7xhSQsuSv+AF2FwY3O3AO1c1RBskEW3XrBLNINOJujroNw80VTKA==",
"dependencies": {
- "@parcel/plugin": "2.11.0",
- "@parcel/utils": "2.11.0",
+ "@parcel/plugin": "2.12.0",
+ "@parcel/utils": "2.12.0",
"nullthrows": "^1.1.1"
},
"engines": {
"node": ">= 12.0.0",
- "parcel": "^2.11.0"
+ "parcel": "^2.12.0"
},
"funding": {
"type": "opencollective",
@@ -2572,9 +2583,9 @@
}
},
"node_modules/@parcel/rust": {
- "version": "2.11.0",
- "resolved": "https://registry.npmjs.org/@parcel/rust/-/rust-2.11.0.tgz",
- "integrity": "sha512-UkLWdHOD8Md2YmJDPsqd3yIs9chhdl/ATfV/B/xdPKGmqtNouYpDCRlq+WxMt3mLoYgHEg9UwrWLTebo2rr2iQ==",
+ "version": "2.12.0",
+ "resolved": "https://registry.npmjs.org/@parcel/rust/-/rust-2.12.0.tgz",
+ "integrity": "sha512-005cldMdFZFDPOjbDVEXcINQ3wT4vrxvSavRWI3Az0e3E18exO/x/mW9f648KtXugOXMAqCEqhFHcXECL9nmMw==",
"engines": {
"node": ">= 12.0.0"
},
@@ -2595,14 +2606,14 @@
}
},
"node_modules/@parcel/transformer-babel": {
- "version": "2.11.0",
- "resolved": "https://registry.npmjs.org/@parcel/transformer-babel/-/transformer-babel-2.11.0.tgz",
- "integrity": "sha512-WKGblnp7r426VG+cpeQzc6dj/30EoUaYwyl4OEaigQSJizyuPWTBWTz6FUw+ih1/sg37h+D1BIh9C2FsVzpzbw==",
+ "version": "2.12.0",
+ "resolved": "https://registry.npmjs.org/@parcel/transformer-babel/-/transformer-babel-2.12.0.tgz",
+ "integrity": "sha512-zQaBfOnf/l8rPxYGnsk/ufh/0EuqvmnxafjBIpKZ//j6rGylw5JCqXSb1QvvAqRYruKeccxGv7+HrxpqKU6V4A==",
"dependencies": {
- "@parcel/diagnostic": "2.11.0",
- "@parcel/plugin": "2.11.0",
+ "@parcel/diagnostic": "2.12.0",
+ "@parcel/plugin": "2.12.0",
"@parcel/source-map": "^2.1.1",
- "@parcel/utils": "2.11.0",
+ "@parcel/utils": "2.12.0",
"browserslist": "^4.6.6",
"json5": "^2.2.0",
"nullthrows": "^1.1.1",
@@ -2610,115 +2621,170 @@
},
"engines": {
"node": ">= 12.0.0",
- "parcel": "^2.11.0"
+ "parcel": "^2.12.0"
},
"funding": {
"type": "opencollective",
"url": "https://opencollective.com/parcel"
}
},
- "node_modules/@parcel/transformer-babel/node_modules/semver": {
- "version": "7.6.0",
- "resolved": "https://registry.npmjs.org/semver/-/semver-7.6.0.tgz",
- "integrity": "sha512-EnwXhrlwXMk9gKu5/flx5sv/an57AkRplG3hTK68W7FRDN+k+OWBj65M7719OkA82XLBxrcX0KSHj+X5COhOVg==",
+ "node_modules/@parcel/transformer-coffeescript": {
+ "version": "2.12.0",
+ "resolved": "https://registry.npmjs.org/@parcel/transformer-coffeescript/-/transformer-coffeescript-2.12.0.tgz",
+ "integrity": "sha512-F+xo76q/y28eMIR4NmIO0Gzdmr+nvrR8q+4KbIaMljLPRI3fuhKClF/TCCc8/HY1sC2DlGKSJFFanxovHsoYhQ==",
"dependencies": {
- "lru-cache": "^6.0.0"
- },
- "bin": {
- "semver": "bin/semver.js"
+ "@parcel/plugin": "2.12.0",
+ "@parcel/source-map": "^2.1.1",
+ "@parcel/utils": "2.12.0",
+ "coffeescript": "^2.0.3",
+ "nullthrows": "^1.1.1",
+ "semver": "^7.5.2"
},
"engines": {
- "node": ">=10"
+ "node": ">= 12.0.0",
+ "parcel": "^2.12.0"
+ },
+ "funding": {
+ "type": "opencollective",
+ "url": "https://opencollective.com/parcel"
}
},
"node_modules/@parcel/transformer-css": {
- "version": "2.11.0",
- "resolved": "https://registry.npmjs.org/@parcel/transformer-css/-/transformer-css-2.11.0.tgz",
- "integrity": "sha512-nFmBulF/ErNoafO87JbVrBavjBMNwE/kahbCRVxc2Mvlphz4F4lBW4eDRS5l4xBqFJaNkHr9R55ehLBBilF4Jw==",
+ "version": "2.12.0",
+ "resolved": "https://registry.npmjs.org/@parcel/transformer-css/-/transformer-css-2.12.0.tgz",
+ "integrity": "sha512-vXhOqoAlQGATYyQ433Z1DXKmiKmzOAUmKysbYH3FD+LKEKLMEl/pA14goqp00TW+A/EjtSKKyeMyHlMIIUqj4Q==",
"dependencies": {
- "@parcel/diagnostic": "2.11.0",
- "@parcel/plugin": "2.11.0",
+ "@parcel/diagnostic": "2.12.0",
+ "@parcel/plugin": "2.12.0",
"@parcel/source-map": "^2.1.1",
- "@parcel/utils": "2.11.0",
+ "@parcel/utils": "2.12.0",
"browserslist": "^4.6.6",
"lightningcss": "^1.22.1",
"nullthrows": "^1.1.1"
},
"engines": {
"node": ">= 12.0.0",
- "parcel": "^2.11.0"
+ "parcel": "^2.12.0"
},
"funding": {
"type": "opencollective",
"url": "https://opencollective.com/parcel"
}
},
- "node_modules/@parcel/transformer-html": {
- "version": "2.11.0",
- "resolved": "https://registry.npmjs.org/@parcel/transformer-html/-/transformer-html-2.11.0.tgz",
- "integrity": "sha512-90vp7mbvvfqPr9XIINpMcELtywj56f1bxfOkLQgWU1bm22H0FT3i5dqdac++2My0IGDvMwhAEjQfbn4pA579NQ==",
+ "node_modules/@parcel/transformer-elm": {
+ "version": "2.12.0",
+ "resolved": "https://registry.npmjs.org/@parcel/transformer-elm/-/transformer-elm-2.12.0.tgz",
+ "integrity": "sha512-qqVTsP860FghYTLBrJkrFKD7qbNUq/EqUCofFKLWgWSrMXfzTmsNwMCOStTF4NyclLWcC9KBVjNU+fGS5I519Q==",
"dependencies": {
- "@parcel/diagnostic": "2.11.0",
- "@parcel/plugin": "2.11.0",
- "@parcel/rust": "2.11.0",
+ "@parcel/diagnostic": "2.12.0",
+ "@parcel/plugin": "2.12.0",
+ "command-exists": "^1.2.8",
+ "cross-spawn": "^7.0.3",
+ "elm-hot": "^1.1.5",
+ "node-elm-compiler": "^5.0.5",
"nullthrows": "^1.1.1",
- "posthtml": "^0.16.5",
- "posthtml-parser": "^0.10.1",
- "posthtml-render": "^3.0.0",
- "semver": "^7.5.2",
- "srcset": "4"
+ "terser": "^5.14.2"
},
"engines": {
"node": ">= 12.0.0",
- "parcel": "^2.11.0"
+ "parcel": "^2.12.0"
},
"funding": {
"type": "opencollective",
"url": "https://opencollective.com/parcel"
+ },
+ "peerDependencies": {
+ "elm": "^0.19.1-5"
}
},
- "node_modules/@parcel/transformer-html/node_modules/semver": {
- "version": "7.6.0",
- "resolved": "https://registry.npmjs.org/semver/-/semver-7.6.0.tgz",
- "integrity": "sha512-EnwXhrlwXMk9gKu5/flx5sv/an57AkRplG3hTK68W7FRDN+k+OWBj65M7719OkA82XLBxrcX0KSHj+X5COhOVg==",
+ "node_modules/@parcel/transformer-glsl": {
+ "version": "2.12.0",
+ "resolved": "https://registry.npmjs.org/@parcel/transformer-glsl/-/transformer-glsl-2.12.0.tgz",
+ "integrity": "sha512-aW87AaJZWASkTL1Dq2M2rSmKRIUd0q6gJx5yd9jKIEmAI47ffFUGCPjvQNecHCGkgO0GBCeINtOShz7MThKvjg==",
"dependencies": {
- "lru-cache": "^6.0.0"
+ "@parcel/plugin": "2.12.0",
+ "glslify-bundle": "^5.1.1",
+ "glslify-deps": "^1.3.2"
},
- "bin": {
- "semver": "bin/semver.js"
+ "engines": {
+ "node": ">= 12.0.0",
+ "parcel": "^2.12.0"
+ },
+ "funding": {
+ "type": "opencollective",
+ "url": "https://opencollective.com/parcel"
+ }
+ },
+ "node_modules/@parcel/transformer-graphql": {
+ "version": "2.12.0",
+ "resolved": "https://registry.npmjs.org/@parcel/transformer-graphql/-/transformer-graphql-2.12.0.tgz",
+ "integrity": "sha512-o4A/Vl5fnekVV+Ft7OskbXHjxs3ve72ew5NBwQ0sx3oNcoYmAbepP5iH2Mh7G2bjeUCNYWE5z+jnO0FNM53QWw==",
+ "dependencies": {
+ "@parcel/plugin": "2.12.0",
+ "graphql": "^15.0.0",
+ "graphql-import-macro": "^1.0.0"
},
"engines": {
- "node": ">=10"
+ "node": ">= 12.0.0",
+ "parcel": "^2.12.0"
+ },
+ "funding": {
+ "type": "opencollective",
+ "url": "https://opencollective.com/parcel"
+ }
+ },
+ "node_modules/@parcel/transformer-html": {
+ "version": "2.12.0",
+ "resolved": "https://registry.npmjs.org/@parcel/transformer-html/-/transformer-html-2.12.0.tgz",
+ "integrity": "sha512-5jW4dFFBlYBvIQk4nrH62rfA/G/KzVzEDa6S+Nne0xXhglLjkm64Ci9b/d4tKZfuGWUbpm2ASAq8skti/nfpXw==",
+ "dependencies": {
+ "@parcel/diagnostic": "2.12.0",
+ "@parcel/plugin": "2.12.0",
+ "@parcel/rust": "2.12.0",
+ "nullthrows": "^1.1.1",
+ "posthtml": "^0.16.5",
+ "posthtml-parser": "^0.10.1",
+ "posthtml-render": "^3.0.0",
+ "semver": "^7.5.2",
+ "srcset": "4"
+ },
+ "engines": {
+ "node": ">= 12.0.0",
+ "parcel": "^2.12.0"
+ },
+ "funding": {
+ "type": "opencollective",
+ "url": "https://opencollective.com/parcel"
}
},
"node_modules/@parcel/transformer-image": {
- "version": "2.11.0",
- "resolved": "https://registry.npmjs.org/@parcel/transformer-image/-/transformer-image-2.11.0.tgz",
- "integrity": "sha512-QiZj18UHf3lVFsi65Vz8YbS3ydx9Pe9x8ktMxE1oh9qpznN8lD7gE/Z9DxuTZB84EZ9pKytKwcv5WGXP25xIFg==",
+ "version": "2.12.0",
+ "resolved": "https://registry.npmjs.org/@parcel/transformer-image/-/transformer-image-2.12.0.tgz",
+ "integrity": "sha512-8hXrGm2IRII49R7lZ0RpmNk27EhcsH+uNKsvxuMpXPuEnWgC/ha/IrjaI29xCng1uGur74bJF43NUSQhR4aTdw==",
"dependencies": {
- "@parcel/plugin": "2.11.0",
- "@parcel/utils": "2.11.0",
- "@parcel/workers": "2.11.0",
+ "@parcel/plugin": "2.12.0",
+ "@parcel/utils": "2.12.0",
+ "@parcel/workers": "2.12.0",
"nullthrows": "^1.1.1"
},
"engines": {
"node": ">= 12.0.0",
- "parcel": "^2.11.0"
+ "parcel": "^2.12.0"
},
"peerDependencies": {
- "@parcel/core": "^2.11.0"
+ "@parcel/core": "^2.12.0"
}
},
"node_modules/@parcel/transformer-inline-string": {
- "version": "2.11.0",
- "resolved": "https://registry.npmjs.org/@parcel/transformer-inline-string/-/transformer-inline-string-2.11.0.tgz",
- "integrity": "sha512-yLLjVqS7/P/ySOOjwdl2mElNHmCtJK81+7mnoA2oLEsf4kTKlW3JnIvX5BqJj6Dy6Ek0V1M48E86T9U3fwzWzg==",
+ "version": "2.12.0",
+ "resolved": "https://registry.npmjs.org/@parcel/transformer-inline-string/-/transformer-inline-string-2.12.0.tgz",
+ "integrity": "sha512-FawH7Hgc7E8/Uc0t1UlFT2AdKdEQysu6OJp88NJixAqNhZT7G24OtKltM+VyayPxQZyLblPcp6TnYpY+Tz9VGA==",
"dependencies": {
- "@parcel/plugin": "2.11.0"
+ "@parcel/plugin": "2.12.0"
},
"engines": {
"node": ">= 12.0.0",
- "parcel": "^2.11.0"
+ "parcel": "^2.12.0"
},
"funding": {
"type": "opencollective",
@@ -2726,16 +2792,16 @@
}
},
"node_modules/@parcel/transformer-js": {
- "version": "2.11.0",
- "resolved": "https://registry.npmjs.org/@parcel/transformer-js/-/transformer-js-2.11.0.tgz",
- "integrity": "sha512-G1sv0n8/fJqHqwUs0iVnVdmRY0Kh8kWaDkuWcU/GJBHMGhUnLXKdNwxX2Av9UdBL14bU1nTINfr9qOfnQotXWg==",
+ "version": "2.12.0",
+ "resolved": "https://registry.npmjs.org/@parcel/transformer-js/-/transformer-js-2.12.0.tgz",
+ "integrity": "sha512-OSZpOu+FGDbC/xivu24v092D9w6EGytB3vidwbdiJ2FaPgfV7rxS0WIUjH4I0OcvHAcitArRXL0a3+HrNTdQQw==",
"dependencies": {
- "@parcel/diagnostic": "2.11.0",
- "@parcel/plugin": "2.11.0",
- "@parcel/rust": "2.11.0",
+ "@parcel/diagnostic": "2.12.0",
+ "@parcel/plugin": "2.12.0",
+ "@parcel/rust": "2.12.0",
"@parcel/source-map": "^2.1.1",
- "@parcel/utils": "2.11.0",
- "@parcel/workers": "2.11.0",
+ "@parcel/utils": "2.12.0",
+ "@parcel/workers": "2.12.0",
"@swc/helpers": "^0.5.0",
"browserslist": "^4.6.6",
"nullthrows": "^1.1.1",
@@ -2744,14 +2810,14 @@
},
"engines": {
"node": ">= 12.0.0",
- "parcel": "^2.11.0"
+ "parcel": "^2.12.0"
},
"funding": {
"type": "opencollective",
"url": "https://opencollective.com/parcel"
},
"peerDependencies": {
- "@parcel/core": "^2.11.0"
+ "@parcel/core": "^2.12.0"
}
},
"node_modules/@parcel/transformer-js/node_modules/regenerator-runtime": {
@@ -2759,81 +2825,89 @@
"resolved": "https://registry.npmjs.org/regenerator-runtime/-/regenerator-runtime-0.13.11.tgz",
"integrity": "sha512-kY1AZVr2Ra+t+piVaJ4gxaFaReZVH40AKNo7UCX6W+dEwBo/2oZJzqfuN1qLq1oL45o56cPaTXELwrTh8Fpggg=="
},
- "node_modules/@parcel/transformer-js/node_modules/semver": {
- "version": "7.6.0",
- "resolved": "https://registry.npmjs.org/semver/-/semver-7.6.0.tgz",
- "integrity": "sha512-EnwXhrlwXMk9gKu5/flx5sv/an57AkRplG3hTK68W7FRDN+k+OWBj65M7719OkA82XLBxrcX0KSHj+X5COhOVg==",
+ "node_modules/@parcel/transformer-json": {
+ "version": "2.12.0",
+ "resolved": "https://registry.npmjs.org/@parcel/transformer-json/-/transformer-json-2.12.0.tgz",
+ "integrity": "sha512-Utv64GLRCQILK5r0KFs4o7I41ixMPllwOLOhkdjJKvf1hZmN6WqfOmB1YLbWS/y5Zb/iB52DU2pWZm96vLFQZQ==",
"dependencies": {
- "lru-cache": "^6.0.0"
- },
- "bin": {
- "semver": "bin/semver.js"
+ "@parcel/plugin": "2.12.0",
+ "json5": "^2.2.0"
},
"engines": {
- "node": ">=10"
+ "node": ">= 12.0.0",
+ "parcel": "^2.12.0"
+ },
+ "funding": {
+ "type": "opencollective",
+ "url": "https://opencollective.com/parcel"
}
},
- "node_modules/@parcel/transformer-json": {
- "version": "2.11.0",
- "resolved": "https://registry.npmjs.org/@parcel/transformer-json/-/transformer-json-2.11.0.tgz",
- "integrity": "sha512-Wt/wgSBaRWmPL4gpvjkV0bCBRxFOtsuLNzsm8vYA5poxTFhuLY+AoyQ8S2+xXU4VxwBfdppfIr2Ny3SwGs8xbQ==",
+ "node_modules/@parcel/transformer-jsonld": {
+ "version": "2.12.0",
+ "resolved": "https://registry.npmjs.org/@parcel/transformer-jsonld/-/transformer-jsonld-2.12.0.tgz",
+ "integrity": "sha512-f/k8ODjthQt83yq1K11MibgVVIBXWr5JDvWuWOcbOKel0AmSbTYB3fb2kYGDSGkQ9XElUvRDaOfecb8GN8am8g==",
"dependencies": {
- "@parcel/plugin": "2.11.0",
+ "@parcel/plugin": "2.12.0",
+ "@parcel/types": "2.12.0",
"json5": "^2.2.0"
},
"engines": {
"node": ">= 12.0.0",
- "parcel": "^2.11.0"
+ "parcel": "^2.12.0"
},
"funding": {
"type": "opencollective",
"url": "https://opencollective.com/parcel"
}
},
- "node_modules/@parcel/transformer-postcss": {
- "version": "2.11.0",
- "resolved": "https://registry.npmjs.org/@parcel/transformer-postcss/-/transformer-postcss-2.11.0.tgz",
- "integrity": "sha512-Ugy8XHBaUptGotsvwzq7gPCvkCopTIqqZ0JZ40Jmy9slGms8wnx06pNHA1Be/RcJwkJ2TbSu+7ncZdgmP5x5GQ==",
+ "node_modules/@parcel/transformer-less": {
+ "version": "2.12.0",
+ "resolved": "https://registry.npmjs.org/@parcel/transformer-less/-/transformer-less-2.12.0.tgz",
+ "integrity": "sha512-eBgDLKX+5HU2IhZxdKabUflt2Aza8ZlV70G95GPZAW80PKlXPHxI10JTlYLAUiUy3G38TM3dvL6W0FhtCRbgSQ==",
"dependencies": {
- "@parcel/diagnostic": "2.11.0",
- "@parcel/plugin": "2.11.0",
- "@parcel/rust": "2.11.0",
- "@parcel/utils": "2.11.0",
- "clone": "^2.1.1",
- "nullthrows": "^1.1.1",
- "postcss-value-parser": "^4.2.0",
- "semver": "^7.5.2"
+ "@parcel/plugin": "2.12.0",
+ "@parcel/source-map": "^2.1.1",
+ "less": "^4.1.1"
},
"engines": {
"node": ">= 12.0.0",
- "parcel": "^2.11.0"
+ "parcel": "^2.12.0"
},
"funding": {
"type": "opencollective",
"url": "https://opencollective.com/parcel"
}
},
- "node_modules/@parcel/transformer-postcss/node_modules/semver": {
- "version": "7.6.0",
- "resolved": "https://registry.npmjs.org/semver/-/semver-7.6.0.tgz",
- "integrity": "sha512-EnwXhrlwXMk9gKu5/flx5sv/an57AkRplG3hTK68W7FRDN+k+OWBj65M7719OkA82XLBxrcX0KSHj+X5COhOVg==",
- "dependencies": {
- "lru-cache": "^6.0.0"
- },
- "bin": {
- "semver": "bin/semver.js"
+ "node_modules/@parcel/transformer-postcss": {
+ "version": "2.12.0",
+ "resolved": "https://registry.npmjs.org/@parcel/transformer-postcss/-/transformer-postcss-2.12.0.tgz",
+ "integrity": "sha512-FZqn+oUtiLfPOn67EZxPpBkfdFiTnF4iwiXPqvst3XI8H+iC+yNgzmtJkunOOuylpYY6NOU5jT8d7saqWSDv2Q==",
+ "dependencies": {
+ "@parcel/diagnostic": "2.12.0",
+ "@parcel/plugin": "2.12.0",
+ "@parcel/rust": "2.12.0",
+ "@parcel/utils": "2.12.0",
+ "clone": "^2.1.1",
+ "nullthrows": "^1.1.1",
+ "postcss-value-parser": "^4.2.0",
+ "semver": "^7.5.2"
},
"engines": {
- "node": ">=10"
+ "node": ">= 12.0.0",
+ "parcel": "^2.12.0"
+ },
+ "funding": {
+ "type": "opencollective",
+ "url": "https://opencollective.com/parcel"
}
},
"node_modules/@parcel/transformer-posthtml": {
- "version": "2.11.0",
- "resolved": "https://registry.npmjs.org/@parcel/transformer-posthtml/-/transformer-posthtml-2.11.0.tgz",
- "integrity": "sha512-dMK4p1RRAoIJEjK/Wz9GOLqwHqdD/VQDhMPk+6sUKp5zf2MhSohUstpp5gKsSZivCM3PS2f8k9rgroacJ/ReuA==",
+ "version": "2.12.0",
+ "resolved": "https://registry.npmjs.org/@parcel/transformer-posthtml/-/transformer-posthtml-2.12.0.tgz",
+ "integrity": "sha512-z6Z7rav/pcaWdeD+2sDUcd0mmNZRUvtHaUGa50Y2mr+poxrKilpsnFMSiWBT+oOqPt7j71jzDvrdnAF4XkCljg==",
"dependencies": {
- "@parcel/plugin": "2.11.0",
- "@parcel/utils": "2.11.0",
+ "@parcel/plugin": "2.12.0",
+ "@parcel/utils": "2.12.0",
"nullthrows": "^1.1.1",
"posthtml": "^0.16.5",
"posthtml-parser": "^0.10.1",
@@ -2842,37 +2916,40 @@
},
"engines": {
"node": ">= 12.0.0",
- "parcel": "^2.11.0"
+ "parcel": "^2.12.0"
},
"funding": {
"type": "opencollective",
"url": "https://opencollective.com/parcel"
}
},
- "node_modules/@parcel/transformer-posthtml/node_modules/semver": {
- "version": "7.6.0",
- "resolved": "https://registry.npmjs.org/semver/-/semver-7.6.0.tgz",
- "integrity": "sha512-EnwXhrlwXMk9gKu5/flx5sv/an57AkRplG3hTK68W7FRDN+k+OWBj65M7719OkA82XLBxrcX0KSHj+X5COhOVg==",
+ "node_modules/@parcel/transformer-pug": {
+ "version": "2.12.0",
+ "resolved": "https://registry.npmjs.org/@parcel/transformer-pug/-/transformer-pug-2.12.0.tgz",
+ "integrity": "sha512-aiWpfPYIhAAhYU+A29pHMMSc/HE688djX3olVc3MJXjQH49j4XUF1u4QnqMTTrKPHYgSQCXxdGWWljoifMH4iQ==",
"dependencies": {
- "lru-cache": "^6.0.0"
- },
- "bin": {
- "semver": "bin/semver.js"
+ "@parcel/plugin": "2.12.0",
+ "pug": "^3.0.2"
},
"engines": {
- "node": ">=10"
+ "node": ">= 12.0.0",
+ "parcel": "^2.12.0"
+ },
+ "funding": {
+ "type": "opencollective",
+ "url": "https://opencollective.com/parcel"
}
},
"node_modules/@parcel/transformer-raw": {
- "version": "2.11.0",
- "resolved": "https://registry.npmjs.org/@parcel/transformer-raw/-/transformer-raw-2.11.0.tgz",
- "integrity": "sha512-2ltp3TgS+cxEqSM1vk5gDtJrYx4KMuRRtbSgSvkdldyOgPhflnLU3/HRz72hXSNGqYOV0/JN0+ocsfPnqR00ug==",
+ "version": "2.12.0",
+ "resolved": "https://registry.npmjs.org/@parcel/transformer-raw/-/transformer-raw-2.12.0.tgz",
+ "integrity": "sha512-Ht1fQvXxix0NncdnmnXZsa6hra20RXYh1VqhBYZLsDfkvGGFnXIgO03Jqn4Z8MkKoa0tiNbDhpKIeTjyclbBxQ==",
"dependencies": {
- "@parcel/plugin": "2.11.0"
+ "@parcel/plugin": "2.12.0"
},
"engines": {
"node": ">= 12.0.0",
- "parcel": "^2.11.0"
+ "parcel": "^2.12.0"
},
"funding": {
"type": "opencollective",
@@ -2880,17 +2957,17 @@
}
},
"node_modules/@parcel/transformer-react-refresh-wrap": {
- "version": "2.11.0",
- "resolved": "https://registry.npmjs.org/@parcel/transformer-react-refresh-wrap/-/transformer-react-refresh-wrap-2.11.0.tgz",
- "integrity": "sha512-6pY0CdIgIpXC6XpsDWizf+zLgiuEsJ106HjWLwF7/R72BrvDhLPZ6jRu4UTrnd6bM89KahPw9fZZzjKoA5Efcw==",
+ "version": "2.12.0",
+ "resolved": "https://registry.npmjs.org/@parcel/transformer-react-refresh-wrap/-/transformer-react-refresh-wrap-2.12.0.tgz",
+ "integrity": "sha512-GE8gmP2AZtkpBIV5vSCVhewgOFRhqwdM5Q9jNPOY5PKcM3/Ff0qCqDiTzzGLhk0/VMBrdjssrfZkVx6S/lHdJw==",
"dependencies": {
- "@parcel/plugin": "2.11.0",
- "@parcel/utils": "2.11.0",
+ "@parcel/plugin": "2.12.0",
+ "@parcel/utils": "2.12.0",
"react-refresh": "^0.9.0"
},
"engines": {
"node": ">= 12.0.0",
- "parcel": "^2.11.0"
+ "parcel": "^2.12.0"
},
"funding": {
"type": "opencollective",
@@ -2898,17 +2975,53 @@
}
},
"node_modules/@parcel/transformer-sass": {
- "version": "2.11.0",
- "resolved": "https://registry.npmjs.org/@parcel/transformer-sass/-/transformer-sass-2.11.0.tgz",
- "integrity": "sha512-caVIj1UANPgtlZOXcsBrQ++ouAy04hcq+wTwxJrf5t3XA4pdXQmkiLs5WIIUUGBp5hwkV6/BSwc4ht87MunA0g==",
+ "version": "2.12.0",
+ "resolved": "https://registry.npmjs.org/@parcel/transformer-sass/-/transformer-sass-2.12.0.tgz",
+ "integrity": "sha512-xLLoSLPST+2AHJwFRLl4foArDjjy6P1RChP3TxMU2MVS1sbKGJnfFhFpHAacH8ASjuGtu5rbpfpHRZePlvoZxw==",
"dependencies": {
- "@parcel/plugin": "2.11.0",
+ "@parcel/plugin": "2.12.0",
"@parcel/source-map": "^2.1.1",
"sass": "^1.38.0"
},
"engines": {
"node": ">= 12.0.0",
- "parcel": "^2.11.0"
+ "parcel": "^2.12.0"
+ },
+ "funding": {
+ "type": "opencollective",
+ "url": "https://opencollective.com/parcel"
+ }
+ },
+ "node_modules/@parcel/transformer-stylus": {
+ "version": "2.12.0",
+ "resolved": "https://registry.npmjs.org/@parcel/transformer-stylus/-/transformer-stylus-2.12.0.tgz",
+ "integrity": "sha512-sqhYAodncAj5KG7UG4zb9pMspCAA5xSX4fIosIvpEqbTLGaVdxSQ8qZk+8mv5879Q8x0xsQGxFFwNJx5ZEiYMg==",
+ "dependencies": {
+ "@parcel/plugin": "2.12.0",
+ "@parcel/utils": "2.12.0",
+ "stylus": "^0.55.0"
+ },
+ "engines": {
+ "node": ">= 12.0.0",
+ "parcel": "^2.12.0"
+ },
+ "funding": {
+ "type": "opencollective",
+ "url": "https://opencollective.com/parcel"
+ }
+ },
+ "node_modules/@parcel/transformer-sugarss": {
+ "version": "2.12.0",
+ "resolved": "https://registry.npmjs.org/@parcel/transformer-sugarss/-/transformer-sugarss-2.12.0.tgz",
+ "integrity": "sha512-gpKzN4zOXCVlgeGq59yPfJWtFi94niwfSF9h1LdVKqrPH1Bc5xvza0felxVTcpSAu0IhgTUXZJx5Hsjgbp4XJg==",
+ "dependencies": {
+ "@parcel/plugin": "2.12.0",
+ "postcss": "^8.4.5",
+ "sugarss": "^3.0.3"
+ },
+ "engines": {
+ "node": ">= 12.0.0",
+ "parcel": "^2.12.0"
},
"funding": {
"type": "opencollective",
@@ -2916,13 +3029,13 @@
}
},
"node_modules/@parcel/transformer-svg": {
- "version": "2.11.0",
- "resolved": "https://registry.npmjs.org/@parcel/transformer-svg/-/transformer-svg-2.11.0.tgz",
- "integrity": "sha512-GrTNi04OoQSXsyrB7FqQPeYREscEXFhIBPkyQ0q7WDG/yYynWljiA0kwITCtMjPfv2EDVks292dvM3EcnERRIA==",
+ "version": "2.12.0",
+ "resolved": "https://registry.npmjs.org/@parcel/transformer-svg/-/transformer-svg-2.12.0.tgz",
+ "integrity": "sha512-cZJqGRJ4JNdYcb+vj94J7PdOuTnwyy45dM9xqbIMH+HSiiIkfrMsdEwYft0GTyFTdsnf+hdHn3tau7Qa5hhX+A==",
"dependencies": {
- "@parcel/diagnostic": "2.11.0",
- "@parcel/plugin": "2.11.0",
- "@parcel/rust": "2.11.0",
+ "@parcel/diagnostic": "2.12.0",
+ "@parcel/plugin": "2.12.0",
+ "@parcel/rust": "2.12.0",
"nullthrows": "^1.1.1",
"posthtml": "^0.16.5",
"posthtml-parser": "^0.10.1",
@@ -2931,39 +3044,89 @@
},
"engines": {
"node": ">= 12.0.0",
- "parcel": "^2.11.0"
+ "parcel": "^2.12.0"
},
"funding": {
"type": "opencollective",
"url": "https://opencollective.com/parcel"
}
},
- "node_modules/@parcel/transformer-svg/node_modules/semver": {
- "version": "7.6.0",
- "resolved": "https://registry.npmjs.org/semver/-/semver-7.6.0.tgz",
- "integrity": "sha512-EnwXhrlwXMk9gKu5/flx5sv/an57AkRplG3hTK68W7FRDN+k+OWBj65M7719OkA82XLBxrcX0KSHj+X5COhOVg==",
+ "node_modules/@parcel/transformer-toml": {
+ "version": "2.12.0",
+ "resolved": "https://registry.npmjs.org/@parcel/transformer-toml/-/transformer-toml-2.12.0.tgz",
+ "integrity": "sha512-v+7U0UD+qLKzSWVfl7KUSVBTgw9aZiy/XJ6OfeSrWHovuZXVA4EsFYibrhHdM9B3WEUXemVmJc5fWA5vXrPkXA==",
"dependencies": {
- "lru-cache": "^6.0.0"
+ "@iarna/toml": "^2.2.3",
+ "@parcel/plugin": "2.12.0"
},
- "bin": {
- "semver": "bin/semver.js"
+ "engines": {
+ "node": ">= 12.0.0",
+ "parcel": "^2.12.0"
+ },
+ "funding": {
+ "type": "opencollective",
+ "url": "https://opencollective.com/parcel"
+ }
+ },
+ "node_modules/@parcel/transformer-typescript-types": {
+ "version": "2.12.0",
+ "resolved": "https://registry.npmjs.org/@parcel/transformer-typescript-types/-/transformer-typescript-types-2.12.0.tgz",
+ "integrity": "sha512-uxF4UBMYvbjiV3zHTWMrZX8cFD92VUvD3ArcGi5WEtuVROUm9Sc47o0mOzxKfMFlJu2KOfZVHYlzK9f/UKA2kQ==",
+ "dependencies": {
+ "@parcel/diagnostic": "2.12.0",
+ "@parcel/plugin": "2.12.0",
+ "@parcel/source-map": "^2.1.1",
+ "@parcel/ts-utils": "2.12.0",
+ "@parcel/utils": "2.12.0",
+ "nullthrows": "^1.1.1"
},
"engines": {
- "node": ">=10"
+ "node": ">= 12.0.0",
+ "parcel": "^2.12.0"
+ },
+ "funding": {
+ "type": "opencollective",
+ "url": "https://opencollective.com/parcel"
+ },
+ "peerDependencies": {
+ "typescript": ">=3.0.0"
+ }
+ },
+ "node_modules/@parcel/transformer-vue": {
+ "version": "2.12.0",
+ "resolved": "https://registry.npmjs.org/@parcel/transformer-vue/-/transformer-vue-2.12.0.tgz",
+ "integrity": "sha512-WZNlNUDymAD+3b2BOGHRsW66rlmW7E9QXa6CTrkPnR6gXX1c9lY7srxSt1Lb+c8zDJHr4Gw7Y0kz8gj921S/aQ==",
+ "dependencies": {
+ "@parcel/diagnostic": "2.12.0",
+ "@parcel/plugin": "2.12.0",
+ "@parcel/source-map": "^2.1.1",
+ "@parcel/utils": "2.12.0",
+ "@vue/compiler-sfc": "^3.2.27",
+ "consolidate": "^0.16.0",
+ "nullthrows": "^1.1.1",
+ "semver": "^7.5.2"
+ },
+ "engines": {
+ "node": ">= 12.0.0",
+ "parcel": "^2.12.0"
+ },
+ "funding": {
+ "type": "opencollective",
+ "url": "https://opencollective.com/parcel"
}
},
"node_modules/@parcel/transformer-webmanifest": {
- "version": "2.11.0",
- "resolved": "https://registry.npmjs.org/@parcel/transformer-webmanifest/-/transformer-webmanifest-2.11.0.tgz",
- "integrity": "sha512-15DAZX1NOT30L8yzbmYJxwWtHprQ8Zpg5+981IlS6X0YbsdIFq4BRhjfO+ZNOP0tDJe2pjJjcxPAtbubG5MJAw==",
+ "version": "2.12.0",
+ "resolved": "https://registry.npmjs.org/@parcel/transformer-webmanifest/-/transformer-webmanifest-2.12.0.tgz",
+ "integrity": "sha512-suiUv9DDEpyryHtzahbIeJSZTIeE/t4cdrU0Ikb/O46wsy5RLo59nE4E6TGWM84R7fQO8m/MhzeQM5Y3NV6jKg==",
"dependencies": {
"@mischnic/json-sourcemap": "^0.1.0",
- "@parcel/diagnostic": "2.11.0",
- "@parcel/plugin": "2.11.0",
- "@parcel/utils": "2.11.0"
+ "@parcel/diagnostic": "2.12.0",
+ "@parcel/plugin": "2.12.0",
+ "@parcel/utils": "2.12.0"
},
"engines": {
- "parcel": "^2.11.0"
+ "parcel": "^2.12.0"
},
"funding": {
"type": "opencollective",
@@ -2971,45 +3134,117 @@
}
},
"node_modules/@parcel/transformer-worklet": {
- "version": "2.11.0",
- "resolved": "https://registry.npmjs.org/@parcel/transformer-worklet/-/transformer-worklet-2.11.0.tgz",
- "integrity": "sha512-smcB5MBqXtiAZOx8JCCYbNUk5kHMW8f39zAWNKkkrlbcPqUxS2vnXl4rEf3CCriarfc41Mfp5D0wOkhUAXu+rw==",
+ "version": "2.12.0",
+ "resolved": "https://registry.npmjs.org/@parcel/transformer-worklet/-/transformer-worklet-2.12.0.tgz",
+ "integrity": "sha512-+IodC0EUN0mHfLOEsrUPK0lr1b5fSvZfAXh+FMqiXvJo4jziRq5Lb+HZbgCfp5DnD5BH0VxLAxdd8QUyAt4Gog==",
"dependencies": {
- "@parcel/plugin": "2.11.0"
+ "@parcel/plugin": "2.12.0"
},
"engines": {
"node": ">= 12.0.0",
- "parcel": "^2.11.0"
+ "parcel": "^2.12.0"
},
"funding": {
"type": "opencollective",
"url": "https://opencollective.com/parcel"
}
},
- "node_modules/@parcel/types": {
- "version": "2.11.0",
- "resolved": "https://registry.npmjs.org/@parcel/types/-/types-2.11.0.tgz",
- "integrity": "sha512-lN5XlfV9b1s2rli8q1LqsLtu+D4ZwNI3sKmNcL/3tohSfQcF2EgF+MaiANGo9VzXOzoWFHt4dqWjO4OcdyC5tg==",
+ "node_modules/@parcel/transformer-xml": {
+ "version": "2.12.0",
+ "resolved": "https://registry.npmjs.org/@parcel/transformer-xml/-/transformer-xml-2.12.0.tgz",
+ "integrity": "sha512-iey1GEg1LJ7M9y/4TPHoYskf3Hi8uIkQl+yCIzRQahlZWdw4PoNKGeWt1khh9FzhF6K0SvUUDVfRmmuOkqJIhw==",
"dependencies": {
- "@parcel/cache": "2.11.0",
- "@parcel/diagnostic": "2.11.0",
- "@parcel/fs": "2.11.0",
- "@parcel/package-manager": "2.11.0",
+ "@parcel/plugin": "2.12.0",
+ "@xmldom/xmldom": "^0.7.9"
+ },
+ "engines": {
+ "node": ">= 12.0.0",
+ "parcel": "^2.12.0"
+ },
+ "funding": {
+ "type": "opencollective",
+ "url": "https://opencollective.com/parcel"
+ }
+ },
+ "node_modules/@parcel/transformer-yaml": {
+ "version": "2.12.0",
+ "resolved": "https://registry.npmjs.org/@parcel/transformer-yaml/-/transformer-yaml-2.12.0.tgz",
+ "integrity": "sha512-iD43BNH7rtQdIDzV6mgHLrAgHo4BLFxzSF10rXR225mzQi+TPiKDmW/nPr6aW7Tne544qTkRYmoCARC5X/S++w==",
+ "dependencies": {
+ "@parcel/plugin": "2.12.0",
+ "js-yaml": "^3.10.0"
+ },
+ "engines": {
+ "node": ">= 12.0.0",
+ "parcel": "^2.12.0"
+ },
+ "funding": {
+ "type": "opencollective",
+ "url": "https://opencollective.com/parcel"
+ }
+ },
+ "node_modules/@parcel/transformer-yaml/node_modules/argparse": {
+ "version": "1.0.10",
+ "resolved": "https://registry.npmjs.org/argparse/-/argparse-1.0.10.tgz",
+ "integrity": "sha512-o5Roy6tNG4SL/FOkCAN6RzjiakZS25RLYFrcMttJqbdd8BWrnA+fGz57iN5Pb06pvBGvl5gQ0B48dJlslXvoTg==",
+ "dependencies": {
+ "sprintf-js": "~1.0.2"
+ }
+ },
+ "node_modules/@parcel/transformer-yaml/node_modules/js-yaml": {
+ "version": "3.14.1",
+ "resolved": "https://registry.npmjs.org/js-yaml/-/js-yaml-3.14.1.tgz",
+ "integrity": "sha512-okMH7OXXJ7YrN9Ok3/SXrnu4iX9yOk+25nqX4imS2npuvTYDmo/QEZoqwZkYaIDk3jVvBOTOIEgEhaLOynBS9g==",
+ "dependencies": {
+ "argparse": "^1.0.7",
+ "esprima": "^4.0.0"
+ },
+ "bin": {
+ "js-yaml": "bin/js-yaml.js"
+ }
+ },
+ "node_modules/@parcel/ts-utils": {
+ "version": "2.12.0",
+ "resolved": "https://registry.npmjs.org/@parcel/ts-utils/-/ts-utils-2.12.0.tgz",
+ "integrity": "sha512-zou+W6dcqnXXUOfN5zGM+ePIWbYOhGp8bVB2jICoNkoKmNAHd4l4zeHl5yQXnbZfynVw88cZVqxtXS8tYebelg==",
+ "dependencies": {
+ "nullthrows": "^1.1.1"
+ },
+ "engines": {
+ "node": ">= 12.0.0"
+ },
+ "funding": {
+ "type": "opencollective",
+ "url": "https://opencollective.com/parcel"
+ },
+ "peerDependencies": {
+ "typescript": ">=3.0.0"
+ }
+ },
+ "node_modules/@parcel/types": {
+ "version": "2.12.0",
+ "resolved": "https://registry.npmjs.org/@parcel/types/-/types-2.12.0.tgz",
+ "integrity": "sha512-8zAFiYNCwNTQcglIObyNwKfRYQK5ELlL13GuBOrSMxueUiI5ylgsGbTS1N7J3dAGZixHO8KhHGv5a71FILn9rQ==",
+ "dependencies": {
+ "@parcel/cache": "2.12.0",
+ "@parcel/diagnostic": "2.12.0",
+ "@parcel/fs": "2.12.0",
+ "@parcel/package-manager": "2.12.0",
"@parcel/source-map": "^2.1.1",
- "@parcel/workers": "2.11.0",
+ "@parcel/workers": "2.12.0",
"utility-types": "^3.10.0"
}
},
"node_modules/@parcel/utils": {
- "version": "2.11.0",
- "resolved": "https://registry.npmjs.org/@parcel/utils/-/utils-2.11.0.tgz",
- "integrity": "sha512-AcL70cXlIyE7eQdvjQbYxegN5l+skqvlJllxTWg4YkIZe9p8Gmv74jLAeLWh5F+IGl5WRn0TSy9JhNJjIMQGwQ==",
- "dependencies": {
- "@parcel/codeframe": "2.11.0",
- "@parcel/diagnostic": "2.11.0",
- "@parcel/logger": "2.11.0",
- "@parcel/markdown-ansi": "2.11.0",
- "@parcel/rust": "2.11.0",
+ "version": "2.12.0",
+ "resolved": "https://registry.npmjs.org/@parcel/utils/-/utils-2.12.0.tgz",
+ "integrity": "sha512-z1JhLuZ8QmDaYoEIuUCVZlhcFrS7LMfHrb2OCRui5SQFntRWBH2fNM6H/fXXUkT9SkxcuFP2DUA6/m4+Gkz72g==",
+ "dependencies": {
+ "@parcel/codeframe": "2.12.0",
+ "@parcel/diagnostic": "2.12.0",
+ "@parcel/logger": "2.12.0",
+ "@parcel/markdown-ansi": "2.12.0",
+ "@parcel/rust": "2.12.0",
"@parcel/source-map": "^2.1.1",
"chalk": "^4.1.0",
"nullthrows": "^1.1.1"
@@ -3284,15 +3519,15 @@
}
},
"node_modules/@parcel/workers": {
- "version": "2.11.0",
- "resolved": "https://registry.npmjs.org/@parcel/workers/-/workers-2.11.0.tgz",
- "integrity": "sha512-wjybqdSy6Nk0N9iBGsFcp7739W2zvx0WGfVxPVShqhz46pIkPOiFF/iSn+kFu5EmMKTRWeUif42+a6rRZ7pCnQ==",
- "dependencies": {
- "@parcel/diagnostic": "2.11.0",
- "@parcel/logger": "2.11.0",
- "@parcel/profiler": "2.11.0",
- "@parcel/types": "2.11.0",
- "@parcel/utils": "2.11.0",
+ "version": "2.12.0",
+ "resolved": "https://registry.npmjs.org/@parcel/workers/-/workers-2.12.0.tgz",
+ "integrity": "sha512-zv5We5Jmb+ZWXlU6A+AufyjY4oZckkxsZ8J4dvyWL0W8IQvGO1JB4FGeryyttzQv3RM3OxcN/BpTGPiDG6keBw==",
+ "dependencies": {
+ "@parcel/diagnostic": "2.12.0",
+ "@parcel/logger": "2.12.0",
+ "@parcel/profiler": "2.12.0",
+ "@parcel/types": "2.12.0",
+ "@parcel/utils": "2.12.0",
"nullthrows": "^1.1.1"
},
"engines": {
@@ -3303,7 +3538,7 @@
"url": "https://opencollective.com/parcel"
},
"peerDependencies": {
- "@parcel/core": "^2.11.0"
+ "@parcel/core": "^2.12.0"
}
},
"node_modules/@protobufjs/aspromise": {
@@ -3386,6 +3621,27 @@
"@reldens/utils": "^0.32.0"
}
},
+ "node_modules/@reldens/items-system/node_modules/@reldens/storage": {
+ "version": "0.24.0",
+ "resolved": "https://registry.npmjs.org/@reldens/storage/-/storage-0.24.0.tgz",
+ "integrity": "sha512-kd7COpaK4nd0zgXNuRxycqkyU4+knA/HVjUL/wfiHKXO4DVqtIonqOuYRljqpD+tHyI22tCrOI0jxY0Xzqaw3A==",
+ "dependencies": {
+ "@mikro-orm/core": "^6.2.5",
+ "@mikro-orm/mongodb": "^6.2.5",
+ "@reldens/utils": "^0.32.0",
+ "knex": "^3.1.0",
+ "mysql": "^2.18.1",
+ "objection": "^3.1.4"
+ }
+ },
+ "node_modules/@reldens/items-system/node_modules/@reldens/utils": {
+ "version": "0.32.0",
+ "resolved": "https://registry.npmjs.org/@reldens/utils/-/utils-0.32.0.tgz",
+ "integrity": "sha512-CeF7rI40vamjAv0tTyCXOEVLUaJ3icWNnv4SvJNyqYfcRUR2ZWClHnDMyZmCHtYOniLpZJb+CuPmEDDvBKOZ4w==",
+ "dependencies": {
+ "await-event-emitter": "^2.0.2"
+ }
+ },
"node_modules/@reldens/modifiers": {
"version": "0.22.0",
"resolved": "https://registry.npmjs.org/@reldens/modifiers/-/modifiers-0.22.0.tgz",
@@ -3403,44 +3659,23 @@
}
},
"node_modules/@reldens/skills": {
- "version": "0.26.0",
- "resolved": "https://registry.npmjs.org/@reldens/skills/-/skills-0.26.0.tgz",
- "integrity": "sha512-9T06zutgXt5uGLLrn64vIBBDB67eWkljqJYaNlTuO6DzemQ3+xET1QlIk8xyFE+3RvmQQPTe69FoMfDCMCu2Qg==",
+ "version": "0.27.0",
+ "resolved": "https://registry.npmjs.org/@reldens/skills/-/skills-0.27.0.tgz",
+ "integrity": "sha512-jaJggyd01MtHoIrytt88OJ+nW4AW+R9PSx4p0AXWMBXusOERQlG01JeBdNvbdLeHjn6CDU4DZlxe6E0nwLDd3g==",
"dependencies": {
"@reldens/modifiers": "^0.22.0",
- "@reldens/storage": "^0.20.0",
- "@reldens/utils": "^0.30.0"
- }
- },
- "node_modules/@reldens/skills/node_modules/@reldens/storage": {
- "version": "0.20.0",
- "resolved": "https://registry.npmjs.org/@reldens/storage/-/storage-0.20.0.tgz",
- "integrity": "sha512-llwdg+lmWGqdjVOj/tpR7pT/lbJMTFDlrYnxkNdwYjQVcnVdgylJs4YJCmkiulFSvcde2FxTGXAMNzruyuqD6w==",
- "dependencies": {
- "@mikro-orm/core": "^6.2.0",
- "@mikro-orm/mongodb": "^6.2.0",
- "@reldens/utils": "^0.30.0",
- "knex": "^3.1.0",
- "mysql": "^2.18.1",
- "objection": "^3.1.4"
- }
- },
- "node_modules/@reldens/skills/node_modules/@reldens/utils": {
- "version": "0.30.0",
- "resolved": "https://registry.npmjs.org/@reldens/utils/-/utils-0.30.0.tgz",
- "integrity": "sha512-GM7pgHXODgG2EKzYKRJv9PDACHku8LT613kB4iCfo0pzvzfvqr6e8JIHCeQxerNGAbqw9UcU2BBU3EFKzkojog==",
- "dependencies": {
- "await-event-emitter": "^2.0.2"
+ "@reldens/storage": "^0.25.0",
+ "@reldens/utils": "^0.33.0"
}
},
"node_modules/@reldens/storage": {
- "version": "0.24.0",
- "resolved": "https://registry.npmjs.org/@reldens/storage/-/storage-0.24.0.tgz",
- "integrity": "sha512-kd7COpaK4nd0zgXNuRxycqkyU4+knA/HVjUL/wfiHKXO4DVqtIonqOuYRljqpD+tHyI22tCrOI0jxY0Xzqaw3A==",
+ "version": "0.25.0",
+ "resolved": "https://registry.npmjs.org/@reldens/storage/-/storage-0.25.0.tgz",
+ "integrity": "sha512-c1TXO91hw7URS7MciJV7YIcR9/7CDeOAQLIBctSO9NexZitBEIdoFLcglJHziaDX6MtaYil9YPtdJSDonKRfNA==",
"dependencies": {
- "@mikro-orm/core": "^6.2.5",
- "@mikro-orm/mongodb": "^6.2.5",
- "@reldens/utils": "^0.32.0",
+ "@mikro-orm/core": "^6.2.9",
+ "@mikro-orm/mongodb": "^6.2.9",
+ "@reldens/utils": "^0.33.0",
"knex": "^3.1.0",
"mysql": "^2.18.1",
"objection": "^3.1.4"
@@ -3456,6 +3691,14 @@
"pathfinding": "0.4.18"
}
},
+ "node_modules/@reldens/tile-map-generator/node_modules/@reldens/utils": {
+ "version": "0.32.0",
+ "resolved": "https://registry.npmjs.org/@reldens/utils/-/utils-0.32.0.tgz",
+ "integrity": "sha512-CeF7rI40vamjAv0tTyCXOEVLUaJ3icWNnv4SvJNyqYfcRUR2ZWClHnDMyZmCHtYOniLpZJb+CuPmEDDvBKOZ4w==",
+ "dependencies": {
+ "await-event-emitter": "^2.0.2"
+ }
+ },
"node_modules/@reldens/tile-map-optimizer": {
"version": "0.16.0",
"resolved": "https://registry.npmjs.org/@reldens/tile-map-optimizer/-/tile-map-optimizer-0.16.0.tgz",
@@ -3465,7 +3708,7 @@
"sharp": "0.33.3"
}
},
- "node_modules/@reldens/utils": {
+ "node_modules/@reldens/tile-map-optimizer/node_modules/@reldens/utils": {
"version": "0.32.0",
"resolved": "https://registry.npmjs.org/@reldens/utils/-/utils-0.32.0.tgz",
"integrity": "sha512-CeF7rI40vamjAv0tTyCXOEVLUaJ3icWNnv4SvJNyqYfcRUR2ZWClHnDMyZmCHtYOniLpZJb+CuPmEDDvBKOZ4w==",
@@ -3473,6 +3716,14 @@
"await-event-emitter": "^2.0.2"
}
},
+ "node_modules/@reldens/utils": {
+ "version": "0.33.0",
+ "resolved": "https://registry.npmjs.org/@reldens/utils/-/utils-0.33.0.tgz",
+ "integrity": "sha512-zehb0d0NYOfPvlrYBKYQZTci3X7nQp1Ut4TTiLKEhVrF4Hx32VC8kjG1KUevFGweJr1pOLT6Ny91WyPcpSUXlA==",
+ "dependencies": {
+ "await-event-emitter": "^2.0.2"
+ }
+ },
"node_modules/@sendgrid/client": {
"version": "8.1.3",
"resolved": "https://registry.npmjs.org/@sendgrid/client/-/client-8.1.3.tgz",
@@ -3763,9 +4014,9 @@
"integrity": "sha512-CiJJvcRtIgzadHCYXw7dqEnMNRjhGZlYK05Mj9OyktqV8uVT8fD2BFOB7S1uwBE3Kj2Z+4UyPmFw/Ixgw/LAlA=="
},
"node_modules/@types/whatwg-url": {
- "version": "11.0.4",
- "resolved": "https://registry.npmjs.org/@types/whatwg-url/-/whatwg-url-11.0.4.tgz",
- "integrity": "sha512-lXCmTWSHJvf0TRSO58nm978b8HJ/EdsSsEKLd3ODHFjo+3VGAyyTp4v50nWvwtzBxSMQrVOK7tcuN0zGPLICMw==",
+ "version": "11.0.5",
+ "resolved": "https://registry.npmjs.org/@types/whatwg-url/-/whatwg-url-11.0.5.tgz",
+ "integrity": "sha512-coYR071JRaHa+xoEvvYqvnIHaVqaYrLPbsufM9BF63HkwI5Lgmy2QR8Q5K/lYDYo5AK82wOvSOS0UsLTpTG7uQ==",
"dependencies": {
"@types/webidl-conversions": "*"
}
@@ -3778,6 +4029,76 @@
"@types/node": "*"
}
},
+ "node_modules/@vue/compiler-core": {
+ "version": "3.4.27",
+ "resolved": "https://registry.npmjs.org/@vue/compiler-core/-/compiler-core-3.4.27.tgz",
+ "integrity": "sha512-E+RyqY24KnyDXsCuQrI+mlcdW3ALND6U7Gqa/+bVwbcpcR3BRRIckFoz7Qyd4TTlnugtwuI7YgjbvsLmxb+yvg==",
+ "dependencies": {
+ "@babel/parser": "^7.24.4",
+ "@vue/shared": "3.4.27",
+ "entities": "^4.5.0",
+ "estree-walker": "^2.0.2",
+ "source-map-js": "^1.2.0"
+ }
+ },
+ "node_modules/@vue/compiler-core/node_modules/entities": {
+ "version": "4.5.0",
+ "resolved": "https://registry.npmjs.org/entities/-/entities-4.5.0.tgz",
+ "integrity": "sha512-V0hjH4dGPh9Ao5p0MoRY6BVqtwCjhz6vI5LT8AJ55H+4g9/4vbHx1I54fS0XuclLhDHArPQCiMjDxjaL8fPxhw==",
+ "engines": {
+ "node": ">=0.12"
+ },
+ "funding": {
+ "url": "https://github.com/fb55/entities?sponsor=1"
+ }
+ },
+ "node_modules/@vue/compiler-dom": {
+ "version": "3.4.27",
+ "resolved": "https://registry.npmjs.org/@vue/compiler-dom/-/compiler-dom-3.4.27.tgz",
+ "integrity": "sha512-kUTvochG/oVgE1w5ViSr3KUBh9X7CWirebA3bezTbB5ZKBQZwR2Mwj9uoSKRMFcz4gSMzzLXBPD6KpCLb9nvWw==",
+ "dependencies": {
+ "@vue/compiler-core": "3.4.27",
+ "@vue/shared": "3.4.27"
+ }
+ },
+ "node_modules/@vue/compiler-sfc": {
+ "version": "3.4.27",
+ "resolved": "https://registry.npmjs.org/@vue/compiler-sfc/-/compiler-sfc-3.4.27.tgz",
+ "integrity": "sha512-nDwntUEADssW8e0rrmE0+OrONwmRlegDA1pD6QhVeXxjIytV03yDqTey9SBDiALsvAd5U4ZrEKbMyVXhX6mCGA==",
+ "dependencies": {
+ "@babel/parser": "^7.24.4",
+ "@vue/compiler-core": "3.4.27",
+ "@vue/compiler-dom": "3.4.27",
+ "@vue/compiler-ssr": "3.4.27",
+ "@vue/shared": "3.4.27",
+ "estree-walker": "^2.0.2",
+ "magic-string": "^0.30.10",
+ "postcss": "^8.4.38",
+ "source-map-js": "^1.2.0"
+ }
+ },
+ "node_modules/@vue/compiler-ssr": {
+ "version": "3.4.27",
+ "resolved": "https://registry.npmjs.org/@vue/compiler-ssr/-/compiler-ssr-3.4.27.tgz",
+ "integrity": "sha512-CVRzSJIltzMG5FcidsW0jKNQnNRYC8bT21VegyMMtHmhW3UOI7knmUehzswXLrExDLE6lQCZdrhD4ogI7c+vuw==",
+ "dependencies": {
+ "@vue/compiler-dom": "3.4.27",
+ "@vue/shared": "3.4.27"
+ }
+ },
+ "node_modules/@vue/shared": {
+ "version": "3.4.27",
+ "resolved": "https://registry.npmjs.org/@vue/shared/-/shared-3.4.27.tgz",
+ "integrity": "sha512-DL3NmY2OFlqmYYrzp39yi3LDkKxa5vZVwxWdQ3rG0ekuWscHraeIbnI8t+aZK7qhYqEqWKTUdijadunb9pnrgA=="
+ },
+ "node_modules/@xmldom/xmldom": {
+ "version": "0.7.13",
+ "resolved": "https://registry.npmjs.org/@xmldom/xmldom/-/xmldom-0.7.13.tgz",
+ "integrity": "sha512-lm2GW5PkosIzccsaZIz7tp8cPADSIlIHWDFTR1N0SzfinhhYgeIQjFMz4rYzanCScr3DqQLeomUDArp6MWKm+g==",
+ "engines": {
+ "node": ">=10.0.0"
+ }
+ },
"node_modules/abbrev": {
"version": "1.1.1",
"resolved": "https://registry.npmjs.org/abbrev/-/abbrev-1.1.1.tgz",
@@ -3800,6 +4121,17 @@
"node": ">= 0.6"
}
},
+ "node_modules/acorn": {
+ "version": "7.4.1",
+ "resolved": "https://registry.npmjs.org/acorn/-/acorn-7.4.1.tgz",
+ "integrity": "sha512-nQyp0o1/mNdbTO1PO6kHkwSrmgZ0MT/jCCpNiwbUjGoRN4dlBhqJtoQuCnEOKzgTVwg0ZWiCoQy6SxMebQVh8A==",
+ "bin": {
+ "acorn": "bin/acorn"
+ },
+ "engines": {
+ "node": ">=0.4.0"
+ }
+ },
"node_modules/agent-base": {
"version": "6.0.2",
"resolved": "https://registry.npmjs.org/agent-base/-/agent-base-6.0.2.tgz",
@@ -3876,6 +4208,11 @@
"node": ">= 8"
}
},
+ "node_modules/append-field": {
+ "version": "1.0.0",
+ "resolved": "https://registry.npmjs.org/append-field/-/append-field-1.0.0.tgz",
+ "integrity": "sha512-klpgFSWLW1ZEs8svjfb7g4qWY0YS5imI82dTg+QahUvJ8YqAY0P10Uk8tTyh9ZGuYEZEMaeJYCF5BFuX552hsw=="
+ },
"node_modules/aproba": {
"version": "2.0.0",
"resolved": "https://registry.npmjs.org/aproba/-/aproba-2.0.0.tgz",
@@ -3911,6 +4248,11 @@
"node": ">=8"
}
},
+ "node_modules/asap": {
+ "version": "2.0.6",
+ "resolved": "https://registry.npmjs.org/asap/-/asap-2.0.6.tgz",
+ "integrity": "sha512-BSHWgDSAiKs50o2Re8ppvp3seVHXSRM44cdSsT9FfNEUUZLOGWVCsiWaRPWM1Znn+mqZ1OfVZ3z3DWEzSp7hRA=="
+ },
"node_modules/asn1.js": {
"version": "5.4.1",
"resolved": "https://registry.npmjs.org/asn1.js/-/asn1.js-5.4.1.tgz",
@@ -3923,11 +4265,27 @@
"safer-buffer": "^2.1.0"
}
},
+ "node_modules/assert-never": {
+ "version": "1.2.1",
+ "resolved": "https://registry.npmjs.org/assert-never/-/assert-never-1.2.1.tgz",
+ "integrity": "sha512-TaTivMB6pYI1kXwrFlEhLeGfOqoDNdTxjCdwRfFFkEA30Eu+k48W34nlok2EYWJfFFzqaEmichdNM7th6M5HNw=="
+ },
"node_modules/asynckit": {
"version": "0.4.0",
"resolved": "https://registry.npmjs.org/asynckit/-/asynckit-0.4.0.tgz",
"integrity": "sha512-Oei9OH4tRh0YqU3GxhX79dM/mwVgvbZJaSNaRk+bshkj0S5cfHcgYakreBjrHwatXKbz+IoIdYLxrKim2MjW0Q=="
},
+ "node_modules/atob": {
+ "version": "2.1.2",
+ "resolved": "https://registry.npmjs.org/atob/-/atob-2.1.2.tgz",
+ "integrity": "sha512-Wm6ukoaOGJi/73p/cl2GvLjTI5JM1k/O14isD73YML8StrH/7/lRFgmg8nICZgD3bZZvjwCGxtMOD3wWNAu8cg==",
+ "bin": {
+ "atob": "bin/atob.js"
+ },
+ "engines": {
+ "node": ">= 4.5.0"
+ }
+ },
"node_modules/await-event-emitter": {
"version": "2.0.2",
"resolved": "https://registry.npmjs.org/await-event-emitter/-/await-event-emitter-2.0.2.tgz",
@@ -3939,6 +4297,17 @@
"node": ">=10"
}
},
+ "node_modules/babel-walk": {
+ "version": "3.0.0-canary-5",
+ "resolved": "https://registry.npmjs.org/babel-walk/-/babel-walk-3.0.0-canary-5.tgz",
+ "integrity": "sha512-GAwkz0AihzY5bkwIY5QDR+LvsRQgB/B+1foMPvi0FZPMl5fjD7ICiznUiBdLYMH1QYe6vqu4gWYytZOccLouFw==",
+ "dependencies": {
+ "@babel/types": "^7.9.6"
+ },
+ "engines": {
+ "node": ">= 10.0.0"
+ }
+ },
"node_modules/balanced-match": {
"version": "1.0.2",
"resolved": "https://registry.npmjs.org/balanced-match/-/balanced-match-1.0.2.tgz",
@@ -3987,13 +4356,21 @@
"integrity": "sha512-CvkDw2OEnme7ybCykJpVcKH+uAOLV2qLqiyla128dN9TkEWfrYmxG6C2boDe5KcNQqZF3orkqzGgOMvZ/JNekA=="
},
"node_modules/binary-extensions": {
- "version": "2.2.0",
- "resolved": "https://registry.npmjs.org/binary-extensions/-/binary-extensions-2.2.0.tgz",
- "integrity": "sha512-jDctJ/IVQbZoJykoeHbhXpOlNBqGNcwXJKJog42E5HDPUwQTSdjCHdihjj0DlnheQ7blbT6dHOafNAiS8ooQKA==",
+ "version": "2.3.0",
+ "resolved": "https://registry.npmjs.org/binary-extensions/-/binary-extensions-2.3.0.tgz",
+ "integrity": "sha512-Ceh+7ox5qe7LJuLHoY0feh3pHuUDHAcRUeyL2VYghZwfpkNIy/+8Ocg0a3UuSoYzavmylwuLWQOf3hl0jjMMIw==",
"engines": {
"node": ">=8"
+ },
+ "funding": {
+ "url": "https://github.com/sponsors/sindresorhus"
}
},
+ "node_modules/bluebird": {
+ "version": "3.7.2",
+ "resolved": "https://registry.npmjs.org/bluebird/-/bluebird-3.7.2.tgz",
+ "integrity": "sha512-XpNj6GDQzdfW+r2Wnn7xiSAd7TM3jzkxGXBGTtWKuSXv1xUV+azxAm8jdWZN06QTQk+2N2XB9jRDkvbmQmcRtg=="
+ },
"node_modules/bn.js": {
"version": "4.12.0",
"resolved": "https://registry.npmjs.org/bn.js/-/bn.js-4.12.0.tgz",
@@ -4051,11 +4428,11 @@
}
},
"node_modules/braces": {
- "version": "3.0.2",
- "resolved": "https://registry.npmjs.org/braces/-/braces-3.0.2.tgz",
- "integrity": "sha512-b8um+L1RzM3WDSzvhm6gIz1yfTbBt6YTlcEKAvsmqCZZFw46z626lVj9j1yEPW33H5H+lBQpZMP1k8l+78Ha0A==",
+ "version": "3.0.3",
+ "resolved": "https://registry.npmjs.org/braces/-/braces-3.0.3.tgz",
+ "integrity": "sha512-yQbXgO/OSZVD2IsiLlro+7Hf6Q18EJrKSEsdoMzKePKXct3gvD8oLcOQdIzGupr5Fj+EDe8gO/lxc1BzfMpxvA==",
"dependencies": {
- "fill-range": "^7.0.1"
+ "fill-range": "^7.1.1"
},
"engines": {
"node": ">=8"
@@ -4095,9 +4472,9 @@
}
},
"node_modules/bson": {
- "version": "6.7.0",
- "resolved": "https://registry.npmjs.org/bson/-/bson-6.7.0.tgz",
- "integrity": "sha512-w2IquM5mYzYZv6rs3uN2DZTOBe2a0zXLj53TGDqwF4l6Sz/XsISrisXOJihArF9+BZ6Cq/GjVht7Sjfmri7ytQ==",
+ "version": "6.8.0",
+ "resolved": "https://registry.npmjs.org/bson/-/bson-6.8.0.tgz",
+ "integrity": "sha512-iOJg8pr7wq2tg/zSlCCHMi3hMm5JTOxLTagf3zxhcenHsFp+c6uOs6K7W5UE7A4QIJGtqh/ZovFNMP4mOPJynQ==",
"engines": {
"node": ">=16.20.1"
}
@@ -4107,6 +4484,22 @@
"resolved": "https://registry.npmjs.org/buffer-equal-constant-time/-/buffer-equal-constant-time-1.0.1.tgz",
"integrity": "sha512-zRpUiDwd/xk6ADqPMATG8vc9VPrkck7T07OIx0gnjmJAnHnTVXNQG3vfvWNuiZIkwu9KrKdA1iJKfsfTVxE6NA=="
},
+ "node_modules/buffer-from": {
+ "version": "1.1.2",
+ "resolved": "https://registry.npmjs.org/buffer-from/-/buffer-from-1.1.2.tgz",
+ "integrity": "sha512-E+XQCRwSbaaiChtv6k6Dwgc+bx+Bs6vuKJHHl5kox/BaKbhiXzqQOwK4cO22yElGp2OCmjwVhT3HmxgyPGnJfQ=="
+ },
+ "node_modules/busboy": {
+ "version": "1.6.0",
+ "resolved": "https://registry.npmjs.org/busboy/-/busboy-1.6.0.tgz",
+ "integrity": "sha512-8SFQbg/0hQ9xy3UNTB0YEnsNBbWfhf7RtnzpL7TkBiTBRfrQ9Fxcnz7VJsleJpyp6rVLvXiuORqjlHi5q+PYuA==",
+ "dependencies": {
+ "streamsearch": "^1.1.0"
+ },
+ "engines": {
+ "node": ">=10.16.0"
+ }
+ },
"node_modules/bytes": {
"version": "3.1.2",
"resolved": "https://registry.npmjs.org/bytes/-/bytes-3.1.2.tgz",
@@ -4136,9 +4529,9 @@
}
},
"node_modules/caniuse-lite": {
- "version": "1.0.30001627",
- "resolved": "https://registry.npmjs.org/caniuse-lite/-/caniuse-lite-1.0.30001627.tgz",
- "integrity": "sha512-4zgNiB8nTyV/tHhwZrFs88ryjls/lHiqFhrxCW4qSTeuRByBVnPYpDInchOIySWknznucaf31Z4KYqjfbrecVw==",
+ "version": "1.0.30001642",
+ "resolved": "https://registry.npmjs.org/caniuse-lite/-/caniuse-lite-1.0.30001642.tgz",
+ "integrity": "sha512-3XQ0DoRgLijXJErLSl+bLnJ+Et4KqV1PY6JJBGAFlsNsz31zeAIncyeZfLCabHK/jtSh+671RM9YMldxjUPZtA==",
"funding": [
{
"type": "opencollective",
@@ -4169,16 +4562,18 @@
"url": "https://github.com/chalk/chalk?sponsor=1"
}
},
+ "node_modules/character-parser": {
+ "version": "2.2.0",
+ "resolved": "https://registry.npmjs.org/character-parser/-/character-parser-2.2.0.tgz",
+ "integrity": "sha512-+UqJQjFEFaTAs3bNsF2j2kEN1baG/zghZbdqoYEDxGZtJo9LBzl1A+m0D4n3qKx8N2FNv8/Xp6yV9mQmBuptaw==",
+ "dependencies": {
+ "is-regex": "^1.0.3"
+ }
+ },
"node_modules/chokidar": {
- "version": "3.5.3",
- "resolved": "https://registry.npmjs.org/chokidar/-/chokidar-3.5.3.tgz",
- "integrity": "sha512-Dr3sfKRP6oTcjf2JmUmFJfeVMvXBdegxB0iVQ5eb2V10uFJUCAS8OByZdVAyVb8xXNz3GjjTgj9kLWsZTqE6kw==",
- "funding": [
- {
- "type": "individual",
- "url": "https://paulmillr.com/funding/"
- }
- ],
+ "version": "3.6.0",
+ "resolved": "https://registry.npmjs.org/chokidar/-/chokidar-3.6.0.tgz",
+ "integrity": "sha512-7VT13fmjotKpGipCW9JEQAusEPE+Ei8nl6/g4FBAmIm0GOOLMua9NDDo/DWp0ZAxCr3cPq5ZpBqmPAQgDda2Pw==",
"dependencies": {
"anymatch": "~3.1.2",
"braces": "~3.0.2",
@@ -4191,6 +4586,9 @@
"engines": {
"node": ">= 8.10.0"
},
+ "funding": {
+ "url": "https://paulmillr.com/funding/"
+ },
"optionalDependencies": {
"fsevents": "~2.3.2"
}
@@ -4240,6 +4638,18 @@
"node": ">=0.10.0"
}
},
+ "node_modules/coffeescript": {
+ "version": "2.7.0",
+ "resolved": "https://registry.npmjs.org/coffeescript/-/coffeescript-2.7.0.tgz",
+ "integrity": "sha512-hzWp6TUE2d/jCcN67LrW1eh5b/rSDKQK6oD6VMLlggYVUUFexgTH9z3dNYihzX4RMhze5FTUsUmOXViJKFQR/A==",
+ "bin": {
+ "cake": "bin/cake",
+ "coffee": "bin/coffee"
+ },
+ "engines": {
+ "node": ">=6"
+ }
+ },
"node_modules/color": {
"version": "4.2.3",
"resolved": "https://registry.npmjs.org/color/-/color-4.2.3.tgz",
@@ -4306,9 +4716,9 @@
}
},
"node_modules/colyseus.js": {
- "version": "0.15.22",
- "resolved": "https://registry.npmjs.org/colyseus.js/-/colyseus.js-0.15.22.tgz",
- "integrity": "sha512-qo2cXYHaeHSNZr+lDfs6i6kE0+nabm0i6xMDAN5xFWoPFaDpfW82hU2Gqxk/N+kA/jmKcLVc883OOMNsNvqUFg==",
+ "version": "0.15.25",
+ "resolved": "https://registry.npmjs.org/colyseus.js/-/colyseus.js-0.15.25.tgz",
+ "integrity": "sha512-aAGZYeIODWtsUFDhm+WoH8rnQl2pKri0FNWsOCjmXP6IKEM+Puq1Ua9e4nsG208niShUCnF2Th9iWDFbqIhoxQ==",
"dependencies": {
"@colyseus/schema": "^2.0.4",
"httpie": "^2.0.0-next.13",
@@ -4323,9 +4733,9 @@
}
},
"node_modules/colyseus.js/node_modules/ws": {
- "version": "8.14.2",
- "resolved": "https://registry.npmjs.org/ws/-/ws-8.14.2.tgz",
- "integrity": "sha512-wEBG1ftX4jcglPxgFCMJmZ2PLtSbJ2Peg6TmpJFTbe9GZYOQCDPdMYu/Tm0/bGZkw8paZnJY45J4K2PZrLYq8g==",
+ "version": "8.17.1",
+ "resolved": "https://registry.npmjs.org/ws/-/ws-8.17.1.tgz",
+ "integrity": "sha512-6XQFvXTkbfUOZOKKILFG1PDK2NDQs4azKQl26T0YS5CxqWLgXajbPZ+h4gZekJyRqFU8pvnbAbbs/3TgRPy+GQ==",
"engines": {
"node": ">=10.0.0"
},
@@ -4353,6 +4763,19 @@
"node": ">= 0.8"
}
},
+ "node_modules/command-exists": {
+ "version": "1.2.9",
+ "resolved": "https://registry.npmjs.org/command-exists/-/command-exists-1.2.9.tgz",
+ "integrity": "sha512-LTQ/SGc+s0Xc0Fu5WaKnR0YiygZkm9eKFvyS+fRsU7/ZWFF8ykFM6Pc9aCVf1+xasOOZpO3BAVgVrKvsqKHV7w=="
+ },
+ "node_modules/commander": {
+ "version": "7.2.0",
+ "resolved": "https://registry.npmjs.org/commander/-/commander-7.2.0.tgz",
+ "integrity": "sha512-QrWXB+ZQSVPmIWIhtEO9H+gwHaMGYiF5ChvoJ+K9ZGHG/sVsa6yiesAD1GC/x46sET00Xlwo1u49RVVVzvcSkw==",
+ "engines": {
+ "node": ">= 10"
+ }
+ },
"node_modules/component-emitter": {
"version": "1.3.0",
"resolved": "https://registry.npmjs.org/component-emitter/-/component-emitter-1.3.0.tgz",
@@ -4363,6 +4786,47 @@
"resolved": "https://registry.npmjs.org/concat-map/-/concat-map-0.0.1.tgz",
"integrity": "sha512-/Srv4dswyQNBfohGpz9o6Yb3Gz3SrUDqBH5rTuhGR7ahtlbYKnVxw2bCFMRljaA7EXHaXZ8wsHdodFvbkhKmqg=="
},
+ "node_modules/concat-stream": {
+ "version": "1.6.2",
+ "resolved": "https://registry.npmjs.org/concat-stream/-/concat-stream-1.6.2.tgz",
+ "integrity": "sha512-27HBghJxjiZtIk3Ycvn/4kbJk/1uZuJFfuPEns6LaEvpvG1f0hTea8lilrouyo9mVc2GWdcEZ8OLoGmSADlrCw==",
+ "engines": [
+ "node >= 0.8"
+ ],
+ "dependencies": {
+ "buffer-from": "^1.0.0",
+ "inherits": "^2.0.3",
+ "readable-stream": "^2.2.2",
+ "typedarray": "^0.0.6"
+ }
+ },
+ "node_modules/concat-stream/node_modules/readable-stream": {
+ "version": "2.3.8",
+ "resolved": "https://registry.npmjs.org/readable-stream/-/readable-stream-2.3.8.tgz",
+ "integrity": "sha512-8p0AUk4XODgIewSi0l8Epjs+EVnWiK7NoDIEGU0HhE7+ZyY8D1IMY7odu5lRrFXGg71L15KG8QrPmum45RTtdA==",
+ "dependencies": {
+ "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"
+ }
+ },
+ "node_modules/concat-stream/node_modules/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=="
+ },
+ "node_modules/concat-stream/node_modules/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==",
+ "dependencies": {
+ "safe-buffer": "~5.1.0"
+ }
+ },
"node_modules/connect-redis": {
"version": "7.1.1",
"resolved": "https://registry.npmjs.org/connect-redis/-/connect-redis-7.1.1.tgz",
@@ -4379,6 +4843,27 @@
"resolved": "https://registry.npmjs.org/console-control-strings/-/console-control-strings-1.1.0.tgz",
"integrity": "sha512-ty/fTekppD2fIwRvnZAVdeOiGd1c7YXEixbgJTNzqcxJWKQnjJ/V1bNEEE6hygpM3WjwHFUVK6HTjWSzV4a8sQ=="
},
+ "node_modules/consolidate": {
+ "version": "0.16.0",
+ "resolved": "https://registry.npmjs.org/consolidate/-/consolidate-0.16.0.tgz",
+ "integrity": "sha512-Nhl1wzCslqXYTJVDyJCu3ODohy9OfBMB5uD2BiBTzd7w+QY0lBzafkR8y8755yMYHAaMD4NuzbAw03/xzfw+eQ==",
+ "deprecated": "Please upgrade to consolidate v1.0.0+ as it has been modernized with several long-awaited fixes implemented. Maintenance is supported by Forward Email at https://forwardemail.net ; follow/watch https://github.com/ladjs/consolidate for updates and release changelog",
+ "dependencies": {
+ "bluebird": "^3.7.2"
+ },
+ "engines": {
+ "node": ">= 0.10.0"
+ }
+ },
+ "node_modules/constantinople": {
+ "version": "4.0.1",
+ "resolved": "https://registry.npmjs.org/constantinople/-/constantinople-4.0.1.tgz",
+ "integrity": "sha512-vCrqcSIq4//Gx74TXXCGnHpulY1dskqLTFGDmhrGxzeXL8lF8kvXv6mpNWlJj1uD4DW23D4ljAqbY4RRaaUZIw==",
+ "dependencies": {
+ "@babel/parser": "^7.6.0",
+ "@babel/types": "^7.6.1"
+ }
+ },
"node_modules/content-disposition": {
"version": "0.5.4",
"resolved": "https://registry.npmjs.org/content-disposition/-/content-disposition-0.5.4.tgz",
@@ -4417,6 +4902,17 @@
"resolved": "https://registry.npmjs.org/cookiejar/-/cookiejar-2.1.4.tgz",
"integrity": "sha512-LDx6oHrK+PhzLKJU9j5S7/Y3jM/mUHvD/DeI1WQmJn652iPC5Y4TBzC9l+5OMOXlyTTA+SmVUPm0HQUwpD5Jqw=="
},
+ "node_modules/copy-anything": {
+ "version": "2.0.6",
+ "resolved": "https://registry.npmjs.org/copy-anything/-/copy-anything-2.0.6.tgz",
+ "integrity": "sha512-1j20GZTsvKNkc4BY3NpMOM8tt///wY3FpIzozTOFO2ffuZcV61nojHXVKIy3WM+7ADCy5FVhdZYHYDdgTU0yJw==",
+ "dependencies": {
+ "is-what": "^3.14.1"
+ },
+ "funding": {
+ "url": "https://github.com/sponsors/mesqueeb"
+ }
+ },
"node_modules/core-js": {
"version": "3.37.1",
"resolved": "https://registry.npmjs.org/core-js/-/core-js-3.37.1.tgz",
@@ -4469,6 +4965,29 @@
}
}
},
+ "node_modules/cross-spawn": {
+ "version": "7.0.3",
+ "resolved": "https://registry.npmjs.org/cross-spawn/-/cross-spawn-7.0.3.tgz",
+ "integrity": "sha512-iRDPJKUPVEND7dHPO8rkbOnPpyDygcDFtWjpeWNCgy8WP2rXcxXL8TskReQl6OrB2G7+UJrags1q15Fudc7G6w==",
+ "dependencies": {
+ "path-key": "^3.1.0",
+ "shebang-command": "^2.0.0",
+ "which": "^2.0.1"
+ },
+ "engines": {
+ "node": ">= 8"
+ }
+ },
+ "node_modules/css": {
+ "version": "3.0.0",
+ "resolved": "https://registry.npmjs.org/css/-/css-3.0.0.tgz",
+ "integrity": "sha512-DG9pFfwOrzc+hawpmqX/dHYHJG+Bsdb0klhyi1sDneOgGOXy9wQIC8hzyVp1e4NRYDBdxcylvywPkkXCHAzTyQ==",
+ "dependencies": {
+ "inherits": "^2.0.4",
+ "source-map": "^0.6.1",
+ "source-map-resolve": "^0.6.0"
+ }
+ },
"node_modules/css-select": {
"version": "5.1.0",
"resolved": "https://registry.npmjs.org/css-select/-/css-select-5.1.0.tgz",
@@ -4632,6 +5151,14 @@
}
}
},
+ "node_modules/decode-uri-component": {
+ "version": "0.2.2",
+ "resolved": "https://registry.npmjs.org/decode-uri-component/-/decode-uri-component-0.2.2.tgz",
+ "integrity": "sha512-FqUYQ+8o158GyGTrMFJms9qh3CqTKvAqgqsTnkLI8sKu0028orqBhxNMFkFen0zGyg6epACD32pjVk58ngIErQ==",
+ "engines": {
+ "node": ">=0.10"
+ }
+ },
"node_modules/deepmerge": {
"version": "4.2.2",
"resolved": "https://registry.npmjs.org/deepmerge/-/deepmerge-4.2.2.tgz",
@@ -4705,6 +5232,11 @@
"node": ">=8"
}
},
+ "node_modules/doctypes": {
+ "version": "1.1.0",
+ "resolved": "https://registry.npmjs.org/doctypes/-/doctypes-1.1.0.tgz",
+ "integrity": "sha512-LLBi6pEqS6Do3EKQ3J0NqHWV5hhb78Pi8vvESYwyOy2c31ZEZVdtitdzsQsKb7878PEERhzUk0ftqGhG6Mz+pQ=="
+ },
"node_modules/dom-serializer": {
"version": "1.4.1",
"resolved": "https://registry.npmjs.org/dom-serializer/-/dom-serializer-1.4.1.tgz",
@@ -4813,6 +5345,30 @@
"minimalistic-crypto-utils": "^1.0.1"
}
},
+ "node_modules/elm": {
+ "version": "0.19.1-6",
+ "resolved": "https://registry.npmjs.org/elm/-/elm-0.19.1-6.tgz",
+ "integrity": "sha512-mKYyierHICPdMx/vhiIacdPmTPnh889gjHOZ75ZAoCxo3lZmSWbGP8HMw78wyctJH0HwvTmeKhlYSWboQNYPeQ==",
+ "hasInstallScript": true,
+ "peer": true,
+ "bin": {
+ "elm": "bin/elm"
+ },
+ "engines": {
+ "node": ">=7.0.0"
+ },
+ "optionalDependencies": {
+ "@elm_binaries/darwin_arm64": "0.19.1-0",
+ "@elm_binaries/darwin_x64": "0.19.1-0",
+ "@elm_binaries/linux_x64": "0.19.1-0",
+ "@elm_binaries/win32_x64": "0.19.1-0"
+ }
+ },
+ "node_modules/elm-hot": {
+ "version": "1.1.6",
+ "resolved": "https://registry.npmjs.org/elm-hot/-/elm-hot-1.1.6.tgz",
+ "integrity": "sha512-zYZJlfs7Gt4BdjA+D+857K+XAWzwwySJmXCgFpHW1dIEfaHSZCIPYPf7/jinZBLfKRkOAlKzI32AA84DY50g7Q=="
+ },
"node_modules/emoji-regex": {
"version": "8.0.0",
"resolved": "https://registry.npmjs.org/emoji-regex/-/emoji-regex-8.0.0.tgz",
@@ -4860,6 +5416,18 @@
"url": "https://github.com/fb55/entities?sponsor=1"
}
},
+ "node_modules/errno": {
+ "version": "0.1.8",
+ "resolved": "https://registry.npmjs.org/errno/-/errno-0.1.8.tgz",
+ "integrity": "sha512-dJ6oBr5SQ1VSd9qkk7ByRgb/1SH4JZjCHSW/mr63/QcXO9zLVxvJ6Oy13nio03rxpSnVDDjFor75SjVeZWPW/A==",
+ "optional": true,
+ "dependencies": {
+ "prr": "~1.0.1"
+ },
+ "bin": {
+ "errno": "cli.js"
+ }
+ },
"node_modules/error-ex": {
"version": "1.3.2",
"resolved": "https://registry.npmjs.org/error-ex/-/error-ex-1.3.2.tgz",
@@ -4909,6 +5477,11 @@
"node": ">=4"
}
},
+ "node_modules/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=="
+ },
"node_modules/etag": {
"version": "1.8.1",
"resolved": "https://registry.npmjs.org/etag/-/etag-1.8.1.tgz",
@@ -4922,6 +5495,14 @@
"resolved": "https://registry.npmjs.org/eventemitter3/-/eventemitter3-5.0.1.tgz",
"integrity": "sha512-GWkBvjiSZK87ELrYOSESUYeVIc9mvLLf/nXalMOS5dYrgZq9o5OVkbZAVM06CVxYsCwH9BDZFPlQTlPA1j4ahA=="
},
+ "node_modules/events": {
+ "version": "3.3.0",
+ "resolved": "https://registry.npmjs.org/events/-/events-3.3.0.tgz",
+ "integrity": "sha512-mQw+2fkQbALzQ7V0MY0IqdnXNOeTtP4r0lN9z7AAawCXgqea7bDii20AYrIBrFd/Hx0M2Ocz6S111CaFkUcb0Q==",
+ "engines": {
+ "node": ">=0.8.x"
+ }
+ },
"node_modules/express": {
"version": "4.19.2",
"resolved": "https://registry.npmjs.org/express/-/express-4.19.2.tgz",
@@ -5129,9 +5710,9 @@
}
},
"node_modules/fill-range": {
- "version": "7.0.1",
- "resolved": "https://registry.npmjs.org/fill-range/-/fill-range-7.0.1.tgz",
- "integrity": "sha512-qOo9F+dMUmC2Lcb4BbVvnKJxTPjCm+RRpe4gDuGrzkL7mEVl/djYSu2OdQ2Pa302N4oqkSg9ir6jaLWJ2USVpQ==",
+ "version": "7.1.1",
+ "resolved": "https://registry.npmjs.org/fill-range/-/fill-range-7.1.1.tgz",
+ "integrity": "sha512-YsGpe3WHLK8ZYi4tWDg2Jy3ebRz2rXowDxnld4bkQB00cc/1Zw9AWnC0i9ztDJitivtQvaI9KaLyKrc+hBW0yg==",
"dependencies": {
"to-regex-range": "^5.0.1"
},
@@ -5169,38 +5750,53 @@
"resolved": "https://registry.npmjs.org/ms/-/ms-2.0.0.tgz",
"integrity": "sha512-Tpp60P6IUJDTuOq/5Z8cdskzJujfwqfOTkrwIwj7IRISpnkJnT6SyJ4PCPnGMoFjC9ddhal5KVIYtAt97ix05A=="
},
+ "node_modules/find-elm-dependencies": {
+ "version": "2.0.4",
+ "resolved": "https://registry.npmjs.org/find-elm-dependencies/-/find-elm-dependencies-2.0.4.tgz",
+ "integrity": "sha512-x/4w4fVmlD2X4PD9oQ+yh9EyaQef6OtEULdMGBTuWx0Nkppvo2Z/bAiQioW2n+GdRYKypME2b9OmYTw5tw5qDg==",
+ "dependencies": {
+ "firstline": "^1.2.0",
+ "lodash": "^4.17.19"
+ },
+ "bin": {
+ "find-elm-dependencies": "bin/cli.js"
+ },
+ "engines": {
+ "node": ">=4.0.0"
+ }
+ },
"node_modules/firebase": {
- "version": "10.12.2",
- "resolved": "https://registry.npmjs.org/firebase/-/firebase-10.12.2.tgz",
- "integrity": "sha512-ZxEdtSvP1I9su1yf32D8TIdgxtPgxwr6z3jYAR1TXS/t+fVfpoPc/N1/N2bxOco9mNjUoc+od34v5Fn4GeKs6Q==",
- "dependencies": {
- "@firebase/analytics": "0.10.4",
- "@firebase/analytics-compat": "0.2.10",
- "@firebase/app": "0.10.5",
- "@firebase/app-check": "0.8.4",
- "@firebase/app-check-compat": "0.3.11",
- "@firebase/app-compat": "0.2.35",
+ "version": "10.12.3",
+ "resolved": "https://registry.npmjs.org/firebase/-/firebase-10.12.3.tgz",
+ "integrity": "sha512-dO2cQ8eP6RnM2wcGzbxnoljjjMBf1suUrHYFftjSpbPn/8bEx959cwTRDHqBx3MwSzNsg6zZV/wiWydJPhUKgw==",
+ "dependencies": {
+ "@firebase/analytics": "0.10.5",
+ "@firebase/analytics-compat": "0.2.11",
+ "@firebase/app": "0.10.6",
+ "@firebase/app-check": "0.8.5",
+ "@firebase/app-check-compat": "0.3.12",
+ "@firebase/app-compat": "0.2.36",
"@firebase/app-types": "0.9.2",
- "@firebase/auth": "1.7.4",
- "@firebase/auth-compat": "0.5.9",
- "@firebase/database": "1.0.5",
- "@firebase/database-compat": "1.0.5",
- "@firebase/firestore": "4.6.3",
- "@firebase/firestore-compat": "0.3.32",
- "@firebase/functions": "0.11.5",
- "@firebase/functions-compat": "0.3.11",
- "@firebase/installations": "0.6.7",
- "@firebase/installations-compat": "0.2.7",
- "@firebase/messaging": "0.12.9",
- "@firebase/messaging-compat": "0.2.9",
- "@firebase/performance": "0.6.7",
- "@firebase/performance-compat": "0.2.7",
- "@firebase/remote-config": "0.4.7",
- "@firebase/remote-config-compat": "0.2.7",
- "@firebase/storage": "0.12.5",
- "@firebase/storage-compat": "0.3.8",
- "@firebase/util": "1.9.6",
- "@firebase/vertexai-preview": "0.0.2"
+ "@firebase/auth": "1.7.5",
+ "@firebase/auth-compat": "0.5.10",
+ "@firebase/database": "1.0.6",
+ "@firebase/database-compat": "1.0.6",
+ "@firebase/firestore": "4.6.4",
+ "@firebase/firestore-compat": "0.3.33",
+ "@firebase/functions": "0.11.6",
+ "@firebase/functions-compat": "0.3.12",
+ "@firebase/installations": "0.6.8",
+ "@firebase/installations-compat": "0.2.8",
+ "@firebase/messaging": "0.12.10",
+ "@firebase/messaging-compat": "0.2.10",
+ "@firebase/performance": "0.6.8",
+ "@firebase/performance-compat": "0.2.8",
+ "@firebase/remote-config": "0.4.8",
+ "@firebase/remote-config-compat": "0.2.8",
+ "@firebase/storage": "0.12.6",
+ "@firebase/storage-compat": "0.3.9",
+ "@firebase/util": "1.9.7",
+ "@firebase/vertexai-preview": "0.0.3"
}
},
"node_modules/firebaseui": {
@@ -5215,6 +5811,14 @@
"firebase": "^9.1.3 || ^10.0.0"
}
},
+ "node_modules/firstline": {
+ "version": "1.3.1",
+ "resolved": "https://registry.npmjs.org/firstline/-/firstline-1.3.1.tgz",
+ "integrity": "sha512-ycwgqtoxujz1dm0kjkBFOPQMESxB9uKc/PlD951dQDIG+tBXRpYZC2UmJb0gDxopQ1ZX6oyRQN3goRczYu7Deg==",
+ "engines": {
+ "node": ">=6.4.0"
+ }
+ },
"node_modules/follow-redirects": {
"version": "1.15.6",
"resolved": "https://registry.npmjs.org/follow-redirects/-/follow-redirects-1.15.6.tgz",
@@ -5313,9 +5917,9 @@
"integrity": "sha512-OO0pH2lK6a0hZnAdau5ItzHPI6pUlvI7jMVnxUQRtw4owF2wk8lOSabtGDCTP4Ggrg2MbGnWO9X8K1t4+fGMDw=="
},
"node_modules/fsevents": {
- "version": "2.3.2",
- "resolved": "https://registry.npmjs.org/fsevents/-/fsevents-2.3.2.tgz",
- "integrity": "sha512-xiqMQR4xAeHTuB9uWm+fFRcIOgKBMiOBP+eXiyT7jsgVCq1bkVygt00oASowB7EdtpOHaaPgKt812P9ab+DDKA==",
+ "version": "2.3.3",
+ "resolved": "https://registry.npmjs.org/fsevents/-/fsevents-2.3.3.tgz",
+ "integrity": "sha512-5xoDfX+fL7faATnagmWPpbFtwh/R77WmMMqqHGS65C3vvB0YHrgF+B1YmZ3441tMj5n63k0212XNoJwzlhffQw==",
"hasInstallScript": true,
"optional": true,
"os": [
@@ -5446,6 +6050,124 @@
"url": "https://github.com/sponsors/sindresorhus"
}
},
+ "node_modules/glsl-inject-defines": {
+ "version": "1.0.3",
+ "resolved": "https://registry.npmjs.org/glsl-inject-defines/-/glsl-inject-defines-1.0.3.tgz",
+ "integrity": "sha512-W49jIhuDtF6w+7wCMcClk27a2hq8znvHtlGnrYkSWEr8tHe9eA2dcnohlcAmxLYBSpSSdzOkRdyPTrx9fw49+A==",
+ "dependencies": {
+ "glsl-token-inject-block": "^1.0.0",
+ "glsl-token-string": "^1.0.1",
+ "glsl-tokenizer": "^2.0.2"
+ }
+ },
+ "node_modules/glsl-resolve": {
+ "version": "0.0.1",
+ "resolved": "https://registry.npmjs.org/glsl-resolve/-/glsl-resolve-0.0.1.tgz",
+ "integrity": "sha512-xxFNsfnhZTK9NBhzJjSBGX6IOqYpvBHxxmo+4vapiljyGNCY0Bekzn0firQkQrazK59c1hYxMDxYS8MDlhw4gA==",
+ "dependencies": {
+ "resolve": "^0.6.1",
+ "xtend": "^2.1.2"
+ }
+ },
+ "node_modules/glsl-resolve/node_modules/resolve": {
+ "version": "0.6.3",
+ "resolved": "https://registry.npmjs.org/resolve/-/resolve-0.6.3.tgz",
+ "integrity": "sha512-UHBY3viPlJKf85YijDUcikKX6tmF4SokIDp518ZDVT92JNDcG5uKIthaT/owt3Sar0lwtOafsQuwrg22/v2Dwg=="
+ },
+ "node_modules/glsl-token-assignments": {
+ "version": "2.0.2",
+ "resolved": "https://registry.npmjs.org/glsl-token-assignments/-/glsl-token-assignments-2.0.2.tgz",
+ "integrity": "sha512-OwXrxixCyHzzA0U2g4btSNAyB2Dx8XrztY5aVUCjRSh4/D0WoJn8Qdps7Xub3sz6zE73W3szLrmWtQ7QMpeHEQ=="
+ },
+ "node_modules/glsl-token-defines": {
+ "version": "1.0.0",
+ "resolved": "https://registry.npmjs.org/glsl-token-defines/-/glsl-token-defines-1.0.0.tgz",
+ "integrity": "sha512-Vb5QMVeLjmOwvvOJuPNg3vnRlffscq2/qvIuTpMzuO/7s5kT+63iL6Dfo2FYLWbzuiycWpbC0/KV0biqFwHxaQ==",
+ "dependencies": {
+ "glsl-tokenizer": "^2.0.0"
+ }
+ },
+ "node_modules/glsl-token-depth": {
+ "version": "1.1.2",
+ "resolved": "https://registry.npmjs.org/glsl-token-depth/-/glsl-token-depth-1.1.2.tgz",
+ "integrity": "sha512-eQnIBLc7vFf8axF9aoi/xW37LSWd2hCQr/3sZui8aBJnksq9C7zMeUYHVJWMhFzXrBU7fgIqni4EhXVW4/krpg=="
+ },
+ "node_modules/glsl-token-descope": {
+ "version": "1.0.2",
+ "resolved": "https://registry.npmjs.org/glsl-token-descope/-/glsl-token-descope-1.0.2.tgz",
+ "integrity": "sha512-kS2PTWkvi/YOeicVjXGgX5j7+8N7e56srNDEHDTVZ1dcESmbmpmgrnpjPcjxJjMxh56mSXYoFdZqb90gXkGjQw==",
+ "dependencies": {
+ "glsl-token-assignments": "^2.0.0",
+ "glsl-token-depth": "^1.1.0",
+ "glsl-token-properties": "^1.0.0",
+ "glsl-token-scope": "^1.1.0"
+ }
+ },
+ "node_modules/glsl-token-inject-block": {
+ "version": "1.1.0",
+ "resolved": "https://registry.npmjs.org/glsl-token-inject-block/-/glsl-token-inject-block-1.1.0.tgz",
+ "integrity": "sha512-q/m+ukdUBuHCOtLhSr0uFb/qYQr4/oKrPSdIK2C4TD+qLaJvqM9wfXIF/OOBjuSA3pUoYHurVRNao6LTVVUPWA=="
+ },
+ "node_modules/glsl-token-properties": {
+ "version": "1.0.1",
+ "resolved": "https://registry.npmjs.org/glsl-token-properties/-/glsl-token-properties-1.0.1.tgz",
+ "integrity": "sha512-dSeW1cOIzbuUoYH0y+nxzwK9S9O3wsjttkq5ij9ZGw0OS41BirKJzzH48VLm8qLg+au6b0sINxGC0IrGwtQUcA=="
+ },
+ "node_modules/glsl-token-scope": {
+ "version": "1.1.2",
+ "resolved": "https://registry.npmjs.org/glsl-token-scope/-/glsl-token-scope-1.1.2.tgz",
+ "integrity": "sha512-YKyOMk1B/tz9BwYUdfDoHvMIYTGtVv2vbDSLh94PT4+f87z21FVdou1KNKgF+nECBTo0fJ20dpm0B1vZB1Q03A=="
+ },
+ "node_modules/glsl-token-string": {
+ "version": "1.0.1",
+ "resolved": "https://registry.npmjs.org/glsl-token-string/-/glsl-token-string-1.0.1.tgz",
+ "integrity": "sha512-1mtQ47Uxd47wrovl+T6RshKGkRRCYWhnELmkEcUAPALWGTFe2XZpH3r45XAwL2B6v+l0KNsCnoaZCSnhzKEksg=="
+ },
+ "node_modules/glsl-token-whitespace-trim": {
+ "version": "1.0.0",
+ "resolved": "https://registry.npmjs.org/glsl-token-whitespace-trim/-/glsl-token-whitespace-trim-1.0.0.tgz",
+ "integrity": "sha512-ZJtsPut/aDaUdLUNtmBYhaCmhIjpKNg7IgZSfX5wFReMc2vnj8zok+gB/3Quqs0TsBSX/fGnqUUYZDqyuc2xLQ=="
+ },
+ "node_modules/glsl-tokenizer": {
+ "version": "2.1.5",
+ "resolved": "https://registry.npmjs.org/glsl-tokenizer/-/glsl-tokenizer-2.1.5.tgz",
+ "integrity": "sha512-XSZEJ/i4dmz3Pmbnpsy3cKh7cotvFlBiZnDOwnj/05EwNp2XrhQ4XKJxT7/pDt4kp4YcpRSKz8eTV7S+mwV6MA==",
+ "dependencies": {
+ "through2": "^0.6.3"
+ }
+ },
+ "node_modules/glslify-bundle": {
+ "version": "5.1.1",
+ "resolved": "https://registry.npmjs.org/glslify-bundle/-/glslify-bundle-5.1.1.tgz",
+ "integrity": "sha512-plaAOQPv62M1r3OsWf2UbjN0hUYAB7Aph5bfH58VxJZJhloRNbxOL9tl/7H71K7OLJoSJ2ZqWOKk3ttQ6wy24A==",
+ "dependencies": {
+ "glsl-inject-defines": "^1.0.1",
+ "glsl-token-defines": "^1.0.0",
+ "glsl-token-depth": "^1.1.1",
+ "glsl-token-descope": "^1.0.2",
+ "glsl-token-scope": "^1.1.1",
+ "glsl-token-string": "^1.0.1",
+ "glsl-token-whitespace-trim": "^1.0.0",
+ "glsl-tokenizer": "^2.0.2",
+ "murmurhash-js": "^1.0.0",
+ "shallow-copy": "0.0.1"
+ }
+ },
+ "node_modules/glslify-deps": {
+ "version": "1.3.2",
+ "resolved": "https://registry.npmjs.org/glslify-deps/-/glslify-deps-1.3.2.tgz",
+ "integrity": "sha512-7S7IkHWygJRjcawveXQjRXLO2FTjijPDYC7QfZyAQanY+yGLCFHYnPtsGT9bdyHiwPTw/5a1m1M9hamT2aBpag==",
+ "dependencies": {
+ "@choojs/findup": "^0.2.0",
+ "events": "^3.2.0",
+ "glsl-resolve": "0.0.1",
+ "glsl-tokenizer": "^2.0.0",
+ "graceful-fs": "^4.1.2",
+ "inherits": "^2.0.1",
+ "map-limit": "0.0.1",
+ "resolve": "^1.0.0"
+ }
+ },
"node_modules/graceful-fs": {
"version": "4.2.11",
"resolved": "https://registry.npmjs.org/graceful-fs/-/graceful-fs-4.2.11.tgz",
@@ -5493,6 +6215,22 @@
"url": "https://github.com/sponsors/ljharb"
}
},
+ "node_modules/graphql": {
+ "version": "15.8.0",
+ "resolved": "https://registry.npmjs.org/graphql/-/graphql-15.8.0.tgz",
+ "integrity": "sha512-5gghUc24tP9HRznNpV2+FIoq3xKkj5dTQqf4v0CpdPbFVwFkWoxOM+o+2OC9ZSvjEMTjfmG9QT+gcvggTwW1zw==",
+ "engines": {
+ "node": ">= 10.x"
+ }
+ },
+ "node_modules/graphql-import-macro": {
+ "version": "1.0.0",
+ "resolved": "https://registry.npmjs.org/graphql-import-macro/-/graphql-import-macro-1.0.0.tgz",
+ "integrity": "sha512-YK4g6iP60H++MpP93tb0VwOg7aM5iIC0hdSQKTrEDANeLWf0KFAT9dwlBeMDrhY+jcW7qsAEDtaw58cgVnQXAw==",
+ "dependencies": {
+ "graphql": "^15.0.0"
+ }
+ },
"node_modules/has": {
"version": "1.0.3",
"resolved": "https://registry.npmjs.org/has/-/has-1.0.3.tgz",
@@ -5523,6 +6261,20 @@
"url": "https://github.com/sponsors/ljharb"
}
},
+ "node_modules/has-tostringtag": {
+ "version": "1.0.2",
+ "resolved": "https://registry.npmjs.org/has-tostringtag/-/has-tostringtag-1.0.2.tgz",
+ "integrity": "sha512-NqADB8VjPFLM2V0VvHUewwwsw0ZWBaIdgo+ieHtK3hasLz4qeCRjYcqfB6AQrBggRKppKF8L52/VqdVsO47Dlw==",
+ "dependencies": {
+ "has-symbols": "^1.0.3"
+ },
+ "engines": {
+ "node": ">= 0.4"
+ },
+ "funding": {
+ "url": "https://github.com/sponsors/ljharb"
+ }
+ },
"node_modules/has-unicode": {
"version": "2.0.1",
"resolved": "https://registry.npmjs.org/has-unicode/-/has-unicode-2.0.1.tgz",
@@ -5682,10 +6434,22 @@
"node": ">= 4"
}
},
+ "node_modules/image-size": {
+ "version": "0.5.5",
+ "resolved": "https://registry.npmjs.org/image-size/-/image-size-0.5.5.tgz",
+ "integrity": "sha512-6TDAlDPZxUFCv+fuOkIoXT/V/f3Qbq8e37p+YOiYrUv3v9cc3/6x78VdfPgFVaB9dZYeLUfKgHRebpkm/oP2VQ==",
+ "optional": true,
+ "bin": {
+ "image-size": "bin/image-size.js"
+ },
+ "engines": {
+ "node": ">=0.10.0"
+ }
+ },
"node_modules/immutable": {
- "version": "4.1.0",
- "resolved": "https://registry.npmjs.org/immutable/-/immutable-4.1.0.tgz",
- "integrity": "sha512-oNkuqVTA8jqG1Q6c+UglTOD1xhC1BtjKI7XkCXRkZHrN5m18/XsnUp8Q89GkQO/z+0WjonSvl0FLhDYftp46nQ=="
+ "version": "4.3.6",
+ "resolved": "https://registry.npmjs.org/immutable/-/immutable-4.3.6.tgz",
+ "integrity": "sha512-Ju0+lEMyzMVZarkTn/gqRpdqd5dOPaz1mCZ0SH3JV6iFw81PldE/PEB1hWVEA288HPt4WXW8O7AWxB10M+03QQ=="
},
"node_modules/import-fresh": {
"version": "3.3.0",
@@ -5782,6 +6546,15 @@
"url": "https://github.com/sponsors/ljharb"
}
},
+ "node_modules/is-expression": {
+ "version": "4.0.0",
+ "resolved": "https://registry.npmjs.org/is-expression/-/is-expression-4.0.0.tgz",
+ "integrity": "sha512-zMIXX63sxzG3XrkHkrAPvm/OVZVSCPNkwMHU8oTX7/U3AL78I0QXCEICXUM13BIa8TYGZ68PiTKfQz3yaTNr4A==",
+ "dependencies": {
+ "acorn": "^7.1.1",
+ "object-assign": "^4.1.1"
+ }
+ },
"node_modules/is-extglob": {
"version": "2.1.1",
"resolved": "https://registry.npmjs.org/is-extglob/-/is-extglob-2.1.1.tgz",
@@ -5827,6 +6600,26 @@
"resolved": "https://registry.npmjs.org/is-promise/-/is-promise-4.0.0.tgz",
"integrity": "sha512-hvpoI6korhJMnej285dSg6nu1+e6uxs7zG3BYAm5byqDsgJNWwxzM6z6iZiAgQR4TJ30JmBTOwqZUw3WlyH3AQ=="
},
+ "node_modules/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==",
+ "dependencies": {
+ "call-bind": "^1.0.2",
+ "has-tostringtag": "^1.0.0"
+ },
+ "engines": {
+ "node": ">= 0.4"
+ },
+ "funding": {
+ "url": "https://github.com/sponsors/ljharb"
+ }
+ },
+ "node_modules/is-what": {
+ "version": "3.14.1",
+ "resolved": "https://registry.npmjs.org/is-what/-/is-what-3.14.1.tgz",
+ "integrity": "sha512-sNxgpk9793nzSs7bA6JQJGeIuRBQhAaNGG77kzYQgMkrID+lS6SlK07K5LaptscDlSaIgH+GPFzf+d75FVxozA=="
+ },
"node_modules/isarray": {
"version": "1.0.0",
"resolved": "https://registry.npmjs.org/isarray/-/isarray-1.0.0.tgz",
@@ -5843,6 +6636,16 @@
"url": "https://github.com/sponsors/gjtorikian/"
}
},
+ "node_modules/isexe": {
+ "version": "2.0.0",
+ "resolved": "https://registry.npmjs.org/isexe/-/isexe-2.0.0.tgz",
+ "integrity": "sha512-RHxMLp9lnKHGHRng9QFhRCMbYAcVpn69smSGcq3f36xjgVVWThj4qqLbTLlq7Ssj8B+fIQ1EuCEGI2lKsyQeIw=="
+ },
+ "node_modules/js-stringify": {
+ "version": "1.0.2",
+ "resolved": "https://registry.npmjs.org/js-stringify/-/js-stringify-1.0.2.tgz",
+ "integrity": "sha512-rtS5ATOo2Q5k1G+DADISilDA6lv79zIiwFd6CcjuIxGKLFm5C+RLImRscVap9k55i+MOZwgliw+NejvkLuGD5g=="
+ },
"node_modules/js-tokens": {
"version": "4.0.0",
"resolved": "https://registry.npmjs.org/js-tokens/-/js-tokens-4.0.0.tgz",
@@ -5931,20 +6734,20 @@
"safe-buffer": "^5.0.1"
}
},
- "node_modules/jsonwebtoken/node_modules/semver": {
- "version": "7.6.0",
- "resolved": "https://registry.npmjs.org/semver/-/semver-7.6.0.tgz",
- "integrity": "sha512-EnwXhrlwXMk9gKu5/flx5sv/an57AkRplG3hTK68W7FRDN+k+OWBj65M7719OkA82XLBxrcX0KSHj+X5COhOVg==",
+ "node_modules/jstransformer": {
+ "version": "1.0.0",
+ "resolved": "https://registry.npmjs.org/jstransformer/-/jstransformer-1.0.0.tgz",
+ "integrity": "sha512-C9YK3Rf8q6VAPDCCU9fnqo3mAfOH6vUGnMcP4AQAYIEpWtfGLpwOTmZ+igtdK5y+VvI2n3CyYSzy4Qh34eq24A==",
"dependencies": {
- "lru-cache": "^6.0.0"
- },
- "bin": {
- "semver": "bin/semver.js"
- },
- "engines": {
- "node": ">=10"
+ "is-promise": "^2.0.0",
+ "promise": "^7.0.1"
}
},
+ "node_modules/jstransformer/node_modules/is-promise": {
+ "version": "2.2.2",
+ "resolved": "https://registry.npmjs.org/is-promise/-/is-promise-2.2.2.tgz",
+ "integrity": "sha512-+lP4/6lKUBfQjZ2pdxThZvLUAafmZb8OAxFb8XXtiQmS35INgr85hdOGoEs124ez1FCnZJt6jau/T+alh58QFQ=="
+ },
"node_modules/jwa": {
"version": "2.0.0",
"resolved": "https://registry.npmjs.org/jwa/-/jwa-2.0.0.tgz",
@@ -6043,6 +6846,43 @@
"node": ">=8"
}
},
+ "node_modules/less": {
+ "version": "4.2.0",
+ "resolved": "https://registry.npmjs.org/less/-/less-4.2.0.tgz",
+ "integrity": "sha512-P3b3HJDBtSzsXUl0im2L7gTO5Ubg8mEN6G8qoTS77iXxXX4Hvu4Qj540PZDvQ8V6DmX6iXo98k7Md0Cm1PrLaA==",
+ "dependencies": {
+ "copy-anything": "^2.0.1",
+ "parse-node-version": "^1.0.1",
+ "tslib": "^2.3.0"
+ },
+ "bin": {
+ "lessc": "bin/lessc"
+ },
+ "engines": {
+ "node": ">=6"
+ },
+ "optionalDependencies": {
+ "errno": "^0.1.1",
+ "graceful-fs": "^4.1.2",
+ "image-size": "~0.5.0",
+ "make-dir": "^2.1.0",
+ "mime": "^1.4.1",
+ "needle": "^3.1.0",
+ "source-map": "~0.6.0"
+ }
+ },
+ "node_modules/less/node_modules/mime": {
+ "version": "1.6.0",
+ "resolved": "https://registry.npmjs.org/mime/-/mime-1.6.0.tgz",
+ "integrity": "sha512-x0Vn8spI+wuJ1O6S7gnbaQg8Pxh4NNHb7KSINmEWKiPE4RKOplvijn+NkmYmmRgP68mc70j2EbeTFRsrswaQeg==",
+ "optional": true,
+ "bin": {
+ "mime": "cli.js"
+ },
+ "engines": {
+ "node": ">=4"
+ }
+ },
"node_modules/lightningcss": {
"version": "1.23.0",
"resolved": "https://registry.npmjs.org/lightningcss/-/lightningcss-1.23.0.tgz",
@@ -6334,15 +7174,50 @@
"resolved": "https://registry.npmjs.org/long/-/long-5.2.3.tgz",
"integrity": "sha512-lcHwpNoggQTObv5apGNCTdJrO69eHOZMi4BNC+rTLER8iHAqGrUVeLh/irVIM7zTw2bOXA8T6uNPeujwOLg/2Q=="
},
- "node_modules/lru-cache": {
- "version": "6.0.0",
- "resolved": "https://registry.npmjs.org/lru-cache/-/lru-cache-6.0.0.tgz",
- "integrity": "sha512-Jo6dJ04CmSjuznwJSS3pUeWmd/H0ffTlkXXgwZi+eq1UCmqQwCh+eLsYOYCwY991i2Fah4h1BEMCx4qThGbsiA==",
+ "node_modules/magic-string": {
+ "version": "0.30.10",
+ "resolved": "https://registry.npmjs.org/magic-string/-/magic-string-0.30.10.tgz",
+ "integrity": "sha512-iIRwTIf0QKV3UAnYK4PU8uiEc4SRh5jX0mwpIwETPpHdhVM4f53RSwS/vXvN1JhGX+Cs7B8qIq3d6AH49O5fAQ==",
"dependencies": {
- "yallist": "^4.0.0"
+ "@jridgewell/sourcemap-codec": "^1.4.15"
+ }
+ },
+ "node_modules/make-dir": {
+ "version": "2.1.0",
+ "resolved": "https://registry.npmjs.org/make-dir/-/make-dir-2.1.0.tgz",
+ "integrity": "sha512-LS9X+dc8KLxXCb8dni79fLIIUA5VyZoyjSMCwTluaXA0o27cCK0bhXkpgw+sTXVpPy/lSO57ilRixqk0vDmtRA==",
+ "optional": true,
+ "dependencies": {
+ "pify": "^4.0.1",
+ "semver": "^5.6.0"
},
"engines": {
- "node": ">=10"
+ "node": ">=6"
+ }
+ },
+ "node_modules/make-dir/node_modules/semver": {
+ "version": "5.7.2",
+ "resolved": "https://registry.npmjs.org/semver/-/semver-5.7.2.tgz",
+ "integrity": "sha512-cBznnQ9KjJqU67B52RMC65CMarK2600WFnbkcaiwWq3xy/5haFJlshgnpjovMVJ+Hff49d8GEn0b87C5pDQ10g==",
+ "optional": true,
+ "bin": {
+ "semver": "bin/semver"
+ }
+ },
+ "node_modules/map-limit": {
+ "version": "0.0.1",
+ "resolved": "https://registry.npmjs.org/map-limit/-/map-limit-0.0.1.tgz",
+ "integrity": "sha512-pJpcfLPnIF/Sk3taPW21G/RQsEEirGaFpCW3oXRwH9dnFHPHNGjNyvh++rdmC2fNqEaTw2MhYJraoJWAHx8kEg==",
+ "dependencies": {
+ "once": "~1.3.0"
+ }
+ },
+ "node_modules/map-limit/node_modules/once": {
+ "version": "1.3.3",
+ "resolved": "https://registry.npmjs.org/once/-/once-1.3.3.tgz",
+ "integrity": "sha512-6vaNInhu+CHxtONf3zw3vq4SP2DOQhjBvIa3rNcG0+P7eKWlYH6Peu7rHizSloRU2EwMz6GraLieis9Ac9+p1w==",
+ "dependencies": {
+ "wrappy": "1"
}
},
"node_modules/material-design-lite": {
@@ -6407,13 +7282,24 @@
}
},
"node_modules/mikro-orm": {
- "version": "6.2.5",
- "resolved": "https://registry.npmjs.org/mikro-orm/-/mikro-orm-6.2.5.tgz",
- "integrity": "sha512-8GJulcYlawnMbXHch4/HTKDg8u0Q6p4l1Jfyn0WmaN4lMz/XXTuLQTZMSdHhISXUjf9/aQdVkmRPxvKog47pVA==",
+ "version": "6.2.9",
+ "resolved": "https://registry.npmjs.org/mikro-orm/-/mikro-orm-6.2.9.tgz",
+ "integrity": "sha512-zpP8D7Lw8Q2WYwd43iFQI+5e0zPUM+vEAAyJaGE87RzSiQwchqZNPuV/H74STNJYqj8mLSvwZxFvRzrQXsCRRw==",
"engines": {
"node": ">= 18.12.0"
}
},
+ "node_modules/mime": {
+ "version": "2.6.0",
+ "resolved": "https://registry.npmjs.org/mime/-/mime-2.6.0.tgz",
+ "integrity": "sha512-USPkMeET31rOMiarsBNIHZKLGgvKc/LrjofAnBlOttf5ajRvqiRA8QsenbcooctK6d6Ts6aqZXBA+XbkKthiQg==",
+ "bin": {
+ "mime": "cli.js"
+ },
+ "engines": {
+ "node": ">=4.0.0"
+ }
+ },
"node_modules/mime-db": {
"version": "1.52.0",
"resolved": "https://registry.npmjs.org/mime-db/-/mime-db-1.52.0.tgz",
@@ -6456,6 +7342,14 @@
"node": "*"
}
},
+ "node_modules/minimist": {
+ "version": "1.2.8",
+ "resolved": "https://registry.npmjs.org/minimist/-/minimist-1.2.8.tgz",
+ "integrity": "sha512-2yyAR8qBkN3YuheJanUpWC5U3bb5osDywNB8RzDVlDwDHbocAJveqqj1u8+SVD7jkWT4yvsHCpWqqWqAxb0zCA==",
+ "funding": {
+ "url": "https://github.com/sponsors/ljharb"
+ }
+ },
"node_modules/minipass": {
"version": "5.0.0",
"resolved": "https://registry.npmjs.org/minipass/-/minipass-5.0.0.tgz",
@@ -6499,9 +7393,9 @@
}
},
"node_modules/mongodb": {
- "version": "6.6.0",
- "resolved": "https://registry.npmjs.org/mongodb/-/mongodb-6.6.0.tgz",
- "integrity": "sha512-LoR0hel6y1i7pubPOzbflccdc89RDOapIGqwce4aenOfhhLKOqiQ2F4yQHP+Hqa7TuPhpVqDVjixbvUSx7R0rQ==",
+ "version": "6.7.0",
+ "resolved": "https://registry.npmjs.org/mongodb/-/mongodb-6.7.0.tgz",
+ "integrity": "sha512-TMKyHdtMcO0fYBNORiYdmM25ijsHs+Njs963r4Tro4OQZzqYigAzYQouwWRg4OIaiLRUEGUh/1UAcH5lxdSLIA==",
"dependencies": {
"@mongodb-js/saslprep": "^1.1.5",
"bson": "^6.7.0",
@@ -6544,9 +7438,9 @@
}
},
"node_modules/mongodb-connection-string-url": {
- "version": "3.0.0",
- "resolved": "https://registry.npmjs.org/mongodb-connection-string-url/-/mongodb-connection-string-url-3.0.0.tgz",
- "integrity": "sha512-t1Vf+m1I5hC2M5RJx/7AtxgABy1cZmIPQRMXw+gEIPn/cZNF3Oiy+l0UIypUwVB5trcWHq3crg2g3uAR9aAwsQ==",
+ "version": "3.0.1",
+ "resolved": "https://registry.npmjs.org/mongodb-connection-string-url/-/mongodb-connection-string-url-3.0.1.tgz",
+ "integrity": "sha512-XqMGwRX0Lgn05TDB4PyG2h2kKO/FfWJyCzYQbIhXUxz7ETt0I/FqHjUeqj37irJ+Dl1ZtU82uYyj14u2XsZKfg==",
"dependencies": {
"@types/whatwg-url": "^11.0.2",
"whatwg-url": "^13.0.0"
@@ -6597,6 +7491,47 @@
"node-gyp-build-optional-packages-test": "build-test.js"
}
},
+ "node_modules/multer": {
+ "version": "1.4.5-lts.1",
+ "resolved": "https://registry.npmjs.org/multer/-/multer-1.4.5-lts.1.tgz",
+ "integrity": "sha512-ywPWvcDMeH+z9gQq5qYHCCy+ethsk4goepZ45GLD63fOu0YcNecQxi64nDs3qluZB+murG3/D4dJ7+dGctcCQQ==",
+ "dependencies": {
+ "append-field": "^1.0.0",
+ "busboy": "^1.0.0",
+ "concat-stream": "^1.5.2",
+ "mkdirp": "^0.5.4",
+ "object-assign": "^4.1.1",
+ "type-is": "^1.6.4",
+ "xtend": "^4.0.0"
+ },
+ "engines": {
+ "node": ">= 6.0.0"
+ }
+ },
+ "node_modules/multer/node_modules/mkdirp": {
+ "version": "0.5.6",
+ "resolved": "https://registry.npmjs.org/mkdirp/-/mkdirp-0.5.6.tgz",
+ "integrity": "sha512-FP+p8RB8OWpF3YZBCrP5gtADmtXApB5AMLn+vdyA+PyxCjrCs00mjyUozssO33cwDeT3wNGdLxJ5M//YqtHAJw==",
+ "dependencies": {
+ "minimist": "^1.2.6"
+ },
+ "bin": {
+ "mkdirp": "bin/cmd.js"
+ }
+ },
+ "node_modules/multer/node_modules/xtend": {
+ "version": "4.0.2",
+ "resolved": "https://registry.npmjs.org/xtend/-/xtend-4.0.2.tgz",
+ "integrity": "sha512-LKYU1iAXJXUgAXn9URjiu+MWhyUXHsvfp7mcuYm9dSUKK0/CjtrUwFAxD82/mCWbtLsGjFIad0wIsod4zrTAEQ==",
+ "engines": {
+ "node": ">=0.4"
+ }
+ },
+ "node_modules/murmurhash-js": {
+ "version": "1.0.0",
+ "resolved": "https://registry.npmjs.org/murmurhash-js/-/murmurhash-js-1.0.0.tgz",
+ "integrity": "sha512-TvmkNhkv8yct0SVBSy+o8wYzXjE4Zz3PCesbfs8HiCXXdcTuocApFv11UWlNFWKYsP2okqrhb7JNlSm9InBhIw=="
+ },
"node_modules/mustache": {
"version": "4.2.0",
"resolved": "https://registry.npmjs.org/mustache/-/mustache-4.2.0.tgz",
@@ -6659,6 +7594,34 @@
"resolved": "https://registry.npmjs.org/nanoid/-/nanoid-2.1.11.tgz",
"integrity": "sha512-s/snB+WGm6uwi0WjsZdaVcuf3KJXlfGl2LcxgwkEwJF0D/BWzVWAZW/XY4bFaiR7s0Jk3FPvlnepg1H1b1UwlA=="
},
+ "node_modules/needle": {
+ "version": "3.3.1",
+ "resolved": "https://registry.npmjs.org/needle/-/needle-3.3.1.tgz",
+ "integrity": "sha512-6k0YULvhpw+RoLNiQCRKOl09Rv1dPLr8hHnVjHqdolKwDrdNyk+Hmrthi4lIGPPz3r39dLx0hsF5s40sZ3Us4Q==",
+ "optional": true,
+ "dependencies": {
+ "iconv-lite": "^0.6.3",
+ "sax": "^1.2.4"
+ },
+ "bin": {
+ "needle": "bin/needle"
+ },
+ "engines": {
+ "node": ">= 4.4.x"
+ }
+ },
+ "node_modules/needle/node_modules/iconv-lite": {
+ "version": "0.6.3",
+ "resolved": "https://registry.npmjs.org/iconv-lite/-/iconv-lite-0.6.3.tgz",
+ "integrity": "sha512-4fCk79wshMdzMp2rH06qWrJE4iolqLhCUH+OiuIgU++RB0+94NlDL81atO7GX55uUKueo0txHNtvEyI6D7WdMw==",
+ "optional": true,
+ "dependencies": {
+ "safer-buffer": ">= 2.1.2 < 3.0.0"
+ },
+ "engines": {
+ "node": ">=0.10.0"
+ }
+ },
"node_modules/negotiator": {
"version": "0.6.3",
"resolved": "https://registry.npmjs.org/negotiator/-/negotiator-0.6.3.tgz",
@@ -6667,6 +7630,11 @@
"node": ">= 0.6"
}
},
+ "node_modules/nice-try": {
+ "version": "1.0.5",
+ "resolved": "https://registry.npmjs.org/nice-try/-/nice-try-1.0.5.tgz",
+ "integrity": "sha512-1nh45deeb5olNY7eX82BkPO7SSxR5SSYJiPTrTdFUVYwAl8CKMA5N9PjTYkHiRjisVcxcQ1HXdLhx2qxxJzLNQ=="
+ },
"node_modules/node-addon-api": {
"version": "7.1.0",
"resolved": "https://registry.npmjs.org/node-addon-api/-/node-addon-api-7.1.0.tgz",
@@ -6675,6 +7643,81 @@
"node": "^16 || ^18 || >= 20"
}
},
+ "node_modules/node-elm-compiler": {
+ "version": "5.0.6",
+ "resolved": "https://registry.npmjs.org/node-elm-compiler/-/node-elm-compiler-5.0.6.tgz",
+ "integrity": "sha512-DWTRQR8b54rvschcZRREdsz7K84lnS8A6YJu8du3QLQ8f204SJbyTaA6NzYYbfUG97OTRKRv/0KZl82cTfpLhA==",
+ "dependencies": {
+ "cross-spawn": "6.0.5",
+ "find-elm-dependencies": "^2.0.4",
+ "lodash": "^4.17.19",
+ "temp": "^0.9.0"
+ },
+ "engines": {
+ "node": ">=4.0.0"
+ }
+ },
+ "node_modules/node-elm-compiler/node_modules/cross-spawn": {
+ "version": "6.0.5",
+ "resolved": "https://registry.npmjs.org/cross-spawn/-/cross-spawn-6.0.5.tgz",
+ "integrity": "sha512-eTVLrBSt7fjbDygz805pMnstIs2VTBNkRm0qxZd+M7A5XDdxVRWO5MxGBXZhjY4cqLYLdtrGqRf8mBPmzwSpWQ==",
+ "dependencies": {
+ "nice-try": "^1.0.4",
+ "path-key": "^2.0.1",
+ "semver": "^5.5.0",
+ "shebang-command": "^1.2.0",
+ "which": "^1.2.9"
+ },
+ "engines": {
+ "node": ">=4.8"
+ }
+ },
+ "node_modules/node-elm-compiler/node_modules/path-key": {
+ "version": "2.0.1",
+ "resolved": "https://registry.npmjs.org/path-key/-/path-key-2.0.1.tgz",
+ "integrity": "sha512-fEHGKCSmUSDPv4uoj8AlD+joPlq3peND+HRYyxFz4KPw4z926S/b8rIuFs2FYJg3BwsxJf6A9/3eIdLaYC+9Dw==",
+ "engines": {
+ "node": ">=4"
+ }
+ },
+ "node_modules/node-elm-compiler/node_modules/semver": {
+ "version": "5.7.2",
+ "resolved": "https://registry.npmjs.org/semver/-/semver-5.7.2.tgz",
+ "integrity": "sha512-cBznnQ9KjJqU67B52RMC65CMarK2600WFnbkcaiwWq3xy/5haFJlshgnpjovMVJ+Hff49d8GEn0b87C5pDQ10g==",
+ "bin": {
+ "semver": "bin/semver"
+ }
+ },
+ "node_modules/node-elm-compiler/node_modules/shebang-command": {
+ "version": "1.2.0",
+ "resolved": "https://registry.npmjs.org/shebang-command/-/shebang-command-1.2.0.tgz",
+ "integrity": "sha512-EV3L1+UQWGor21OmnvojK36mhg+TyIKDh3iFBKBohr5xeXIhNBcx8oWdgkTEEQ+BEFFYdLRuqMfd5L84N1V5Vg==",
+ "dependencies": {
+ "shebang-regex": "^1.0.0"
+ },
+ "engines": {
+ "node": ">=0.10.0"
+ }
+ },
+ "node_modules/node-elm-compiler/node_modules/shebang-regex": {
+ "version": "1.0.0",
+ "resolved": "https://registry.npmjs.org/shebang-regex/-/shebang-regex-1.0.0.tgz",
+ "integrity": "sha512-wpoSFAxys6b2a2wHZ1XpDSgD7N9iVjg29Ph9uV/uaP9Ex/KXlkTZTeddxDPSYQpgvzKLGJke2UU0AzoGCjNIvQ==",
+ "engines": {
+ "node": ">=0.10.0"
+ }
+ },
+ "node_modules/node-elm-compiler/node_modules/which": {
+ "version": "1.3.1",
+ "resolved": "https://registry.npmjs.org/which/-/which-1.3.1.tgz",
+ "integrity": "sha512-HxJdYWq1MTIQbJ3nw0cqssHoTNU267KlrDuGZ1WYlxDStUtKUhOaJmh112/TZmHxxUfuJqPXSOm7tDyas0OSIQ==",
+ "dependencies": {
+ "isexe": "^2.0.0"
+ },
+ "bin": {
+ "which": "bin/which"
+ }
+ },
"node_modules/node-fetch": {
"version": "2.7.0",
"resolved": "https://registry.npmjs.org/node-fetch/-/node-fetch-2.7.0.tgz",
@@ -6745,9 +7788,9 @@
"integrity": "sha512-PiVXnNuFm5+iYkLBNeq5211hvO38y63T0i2KKh2KnUs3RpzJ+JtODFjkD8yjLwnDkTYF1eKXheUwdssR+NRZdg=="
},
"node_modules/nodemailer": {
- "version": "6.9.13",
- "resolved": "https://registry.npmjs.org/nodemailer/-/nodemailer-6.9.13.tgz",
- "integrity": "sha512-7o38Yogx6krdoBf3jCAqnIN4oSQFx+fMa0I7dK1D+me9kBxx12D+/33wSb+fhOCtIxvYJ+4x4IMEhmhCKfAiOA==",
+ "version": "6.9.14",
+ "resolved": "https://registry.npmjs.org/nodemailer/-/nodemailer-6.9.14.tgz",
+ "integrity": "sha512-Dobp/ebDKBvz91sbtRKhcznLThrKxKt97GI2FAlAyy+fk19j73Uz3sBXolVtmcXjaorivqsbbbjDY+Jkt4/bQA==",
"engines": {
"node": ">=6.0.0"
}
@@ -6912,6 +7955,14 @@
"url": "https://github.com/sponsors/sindresorhus"
}
},
+ "node_modules/parse-node-version": {
+ "version": "1.0.1",
+ "resolved": "https://registry.npmjs.org/parse-node-version/-/parse-node-version-1.0.1.tgz",
+ "integrity": "sha512-3YHlOa/JgH6Mnpr05jP9eDG254US9ek25LyIxZlDItp2iJtwyaXQb57lBYLdT3MowkUFYEV2XXNAYIPlESvJlA==",
+ "engines": {
+ "node": ">= 0.10"
+ }
+ },
"node_modules/parseurl": {
"version": "1.3.3",
"resolved": "https://registry.npmjs.org/parseurl/-/parseurl-1.3.3.tgz",
@@ -6928,6 +7979,14 @@
"node": ">=0.10.0"
}
},
+ "node_modules/path-key": {
+ "version": "3.1.1",
+ "resolved": "https://registry.npmjs.org/path-key/-/path-key-3.1.1.tgz",
+ "integrity": "sha512-ojmeN0qd+y0jszEtoY48r0Peq5dwMEkIlCOu6Q5f41lfkswXuKtYrhgoTpLnyIcHm24Uhqx+5Tqm2InSwLhE6Q==",
+ "engines": {
+ "node": ">=8"
+ }
+ },
"node_modules/path-parse": {
"version": "1.0.7",
"resolved": "https://registry.npmjs.org/path-parse/-/path-parse-1.0.7.tgz",
@@ -6978,6 +8037,15 @@
"url": "https://github.com/sponsors/jonschlinkert"
}
},
+ "node_modules/pify": {
+ "version": "4.0.1",
+ "resolved": "https://registry.npmjs.org/pify/-/pify-4.0.1.tgz",
+ "integrity": "sha512-uB80kBFb/tfd68bVleG9T5GGsGPjJrLAUpR5PZIrhBnIaRTQRjqdJSsIKkOP6OAIFbj7GOrcudc5pNjZ+geV2g==",
+ "optional": true,
+ "engines": {
+ "node": ">=6"
+ }
+ },
"node_modules/poly-decomp": {
"version": "0.1.1",
"resolved": "https://registry.npmjs.org/poly-decomp/-/poly-decomp-0.1.1.tgz",
@@ -6986,11 +8054,55 @@
"node": "*"
}
},
+ "node_modules/postcss": {
+ "version": "8.4.38",
+ "resolved": "https://registry.npmjs.org/postcss/-/postcss-8.4.38.tgz",
+ "integrity": "sha512-Wglpdk03BSfXkHoQa3b/oulrotAkwrlLDRSOb9D0bN86FdRyE9lppSp33aHNPgBa0JKCoB+drFLZkQoRRYae5A==",
+ "funding": [
+ {
+ "type": "opencollective",
+ "url": "https://opencollective.com/postcss/"
+ },
+ {
+ "type": "tidelift",
+ "url": "https://tidelift.com/funding/github/npm/postcss"
+ },
+ {
+ "type": "github",
+ "url": "https://github.com/sponsors/ai"
+ }
+ ],
+ "dependencies": {
+ "nanoid": "^3.3.7",
+ "picocolors": "^1.0.0",
+ "source-map-js": "^1.2.0"
+ },
+ "engines": {
+ "node": "^10 || ^12 || >=14"
+ }
+ },
"node_modules/postcss-value-parser": {
"version": "4.2.0",
"resolved": "https://registry.npmjs.org/postcss-value-parser/-/postcss-value-parser-4.2.0.tgz",
"integrity": "sha512-1NNCs6uurfkVbeXG4S8JFT9t19m45ICnif8zWLd5oPSZ50QnwMfK+H3jv408d4jw/7Bttv5axS5IiHoLaVNHeQ=="
},
+ "node_modules/postcss/node_modules/nanoid": {
+ "version": "3.3.7",
+ "resolved": "https://registry.npmjs.org/nanoid/-/nanoid-3.3.7.tgz",
+ "integrity": "sha512-eSRppjcPIatRIMC1U6UngP8XFcz8MQWGQdt1MTBQ7NaAmvXDfvNxbvWV3x2y6CdEUciCSsDHDQZbhYaB8QEo2g==",
+ "funding": [
+ {
+ "type": "github",
+ "url": "https://github.com/sponsors/ai"
+ }
+ ],
+ "bin": {
+ "nanoid": "bin/nanoid.cjs"
+ },
+ "engines": {
+ "node": "^10 || ^12 || ^13.7 || ^14 || >=15.0.1"
+ }
+ },
"node_modules/posthtml": {
"version": "0.16.6",
"resolved": "https://registry.npmjs.org/posthtml/-/posthtml-0.16.6.tgz",
@@ -7041,10 +8153,18 @@
"resolved": "https://registry.npmjs.org/process-nextick-args/-/process-nextick-args-2.0.1.tgz",
"integrity": "sha512-3ouUOpQhtgrbOa17J7+uxOTpITYWaGP7/AhoR3+A+/1e9skrzelGi/dXzEYyvbxubEF6Wn2ypscTKiKJFFn1ag=="
},
+ "node_modules/promise": {
+ "version": "7.3.1",
+ "resolved": "https://registry.npmjs.org/promise/-/promise-7.3.1.tgz",
+ "integrity": "sha512-nolQXZ/4L+bP/UGlkfaIujX9BKxGwmQ9OT4mOt5yvy8iK1h3wqTEJCijzGANTCCl9nWjY41juyAn2K3Q1hLLTg==",
+ "dependencies": {
+ "asap": "~2.0.3"
+ }
+ },
"node_modules/protobufjs": {
- "version": "7.3.0",
- "resolved": "https://registry.npmjs.org/protobufjs/-/protobufjs-7.3.0.tgz",
- "integrity": "sha512-YWD03n3shzV9ImZRX3ccbjqLxj7NokGN0V/ESiBV5xWqrommYHYiihuIyavq03pWSGqlyvYUFmfoMKd+1rPA/g==",
+ "version": "7.3.2",
+ "resolved": "https://registry.npmjs.org/protobufjs/-/protobufjs-7.3.2.tgz",
+ "integrity": "sha512-RXyHaACeqXeqAKGLDl68rQKbmObRsTIn4TYVUUug1KfS47YWCo5MacGITEryugIgZqORCvJWEk4l449POg5Txg==",
"hasInstallScript": true,
"dependencies": {
"@protobufjs/aspromise": "^1.1.2",
@@ -7081,6 +8201,124 @@
"resolved": "https://registry.npmjs.org/proxy-from-env/-/proxy-from-env-1.1.0.tgz",
"integrity": "sha512-D+zkORCbA9f1tdWRK0RaCR3GPv50cMxcrz4X8k5LTSUD1Dkw47mKJEZQNunItRTkWwgtaUSo1RVFRIG9ZXiFYg=="
},
+ "node_modules/prr": {
+ "version": "1.0.1",
+ "resolved": "https://registry.npmjs.org/prr/-/prr-1.0.1.tgz",
+ "integrity": "sha512-yPw4Sng1gWghHQWj0B3ZggWUm4qVbPwPFcRG8KyxiU7J2OHFSoEHKS+EZ3fv5l1t9CyCiop6l/ZYeWbrgoQejw==",
+ "optional": true
+ },
+ "node_modules/pug": {
+ "version": "3.0.3",
+ "resolved": "https://registry.npmjs.org/pug/-/pug-3.0.3.tgz",
+ "integrity": "sha512-uBi6kmc9f3SZ3PXxqcHiUZLmIXgfgWooKWXcwSGwQd2Zi5Rb0bT14+8CJjJgI8AB+nndLaNgHGrcc6bPIB665g==",
+ "dependencies": {
+ "pug-code-gen": "^3.0.3",
+ "pug-filters": "^4.0.0",
+ "pug-lexer": "^5.0.1",
+ "pug-linker": "^4.0.0",
+ "pug-load": "^3.0.0",
+ "pug-parser": "^6.0.0",
+ "pug-runtime": "^3.0.1",
+ "pug-strip-comments": "^2.0.0"
+ }
+ },
+ "node_modules/pug-attrs": {
+ "version": "3.0.0",
+ "resolved": "https://registry.npmjs.org/pug-attrs/-/pug-attrs-3.0.0.tgz",
+ "integrity": "sha512-azINV9dUtzPMFQktvTXciNAfAuVh/L/JCl0vtPCwvOA21uZrC08K/UnmrL+SXGEVc1FwzjW62+xw5S/uaLj6cA==",
+ "dependencies": {
+ "constantinople": "^4.0.1",
+ "js-stringify": "^1.0.2",
+ "pug-runtime": "^3.0.0"
+ }
+ },
+ "node_modules/pug-code-gen": {
+ "version": "3.0.3",
+ "resolved": "https://registry.npmjs.org/pug-code-gen/-/pug-code-gen-3.0.3.tgz",
+ "integrity": "sha512-cYQg0JW0w32Ux+XTeZnBEeuWrAY7/HNE6TWnhiHGnnRYlCgyAUPoyh9KzCMa9WhcJlJ1AtQqpEYHc+vbCzA+Aw==",
+ "dependencies": {
+ "constantinople": "^4.0.1",
+ "doctypes": "^1.1.0",
+ "js-stringify": "^1.0.2",
+ "pug-attrs": "^3.0.0",
+ "pug-error": "^2.1.0",
+ "pug-runtime": "^3.0.1",
+ "void-elements": "^3.1.0",
+ "with": "^7.0.0"
+ }
+ },
+ "node_modules/pug-error": {
+ "version": "2.1.0",
+ "resolved": "https://registry.npmjs.org/pug-error/-/pug-error-2.1.0.tgz",
+ "integrity": "sha512-lv7sU9e5Jk8IeUheHata6/UThZ7RK2jnaaNztxfPYUY+VxZyk/ePVaNZ/vwmH8WqGvDz3LrNYt/+gA55NDg6Pg=="
+ },
+ "node_modules/pug-filters": {
+ "version": "4.0.0",
+ "resolved": "https://registry.npmjs.org/pug-filters/-/pug-filters-4.0.0.tgz",
+ "integrity": "sha512-yeNFtq5Yxmfz0f9z2rMXGw/8/4i1cCFecw/Q7+D0V2DdtII5UvqE12VaZ2AY7ri6o5RNXiweGH79OCq+2RQU4A==",
+ "dependencies": {
+ "constantinople": "^4.0.1",
+ "jstransformer": "1.0.0",
+ "pug-error": "^2.0.0",
+ "pug-walk": "^2.0.0",
+ "resolve": "^1.15.1"
+ }
+ },
+ "node_modules/pug-lexer": {
+ "version": "5.0.1",
+ "resolved": "https://registry.npmjs.org/pug-lexer/-/pug-lexer-5.0.1.tgz",
+ "integrity": "sha512-0I6C62+keXlZPZkOJeVam9aBLVP2EnbeDw3An+k0/QlqdwH6rv8284nko14Na7c0TtqtogfWXcRoFE4O4Ff20w==",
+ "dependencies": {
+ "character-parser": "^2.2.0",
+ "is-expression": "^4.0.0",
+ "pug-error": "^2.0.0"
+ }
+ },
+ "node_modules/pug-linker": {
+ "version": "4.0.0",
+ "resolved": "https://registry.npmjs.org/pug-linker/-/pug-linker-4.0.0.tgz",
+ "integrity": "sha512-gjD1yzp0yxbQqnzBAdlhbgoJL5qIFJw78juN1NpTLt/mfPJ5VgC4BvkoD3G23qKzJtIIXBbcCt6FioLSFLOHdw==",
+ "dependencies": {
+ "pug-error": "^2.0.0",
+ "pug-walk": "^2.0.0"
+ }
+ },
+ "node_modules/pug-load": {
+ "version": "3.0.0",
+ "resolved": "https://registry.npmjs.org/pug-load/-/pug-load-3.0.0.tgz",
+ "integrity": "sha512-OCjTEnhLWZBvS4zni/WUMjH2YSUosnsmjGBB1An7CsKQarYSWQ0GCVyd4eQPMFJqZ8w9xgs01QdiZXKVjk92EQ==",
+ "dependencies": {
+ "object-assign": "^4.1.1",
+ "pug-walk": "^2.0.0"
+ }
+ },
+ "node_modules/pug-parser": {
+ "version": "6.0.0",
+ "resolved": "https://registry.npmjs.org/pug-parser/-/pug-parser-6.0.0.tgz",
+ "integrity": "sha512-ukiYM/9cH6Cml+AOl5kETtM9NR3WulyVP2y4HOU45DyMim1IeP/OOiyEWRr6qk5I5klpsBnbuHpwKmTx6WURnw==",
+ "dependencies": {
+ "pug-error": "^2.0.0",
+ "token-stream": "1.0.0"
+ }
+ },
+ "node_modules/pug-runtime": {
+ "version": "3.0.1",
+ "resolved": "https://registry.npmjs.org/pug-runtime/-/pug-runtime-3.0.1.tgz",
+ "integrity": "sha512-L50zbvrQ35TkpHwv0G6aLSuueDRwc/97XdY8kL3tOT0FmhgG7UypU3VztfV/LATAvmUfYi4wNxSajhSAeNN+Kg=="
+ },
+ "node_modules/pug-strip-comments": {
+ "version": "2.0.0",
+ "resolved": "https://registry.npmjs.org/pug-strip-comments/-/pug-strip-comments-2.0.0.tgz",
+ "integrity": "sha512-zo8DsDpH7eTkPHCXFeAk1xZXJbyoTfdPlNR0bK7rpOMuhBYb0f5qUVCO1xlsitYd3w5FQTK7zpNVKb3rZoUrrQ==",
+ "dependencies": {
+ "pug-error": "^2.0.0"
+ }
+ },
+ "node_modules/pug-walk": {
+ "version": "2.0.0",
+ "resolved": "https://registry.npmjs.org/pug-walk/-/pug-walk-2.0.0.tgz",
+ "integrity": "sha512-yYELe9Q5q9IQhuvqsZNwA5hfPkMJ8u92bQLIMcsMxf/VADjNtEYptU+inlufAFYcWdHlwNfZOEnOOQrZrcyJCQ=="
+ },
"node_modules/punycode": {
"version": "2.3.1",
"resolved": "https://registry.npmjs.org/punycode/-/punycode-2.3.1.tgz",
@@ -7360,9 +8598,9 @@
"integrity": "sha512-YZo3K82SD7Riyi0E1EQPojLz7kpepnSQI9IyPbHHg1XXXevb5dJI7tpyN2ADxGcQbHG7vcyRHk0cbwqcQriUtg=="
},
"node_modules/sass": {
- "version": "1.56.1",
- "resolved": "https://registry.npmjs.org/sass/-/sass-1.56.1.tgz",
- "integrity": "sha512-VpEyKpyBPCxE7qGDtOcdJ6fFbcpOM+Emu7uZLxVrkX8KVU/Dp5UF7WLvzqRuUhB6mqqQt1xffLoG+AndxTZrCQ==",
+ "version": "1.77.4",
+ "resolved": "https://registry.npmjs.org/sass/-/sass-1.77.4.tgz",
+ "integrity": "sha512-vcF3Ckow6g939GMA4PeU7b2K/9FALXk2KF9J87txdHzXbUF9XRQRwSxcAs/fGaTnJeBFd7UoV22j3lzMLdM0Pw==",
"dependencies": {
"chokidar": ">=3.0.0 <4.0.0",
"immutable": "^4.0.0",
@@ -7372,7 +8610,24 @@
"sass": "sass.js"
},
"engines": {
- "node": ">=12.0.0"
+ "node": ">=14.0.0"
+ }
+ },
+ "node_modules/sax": {
+ "version": "1.4.1",
+ "resolved": "https://registry.npmjs.org/sax/-/sax-1.4.1.tgz",
+ "integrity": "sha512-+aWOz7yVScEGoKNd4PA10LZ8sk0A/z5+nXQG5giUO5rprX9jgYsTdov9qCchZiPIZezbZH+jRut8nPodFAX4Jg==",
+ "optional": true
+ },
+ "node_modules/semver": {
+ "version": "7.6.2",
+ "resolved": "https://registry.npmjs.org/semver/-/semver-7.6.2.tgz",
+ "integrity": "sha512-FNAIBWCx9qcRhoHcgcJ0gvU7SN1lYU2ZXuSfl04bSC5OpvDHFyJCjdNHomPXxjQlCBU67YW64PzY7/VIEH7F2w==",
+ "bin": {
+ "semver": "bin/semver.js"
+ },
+ "engines": {
+ "node": ">=10"
}
},
"node_modules/send": {
@@ -7451,6 +8706,11 @@
"resolved": "https://registry.npmjs.org/setprototypeof/-/setprototypeof-1.2.0.tgz",
"integrity": "sha512-E5LDX7Wrp85Kil5bhZv46j8jOeboKq5JMmYM3gVGdGH8xFpPWXUMsNrlODCrkoxMEeNi/XZIwuRvY4XNwYMJpw=="
},
+ "node_modules/shallow-copy": {
+ "version": "0.0.1",
+ "resolved": "https://registry.npmjs.org/shallow-copy/-/shallow-copy-0.0.1.tgz",
+ "integrity": "sha512-b6i4ZpVuUxB9h5gfCxPiusKYkqTMOjEbBs4wMaFbkfia4yFv92UKZ6Df8WXcKbn08JNL/abvg3FnMAOfakDvUw=="
+ },
"node_modules/sharp": {
"version": "0.33.3",
"resolved": "https://registry.npmjs.org/sharp/-/sharp-0.33.3.tgz",
@@ -7498,18 +8758,23 @@
"node": ">=8"
}
},
- "node_modules/sharp/node_modules/semver": {
- "version": "7.6.0",
- "resolved": "https://registry.npmjs.org/semver/-/semver-7.6.0.tgz",
- "integrity": "sha512-EnwXhrlwXMk9gKu5/flx5sv/an57AkRplG3hTK68W7FRDN+k+OWBj65M7719OkA82XLBxrcX0KSHj+X5COhOVg==",
+ "node_modules/shebang-command": {
+ "version": "2.0.0",
+ "resolved": "https://registry.npmjs.org/shebang-command/-/shebang-command-2.0.0.tgz",
+ "integrity": "sha512-kHxr2zZpYtdmrN1qDjrrX/Z1rR1kG8Dx+gkpK1G4eXmvXswmcE1hTWBWYUzlraYw1/yZp6YuDY77YtvbN0dmDA==",
"dependencies": {
- "lru-cache": "^6.0.0"
- },
- "bin": {
- "semver": "bin/semver.js"
+ "shebang-regex": "^3.0.0"
},
"engines": {
- "node": ">=10"
+ "node": ">=8"
+ }
+ },
+ "node_modules/shebang-regex": {
+ "version": "3.0.0",
+ "resolved": "https://registry.npmjs.org/shebang-regex/-/shebang-regex-3.0.0.tgz",
+ "integrity": "sha512-7++dFhtcx3353uBaq8DDR4NuxBetBzC7ZQOhmTQInHEd6bSrXdiEyzCvG07Z44UYdLShWUyXt5M/yhz8ekcb1A==",
+ "engines": {
+ "node": ">=8"
}
},
"node_modules/side-channel": {
@@ -7551,14 +8816,41 @@
"node": ">=8"
}
},
+ "node_modules/source-map": {
+ "version": "0.6.1",
+ "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.6.1.tgz",
+ "integrity": "sha512-UjgapumWlbMhkBgzT7Ykc5YXUT46F0iKu8SGXq0bcwP5dz/h0Plj6enJqjz1Zbq2l5WaqYnrVbwWOWMyF3F47g==",
+ "engines": {
+ "node": ">=0.10.0"
+ }
+ },
"node_modules/source-map-js": {
- "version": "1.0.2",
- "resolved": "https://registry.npmjs.org/source-map-js/-/source-map-js-1.0.2.tgz",
- "integrity": "sha512-R0XvVJ9WusLiqTCEiGCmICCMplcCkIwwR11mOSD9CR5u+IXYdiseeEuXCVAjS54zqwkLcPNnmU4OeJ6tUrWhDw==",
+ "version": "1.2.0",
+ "resolved": "https://registry.npmjs.org/source-map-js/-/source-map-js-1.2.0.tgz",
+ "integrity": "sha512-itJW8lvSA0TXEphiRoawsCksnlf8SyvmFzIhltqAHluXd88pkCd+cXJVHTDwdCr0IzwptSm035IHQktUu1QUMg==",
"engines": {
"node": ">=0.10.0"
}
},
+ "node_modules/source-map-resolve": {
+ "version": "0.6.0",
+ "resolved": "https://registry.npmjs.org/source-map-resolve/-/source-map-resolve-0.6.0.tgz",
+ "integrity": "sha512-KXBr9d/fO/bWo97NXsPIAW1bFSBOuCnjbNTBMO7N59hsv5i9yzRDfcYwwt0l04+VqnKC+EwzvJZIP/qkuMgR/w==",
+ "deprecated": "See https://github.com/lydell/source-map-resolve#deprecated",
+ "dependencies": {
+ "atob": "^2.1.2",
+ "decode-uri-component": "^0.2.0"
+ }
+ },
+ "node_modules/source-map-support": {
+ "version": "0.5.21",
+ "resolved": "https://registry.npmjs.org/source-map-support/-/source-map-support-0.5.21.tgz",
+ "integrity": "sha512-uBHU3L3czsIyYXKX88fdrGovxdSCoTGDRZ6SYXtSRxLZUzHg5P/66Ht6uoUlHu9EZod+inXhKo3qQgwXUT/y1w==",
+ "dependencies": {
+ "buffer-from": "^1.0.0",
+ "source-map": "^0.6.0"
+ }
+ },
"node_modules/sparse-bitfield": {
"version": "3.0.3",
"resolved": "https://registry.npmjs.org/sparse-bitfield/-/sparse-bitfield-3.0.3.tgz",
@@ -7567,6 +8859,11 @@
"memory-pager": "^1.0.2"
}
},
+ "node_modules/sprintf-js": {
+ "version": "1.0.3",
+ "resolved": "https://registry.npmjs.org/sprintf-js/-/sprintf-js-1.0.3.tgz",
+ "integrity": "sha512-D9cPgkvLlV3t3IzL0D0YLvGA9Ahk4PcvVwUbN0dSGr1aP0Nrt4AEnTUbuGvquEC0mA64Gqt1fzirlRs5ibXx8g=="
+ },
"node_modules/sqlstring": {
"version": "2.3.1",
"resolved": "https://registry.npmjs.org/sqlstring/-/sqlstring-2.3.1.tgz",
@@ -7605,6 +8902,14 @@
"node": ">= 0.8"
}
},
+ "node_modules/streamsearch": {
+ "version": "1.1.0",
+ "resolved": "https://registry.npmjs.org/streamsearch/-/streamsearch-1.1.0.tgz",
+ "integrity": "sha512-Mcc5wHehp9aXz1ax6bZUyY5afg9u2rv5cqQI3mRrYkGC8rW2hM02jWuwjtL++LS5qinSyhj2QfLyNsuc+VsExg==",
+ "engines": {
+ "node": ">=10.0.0"
+ }
+ },
"node_modules/string_decoder": {
"version": "1.3.0",
"resolved": "https://registry.npmjs.org/string_decoder/-/string_decoder-1.3.0.tgz",
@@ -7637,6 +8942,76 @@
"node": ">=8"
}
},
+ "node_modules/stylus": {
+ "version": "0.55.0",
+ "resolved": "https://registry.npmjs.org/stylus/-/stylus-0.55.0.tgz",
+ "integrity": "sha512-MuzIIVRSbc8XxHH7FjkvWqkIcr1BvoMZoR/oFuAJDlh7VSaNJzrB4uJ38GRQa+mWjLXODAMzeDe0xi9GYbGwnw==",
+ "dependencies": {
+ "css": "^3.0.0",
+ "debug": "~3.1.0",
+ "glob": "^7.1.6",
+ "mkdirp": "~1.0.4",
+ "safer-buffer": "^2.1.2",
+ "sax": "~1.2.4",
+ "semver": "^6.3.0",
+ "source-map": "^0.7.3"
+ },
+ "bin": {
+ "stylus": "bin/stylus"
+ },
+ "engines": {
+ "node": "*"
+ }
+ },
+ "node_modules/stylus/node_modules/debug": {
+ "version": "3.1.0",
+ "resolved": "https://registry.npmjs.org/debug/-/debug-3.1.0.tgz",
+ "integrity": "sha512-OX8XqP7/1a9cqkxYw2yXss15f26NKWBpDXQd0/uK/KPqdQhxbPa994hnzjcE2VqQpDslf55723cKPUOGSmMY3g==",
+ "dependencies": {
+ "ms": "2.0.0"
+ }
+ },
+ "node_modules/stylus/node_modules/ms": {
+ "version": "2.0.0",
+ "resolved": "https://registry.npmjs.org/ms/-/ms-2.0.0.tgz",
+ "integrity": "sha512-Tpp60P6IUJDTuOq/5Z8cdskzJujfwqfOTkrwIwj7IRISpnkJnT6SyJ4PCPnGMoFjC9ddhal5KVIYtAt97ix05A=="
+ },
+ "node_modules/stylus/node_modules/sax": {
+ "version": "1.2.4",
+ "resolved": "https://registry.npmjs.org/sax/-/sax-1.2.4.tgz",
+ "integrity": "sha512-NqVDv9TpANUjFm0N8uM5GxL36UgKi9/atZw+x7YFnQ8ckwFGKrl4xX4yWtrey3UJm5nP1kUbnYgLopqWNSRhWw=="
+ },
+ "node_modules/stylus/node_modules/semver": {
+ "version": "6.3.1",
+ "resolved": "https://registry.npmjs.org/semver/-/semver-6.3.1.tgz",
+ "integrity": "sha512-BR7VvDCVHO+q2xBEWskxS6DJE1qRnb7DxzUrogb71CWoSficBxYsiAGd+Kl0mmq/MprG9yArRkyrQxTO6XjMzA==",
+ "bin": {
+ "semver": "bin/semver.js"
+ }
+ },
+ "node_modules/stylus/node_modules/source-map": {
+ "version": "0.7.4",
+ "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.7.4.tgz",
+ "integrity": "sha512-l3BikUxvPOcn5E74dZiq5BGsTb5yEwhaTSzccU6t4sDOH8NWJCstKO5QT2CvtFoK6F0saL7p9xHAqHOlCPJygA==",
+ "engines": {
+ "node": ">= 8"
+ }
+ },
+ "node_modules/sugarss": {
+ "version": "3.0.3",
+ "resolved": "https://registry.npmjs.org/sugarss/-/sugarss-3.0.3.tgz",
+ "integrity": "sha512-uxa2bbuc+w7ov7DyYIhF6bM0qZF3UkFT5/nE8AJgboiVnKsBDbwxs++dehEIe1JNhpMaGJc37wGQ2QrrWey2Sg==",
+ "dependencies": {
+ "postcss": "^8.1.6"
+ },
+ "engines": {
+ "node": ">=10.0"
+ },
+ "funding": {
+ "type": "opencollective",
+ "url": "https://opencollective.com/postcss/"
+ }
+ },
"node_modules/superagent": {
"version": "3.8.3",
"resolved": "https://registry.npmjs.org/superagent/-/superagent-3.8.3.tgz",
@@ -7752,16 +9127,6 @@
"url": "https://opencollective.com/svgo"
}
},
- "node_modules/svgo/node_modules/commander": {
- "version": "7.2.0",
- "resolved": "https://registry.npmjs.org/commander/-/commander-7.2.0.tgz",
- "integrity": "sha512-QrWXB+ZQSVPmIWIhtEO9H+gwHaMGYiF5ChvoJ+K9ZGHG/sVsa6yiesAD1GC/x46sET00Xlwo1u49RVVVzvcSkw==",
- "optional": true,
- "peer": true,
- "engines": {
- "node": ">= 10"
- }
- },
"node_modules/tar": {
"version": "6.2.1",
"resolved": "https://registry.npmjs.org/tar/-/tar-6.2.1.tgz",
@@ -7786,6 +9151,112 @@
"node": ">=8.0.0"
}
},
+ "node_modules/temp": {
+ "version": "0.9.4",
+ "resolved": "https://registry.npmjs.org/temp/-/temp-0.9.4.tgz",
+ "integrity": "sha512-yYrrsWnrXMcdsnu/7YMYAofM1ktpL5By7vZhf15CrXijWWrEYZks5AXBudalfSWJLlnen/QUJUB5aoB0kqZUGA==",
+ "dependencies": {
+ "mkdirp": "^0.5.1",
+ "rimraf": "~2.6.2"
+ },
+ "engines": {
+ "node": ">=6.0.0"
+ }
+ },
+ "node_modules/temp/node_modules/mkdirp": {
+ "version": "0.5.6",
+ "resolved": "https://registry.npmjs.org/mkdirp/-/mkdirp-0.5.6.tgz",
+ "integrity": "sha512-FP+p8RB8OWpF3YZBCrP5gtADmtXApB5AMLn+vdyA+PyxCjrCs00mjyUozssO33cwDeT3wNGdLxJ5M//YqtHAJw==",
+ "dependencies": {
+ "minimist": "^1.2.6"
+ },
+ "bin": {
+ "mkdirp": "bin/cmd.js"
+ }
+ },
+ "node_modules/temp/node_modules/rimraf": {
+ "version": "2.6.3",
+ "resolved": "https://registry.npmjs.org/rimraf/-/rimraf-2.6.3.tgz",
+ "integrity": "sha512-mwqeW5XsA2qAejG46gYdENaxXjx9onRNCfn7L0duuP4hCuTIi/QO7PDK07KJfp1d+izWPrzEJDcSqBa0OZQriA==",
+ "deprecated": "Rimraf versions prior to v4 are no longer supported",
+ "dependencies": {
+ "glob": "^7.1.3"
+ },
+ "bin": {
+ "rimraf": "bin.js"
+ }
+ },
+ "node_modules/terser": {
+ "version": "5.31.1",
+ "resolved": "https://registry.npmjs.org/terser/-/terser-5.31.1.tgz",
+ "integrity": "sha512-37upzU1+viGvuFtBo9NPufCb9dwM0+l9hMxYyWfBA+fbwrPqNJAhbZ6W47bBFnZHKHTUBnMvi87434qq+qnxOg==",
+ "dependencies": {
+ "@jridgewell/source-map": "^0.3.3",
+ "acorn": "^8.8.2",
+ "commander": "^2.20.0",
+ "source-map-support": "~0.5.20"
+ },
+ "bin": {
+ "terser": "bin/terser"
+ },
+ "engines": {
+ "node": ">=10"
+ }
+ },
+ "node_modules/terser/node_modules/acorn": {
+ "version": "8.11.3",
+ "resolved": "https://registry.npmjs.org/acorn/-/acorn-8.11.3.tgz",
+ "integrity": "sha512-Y9rRfJG5jcKOE0CLisYbojUjIrIEE7AGMzA/Sm4BslANhbS+cDMpgBdcPT91oJ7OuJ9hYJBx59RjbhxVnrF8Xg==",
+ "bin": {
+ "acorn": "bin/acorn"
+ },
+ "engines": {
+ "node": ">=0.4.0"
+ }
+ },
+ "node_modules/terser/node_modules/commander": {
+ "version": "2.20.3",
+ "resolved": "https://registry.npmjs.org/commander/-/commander-2.20.3.tgz",
+ "integrity": "sha512-GpVkmM8vF2vQUkj2LvZmD35JxeJOLCwJ9cUkugyk2nuhbv3+mJvpLYYt+0+USMxE+oj+ey/lJEnhZw75x/OMcQ=="
+ },
+ "node_modules/through2": {
+ "version": "0.6.5",
+ "resolved": "https://registry.npmjs.org/through2/-/through2-0.6.5.tgz",
+ "integrity": "sha512-RkK/CCESdTKQZHdmKICijdKKsCRVHs5KsLZ6pACAmF/1GPUQhonHSXWNERctxEp7RmvjdNbZTL5z9V7nSCXKcg==",
+ "dependencies": {
+ "readable-stream": ">=1.0.33-1 <1.1.0-0",
+ "xtend": ">=4.0.0 <4.1.0-0"
+ }
+ },
+ "node_modules/through2/node_modules/isarray": {
+ "version": "0.0.1",
+ "resolved": "https://registry.npmjs.org/isarray/-/isarray-0.0.1.tgz",
+ "integrity": "sha512-D2S+3GLxWH+uhrNEcoh/fnmYeP8E8/zHl644d/jdA0g2uyXvy3sb0qxotE+ne0LtccHknQzWwZEzhak7oJ0COQ=="
+ },
+ "node_modules/through2/node_modules/readable-stream": {
+ "version": "1.0.34",
+ "resolved": "https://registry.npmjs.org/readable-stream/-/readable-stream-1.0.34.tgz",
+ "integrity": "sha512-ok1qVCJuRkNmvebYikljxJA/UEsKwLl2nI1OmaqAu4/UE+h0wKCHok4XkL/gvi39OacXvw59RJUOFUkDib2rHg==",
+ "dependencies": {
+ "core-util-is": "~1.0.0",
+ "inherits": "~2.0.1",
+ "isarray": "0.0.1",
+ "string_decoder": "~0.10.x"
+ }
+ },
+ "node_modules/through2/node_modules/string_decoder": {
+ "version": "0.10.31",
+ "resolved": "https://registry.npmjs.org/string_decoder/-/string_decoder-0.10.31.tgz",
+ "integrity": "sha512-ev2QzSzWPYmy9GuqfIVildA4OdcGLeFZQrq5ys6RtiuF+RQQiZWr8TZNyAcuVXyQRYfEO+MsoB/1BuQVhOJuoQ=="
+ },
+ "node_modules/through2/node_modules/xtend": {
+ "version": "4.0.2",
+ "resolved": "https://registry.npmjs.org/xtend/-/xtend-4.0.2.tgz",
+ "integrity": "sha512-LKYU1iAXJXUgAXn9URjiu+MWhyUXHsvfp7mcuYm9dSUKK0/CjtrUwFAxD82/mCWbtLsGjFIad0wIsod4zrTAEQ==",
+ "engines": {
+ "node": ">=0.4"
+ }
+ },
"node_modules/tildify": {
"version": "2.0.0",
"resolved": "https://registry.npmjs.org/tildify/-/tildify-2.0.0.tgz",
@@ -7799,6 +9270,14 @@
"resolved": "https://registry.npmjs.org/timsort/-/timsort-0.3.0.tgz",
"integrity": "sha512-qsdtZH+vMoCARQtyod4imc2nIJwg9Cc7lPRrw9CzF8ZKR0khdr8+2nX80PBhET3tcyTtJDxAffGh2rXH4tyU8A=="
},
+ "node_modules/to-fast-properties": {
+ "version": "2.0.0",
+ "resolved": "https://registry.npmjs.org/to-fast-properties/-/to-fast-properties-2.0.0.tgz",
+ "integrity": "sha512-/OaKK0xYrs3DmxRYqL/yDc+FxFUVYhDlXMhRmv3z915w2HF1tnN1omB354j8VUGO/hbRzyD6Y3sA7v7GS/ceog==",
+ "engines": {
+ "node": ">=4"
+ }
+ },
"node_modules/to-regex-range": {
"version": "5.0.1",
"resolved": "https://registry.npmjs.org/to-regex-range/-/to-regex-range-5.0.1.tgz",
@@ -7818,6 +9297,11 @@
"node": ">=0.6"
}
},
+ "node_modules/token-stream": {
+ "version": "1.0.0",
+ "resolved": "https://registry.npmjs.org/token-stream/-/token-stream-1.0.0.tgz",
+ "integrity": "sha512-VSsyNPPW74RpHwR8Fc21uubwHY7wMDeJLys2IX5zJNih+OnAnaifKHo+1LHT7DAdloQ7apeaaWg8l7qnf/TnEg=="
+ },
"node_modules/tr46": {
"version": "4.1.1",
"resolved": "https://registry.npmjs.org/tr46/-/tr46-4.1.1.tgz",
@@ -7830,9 +9314,9 @@
}
},
"node_modules/tslib": {
- "version": "2.6.2",
- "resolved": "https://registry.npmjs.org/tslib/-/tslib-2.6.2.tgz",
- "integrity": "sha512-AEYxH93jGFPn/a2iVAwW87VuUIkR1FVUKB77NwMF7nBTDkDrrT/Hpt/IrCJ0QXhW27jTBDcf5ZY7w6RiqTMw2Q=="
+ "version": "2.6.3",
+ "resolved": "https://registry.npmjs.org/tslib/-/tslib-2.6.3.tgz",
+ "integrity": "sha512-xNvxJEOUiWPGhUuUdQgAJPKOOJfGnIyKySOc09XkKsgdUV/3E2zvwZYdejjmRgPCgcym1juLH3226yA7sEFJKQ=="
},
"node_modules/type-fest": {
"version": "0.20.2",
@@ -7857,6 +9341,24 @@
"node": ">= 0.6"
}
},
+ "node_modules/typedarray": {
+ "version": "0.0.6",
+ "resolved": "https://registry.npmjs.org/typedarray/-/typedarray-0.0.6.tgz",
+ "integrity": "sha512-/aCDEGatGvZ2BIk+HmLf4ifCJFwvKFNb9/JeZPMulfgFracn9QFcAf5GO8B/mweUjSoblS5In0cWhqpfs/5PQA=="
+ },
+ "node_modules/typescript": {
+ "version": "5.4.5",
+ "resolved": "https://registry.npmjs.org/typescript/-/typescript-5.4.5.tgz",
+ "integrity": "sha512-vcI4UpRgg81oIRUFwR0WSIHKt11nJ7SAVlYNIu+QpqeyXP+gpQJy/Z4+F0aGxSE4MqwjyXvW/TzgkLAx2AGHwQ==",
+ "peer": true,
+ "bin": {
+ "tsc": "bin/tsc",
+ "tsserver": "bin/tsserver"
+ },
+ "engines": {
+ "node": ">=14.17"
+ }
+ },
"node_modules/uid-safe": {
"version": "2.1.5",
"resolved": "https://registry.npmjs.org/uid-safe/-/uid-safe-2.1.5.tgz",
@@ -7965,6 +9467,14 @@
"node": ">= 0.8"
}
},
+ "node_modules/void-elements": {
+ "version": "3.1.0",
+ "resolved": "https://registry.npmjs.org/void-elements/-/void-elements-3.1.0.tgz",
+ "integrity": "sha512-Dhxzh5HZuiHQhbvTW9AMetFfBHDMYpo23Uo9btPXgdYP+3T5S+p+jgNy7spra+veYhBP2dCSgxR/i2Y02h5/6w==",
+ "engines": {
+ "node": ">=0.10.0"
+ }
+ },
"node_modules/weak-lru-cache": {
"version": "1.2.2",
"resolved": "https://registry.npmjs.org/weak-lru-cache/-/weak-lru-cache-1.2.2.tgz",
@@ -8011,6 +9521,20 @@
"node": ">=16"
}
},
+ "node_modules/which": {
+ "version": "2.0.2",
+ "resolved": "https://registry.npmjs.org/which/-/which-2.0.2.tgz",
+ "integrity": "sha512-BLI3Tl1TW3Pvl70l3yq3Y64i+awpwXqsGBYWkkqMtnbXgrMD+yj7rhW0kuEDxzJaYXGjEW5ogapKNMEKNMjibA==",
+ "dependencies": {
+ "isexe": "^2.0.0"
+ },
+ "bin": {
+ "node-which": "bin/node-which"
+ },
+ "engines": {
+ "node": ">= 8"
+ }
+ },
"node_modules/wide-align": {
"version": "1.1.5",
"resolved": "https://registry.npmjs.org/wide-align/-/wide-align-1.1.5.tgz",
@@ -8019,6 +9543,20 @@
"string-width": "^1.0.2 || 2 || 3 || 4"
}
},
+ "node_modules/with": {
+ "version": "7.0.2",
+ "resolved": "https://registry.npmjs.org/with/-/with-7.0.2.tgz",
+ "integrity": "sha512-RNGKj82nUPg3g5ygxkQl0R937xLyho1J24ItRCBTr/m1YnZkzJy1hUiHUJrc/VlsDQzsCnInEGSg3bci0Lmd4w==",
+ "dependencies": {
+ "@babel/parser": "^7.9.6",
+ "@babel/types": "^7.9.6",
+ "assert-never": "^1.2.1",
+ "babel-walk": "3.0.0-canary-5"
+ },
+ "engines": {
+ "node": ">= 10.0.0"
+ }
+ },
"node_modules/wrap-ansi": {
"version": "7.0.0",
"resolved": "https://registry.npmjs.org/wrap-ansi/-/wrap-ansi-7.0.0.tgz",
@@ -8041,9 +9579,9 @@
"integrity": "sha512-l4Sp/DRseor9wL6EvV2+TuQn63dMkPjZ/sp9XkghTEbV9KlPS1xUsZ3u7/IQO4wxtcFB4bgpQPRcR3QCvezPcQ=="
},
"node_modules/ws": {
- "version": "7.5.9",
- "resolved": "https://registry.npmjs.org/ws/-/ws-7.5.9.tgz",
- "integrity": "sha512-F+P9Jil7UiSKSkppIiD94dN07AwvFixvLIj1Og1Rl9GGMuNipJnV9JzjD6XuqmAeiswGvUmNLjr5cFuXwNS77Q==",
+ "version": "7.5.10",
+ "resolved": "https://registry.npmjs.org/ws/-/ws-7.5.10.tgz",
+ "integrity": "sha512-+dbF1tHwZpXcbOJdVOkzLDxZP1ailvSxM6ZweXTegylPny803bFhA+vqBYw4s31NSAk4S2Qz+AKXK9a4wkdjcQ==",
"engines": {
"node": ">=8.3.0"
},
@@ -8060,6 +9598,14 @@
}
}
},
+ "node_modules/xtend": {
+ "version": "2.2.0",
+ "resolved": "https://registry.npmjs.org/xtend/-/xtend-2.2.0.tgz",
+ "integrity": "sha512-SLt5uylT+4aoXxXuwtQp5ZnMMzhDb1Xkg4pEqc00WUJCQifPfV9Ub1VrNhp9kXkrjZD2I2Hl8WnjP37jzZLPZw==",
+ "engines": {
+ "node": ">=0.4"
+ }
+ },
"node_modules/y18n": {
"version": "5.0.8",
"resolved": "https://registry.npmjs.org/y18n/-/y18n-5.0.8.tgz",
@@ -8101,73 +9647,33 @@
},
"dependencies": {
"@babel/code-frame": {
- "version": "7.22.13",
- "resolved": "https://registry.npmjs.org/@babel/code-frame/-/code-frame-7.22.13.tgz",
- "integrity": "sha512-XktuhWlJ5g+3TJXc5upd9Ks1HutSArik6jf2eAjYFyIOf4ej3RN+184cZbzDvbPnuTJIUhPKKJE3cIsYTiAT3w==",
+ "version": "7.24.7",
+ "resolved": "https://registry.npmjs.org/@babel/code-frame/-/code-frame-7.24.7.tgz",
+ "integrity": "sha512-BcYH1CVJBO9tvyIZ2jVeXgSIMvGZ2FDRvDdOIVQyuklNKSsx+eppDEBq/g47Ayw+RqNFE+URvOShmf+f/qwAlA==",
"requires": {
- "@babel/highlight": "^7.22.13",
- "chalk": "^2.4.2"
- },
- "dependencies": {
- "ansi-styles": {
- "version": "3.2.1",
- "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-3.2.1.tgz",
- "integrity": "sha512-VT0ZI6kZRdTh8YyJw3SMbYm/u+NqfsAxEpWO0Pf9sq8/e94WxxOpPKx9FR1FlyCtOVDNOQ+8ntlqFxiRc+r5qA==",
- "requires": {
- "color-convert": "^1.9.0"
- }
- },
- "chalk": {
- "version": "2.4.2",
- "resolved": "https://registry.npmjs.org/chalk/-/chalk-2.4.2.tgz",
- "integrity": "sha512-Mti+f9lpJNcwF4tWV8/OrTTtF1gZi+f8FqlyAdouralcFWFQWF2+NgCHShjkCb+IFBLq9buZwE1xckQU4peSuQ==",
- "requires": {
- "ansi-styles": "^3.2.1",
- "escape-string-regexp": "^1.0.5",
- "supports-color": "^5.3.0"
- }
- },
- "color-convert": {
- "version": "1.9.3",
- "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-1.9.3.tgz",
- "integrity": "sha512-QfAUtd+vFdAtFQcC8CCyYt1fYWxSqAiK2cSD6zDB8N3cpsEBAvRxp9zOGg6G/SHHJYAT88/az/IuDGALsNVbGg==",
- "requires": {
- "color-name": "1.1.3"
- }
- },
- "color-name": {
- "version": "1.1.3",
- "resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.3.tgz",
- "integrity": "sha512-72fSenhMw2HZMTVHeCA9KCmpEIbzWiQsjN+BHcBbS9vr1mtt+vJjPdksIBNUmKAW8TFUDPJK5SUU3QhE9NEXDw=="
- },
- "has-flag": {
- "version": "3.0.0",
- "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-3.0.0.tgz",
- "integrity": "sha512-sKJf1+ceQBr4SMkvQnBDNDtf4TXpVhVGateu0t918bl30FnbE2m4vNLX+VWe/dpjlb+HugGYzW7uQXH98HPEYw=="
- },
- "supports-color": {
- "version": "5.5.0",
- "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-5.5.0.tgz",
- "integrity": "sha512-QjVjwdXIt408MIiAqCX4oUKsgU2EqAGzs2Ppkm4aQYbjm+ZEWEcW4SfFNTr4uMNZma0ey4f5lgLrkB0aX0QMow==",
- "requires": {
- "has-flag": "^3.0.0"
- }
- }
+ "@babel/highlight": "^7.24.7",
+ "picocolors": "^1.0.0"
}
},
+ "@babel/helper-string-parser": {
+ "version": "7.24.7",
+ "resolved": "https://registry.npmjs.org/@babel/helper-string-parser/-/helper-string-parser-7.24.7.tgz",
+ "integrity": "sha512-7MbVt6xrwFQbunH2DNQsAP5sTGxfqQtErvBIvIMi6EQnbgUOuVYanvREcmFrOPhoXBrTtjhhP+lW+o5UfK+tDg=="
+ },
"@babel/helper-validator-identifier": {
- "version": "7.22.20",
- "resolved": "https://registry.npmjs.org/@babel/helper-validator-identifier/-/helper-validator-identifier-7.22.20.tgz",
- "integrity": "sha512-Y4OZ+ytlatR8AI+8KZfKuL5urKp7qey08ha31L8b3BwewJAoJamTzyvxPR/5D+KkdJCGPq/+8TukHBlY10FX9A=="
+ "version": "7.24.7",
+ "resolved": "https://registry.npmjs.org/@babel/helper-validator-identifier/-/helper-validator-identifier-7.24.7.tgz",
+ "integrity": "sha512-rR+PBcQ1SMQDDyF6X0wxtG8QyLCgUB0eRAGguqRLfkCA87l7yAP7ehq8SNj96OOGTO8OBV70KhuFYcIkHXOg0w=="
},
"@babel/highlight": {
- "version": "7.22.20",
- "resolved": "https://registry.npmjs.org/@babel/highlight/-/highlight-7.22.20.tgz",
- "integrity": "sha512-dkdMCN3py0+ksCgYmGG8jKeGA/8Tk+gJwSYYlFGxG5lmhfKNoAy004YpLxpS1W2J8m/EK2Ew+yOs9pVRwO89mg==",
+ "version": "7.24.7",
+ "resolved": "https://registry.npmjs.org/@babel/highlight/-/highlight-7.24.7.tgz",
+ "integrity": "sha512-EStJpq4OuY8xYfhGVXngigBJRWxftKX9ksiGDnmlY3o7B/V7KIAc9X4oiK87uPJSc/vs5L869bem5fhZa8caZw==",
"requires": {
- "@babel/helper-validator-identifier": "^7.22.20",
+ "@babel/helper-validator-identifier": "^7.24.7",
"chalk": "^2.4.2",
- "js-tokens": "^4.0.0"
+ "js-tokens": "^4.0.0",
+ "picocolors": "^1.0.0"
},
"dependencies": {
"ansi-styles": {
@@ -8216,6 +9722,36 @@
}
}
},
+ "@babel/parser": {
+ "version": "7.24.7",
+ "resolved": "https://registry.npmjs.org/@babel/parser/-/parser-7.24.7.tgz",
+ "integrity": "sha512-9uUYRm6OqQrCqQdG1iCBwBPZgN8ciDBro2nIOFaiRz1/BCxaI7CNvQbDHvsArAC7Tw9Hda/B3U+6ui9u4HWXPw=="
+ },
+ "@babel/types": {
+ "version": "7.24.7",
+ "resolved": "https://registry.npmjs.org/@babel/types/-/types-7.24.7.tgz",
+ "integrity": "sha512-XEFXSlxiG5td2EJRe8vOmRbaXVgfcBlszKujvVmWIK/UpywWljQCfzAv3RQCGujWQ1RD4YYWEAqDXfuJiy8f5Q==",
+ "requires": {
+ "@babel/helper-string-parser": "^7.24.7",
+ "@babel/helper-validator-identifier": "^7.24.7",
+ "to-fast-properties": "^2.0.0"
+ }
+ },
+ "@choojs/findup": {
+ "version": "0.2.1",
+ "resolved": "https://registry.npmjs.org/@choojs/findup/-/findup-0.2.1.tgz",
+ "integrity": "sha512-YstAqNb0MCN8PjdLCDfRsBcGVRN41f3vgLvaI0IrIcBp4AqILRSS0DeWNGkicC+f/zRIPJLc+9RURVSepwvfBw==",
+ "requires": {
+ "commander": "^2.15.1"
+ },
+ "dependencies": {
+ "commander": {
+ "version": "2.20.3",
+ "resolved": "https://registry.npmjs.org/commander/-/commander-2.20.3.tgz",
+ "integrity": "sha512-GpVkmM8vF2vQUkj2LvZmD35JxeJOLCwJ9cUkugyk2nuhbv3+mJvpLYYt+0+USMxE+oj+ey/lJEnhZw75x/OMcQ=="
+ }
+ }
+ },
"@colyseus/auth": {
"version": "0.15.10",
"resolved": "https://registry.npmjs.org/@colyseus/auth/-/auth-0.15.10.tgz",
@@ -8277,9 +9813,9 @@
}
},
"@colyseus/schema": {
- "version": "2.0.32",
- "resolved": "https://registry.npmjs.org/@colyseus/schema/-/schema-2.0.32.tgz",
- "integrity": "sha512-Y5a3E4pjJK8tLPY4f0ur+/xeGBqysxKgMlumSR6JWXwX0SVIdk4o7IqFlKau8BkB6OVOwAP5SoPFSWO6/a2NwQ=="
+ "version": "2.0.34",
+ "resolved": "https://registry.npmjs.org/@colyseus/schema/-/schema-2.0.34.tgz",
+ "integrity": "sha512-bDQ9tLjoAgTEkjSl+RU1j5w3YIa7Y49OOh6YL48QpITwYhHjqgDw2mkOCOlQhJJxT46X/nOwIKuDiu5GVpNzyA=="
},
"@colyseus/ws-transport": {
"version": "0.15.2",
@@ -8291,6 +9827,34 @@
"ws": "^7.4.5"
}
},
+ "@elm_binaries/darwin_arm64": {
+ "version": "0.19.1-0",
+ "resolved": "https://registry.npmjs.org/@elm_binaries/darwin_arm64/-/darwin_arm64-0.19.1-0.tgz",
+ "integrity": "sha512-mjbsH7BNHEAmoE2SCJFcfk5fIHwFIpxtSgnEAqMsVLpBUFoEtAeX+LQ+N0vSFJB3WAh73+QYx/xSluxxLcL6dA==",
+ "optional": true,
+ "peer": true
+ },
+ "@elm_binaries/darwin_x64": {
+ "version": "0.19.1-0",
+ "resolved": "https://registry.npmjs.org/@elm_binaries/darwin_x64/-/darwin_x64-0.19.1-0.tgz",
+ "integrity": "sha512-QGUtrZTPBzaxgi9al6nr+9313wrnUVHuijzUK39UsPS+pa+n6CmWyV/69sHZeX9qy6UfeugE0PzF3qcUiy2GDQ==",
+ "optional": true,
+ "peer": true
+ },
+ "@elm_binaries/linux_x64": {
+ "version": "0.19.1-0",
+ "resolved": "https://registry.npmjs.org/@elm_binaries/linux_x64/-/linux_x64-0.19.1-0.tgz",
+ "integrity": "sha512-T1ZrWVhg2kKAsi8caOd3vp/1A3e21VuCpSG63x8rDie50fHbCytTway9B8WHEdnBFv4mYWiA68dzGxYCiFmU2w==",
+ "optional": true,
+ "peer": true
+ },
+ "@elm_binaries/win32_x64": {
+ "version": "0.19.1-0",
+ "resolved": "https://registry.npmjs.org/@elm_binaries/win32_x64/-/win32_x64-0.19.1-0.tgz",
+ "integrity": "sha512-yDleiXqSE9EcqKtd9SkC/4RIW8I71YsXzMPL79ub2bBPHjWTcoyyeBbYjoOB9SxSlArJ74HaoBApzT6hY7Zobg==",
+ "optional": true,
+ "peer": true
+ },
"@emnapi/runtime": {
"version": "1.1.1",
"resolved": "https://registry.npmjs.org/@emnapi/runtime/-/runtime-1.1.1.tgz",
@@ -8306,26 +9870,26 @@
"integrity": "sha512-vBZP4NlzfOlerQTnba4aqZoMhE/a9HY7HRqoOPaETQcSQuWEIyZMHGfVu6w9wGtGK5fED5qRs2DteVCjOH60sA=="
},
"@firebase/analytics": {
- "version": "0.10.4",
- "resolved": "https://registry.npmjs.org/@firebase/analytics/-/analytics-0.10.4.tgz",
- "integrity": "sha512-OJEl/8Oye/k+vJ1zV/1L6eGpc1XzAj+WG2TPznJ7PszL7sOFLBXkL9IjHfOCGDGpXeO3btozy/cYUqv4zgNeHg==",
+ "version": "0.10.5",
+ "resolved": "https://registry.npmjs.org/@firebase/analytics/-/analytics-0.10.5.tgz",
+ "integrity": "sha512-d0X2ksTOKHMf5zFAMKFZWXa8hSbgohsG507xFsGhF4Uet2b8uEUL/YLrEth67jXEbGEi1UQZX4AaGBxKNiDzjw==",
"requires": {
- "@firebase/component": "0.6.7",
- "@firebase/installations": "0.6.7",
+ "@firebase/component": "0.6.8",
+ "@firebase/installations": "0.6.8",
"@firebase/logger": "0.4.2",
- "@firebase/util": "1.9.6",
+ "@firebase/util": "1.9.7",
"tslib": "^2.1.0"
}
},
"@firebase/analytics-compat": {
- "version": "0.2.10",
- "resolved": "https://registry.npmjs.org/@firebase/analytics-compat/-/analytics-compat-0.2.10.tgz",
- "integrity": "sha512-ia68RcLQLLMFWrM10JfmFod7eJGwqr4/uyrtzHpTDnxGX/6gNCBTOuxdAbyWIqXI5XmcMQdz9hDijGKOHgDfPw==",
+ "version": "0.2.11",
+ "resolved": "https://registry.npmjs.org/@firebase/analytics-compat/-/analytics-compat-0.2.11.tgz",
+ "integrity": "sha512-wmXxJ49pEY7H549Pa4CDPOTzkPJnfG2Yolptg72ntTgSrbKVq+Eg9cAQY6Z5Kn9ATSQRX5oGXKlNfEk5DJBvvA==",
"requires": {
- "@firebase/analytics": "0.10.4",
+ "@firebase/analytics": "0.10.5",
"@firebase/analytics-types": "0.8.2",
- "@firebase/component": "0.6.7",
- "@firebase/util": "1.9.6",
+ "@firebase/component": "0.6.8",
+ "@firebase/util": "1.9.7",
"tslib": "^2.1.0"
}
},
@@ -8335,38 +9899,38 @@
"integrity": "sha512-EnzNNLh+9/sJsimsA/FGqzakmrAUKLeJvjRHlg8df1f97NLUlFidk9600y0ZgWOp3CAxn6Hjtk+08tixlUOWyw=="
},
"@firebase/app": {
- "version": "0.10.5",
- "resolved": "https://registry.npmjs.org/@firebase/app/-/app-0.10.5.tgz",
- "integrity": "sha512-iY/fNot+hWPk9sTX8aHMqlcX9ynRvpGkskWAdUZ2eQQdLo8d1hSFYcYNwPv0Q/frGMasw8udKWMcFOEpC9fG8g==",
+ "version": "0.10.6",
+ "resolved": "https://registry.npmjs.org/@firebase/app/-/app-0.10.6.tgz",
+ "integrity": "sha512-/r8Ikp7TOrIIdp7v2adD2kg9SqIXMGOoJXJB1HsX7LjpjWdsoy1fMkP0HlI7GQqqRxDueHNhETx5Zn5E8HyVAQ==",
"requires": {
- "@firebase/component": "0.6.7",
+ "@firebase/component": "0.6.8",
"@firebase/logger": "0.4.2",
- "@firebase/util": "1.9.6",
+ "@firebase/util": "1.9.7",
"idb": "7.1.1",
"tslib": "^2.1.0"
}
},
"@firebase/app-check": {
- "version": "0.8.4",
- "resolved": "https://registry.npmjs.org/@firebase/app-check/-/app-check-0.8.4.tgz",
- "integrity": "sha512-2tjRDaxcM5G7BEpytiDcIl+NovV99q8yEqRMKDbn4J4i/XjjuThuB4S+4PkmTnZiCbdLXQiBhkVxNlUDcfog5Q==",
+ "version": "0.8.5",
+ "resolved": "https://registry.npmjs.org/@firebase/app-check/-/app-check-0.8.5.tgz",
+ "integrity": "sha512-WyIckkVYAfnzsPIw6EAt/qBUANkUAVl6irF0xuJ1R9ISNyUT1h7dPAwvs/g3rsx0fpBWaHRAH0IFiN6zO6yLqQ==",
"requires": {
- "@firebase/component": "0.6.7",
+ "@firebase/component": "0.6.8",
"@firebase/logger": "0.4.2",
- "@firebase/util": "1.9.6",
+ "@firebase/util": "1.9.7",
"tslib": "^2.1.0"
}
},
"@firebase/app-check-compat": {
- "version": "0.3.11",
- "resolved": "https://registry.npmjs.org/@firebase/app-check-compat/-/app-check-compat-0.3.11.tgz",
- "integrity": "sha512-t01zaH3RJpKEey0nGduz3Is+uSz7Sj4U5nwOV6lWb+86s5xtxpIvBJzu/lKxJfYyfZ29eJwpdjEgT1/lm4iQyA==",
+ "version": "0.3.12",
+ "resolved": "https://registry.npmjs.org/@firebase/app-check-compat/-/app-check-compat-0.3.12.tgz",
+ "integrity": "sha512-p/5w3pMih3JVT6u7g04KXgSZr6HDsQXyeWZkIe0+r71dPOlcKyUooe9/feTc8BWpjha3rUOkqQ7+JXZObwvYoQ==",
"requires": {
- "@firebase/app-check": "0.8.4",
+ "@firebase/app-check": "0.8.5",
"@firebase/app-check-types": "0.5.2",
- "@firebase/component": "0.6.7",
+ "@firebase/component": "0.6.8",
"@firebase/logger": "0.4.2",
- "@firebase/util": "1.9.6",
+ "@firebase/util": "1.9.7",
"tslib": "^2.1.0"
}
},
@@ -8381,14 +9945,14 @@
"integrity": "sha512-FSOEzTzL5bLUbD2co3Zut46iyPWML6xc4x+78TeaXMSuJap5QObfb+rVvZJtla3asN4RwU7elaQaduP+HFizDA=="
},
"@firebase/app-compat": {
- "version": "0.2.35",
- "resolved": "https://registry.npmjs.org/@firebase/app-compat/-/app-compat-0.2.35.tgz",
- "integrity": "sha512-vgay/WRjeH0r97/Q6L6df2CMx7oyNFDsE5yPQ9oR1G+zx2eT0s8vNNh0WlKqQxUEWaOLRnXhQ8gy7uu0cBgTRg==",
+ "version": "0.2.36",
+ "resolved": "https://registry.npmjs.org/@firebase/app-compat/-/app-compat-0.2.36.tgz",
+ "integrity": "sha512-qsf+pllpgy1IGe2f5vfenOHSX8Cs58sVR5L6h/zBlNy9Yo54B2jy61KxLpSOgyRZb18IlnLLGjo7VtGU1CHvHA==",
"requires": {
- "@firebase/app": "0.10.5",
- "@firebase/component": "0.6.7",
+ "@firebase/app": "0.10.6",
+ "@firebase/component": "0.6.8",
"@firebase/logger": "0.4.2",
- "@firebase/util": "1.9.6",
+ "@firebase/util": "1.9.7",
"tslib": "^2.1.0"
}
},
@@ -8398,26 +9962,26 @@
"integrity": "sha512-oMEZ1TDlBz479lmABwWsWjzHwheQKiAgnuKxE0pz0IXCVx7/rtlkx1fQ6GfgK24WCrxDKMplZrT50Kh04iMbXQ=="
},
"@firebase/auth": {
- "version": "1.7.4",
- "resolved": "https://registry.npmjs.org/@firebase/auth/-/auth-1.7.4.tgz",
- "integrity": "sha512-d2Fw17s5QesojwebrA903el20Li9/YGgkoOGJjagM4I1qAT36APa/FcZ+OX86KxbYKCtQKTMqraU8pxG7C2JWA==",
+ "version": "1.7.5",
+ "resolved": "https://registry.npmjs.org/@firebase/auth/-/auth-1.7.5.tgz",
+ "integrity": "sha512-DMFR1OA/f1/voeuFbSORg9AP36pMgOoSb/DRgiDalLmIJsDTlQNMCu+givjMP4s/XL85+tBk2MerYnK/AscJjw==",
"requires": {
- "@firebase/component": "0.6.7",
+ "@firebase/component": "0.6.8",
"@firebase/logger": "0.4.2",
- "@firebase/util": "1.9.6",
+ "@firebase/util": "1.9.7",
"tslib": "^2.1.0",
"undici": "5.28.4"
}
},
"@firebase/auth-compat": {
- "version": "0.5.9",
- "resolved": "https://registry.npmjs.org/@firebase/auth-compat/-/auth-compat-0.5.9.tgz",
- "integrity": "sha512-RX8Zh/3zz2CsVbmYfgHkfUm4fAEPCl+KHVIImNygV5jTGDF6oKOhBIpf4Yigclyu8ESQKZ4elyN0MBYm9/7zGw==",
+ "version": "0.5.10",
+ "resolved": "https://registry.npmjs.org/@firebase/auth-compat/-/auth-compat-0.5.10.tgz",
+ "integrity": "sha512-epDhgNIXmhl9DPuTW9Ec5NDJJKMFIdXBXiQI9O0xNHveow/ETtBCY86srzF7iCacqsd30CcpLwwXlhk8Y19Olg==",
"requires": {
- "@firebase/auth": "1.7.4",
+ "@firebase/auth": "1.7.5",
"@firebase/auth-types": "0.12.2",
- "@firebase/component": "0.6.7",
- "@firebase/util": "1.9.6",
+ "@firebase/component": "0.6.8",
+ "@firebase/util": "1.9.7",
"tslib": "^2.1.0",
"undici": "5.28.4"
}
@@ -8434,59 +9998,59 @@
"requires": {}
},
"@firebase/component": {
- "version": "0.6.7",
- "resolved": "https://registry.npmjs.org/@firebase/component/-/component-0.6.7.tgz",
- "integrity": "sha512-baH1AA5zxfaz4O8w0vDwETByrKTQqB5CDjRls79Sa4eAGAoERw4Tnung7XbMl3jbJ4B/dmmtsMrdki0KikwDYA==",
+ "version": "0.6.8",
+ "resolved": "https://registry.npmjs.org/@firebase/component/-/component-0.6.8.tgz",
+ "integrity": "sha512-LcNvxGLLGjBwB0dJUsBGCej2fqAepWyBubs4jt1Tiuns7QLbXHuyObZ4aMeBjZjWx4m8g1LoVI9QFpSaq/k4/g==",
"requires": {
- "@firebase/util": "1.9.6",
+ "@firebase/util": "1.9.7",
"tslib": "^2.1.0"
}
},
"@firebase/database": {
- "version": "1.0.5",
- "resolved": "https://registry.npmjs.org/@firebase/database/-/database-1.0.5.tgz",
- "integrity": "sha512-cAfwBqMQuW6HbhwI3Cb/gDqZg7aR0OmaJ85WUxlnoYW2Tm4eR0hFl5FEijI3/gYPUiUcUPQvTkGV222VkT7KPw==",
+ "version": "1.0.6",
+ "resolved": "https://registry.npmjs.org/@firebase/database/-/database-1.0.6.tgz",
+ "integrity": "sha512-nrexUEG/fpVlHtWKkyfhTC3834kZ1WS7voNyqbBsBCqHXQOvznN5Z0L3nxBqdXSJyltNAf4ndFlQqm5gZiEczQ==",
"requires": {
"@firebase/app-check-interop-types": "0.3.2",
"@firebase/auth-interop-types": "0.2.3",
- "@firebase/component": "0.6.7",
+ "@firebase/component": "0.6.8",
"@firebase/logger": "0.4.2",
- "@firebase/util": "1.9.6",
+ "@firebase/util": "1.9.7",
"faye-websocket": "0.11.4",
"tslib": "^2.1.0"
}
},
"@firebase/database-compat": {
- "version": "1.0.5",
- "resolved": "https://registry.npmjs.org/@firebase/database-compat/-/database-compat-1.0.5.tgz",
- "integrity": "sha512-NDSMaDjQ+TZEMDMmzJwlTL05kh1+0Y84C+kVMaOmNOzRGRM7VHi29I6YUhCetXH+/b1Wh4ZZRyp1CuWkd8s6hg==",
+ "version": "1.0.6",
+ "resolved": "https://registry.npmjs.org/@firebase/database-compat/-/database-compat-1.0.6.tgz",
+ "integrity": "sha512-1OGA0sLY47mkXjhICCrUTXEYFnSSXoiXWm1SHsN62b+Lzs5aKA3aWTjTUmYIoK93kDAMPkYpulSv8jcbH4Hwew==",
"requires": {
- "@firebase/component": "0.6.7",
- "@firebase/database": "1.0.5",
- "@firebase/database-types": "1.0.3",
+ "@firebase/component": "0.6.8",
+ "@firebase/database": "1.0.6",
+ "@firebase/database-types": "1.0.4",
"@firebase/logger": "0.4.2",
- "@firebase/util": "1.9.6",
+ "@firebase/util": "1.9.7",
"tslib": "^2.1.0"
}
},
"@firebase/database-types": {
- "version": "1.0.3",
- "resolved": "https://registry.npmjs.org/@firebase/database-types/-/database-types-1.0.3.tgz",
- "integrity": "sha512-39V/Riv2R3O/aUjYKh0xypj7NTNXNAK1bcgY5Kx+hdQPRS/aPTS8/5c0CGFYKgVuFbYlnlnhrCTYsh2uNhGwzA==",
+ "version": "1.0.4",
+ "resolved": "https://registry.npmjs.org/@firebase/database-types/-/database-types-1.0.4.tgz",
+ "integrity": "sha512-mz9ZzbH6euFXbcBo+enuJ36I5dR5w+enJHHjy9Y5ThCdKUseqfDjW3vCp1YxE9zygFCSjJJ/z1cQ+zodvUcwPQ==",
"requires": {
"@firebase/app-types": "0.9.2",
- "@firebase/util": "1.9.6"
+ "@firebase/util": "1.9.7"
}
},
"@firebase/firestore": {
- "version": "4.6.3",
- "resolved": "https://registry.npmjs.org/@firebase/firestore/-/firestore-4.6.3.tgz",
- "integrity": "sha512-d/+N2iUsiJ/Dc7fApdpdmmTXzwuTCromsdA1lKwYfZtMIOd1fI881NSLwK2wV4I38wkLnvfKJUV6WpU1f3/ONg==",
+ "version": "4.6.4",
+ "resolved": "https://registry.npmjs.org/@firebase/firestore/-/firestore-4.6.4.tgz",
+ "integrity": "sha512-vk2MoH5HxYEhiNg1l+yBXq1Fkhue/11bFg4HdlTv6BJHcTnnAj2a+/afPpatcW4MOdYA3Tv+d5nGzWbbOC1SHw==",
"requires": {
- "@firebase/component": "0.6.7",
+ "@firebase/component": "0.6.8",
"@firebase/logger": "0.4.2",
- "@firebase/util": "1.9.6",
- "@firebase/webchannel-wrapper": "1.0.0",
+ "@firebase/util": "1.9.7",
+ "@firebase/webchannel-wrapper": "1.0.1",
"@grpc/grpc-js": "~1.9.0",
"@grpc/proto-loader": "^0.7.8",
"tslib": "^2.1.0",
@@ -8494,14 +10058,14 @@
}
},
"@firebase/firestore-compat": {
- "version": "0.3.32",
- "resolved": "https://registry.npmjs.org/@firebase/firestore-compat/-/firestore-compat-0.3.32.tgz",
- "integrity": "sha512-at71mwK7a/mUXH0OgyY0+gUzedm/EUydDFYSFsBoO8DYowZ23Mgd6P4Rzq/Ll3zI/3xJN7LGe7Qp4iE/V/3Arg==",
+ "version": "0.3.33",
+ "resolved": "https://registry.npmjs.org/@firebase/firestore-compat/-/firestore-compat-0.3.33.tgz",
+ "integrity": "sha512-i42a2l31N95CwYEB7zmfK0FS1mrO6pwOLwxavCrwu1BCFrVVVQhUheTPIda/iGguK/2Nog0RaIR1bo7QkZEz3g==",
"requires": {
- "@firebase/component": "0.6.7",
- "@firebase/firestore": "4.6.3",
+ "@firebase/component": "0.6.8",
+ "@firebase/firestore": "4.6.4",
"@firebase/firestore-types": "3.0.2",
- "@firebase/util": "1.9.6",
+ "@firebase/util": "1.9.7",
"tslib": "^2.1.0"
}
},
@@ -8512,28 +10076,28 @@
"requires": {}
},
"@firebase/functions": {
- "version": "0.11.5",
- "resolved": "https://registry.npmjs.org/@firebase/functions/-/functions-0.11.5.tgz",
- "integrity": "sha512-qrHJ+l62mZiU5UZiVi84t/iLXZlhRuSvBQsa2qvNLgPsEWR7wdpWhRmVdB7AU8ndkSHJjGlMICqrVnz47sgU7Q==",
+ "version": "0.11.6",
+ "resolved": "https://registry.npmjs.org/@firebase/functions/-/functions-0.11.6.tgz",
+ "integrity": "sha512-GPfIBPtpwQvsC7SQbgaUjLTdja0CsNwMoKSgrzA1FGGRk4NX6qO7VQU6XCwBiAFWbpbQex6QWkSMsCzLx1uibQ==",
"requires": {
"@firebase/app-check-interop-types": "0.3.2",
"@firebase/auth-interop-types": "0.2.3",
- "@firebase/component": "0.6.7",
+ "@firebase/component": "0.6.8",
"@firebase/messaging-interop-types": "0.2.2",
- "@firebase/util": "1.9.6",
+ "@firebase/util": "1.9.7",
"tslib": "^2.1.0",
"undici": "5.28.4"
}
},
"@firebase/functions-compat": {
- "version": "0.3.11",
- "resolved": "https://registry.npmjs.org/@firebase/functions-compat/-/functions-compat-0.3.11.tgz",
- "integrity": "sha512-Qn+ts/M6Lj2/6i1cp5V5TRR+Hi9kyXyHbo+w9GguINJ87zxrCe6ulx3TI5AGQkoQa8YFHUhT3DMGmLFiJjWTSQ==",
+ "version": "0.3.12",
+ "resolved": "https://registry.npmjs.org/@firebase/functions-compat/-/functions-compat-0.3.12.tgz",
+ "integrity": "sha512-r3XUb5VlITWpML46JymfJPkK6I9j4SNlO7qWIXUc0TUmkv0oAfVoiIt1F83/NuMZXaGr4YWA/794nVSy4GV8tw==",
"requires": {
- "@firebase/component": "0.6.7",
- "@firebase/functions": "0.11.5",
+ "@firebase/component": "0.6.8",
+ "@firebase/functions": "0.11.6",
"@firebase/functions-types": "0.6.2",
- "@firebase/util": "1.9.6",
+ "@firebase/util": "1.9.7",
"tslib": "^2.1.0"
}
},
@@ -8543,25 +10107,25 @@
"integrity": "sha512-0KiJ9lZ28nS2iJJvimpY4nNccV21rkQyor5Iheu/nq8aKXJqtJdeSlZDspjPSBBiHRzo7/GMUttegnsEITqR+w=="
},
"@firebase/installations": {
- "version": "0.6.7",
- "resolved": "https://registry.npmjs.org/@firebase/installations/-/installations-0.6.7.tgz",
- "integrity": "sha512-i6iGoXRu5mX4rTsiMSSKrgh9pSEzD4hwBEzRh5kEhOTr8xN/wvQcCPZDSMVYKwM2XyCPBLVq0JzjyerwL0Rihg==",
+ "version": "0.6.8",
+ "resolved": "https://registry.npmjs.org/@firebase/installations/-/installations-0.6.8.tgz",
+ "integrity": "sha512-57V374qdb2+wT5v7+ntpLXBjZkO6WRgmAUbVkRfFTM/4t980p0FesbqTAcOIiM8U866UeuuuF8lYH70D3jM/jQ==",
"requires": {
- "@firebase/component": "0.6.7",
- "@firebase/util": "1.9.6",
+ "@firebase/component": "0.6.8",
+ "@firebase/util": "1.9.7",
"idb": "7.1.1",
"tslib": "^2.1.0"
}
},
"@firebase/installations-compat": {
- "version": "0.2.7",
- "resolved": "https://registry.npmjs.org/@firebase/installations-compat/-/installations-compat-0.2.7.tgz",
- "integrity": "sha512-RPcbD+3nqHbnhVjIOpWK2H5qzZ8pAAAScceiWph0VNTqpKyPQ5tDcp4V5fS0ELpfgsHYvroMLDKfeHxpfvm8cw==",
+ "version": "0.2.8",
+ "resolved": "https://registry.npmjs.org/@firebase/installations-compat/-/installations-compat-0.2.8.tgz",
+ "integrity": "sha512-pI2q8JFHB7yIq/szmhzGSWXtOvtzl6tCUmyykv5C8vvfOVJUH6mP4M4iwjbK8S1JotKd/K70+JWyYlxgQ0Kpyw==",
"requires": {
- "@firebase/component": "0.6.7",
- "@firebase/installations": "0.6.7",
+ "@firebase/component": "0.6.8",
+ "@firebase/installations": "0.6.8",
"@firebase/installations-types": "0.5.2",
- "@firebase/util": "1.9.6",
+ "@firebase/util": "1.9.7",
"tslib": "^2.1.0"
}
},
@@ -8580,26 +10144,26 @@
}
},
"@firebase/messaging": {
- "version": "0.12.9",
- "resolved": "https://registry.npmjs.org/@firebase/messaging/-/messaging-0.12.9.tgz",
- "integrity": "sha512-IH+JJmzbFGZXV3+TDyKdqqKPVfKRqBBg2BfYYOy7cm7J+SwV+uJMe8EnDKYeQLEQhtpwciPfJ3qQXJs2lbxDTw==",
+ "version": "0.12.10",
+ "resolved": "https://registry.npmjs.org/@firebase/messaging/-/messaging-0.12.10.tgz",
+ "integrity": "sha512-fGbxJPKpl2DIKNJGhbk4mYPcM+qE2gl91r6xPoiol/mN88F5Ym6UeRdMVZah+pijh9WxM55alTYwXuW40r1Y2Q==",
"requires": {
- "@firebase/component": "0.6.7",
- "@firebase/installations": "0.6.7",
+ "@firebase/component": "0.6.8",
+ "@firebase/installations": "0.6.8",
"@firebase/messaging-interop-types": "0.2.2",
- "@firebase/util": "1.9.6",
+ "@firebase/util": "1.9.7",
"idb": "7.1.1",
"tslib": "^2.1.0"
}
},
"@firebase/messaging-compat": {
- "version": "0.2.9",
- "resolved": "https://registry.npmjs.org/@firebase/messaging-compat/-/messaging-compat-0.2.9.tgz",
- "integrity": "sha512-5jN6wyhwPgBH02zOtmmoOeyfsmoD7ty48D1m0vVPsFg55RqN2Z3Q9gkZ5GmPklFPjTPLcxB1ObcHOZvThTkm7g==",
+ "version": "0.2.10",
+ "resolved": "https://registry.npmjs.org/@firebase/messaging-compat/-/messaging-compat-0.2.10.tgz",
+ "integrity": "sha512-FXQm7rcowkDm8kFLduHV35IRYCRo+Ng0PIp/t1+EBuEbyplaKkGjZ932pE+owf/XR+G/60ku2QRBptRGLXZydg==",
"requires": {
- "@firebase/component": "0.6.7",
- "@firebase/messaging": "0.12.9",
- "@firebase/util": "1.9.6",
+ "@firebase/component": "0.6.8",
+ "@firebase/messaging": "0.12.10",
+ "@firebase/util": "1.9.7",
"tslib": "^2.1.0"
}
},
@@ -8609,27 +10173,27 @@
"integrity": "sha512-l68HXbuD2PPzDUOFb3aG+nZj5KA3INcPwlocwLZOzPp9rFM9yeuI9YLl6DQfguTX5eAGxO0doTR+rDLDvQb5tA=="
},
"@firebase/performance": {
- "version": "0.6.7",
- "resolved": "https://registry.npmjs.org/@firebase/performance/-/performance-0.6.7.tgz",
- "integrity": "sha512-d+Q4ltjdJZqjzcdms5i0UC9KLYX7vKGcygZ+7zHA/Xk+bAbMD2CPU0nWTnlNFWifZWIcXZ/2mAMvaGMW3lypUA==",
+ "version": "0.6.8",
+ "resolved": "https://registry.npmjs.org/@firebase/performance/-/performance-0.6.8.tgz",
+ "integrity": "sha512-F+alziiIZ6Yn8FG47mxwljq+4XkgkT2uJIFRlkyViUQRLzrogaUJW6u/+6ZrePXnouKlKIwzqos3PVJraPEcCA==",
"requires": {
- "@firebase/component": "0.6.7",
- "@firebase/installations": "0.6.7",
+ "@firebase/component": "0.6.8",
+ "@firebase/installations": "0.6.8",
"@firebase/logger": "0.4.2",
- "@firebase/util": "1.9.6",
+ "@firebase/util": "1.9.7",
"tslib": "^2.1.0"
}
},
"@firebase/performance-compat": {
- "version": "0.2.7",
- "resolved": "https://registry.npmjs.org/@firebase/performance-compat/-/performance-compat-0.2.7.tgz",
- "integrity": "sha512-cb8ge/5iTstxfIGW+iiY+7l3FtN8gobNh9JSQNZgLC9xmcfBYWEs8IeEWMI6S8T+At0oHc3lv+b2kpRMUWr8zQ==",
+ "version": "0.2.8",
+ "resolved": "https://registry.npmjs.org/@firebase/performance-compat/-/performance-compat-0.2.8.tgz",
+ "integrity": "sha512-o7TFClRVJd3VIBoY7KZQqtCeW0PC6v9uBzM6Lfw3Nc9D7hM6OonqecYvh7NwJ6R14k+xM27frLS4BcCvFHKw2A==",
"requires": {
- "@firebase/component": "0.6.7",
+ "@firebase/component": "0.6.8",
"@firebase/logger": "0.4.2",
- "@firebase/performance": "0.6.7",
+ "@firebase/performance": "0.6.8",
"@firebase/performance-types": "0.2.2",
- "@firebase/util": "1.9.6",
+ "@firebase/util": "1.9.7",
"tslib": "^2.1.0"
}
},
@@ -8639,27 +10203,27 @@
"integrity": "sha512-gVq0/lAClVH5STrIdKnHnCo2UcPLjJlDUoEB/tB4KM+hAeHUxWKnpT0nemUPvxZ5nbdY/pybeyMe8Cs29gEcHA=="
},
"@firebase/remote-config": {
- "version": "0.4.7",
- "resolved": "https://registry.npmjs.org/@firebase/remote-config/-/remote-config-0.4.7.tgz",
- "integrity": "sha512-5oPNrPFLsbsjpq0lUEIXoDF2eJK7vAbyXe/DEuZQxnwJlfR7aQbtUlEkRgQWcicXpyDmAmDLo7q7lDbCYa6CpA==",
+ "version": "0.4.8",
+ "resolved": "https://registry.npmjs.org/@firebase/remote-config/-/remote-config-0.4.8.tgz",
+ "integrity": "sha512-AMLqe6wfIRnjc6FkCWOSUjhc1fSTEf8o+cv1NolFvbiJ/tU+TqN4pI7pT+MIKQzNiq5fxLehkOx+xtAQBxPJKQ==",
"requires": {
- "@firebase/component": "0.6.7",
- "@firebase/installations": "0.6.7",
+ "@firebase/component": "0.6.8",
+ "@firebase/installations": "0.6.8",
"@firebase/logger": "0.4.2",
- "@firebase/util": "1.9.6",
+ "@firebase/util": "1.9.7",
"tslib": "^2.1.0"
}
},
"@firebase/remote-config-compat": {
- "version": "0.2.7",
- "resolved": "https://registry.npmjs.org/@firebase/remote-config-compat/-/remote-config-compat-0.2.7.tgz",
- "integrity": "sha512-Fq0oneQ4SluLnfr5/HfzRS1TZf1ANj1rWbCCW3+oC98An3nE+sCdp+FSuHsEVNwgMg4Tkwx9Oom2lkKeU+Vn+w==",
+ "version": "0.2.8",
+ "resolved": "https://registry.npmjs.org/@firebase/remote-config-compat/-/remote-config-compat-0.2.8.tgz",
+ "integrity": "sha512-UxSFOp6dzFj2AHB8Bq/BYtbq5iFyizKx4Rd6WxAdaKYM8cnPMeK+l2v+Oogtjae+AeyHRI+MfL2acsfVe5cd2A==",
"requires": {
- "@firebase/component": "0.6.7",
+ "@firebase/component": "0.6.8",
"@firebase/logger": "0.4.2",
- "@firebase/remote-config": "0.4.7",
+ "@firebase/remote-config": "0.4.8",
"@firebase/remote-config-types": "0.3.2",
- "@firebase/util": "1.9.6",
+ "@firebase/util": "1.9.7",
"tslib": "^2.1.0"
}
},
@@ -8669,25 +10233,25 @@
"integrity": "sha512-0BC4+Ud7y2aPTyhXJTMTFfrGGLqdYXrUB9sJVAB8NiqJswDTc4/2qrE/yfUbnQJhbSi6ZaTTBKyG3n1nplssaA=="
},
"@firebase/storage": {
- "version": "0.12.5",
- "resolved": "https://registry.npmjs.org/@firebase/storage/-/storage-0.12.5.tgz",
- "integrity": "sha512-nGWBOGFNr10j0LA4NJ3/Yh3us/lb0Q1xSIKZ38N6FcS+vY54nqJ7k3zE3PENregHC8+8txRow++A568G3v8hOA==",
+ "version": "0.12.6",
+ "resolved": "https://registry.npmjs.org/@firebase/storage/-/storage-0.12.6.tgz",
+ "integrity": "sha512-Zgb9WuehJxzhj7pGXUvkAEaH+3HvLjD9xSZ9nepuXf5f8378xME7oGJtREr/RnepdDA5YW0XIxe0QQBNHpe1nw==",
"requires": {
- "@firebase/component": "0.6.7",
- "@firebase/util": "1.9.6",
+ "@firebase/component": "0.6.8",
+ "@firebase/util": "1.9.7",
"tslib": "^2.1.0",
"undici": "5.28.4"
}
},
"@firebase/storage-compat": {
- "version": "0.3.8",
- "resolved": "https://registry.npmjs.org/@firebase/storage-compat/-/storage-compat-0.3.8.tgz",
- "integrity": "sha512-qDfY9kMb6Ch2hZb40sBjDQ8YPxbjGOxuT+gU1Z0iIVSSpSX0f4YpGJCypUXiA0T11n6InCXB+T/Dknh2yxVTkg==",
+ "version": "0.3.9",
+ "resolved": "https://registry.npmjs.org/@firebase/storage-compat/-/storage-compat-0.3.9.tgz",
+ "integrity": "sha512-WWgAp5bTW961oIsCc9+98m4MIVKpEqztAlIngfHfwO/x3DYoBPRl/awMRG3CAXyVxG+7B7oHC5IsnqM+vTwx2A==",
"requires": {
- "@firebase/component": "0.6.7",
- "@firebase/storage": "0.12.5",
+ "@firebase/component": "0.6.8",
+ "@firebase/storage": "0.12.6",
"@firebase/storage-types": "0.8.2",
- "@firebase/util": "1.9.6",
+ "@firebase/util": "1.9.7",
"tslib": "^2.1.0"
}
},
@@ -8698,29 +10262,29 @@
"requires": {}
},
"@firebase/util": {
- "version": "1.9.6",
- "resolved": "https://registry.npmjs.org/@firebase/util/-/util-1.9.6.tgz",
- "integrity": "sha512-IBr1MZbp4d5MjBCXL3TW1dK/PDXX4yOGbiwRNh1oAbE/+ci5Uuvy9KIrsFYY80as1I0iOaD5oOMA9Q8j4TJWcw==",
+ "version": "1.9.7",
+ "resolved": "https://registry.npmjs.org/@firebase/util/-/util-1.9.7.tgz",
+ "integrity": "sha512-fBVNH/8bRbYjqlbIhZ+lBtdAAS4WqZumx03K06/u7fJSpz1TGjEMm1ImvKD47w+xaFKIP2ori6z8BrbakRfjJA==",
"requires": {
"tslib": "^2.1.0"
}
},
"@firebase/vertexai-preview": {
- "version": "0.0.2",
- "resolved": "https://registry.npmjs.org/@firebase/vertexai-preview/-/vertexai-preview-0.0.2.tgz",
- "integrity": "sha512-NOOL63kFQRq45ioi5P+hlqj/4LNmvn1URhGjQdvyV54c1Irvoq26aW861PRRLjrSMIeNeiLtCLD5pe+ediepAg==",
+ "version": "0.0.3",
+ "resolved": "https://registry.npmjs.org/@firebase/vertexai-preview/-/vertexai-preview-0.0.3.tgz",
+ "integrity": "sha512-KVtUWLp+ScgiwkDKAvNkVucAyhLVQp6C6lhnVEuIg4mWhWcS3oerjAeVhZT4uNofKwWxRsOaB2Yec7DMTXlQPQ==",
"requires": {
"@firebase/app-check-interop-types": "0.3.2",
- "@firebase/component": "0.6.7",
+ "@firebase/component": "0.6.8",
"@firebase/logger": "0.4.2",
- "@firebase/util": "1.9.6",
+ "@firebase/util": "1.9.7",
"tslib": "^2.1.0"
}
},
"@firebase/webchannel-wrapper": {
- "version": "1.0.0",
- "resolved": "https://registry.npmjs.org/@firebase/webchannel-wrapper/-/webchannel-wrapper-1.0.0.tgz",
- "integrity": "sha512-zuWxyfXNbsKbm96HhXzainONPFqRcoZblQ++e9cAIGUuHfl2cFSBzW01jtesqWG/lqaUyX3H8O1y9oWboGNQBA=="
+ "version": "1.0.1",
+ "resolved": "https://registry.npmjs.org/@firebase/webchannel-wrapper/-/webchannel-wrapper-1.0.1.tgz",
+ "integrity": "sha512-jmEnr/pk0yVkA7mIlHNnxCi+wWzOFUg0WyIotgkKAb2u1J7fAeDBcVNSTjTihbAYNusCLQdW5s9IJ5qwnEufcQ=="
},
"@gamestdio/clock": {
"version": "1.1.9",
@@ -8736,9 +10300,9 @@
}
},
"@grpc/grpc-js": {
- "version": "1.9.14",
- "resolved": "https://registry.npmjs.org/@grpc/grpc-js/-/grpc-js-1.9.14.tgz",
- "integrity": "sha512-nOpuzZ2G3IuMFN+UPPpKrC6NsLmWsTqSsm66IRfnBt1D4pwTqE27lmbpcPM+l2Ua4gE7PfjRHI6uedAy7hoXUw==",
+ "version": "1.9.15",
+ "resolved": "https://registry.npmjs.org/@grpc/grpc-js/-/grpc-js-1.9.15.tgz",
+ "integrity": "sha512-nqE7Hc0AzI+euzUwDAy0aY5hCp10r734gMGRdU+qOPX0XSceI2ULrcXB5U2xSc5VkWwalCj4M7GzCAygZl2KoQ==",
"requires": {
"@grpc/proto-loader": "^0.7.8",
"@types/node": ">=12.12.47"
@@ -8755,6 +10319,11 @@
"yargs": "^17.7.2"
}
},
+ "@iarna/toml": {
+ "version": "2.2.5",
+ "resolved": "https://registry.npmjs.org/@iarna/toml/-/toml-2.2.5.tgz",
+ "integrity": "sha512-trnsAYxU3xnS1gPHPyU961coFyLkh4gAD/0zQ5mymY4yOZ+CYvsPqUbOFSw0aDM4y0tV7tiFxL/1XfXPNC6IPg=="
+ },
"@img/sharp-darwin-arm64": {
"version": "0.33.3",
"resolved": "https://registry.npmjs.org/@img/sharp-darwin-arm64/-/sharp-darwin-arm64-0.33.3.tgz",
@@ -8901,6 +10470,49 @@
"resolved": "https://registry.npmjs.org/@ioredis/commands/-/commands-1.2.0.tgz",
"integrity": "sha512-Sx1pU8EM64o2BrqNpEO1CNLtKQwyhuXuqyfH7oGKCk+1a33d2r5saW8zNwm3j6BTExtjrv2BxTgzzkMwts6vGg=="
},
+ "@jridgewell/gen-mapping": {
+ "version": "0.3.5",
+ "resolved": "https://registry.npmjs.org/@jridgewell/gen-mapping/-/gen-mapping-0.3.5.tgz",
+ "integrity": "sha512-IzL8ZoEDIBRWEzlCcRhOaCupYyN5gdIK+Q6fbFdPDg6HqX6jpkItn7DFIpW9LQzXG6Df9sA7+OKnq0qlz/GaQg==",
+ "requires": {
+ "@jridgewell/set-array": "^1.2.1",
+ "@jridgewell/sourcemap-codec": "^1.4.10",
+ "@jridgewell/trace-mapping": "^0.3.24"
+ }
+ },
+ "@jridgewell/resolve-uri": {
+ "version": "3.1.2",
+ "resolved": "https://registry.npmjs.org/@jridgewell/resolve-uri/-/resolve-uri-3.1.2.tgz",
+ "integrity": "sha512-bRISgCIjP20/tbWSPWMEi54QVPRZExkuD9lJL+UIxUKtwVJA8wW1Trb1jMs1RFXo1CBTNZ/5hpC9QvmKWdopKw=="
+ },
+ "@jridgewell/set-array": {
+ "version": "1.2.1",
+ "resolved": "https://registry.npmjs.org/@jridgewell/set-array/-/set-array-1.2.1.tgz",
+ "integrity": "sha512-R8gLRTZeyp03ymzP/6Lil/28tGeGEzhx1q2k703KGWRAI1VdvPIXdG70VJc2pAMw3NA6JKL5hhFu1sJX0Mnn/A=="
+ },
+ "@jridgewell/source-map": {
+ "version": "0.3.6",
+ "resolved": "https://registry.npmjs.org/@jridgewell/source-map/-/source-map-0.3.6.tgz",
+ "integrity": "sha512-1ZJTZebgqllO79ue2bm3rIGud/bOe0pP5BjSRCRxxYkEZS8STV7zN84UBbiYu7jy+eCKSnVIUgoWWE/tt+shMQ==",
+ "requires": {
+ "@jridgewell/gen-mapping": "^0.3.5",
+ "@jridgewell/trace-mapping": "^0.3.25"
+ }
+ },
+ "@jridgewell/sourcemap-codec": {
+ "version": "1.4.15",
+ "resolved": "https://registry.npmjs.org/@jridgewell/sourcemap-codec/-/sourcemap-codec-1.4.15.tgz",
+ "integrity": "sha512-eF2rxCRulEKXHTRiDrDy6erMYWqNw4LPdQ8UQA4huuxaQsVeRPFl2oM8oDGxMFhJUWZf9McpLtJasDDZb/Bpeg=="
+ },
+ "@jridgewell/trace-mapping": {
+ "version": "0.3.25",
+ "resolved": "https://registry.npmjs.org/@jridgewell/trace-mapping/-/trace-mapping-0.3.25.tgz",
+ "integrity": "sha512-vNk6aEwybGtawWmy/PzwnGDOjCkLWSD2wqvjGGAgOAwCGWySYXfYoxt00IJkTF+8Lb57DwOb3Aa0o9CApepiYQ==",
+ "requires": {
+ "@jridgewell/resolve-uri": "^3.1.0",
+ "@jridgewell/sourcemap-codec": "^1.4.14"
+ }
+ },
"@lezer/common": {
"version": "0.15.12",
"resolved": "https://registry.npmjs.org/@lezer/common/-/common-0.15.12.tgz",
@@ -8985,38 +10597,30 @@
"integrity": "sha512-BR7VvDCVHO+q2xBEWskxS6DJE1qRnb7DxzUrogb71CWoSficBxYsiAGd+Kl0mmq/MprG9yArRkyrQxTO6XjMzA=="
}
}
- },
- "semver": {
- "version": "7.5.4",
- "resolved": "https://registry.npmjs.org/semver/-/semver-7.5.4.tgz",
- "integrity": "sha512-1bCSESV6Pv+i21Hvpxp3Dx+pSD8lIPt8uVjRrxAUt/nbswYc+tK6Y2btiULjd4+fnq15PX+nqQDC7Oft7WkwcA==",
- "requires": {
- "lru-cache": "^6.0.0"
- }
}
}
},
"@mikro-orm/core": {
- "version": "6.2.5",
- "resolved": "https://registry.npmjs.org/@mikro-orm/core/-/core-6.2.5.tgz",
- "integrity": "sha512-KZvirbAoFNjR/Sx30Jr7j6y5oEofNr13llPvCPUQlWQzHrFXedU1Td5AtVeBkOzp7f5FDBSv/a/wMRXqyqkrcA==",
+ "version": "6.2.9",
+ "resolved": "https://registry.npmjs.org/@mikro-orm/core/-/core-6.2.9.tgz",
+ "integrity": "sha512-fzeg8qNwNr0f9embDhs0L75EBC8ivIOsK1GGPXe48Ab+P0Vmv1qCskSP7/vNDsz4s1xDu0h0l6fIsv1N7j4jKQ==",
"requires": {
"dataloader": "2.2.2",
"dotenv": "16.4.5",
"esprima": "4.0.1",
"fs-extra": "11.2.0",
"globby": "11.1.0",
- "mikro-orm": "6.2.5",
+ "mikro-orm": "6.2.9",
"reflect-metadata": "0.2.2"
}
},
"@mikro-orm/mongodb": {
- "version": "6.2.5",
- "resolved": "https://registry.npmjs.org/@mikro-orm/mongodb/-/mongodb-6.2.5.tgz",
- "integrity": "sha512-Z1cqgB0+L/U9PEvEdP5/qj1dKno/Xa/3P2IX2O5fjvUY0ZBGXrESC4WoExb9FeqG6SArmBofNCcmmI4DjMZ8QQ==",
+ "version": "6.2.9",
+ "resolved": "https://registry.npmjs.org/@mikro-orm/mongodb/-/mongodb-6.2.9.tgz",
+ "integrity": "sha512-ryFIFZVMwmlAW7p+/rmvIHZP2cpQ01h8bXvgZw0ri5rqXWHpTg+eQliaXlxum2yJdUSFNK4pjPvS2gyYcph+Sw==",
"requires": {
"bson": "^6.7.0",
- "mongodb": "6.6.0"
+ "mongodb": "6.7.0"
}
},
"@mischnic/json-sourcemap": {
@@ -9030,9 +10634,9 @@
}
},
"@mongodb-js/saslprep": {
- "version": "1.1.6",
- "resolved": "https://registry.npmjs.org/@mongodb-js/saslprep/-/saslprep-1.1.6.tgz",
- "integrity": "sha512-jqTTXQ46H8cAxmXBu8wm1HTSIMBMrIcoVrsjdQkKdMBj3il/fSCgWyya4P2I1xjPBl69mw+nRphrPlcIqBd20Q==",
+ "version": "1.1.7",
+ "resolved": "https://registry.npmjs.org/@mongodb-js/saslprep/-/saslprep-1.1.7.tgz",
+ "integrity": "sha512-dCHW/oEX0KJ4NjDULBo3JiOaK5+6axtpBbS+ao2ZInoAL9/YRQLhXzSNAFz7hP4nzLkIqsfYAK/PDE3+XHny0Q==",
"requires": {
"sparse-bitfield": "^3.0.3"
}
@@ -9097,103 +10701,65 @@
}
},
"@parcel/bundler-default": {
- "version": "2.11.0",
- "resolved": "https://registry.npmjs.org/@parcel/bundler-default/-/bundler-default-2.11.0.tgz",
- "integrity": "sha512-ZIs0865Lp871ZK83k5I9L4DeeE26muNMrHa7j8bvls6fKBJKAn8djrhfU4XOLyziU4aAOobcPwXU0+npWqs52g==",
- "requires": {
- "@parcel/diagnostic": "2.11.0",
- "@parcel/graph": "3.1.0",
- "@parcel/plugin": "2.11.0",
- "@parcel/rust": "2.11.0",
- "@parcel/utils": "2.11.0",
+ "version": "2.12.0",
+ "resolved": "https://registry.npmjs.org/@parcel/bundler-default/-/bundler-default-2.12.0.tgz",
+ "integrity": "sha512-3ybN74oYNMKyjD6V20c9Gerdbh7teeNvVMwIoHIQMzuIFT6IGX53PyOLlOKRLbjxMc0TMimQQxIt2eQqxR5LsA==",
+ "requires": {
+ "@parcel/diagnostic": "2.12.0",
+ "@parcel/graph": "3.2.0",
+ "@parcel/plugin": "2.12.0",
+ "@parcel/rust": "2.12.0",
+ "@parcel/utils": "2.12.0",
"nullthrows": "^1.1.1"
}
},
"@parcel/cache": {
- "version": "2.11.0",
- "resolved": "https://registry.npmjs.org/@parcel/cache/-/cache-2.11.0.tgz",
- "integrity": "sha512-RSSkGNjO00lJPyftzaC9eaNVs4jMjPSAm0VJNWQ9JSm2n4A9BzQtTFAt1vhJOzzW1UsQvvBge9DdfkB7a2gIOw==",
+ "version": "2.12.0",
+ "resolved": "https://registry.npmjs.org/@parcel/cache/-/cache-2.12.0.tgz",
+ "integrity": "sha512-FX5ZpTEkxvq/yvWklRHDESVRz+c7sLTXgFuzz6uEnBcXV38j6dMSikflNpHA6q/L4GKkCqRywm9R6XQwhwIMyw==",
"requires": {
- "@parcel/fs": "2.11.0",
- "@parcel/logger": "2.11.0",
- "@parcel/utils": "2.11.0",
+ "@parcel/fs": "2.12.0",
+ "@parcel/logger": "2.12.0",
+ "@parcel/utils": "2.12.0",
"lmdb": "2.8.5"
}
},
"@parcel/codeframe": {
- "version": "2.11.0",
- "resolved": "https://registry.npmjs.org/@parcel/codeframe/-/codeframe-2.11.0.tgz",
- "integrity": "sha512-YHs9g/i5af/sd/JrWAojU9YFbKffcJ3Tx2EJaK0ME8OJsye91UaI/3lxSUYLmJG9e4WLNJtqci8V5FBMz//ZPg==",
+ "version": "2.12.0",
+ "resolved": "https://registry.npmjs.org/@parcel/codeframe/-/codeframe-2.12.0.tgz",
+ "integrity": "sha512-v2VmneILFiHZJTxPiR7GEF1wey1/IXPdZMcUlNXBiPZyWDfcuNgGGVQkx/xW561rULLIvDPharOMdxz5oHOKQg==",
"requires": {
"chalk": "^4.1.0"
}
},
"@parcel/compressor-raw": {
- "version": "2.11.0",
- "resolved": "https://registry.npmjs.org/@parcel/compressor-raw/-/compressor-raw-2.11.0.tgz",
- "integrity": "sha512-RArhBPRTCfz77soX2IECH09NUd76UBWujXiPRcXGPIHK+C3L1cRuzsNcA39QeSb3thz3b99JcozMJ1nkC2Bsgw==",
+ "version": "2.12.0",
+ "resolved": "https://registry.npmjs.org/@parcel/compressor-raw/-/compressor-raw-2.12.0.tgz",
+ "integrity": "sha512-h41Q3X7ZAQ9wbQ2csP8QGrwepasLZdXiuEdpUryDce6rF9ZiHoJ97MRpdLxOhOPyASTw/xDgE1xyaPQr0Q3f5A==",
"requires": {
- "@parcel/plugin": "2.11.0"
- }
- },
- "@parcel/config-default": {
- "version": "2.11.0",
- "resolved": "https://registry.npmjs.org/@parcel/config-default/-/config-default-2.11.0.tgz",
- "integrity": "sha512-1e2+qcZkm5/0f4eI20p/DemcYiSxq9d/eyjpTXA7PulJaHbL1wonwUAuy3mvnAvDnLOJmAk/obDVgX1ZfxMGtg==",
- "requires": {
- "@parcel/bundler-default": "2.11.0",
- "@parcel/compressor-raw": "2.11.0",
- "@parcel/namer-default": "2.11.0",
- "@parcel/optimizer-css": "2.11.0",
- "@parcel/optimizer-htmlnano": "2.11.0",
- "@parcel/optimizer-image": "2.11.0",
- "@parcel/optimizer-svgo": "2.11.0",
- "@parcel/optimizer-swc": "2.11.0",
- "@parcel/packager-css": "2.11.0",
- "@parcel/packager-html": "2.11.0",
- "@parcel/packager-js": "2.11.0",
- "@parcel/packager-raw": "2.11.0",
- "@parcel/packager-svg": "2.11.0",
- "@parcel/packager-wasm": "2.11.0",
- "@parcel/reporter-dev-server": "2.11.0",
- "@parcel/resolver-default": "2.11.0",
- "@parcel/runtime-browser-hmr": "2.11.0",
- "@parcel/runtime-js": "2.11.0",
- "@parcel/runtime-react-refresh": "2.11.0",
- "@parcel/runtime-service-worker": "2.11.0",
- "@parcel/transformer-babel": "2.11.0",
- "@parcel/transformer-css": "2.11.0",
- "@parcel/transformer-html": "2.11.0",
- "@parcel/transformer-image": "2.11.0",
- "@parcel/transformer-js": "2.11.0",
- "@parcel/transformer-json": "2.11.0",
- "@parcel/transformer-postcss": "2.11.0",
- "@parcel/transformer-posthtml": "2.11.0",
- "@parcel/transformer-raw": "2.11.0",
- "@parcel/transformer-react-refresh-wrap": "2.11.0",
- "@parcel/transformer-svg": "2.11.0"
+ "@parcel/plugin": "2.12.0"
}
},
"@parcel/core": {
- "version": "2.11.0",
- "resolved": "https://registry.npmjs.org/@parcel/core/-/core-2.11.0.tgz",
- "integrity": "sha512-Npe0S6hVaqWEwRL+HI7gtOYOaoE5bJQZTgUDhsDoppWbau51jOlRYOZTXuvRK/jxXnze4/S1sdM24xBYAQ5qkw==",
+ "version": "2.12.0",
+ "resolved": "https://registry.npmjs.org/@parcel/core/-/core-2.12.0.tgz",
+ "integrity": "sha512-s+6pwEj+GfKf7vqGUzN9iSEPueUssCCQrCBUlcAfKrJe0a22hTUCjewpB0I7lNrCIULt8dkndD+sMdOrXsRl6Q==",
"requires": {
"@mischnic/json-sourcemap": "^0.1.0",
- "@parcel/cache": "2.11.0",
- "@parcel/diagnostic": "2.11.0",
- "@parcel/events": "2.11.0",
- "@parcel/fs": "2.11.0",
- "@parcel/graph": "3.1.0",
- "@parcel/logger": "2.11.0",
- "@parcel/package-manager": "2.11.0",
- "@parcel/plugin": "2.11.0",
- "@parcel/profiler": "2.11.0",
- "@parcel/rust": "2.11.0",
+ "@parcel/cache": "2.12.0",
+ "@parcel/diagnostic": "2.12.0",
+ "@parcel/events": "2.12.0",
+ "@parcel/fs": "2.12.0",
+ "@parcel/graph": "3.2.0",
+ "@parcel/logger": "2.12.0",
+ "@parcel/package-manager": "2.12.0",
+ "@parcel/plugin": "2.12.0",
+ "@parcel/profiler": "2.12.0",
+ "@parcel/rust": "2.12.0",
"@parcel/source-map": "^2.1.1",
- "@parcel/types": "2.11.0",
- "@parcel/utils": "2.11.0",
- "@parcel/workers": "2.11.0",
+ "@parcel/types": "2.12.0",
+ "@parcel/utils": "2.12.0",
+ "@parcel/workers": "2.12.0",
"abortcontroller-polyfill": "^1.1.9",
"base-x": "^3.0.8",
"browserslist": "^4.6.6",
@@ -9210,151 +10776,121 @@
"version": "7.0.0",
"resolved": "https://registry.npmjs.org/dotenv/-/dotenv-7.0.0.tgz",
"integrity": "sha512-M3NhsLbV1i6HuGzBUH8vXrtxOk+tWmzWKDMbAVSUp3Zsjm7ywFeuwrUXhmhQyRK1q5B5GGy7hcXPbj3bnfZg2g=="
- },
- "semver": {
- "version": "7.5.4",
- "resolved": "https://registry.npmjs.org/semver/-/semver-7.5.4.tgz",
- "integrity": "sha512-1bCSESV6Pv+i21Hvpxp3Dx+pSD8lIPt8uVjRrxAUt/nbswYc+tK6Y2btiULjd4+fnq15PX+nqQDC7Oft7WkwcA==",
- "requires": {
- "lru-cache": "^6.0.0"
- }
}
}
},
"@parcel/diagnostic": {
- "version": "2.11.0",
- "resolved": "https://registry.npmjs.org/@parcel/diagnostic/-/diagnostic-2.11.0.tgz",
- "integrity": "sha512-4dJmOXVL5YGGQRRsQosQbSRONBcboB71mSwaeaEgz3pPdq9QXVPLACkGe/jTXSqa3OnAHu3g5vQLpE1g5xqBqw==",
+ "version": "2.12.0",
+ "resolved": "https://registry.npmjs.org/@parcel/diagnostic/-/diagnostic-2.12.0.tgz",
+ "integrity": "sha512-8f1NOsSFK+F4AwFCKynyIu9Kr/uWHC+SywAv4oS6Bv3Acig0gtwUjugk0C9UaB8ztBZiW5TQZhw+uPZn9T/lJA==",
"requires": {
"@mischnic/json-sourcemap": "^0.1.0",
"nullthrows": "^1.1.1"
}
},
"@parcel/events": {
- "version": "2.11.0",
- "resolved": "https://registry.npmjs.org/@parcel/events/-/events-2.11.0.tgz",
- "integrity": "sha512-K6SOjOrQsz1GdNl2qKBktq7KJ3Q3yxK8WXdmQYo10wG39dr051xtMb38aqieTp4eVhL8Yaq2iJgGkdr11fuBnA=="
+ "version": "2.12.0",
+ "resolved": "https://registry.npmjs.org/@parcel/events/-/events-2.12.0.tgz",
+ "integrity": "sha512-nmAAEIKLjW1kB2cUbCYSmZOGbnGj8wCzhqnK727zCCWaA25ogzAtt657GPOeFyqW77KyosU728Tl63Fc8hphIA=="
},
"@parcel/fs": {
- "version": "2.11.0",
- "resolved": "https://registry.npmjs.org/@parcel/fs/-/fs-2.11.0.tgz",
- "integrity": "sha512-zWckdnnovdrgdFX4QYuQV4bbKCsh6IYCkmwaB4yp47rhw1MP0lkBINLt4yFPHBxWXOpElCfxjL+z69c9xJQRBQ==",
+ "version": "2.12.0",
+ "resolved": "https://registry.npmjs.org/@parcel/fs/-/fs-2.12.0.tgz",
+ "integrity": "sha512-NnFkuvou1YBtPOhTdZr44WN7I60cGyly2wpHzqRl62yhObyi1KvW0SjwOMa0QGNcBOIzp4G0CapoZ93hD0RG5Q==",
"requires": {
- "@parcel/rust": "2.11.0",
- "@parcel/types": "2.11.0",
- "@parcel/utils": "2.11.0",
+ "@parcel/rust": "2.12.0",
+ "@parcel/types": "2.12.0",
+ "@parcel/utils": "2.12.0",
"@parcel/watcher": "^2.0.7",
- "@parcel/workers": "2.11.0"
+ "@parcel/workers": "2.12.0"
}
},
"@parcel/graph": {
- "version": "3.1.0",
- "resolved": "https://registry.npmjs.org/@parcel/graph/-/graph-3.1.0.tgz",
- "integrity": "sha512-d1dTW5C7A52HgDtoXlyvlET1ypSlmIxSIZOJ1xp3R9L9hgo3h1u3jHNyaoTe/WPkGVe2QnFxh0h+UibVJhu9vg==",
+ "version": "3.2.0",
+ "resolved": "https://registry.npmjs.org/@parcel/graph/-/graph-3.2.0.tgz",
+ "integrity": "sha512-xlrmCPqy58D4Fg5umV7bpwDx5Vyt7MlnQPxW68vae5+BA4GSWetfZt+Cs5dtotMG2oCHzZxhIPt7YZ7NRyQzLA==",
"requires": {
"nullthrows": "^1.1.1"
}
},
"@parcel/logger": {
- "version": "2.11.0",
- "resolved": "https://registry.npmjs.org/@parcel/logger/-/logger-2.11.0.tgz",
- "integrity": "sha512-HtMEdCq3LKnvv4T2CIskcqlf2gpBvHMm3pkeUFB/hc/7hW/hE1k6/HA2VOQvc0tBsaMpmEx7PCrfrH56usQSyA==",
+ "version": "2.12.0",
+ "resolved": "https://registry.npmjs.org/@parcel/logger/-/logger-2.12.0.tgz",
+ "integrity": "sha512-cJ7Paqa7/9VJ7C+KwgJlwMqTQBOjjn71FbKk0G07hydUEBISU2aDfmc/52o60ErL9l+vXB26zTrIBanbxS8rVg==",
"requires": {
- "@parcel/diagnostic": "2.11.0",
- "@parcel/events": "2.11.0"
+ "@parcel/diagnostic": "2.12.0",
+ "@parcel/events": "2.12.0"
}
},
"@parcel/markdown-ansi": {
- "version": "2.11.0",
- "resolved": "https://registry.npmjs.org/@parcel/markdown-ansi/-/markdown-ansi-2.11.0.tgz",
- "integrity": "sha512-YA60EWbXi6cLOIzcwRC2wijotPauOGQbUi0vSbu0O6/mjQ68kWCMGz0hwZjDRQcPypQVJEIvTgMymLbvumxwhg==",
+ "version": "2.12.0",
+ "resolved": "https://registry.npmjs.org/@parcel/markdown-ansi/-/markdown-ansi-2.12.0.tgz",
+ "integrity": "sha512-WZz3rzL8k0H3WR4qTHX6Ic8DlEs17keO9gtD4MNGyMNQbqQEvQ61lWJaIH0nAtgEetu0SOITiVqdZrb8zx/M7w==",
"requires": {
"chalk": "^4.1.0"
}
},
"@parcel/namer-default": {
- "version": "2.11.0",
- "resolved": "https://registry.npmjs.org/@parcel/namer-default/-/namer-default-2.11.0.tgz",
- "integrity": "sha512-DEwBSKSClg4DA2xAWimYkw9bFi7MFb9TdT7/TYZStMTsfYHPWOyyjGR7aVr3Ra4wNb+XX6g4rR41yp3HD6KO7A==",
+ "version": "2.12.0",
+ "resolved": "https://registry.npmjs.org/@parcel/namer-default/-/namer-default-2.12.0.tgz",
+ "integrity": "sha512-9DNKPDHWgMnMtqqZIMiEj/R9PNWW16lpnlHjwK3ciRlMPgjPJ8+UNc255teZODhX0T17GOzPdGbU/O/xbxVPzA==",
"requires": {
- "@parcel/diagnostic": "2.11.0",
- "@parcel/plugin": "2.11.0",
+ "@parcel/diagnostic": "2.12.0",
+ "@parcel/plugin": "2.12.0",
"nullthrows": "^1.1.1"
}
},
"@parcel/node-resolver-core": {
- "version": "3.2.0",
- "resolved": "https://registry.npmjs.org/@parcel/node-resolver-core/-/node-resolver-core-3.2.0.tgz",
- "integrity": "sha512-XJRSxCkNbGFWjfmwFdcQZ/qlzWZd35qLtvLz2va8euGL7M5OMEQOv7dsvEhl0R+CC2zcnfFzZwxk78q6ezs8AQ==",
+ "version": "3.3.0",
+ "resolved": "https://registry.npmjs.org/@parcel/node-resolver-core/-/node-resolver-core-3.3.0.tgz",
+ "integrity": "sha512-rhPW9DYPEIqQBSlYzz3S0AjXxjN6Ub2yS6tzzsW/4S3Gpsgk/uEq4ZfxPvoPf/6TgZndVxmKwpmxaKtGMmf3cA==",
"requires": {
"@mischnic/json-sourcemap": "^0.1.0",
- "@parcel/diagnostic": "2.11.0",
- "@parcel/fs": "2.11.0",
- "@parcel/rust": "2.11.0",
- "@parcel/utils": "2.11.0",
+ "@parcel/diagnostic": "2.12.0",
+ "@parcel/fs": "2.12.0",
+ "@parcel/rust": "2.12.0",
+ "@parcel/utils": "2.12.0",
"nullthrows": "^1.1.1",
"semver": "^7.5.2"
- },
- "dependencies": {
- "semver": {
- "version": "7.6.0",
- "resolved": "https://registry.npmjs.org/semver/-/semver-7.6.0.tgz",
- "integrity": "sha512-EnwXhrlwXMk9gKu5/flx5sv/an57AkRplG3hTK68W7FRDN+k+OWBj65M7719OkA82XLBxrcX0KSHj+X5COhOVg==",
- "requires": {
- "lru-cache": "^6.0.0"
- }
- }
}
},
"@parcel/optimizer-css": {
- "version": "2.11.0",
- "resolved": "https://registry.npmjs.org/@parcel/optimizer-css/-/optimizer-css-2.11.0.tgz",
- "integrity": "sha512-bV97PRxshHV3dMwOpLRgcP1QNhrVWh6VVDfm2gmWULpvsjoykcPS6vrCFksY5CpQsSvNHqJBzQjWS8FubUI76w==",
+ "version": "2.12.0",
+ "resolved": "https://registry.npmjs.org/@parcel/optimizer-css/-/optimizer-css-2.12.0.tgz",
+ "integrity": "sha512-ifbcC97fRzpruTjaa8axIFeX4MjjSIlQfem3EJug3L2AVqQUXnM1XO8L0NaXGNLTW2qnh1ZjIJ7vXT/QhsphsA==",
"requires": {
- "@parcel/diagnostic": "2.11.0",
- "@parcel/plugin": "2.11.0",
+ "@parcel/diagnostic": "2.12.0",
+ "@parcel/plugin": "2.12.0",
"@parcel/source-map": "^2.1.1",
- "@parcel/utils": "2.11.0",
+ "@parcel/utils": "2.12.0",
"browserslist": "^4.6.6",
"lightningcss": "^1.22.1",
"nullthrows": "^1.1.1"
}
},
"@parcel/optimizer-data-url": {
- "version": "2.11.0",
- "resolved": "https://registry.npmjs.org/@parcel/optimizer-data-url/-/optimizer-data-url-2.11.0.tgz",
- "integrity": "sha512-k/BCJMNhqN+3vykp1jVR8AvCrbV8sYBC3gYh/qNzeS+mcmWaF4VIeoJj/nwIu7qYgb6LIC1Ib0ph6i16YmcRFg==",
+ "version": "2.12.0",
+ "resolved": "https://registry.npmjs.org/@parcel/optimizer-data-url/-/optimizer-data-url-2.12.0.tgz",
+ "integrity": "sha512-9g7+1bXZkLFFQ2cLm+CsiJzxMMSDxdo3w3xcqzIj5hcha22jaPP6N1weCAbfxkd6D8wgmljeNUzewFMT0Ob2FQ==",
"requires": {
- "@parcel/plugin": "2.11.0",
- "@parcel/utils": "2.11.0",
+ "@parcel/plugin": "2.12.0",
+ "@parcel/utils": "2.12.0",
"isbinaryfile": "^4.0.2",
"mime": "^2.4.4"
- },
- "dependencies": {
- "mime": {
- "version": "2.6.0",
- "resolved": "https://registry.npmjs.org/mime/-/mime-2.6.0.tgz",
- "integrity": "sha512-USPkMeET31rOMiarsBNIHZKLGgvKc/LrjofAnBlOttf5ajRvqiRA8QsenbcooctK6d6Ts6aqZXBA+XbkKthiQg=="
- }
}
},
"@parcel/optimizer-htmlnano": {
- "version": "2.11.0",
- "resolved": "https://registry.npmjs.org/@parcel/optimizer-htmlnano/-/optimizer-htmlnano-2.11.0.tgz",
- "integrity": "sha512-c20pz4EFF5DNFmqYgptlIj49eT6xjGLkDTdHH3RRzxKovuSXWfYSPs3GED3ZsjVuQyjNQif+/MAk9547F7hrdQ==",
+ "version": "2.12.0",
+ "resolved": "https://registry.npmjs.org/@parcel/optimizer-htmlnano/-/optimizer-htmlnano-2.12.0.tgz",
+ "integrity": "sha512-MfPMeCrT8FYiOrpFHVR+NcZQlXAptK2r4nGJjfT+ndPBhEEZp4yyL7n1y7HfX9geg5altc4WTb4Gug7rCoW8VQ==",
"requires": {
- "@parcel/plugin": "2.11.0",
+ "@parcel/plugin": "2.12.0",
"htmlnano": "^2.0.0",
"nullthrows": "^1.1.1",
"posthtml": "^0.16.5",
"svgo": "^2.4.0"
},
"dependencies": {
- "commander": {
- "version": "7.2.0",
- "resolved": "https://registry.npmjs.org/commander/-/commander-7.2.0.tgz",
- "integrity": "sha512-QrWXB+ZQSVPmIWIhtEO9H+gwHaMGYiF5ChvoJ+K9ZGHG/sVsa6yiesAD1GC/x46sET00Xlwo1u49RVVVzvcSkw=="
- },
"css-select": {
"version": "4.3.0",
"resolved": "https://registry.npmjs.org/css-select/-/css-select-4.3.0.tgz",
@@ -9389,11 +10925,6 @@
"resolved": "https://registry.npmjs.org/mdn-data/-/mdn-data-2.0.14.tgz",
"integrity": "sha512-dn6wd0uw5GsdswPFfsgMp5NSB0/aDe6fK94YJV/AJDYXL6HVLWBsxeq7js7Ad+mU2K9LAlwpk6kN2D5mwCPVow=="
},
- "source-map": {
- "version": "0.6.1",
- "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.6.1.tgz",
- "integrity": "sha512-UjgapumWlbMhkBgzT7Ykc5YXUT46F0iKu8SGXq0bcwP5dz/h0Plj6enJqjz1Zbq2l5WaqYnrVbwWOWMyF3F47g=="
- },
"svgo": {
"version": "2.8.0",
"resolved": "https://registry.npmjs.org/svgo/-/svgo-2.8.0.tgz",
@@ -9411,33 +10942,28 @@
}
},
"@parcel/optimizer-image": {
- "version": "2.11.0",
- "resolved": "https://registry.npmjs.org/@parcel/optimizer-image/-/optimizer-image-2.11.0.tgz",
- "integrity": "sha512-jCaJww5QFG2GuNzYW8nlSW+Ea+Cv47TRnOPJNquFIajgfTLJ5ddsWbaNal0GQsL8yNiCBKWd1AV4W0RH9tG0Jg==",
+ "version": "2.12.0",
+ "resolved": "https://registry.npmjs.org/@parcel/optimizer-image/-/optimizer-image-2.12.0.tgz",
+ "integrity": "sha512-bo1O7raeAIbRU5nmNVtx8divLW9Xqn0c57GVNGeAK4mygnQoqHqRZ0mR9uboh64pxv6ijXZHPhKvU9HEpjPjBQ==",
"requires": {
- "@parcel/diagnostic": "2.11.0",
- "@parcel/plugin": "2.11.0",
- "@parcel/rust": "2.11.0",
- "@parcel/utils": "2.11.0",
- "@parcel/workers": "2.11.0"
+ "@parcel/diagnostic": "2.12.0",
+ "@parcel/plugin": "2.12.0",
+ "@parcel/rust": "2.12.0",
+ "@parcel/utils": "2.12.0",
+ "@parcel/workers": "2.12.0"
}
},
"@parcel/optimizer-svgo": {
- "version": "2.11.0",
- "resolved": "https://registry.npmjs.org/@parcel/optimizer-svgo/-/optimizer-svgo-2.11.0.tgz",
- "integrity": "sha512-TQpvfBhjV2IsuFHXUolbDS6XWB3DDR2rYTlqlA8LMmuOY7jQd9Bnkl4JnapzWm/bRuzRlzdGjjVCPGL8iShFvA==",
+ "version": "2.12.0",
+ "resolved": "https://registry.npmjs.org/@parcel/optimizer-svgo/-/optimizer-svgo-2.12.0.tgz",
+ "integrity": "sha512-Kyli+ZZXnoonnbeRQdoWwee9Bk2jm/49xvnfb+2OO8NN0d41lblBoRhOyFiScRnJrw7eVl1Xrz7NTkXCIO7XFQ==",
"requires": {
- "@parcel/diagnostic": "2.11.0",
- "@parcel/plugin": "2.11.0",
- "@parcel/utils": "2.11.0",
+ "@parcel/diagnostic": "2.12.0",
+ "@parcel/plugin": "2.12.0",
+ "@parcel/utils": "2.12.0",
"svgo": "^2.4.0"
},
"dependencies": {
- "commander": {
- "version": "7.2.0",
- "resolved": "https://registry.npmjs.org/commander/-/commander-7.2.0.tgz",
- "integrity": "sha512-QrWXB+ZQSVPmIWIhtEO9H+gwHaMGYiF5ChvoJ+K9ZGHG/sVsa6yiesAD1GC/x46sET00Xlwo1u49RVVVzvcSkw=="
- },
"css-select": {
"version": "4.3.0",
"resolved": "https://registry.npmjs.org/css-select/-/css-select-4.3.0.tgz",
@@ -9472,11 +10998,6 @@
"resolved": "https://registry.npmjs.org/mdn-data/-/mdn-data-2.0.14.tgz",
"integrity": "sha512-dn6wd0uw5GsdswPFfsgMp5NSB0/aDe6fK94YJV/AJDYXL6HVLWBsxeq7js7Ad+mU2K9LAlwpk6kN2D5mwCPVow=="
},
- "source-map": {
- "version": "0.6.1",
- "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.6.1.tgz",
- "integrity": "sha512-UjgapumWlbMhkBgzT7Ykc5YXUT46F0iKu8SGXq0bcwP5dz/h0Plj6enJqjz1Zbq2l5WaqYnrVbwWOWMyF3F47g=="
- },
"svgo": {
"version": "2.8.0",
"resolved": "https://registry.npmjs.org/svgo/-/svgo-2.8.0.tgz",
@@ -9494,199 +11015,210 @@
}
},
"@parcel/optimizer-swc": {
- "version": "2.11.0",
- "resolved": "https://registry.npmjs.org/@parcel/optimizer-swc/-/optimizer-swc-2.11.0.tgz",
- "integrity": "sha512-ftf42F3JyZxJb6nnLlgNGyNQ273YOla4dFGH/tWC8iTwObHUpWe7cMbCGcrSJBvAlsLkZfLpFNAXFxUgxdKyHQ==",
+ "version": "2.12.0",
+ "resolved": "https://registry.npmjs.org/@parcel/optimizer-swc/-/optimizer-swc-2.12.0.tgz",
+ "integrity": "sha512-iBi6LZB3lm6WmbXfzi8J3DCVPmn4FN2lw7DGXxUXu7MouDPVWfTsM6U/5TkSHJRNRogZ2gqy5q9g34NPxHbJcw==",
"requires": {
- "@parcel/diagnostic": "2.11.0",
- "@parcel/plugin": "2.11.0",
+ "@parcel/diagnostic": "2.12.0",
+ "@parcel/plugin": "2.12.0",
"@parcel/source-map": "^2.1.1",
- "@parcel/utils": "2.11.0",
+ "@parcel/utils": "2.12.0",
"@swc/core": "^1.3.36",
"nullthrows": "^1.1.1"
}
},
"@parcel/package-manager": {
- "version": "2.11.0",
- "resolved": "https://registry.npmjs.org/@parcel/package-manager/-/package-manager-2.11.0.tgz",
- "integrity": "sha512-QzdsrUYlAwIzb8by7WJjqYnbR1MoMKWbtE1MXUeYsZbFusV8B6pOH+lwqNJKS/BFtddZMRPYFueZS2N2fwzjig==",
- "requires": {
- "@parcel/diagnostic": "2.11.0",
- "@parcel/fs": "2.11.0",
- "@parcel/logger": "2.11.0",
- "@parcel/node-resolver-core": "3.2.0",
- "@parcel/types": "2.11.0",
- "@parcel/utils": "2.11.0",
- "@parcel/workers": "2.11.0",
+ "version": "2.12.0",
+ "resolved": "https://registry.npmjs.org/@parcel/package-manager/-/package-manager-2.12.0.tgz",
+ "integrity": "sha512-0nvAezcjPx9FT+hIL+LS1jb0aohwLZXct7jAh7i0MLMtehOi0z1Sau+QpgMlA9rfEZZ1LIeFdnZZwqSy7Ccspw==",
+ "requires": {
+ "@parcel/diagnostic": "2.12.0",
+ "@parcel/fs": "2.12.0",
+ "@parcel/logger": "2.12.0",
+ "@parcel/node-resolver-core": "3.3.0",
+ "@parcel/types": "2.12.0",
+ "@parcel/utils": "2.12.0",
+ "@parcel/workers": "2.12.0",
+ "@swc/core": "^1.3.36",
"semver": "^7.5.2"
- },
- "dependencies": {
- "semver": {
- "version": "7.6.0",
- "resolved": "https://registry.npmjs.org/semver/-/semver-7.6.0.tgz",
- "integrity": "sha512-EnwXhrlwXMk9gKu5/flx5sv/an57AkRplG3hTK68W7FRDN+k+OWBj65M7719OkA82XLBxrcX0KSHj+X5COhOVg==",
- "requires": {
- "lru-cache": "^6.0.0"
- }
- }
}
},
"@parcel/packager-css": {
- "version": "2.11.0",
- "resolved": "https://registry.npmjs.org/@parcel/packager-css/-/packager-css-2.11.0.tgz",
- "integrity": "sha512-AyIxsp4eL8c22vp2oO2hSRnr3hSVNkARNZc9DG6uXxCc2Is5tUEX0I4PwxWnAx0EI44l+3zX/o414zT8yV9wwQ==",
+ "version": "2.12.0",
+ "resolved": "https://registry.npmjs.org/@parcel/packager-css/-/packager-css-2.12.0.tgz",
+ "integrity": "sha512-j3a/ODciaNKD19IYdWJT+TP+tnhhn5koBGBWWtrKSu0UxWpnezIGZetit3eE+Y9+NTePalMkvpIlit2eDhvfJA==",
"requires": {
- "@parcel/diagnostic": "2.11.0",
- "@parcel/plugin": "2.11.0",
+ "@parcel/diagnostic": "2.12.0",
+ "@parcel/plugin": "2.12.0",
"@parcel/source-map": "^2.1.1",
- "@parcel/utils": "2.11.0",
+ "@parcel/utils": "2.12.0",
+ "lightningcss": "^1.22.1",
"nullthrows": "^1.1.1"
}
},
"@parcel/packager-html": {
- "version": "2.11.0",
- "resolved": "https://registry.npmjs.org/@parcel/packager-html/-/packager-html-2.11.0.tgz",
- "integrity": "sha512-ho5AQ70naTV8IqkKIbKtK+jsXQ5TJfFgtBvmJlyB3YydRMbIc+3g4G0xgIvf15V4uCMw9Md0Sv1W65nQXHPQoA==",
+ "version": "2.12.0",
+ "resolved": "https://registry.npmjs.org/@parcel/packager-html/-/packager-html-2.12.0.tgz",
+ "integrity": "sha512-PpvGB9hFFe+19NXGz2ApvPrkA9GwEqaDAninT+3pJD57OVBaxB8U+HN4a5LICKxjUppPPqmrLb6YPbD65IX4RA==",
"requires": {
- "@parcel/plugin": "2.11.0",
- "@parcel/types": "2.11.0",
- "@parcel/utils": "2.11.0",
+ "@parcel/plugin": "2.12.0",
+ "@parcel/types": "2.12.0",
+ "@parcel/utils": "2.12.0",
"nullthrows": "^1.1.1",
"posthtml": "^0.16.5"
}
},
"@parcel/packager-js": {
- "version": "2.11.0",
- "resolved": "https://registry.npmjs.org/@parcel/packager-js/-/packager-js-2.11.0.tgz",
- "integrity": "sha512-SxjCsd0xQfg5H73YtVJj9VOpr9s0rwMsSoeykjkatbkEla9NsZajsUkd/bfYf+/0WvEKOrB8oUBo15HkGOgKug==",
+ "version": "2.12.0",
+ "resolved": "https://registry.npmjs.org/@parcel/packager-js/-/packager-js-2.12.0.tgz",
+ "integrity": "sha512-viMF+FszITRRr8+2iJyk+4ruGiL27Y6AF7hQ3xbJfzqnmbOhGFtLTQwuwhOLqN/mWR2VKdgbLpZSarWaO3yAMg==",
"requires": {
- "@parcel/diagnostic": "2.11.0",
- "@parcel/plugin": "2.11.0",
- "@parcel/rust": "2.11.0",
+ "@parcel/diagnostic": "2.12.0",
+ "@parcel/plugin": "2.12.0",
+ "@parcel/rust": "2.12.0",
"@parcel/source-map": "^2.1.1",
- "@parcel/types": "2.11.0",
- "@parcel/utils": "2.11.0",
+ "@parcel/types": "2.12.0",
+ "@parcel/utils": "2.12.0",
"globals": "^13.2.0",
"nullthrows": "^1.1.1"
}
},
"@parcel/packager-raw": {
- "version": "2.11.0",
- "resolved": "https://registry.npmjs.org/@parcel/packager-raw/-/packager-raw-2.11.0.tgz",
- "integrity": "sha512-2/0JQ8DZrz7cVNXwD6OYoUUtSSnlr4dsz8ZkpFDKsBJhvMHtC78Sq+1EDixDGOMiUcalSEjNsoHtkpq9uNh+Xw==",
+ "version": "2.12.0",
+ "resolved": "https://registry.npmjs.org/@parcel/packager-raw/-/packager-raw-2.12.0.tgz",
+ "integrity": "sha512-tJZqFbHqP24aq1F+OojFbQIc09P/u8HAW5xfndCrFnXpW4wTgM3p03P0xfw3gnNq+TtxHJ8c3UFE5LnXNNKhYA==",
"requires": {
- "@parcel/plugin": "2.11.0"
+ "@parcel/plugin": "2.12.0"
}
},
"@parcel/packager-raw-url": {
- "version": "2.11.0",
- "resolved": "https://registry.npmjs.org/@parcel/packager-raw-url/-/packager-raw-url-2.11.0.tgz",
- "integrity": "sha512-CAa+zTXRotlAgb0eRg//NBVaXRsomWowl7weWeOgRDCq80gqPLAli9k5N9l+048gBiY+OORRtMRM32QgO59tfg==",
+ "version": "2.12.0",
+ "resolved": "https://registry.npmjs.org/@parcel/packager-raw-url/-/packager-raw-url-2.12.0.tgz",
+ "integrity": "sha512-sH7cvLbotS+qknhQUCGfd9mslQr4KcanlZE5CgzM0uGn3SnyZoKznqHrbouzgnIP/LHgXKOKmMaNjPLtVe4rcA==",
"requires": {
- "@parcel/plugin": "2.11.0",
- "@parcel/utils": "2.11.0"
+ "@parcel/plugin": "2.12.0",
+ "@parcel/utils": "2.12.0"
}
},
"@parcel/packager-svg": {
- "version": "2.11.0",
- "resolved": "https://registry.npmjs.org/@parcel/packager-svg/-/packager-svg-2.11.0.tgz",
- "integrity": "sha512-2wQBkzLwcaWFGWz8TP+bgsXgiueWPzrjKsWugWdDfq0FbXh8XVeR/599qnus3RFHZy4cH6L6yq/7zxcljtxK8A==",
+ "version": "2.12.0",
+ "resolved": "https://registry.npmjs.org/@parcel/packager-svg/-/packager-svg-2.12.0.tgz",
+ "integrity": "sha512-ldaGiacGb2lLqcXas97k8JiZRbAnNREmcvoY2W2dvW4loVuDT9B9fU777mbV6zODpcgcHWsLL3lYbJ5Lt3y9cg==",
"requires": {
- "@parcel/plugin": "2.11.0",
- "@parcel/types": "2.11.0",
- "@parcel/utils": "2.11.0",
+ "@parcel/plugin": "2.12.0",
+ "@parcel/types": "2.12.0",
+ "@parcel/utils": "2.12.0",
"posthtml": "^0.16.4"
}
},
+ "@parcel/packager-ts": {
+ "version": "2.12.0",
+ "resolved": "https://registry.npmjs.org/@parcel/packager-ts/-/packager-ts-2.12.0.tgz",
+ "integrity": "sha512-8wR0BNN2NBD+IIU0tjioK+lRD4p2Qi/fKxDH5ixEW912tRV+Vd4kE8k++U6YQIpSlK4FRnjFod5zYYhNSLuiXg==",
+ "requires": {
+ "@parcel/plugin": "2.12.0"
+ }
+ },
"@parcel/packager-wasm": {
- "version": "2.11.0",
- "resolved": "https://registry.npmjs.org/@parcel/packager-wasm/-/packager-wasm-2.11.0.tgz",
- "integrity": "sha512-tTy4EbDXeeiZ0oB7L2FWaHSD1mbmYZP6R5HXqkvc5dECGUKPU5Jz6ek2C5AM+HfQdQLKXPQ/Xw3eJnI/AmctVg==",
+ "version": "2.12.0",
+ "resolved": "https://registry.npmjs.org/@parcel/packager-wasm/-/packager-wasm-2.12.0.tgz",
+ "integrity": "sha512-fYqZzIqO9fGYveeImzF8ll6KRo2LrOXfD+2Y5U3BiX/wp9wv17dz50QLDQm9hmTcKGWxK4yWqKQh+Evp/fae7A==",
+ "requires": {
+ "@parcel/plugin": "2.12.0"
+ }
+ },
+ "@parcel/packager-xml": {
+ "version": "2.12.0",
+ "resolved": "https://registry.npmjs.org/@parcel/packager-xml/-/packager-xml-2.12.0.tgz",
+ "integrity": "sha512-k5/5IkvtmFGvgjDLZE6EVJBntxVfifUGw2UdM1DNChYdEuo18Ch3dcXTTRJim5wfjB0ZXscL12xV0JOeSiolSw==",
"requires": {
- "@parcel/plugin": "2.11.0"
+ "@parcel/plugin": "2.12.0",
+ "@parcel/types": "2.12.0",
+ "@parcel/utils": "2.12.0",
+ "@xmldom/xmldom": "^0.7.9"
}
},
"@parcel/plugin": {
- "version": "2.11.0",
- "resolved": "https://registry.npmjs.org/@parcel/plugin/-/plugin-2.11.0.tgz",
- "integrity": "sha512-9npuKBlhnPn7oeUpLJGecceg16GkXbvzbr6MNSZiHhkx3IBeITHQXlZnp2zAjUOFreNsYOfifwEF2S4KsARfBQ==",
+ "version": "2.12.0",
+ "resolved": "https://registry.npmjs.org/@parcel/plugin/-/plugin-2.12.0.tgz",
+ "integrity": "sha512-nc/uRA8DiMoe4neBbzV6kDndh/58a4wQuGKw5oEoIwBCHUvE2W8ZFSu7ollSXUGRzfacTt4NdY8TwS73ScWZ+g==",
"requires": {
- "@parcel/types": "2.11.0"
+ "@parcel/types": "2.12.0"
}
},
"@parcel/profiler": {
- "version": "2.11.0",
- "resolved": "https://registry.npmjs.org/@parcel/profiler/-/profiler-2.11.0.tgz",
- "integrity": "sha512-s10SS09prOdwnaAcjK8M5zO8o+zPJJW5oOqXPNdf6KH4NGD/ue7iOk2xM8QLw6ulSwxE7NDt++lyfW3AXgCZwg==",
+ "version": "2.12.0",
+ "resolved": "https://registry.npmjs.org/@parcel/profiler/-/profiler-2.12.0.tgz",
+ "integrity": "sha512-q53fvl5LDcFYzMUtSusUBZSjQrKjMlLEBgKeQHFwkimwR1mgoseaDBDuNz0XvmzDzF1UelJ02TUKCGacU8W2qA==",
"requires": {
- "@parcel/diagnostic": "2.11.0",
- "@parcel/events": "2.11.0",
+ "@parcel/diagnostic": "2.12.0",
+ "@parcel/events": "2.12.0",
"chrome-trace-event": "^1.0.2"
}
},
"@parcel/reporter-dev-server": {
- "version": "2.11.0",
- "resolved": "https://registry.npmjs.org/@parcel/reporter-dev-server/-/reporter-dev-server-2.11.0.tgz",
- "integrity": "sha512-T4ue1+oLFNdcd9maw8QWQuxzOS2kX2jOrSvYKwYd9oGnqiAr1rpiHYYKJhHng+PF5ybwWkj8dUJfGh2NoQysJA==",
+ "version": "2.12.0",
+ "resolved": "https://registry.npmjs.org/@parcel/reporter-dev-server/-/reporter-dev-server-2.12.0.tgz",
+ "integrity": "sha512-tIcDqRvAPAttRlTV28dHcbWT5K2r/MBFks7nM4nrEDHWtnrCwimkDmZTc1kD8QOCCjGVwRHcQybpHvxfwol6GA==",
"requires": {
- "@parcel/plugin": "2.11.0",
- "@parcel/utils": "2.11.0"
+ "@parcel/plugin": "2.12.0",
+ "@parcel/utils": "2.12.0"
}
},
"@parcel/resolver-default": {
- "version": "2.11.0",
- "resolved": "https://registry.npmjs.org/@parcel/resolver-default/-/resolver-default-2.11.0.tgz",
- "integrity": "sha512-suZNN2lE5W48LPTwAbG7gnj1IeubkCVEm0XspWXcXUtCzglimNJ8PVVBGx171o5CqDpdbGF3AqHjG9N3uOwXag==",
+ "version": "2.12.0",
+ "resolved": "https://registry.npmjs.org/@parcel/resolver-default/-/resolver-default-2.12.0.tgz",
+ "integrity": "sha512-uuhbajTax37TwCxu7V98JtRLiT6hzE4VYSu5B7Qkauy14/WFt2dz6GOUXPgVsED569/hkxebPx3KCMtZW6cHHA==",
"requires": {
- "@parcel/node-resolver-core": "3.2.0",
- "@parcel/plugin": "2.11.0"
+ "@parcel/node-resolver-core": "3.3.0",
+ "@parcel/plugin": "2.12.0"
}
},
"@parcel/runtime-browser-hmr": {
- "version": "2.11.0",
- "resolved": "https://registry.npmjs.org/@parcel/runtime-browser-hmr/-/runtime-browser-hmr-2.11.0.tgz",
- "integrity": "sha512-uVwNBtoLMrlPHLvRS05BVhLseduMOpZT36yiIjS0YSBJcC6/otI9AY7ZiDPYmrB5xTqM0R+D554JhPaJHCuocw==",
+ "version": "2.12.0",
+ "resolved": "https://registry.npmjs.org/@parcel/runtime-browser-hmr/-/runtime-browser-hmr-2.12.0.tgz",
+ "integrity": "sha512-4ZLp2FWyD32r0GlTulO3+jxgsA3oO1P1b5oO2IWuWilfhcJH5LTiazpL5YdusUjtNn9PGN6QLAWfxmzRIfM+Ow==",
"requires": {
- "@parcel/plugin": "2.11.0",
- "@parcel/utils": "2.11.0"
+ "@parcel/plugin": "2.12.0",
+ "@parcel/utils": "2.12.0"
}
},
"@parcel/runtime-js": {
- "version": "2.11.0",
- "resolved": "https://registry.npmjs.org/@parcel/runtime-js/-/runtime-js-2.11.0.tgz",
- "integrity": "sha512-fH3nJoexINz7s4cDzp0Vjsx0k1pMYSa5ch38LbbNqCKTermy0pS0zZuvgfLfHFFP+AMRpFQenrF7h7N3bgDmHw==",
+ "version": "2.12.0",
+ "resolved": "https://registry.npmjs.org/@parcel/runtime-js/-/runtime-js-2.12.0.tgz",
+ "integrity": "sha512-sBerP32Z1crX5PfLNGDSXSdqzlllM++GVnVQVeM7DgMKS8JIFG3VLi28YkX+dYYGtPypm01JoIHCkvwiZEcQJg==",
"requires": {
- "@parcel/diagnostic": "2.11.0",
- "@parcel/plugin": "2.11.0",
- "@parcel/utils": "2.11.0",
+ "@parcel/diagnostic": "2.12.0",
+ "@parcel/plugin": "2.12.0",
+ "@parcel/utils": "2.12.0",
"nullthrows": "^1.1.1"
}
},
"@parcel/runtime-react-refresh": {
- "version": "2.11.0",
- "resolved": "https://registry.npmjs.org/@parcel/runtime-react-refresh/-/runtime-react-refresh-2.11.0.tgz",
- "integrity": "sha512-Kfnc7gLjhoephLMnjABrkIkzVfzPrpJlxiJFIleY2Fm57YhmCfKsEYxm3lHOutNaYl1VArW0LKClPH/VHG9vfQ==",
+ "version": "2.12.0",
+ "resolved": "https://registry.npmjs.org/@parcel/runtime-react-refresh/-/runtime-react-refresh-2.12.0.tgz",
+ "integrity": "sha512-SCHkcczJIDFTFdLTzrHTkQ0aTrX3xH6jrA4UsCBL6ji61+w+ohy4jEEe9qCgJVXhnJfGLE43HNXek+0MStX+Mw==",
"requires": {
- "@parcel/plugin": "2.11.0",
- "@parcel/utils": "2.11.0",
+ "@parcel/plugin": "2.12.0",
+ "@parcel/utils": "2.12.0",
"react-error-overlay": "6.0.9",
"react-refresh": "^0.9.0"
}
},
"@parcel/runtime-service-worker": {
- "version": "2.11.0",
- "resolved": "https://registry.npmjs.org/@parcel/runtime-service-worker/-/runtime-service-worker-2.11.0.tgz",
- "integrity": "sha512-c8MaSpSbXIKuN5sA/g4UsrsH1BtBZ6Em+eSxt9AYbdPtWrW+qwCioNVZj9lugBRUzDMjVfJz0yK59nS42hABvw==",
+ "version": "2.12.0",
+ "resolved": "https://registry.npmjs.org/@parcel/runtime-service-worker/-/runtime-service-worker-2.12.0.tgz",
+ "integrity": "sha512-BXuMBsfiwpIEnssn+jqfC3jkgbS8oxeo3C7xhSQsuSv+AF2FwY3O3AO1c1RBskEW3XrBLNINOJujroNw80VTKA==",
"requires": {
- "@parcel/plugin": "2.11.0",
- "@parcel/utils": "2.11.0",
+ "@parcel/plugin": "2.12.0",
+ "@parcel/utils": "2.12.0",
"nullthrows": "^1.1.1"
}
},
"@parcel/rust": {
- "version": "2.11.0",
- "resolved": "https://registry.npmjs.org/@parcel/rust/-/rust-2.11.0.tgz",
- "integrity": "sha512-UkLWdHOD8Md2YmJDPsqd3yIs9chhdl/ATfV/B/xdPKGmqtNouYpDCRlq+WxMt3mLoYgHEg9UwrWLTebo2rr2iQ=="
+ "version": "2.12.0",
+ "resolved": "https://registry.npmjs.org/@parcel/rust/-/rust-2.12.0.tgz",
+ "integrity": "sha512-005cldMdFZFDPOjbDVEXcINQ3wT4vrxvSavRWI3Az0e3E18exO/x/mW9f648KtXugOXMAqCEqhFHcXECL9nmMw=="
},
"@parcel/source-map": {
"version": "2.1.1",
@@ -9697,100 +11229,128 @@
}
},
"@parcel/transformer-babel": {
- "version": "2.11.0",
- "resolved": "https://registry.npmjs.org/@parcel/transformer-babel/-/transformer-babel-2.11.0.tgz",
- "integrity": "sha512-WKGblnp7r426VG+cpeQzc6dj/30EoUaYwyl4OEaigQSJizyuPWTBWTz6FUw+ih1/sg37h+D1BIh9C2FsVzpzbw==",
+ "version": "2.12.0",
+ "resolved": "https://registry.npmjs.org/@parcel/transformer-babel/-/transformer-babel-2.12.0.tgz",
+ "integrity": "sha512-zQaBfOnf/l8rPxYGnsk/ufh/0EuqvmnxafjBIpKZ//j6rGylw5JCqXSb1QvvAqRYruKeccxGv7+HrxpqKU6V4A==",
"requires": {
- "@parcel/diagnostic": "2.11.0",
- "@parcel/plugin": "2.11.0",
+ "@parcel/diagnostic": "2.12.0",
+ "@parcel/plugin": "2.12.0",
"@parcel/source-map": "^2.1.1",
- "@parcel/utils": "2.11.0",
+ "@parcel/utils": "2.12.0",
"browserslist": "^4.6.6",
"json5": "^2.2.0",
"nullthrows": "^1.1.1",
"semver": "^7.5.2"
- },
- "dependencies": {
- "semver": {
- "version": "7.6.0",
- "resolved": "https://registry.npmjs.org/semver/-/semver-7.6.0.tgz",
- "integrity": "sha512-EnwXhrlwXMk9gKu5/flx5sv/an57AkRplG3hTK68W7FRDN+k+OWBj65M7719OkA82XLBxrcX0KSHj+X5COhOVg==",
- "requires": {
- "lru-cache": "^6.0.0"
- }
- }
+ }
+ },
+ "@parcel/transformer-coffeescript": {
+ "version": "2.12.0",
+ "resolved": "https://registry.npmjs.org/@parcel/transformer-coffeescript/-/transformer-coffeescript-2.12.0.tgz",
+ "integrity": "sha512-F+xo76q/y28eMIR4NmIO0Gzdmr+nvrR8q+4KbIaMljLPRI3fuhKClF/TCCc8/HY1sC2DlGKSJFFanxovHsoYhQ==",
+ "requires": {
+ "@parcel/plugin": "2.12.0",
+ "@parcel/source-map": "^2.1.1",
+ "@parcel/utils": "2.12.0",
+ "coffeescript": "^2.0.3",
+ "nullthrows": "^1.1.1",
+ "semver": "^7.5.2"
}
},
"@parcel/transformer-css": {
- "version": "2.11.0",
- "resolved": "https://registry.npmjs.org/@parcel/transformer-css/-/transformer-css-2.11.0.tgz",
- "integrity": "sha512-nFmBulF/ErNoafO87JbVrBavjBMNwE/kahbCRVxc2Mvlphz4F4lBW4eDRS5l4xBqFJaNkHr9R55ehLBBilF4Jw==",
+ "version": "2.12.0",
+ "resolved": "https://registry.npmjs.org/@parcel/transformer-css/-/transformer-css-2.12.0.tgz",
+ "integrity": "sha512-vXhOqoAlQGATYyQ433Z1DXKmiKmzOAUmKysbYH3FD+LKEKLMEl/pA14goqp00TW+A/EjtSKKyeMyHlMIIUqj4Q==",
"requires": {
- "@parcel/diagnostic": "2.11.0",
- "@parcel/plugin": "2.11.0",
+ "@parcel/diagnostic": "2.12.0",
+ "@parcel/plugin": "2.12.0",
"@parcel/source-map": "^2.1.1",
- "@parcel/utils": "2.11.0",
+ "@parcel/utils": "2.12.0",
"browserslist": "^4.6.6",
"lightningcss": "^1.22.1",
"nullthrows": "^1.1.1"
}
},
+ "@parcel/transformer-elm": {
+ "version": "2.12.0",
+ "resolved": "https://registry.npmjs.org/@parcel/transformer-elm/-/transformer-elm-2.12.0.tgz",
+ "integrity": "sha512-qqVTsP860FghYTLBrJkrFKD7qbNUq/EqUCofFKLWgWSrMXfzTmsNwMCOStTF4NyclLWcC9KBVjNU+fGS5I519Q==",
+ "requires": {
+ "@parcel/diagnostic": "2.12.0",
+ "@parcel/plugin": "2.12.0",
+ "command-exists": "^1.2.8",
+ "cross-spawn": "^7.0.3",
+ "elm-hot": "^1.1.5",
+ "node-elm-compiler": "^5.0.5",
+ "nullthrows": "^1.1.1",
+ "terser": "^5.14.2"
+ }
+ },
+ "@parcel/transformer-glsl": {
+ "version": "2.12.0",
+ "resolved": "https://registry.npmjs.org/@parcel/transformer-glsl/-/transformer-glsl-2.12.0.tgz",
+ "integrity": "sha512-aW87AaJZWASkTL1Dq2M2rSmKRIUd0q6gJx5yd9jKIEmAI47ffFUGCPjvQNecHCGkgO0GBCeINtOShz7MThKvjg==",
+ "requires": {
+ "@parcel/plugin": "2.12.0",
+ "glslify-bundle": "^5.1.1",
+ "glslify-deps": "^1.3.2"
+ }
+ },
+ "@parcel/transformer-graphql": {
+ "version": "2.12.0",
+ "resolved": "https://registry.npmjs.org/@parcel/transformer-graphql/-/transformer-graphql-2.12.0.tgz",
+ "integrity": "sha512-o4A/Vl5fnekVV+Ft7OskbXHjxs3ve72ew5NBwQ0sx3oNcoYmAbepP5iH2Mh7G2bjeUCNYWE5z+jnO0FNM53QWw==",
+ "requires": {
+ "@parcel/plugin": "2.12.0",
+ "graphql": "^15.0.0",
+ "graphql-import-macro": "^1.0.0"
+ }
+ },
"@parcel/transformer-html": {
- "version": "2.11.0",
- "resolved": "https://registry.npmjs.org/@parcel/transformer-html/-/transformer-html-2.11.0.tgz",
- "integrity": "sha512-90vp7mbvvfqPr9XIINpMcELtywj56f1bxfOkLQgWU1bm22H0FT3i5dqdac++2My0IGDvMwhAEjQfbn4pA579NQ==",
+ "version": "2.12.0",
+ "resolved": "https://registry.npmjs.org/@parcel/transformer-html/-/transformer-html-2.12.0.tgz",
+ "integrity": "sha512-5jW4dFFBlYBvIQk4nrH62rfA/G/KzVzEDa6S+Nne0xXhglLjkm64Ci9b/d4tKZfuGWUbpm2ASAq8skti/nfpXw==",
"requires": {
- "@parcel/diagnostic": "2.11.0",
- "@parcel/plugin": "2.11.0",
- "@parcel/rust": "2.11.0",
+ "@parcel/diagnostic": "2.12.0",
+ "@parcel/plugin": "2.12.0",
+ "@parcel/rust": "2.12.0",
"nullthrows": "^1.1.1",
"posthtml": "^0.16.5",
"posthtml-parser": "^0.10.1",
"posthtml-render": "^3.0.0",
"semver": "^7.5.2",
"srcset": "4"
- },
- "dependencies": {
- "semver": {
- "version": "7.6.0",
- "resolved": "https://registry.npmjs.org/semver/-/semver-7.6.0.tgz",
- "integrity": "sha512-EnwXhrlwXMk9gKu5/flx5sv/an57AkRplG3hTK68W7FRDN+k+OWBj65M7719OkA82XLBxrcX0KSHj+X5COhOVg==",
- "requires": {
- "lru-cache": "^6.0.0"
- }
- }
}
},
"@parcel/transformer-image": {
- "version": "2.11.0",
- "resolved": "https://registry.npmjs.org/@parcel/transformer-image/-/transformer-image-2.11.0.tgz",
- "integrity": "sha512-QiZj18UHf3lVFsi65Vz8YbS3ydx9Pe9x8ktMxE1oh9qpznN8lD7gE/Z9DxuTZB84EZ9pKytKwcv5WGXP25xIFg==",
+ "version": "2.12.0",
+ "resolved": "https://registry.npmjs.org/@parcel/transformer-image/-/transformer-image-2.12.0.tgz",
+ "integrity": "sha512-8hXrGm2IRII49R7lZ0RpmNk27EhcsH+uNKsvxuMpXPuEnWgC/ha/IrjaI29xCng1uGur74bJF43NUSQhR4aTdw==",
"requires": {
- "@parcel/plugin": "2.11.0",
- "@parcel/utils": "2.11.0",
- "@parcel/workers": "2.11.0",
+ "@parcel/plugin": "2.12.0",
+ "@parcel/utils": "2.12.0",
+ "@parcel/workers": "2.12.0",
"nullthrows": "^1.1.1"
}
},
"@parcel/transformer-inline-string": {
- "version": "2.11.0",
- "resolved": "https://registry.npmjs.org/@parcel/transformer-inline-string/-/transformer-inline-string-2.11.0.tgz",
- "integrity": "sha512-yLLjVqS7/P/ySOOjwdl2mElNHmCtJK81+7mnoA2oLEsf4kTKlW3JnIvX5BqJj6Dy6Ek0V1M48E86T9U3fwzWzg==",
+ "version": "2.12.0",
+ "resolved": "https://registry.npmjs.org/@parcel/transformer-inline-string/-/transformer-inline-string-2.12.0.tgz",
+ "integrity": "sha512-FawH7Hgc7E8/Uc0t1UlFT2AdKdEQysu6OJp88NJixAqNhZT7G24OtKltM+VyayPxQZyLblPcp6TnYpY+Tz9VGA==",
"requires": {
- "@parcel/plugin": "2.11.0"
+ "@parcel/plugin": "2.12.0"
}
},
"@parcel/transformer-js": {
- "version": "2.11.0",
- "resolved": "https://registry.npmjs.org/@parcel/transformer-js/-/transformer-js-2.11.0.tgz",
- "integrity": "sha512-G1sv0n8/fJqHqwUs0iVnVdmRY0Kh8kWaDkuWcU/GJBHMGhUnLXKdNwxX2Av9UdBL14bU1nTINfr9qOfnQotXWg==",
+ "version": "2.12.0",
+ "resolved": "https://registry.npmjs.org/@parcel/transformer-js/-/transformer-js-2.12.0.tgz",
+ "integrity": "sha512-OSZpOu+FGDbC/xivu24v092D9w6EGytB3vidwbdiJ2FaPgfV7rxS0WIUjH4I0OcvHAcitArRXL0a3+HrNTdQQw==",
"requires": {
- "@parcel/diagnostic": "2.11.0",
- "@parcel/plugin": "2.11.0",
- "@parcel/rust": "2.11.0",
+ "@parcel/diagnostic": "2.12.0",
+ "@parcel/plugin": "2.12.0",
+ "@parcel/rust": "2.12.0",
"@parcel/source-map": "^2.1.1",
- "@parcel/utils": "2.11.0",
- "@parcel/workers": "2.11.0",
+ "@parcel/utils": "2.12.0",
+ "@parcel/workers": "2.12.0",
"@swc/helpers": "^0.5.0",
"browserslist": "^4.6.6",
"nullthrows": "^1.1.1",
@@ -9802,171 +11362,264 @@
"version": "0.13.11",
"resolved": "https://registry.npmjs.org/regenerator-runtime/-/regenerator-runtime-0.13.11.tgz",
"integrity": "sha512-kY1AZVr2Ra+t+piVaJ4gxaFaReZVH40AKNo7UCX6W+dEwBo/2oZJzqfuN1qLq1oL45o56cPaTXELwrTh8Fpggg=="
- },
- "semver": {
- "version": "7.6.0",
- "resolved": "https://registry.npmjs.org/semver/-/semver-7.6.0.tgz",
- "integrity": "sha512-EnwXhrlwXMk9gKu5/flx5sv/an57AkRplG3hTK68W7FRDN+k+OWBj65M7719OkA82XLBxrcX0KSHj+X5COhOVg==",
- "requires": {
- "lru-cache": "^6.0.0"
- }
}
}
},
"@parcel/transformer-json": {
- "version": "2.11.0",
- "resolved": "https://registry.npmjs.org/@parcel/transformer-json/-/transformer-json-2.11.0.tgz",
- "integrity": "sha512-Wt/wgSBaRWmPL4gpvjkV0bCBRxFOtsuLNzsm8vYA5poxTFhuLY+AoyQ8S2+xXU4VxwBfdppfIr2Ny3SwGs8xbQ==",
+ "version": "2.12.0",
+ "resolved": "https://registry.npmjs.org/@parcel/transformer-json/-/transformer-json-2.12.0.tgz",
+ "integrity": "sha512-Utv64GLRCQILK5r0KFs4o7I41ixMPllwOLOhkdjJKvf1hZmN6WqfOmB1YLbWS/y5Zb/iB52DU2pWZm96vLFQZQ==",
"requires": {
- "@parcel/plugin": "2.11.0",
+ "@parcel/plugin": "2.12.0",
"json5": "^2.2.0"
}
},
- "@parcel/transformer-postcss": {
- "version": "2.11.0",
- "resolved": "https://registry.npmjs.org/@parcel/transformer-postcss/-/transformer-postcss-2.11.0.tgz",
- "integrity": "sha512-Ugy8XHBaUptGotsvwzq7gPCvkCopTIqqZ0JZ40Jmy9slGms8wnx06pNHA1Be/RcJwkJ2TbSu+7ncZdgmP5x5GQ==",
+ "@parcel/transformer-jsonld": {
+ "version": "2.12.0",
+ "resolved": "https://registry.npmjs.org/@parcel/transformer-jsonld/-/transformer-jsonld-2.12.0.tgz",
+ "integrity": "sha512-f/k8ODjthQt83yq1K11MibgVVIBXWr5JDvWuWOcbOKel0AmSbTYB3fb2kYGDSGkQ9XElUvRDaOfecb8GN8am8g==",
"requires": {
- "@parcel/diagnostic": "2.11.0",
- "@parcel/plugin": "2.11.0",
- "@parcel/rust": "2.11.0",
- "@parcel/utils": "2.11.0",
+ "@parcel/plugin": "2.12.0",
+ "@parcel/types": "2.12.0",
+ "json5": "^2.2.0"
+ }
+ },
+ "@parcel/transformer-less": {
+ "version": "2.12.0",
+ "resolved": "https://registry.npmjs.org/@parcel/transformer-less/-/transformer-less-2.12.0.tgz",
+ "integrity": "sha512-eBgDLKX+5HU2IhZxdKabUflt2Aza8ZlV70G95GPZAW80PKlXPHxI10JTlYLAUiUy3G38TM3dvL6W0FhtCRbgSQ==",
+ "requires": {
+ "@parcel/plugin": "2.12.0",
+ "@parcel/source-map": "^2.1.1",
+ "less": "^4.1.1"
+ }
+ },
+ "@parcel/transformer-postcss": {
+ "version": "2.12.0",
+ "resolved": "https://registry.npmjs.org/@parcel/transformer-postcss/-/transformer-postcss-2.12.0.tgz",
+ "integrity": "sha512-FZqn+oUtiLfPOn67EZxPpBkfdFiTnF4iwiXPqvst3XI8H+iC+yNgzmtJkunOOuylpYY6NOU5jT8d7saqWSDv2Q==",
+ "requires": {
+ "@parcel/diagnostic": "2.12.0",
+ "@parcel/plugin": "2.12.0",
+ "@parcel/rust": "2.12.0",
+ "@parcel/utils": "2.12.0",
"clone": "^2.1.1",
"nullthrows": "^1.1.1",
"postcss-value-parser": "^4.2.0",
"semver": "^7.5.2"
- },
- "dependencies": {
- "semver": {
- "version": "7.6.0",
- "resolved": "https://registry.npmjs.org/semver/-/semver-7.6.0.tgz",
- "integrity": "sha512-EnwXhrlwXMk9gKu5/flx5sv/an57AkRplG3hTK68W7FRDN+k+OWBj65M7719OkA82XLBxrcX0KSHj+X5COhOVg==",
- "requires": {
- "lru-cache": "^6.0.0"
- }
- }
}
},
"@parcel/transformer-posthtml": {
- "version": "2.11.0",
- "resolved": "https://registry.npmjs.org/@parcel/transformer-posthtml/-/transformer-posthtml-2.11.0.tgz",
- "integrity": "sha512-dMK4p1RRAoIJEjK/Wz9GOLqwHqdD/VQDhMPk+6sUKp5zf2MhSohUstpp5gKsSZivCM3PS2f8k9rgroacJ/ReuA==",
+ "version": "2.12.0",
+ "resolved": "https://registry.npmjs.org/@parcel/transformer-posthtml/-/transformer-posthtml-2.12.0.tgz",
+ "integrity": "sha512-z6Z7rav/pcaWdeD+2sDUcd0mmNZRUvtHaUGa50Y2mr+poxrKilpsnFMSiWBT+oOqPt7j71jzDvrdnAF4XkCljg==",
"requires": {
- "@parcel/plugin": "2.11.0",
- "@parcel/utils": "2.11.0",
+ "@parcel/plugin": "2.12.0",
+ "@parcel/utils": "2.12.0",
"nullthrows": "^1.1.1",
"posthtml": "^0.16.5",
"posthtml-parser": "^0.10.1",
"posthtml-render": "^3.0.0",
"semver": "^7.5.2"
- },
- "dependencies": {
- "semver": {
- "version": "7.6.0",
- "resolved": "https://registry.npmjs.org/semver/-/semver-7.6.0.tgz",
- "integrity": "sha512-EnwXhrlwXMk9gKu5/flx5sv/an57AkRplG3hTK68W7FRDN+k+OWBj65M7719OkA82XLBxrcX0KSHj+X5COhOVg==",
- "requires": {
- "lru-cache": "^6.0.0"
- }
- }
+ }
+ },
+ "@parcel/transformer-pug": {
+ "version": "2.12.0",
+ "resolved": "https://registry.npmjs.org/@parcel/transformer-pug/-/transformer-pug-2.12.0.tgz",
+ "integrity": "sha512-aiWpfPYIhAAhYU+A29pHMMSc/HE688djX3olVc3MJXjQH49j4XUF1u4QnqMTTrKPHYgSQCXxdGWWljoifMH4iQ==",
+ "requires": {
+ "@parcel/plugin": "2.12.0",
+ "pug": "^3.0.2"
}
},
"@parcel/transformer-raw": {
- "version": "2.11.0",
- "resolved": "https://registry.npmjs.org/@parcel/transformer-raw/-/transformer-raw-2.11.0.tgz",
- "integrity": "sha512-2ltp3TgS+cxEqSM1vk5gDtJrYx4KMuRRtbSgSvkdldyOgPhflnLU3/HRz72hXSNGqYOV0/JN0+ocsfPnqR00ug==",
+ "version": "2.12.0",
+ "resolved": "https://registry.npmjs.org/@parcel/transformer-raw/-/transformer-raw-2.12.0.tgz",
+ "integrity": "sha512-Ht1fQvXxix0NncdnmnXZsa6hra20RXYh1VqhBYZLsDfkvGGFnXIgO03Jqn4Z8MkKoa0tiNbDhpKIeTjyclbBxQ==",
"requires": {
- "@parcel/plugin": "2.11.0"
+ "@parcel/plugin": "2.12.0"
}
},
"@parcel/transformer-react-refresh-wrap": {
- "version": "2.11.0",
- "resolved": "https://registry.npmjs.org/@parcel/transformer-react-refresh-wrap/-/transformer-react-refresh-wrap-2.11.0.tgz",
- "integrity": "sha512-6pY0CdIgIpXC6XpsDWizf+zLgiuEsJ106HjWLwF7/R72BrvDhLPZ6jRu4UTrnd6bM89KahPw9fZZzjKoA5Efcw==",
+ "version": "2.12.0",
+ "resolved": "https://registry.npmjs.org/@parcel/transformer-react-refresh-wrap/-/transformer-react-refresh-wrap-2.12.0.tgz",
+ "integrity": "sha512-GE8gmP2AZtkpBIV5vSCVhewgOFRhqwdM5Q9jNPOY5PKcM3/Ff0qCqDiTzzGLhk0/VMBrdjssrfZkVx6S/lHdJw==",
"requires": {
- "@parcel/plugin": "2.11.0",
- "@parcel/utils": "2.11.0",
+ "@parcel/plugin": "2.12.0",
+ "@parcel/utils": "2.12.0",
"react-refresh": "^0.9.0"
}
},
"@parcel/transformer-sass": {
- "version": "2.11.0",
- "resolved": "https://registry.npmjs.org/@parcel/transformer-sass/-/transformer-sass-2.11.0.tgz",
- "integrity": "sha512-caVIj1UANPgtlZOXcsBrQ++ouAy04hcq+wTwxJrf5t3XA4pdXQmkiLs5WIIUUGBp5hwkV6/BSwc4ht87MunA0g==",
+ "version": "2.12.0",
+ "resolved": "https://registry.npmjs.org/@parcel/transformer-sass/-/transformer-sass-2.12.0.tgz",
+ "integrity": "sha512-xLLoSLPST+2AHJwFRLl4foArDjjy6P1RChP3TxMU2MVS1sbKGJnfFhFpHAacH8ASjuGtu5rbpfpHRZePlvoZxw==",
"requires": {
- "@parcel/plugin": "2.11.0",
+ "@parcel/plugin": "2.12.0",
"@parcel/source-map": "^2.1.1",
"sass": "^1.38.0"
}
},
+ "@parcel/transformer-stylus": {
+ "version": "2.12.0",
+ "resolved": "https://registry.npmjs.org/@parcel/transformer-stylus/-/transformer-stylus-2.12.0.tgz",
+ "integrity": "sha512-sqhYAodncAj5KG7UG4zb9pMspCAA5xSX4fIosIvpEqbTLGaVdxSQ8qZk+8mv5879Q8x0xsQGxFFwNJx5ZEiYMg==",
+ "requires": {
+ "@parcel/plugin": "2.12.0",
+ "@parcel/utils": "2.12.0",
+ "stylus": "^0.55.0"
+ }
+ },
+ "@parcel/transformer-sugarss": {
+ "version": "2.12.0",
+ "resolved": "https://registry.npmjs.org/@parcel/transformer-sugarss/-/transformer-sugarss-2.12.0.tgz",
+ "integrity": "sha512-gpKzN4zOXCVlgeGq59yPfJWtFi94niwfSF9h1LdVKqrPH1Bc5xvza0felxVTcpSAu0IhgTUXZJx5Hsjgbp4XJg==",
+ "requires": {
+ "@parcel/plugin": "2.12.0",
+ "postcss": "^8.4.5",
+ "sugarss": "^3.0.3"
+ }
+ },
"@parcel/transformer-svg": {
- "version": "2.11.0",
- "resolved": "https://registry.npmjs.org/@parcel/transformer-svg/-/transformer-svg-2.11.0.tgz",
- "integrity": "sha512-GrTNi04OoQSXsyrB7FqQPeYREscEXFhIBPkyQ0q7WDG/yYynWljiA0kwITCtMjPfv2EDVks292dvM3EcnERRIA==",
+ "version": "2.12.0",
+ "resolved": "https://registry.npmjs.org/@parcel/transformer-svg/-/transformer-svg-2.12.0.tgz",
+ "integrity": "sha512-cZJqGRJ4JNdYcb+vj94J7PdOuTnwyy45dM9xqbIMH+HSiiIkfrMsdEwYft0GTyFTdsnf+hdHn3tau7Qa5hhX+A==",
"requires": {
- "@parcel/diagnostic": "2.11.0",
- "@parcel/plugin": "2.11.0",
- "@parcel/rust": "2.11.0",
+ "@parcel/diagnostic": "2.12.0",
+ "@parcel/plugin": "2.12.0",
+ "@parcel/rust": "2.12.0",
"nullthrows": "^1.1.1",
"posthtml": "^0.16.5",
"posthtml-parser": "^0.10.1",
"posthtml-render": "^3.0.0",
"semver": "^7.5.2"
- },
- "dependencies": {
- "semver": {
- "version": "7.6.0",
- "resolved": "https://registry.npmjs.org/semver/-/semver-7.6.0.tgz",
- "integrity": "sha512-EnwXhrlwXMk9gKu5/flx5sv/an57AkRplG3hTK68W7FRDN+k+OWBj65M7719OkA82XLBxrcX0KSHj+X5COhOVg==",
- "requires": {
- "lru-cache": "^6.0.0"
- }
- }
+ }
+ },
+ "@parcel/transformer-toml": {
+ "version": "2.12.0",
+ "resolved": "https://registry.npmjs.org/@parcel/transformer-toml/-/transformer-toml-2.12.0.tgz",
+ "integrity": "sha512-v+7U0UD+qLKzSWVfl7KUSVBTgw9aZiy/XJ6OfeSrWHovuZXVA4EsFYibrhHdM9B3WEUXemVmJc5fWA5vXrPkXA==",
+ "requires": {
+ "@iarna/toml": "^2.2.3",
+ "@parcel/plugin": "2.12.0"
+ }
+ },
+ "@parcel/transformer-typescript-types": {
+ "version": "2.12.0",
+ "resolved": "https://registry.npmjs.org/@parcel/transformer-typescript-types/-/transformer-typescript-types-2.12.0.tgz",
+ "integrity": "sha512-uxF4UBMYvbjiV3zHTWMrZX8cFD92VUvD3ArcGi5WEtuVROUm9Sc47o0mOzxKfMFlJu2KOfZVHYlzK9f/UKA2kQ==",
+ "requires": {
+ "@parcel/diagnostic": "2.12.0",
+ "@parcel/plugin": "2.12.0",
+ "@parcel/source-map": "^2.1.1",
+ "@parcel/ts-utils": "2.12.0",
+ "@parcel/utils": "2.12.0",
+ "nullthrows": "^1.1.1"
+ }
+ },
+ "@parcel/transformer-vue": {
+ "version": "2.12.0",
+ "resolved": "https://registry.npmjs.org/@parcel/transformer-vue/-/transformer-vue-2.12.0.tgz",
+ "integrity": "sha512-WZNlNUDymAD+3b2BOGHRsW66rlmW7E9QXa6CTrkPnR6gXX1c9lY7srxSt1Lb+c8zDJHr4Gw7Y0kz8gj921S/aQ==",
+ "requires": {
+ "@parcel/diagnostic": "2.12.0",
+ "@parcel/plugin": "2.12.0",
+ "@parcel/source-map": "^2.1.1",
+ "@parcel/utils": "2.12.0",
+ "@vue/compiler-sfc": "^3.2.27",
+ "consolidate": "^0.16.0",
+ "nullthrows": "^1.1.1",
+ "semver": "^7.5.2"
}
},
"@parcel/transformer-webmanifest": {
- "version": "2.11.0",
- "resolved": "https://registry.npmjs.org/@parcel/transformer-webmanifest/-/transformer-webmanifest-2.11.0.tgz",
- "integrity": "sha512-15DAZX1NOT30L8yzbmYJxwWtHprQ8Zpg5+981IlS6X0YbsdIFq4BRhjfO+ZNOP0tDJe2pjJjcxPAtbubG5MJAw==",
+ "version": "2.12.0",
+ "resolved": "https://registry.npmjs.org/@parcel/transformer-webmanifest/-/transformer-webmanifest-2.12.0.tgz",
+ "integrity": "sha512-suiUv9DDEpyryHtzahbIeJSZTIeE/t4cdrU0Ikb/O46wsy5RLo59nE4E6TGWM84R7fQO8m/MhzeQM5Y3NV6jKg==",
"requires": {
"@mischnic/json-sourcemap": "^0.1.0",
- "@parcel/diagnostic": "2.11.0",
- "@parcel/plugin": "2.11.0",
- "@parcel/utils": "2.11.0"
+ "@parcel/diagnostic": "2.12.0",
+ "@parcel/plugin": "2.12.0",
+ "@parcel/utils": "2.12.0"
}
},
"@parcel/transformer-worklet": {
- "version": "2.11.0",
- "resolved": "https://registry.npmjs.org/@parcel/transformer-worklet/-/transformer-worklet-2.11.0.tgz",
- "integrity": "sha512-smcB5MBqXtiAZOx8JCCYbNUk5kHMW8f39zAWNKkkrlbcPqUxS2vnXl4rEf3CCriarfc41Mfp5D0wOkhUAXu+rw==",
+ "version": "2.12.0",
+ "resolved": "https://registry.npmjs.org/@parcel/transformer-worklet/-/transformer-worklet-2.12.0.tgz",
+ "integrity": "sha512-+IodC0EUN0mHfLOEsrUPK0lr1b5fSvZfAXh+FMqiXvJo4jziRq5Lb+HZbgCfp5DnD5BH0VxLAxdd8QUyAt4Gog==",
"requires": {
- "@parcel/plugin": "2.11.0"
+ "@parcel/plugin": "2.12.0"
}
},
- "@parcel/types": {
- "version": "2.11.0",
- "resolved": "https://registry.npmjs.org/@parcel/types/-/types-2.11.0.tgz",
- "integrity": "sha512-lN5XlfV9b1s2rli8q1LqsLtu+D4ZwNI3sKmNcL/3tohSfQcF2EgF+MaiANGo9VzXOzoWFHt4dqWjO4OcdyC5tg==",
+ "@parcel/transformer-xml": {
+ "version": "2.12.0",
+ "resolved": "https://registry.npmjs.org/@parcel/transformer-xml/-/transformer-xml-2.12.0.tgz",
+ "integrity": "sha512-iey1GEg1LJ7M9y/4TPHoYskf3Hi8uIkQl+yCIzRQahlZWdw4PoNKGeWt1khh9FzhF6K0SvUUDVfRmmuOkqJIhw==",
+ "requires": {
+ "@parcel/plugin": "2.12.0",
+ "@xmldom/xmldom": "^0.7.9"
+ }
+ },
+ "@parcel/transformer-yaml": {
+ "version": "2.12.0",
+ "resolved": "https://registry.npmjs.org/@parcel/transformer-yaml/-/transformer-yaml-2.12.0.tgz",
+ "integrity": "sha512-iD43BNH7rtQdIDzV6mgHLrAgHo4BLFxzSF10rXR225mzQi+TPiKDmW/nPr6aW7Tne544qTkRYmoCARC5X/S++w==",
+ "requires": {
+ "@parcel/plugin": "2.12.0",
+ "js-yaml": "^3.10.0"
+ },
+ "dependencies": {
+ "argparse": {
+ "version": "1.0.10",
+ "resolved": "https://registry.npmjs.org/argparse/-/argparse-1.0.10.tgz",
+ "integrity": "sha512-o5Roy6tNG4SL/FOkCAN6RzjiakZS25RLYFrcMttJqbdd8BWrnA+fGz57iN5Pb06pvBGvl5gQ0B48dJlslXvoTg==",
+ "requires": {
+ "sprintf-js": "~1.0.2"
+ }
+ },
+ "js-yaml": {
+ "version": "3.14.1",
+ "resolved": "https://registry.npmjs.org/js-yaml/-/js-yaml-3.14.1.tgz",
+ "integrity": "sha512-okMH7OXXJ7YrN9Ok3/SXrnu4iX9yOk+25nqX4imS2npuvTYDmo/QEZoqwZkYaIDk3jVvBOTOIEgEhaLOynBS9g==",
+ "requires": {
+ "argparse": "^1.0.7",
+ "esprima": "^4.0.0"
+ }
+ }
+ }
+ },
+ "@parcel/ts-utils": {
+ "version": "2.12.0",
+ "resolved": "https://registry.npmjs.org/@parcel/ts-utils/-/ts-utils-2.12.0.tgz",
+ "integrity": "sha512-zou+W6dcqnXXUOfN5zGM+ePIWbYOhGp8bVB2jICoNkoKmNAHd4l4zeHl5yQXnbZfynVw88cZVqxtXS8tYebelg==",
"requires": {
- "@parcel/cache": "2.11.0",
- "@parcel/diagnostic": "2.11.0",
- "@parcel/fs": "2.11.0",
- "@parcel/package-manager": "2.11.0",
+ "nullthrows": "^1.1.1"
+ }
+ },
+ "@parcel/types": {
+ "version": "2.12.0",
+ "resolved": "https://registry.npmjs.org/@parcel/types/-/types-2.12.0.tgz",
+ "integrity": "sha512-8zAFiYNCwNTQcglIObyNwKfRYQK5ELlL13GuBOrSMxueUiI5ylgsGbTS1N7J3dAGZixHO8KhHGv5a71FILn9rQ==",
+ "requires": {
+ "@parcel/cache": "2.12.0",
+ "@parcel/diagnostic": "2.12.0",
+ "@parcel/fs": "2.12.0",
+ "@parcel/package-manager": "2.12.0",
"@parcel/source-map": "^2.1.1",
- "@parcel/workers": "2.11.0",
+ "@parcel/workers": "2.12.0",
"utility-types": "^3.10.0"
}
},
"@parcel/utils": {
- "version": "2.11.0",
- "resolved": "https://registry.npmjs.org/@parcel/utils/-/utils-2.11.0.tgz",
- "integrity": "sha512-AcL70cXlIyE7eQdvjQbYxegN5l+skqvlJllxTWg4YkIZe9p8Gmv74jLAeLWh5F+IGl5WRn0TSy9JhNJjIMQGwQ==",
- "requires": {
- "@parcel/codeframe": "2.11.0",
- "@parcel/diagnostic": "2.11.0",
- "@parcel/logger": "2.11.0",
- "@parcel/markdown-ansi": "2.11.0",
- "@parcel/rust": "2.11.0",
+ "version": "2.12.0",
+ "resolved": "https://registry.npmjs.org/@parcel/utils/-/utils-2.12.0.tgz",
+ "integrity": "sha512-z1JhLuZ8QmDaYoEIuUCVZlhcFrS7LMfHrb2OCRui5SQFntRWBH2fNM6H/fXXUkT9SkxcuFP2DUA6/m4+Gkz72g==",
+ "requires": {
+ "@parcel/codeframe": "2.12.0",
+ "@parcel/diagnostic": "2.12.0",
+ "@parcel/logger": "2.12.0",
+ "@parcel/markdown-ansi": "2.12.0",
+ "@parcel/rust": "2.12.0",
"@parcel/source-map": "^2.1.1",
"chalk": "^4.1.0",
"nullthrows": "^1.1.1"
@@ -10068,15 +11721,15 @@
"optional": true
},
"@parcel/workers": {
- "version": "2.11.0",
- "resolved": "https://registry.npmjs.org/@parcel/workers/-/workers-2.11.0.tgz",
- "integrity": "sha512-wjybqdSy6Nk0N9iBGsFcp7739W2zvx0WGfVxPVShqhz46pIkPOiFF/iSn+kFu5EmMKTRWeUif42+a6rRZ7pCnQ==",
- "requires": {
- "@parcel/diagnostic": "2.11.0",
- "@parcel/logger": "2.11.0",
- "@parcel/profiler": "2.11.0",
- "@parcel/types": "2.11.0",
- "@parcel/utils": "2.11.0",
+ "version": "2.12.0",
+ "resolved": "https://registry.npmjs.org/@parcel/workers/-/workers-2.12.0.tgz",
+ "integrity": "sha512-zv5We5Jmb+ZWXlU6A+AufyjY4oZckkxsZ8J4dvyWL0W8IQvGO1JB4FGeryyttzQv3RM3OxcN/BpTGPiDG6keBw==",
+ "requires": {
+ "@parcel/diagnostic": "2.12.0",
+ "@parcel/logger": "2.12.0",
+ "@parcel/profiler": "2.12.0",
+ "@parcel/types": "2.12.0",
+ "@parcel/utils": "2.12.0",
"nullthrows": "^1.1.1"
}
},
@@ -10160,49 +11813,39 @@
"@reldens/modifiers": "^0.22.0",
"@reldens/storage": "^0.24.0",
"@reldens/utils": "^0.32.0"
- }
- },
- "@reldens/modifiers": {
- "version": "0.22.0",
- "resolved": "https://registry.npmjs.org/@reldens/modifiers/-/modifiers-0.22.0.tgz",
- "integrity": "sha512-nW2DvM7cut9fHVL2rstNH3a1+XMvEKgmdjYlWePxJPsutZ0LQ1OYGjw1W5knYS5757CjM0TX9LfC9rGqaOBBiw==",
- "requires": {
- "@reldens/utils": "^0.30.0"
- },
- "dependencies": {
- "@reldens/utils": {
- "version": "0.30.0",
- "resolved": "https://registry.npmjs.org/@reldens/utils/-/utils-0.30.0.tgz",
- "integrity": "sha512-GM7pgHXODgG2EKzYKRJv9PDACHku8LT613kB4iCfo0pzvzfvqr6e8JIHCeQxerNGAbqw9UcU2BBU3EFKzkojog==",
- "requires": {
- "await-event-emitter": "^2.0.2"
- }
- }
- }
- },
- "@reldens/skills": {
- "version": "0.26.0",
- "resolved": "https://registry.npmjs.org/@reldens/skills/-/skills-0.26.0.tgz",
- "integrity": "sha512-9T06zutgXt5uGLLrn64vIBBDB67eWkljqJYaNlTuO6DzemQ3+xET1QlIk8xyFE+3RvmQQPTe69FoMfDCMCu2Qg==",
- "requires": {
- "@reldens/modifiers": "^0.22.0",
- "@reldens/storage": "^0.20.0",
- "@reldens/utils": "^0.30.0"
},
"dependencies": {
"@reldens/storage": {
- "version": "0.20.0",
- "resolved": "https://registry.npmjs.org/@reldens/storage/-/storage-0.20.0.tgz",
- "integrity": "sha512-llwdg+lmWGqdjVOj/tpR7pT/lbJMTFDlrYnxkNdwYjQVcnVdgylJs4YJCmkiulFSvcde2FxTGXAMNzruyuqD6w==",
+ "version": "0.24.0",
+ "resolved": "https://registry.npmjs.org/@reldens/storage/-/storage-0.24.0.tgz",
+ "integrity": "sha512-kd7COpaK4nd0zgXNuRxycqkyU4+knA/HVjUL/wfiHKXO4DVqtIonqOuYRljqpD+tHyI22tCrOI0jxY0Xzqaw3A==",
"requires": {
- "@mikro-orm/core": "^6.2.0",
- "@mikro-orm/mongodb": "^6.2.0",
- "@reldens/utils": "^0.30.0",
+ "@mikro-orm/core": "^6.2.5",
+ "@mikro-orm/mongodb": "^6.2.5",
+ "@reldens/utils": "^0.32.0",
"knex": "^3.1.0",
"mysql": "^2.18.1",
"objection": "^3.1.4"
}
},
+ "@reldens/utils": {
+ "version": "0.32.0",
+ "resolved": "https://registry.npmjs.org/@reldens/utils/-/utils-0.32.0.tgz",
+ "integrity": "sha512-CeF7rI40vamjAv0tTyCXOEVLUaJ3icWNnv4SvJNyqYfcRUR2ZWClHnDMyZmCHtYOniLpZJb+CuPmEDDvBKOZ4w==",
+ "requires": {
+ "await-event-emitter": "^2.0.2"
+ }
+ }
+ }
+ },
+ "@reldens/modifiers": {
+ "version": "0.22.0",
+ "resolved": "https://registry.npmjs.org/@reldens/modifiers/-/modifiers-0.22.0.tgz",
+ "integrity": "sha512-nW2DvM7cut9fHVL2rstNH3a1+XMvEKgmdjYlWePxJPsutZ0LQ1OYGjw1W5knYS5757CjM0TX9LfC9rGqaOBBiw==",
+ "requires": {
+ "@reldens/utils": "^0.30.0"
+ },
+ "dependencies": {
"@reldens/utils": {
"version": "0.30.0",
"resolved": "https://registry.npmjs.org/@reldens/utils/-/utils-0.30.0.tgz",
@@ -10213,14 +11856,24 @@
}
}
},
+ "@reldens/skills": {
+ "version": "0.27.0",
+ "resolved": "https://registry.npmjs.org/@reldens/skills/-/skills-0.27.0.tgz",
+ "integrity": "sha512-jaJggyd01MtHoIrytt88OJ+nW4AW+R9PSx4p0AXWMBXusOERQlG01JeBdNvbdLeHjn6CDU4DZlxe6E0nwLDd3g==",
+ "requires": {
+ "@reldens/modifiers": "^0.22.0",
+ "@reldens/storage": "^0.25.0",
+ "@reldens/utils": "^0.33.0"
+ }
+ },
"@reldens/storage": {
- "version": "0.24.0",
- "resolved": "https://registry.npmjs.org/@reldens/storage/-/storage-0.24.0.tgz",
- "integrity": "sha512-kd7COpaK4nd0zgXNuRxycqkyU4+knA/HVjUL/wfiHKXO4DVqtIonqOuYRljqpD+tHyI22tCrOI0jxY0Xzqaw3A==",
+ "version": "0.25.0",
+ "resolved": "https://registry.npmjs.org/@reldens/storage/-/storage-0.25.0.tgz",
+ "integrity": "sha512-c1TXO91hw7URS7MciJV7YIcR9/7CDeOAQLIBctSO9NexZitBEIdoFLcglJHziaDX6MtaYil9YPtdJSDonKRfNA==",
"requires": {
- "@mikro-orm/core": "^6.2.5",
- "@mikro-orm/mongodb": "^6.2.5",
- "@reldens/utils": "^0.32.0",
+ "@mikro-orm/core": "^6.2.9",
+ "@mikro-orm/mongodb": "^6.2.9",
+ "@reldens/utils": "^0.33.0",
"knex": "^3.1.0",
"mysql": "^2.18.1",
"objection": "^3.1.4"
@@ -10234,6 +11887,16 @@
"@reldens/tile-map-optimizer": "^0.16.0",
"@reldens/utils": "^0.32.0",
"pathfinding": "0.4.18"
+ },
+ "dependencies": {
+ "@reldens/utils": {
+ "version": "0.32.0",
+ "resolved": "https://registry.npmjs.org/@reldens/utils/-/utils-0.32.0.tgz",
+ "integrity": "sha512-CeF7rI40vamjAv0tTyCXOEVLUaJ3icWNnv4SvJNyqYfcRUR2ZWClHnDMyZmCHtYOniLpZJb+CuPmEDDvBKOZ4w==",
+ "requires": {
+ "await-event-emitter": "^2.0.2"
+ }
+ }
}
},
"@reldens/tile-map-optimizer": {
@@ -10243,12 +11906,22 @@
"requires": {
"@reldens/utils": "^0.32.0",
"sharp": "0.33.3"
+ },
+ "dependencies": {
+ "@reldens/utils": {
+ "version": "0.32.0",
+ "resolved": "https://registry.npmjs.org/@reldens/utils/-/utils-0.32.0.tgz",
+ "integrity": "sha512-CeF7rI40vamjAv0tTyCXOEVLUaJ3icWNnv4SvJNyqYfcRUR2ZWClHnDMyZmCHtYOniLpZJb+CuPmEDDvBKOZ4w==",
+ "requires": {
+ "await-event-emitter": "^2.0.2"
+ }
+ }
}
},
"@reldens/utils": {
- "version": "0.32.0",
- "resolved": "https://registry.npmjs.org/@reldens/utils/-/utils-0.32.0.tgz",
- "integrity": "sha512-CeF7rI40vamjAv0tTyCXOEVLUaJ3icWNnv4SvJNyqYfcRUR2ZWClHnDMyZmCHtYOniLpZJb+CuPmEDDvBKOZ4w==",
+ "version": "0.33.0",
+ "resolved": "https://registry.npmjs.org/@reldens/utils/-/utils-0.33.0.tgz",
+ "integrity": "sha512-zehb0d0NYOfPvlrYBKYQZTci3X7nQp1Ut4TTiLKEhVrF4Hx32VC8kjG1KUevFGweJr1pOLT6Ny91WyPcpSUXlA==",
"requires": {
"await-event-emitter": "^2.0.2"
}
@@ -10422,9 +12095,9 @@
"integrity": "sha512-CiJJvcRtIgzadHCYXw7dqEnMNRjhGZlYK05Mj9OyktqV8uVT8fD2BFOB7S1uwBE3Kj2Z+4UyPmFw/Ixgw/LAlA=="
},
"@types/whatwg-url": {
- "version": "11.0.4",
- "resolved": "https://registry.npmjs.org/@types/whatwg-url/-/whatwg-url-11.0.4.tgz",
- "integrity": "sha512-lXCmTWSHJvf0TRSO58nm978b8HJ/EdsSsEKLd3ODHFjo+3VGAyyTp4v50nWvwtzBxSMQrVOK7tcuN0zGPLICMw==",
+ "version": "11.0.5",
+ "resolved": "https://registry.npmjs.org/@types/whatwg-url/-/whatwg-url-11.0.5.tgz",
+ "integrity": "sha512-coYR071JRaHa+xoEvvYqvnIHaVqaYrLPbsufM9BF63HkwI5Lgmy2QR8Q5K/lYDYo5AK82wOvSOS0UsLTpTG7uQ==",
"requires": {
"@types/webidl-conversions": "*"
}
@@ -10437,6 +12110,69 @@
"@types/node": "*"
}
},
+ "@vue/compiler-core": {
+ "version": "3.4.27",
+ "resolved": "https://registry.npmjs.org/@vue/compiler-core/-/compiler-core-3.4.27.tgz",
+ "integrity": "sha512-E+RyqY24KnyDXsCuQrI+mlcdW3ALND6U7Gqa/+bVwbcpcR3BRRIckFoz7Qyd4TTlnugtwuI7YgjbvsLmxb+yvg==",
+ "requires": {
+ "@babel/parser": "^7.24.4",
+ "@vue/shared": "3.4.27",
+ "entities": "^4.5.0",
+ "estree-walker": "^2.0.2",
+ "source-map-js": "^1.2.0"
+ },
+ "dependencies": {
+ "entities": {
+ "version": "4.5.0",
+ "resolved": "https://registry.npmjs.org/entities/-/entities-4.5.0.tgz",
+ "integrity": "sha512-V0hjH4dGPh9Ao5p0MoRY6BVqtwCjhz6vI5LT8AJ55H+4g9/4vbHx1I54fS0XuclLhDHArPQCiMjDxjaL8fPxhw=="
+ }
+ }
+ },
+ "@vue/compiler-dom": {
+ "version": "3.4.27",
+ "resolved": "https://registry.npmjs.org/@vue/compiler-dom/-/compiler-dom-3.4.27.tgz",
+ "integrity": "sha512-kUTvochG/oVgE1w5ViSr3KUBh9X7CWirebA3bezTbB5ZKBQZwR2Mwj9uoSKRMFcz4gSMzzLXBPD6KpCLb9nvWw==",
+ "requires": {
+ "@vue/compiler-core": "3.4.27",
+ "@vue/shared": "3.4.27"
+ }
+ },
+ "@vue/compiler-sfc": {
+ "version": "3.4.27",
+ "resolved": "https://registry.npmjs.org/@vue/compiler-sfc/-/compiler-sfc-3.4.27.tgz",
+ "integrity": "sha512-nDwntUEADssW8e0rrmE0+OrONwmRlegDA1pD6QhVeXxjIytV03yDqTey9SBDiALsvAd5U4ZrEKbMyVXhX6mCGA==",
+ "requires": {
+ "@babel/parser": "^7.24.4",
+ "@vue/compiler-core": "3.4.27",
+ "@vue/compiler-dom": "3.4.27",
+ "@vue/compiler-ssr": "3.4.27",
+ "@vue/shared": "3.4.27",
+ "estree-walker": "^2.0.2",
+ "magic-string": "^0.30.10",
+ "postcss": "^8.4.38",
+ "source-map-js": "^1.2.0"
+ }
+ },
+ "@vue/compiler-ssr": {
+ "version": "3.4.27",
+ "resolved": "https://registry.npmjs.org/@vue/compiler-ssr/-/compiler-ssr-3.4.27.tgz",
+ "integrity": "sha512-CVRzSJIltzMG5FcidsW0jKNQnNRYC8bT21VegyMMtHmhW3UOI7knmUehzswXLrExDLE6lQCZdrhD4ogI7c+vuw==",
+ "requires": {
+ "@vue/compiler-dom": "3.4.27",
+ "@vue/shared": "3.4.27"
+ }
+ },
+ "@vue/shared": {
+ "version": "3.4.27",
+ "resolved": "https://registry.npmjs.org/@vue/shared/-/shared-3.4.27.tgz",
+ "integrity": "sha512-DL3NmY2OFlqmYYrzp39yi3LDkKxa5vZVwxWdQ3rG0ekuWscHraeIbnI8t+aZK7qhYqEqWKTUdijadunb9pnrgA=="
+ },
+ "@xmldom/xmldom": {
+ "version": "0.7.13",
+ "resolved": "https://registry.npmjs.org/@xmldom/xmldom/-/xmldom-0.7.13.tgz",
+ "integrity": "sha512-lm2GW5PkosIzccsaZIz7tp8cPADSIlIHWDFTR1N0SzfinhhYgeIQjFMz4rYzanCScr3DqQLeomUDArp6MWKm+g=="
+ },
"abbrev": {
"version": "1.1.1",
"resolved": "https://registry.npmjs.org/abbrev/-/abbrev-1.1.1.tgz",
@@ -10456,6 +12192,11 @@
"negotiator": "0.6.3"
}
},
+ "acorn": {
+ "version": "7.4.1",
+ "resolved": "https://registry.npmjs.org/acorn/-/acorn-7.4.1.tgz",
+ "integrity": "sha512-nQyp0o1/mNdbTO1PO6kHkwSrmgZ0MT/jCCpNiwbUjGoRN4dlBhqJtoQuCnEOKzgTVwg0ZWiCoQy6SxMebQVh8A=="
+ },
"agent-base": {
"version": "6.0.2",
"resolved": "https://registry.npmjs.org/agent-base/-/agent-base-6.0.2.tgz",
@@ -10505,6 +12246,11 @@
"picomatch": "^2.0.4"
}
},
+ "append-field": {
+ "version": "1.0.0",
+ "resolved": "https://registry.npmjs.org/append-field/-/append-field-1.0.0.tgz",
+ "integrity": "sha512-klpgFSWLW1ZEs8svjfb7g4qWY0YS5imI82dTg+QahUvJ8YqAY0P10Uk8tTyh9ZGuYEZEMaeJYCF5BFuX552hsw=="
+ },
"aproba": {
"version": "2.0.0",
"resolved": "https://registry.npmjs.org/aproba/-/aproba-2.0.0.tgz",
@@ -10534,6 +12280,11 @@
"resolved": "https://registry.npmjs.org/array-union/-/array-union-2.1.0.tgz",
"integrity": "sha512-HGyxoOTYUyCM6stUe6EJgnd4EoewAI7zMdfqO+kGjnlZmBDz/cR5pf8r/cR4Wq60sL/p0IkcjUEEPwS3GFrIyw=="
},
+ "asap": {
+ "version": "2.0.6",
+ "resolved": "https://registry.npmjs.org/asap/-/asap-2.0.6.tgz",
+ "integrity": "sha512-BSHWgDSAiKs50o2Re8ppvp3seVHXSRM44cdSsT9FfNEUUZLOGWVCsiWaRPWM1Znn+mqZ1OfVZ3z3DWEzSp7hRA=="
+ },
"asn1.js": {
"version": "5.4.1",
"resolved": "https://registry.npmjs.org/asn1.js/-/asn1.js-5.4.1.tgz",
@@ -10546,11 +12297,21 @@
"safer-buffer": "^2.1.0"
}
},
+ "assert-never": {
+ "version": "1.2.1",
+ "resolved": "https://registry.npmjs.org/assert-never/-/assert-never-1.2.1.tgz",
+ "integrity": "sha512-TaTivMB6pYI1kXwrFlEhLeGfOqoDNdTxjCdwRfFFkEA30Eu+k48W34nlok2EYWJfFFzqaEmichdNM7th6M5HNw=="
+ },
"asynckit": {
"version": "0.4.0",
"resolved": "https://registry.npmjs.org/asynckit/-/asynckit-0.4.0.tgz",
"integrity": "sha512-Oei9OH4tRh0YqU3GxhX79dM/mwVgvbZJaSNaRk+bshkj0S5cfHcgYakreBjrHwatXKbz+IoIdYLxrKim2MjW0Q=="
},
+ "atob": {
+ "version": "2.1.2",
+ "resolved": "https://registry.npmjs.org/atob/-/atob-2.1.2.tgz",
+ "integrity": "sha512-Wm6ukoaOGJi/73p/cl2GvLjTI5JM1k/O14isD73YML8StrH/7/lRFgmg8nICZgD3bZZvjwCGxtMOD3wWNAu8cg=="
+ },
"await-event-emitter": {
"version": "2.0.2",
"resolved": "https://registry.npmjs.org/await-event-emitter/-/await-event-emitter-2.0.2.tgz",
@@ -10559,6 +12320,14 @@
"is-promise": "^4.0.0"
}
},
+ "babel-walk": {
+ "version": "3.0.0-canary-5",
+ "resolved": "https://registry.npmjs.org/babel-walk/-/babel-walk-3.0.0-canary-5.tgz",
+ "integrity": "sha512-GAwkz0AihzY5bkwIY5QDR+LvsRQgB/B+1foMPvi0FZPMl5fjD7ICiznUiBdLYMH1QYe6vqu4gWYytZOccLouFw==",
+ "requires": {
+ "@babel/types": "^7.9.6"
+ }
+ },
"balanced-match": {
"version": "1.0.2",
"resolved": "https://registry.npmjs.org/balanced-match/-/balanced-match-1.0.2.tgz",
@@ -10604,9 +12373,14 @@
}
},
"binary-extensions": {
- "version": "2.2.0",
- "resolved": "https://registry.npmjs.org/binary-extensions/-/binary-extensions-2.2.0.tgz",
- "integrity": "sha512-jDctJ/IVQbZoJykoeHbhXpOlNBqGNcwXJKJog42E5HDPUwQTSdjCHdihjj0DlnheQ7blbT6dHOafNAiS8ooQKA=="
+ "version": "2.3.0",
+ "resolved": "https://registry.npmjs.org/binary-extensions/-/binary-extensions-2.3.0.tgz",
+ "integrity": "sha512-Ceh+7ox5qe7LJuLHoY0feh3pHuUDHAcRUeyL2VYghZwfpkNIy/+8Ocg0a3UuSoYzavmylwuLWQOf3hl0jjMMIw=="
+ },
+ "bluebird": {
+ "version": "3.7.2",
+ "resolved": "https://registry.npmjs.org/bluebird/-/bluebird-3.7.2.tgz",
+ "integrity": "sha512-XpNj6GDQzdfW+r2Wnn7xiSAd7TM3jzkxGXBGTtWKuSXv1xUV+azxAm8jdWZN06QTQk+2N2XB9jRDkvbmQmcRtg=="
},
"bn.js": {
"version": "4.12.0",
@@ -10663,11 +12437,11 @@
}
},
"braces": {
- "version": "3.0.2",
- "resolved": "https://registry.npmjs.org/braces/-/braces-3.0.2.tgz",
- "integrity": "sha512-b8um+L1RzM3WDSzvhm6gIz1yfTbBt6YTlcEKAvsmqCZZFw46z626lVj9j1yEPW33H5H+lBQpZMP1k8l+78Ha0A==",
+ "version": "3.0.3",
+ "resolved": "https://registry.npmjs.org/braces/-/braces-3.0.3.tgz",
+ "integrity": "sha512-yQbXgO/OSZVD2IsiLlro+7Hf6Q18EJrKSEsdoMzKePKXct3gvD8oLcOQdIzGupr5Fj+EDe8gO/lxc1BzfMpxvA==",
"requires": {
- "fill-range": "^7.0.1"
+ "fill-range": "^7.1.1"
}
},
"brorand": {
@@ -10688,15 +12462,28 @@
}
},
"bson": {
- "version": "6.7.0",
- "resolved": "https://registry.npmjs.org/bson/-/bson-6.7.0.tgz",
- "integrity": "sha512-w2IquM5mYzYZv6rs3uN2DZTOBe2a0zXLj53TGDqwF4l6Sz/XsISrisXOJihArF9+BZ6Cq/GjVht7Sjfmri7ytQ=="
+ "version": "6.8.0",
+ "resolved": "https://registry.npmjs.org/bson/-/bson-6.8.0.tgz",
+ "integrity": "sha512-iOJg8pr7wq2tg/zSlCCHMi3hMm5JTOxLTagf3zxhcenHsFp+c6uOs6K7W5UE7A4QIJGtqh/ZovFNMP4mOPJynQ=="
},
"buffer-equal-constant-time": {
"version": "1.0.1",
"resolved": "https://registry.npmjs.org/buffer-equal-constant-time/-/buffer-equal-constant-time-1.0.1.tgz",
"integrity": "sha512-zRpUiDwd/xk6ADqPMATG8vc9VPrkck7T07OIx0gnjmJAnHnTVXNQG3vfvWNuiZIkwu9KrKdA1iJKfsfTVxE6NA=="
},
+ "buffer-from": {
+ "version": "1.1.2",
+ "resolved": "https://registry.npmjs.org/buffer-from/-/buffer-from-1.1.2.tgz",
+ "integrity": "sha512-E+XQCRwSbaaiChtv6k6Dwgc+bx+Bs6vuKJHHl5kox/BaKbhiXzqQOwK4cO22yElGp2OCmjwVhT3HmxgyPGnJfQ=="
+ },
+ "busboy": {
+ "version": "1.6.0",
+ "resolved": "https://registry.npmjs.org/busboy/-/busboy-1.6.0.tgz",
+ "integrity": "sha512-8SFQbg/0hQ9xy3UNTB0YEnsNBbWfhf7RtnzpL7TkBiTBRfrQ9Fxcnz7VJsleJpyp6rVLvXiuORqjlHi5q+PYuA==",
+ "requires": {
+ "streamsearch": "^1.1.0"
+ }
+ },
"bytes": {
"version": "3.1.2",
"resolved": "https://registry.npmjs.org/bytes/-/bytes-3.1.2.tgz",
@@ -10717,9 +12504,9 @@
"integrity": "sha512-P8BjAsXvZS+VIDUI11hHCQEv74YT67YUi5JJFNWIqL235sBmjX4+qx9Muvls5ivyNENctx46xQLQ3aTuE7ssaQ=="
},
"caniuse-lite": {
- "version": "1.0.30001627",
- "resolved": "https://registry.npmjs.org/caniuse-lite/-/caniuse-lite-1.0.30001627.tgz",
- "integrity": "sha512-4zgNiB8nTyV/tHhwZrFs88ryjls/lHiqFhrxCW4qSTeuRByBVnPYpDInchOIySWknznucaf31Z4KYqjfbrecVw=="
+ "version": "1.0.30001642",
+ "resolved": "https://registry.npmjs.org/caniuse-lite/-/caniuse-lite-1.0.30001642.tgz",
+ "integrity": "sha512-3XQ0DoRgLijXJErLSl+bLnJ+Et4KqV1PY6JJBGAFlsNsz31zeAIncyeZfLCabHK/jtSh+671RM9YMldxjUPZtA=="
},
"chalk": {
"version": "4.1.2",
@@ -10730,10 +12517,18 @@
"supports-color": "^7.1.0"
}
},
+ "character-parser": {
+ "version": "2.2.0",
+ "resolved": "https://registry.npmjs.org/character-parser/-/character-parser-2.2.0.tgz",
+ "integrity": "sha512-+UqJQjFEFaTAs3bNsF2j2kEN1baG/zghZbdqoYEDxGZtJo9LBzl1A+m0D4n3qKx8N2FNv8/Xp6yV9mQmBuptaw==",
+ "requires": {
+ "is-regex": "^1.0.3"
+ }
+ },
"chokidar": {
- "version": "3.5.3",
- "resolved": "https://registry.npmjs.org/chokidar/-/chokidar-3.5.3.tgz",
- "integrity": "sha512-Dr3sfKRP6oTcjf2JmUmFJfeVMvXBdegxB0iVQ5eb2V10uFJUCAS8OByZdVAyVb8xXNz3GjjTgj9kLWsZTqE6kw==",
+ "version": "3.6.0",
+ "resolved": "https://registry.npmjs.org/chokidar/-/chokidar-3.6.0.tgz",
+ "integrity": "sha512-7VT13fmjotKpGipCW9JEQAusEPE+Ei8nl6/g4FBAmIm0GOOLMua9NDDo/DWp0ZAxCr3cPq5ZpBqmPAQgDda2Pw==",
"requires": {
"anymatch": "~3.1.2",
"braces": "~3.0.2",
@@ -10775,6 +12570,11 @@
"resolved": "https://registry.npmjs.org/cluster-key-slot/-/cluster-key-slot-1.1.2.tgz",
"integrity": "sha512-RMr0FhtfXemyinomL4hrWcYJxmX6deFdCxpJzhDttxgO1+bcCnkk+9drydLVDmAMG7NE6aN/fl4F7ucU/90gAA=="
},
+ "coffeescript": {
+ "version": "2.7.0",
+ "resolved": "https://registry.npmjs.org/coffeescript/-/coffeescript-2.7.0.tgz",
+ "integrity": "sha512-hzWp6TUE2d/jCcN67LrW1eh5b/rSDKQK6oD6VMLlggYVUUFexgTH9z3dNYihzX4RMhze5FTUsUmOXViJKFQR/A=="
+ },
"color": {
"version": "4.2.3",
"resolved": "https://registry.npmjs.org/color/-/color-4.2.3.tgz",
@@ -10829,9 +12629,9 @@
}
},
"colyseus.js": {
- "version": "0.15.22",
- "resolved": "https://registry.npmjs.org/colyseus.js/-/colyseus.js-0.15.22.tgz",
- "integrity": "sha512-qo2cXYHaeHSNZr+lDfs6i6kE0+nabm0i6xMDAN5xFWoPFaDpfW82hU2Gqxk/N+kA/jmKcLVc883OOMNsNvqUFg==",
+ "version": "0.15.25",
+ "resolved": "https://registry.npmjs.org/colyseus.js/-/colyseus.js-0.15.25.tgz",
+ "integrity": "sha512-aAGZYeIODWtsUFDhm+WoH8rnQl2pKri0FNWsOCjmXP6IKEM+Puq1Ua9e4nsG208niShUCnF2Th9iWDFbqIhoxQ==",
"requires": {
"@colyseus/schema": "^2.0.4",
"httpie": "^2.0.0-next.13",
@@ -10840,9 +12640,9 @@
},
"dependencies": {
"ws": {
- "version": "8.14.2",
- "resolved": "https://registry.npmjs.org/ws/-/ws-8.14.2.tgz",
- "integrity": "sha512-wEBG1ftX4jcglPxgFCMJmZ2PLtSbJ2Peg6TmpJFTbe9GZYOQCDPdMYu/Tm0/bGZkw8paZnJY45J4K2PZrLYq8g==",
+ "version": "8.17.1",
+ "resolved": "https://registry.npmjs.org/ws/-/ws-8.17.1.tgz",
+ "integrity": "sha512-6XQFvXTkbfUOZOKKILFG1PDK2NDQs4azKQl26T0YS5CxqWLgXajbPZ+h4gZekJyRqFU8pvnbAbbs/3TgRPy+GQ==",
"requires": {}
}
}
@@ -10855,6 +12655,16 @@
"delayed-stream": "~1.0.0"
}
},
+ "command-exists": {
+ "version": "1.2.9",
+ "resolved": "https://registry.npmjs.org/command-exists/-/command-exists-1.2.9.tgz",
+ "integrity": "sha512-LTQ/SGc+s0Xc0Fu5WaKnR0YiygZkm9eKFvyS+fRsU7/ZWFF8ykFM6Pc9aCVf1+xasOOZpO3BAVgVrKvsqKHV7w=="
+ },
+ "commander": {
+ "version": "7.2.0",
+ "resolved": "https://registry.npmjs.org/commander/-/commander-7.2.0.tgz",
+ "integrity": "sha512-QrWXB+ZQSVPmIWIhtEO9H+gwHaMGYiF5ChvoJ+K9ZGHG/sVsa6yiesAD1GC/x46sET00Xlwo1u49RVVVzvcSkw=="
+ },
"component-emitter": {
"version": "1.3.0",
"resolved": "https://registry.npmjs.org/component-emitter/-/component-emitter-1.3.0.tgz",
@@ -10865,6 +12675,46 @@
"resolved": "https://registry.npmjs.org/concat-map/-/concat-map-0.0.1.tgz",
"integrity": "sha512-/Srv4dswyQNBfohGpz9o6Yb3Gz3SrUDqBH5rTuhGR7ahtlbYKnVxw2bCFMRljaA7EXHaXZ8wsHdodFvbkhKmqg=="
},
+ "concat-stream": {
+ "version": "1.6.2",
+ "resolved": "https://registry.npmjs.org/concat-stream/-/concat-stream-1.6.2.tgz",
+ "integrity": "sha512-27HBghJxjiZtIk3Ycvn/4kbJk/1uZuJFfuPEns6LaEvpvG1f0hTea8lilrouyo9mVc2GWdcEZ8OLoGmSADlrCw==",
+ "requires": {
+ "buffer-from": "^1.0.0",
+ "inherits": "^2.0.3",
+ "readable-stream": "^2.2.2",
+ "typedarray": "^0.0.6"
+ },
+ "dependencies": {
+ "readable-stream": {
+ "version": "2.3.8",
+ "resolved": "https://registry.npmjs.org/readable-stream/-/readable-stream-2.3.8.tgz",
+ "integrity": "sha512-8p0AUk4XODgIewSi0l8Epjs+EVnWiK7NoDIEGU0HhE7+ZyY8D1IMY7odu5lRrFXGg71L15KG8QrPmum45RTtdA==",
+ "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"
+ }
+ },
+ "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=="
+ },
+ "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==",
+ "requires": {
+ "safe-buffer": "~5.1.0"
+ }
+ }
+ }
+ },
"connect-redis": {
"version": "7.1.1",
"resolved": "https://registry.npmjs.org/connect-redis/-/connect-redis-7.1.1.tgz",
@@ -10876,6 +12726,23 @@
"resolved": "https://registry.npmjs.org/console-control-strings/-/console-control-strings-1.1.0.tgz",
"integrity": "sha512-ty/fTekppD2fIwRvnZAVdeOiGd1c7YXEixbgJTNzqcxJWKQnjJ/V1bNEEE6hygpM3WjwHFUVK6HTjWSzV4a8sQ=="
},
+ "consolidate": {
+ "version": "0.16.0",
+ "resolved": "https://registry.npmjs.org/consolidate/-/consolidate-0.16.0.tgz",
+ "integrity": "sha512-Nhl1wzCslqXYTJVDyJCu3ODohy9OfBMB5uD2BiBTzd7w+QY0lBzafkR8y8755yMYHAaMD4NuzbAw03/xzfw+eQ==",
+ "requires": {
+ "bluebird": "^3.7.2"
+ }
+ },
+ "constantinople": {
+ "version": "4.0.1",
+ "resolved": "https://registry.npmjs.org/constantinople/-/constantinople-4.0.1.tgz",
+ "integrity": "sha512-vCrqcSIq4//Gx74TXXCGnHpulY1dskqLTFGDmhrGxzeXL8lF8kvXv6mpNWlJj1uD4DW23D4ljAqbY4RRaaUZIw==",
+ "requires": {
+ "@babel/parser": "^7.6.0",
+ "@babel/types": "^7.6.1"
+ }
+ },
"content-disposition": {
"version": "0.5.4",
"resolved": "https://registry.npmjs.org/content-disposition/-/content-disposition-0.5.4.tgz",
@@ -10905,6 +12772,14 @@
"resolved": "https://registry.npmjs.org/cookiejar/-/cookiejar-2.1.4.tgz",
"integrity": "sha512-LDx6oHrK+PhzLKJU9j5S7/Y3jM/mUHvD/DeI1WQmJn652iPC5Y4TBzC9l+5OMOXlyTTA+SmVUPm0HQUwpD5Jqw=="
},
+ "copy-anything": {
+ "version": "2.0.6",
+ "resolved": "https://registry.npmjs.org/copy-anything/-/copy-anything-2.0.6.tgz",
+ "integrity": "sha512-1j20GZTsvKNkc4BY3NpMOM8tt///wY3FpIzozTOFO2ffuZcV61nojHXVKIy3WM+7ADCy5FVhdZYHYDdgTU0yJw==",
+ "requires": {
+ "is-what": "^3.14.1"
+ }
+ },
"core-js": {
"version": "3.37.1",
"resolved": "https://registry.npmjs.org/core-js/-/core-js-3.37.1.tgz",
@@ -10935,6 +12810,26 @@
"path-type": "^4.0.0"
}
},
+ "cross-spawn": {
+ "version": "7.0.3",
+ "resolved": "https://registry.npmjs.org/cross-spawn/-/cross-spawn-7.0.3.tgz",
+ "integrity": "sha512-iRDPJKUPVEND7dHPO8rkbOnPpyDygcDFtWjpeWNCgy8WP2rXcxXL8TskReQl6OrB2G7+UJrags1q15Fudc7G6w==",
+ "requires": {
+ "path-key": "^3.1.0",
+ "shebang-command": "^2.0.0",
+ "which": "^2.0.1"
+ }
+ },
+ "css": {
+ "version": "3.0.0",
+ "resolved": "https://registry.npmjs.org/css/-/css-3.0.0.tgz",
+ "integrity": "sha512-DG9pFfwOrzc+hawpmqX/dHYHJG+Bsdb0klhyi1sDneOgGOXy9wQIC8hzyVp1e4NRYDBdxcylvywPkkXCHAzTyQ==",
+ "requires": {
+ "inherits": "^2.0.4",
+ "source-map": "^0.6.1",
+ "source-map-resolve": "^0.6.0"
+ }
+ },
"css-select": {
"version": "5.1.0",
"resolved": "https://registry.npmjs.org/css-select/-/css-select-5.1.0.tgz",
@@ -11056,6 +12951,11 @@
"ms": "2.1.2"
}
},
+ "decode-uri-component": {
+ "version": "0.2.2",
+ "resolved": "https://registry.npmjs.org/decode-uri-component/-/decode-uri-component-0.2.2.tgz",
+ "integrity": "sha512-FqUYQ+8o158GyGTrMFJms9qh3CqTKvAqgqsTnkLI8sKu0028orqBhxNMFkFen0zGyg6epACD32pjVk58ngIErQ=="
+ },
"deepmerge": {
"version": "4.2.2",
"resolved": "https://registry.npmjs.org/deepmerge/-/deepmerge-4.2.2.tgz",
@@ -11104,6 +13004,11 @@
"path-type": "^4.0.0"
}
},
+ "doctypes": {
+ "version": "1.1.0",
+ "resolved": "https://registry.npmjs.org/doctypes/-/doctypes-1.1.0.tgz",
+ "integrity": "sha512-LLBi6pEqS6Do3EKQ3J0NqHWV5hhb78Pi8vvESYwyOy2c31ZEZVdtitdzsQsKb7878PEERhzUk0ftqGhG6Mz+pQ=="
+ },
"dom-serializer": {
"version": "1.4.1",
"resolved": "https://registry.npmjs.org/dom-serializer/-/dom-serializer-1.4.1.tgz",
@@ -11187,6 +13092,23 @@
"minimalistic-crypto-utils": "^1.0.1"
}
},
+ "elm": {
+ "version": "0.19.1-6",
+ "resolved": "https://registry.npmjs.org/elm/-/elm-0.19.1-6.tgz",
+ "integrity": "sha512-mKYyierHICPdMx/vhiIacdPmTPnh889gjHOZ75ZAoCxo3lZmSWbGP8HMw78wyctJH0HwvTmeKhlYSWboQNYPeQ==",
+ "peer": true,
+ "requires": {
+ "@elm_binaries/darwin_arm64": "0.19.1-0",
+ "@elm_binaries/darwin_x64": "0.19.1-0",
+ "@elm_binaries/linux_x64": "0.19.1-0",
+ "@elm_binaries/win32_x64": "0.19.1-0"
+ }
+ },
+ "elm-hot": {
+ "version": "1.1.6",
+ "resolved": "https://registry.npmjs.org/elm-hot/-/elm-hot-1.1.6.tgz",
+ "integrity": "sha512-zYZJlfs7Gt4BdjA+D+857K+XAWzwwySJmXCgFpHW1dIEfaHSZCIPYPf7/jinZBLfKRkOAlKzI32AA84DY50g7Q=="
+ },
"emoji-regex": {
"version": "8.0.0",
"resolved": "https://registry.npmjs.org/emoji-regex/-/emoji-regex-8.0.0.tgz",
@@ -11224,6 +13146,15 @@
"resolved": "https://registry.npmjs.org/entities/-/entities-3.0.1.tgz",
"integrity": "sha512-WiyBqoomrwMdFG1e0kqvASYfnlb0lp8M5o5Fw2OFq1hNZxxcNk8Ik0Xm7LxzBhuidnZB/UtBqVCgUz3kBOP51Q=="
},
+ "errno": {
+ "version": "0.1.8",
+ "resolved": "https://registry.npmjs.org/errno/-/errno-0.1.8.tgz",
+ "integrity": "sha512-dJ6oBr5SQ1VSd9qkk7ByRgb/1SH4JZjCHSW/mr63/QcXO9zLVxvJ6Oy13nio03rxpSnVDDjFor75SjVeZWPW/A==",
+ "optional": true,
+ "requires": {
+ "prr": "~1.0.1"
+ }
+ },
"error-ex": {
"version": "1.3.2",
"resolved": "https://registry.npmjs.org/error-ex/-/error-ex-1.3.2.tgz",
@@ -11257,6 +13188,11 @@
"resolved": "https://registry.npmjs.org/esprima/-/esprima-4.0.1.tgz",
"integrity": "sha512-eGuFFw7Upda+g4p+QHvnW0RyTX/SVeJBDM/gCtMARO0cLuT2HcEKnTPvhjV6aGeqrCB/sbNop0Kszm0jsaWU4A=="
},
+ "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=="
+ },
"etag": {
"version": "1.8.1",
"resolved": "https://registry.npmjs.org/etag/-/etag-1.8.1.tgz",
@@ -11267,6 +13203,11 @@
"resolved": "https://registry.npmjs.org/eventemitter3/-/eventemitter3-5.0.1.tgz",
"integrity": "sha512-GWkBvjiSZK87ELrYOSESUYeVIc9mvLLf/nXalMOS5dYrgZq9o5OVkbZAVM06CVxYsCwH9BDZFPlQTlPA1j4ahA=="
},
+ "events": {
+ "version": "3.3.0",
+ "resolved": "https://registry.npmjs.org/events/-/events-3.3.0.tgz",
+ "integrity": "sha512-mQw+2fkQbALzQ7V0MY0IqdnXNOeTtP4r0lN9z7AAawCXgqea7bDii20AYrIBrFd/Hx0M2Ocz6S111CaFkUcb0Q=="
+ },
"express": {
"version": "4.19.2",
"resolved": "https://registry.npmjs.org/express/-/express-4.19.2.tgz",
@@ -11446,9 +13387,9 @@
}
},
"fill-range": {
- "version": "7.0.1",
- "resolved": "https://registry.npmjs.org/fill-range/-/fill-range-7.0.1.tgz",
- "integrity": "sha512-qOo9F+dMUmC2Lcb4BbVvnKJxTPjCm+RRpe4gDuGrzkL7mEVl/djYSu2OdQ2Pa302N4oqkSg9ir6jaLWJ2USVpQ==",
+ "version": "7.1.1",
+ "resolved": "https://registry.npmjs.org/fill-range/-/fill-range-7.1.1.tgz",
+ "integrity": "sha512-YsGpe3WHLK8ZYi4tWDg2Jy3ebRz2rXowDxnld4bkQB00cc/1Zw9AWnC0i9ztDJitivtQvaI9KaLyKrc+hBW0yg==",
"requires": {
"to-regex-range": "^5.0.1"
}
@@ -11482,38 +13423,47 @@
}
}
},
+ "find-elm-dependencies": {
+ "version": "2.0.4",
+ "resolved": "https://registry.npmjs.org/find-elm-dependencies/-/find-elm-dependencies-2.0.4.tgz",
+ "integrity": "sha512-x/4w4fVmlD2X4PD9oQ+yh9EyaQef6OtEULdMGBTuWx0Nkppvo2Z/bAiQioW2n+GdRYKypME2b9OmYTw5tw5qDg==",
+ "requires": {
+ "firstline": "^1.2.0",
+ "lodash": "^4.17.19"
+ }
+ },
"firebase": {
- "version": "10.12.2",
- "resolved": "https://registry.npmjs.org/firebase/-/firebase-10.12.2.tgz",
- "integrity": "sha512-ZxEdtSvP1I9su1yf32D8TIdgxtPgxwr6z3jYAR1TXS/t+fVfpoPc/N1/N2bxOco9mNjUoc+od34v5Fn4GeKs6Q==",
- "requires": {
- "@firebase/analytics": "0.10.4",
- "@firebase/analytics-compat": "0.2.10",
- "@firebase/app": "0.10.5",
- "@firebase/app-check": "0.8.4",
- "@firebase/app-check-compat": "0.3.11",
- "@firebase/app-compat": "0.2.35",
+ "version": "10.12.3",
+ "resolved": "https://registry.npmjs.org/firebase/-/firebase-10.12.3.tgz",
+ "integrity": "sha512-dO2cQ8eP6RnM2wcGzbxnoljjjMBf1suUrHYFftjSpbPn/8bEx959cwTRDHqBx3MwSzNsg6zZV/wiWydJPhUKgw==",
+ "requires": {
+ "@firebase/analytics": "0.10.5",
+ "@firebase/analytics-compat": "0.2.11",
+ "@firebase/app": "0.10.6",
+ "@firebase/app-check": "0.8.5",
+ "@firebase/app-check-compat": "0.3.12",
+ "@firebase/app-compat": "0.2.36",
"@firebase/app-types": "0.9.2",
- "@firebase/auth": "1.7.4",
- "@firebase/auth-compat": "0.5.9",
- "@firebase/database": "1.0.5",
- "@firebase/database-compat": "1.0.5",
- "@firebase/firestore": "4.6.3",
- "@firebase/firestore-compat": "0.3.32",
- "@firebase/functions": "0.11.5",
- "@firebase/functions-compat": "0.3.11",
- "@firebase/installations": "0.6.7",
- "@firebase/installations-compat": "0.2.7",
- "@firebase/messaging": "0.12.9",
- "@firebase/messaging-compat": "0.2.9",
- "@firebase/performance": "0.6.7",
- "@firebase/performance-compat": "0.2.7",
- "@firebase/remote-config": "0.4.7",
- "@firebase/remote-config-compat": "0.2.7",
- "@firebase/storage": "0.12.5",
- "@firebase/storage-compat": "0.3.8",
- "@firebase/util": "1.9.6",
- "@firebase/vertexai-preview": "0.0.2"
+ "@firebase/auth": "1.7.5",
+ "@firebase/auth-compat": "0.5.10",
+ "@firebase/database": "1.0.6",
+ "@firebase/database-compat": "1.0.6",
+ "@firebase/firestore": "4.6.4",
+ "@firebase/firestore-compat": "0.3.33",
+ "@firebase/functions": "0.11.6",
+ "@firebase/functions-compat": "0.3.12",
+ "@firebase/installations": "0.6.8",
+ "@firebase/installations-compat": "0.2.8",
+ "@firebase/messaging": "0.12.10",
+ "@firebase/messaging-compat": "0.2.10",
+ "@firebase/performance": "0.6.8",
+ "@firebase/performance-compat": "0.2.8",
+ "@firebase/remote-config": "0.4.8",
+ "@firebase/remote-config-compat": "0.2.8",
+ "@firebase/storage": "0.12.6",
+ "@firebase/storage-compat": "0.3.9",
+ "@firebase/util": "1.9.7",
+ "@firebase/vertexai-preview": "0.0.3"
}
},
"firebaseui": {
@@ -11525,6 +13475,11 @@
"material-design-lite": "^1.2.0"
}
},
+ "firstline": {
+ "version": "1.3.1",
+ "resolved": "https://registry.npmjs.org/firstline/-/firstline-1.3.1.tgz",
+ "integrity": "sha512-ycwgqtoxujz1dm0kjkBFOPQMESxB9uKc/PlD951dQDIG+tBXRpYZC2UmJb0gDxopQ1ZX6oyRQN3goRczYu7Deg=="
+ },
"follow-redirects": {
"version": "1.15.6",
"resolved": "https://registry.npmjs.org/follow-redirects/-/follow-redirects-1.15.6.tgz",
@@ -11589,9 +13544,9 @@
"integrity": "sha512-OO0pH2lK6a0hZnAdau5ItzHPI6pUlvI7jMVnxUQRtw4owF2wk8lOSabtGDCTP4Ggrg2MbGnWO9X8K1t4+fGMDw=="
},
"fsevents": {
- "version": "2.3.2",
- "resolved": "https://registry.npmjs.org/fsevents/-/fsevents-2.3.2.tgz",
- "integrity": "sha512-xiqMQR4xAeHTuB9uWm+fFRcIOgKBMiOBP+eXiyT7jsgVCq1bkVygt00oASowB7EdtpOHaaPgKt812P9ab+DDKA==",
+ "version": "2.3.3",
+ "resolved": "https://registry.npmjs.org/fsevents/-/fsevents-2.3.3.tgz",
+ "integrity": "sha512-5xoDfX+fL7faATnagmWPpbFtwh/R77WmMMqqHGS65C3vvB0YHrgF+B1YmZ3441tMj5n63k0212XNoJwzlhffQw==",
"optional": true
},
"function-bind": {
@@ -11682,6 +13637,126 @@
"slash": "^3.0.0"
}
},
+ "glsl-inject-defines": {
+ "version": "1.0.3",
+ "resolved": "https://registry.npmjs.org/glsl-inject-defines/-/glsl-inject-defines-1.0.3.tgz",
+ "integrity": "sha512-W49jIhuDtF6w+7wCMcClk27a2hq8znvHtlGnrYkSWEr8tHe9eA2dcnohlcAmxLYBSpSSdzOkRdyPTrx9fw49+A==",
+ "requires": {
+ "glsl-token-inject-block": "^1.0.0",
+ "glsl-token-string": "^1.0.1",
+ "glsl-tokenizer": "^2.0.2"
+ }
+ },
+ "glsl-resolve": {
+ "version": "0.0.1",
+ "resolved": "https://registry.npmjs.org/glsl-resolve/-/glsl-resolve-0.0.1.tgz",
+ "integrity": "sha512-xxFNsfnhZTK9NBhzJjSBGX6IOqYpvBHxxmo+4vapiljyGNCY0Bekzn0firQkQrazK59c1hYxMDxYS8MDlhw4gA==",
+ "requires": {
+ "resolve": "^0.6.1",
+ "xtend": "^2.1.2"
+ },
+ "dependencies": {
+ "resolve": {
+ "version": "0.6.3",
+ "resolved": "https://registry.npmjs.org/resolve/-/resolve-0.6.3.tgz",
+ "integrity": "sha512-UHBY3viPlJKf85YijDUcikKX6tmF4SokIDp518ZDVT92JNDcG5uKIthaT/owt3Sar0lwtOafsQuwrg22/v2Dwg=="
+ }
+ }
+ },
+ "glsl-token-assignments": {
+ "version": "2.0.2",
+ "resolved": "https://registry.npmjs.org/glsl-token-assignments/-/glsl-token-assignments-2.0.2.tgz",
+ "integrity": "sha512-OwXrxixCyHzzA0U2g4btSNAyB2Dx8XrztY5aVUCjRSh4/D0WoJn8Qdps7Xub3sz6zE73W3szLrmWtQ7QMpeHEQ=="
+ },
+ "glsl-token-defines": {
+ "version": "1.0.0",
+ "resolved": "https://registry.npmjs.org/glsl-token-defines/-/glsl-token-defines-1.0.0.tgz",
+ "integrity": "sha512-Vb5QMVeLjmOwvvOJuPNg3vnRlffscq2/qvIuTpMzuO/7s5kT+63iL6Dfo2FYLWbzuiycWpbC0/KV0biqFwHxaQ==",
+ "requires": {
+ "glsl-tokenizer": "^2.0.0"
+ }
+ },
+ "glsl-token-depth": {
+ "version": "1.1.2",
+ "resolved": "https://registry.npmjs.org/glsl-token-depth/-/glsl-token-depth-1.1.2.tgz",
+ "integrity": "sha512-eQnIBLc7vFf8axF9aoi/xW37LSWd2hCQr/3sZui8aBJnksq9C7zMeUYHVJWMhFzXrBU7fgIqni4EhXVW4/krpg=="
+ },
+ "glsl-token-descope": {
+ "version": "1.0.2",
+ "resolved": "https://registry.npmjs.org/glsl-token-descope/-/glsl-token-descope-1.0.2.tgz",
+ "integrity": "sha512-kS2PTWkvi/YOeicVjXGgX5j7+8N7e56srNDEHDTVZ1dcESmbmpmgrnpjPcjxJjMxh56mSXYoFdZqb90gXkGjQw==",
+ "requires": {
+ "glsl-token-assignments": "^2.0.0",
+ "glsl-token-depth": "^1.1.0",
+ "glsl-token-properties": "^1.0.0",
+ "glsl-token-scope": "^1.1.0"
+ }
+ },
+ "glsl-token-inject-block": {
+ "version": "1.1.0",
+ "resolved": "https://registry.npmjs.org/glsl-token-inject-block/-/glsl-token-inject-block-1.1.0.tgz",
+ "integrity": "sha512-q/m+ukdUBuHCOtLhSr0uFb/qYQr4/oKrPSdIK2C4TD+qLaJvqM9wfXIF/OOBjuSA3pUoYHurVRNao6LTVVUPWA=="
+ },
+ "glsl-token-properties": {
+ "version": "1.0.1",
+ "resolved": "https://registry.npmjs.org/glsl-token-properties/-/glsl-token-properties-1.0.1.tgz",
+ "integrity": "sha512-dSeW1cOIzbuUoYH0y+nxzwK9S9O3wsjttkq5ij9ZGw0OS41BirKJzzH48VLm8qLg+au6b0sINxGC0IrGwtQUcA=="
+ },
+ "glsl-token-scope": {
+ "version": "1.1.2",
+ "resolved": "https://registry.npmjs.org/glsl-token-scope/-/glsl-token-scope-1.1.2.tgz",
+ "integrity": "sha512-YKyOMk1B/tz9BwYUdfDoHvMIYTGtVv2vbDSLh94PT4+f87z21FVdou1KNKgF+nECBTo0fJ20dpm0B1vZB1Q03A=="
+ },
+ "glsl-token-string": {
+ "version": "1.0.1",
+ "resolved": "https://registry.npmjs.org/glsl-token-string/-/glsl-token-string-1.0.1.tgz",
+ "integrity": "sha512-1mtQ47Uxd47wrovl+T6RshKGkRRCYWhnELmkEcUAPALWGTFe2XZpH3r45XAwL2B6v+l0KNsCnoaZCSnhzKEksg=="
+ },
+ "glsl-token-whitespace-trim": {
+ "version": "1.0.0",
+ "resolved": "https://registry.npmjs.org/glsl-token-whitespace-trim/-/glsl-token-whitespace-trim-1.0.0.tgz",
+ "integrity": "sha512-ZJtsPut/aDaUdLUNtmBYhaCmhIjpKNg7IgZSfX5wFReMc2vnj8zok+gB/3Quqs0TsBSX/fGnqUUYZDqyuc2xLQ=="
+ },
+ "glsl-tokenizer": {
+ "version": "2.1.5",
+ "resolved": "https://registry.npmjs.org/glsl-tokenizer/-/glsl-tokenizer-2.1.5.tgz",
+ "integrity": "sha512-XSZEJ/i4dmz3Pmbnpsy3cKh7cotvFlBiZnDOwnj/05EwNp2XrhQ4XKJxT7/pDt4kp4YcpRSKz8eTV7S+mwV6MA==",
+ "requires": {
+ "through2": "^0.6.3"
+ }
+ },
+ "glslify-bundle": {
+ "version": "5.1.1",
+ "resolved": "https://registry.npmjs.org/glslify-bundle/-/glslify-bundle-5.1.1.tgz",
+ "integrity": "sha512-plaAOQPv62M1r3OsWf2UbjN0hUYAB7Aph5bfH58VxJZJhloRNbxOL9tl/7H71K7OLJoSJ2ZqWOKk3ttQ6wy24A==",
+ "requires": {
+ "glsl-inject-defines": "^1.0.1",
+ "glsl-token-defines": "^1.0.0",
+ "glsl-token-depth": "^1.1.1",
+ "glsl-token-descope": "^1.0.2",
+ "glsl-token-scope": "^1.1.1",
+ "glsl-token-string": "^1.0.1",
+ "glsl-token-whitespace-trim": "^1.0.0",
+ "glsl-tokenizer": "^2.0.2",
+ "murmurhash-js": "^1.0.0",
+ "shallow-copy": "0.0.1"
+ }
+ },
+ "glslify-deps": {
+ "version": "1.3.2",
+ "resolved": "https://registry.npmjs.org/glslify-deps/-/glslify-deps-1.3.2.tgz",
+ "integrity": "sha512-7S7IkHWygJRjcawveXQjRXLO2FTjijPDYC7QfZyAQanY+yGLCFHYnPtsGT9bdyHiwPTw/5a1m1M9hamT2aBpag==",
+ "requires": {
+ "@choojs/findup": "^0.2.0",
+ "events": "^3.2.0",
+ "glsl-resolve": "0.0.1",
+ "glsl-tokenizer": "^2.0.0",
+ "graceful-fs": "^4.1.2",
+ "inherits": "^2.0.1",
+ "map-limit": "0.0.1",
+ "resolve": "^1.0.0"
+ }
+ },
"graceful-fs": {
"version": "4.2.11",
"resolved": "https://registry.npmjs.org/graceful-fs/-/graceful-fs-4.2.11.tgz",
@@ -11717,6 +13792,19 @@
}
}
},
+ "graphql": {
+ "version": "15.8.0",
+ "resolved": "https://registry.npmjs.org/graphql/-/graphql-15.8.0.tgz",
+ "integrity": "sha512-5gghUc24tP9HRznNpV2+FIoq3xKkj5dTQqf4v0CpdPbFVwFkWoxOM+o+2OC9ZSvjEMTjfmG9QT+gcvggTwW1zw=="
+ },
+ "graphql-import-macro": {
+ "version": "1.0.0",
+ "resolved": "https://registry.npmjs.org/graphql-import-macro/-/graphql-import-macro-1.0.0.tgz",
+ "integrity": "sha512-YK4g6iP60H++MpP93tb0VwOg7aM5iIC0hdSQKTrEDANeLWf0KFAT9dwlBeMDrhY+jcW7qsAEDtaw58cgVnQXAw==",
+ "requires": {
+ "graphql": "^15.0.0"
+ }
+ },
"has": {
"version": "1.0.3",
"resolved": "https://registry.npmjs.org/has/-/has-1.0.3.tgz",
@@ -11735,6 +13823,14 @@
"resolved": "https://registry.npmjs.org/has-symbols/-/has-symbols-1.0.3.tgz",
"integrity": "sha512-l3LCuF6MgDNwTDKkdYGEihYjt5pRPbEg46rtlmnSPlUbgmB8LOIrKJbYYFBSbnPaJexMKtiPO8hmeRjRz2Td+A=="
},
+ "has-tostringtag": {
+ "version": "1.0.2",
+ "resolved": "https://registry.npmjs.org/has-tostringtag/-/has-tostringtag-1.0.2.tgz",
+ "integrity": "sha512-NqADB8VjPFLM2V0VvHUewwwsw0ZWBaIdgo+ieHtK3hasLz4qeCRjYcqfB6AQrBggRKppKF8L52/VqdVsO47Dlw==",
+ "requires": {
+ "has-symbols": "^1.0.3"
+ }
+ },
"has-unicode": {
"version": "2.0.1",
"resolved": "https://registry.npmjs.org/has-unicode/-/has-unicode-2.0.1.tgz",
@@ -11836,10 +13932,16 @@
"resolved": "https://registry.npmjs.org/ignore/-/ignore-5.3.1.tgz",
"integrity": "sha512-5Fytz/IraMjqpwfd34ke28PTVMjZjJG2MPn5t7OE4eUCUNf8BAa7b5WUS9/Qvr6mwOQS7Mk6vdsMno5he+T8Xw=="
},
+ "image-size": {
+ "version": "0.5.5",
+ "resolved": "https://registry.npmjs.org/image-size/-/image-size-0.5.5.tgz",
+ "integrity": "sha512-6TDAlDPZxUFCv+fuOkIoXT/V/f3Qbq8e37p+YOiYrUv3v9cc3/6x78VdfPgFVaB9dZYeLUfKgHRebpkm/oP2VQ==",
+ "optional": true
+ },
"immutable": {
- "version": "4.1.0",
- "resolved": "https://registry.npmjs.org/immutable/-/immutable-4.1.0.tgz",
- "integrity": "sha512-oNkuqVTA8jqG1Q6c+UglTOD1xhC1BtjKI7XkCXRkZHrN5m18/XsnUp8Q89GkQO/z+0WjonSvl0FLhDYftp46nQ=="
+ "version": "4.3.6",
+ "resolved": "https://registry.npmjs.org/immutable/-/immutable-4.3.6.tgz",
+ "integrity": "sha512-Ju0+lEMyzMVZarkTn/gqRpdqd5dOPaz1mCZ0SH3JV6iFw81PldE/PEB1hWVEA288HPt4WXW8O7AWxB10M+03QQ=="
},
"import-fresh": {
"version": "3.3.0",
@@ -11911,6 +14013,15 @@
"has": "^1.0.3"
}
},
+ "is-expression": {
+ "version": "4.0.0",
+ "resolved": "https://registry.npmjs.org/is-expression/-/is-expression-4.0.0.tgz",
+ "integrity": "sha512-zMIXX63sxzG3XrkHkrAPvm/OVZVSCPNkwMHU8oTX7/U3AL78I0QXCEICXUM13BIa8TYGZ68PiTKfQz3yaTNr4A==",
+ "requires": {
+ "acorn": "^7.1.1",
+ "object-assign": "^4.1.1"
+ }
+ },
"is-extglob": {
"version": "2.1.1",
"resolved": "https://registry.npmjs.org/is-extglob/-/is-extglob-2.1.1.tgz",
@@ -11944,6 +14055,20 @@
"resolved": "https://registry.npmjs.org/is-promise/-/is-promise-4.0.0.tgz",
"integrity": "sha512-hvpoI6korhJMnej285dSg6nu1+e6uxs7zG3BYAm5byqDsgJNWwxzM6z6iZiAgQR4TJ30JmBTOwqZUw3WlyH3AQ=="
},
+ "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-what": {
+ "version": "3.14.1",
+ "resolved": "https://registry.npmjs.org/is-what/-/is-what-3.14.1.tgz",
+ "integrity": "sha512-sNxgpk9793nzSs7bA6JQJGeIuRBQhAaNGG77kzYQgMkrID+lS6SlK07K5LaptscDlSaIgH+GPFzf+d75FVxozA=="
+ },
"isarray": {
"version": "1.0.0",
"resolved": "https://registry.npmjs.org/isarray/-/isarray-1.0.0.tgz",
@@ -11954,6 +14079,16 @@
"resolved": "https://registry.npmjs.org/isbinaryfile/-/isbinaryfile-4.0.10.tgz",
"integrity": "sha512-iHrqe5shvBUcFbmZq9zOQHBoeOhZJu6RQGrDpBgenUm/Am+F3JM2MgQj+rK3Z601fzrL5gLZWtAPH2OBaSVcyw=="
},
+ "isexe": {
+ "version": "2.0.0",
+ "resolved": "https://registry.npmjs.org/isexe/-/isexe-2.0.0.tgz",
+ "integrity": "sha512-RHxMLp9lnKHGHRng9QFhRCMbYAcVpn69smSGcq3f36xjgVVWThj4qqLbTLlq7Ssj8B+fIQ1EuCEGI2lKsyQeIw=="
+ },
+ "js-stringify": {
+ "version": "1.0.2",
+ "resolved": "https://registry.npmjs.org/js-stringify/-/js-stringify-1.0.2.tgz",
+ "integrity": "sha512-rtS5ATOo2Q5k1G+DADISilDA6lv79zIiwFd6CcjuIxGKLFm5C+RLImRscVap9k55i+MOZwgliw+NejvkLuGD5g=="
+ },
"js-tokens": {
"version": "4.0.0",
"resolved": "https://registry.npmjs.org/js-tokens/-/js-tokens-4.0.0.tgz",
@@ -12026,14 +14161,22 @@
"jwa": "^1.4.1",
"safe-buffer": "^5.0.1"
}
- },
- "semver": {
- "version": "7.6.0",
- "resolved": "https://registry.npmjs.org/semver/-/semver-7.6.0.tgz",
- "integrity": "sha512-EnwXhrlwXMk9gKu5/flx5sv/an57AkRplG3hTK68W7FRDN+k+OWBj65M7719OkA82XLBxrcX0KSHj+X5COhOVg==",
- "requires": {
- "lru-cache": "^6.0.0"
- }
+ }
+ }
+ },
+ "jstransformer": {
+ "version": "1.0.0",
+ "resolved": "https://registry.npmjs.org/jstransformer/-/jstransformer-1.0.0.tgz",
+ "integrity": "sha512-C9YK3Rf8q6VAPDCCU9fnqo3mAfOH6vUGnMcP4AQAYIEpWtfGLpwOTmZ+igtdK5y+VvI2n3CyYSzy4Qh34eq24A==",
+ "requires": {
+ "is-promise": "^2.0.0",
+ "promise": "^7.0.1"
+ },
+ "dependencies": {
+ "is-promise": {
+ "version": "2.2.2",
+ "resolved": "https://registry.npmjs.org/is-promise/-/is-promise-2.2.2.tgz",
+ "integrity": "sha512-+lP4/6lKUBfQjZ2pdxThZvLUAafmZb8OAxFb8XXtiQmS35INgr85hdOGoEs124ez1FCnZJt6jau/T+alh58QFQ=="
}
}
},
@@ -12102,6 +14245,31 @@
}
}
},
+ "less": {
+ "version": "4.2.0",
+ "resolved": "https://registry.npmjs.org/less/-/less-4.2.0.tgz",
+ "integrity": "sha512-P3b3HJDBtSzsXUl0im2L7gTO5Ubg8mEN6G8qoTS77iXxXX4Hvu4Qj540PZDvQ8V6DmX6iXo98k7Md0Cm1PrLaA==",
+ "requires": {
+ "copy-anything": "^2.0.1",
+ "errno": "^0.1.1",
+ "graceful-fs": "^4.1.2",
+ "image-size": "~0.5.0",
+ "make-dir": "^2.1.0",
+ "mime": "^1.4.1",
+ "needle": "^3.1.0",
+ "parse-node-version": "^1.0.1",
+ "source-map": "~0.6.0",
+ "tslib": "^2.3.0"
+ },
+ "dependencies": {
+ "mime": {
+ "version": "1.6.0",
+ "resolved": "https://registry.npmjs.org/mime/-/mime-1.6.0.tgz",
+ "integrity": "sha512-x0Vn8spI+wuJ1O6S7gnbaQg8Pxh4NNHb7KSINmEWKiPE4RKOplvijn+NkmYmmRgP68mc70j2EbeTFRsrswaQeg==",
+ "optional": true
+ }
+ }
+ },
"lightningcss": {
"version": "1.23.0",
"resolved": "https://registry.npmjs.org/lightningcss/-/lightningcss-1.23.0.tgz",
@@ -12263,12 +14431,48 @@
"resolved": "https://registry.npmjs.org/long/-/long-5.2.3.tgz",
"integrity": "sha512-lcHwpNoggQTObv5apGNCTdJrO69eHOZMi4BNC+rTLER8iHAqGrUVeLh/irVIM7zTw2bOXA8T6uNPeujwOLg/2Q=="
},
- "lru-cache": {
- "version": "6.0.0",
- "resolved": "https://registry.npmjs.org/lru-cache/-/lru-cache-6.0.0.tgz",
- "integrity": "sha512-Jo6dJ04CmSjuznwJSS3pUeWmd/H0ffTlkXXgwZi+eq1UCmqQwCh+eLsYOYCwY991i2Fah4h1BEMCx4qThGbsiA==",
+ "magic-string": {
+ "version": "0.30.10",
+ "resolved": "https://registry.npmjs.org/magic-string/-/magic-string-0.30.10.tgz",
+ "integrity": "sha512-iIRwTIf0QKV3UAnYK4PU8uiEc4SRh5jX0mwpIwETPpHdhVM4f53RSwS/vXvN1JhGX+Cs7B8qIq3d6AH49O5fAQ==",
"requires": {
- "yallist": "^4.0.0"
+ "@jridgewell/sourcemap-codec": "^1.4.15"
+ }
+ },
+ "make-dir": {
+ "version": "2.1.0",
+ "resolved": "https://registry.npmjs.org/make-dir/-/make-dir-2.1.0.tgz",
+ "integrity": "sha512-LS9X+dc8KLxXCb8dni79fLIIUA5VyZoyjSMCwTluaXA0o27cCK0bhXkpgw+sTXVpPy/lSO57ilRixqk0vDmtRA==",
+ "optional": true,
+ "requires": {
+ "pify": "^4.0.1",
+ "semver": "^5.6.0"
+ },
+ "dependencies": {
+ "semver": {
+ "version": "5.7.2",
+ "resolved": "https://registry.npmjs.org/semver/-/semver-5.7.2.tgz",
+ "integrity": "sha512-cBznnQ9KjJqU67B52RMC65CMarK2600WFnbkcaiwWq3xy/5haFJlshgnpjovMVJ+Hff49d8GEn0b87C5pDQ10g==",
+ "optional": true
+ }
+ }
+ },
+ "map-limit": {
+ "version": "0.0.1",
+ "resolved": "https://registry.npmjs.org/map-limit/-/map-limit-0.0.1.tgz",
+ "integrity": "sha512-pJpcfLPnIF/Sk3taPW21G/RQsEEirGaFpCW3oXRwH9dnFHPHNGjNyvh++rdmC2fNqEaTw2MhYJraoJWAHx8kEg==",
+ "requires": {
+ "once": "~1.3.0"
+ },
+ "dependencies": {
+ "once": {
+ "version": "1.3.3",
+ "resolved": "https://registry.npmjs.org/once/-/once-1.3.3.tgz",
+ "integrity": "sha512-6vaNInhu+CHxtONf3zw3vq4SP2DOQhjBvIa3rNcG0+P7eKWlYH6Peu7rHizSloRU2EwMz6GraLieis9Ac9+p1w==",
+ "requires": {
+ "wrappy": "1"
+ }
+ }
}
},
"material-design-lite": {
@@ -12318,9 +14522,14 @@
}
},
"mikro-orm": {
- "version": "6.2.5",
- "resolved": "https://registry.npmjs.org/mikro-orm/-/mikro-orm-6.2.5.tgz",
- "integrity": "sha512-8GJulcYlawnMbXHch4/HTKDg8u0Q6p4l1Jfyn0WmaN4lMz/XXTuLQTZMSdHhISXUjf9/aQdVkmRPxvKog47pVA=="
+ "version": "6.2.9",
+ "resolved": "https://registry.npmjs.org/mikro-orm/-/mikro-orm-6.2.9.tgz",
+ "integrity": "sha512-zpP8D7Lw8Q2WYwd43iFQI+5e0zPUM+vEAAyJaGE87RzSiQwchqZNPuV/H74STNJYqj8mLSvwZxFvRzrQXsCRRw=="
+ },
+ "mime": {
+ "version": "2.6.0",
+ "resolved": "https://registry.npmjs.org/mime/-/mime-2.6.0.tgz",
+ "integrity": "sha512-USPkMeET31rOMiarsBNIHZKLGgvKc/LrjofAnBlOttf5ajRvqiRA8QsenbcooctK6d6Ts6aqZXBA+XbkKthiQg=="
},
"mime-db": {
"version": "1.52.0",
@@ -12355,6 +14564,11 @@
"brace-expansion": "^1.1.7"
}
},
+ "minimist": {
+ "version": "1.2.8",
+ "resolved": "https://registry.npmjs.org/minimist/-/minimist-1.2.8.tgz",
+ "integrity": "sha512-2yyAR8qBkN3YuheJanUpWC5U3bb5osDywNB8RzDVlDwDHbocAJveqqj1u8+SVD7jkWT4yvsHCpWqqWqAxb0zCA=="
+ },
"minipass": {
"version": "5.0.0",
"resolved": "https://registry.npmjs.org/minipass/-/minipass-5.0.0.tgz",
@@ -12385,9 +14599,9 @@
"integrity": "sha512-vVqVZQyf3WLx2Shd0qJ9xuvqgAyKPLAiqITEtqW0oIUjzo3PePDd6fW9iFz30ef7Ysp/oiWqbhszeGWW2T6Gzw=="
},
"mongodb": {
- "version": "6.6.0",
- "resolved": "https://registry.npmjs.org/mongodb/-/mongodb-6.6.0.tgz",
- "integrity": "sha512-LoR0hel6y1i7pubPOzbflccdc89RDOapIGqwce4aenOfhhLKOqiQ2F4yQHP+Hqa7TuPhpVqDVjixbvUSx7R0rQ==",
+ "version": "6.7.0",
+ "resolved": "https://registry.npmjs.org/mongodb/-/mongodb-6.7.0.tgz",
+ "integrity": "sha512-TMKyHdtMcO0fYBNORiYdmM25ijsHs+Njs963r4Tro4OQZzqYigAzYQouwWRg4OIaiLRUEGUh/1UAcH5lxdSLIA==",
"requires": {
"@mongodb-js/saslprep": "^1.1.5",
"bson": "^6.7.0",
@@ -12395,9 +14609,9 @@
}
},
"mongodb-connection-string-url": {
- "version": "3.0.0",
- "resolved": "https://registry.npmjs.org/mongodb-connection-string-url/-/mongodb-connection-string-url-3.0.0.tgz",
- "integrity": "sha512-t1Vf+m1I5hC2M5RJx/7AtxgABy1cZmIPQRMXw+gEIPn/cZNF3Oiy+l0UIypUwVB5trcWHq3crg2g3uAR9aAwsQ==",
+ "version": "3.0.1",
+ "resolved": "https://registry.npmjs.org/mongodb-connection-string-url/-/mongodb-connection-string-url-3.0.1.tgz",
+ "integrity": "sha512-XqMGwRX0Lgn05TDB4PyG2h2kKO/FfWJyCzYQbIhXUxz7ETt0I/FqHjUeqj37irJ+Dl1ZtU82uYyj14u2XsZKfg==",
"requires": {
"@types/whatwg-url": "^11.0.2",
"whatwg-url": "^13.0.0"
@@ -12439,6 +14653,40 @@
}
}
},
+ "multer": {
+ "version": "1.4.5-lts.1",
+ "resolved": "https://registry.npmjs.org/multer/-/multer-1.4.5-lts.1.tgz",
+ "integrity": "sha512-ywPWvcDMeH+z9gQq5qYHCCy+ethsk4goepZ45GLD63fOu0YcNecQxi64nDs3qluZB+murG3/D4dJ7+dGctcCQQ==",
+ "requires": {
+ "append-field": "^1.0.0",
+ "busboy": "^1.0.0",
+ "concat-stream": "^1.5.2",
+ "mkdirp": "^0.5.4",
+ "object-assign": "^4.1.1",
+ "type-is": "^1.6.4",
+ "xtend": "^4.0.0"
+ },
+ "dependencies": {
+ "mkdirp": {
+ "version": "0.5.6",
+ "resolved": "https://registry.npmjs.org/mkdirp/-/mkdirp-0.5.6.tgz",
+ "integrity": "sha512-FP+p8RB8OWpF3YZBCrP5gtADmtXApB5AMLn+vdyA+PyxCjrCs00mjyUozssO33cwDeT3wNGdLxJ5M//YqtHAJw==",
+ "requires": {
+ "minimist": "^1.2.6"
+ }
+ },
+ "xtend": {
+ "version": "4.0.2",
+ "resolved": "https://registry.npmjs.org/xtend/-/xtend-4.0.2.tgz",
+ "integrity": "sha512-LKYU1iAXJXUgAXn9URjiu+MWhyUXHsvfp7mcuYm9dSUKK0/CjtrUwFAxD82/mCWbtLsGjFIad0wIsod4zrTAEQ=="
+ }
+ }
+ },
+ "murmurhash-js": {
+ "version": "1.0.0",
+ "resolved": "https://registry.npmjs.org/murmurhash-js/-/murmurhash-js-1.0.0.tgz",
+ "integrity": "sha512-TvmkNhkv8yct0SVBSy+o8wYzXjE4Zz3PCesbfs8HiCXXdcTuocApFv11UWlNFWKYsP2okqrhb7JNlSm9InBhIw=="
+ },
"mustache": {
"version": "4.2.0",
"resolved": "https://registry.npmjs.org/mustache/-/mustache-4.2.0.tgz",
@@ -12494,16 +14742,98 @@
"resolved": "https://registry.npmjs.org/nanoid/-/nanoid-2.1.11.tgz",
"integrity": "sha512-s/snB+WGm6uwi0WjsZdaVcuf3KJXlfGl2LcxgwkEwJF0D/BWzVWAZW/XY4bFaiR7s0Jk3FPvlnepg1H1b1UwlA=="
},
+ "needle": {
+ "version": "3.3.1",
+ "resolved": "https://registry.npmjs.org/needle/-/needle-3.3.1.tgz",
+ "integrity": "sha512-6k0YULvhpw+RoLNiQCRKOl09Rv1dPLr8hHnVjHqdolKwDrdNyk+Hmrthi4lIGPPz3r39dLx0hsF5s40sZ3Us4Q==",
+ "optional": true,
+ "requires": {
+ "iconv-lite": "^0.6.3",
+ "sax": "^1.2.4"
+ },
+ "dependencies": {
+ "iconv-lite": {
+ "version": "0.6.3",
+ "resolved": "https://registry.npmjs.org/iconv-lite/-/iconv-lite-0.6.3.tgz",
+ "integrity": "sha512-4fCk79wshMdzMp2rH06qWrJE4iolqLhCUH+OiuIgU++RB0+94NlDL81atO7GX55uUKueo0txHNtvEyI6D7WdMw==",
+ "optional": true,
+ "requires": {
+ "safer-buffer": ">= 2.1.2 < 3.0.0"
+ }
+ }
+ }
+ },
"negotiator": {
"version": "0.6.3",
"resolved": "https://registry.npmjs.org/negotiator/-/negotiator-0.6.3.tgz",
"integrity": "sha512-+EUsqGPLsM+j/zdChZjsnX51g4XrHFOIXwfnCVPGlQk/k5giakcKsuxCObBRu6DSm9opw/O6slWbJdghQM4bBg=="
},
+ "nice-try": {
+ "version": "1.0.5",
+ "resolved": "https://registry.npmjs.org/nice-try/-/nice-try-1.0.5.tgz",
+ "integrity": "sha512-1nh45deeb5olNY7eX82BkPO7SSxR5SSYJiPTrTdFUVYwAl8CKMA5N9PjTYkHiRjisVcxcQ1HXdLhx2qxxJzLNQ=="
+ },
"node-addon-api": {
"version": "7.1.0",
"resolved": "https://registry.npmjs.org/node-addon-api/-/node-addon-api-7.1.0.tgz",
"integrity": "sha512-mNcltoe1R8o7STTegSOHdnJNN7s5EUvhoS7ShnTHDyOSd+8H+UdWODq6qSv67PjC8Zc5JRT8+oLAMCr0SIXw7g=="
},
+ "node-elm-compiler": {
+ "version": "5.0.6",
+ "resolved": "https://registry.npmjs.org/node-elm-compiler/-/node-elm-compiler-5.0.6.tgz",
+ "integrity": "sha512-DWTRQR8b54rvschcZRREdsz7K84lnS8A6YJu8du3QLQ8f204SJbyTaA6NzYYbfUG97OTRKRv/0KZl82cTfpLhA==",
+ "requires": {
+ "cross-spawn": "6.0.5",
+ "find-elm-dependencies": "^2.0.4",
+ "lodash": "^4.17.19",
+ "temp": "^0.9.0"
+ },
+ "dependencies": {
+ "cross-spawn": {
+ "version": "6.0.5",
+ "resolved": "https://registry.npmjs.org/cross-spawn/-/cross-spawn-6.0.5.tgz",
+ "integrity": "sha512-eTVLrBSt7fjbDygz805pMnstIs2VTBNkRm0qxZd+M7A5XDdxVRWO5MxGBXZhjY4cqLYLdtrGqRf8mBPmzwSpWQ==",
+ "requires": {
+ "nice-try": "^1.0.4",
+ "path-key": "^2.0.1",
+ "semver": "^5.5.0",
+ "shebang-command": "^1.2.0",
+ "which": "^1.2.9"
+ }
+ },
+ "path-key": {
+ "version": "2.0.1",
+ "resolved": "https://registry.npmjs.org/path-key/-/path-key-2.0.1.tgz",
+ "integrity": "sha512-fEHGKCSmUSDPv4uoj8AlD+joPlq3peND+HRYyxFz4KPw4z926S/b8rIuFs2FYJg3BwsxJf6A9/3eIdLaYC+9Dw=="
+ },
+ "semver": {
+ "version": "5.7.2",
+ "resolved": "https://registry.npmjs.org/semver/-/semver-5.7.2.tgz",
+ "integrity": "sha512-cBznnQ9KjJqU67B52RMC65CMarK2600WFnbkcaiwWq3xy/5haFJlshgnpjovMVJ+Hff49d8GEn0b87C5pDQ10g=="
+ },
+ "shebang-command": {
+ "version": "1.2.0",
+ "resolved": "https://registry.npmjs.org/shebang-command/-/shebang-command-1.2.0.tgz",
+ "integrity": "sha512-EV3L1+UQWGor21OmnvojK36mhg+TyIKDh3iFBKBohr5xeXIhNBcx8oWdgkTEEQ+BEFFYdLRuqMfd5L84N1V5Vg==",
+ "requires": {
+ "shebang-regex": "^1.0.0"
+ }
+ },
+ "shebang-regex": {
+ "version": "1.0.0",
+ "resolved": "https://registry.npmjs.org/shebang-regex/-/shebang-regex-1.0.0.tgz",
+ "integrity": "sha512-wpoSFAxys6b2a2wHZ1XpDSgD7N9iVjg29Ph9uV/uaP9Ex/KXlkTZTeddxDPSYQpgvzKLGJke2UU0AzoGCjNIvQ=="
+ },
+ "which": {
+ "version": "1.3.1",
+ "resolved": "https://registry.npmjs.org/which/-/which-1.3.1.tgz",
+ "integrity": "sha512-HxJdYWq1MTIQbJ3nw0cqssHoTNU267KlrDuGZ1WYlxDStUtKUhOaJmh112/TZmHxxUfuJqPXSOm7tDyas0OSIQ==",
+ "requires": {
+ "isexe": "^2.0.0"
+ }
+ }
+ }
+ },
"node-fetch": {
"version": "2.7.0",
"resolved": "https://registry.npmjs.org/node-fetch/-/node-fetch-2.7.0.tgz",
@@ -12559,9 +14889,9 @@
"integrity": "sha512-PiVXnNuFm5+iYkLBNeq5211hvO38y63T0i2KKh2KnUs3RpzJ+JtODFjkD8yjLwnDkTYF1eKXheUwdssR+NRZdg=="
},
"nodemailer": {
- "version": "6.9.13",
- "resolved": "https://registry.npmjs.org/nodemailer/-/nodemailer-6.9.13.tgz",
- "integrity": "sha512-7o38Yogx6krdoBf3jCAqnIN4oSQFx+fMa0I7dK1D+me9kBxx12D+/33wSb+fhOCtIxvYJ+4x4IMEhmhCKfAiOA=="
+ "version": "6.9.14",
+ "resolved": "https://registry.npmjs.org/nodemailer/-/nodemailer-6.9.14.tgz",
+ "integrity": "sha512-Dobp/ebDKBvz91sbtRKhcznLThrKxKt97GI2FAlAyy+fk19j73Uz3sBXolVtmcXjaorivqsbbbjDY+Jkt4/bQA=="
},
"nopt": {
"version": "5.0.0",
@@ -12678,6 +15008,11 @@
"lines-and-columns": "^1.1.6"
}
},
+ "parse-node-version": {
+ "version": "1.0.1",
+ "resolved": "https://registry.npmjs.org/parse-node-version/-/parse-node-version-1.0.1.tgz",
+ "integrity": "sha512-3YHlOa/JgH6Mnpr05jP9eDG254US9ek25LyIxZlDItp2iJtwyaXQb57lBYLdT3MowkUFYEV2XXNAYIPlESvJlA=="
+ },
"parseurl": {
"version": "1.3.3",
"resolved": "https://registry.npmjs.org/parseurl/-/parseurl-1.3.3.tgz",
@@ -12688,6 +15023,11 @@
"resolved": "https://registry.npmjs.org/path-is-absolute/-/path-is-absolute-1.0.1.tgz",
"integrity": "sha512-AVbw3UJ2e9bq64vSaS9Am0fje1Pa8pbGqTTsmXfaIiMpnr5DlDhfJOuLj9Sf95ZPVDAUerDfEk88MPmPe7UCQg=="
},
+ "path-key": {
+ "version": "3.1.1",
+ "resolved": "https://registry.npmjs.org/path-key/-/path-key-3.1.1.tgz",
+ "integrity": "sha512-ojmeN0qd+y0jszEtoY48r0Peq5dwMEkIlCOu6Q5f41lfkswXuKtYrhgoTpLnyIcHm24Uhqx+5Tqm2InSwLhE6Q=="
+ },
"path-parse": {
"version": "1.0.7",
"resolved": "https://registry.npmjs.org/path-parse/-/path-parse-1.0.7.tgz",
@@ -12729,11 +15069,34 @@
"resolved": "https://registry.npmjs.org/picomatch/-/picomatch-2.3.1.tgz",
"integrity": "sha512-JU3teHTNjmE2VCGFzuY8EXzCDVwEqB2a8fsIvwaStHhAWJEeVd1o1QD80CU6+ZdEXXSLbSsuLwJjkCBWqRQUVA=="
},
+ "pify": {
+ "version": "4.0.1",
+ "resolved": "https://registry.npmjs.org/pify/-/pify-4.0.1.tgz",
+ "integrity": "sha512-uB80kBFb/tfd68bVleG9T5GGsGPjJrLAUpR5PZIrhBnIaRTQRjqdJSsIKkOP6OAIFbj7GOrcudc5pNjZ+geV2g==",
+ "optional": true
+ },
"poly-decomp": {
"version": "0.1.1",
"resolved": "https://registry.npmjs.org/poly-decomp/-/poly-decomp-0.1.1.tgz",
"integrity": "sha512-clSDtuC48FR2PL2z/+VIRhfnxC7776GlJgDNAh1ZIqYOiaGqrINB+xGIWQypLgpz6Z/Ht/w7rTFEGFRNuSPOuA=="
},
+ "postcss": {
+ "version": "8.4.38",
+ "resolved": "https://registry.npmjs.org/postcss/-/postcss-8.4.38.tgz",
+ "integrity": "sha512-Wglpdk03BSfXkHoQa3b/oulrotAkwrlLDRSOb9D0bN86FdRyE9lppSp33aHNPgBa0JKCoB+drFLZkQoRRYae5A==",
+ "requires": {
+ "nanoid": "^3.3.7",
+ "picocolors": "^1.0.0",
+ "source-map-js": "^1.2.0"
+ },
+ "dependencies": {
+ "nanoid": {
+ "version": "3.3.7",
+ "resolved": "https://registry.npmjs.org/nanoid/-/nanoid-3.3.7.tgz",
+ "integrity": "sha512-eSRppjcPIatRIMC1U6UngP8XFcz8MQWGQdt1MTBQ7NaAmvXDfvNxbvWV3x2y6CdEUciCSsDHDQZbhYaB8QEo2g=="
+ }
+ }
+ },
"postcss-value-parser": {
"version": "4.2.0",
"resolved": "https://registry.npmjs.org/postcss-value-parser/-/postcss-value-parser-4.2.0.tgz",
@@ -12779,10 +15142,18 @@
"resolved": "https://registry.npmjs.org/process-nextick-args/-/process-nextick-args-2.0.1.tgz",
"integrity": "sha512-3ouUOpQhtgrbOa17J7+uxOTpITYWaGP7/AhoR3+A+/1e9skrzelGi/dXzEYyvbxubEF6Wn2ypscTKiKJFFn1ag=="
},
+ "promise": {
+ "version": "7.3.1",
+ "resolved": "https://registry.npmjs.org/promise/-/promise-7.3.1.tgz",
+ "integrity": "sha512-nolQXZ/4L+bP/UGlkfaIujX9BKxGwmQ9OT4mOt5yvy8iK1h3wqTEJCijzGANTCCl9nWjY41juyAn2K3Q1hLLTg==",
+ "requires": {
+ "asap": "~2.0.3"
+ }
+ },
"protobufjs": {
- "version": "7.3.0",
- "resolved": "https://registry.npmjs.org/protobufjs/-/protobufjs-7.3.0.tgz",
- "integrity": "sha512-YWD03n3shzV9ImZRX3ccbjqLxj7NokGN0V/ESiBV5xWqrommYHYiihuIyavq03pWSGqlyvYUFmfoMKd+1rPA/g==",
+ "version": "7.3.2",
+ "resolved": "https://registry.npmjs.org/protobufjs/-/protobufjs-7.3.2.tgz",
+ "integrity": "sha512-RXyHaACeqXeqAKGLDl68rQKbmObRsTIn4TYVUUug1KfS47YWCo5MacGITEryugIgZqORCvJWEk4l449POg5Txg==",
"requires": {
"@protobufjs/aspromise": "^1.1.2",
"@protobufjs/base64": "^1.1.2",
@@ -12812,6 +15183,124 @@
"resolved": "https://registry.npmjs.org/proxy-from-env/-/proxy-from-env-1.1.0.tgz",
"integrity": "sha512-D+zkORCbA9f1tdWRK0RaCR3GPv50cMxcrz4X8k5LTSUD1Dkw47mKJEZQNunItRTkWwgtaUSo1RVFRIG9ZXiFYg=="
},
+ "prr": {
+ "version": "1.0.1",
+ "resolved": "https://registry.npmjs.org/prr/-/prr-1.0.1.tgz",
+ "integrity": "sha512-yPw4Sng1gWghHQWj0B3ZggWUm4qVbPwPFcRG8KyxiU7J2OHFSoEHKS+EZ3fv5l1t9CyCiop6l/ZYeWbrgoQejw==",
+ "optional": true
+ },
+ "pug": {
+ "version": "3.0.3",
+ "resolved": "https://registry.npmjs.org/pug/-/pug-3.0.3.tgz",
+ "integrity": "sha512-uBi6kmc9f3SZ3PXxqcHiUZLmIXgfgWooKWXcwSGwQd2Zi5Rb0bT14+8CJjJgI8AB+nndLaNgHGrcc6bPIB665g==",
+ "requires": {
+ "pug-code-gen": "^3.0.3",
+ "pug-filters": "^4.0.0",
+ "pug-lexer": "^5.0.1",
+ "pug-linker": "^4.0.0",
+ "pug-load": "^3.0.0",
+ "pug-parser": "^6.0.0",
+ "pug-runtime": "^3.0.1",
+ "pug-strip-comments": "^2.0.0"
+ }
+ },
+ "pug-attrs": {
+ "version": "3.0.0",
+ "resolved": "https://registry.npmjs.org/pug-attrs/-/pug-attrs-3.0.0.tgz",
+ "integrity": "sha512-azINV9dUtzPMFQktvTXciNAfAuVh/L/JCl0vtPCwvOA21uZrC08K/UnmrL+SXGEVc1FwzjW62+xw5S/uaLj6cA==",
+ "requires": {
+ "constantinople": "^4.0.1",
+ "js-stringify": "^1.0.2",
+ "pug-runtime": "^3.0.0"
+ }
+ },
+ "pug-code-gen": {
+ "version": "3.0.3",
+ "resolved": "https://registry.npmjs.org/pug-code-gen/-/pug-code-gen-3.0.3.tgz",
+ "integrity": "sha512-cYQg0JW0w32Ux+XTeZnBEeuWrAY7/HNE6TWnhiHGnnRYlCgyAUPoyh9KzCMa9WhcJlJ1AtQqpEYHc+vbCzA+Aw==",
+ "requires": {
+ "constantinople": "^4.0.1",
+ "doctypes": "^1.1.0",
+ "js-stringify": "^1.0.2",
+ "pug-attrs": "^3.0.0",
+ "pug-error": "^2.1.0",
+ "pug-runtime": "^3.0.1",
+ "void-elements": "^3.1.0",
+ "with": "^7.0.0"
+ }
+ },
+ "pug-error": {
+ "version": "2.1.0",
+ "resolved": "https://registry.npmjs.org/pug-error/-/pug-error-2.1.0.tgz",
+ "integrity": "sha512-lv7sU9e5Jk8IeUheHata6/UThZ7RK2jnaaNztxfPYUY+VxZyk/ePVaNZ/vwmH8WqGvDz3LrNYt/+gA55NDg6Pg=="
+ },
+ "pug-filters": {
+ "version": "4.0.0",
+ "resolved": "https://registry.npmjs.org/pug-filters/-/pug-filters-4.0.0.tgz",
+ "integrity": "sha512-yeNFtq5Yxmfz0f9z2rMXGw/8/4i1cCFecw/Q7+D0V2DdtII5UvqE12VaZ2AY7ri6o5RNXiweGH79OCq+2RQU4A==",
+ "requires": {
+ "constantinople": "^4.0.1",
+ "jstransformer": "1.0.0",
+ "pug-error": "^2.0.0",
+ "pug-walk": "^2.0.0",
+ "resolve": "^1.15.1"
+ }
+ },
+ "pug-lexer": {
+ "version": "5.0.1",
+ "resolved": "https://registry.npmjs.org/pug-lexer/-/pug-lexer-5.0.1.tgz",
+ "integrity": "sha512-0I6C62+keXlZPZkOJeVam9aBLVP2EnbeDw3An+k0/QlqdwH6rv8284nko14Na7c0TtqtogfWXcRoFE4O4Ff20w==",
+ "requires": {
+ "character-parser": "^2.2.0",
+ "is-expression": "^4.0.0",
+ "pug-error": "^2.0.0"
+ }
+ },
+ "pug-linker": {
+ "version": "4.0.0",
+ "resolved": "https://registry.npmjs.org/pug-linker/-/pug-linker-4.0.0.tgz",
+ "integrity": "sha512-gjD1yzp0yxbQqnzBAdlhbgoJL5qIFJw78juN1NpTLt/mfPJ5VgC4BvkoD3G23qKzJtIIXBbcCt6FioLSFLOHdw==",
+ "requires": {
+ "pug-error": "^2.0.0",
+ "pug-walk": "^2.0.0"
+ }
+ },
+ "pug-load": {
+ "version": "3.0.0",
+ "resolved": "https://registry.npmjs.org/pug-load/-/pug-load-3.0.0.tgz",
+ "integrity": "sha512-OCjTEnhLWZBvS4zni/WUMjH2YSUosnsmjGBB1An7CsKQarYSWQ0GCVyd4eQPMFJqZ8w9xgs01QdiZXKVjk92EQ==",
+ "requires": {
+ "object-assign": "^4.1.1",
+ "pug-walk": "^2.0.0"
+ }
+ },
+ "pug-parser": {
+ "version": "6.0.0",
+ "resolved": "https://registry.npmjs.org/pug-parser/-/pug-parser-6.0.0.tgz",
+ "integrity": "sha512-ukiYM/9cH6Cml+AOl5kETtM9NR3WulyVP2y4HOU45DyMim1IeP/OOiyEWRr6qk5I5klpsBnbuHpwKmTx6WURnw==",
+ "requires": {
+ "pug-error": "^2.0.0",
+ "token-stream": "1.0.0"
+ }
+ },
+ "pug-runtime": {
+ "version": "3.0.1",
+ "resolved": "https://registry.npmjs.org/pug-runtime/-/pug-runtime-3.0.1.tgz",
+ "integrity": "sha512-L50zbvrQ35TkpHwv0G6aLSuueDRwc/97XdY8kL3tOT0FmhgG7UypU3VztfV/LATAvmUfYi4wNxSajhSAeNN+Kg=="
+ },
+ "pug-strip-comments": {
+ "version": "2.0.0",
+ "resolved": "https://registry.npmjs.org/pug-strip-comments/-/pug-strip-comments-2.0.0.tgz",
+ "integrity": "sha512-zo8DsDpH7eTkPHCXFeAk1xZXJbyoTfdPlNR0bK7rpOMuhBYb0f5qUVCO1xlsitYd3w5FQTK7zpNVKb3rZoUrrQ==",
+ "requires": {
+ "pug-error": "^2.0.0"
+ }
+ },
+ "pug-walk": {
+ "version": "2.0.0",
+ "resolved": "https://registry.npmjs.org/pug-walk/-/pug-walk-2.0.0.tgz",
+ "integrity": "sha512-yYELe9Q5q9IQhuvqsZNwA5hfPkMJ8u92bQLIMcsMxf/VADjNtEYptU+inlufAFYcWdHlwNfZOEnOOQrZrcyJCQ=="
+ },
"punycode": {
"version": "2.3.1",
"resolved": "https://registry.npmjs.org/punycode/-/punycode-2.3.1.tgz",
@@ -12982,15 +15471,26 @@
"integrity": "sha512-YZo3K82SD7Riyi0E1EQPojLz7kpepnSQI9IyPbHHg1XXXevb5dJI7tpyN2ADxGcQbHG7vcyRHk0cbwqcQriUtg=="
},
"sass": {
- "version": "1.56.1",
- "resolved": "https://registry.npmjs.org/sass/-/sass-1.56.1.tgz",
- "integrity": "sha512-VpEyKpyBPCxE7qGDtOcdJ6fFbcpOM+Emu7uZLxVrkX8KVU/Dp5UF7WLvzqRuUhB6mqqQt1xffLoG+AndxTZrCQ==",
+ "version": "1.77.4",
+ "resolved": "https://registry.npmjs.org/sass/-/sass-1.77.4.tgz",
+ "integrity": "sha512-vcF3Ckow6g939GMA4PeU7b2K/9FALXk2KF9J87txdHzXbUF9XRQRwSxcAs/fGaTnJeBFd7UoV22j3lzMLdM0Pw==",
"requires": {
"chokidar": ">=3.0.0 <4.0.0",
"immutable": "^4.0.0",
"source-map-js": ">=0.6.2 <2.0.0"
}
},
+ "sax": {
+ "version": "1.4.1",
+ "resolved": "https://registry.npmjs.org/sax/-/sax-1.4.1.tgz",
+ "integrity": "sha512-+aWOz7yVScEGoKNd4PA10LZ8sk0A/z5+nXQG5giUO5rprX9jgYsTdov9qCchZiPIZezbZH+jRut8nPodFAX4Jg==",
+ "optional": true
+ },
+ "semver": {
+ "version": "7.6.2",
+ "resolved": "https://registry.npmjs.org/semver/-/semver-7.6.2.tgz",
+ "integrity": "sha512-FNAIBWCx9qcRhoHcgcJ0gvU7SN1lYU2ZXuSfl04bSC5OpvDHFyJCjdNHomPXxjQlCBU67YW64PzY7/VIEH7F2w=="
+ },
"send": {
"version": "0.18.0",
"resolved": "https://registry.npmjs.org/send/-/send-0.18.0.tgz",
@@ -13059,6 +15559,11 @@
"resolved": "https://registry.npmjs.org/setprototypeof/-/setprototypeof-1.2.0.tgz",
"integrity": "sha512-E5LDX7Wrp85Kil5bhZv46j8jOeboKq5JMmYM3gVGdGH8xFpPWXUMsNrlODCrkoxMEeNi/XZIwuRvY4XNwYMJpw=="
},
+ "shallow-copy": {
+ "version": "0.0.1",
+ "resolved": "https://registry.npmjs.org/shallow-copy/-/shallow-copy-0.0.1.tgz",
+ "integrity": "sha512-b6i4ZpVuUxB9h5gfCxPiusKYkqTMOjEbBs4wMaFbkfia4yFv92UKZ6Df8WXcKbn08JNL/abvg3FnMAOfakDvUw=="
+ },
"sharp": {
"version": "0.33.3",
"resolved": "https://registry.npmjs.org/sharp/-/sharp-0.33.3.tgz",
@@ -13092,17 +15597,22 @@
"version": "2.0.3",
"resolved": "https://registry.npmjs.org/detect-libc/-/detect-libc-2.0.3.tgz",
"integrity": "sha512-bwy0MGW55bG41VqxxypOsdSdGqLwXPI/focwgTYCFMbdUiBAxLg9CFzG08sz2aqzknwiX7Hkl0bQENjg8iLByw=="
- },
- "semver": {
- "version": "7.6.0",
- "resolved": "https://registry.npmjs.org/semver/-/semver-7.6.0.tgz",
- "integrity": "sha512-EnwXhrlwXMk9gKu5/flx5sv/an57AkRplG3hTK68W7FRDN+k+OWBj65M7719OkA82XLBxrcX0KSHj+X5COhOVg==",
- "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",
+ "integrity": "sha512-kHxr2zZpYtdmrN1qDjrrX/Z1rR1kG8Dx+gkpK1G4eXmvXswmcE1hTWBWYUzlraYw1/yZp6YuDY77YtvbN0dmDA==",
+ "requires": {
+ "shebang-regex": "^3.0.0"
+ }
+ },
+ "shebang-regex": {
+ "version": "3.0.0",
+ "resolved": "https://registry.npmjs.org/shebang-regex/-/shebang-regex-3.0.0.tgz",
+ "integrity": "sha512-7++dFhtcx3353uBaq8DDR4NuxBetBzC7ZQOhmTQInHEd6bSrXdiEyzCvG07Z44UYdLShWUyXt5M/yhz8ekcb1A=="
+ },
"side-channel": {
"version": "1.0.4",
"resolved": "https://registry.npmjs.org/side-channel/-/side-channel-1.0.4.tgz",
@@ -13138,10 +15648,33 @@
"resolved": "https://registry.npmjs.org/slash/-/slash-3.0.0.tgz",
"integrity": "sha512-g9Q1haeby36OSStwb4ntCGGGaKsaVSjQ68fBxoQcutl5fS1vuY18H3wSt3jFyFtrkx+Kz0V1G85A4MyAdDMi2Q=="
},
+ "source-map": {
+ "version": "0.6.1",
+ "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.6.1.tgz",
+ "integrity": "sha512-UjgapumWlbMhkBgzT7Ykc5YXUT46F0iKu8SGXq0bcwP5dz/h0Plj6enJqjz1Zbq2l5WaqYnrVbwWOWMyF3F47g=="
+ },
"source-map-js": {
- "version": "1.0.2",
- "resolved": "https://registry.npmjs.org/source-map-js/-/source-map-js-1.0.2.tgz",
- "integrity": "sha512-R0XvVJ9WusLiqTCEiGCmICCMplcCkIwwR11mOSD9CR5u+IXYdiseeEuXCVAjS54zqwkLcPNnmU4OeJ6tUrWhDw=="
+ "version": "1.2.0",
+ "resolved": "https://registry.npmjs.org/source-map-js/-/source-map-js-1.2.0.tgz",
+ "integrity": "sha512-itJW8lvSA0TXEphiRoawsCksnlf8SyvmFzIhltqAHluXd88pkCd+cXJVHTDwdCr0IzwptSm035IHQktUu1QUMg=="
+ },
+ "source-map-resolve": {
+ "version": "0.6.0",
+ "resolved": "https://registry.npmjs.org/source-map-resolve/-/source-map-resolve-0.6.0.tgz",
+ "integrity": "sha512-KXBr9d/fO/bWo97NXsPIAW1bFSBOuCnjbNTBMO7N59hsv5i9yzRDfcYwwt0l04+VqnKC+EwzvJZIP/qkuMgR/w==",
+ "requires": {
+ "atob": "^2.1.2",
+ "decode-uri-component": "^0.2.0"
+ }
+ },
+ "source-map-support": {
+ "version": "0.5.21",
+ "resolved": "https://registry.npmjs.org/source-map-support/-/source-map-support-0.5.21.tgz",
+ "integrity": "sha512-uBHU3L3czsIyYXKX88fdrGovxdSCoTGDRZ6SYXtSRxLZUzHg5P/66Ht6uoUlHu9EZod+inXhKo3qQgwXUT/y1w==",
+ "requires": {
+ "buffer-from": "^1.0.0",
+ "source-map": "^0.6.0"
+ }
},
"sparse-bitfield": {
"version": "3.0.3",
@@ -13151,6 +15684,11 @@
"memory-pager": "^1.0.2"
}
},
+ "sprintf-js": {
+ "version": "1.0.3",
+ "resolved": "https://registry.npmjs.org/sprintf-js/-/sprintf-js-1.0.3.tgz",
+ "integrity": "sha512-D9cPgkvLlV3t3IzL0D0YLvGA9Ahk4PcvVwUbN0dSGr1aP0Nrt4AEnTUbuGvquEC0mA64Gqt1fzirlRs5ibXx8g=="
+ },
"sqlstring": {
"version": "2.3.1",
"resolved": "https://registry.npmjs.org/sqlstring/-/sqlstring-2.3.1.tgz",
@@ -13176,6 +15714,11 @@
"resolved": "https://registry.npmjs.org/statuses/-/statuses-2.0.1.tgz",
"integrity": "sha512-RwNA9Z/7PrK06rYLIzFMlaF+l73iwpzsqRIFgbMLbTcLD6cOao82TaWefPXQvB2fOC4AjuYSEndS7N/mTCbkdQ=="
},
+ "streamsearch": {
+ "version": "1.1.0",
+ "resolved": "https://registry.npmjs.org/streamsearch/-/streamsearch-1.1.0.tgz",
+ "integrity": "sha512-Mcc5wHehp9aXz1ax6bZUyY5afg9u2rv5cqQI3mRrYkGC8rW2hM02jWuwjtL++LS5qinSyhj2QfLyNsuc+VsExg=="
+ },
"string_decoder": {
"version": "1.3.0",
"resolved": "https://registry.npmjs.org/string_decoder/-/string_decoder-1.3.0.tgz",
@@ -13202,6 +15745,59 @@
"ansi-regex": "^5.0.1"
}
},
+ "stylus": {
+ "version": "0.55.0",
+ "resolved": "https://registry.npmjs.org/stylus/-/stylus-0.55.0.tgz",
+ "integrity": "sha512-MuzIIVRSbc8XxHH7FjkvWqkIcr1BvoMZoR/oFuAJDlh7VSaNJzrB4uJ38GRQa+mWjLXODAMzeDe0xi9GYbGwnw==",
+ "requires": {
+ "css": "^3.0.0",
+ "debug": "~3.1.0",
+ "glob": "^7.1.6",
+ "mkdirp": "~1.0.4",
+ "safer-buffer": "^2.1.2",
+ "sax": "~1.2.4",
+ "semver": "^6.3.0",
+ "source-map": "^0.7.3"
+ },
+ "dependencies": {
+ "debug": {
+ "version": "3.1.0",
+ "resolved": "https://registry.npmjs.org/debug/-/debug-3.1.0.tgz",
+ "integrity": "sha512-OX8XqP7/1a9cqkxYw2yXss15f26NKWBpDXQd0/uK/KPqdQhxbPa994hnzjcE2VqQpDslf55723cKPUOGSmMY3g==",
+ "requires": {
+ "ms": "2.0.0"
+ }
+ },
+ "ms": {
+ "version": "2.0.0",
+ "resolved": "https://registry.npmjs.org/ms/-/ms-2.0.0.tgz",
+ "integrity": "sha512-Tpp60P6IUJDTuOq/5Z8cdskzJujfwqfOTkrwIwj7IRISpnkJnT6SyJ4PCPnGMoFjC9ddhal5KVIYtAt97ix05A=="
+ },
+ "sax": {
+ "version": "1.2.4",
+ "resolved": "https://registry.npmjs.org/sax/-/sax-1.2.4.tgz",
+ "integrity": "sha512-NqVDv9TpANUjFm0N8uM5GxL36UgKi9/atZw+x7YFnQ8ckwFGKrl4xX4yWtrey3UJm5nP1kUbnYgLopqWNSRhWw=="
+ },
+ "semver": {
+ "version": "6.3.1",
+ "resolved": "https://registry.npmjs.org/semver/-/semver-6.3.1.tgz",
+ "integrity": "sha512-BR7VvDCVHO+q2xBEWskxS6DJE1qRnb7DxzUrogb71CWoSficBxYsiAGd+Kl0mmq/MprG9yArRkyrQxTO6XjMzA=="
+ },
+ "source-map": {
+ "version": "0.7.4",
+ "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.7.4.tgz",
+ "integrity": "sha512-l3BikUxvPOcn5E74dZiq5BGsTb5yEwhaTSzccU6t4sDOH8NWJCstKO5QT2CvtFoK6F0saL7p9xHAqHOlCPJygA=="
+ }
+ }
+ },
+ "sugarss": {
+ "version": "3.0.3",
+ "resolved": "https://registry.npmjs.org/sugarss/-/sugarss-3.0.3.tgz",
+ "integrity": "sha512-uxa2bbuc+w7ov7DyYIhF6bM0qZF3UkFT5/nE8AJgboiVnKsBDbwxs++dehEIe1JNhpMaGJc37wGQ2QrrWey2Sg==",
+ "requires": {
+ "postcss": "^8.1.6"
+ }
+ },
"superagent": {
"version": "3.8.3",
"resolved": "https://registry.npmjs.org/superagent/-/superagent-3.8.3.tgz",
@@ -13288,15 +15884,6 @@
"css-what": "^6.1.0",
"csso": "^5.0.5",
"picocolors": "^1.0.0"
- },
- "dependencies": {
- "commander": {
- "version": "7.2.0",
- "resolved": "https://registry.npmjs.org/commander/-/commander-7.2.0.tgz",
- "integrity": "sha512-QrWXB+ZQSVPmIWIhtEO9H+gwHaMGYiF5ChvoJ+K9ZGHG/sVsa6yiesAD1GC/x46sET00Xlwo1u49RVVVzvcSkw==",
- "optional": true,
- "peer": true
- }
}
},
"tar": {
@@ -13317,6 +15904,93 @@
"resolved": "https://registry.npmjs.org/tarn/-/tarn-3.0.2.tgz",
"integrity": "sha512-51LAVKUSZSVfI05vjPESNc5vwqqZpbXCsU+/+wxlOrUjk2SnFTt97v9ZgQrD4YmxYW1Px6w2KjaDitCfkvgxMQ=="
},
+ "temp": {
+ "version": "0.9.4",
+ "resolved": "https://registry.npmjs.org/temp/-/temp-0.9.4.tgz",
+ "integrity": "sha512-yYrrsWnrXMcdsnu/7YMYAofM1ktpL5By7vZhf15CrXijWWrEYZks5AXBudalfSWJLlnen/QUJUB5aoB0kqZUGA==",
+ "requires": {
+ "mkdirp": "^0.5.1",
+ "rimraf": "~2.6.2"
+ },
+ "dependencies": {
+ "mkdirp": {
+ "version": "0.5.6",
+ "resolved": "https://registry.npmjs.org/mkdirp/-/mkdirp-0.5.6.tgz",
+ "integrity": "sha512-FP+p8RB8OWpF3YZBCrP5gtADmtXApB5AMLn+vdyA+PyxCjrCs00mjyUozssO33cwDeT3wNGdLxJ5M//YqtHAJw==",
+ "requires": {
+ "minimist": "^1.2.6"
+ }
+ },
+ "rimraf": {
+ "version": "2.6.3",
+ "resolved": "https://registry.npmjs.org/rimraf/-/rimraf-2.6.3.tgz",
+ "integrity": "sha512-mwqeW5XsA2qAejG46gYdENaxXjx9onRNCfn7L0duuP4hCuTIi/QO7PDK07KJfp1d+izWPrzEJDcSqBa0OZQriA==",
+ "requires": {
+ "glob": "^7.1.3"
+ }
+ }
+ }
+ },
+ "terser": {
+ "version": "5.31.1",
+ "resolved": "https://registry.npmjs.org/terser/-/terser-5.31.1.tgz",
+ "integrity": "sha512-37upzU1+viGvuFtBo9NPufCb9dwM0+l9hMxYyWfBA+fbwrPqNJAhbZ6W47bBFnZHKHTUBnMvi87434qq+qnxOg==",
+ "requires": {
+ "@jridgewell/source-map": "^0.3.3",
+ "acorn": "^8.8.2",
+ "commander": "^2.20.0",
+ "source-map-support": "~0.5.20"
+ },
+ "dependencies": {
+ "acorn": {
+ "version": "8.11.3",
+ "resolved": "https://registry.npmjs.org/acorn/-/acorn-8.11.3.tgz",
+ "integrity": "sha512-Y9rRfJG5jcKOE0CLisYbojUjIrIEE7AGMzA/Sm4BslANhbS+cDMpgBdcPT91oJ7OuJ9hYJBx59RjbhxVnrF8Xg=="
+ },
+ "commander": {
+ "version": "2.20.3",
+ "resolved": "https://registry.npmjs.org/commander/-/commander-2.20.3.tgz",
+ "integrity": "sha512-GpVkmM8vF2vQUkj2LvZmD35JxeJOLCwJ9cUkugyk2nuhbv3+mJvpLYYt+0+USMxE+oj+ey/lJEnhZw75x/OMcQ=="
+ }
+ }
+ },
+ "through2": {
+ "version": "0.6.5",
+ "resolved": "https://registry.npmjs.org/through2/-/through2-0.6.5.tgz",
+ "integrity": "sha512-RkK/CCESdTKQZHdmKICijdKKsCRVHs5KsLZ6pACAmF/1GPUQhonHSXWNERctxEp7RmvjdNbZTL5z9V7nSCXKcg==",
+ "requires": {
+ "readable-stream": ">=1.0.33-1 <1.1.0-0",
+ "xtend": ">=4.0.0 <4.1.0-0"
+ },
+ "dependencies": {
+ "isarray": {
+ "version": "0.0.1",
+ "resolved": "https://registry.npmjs.org/isarray/-/isarray-0.0.1.tgz",
+ "integrity": "sha512-D2S+3GLxWH+uhrNEcoh/fnmYeP8E8/zHl644d/jdA0g2uyXvy3sb0qxotE+ne0LtccHknQzWwZEzhak7oJ0COQ=="
+ },
+ "readable-stream": {
+ "version": "1.0.34",
+ "resolved": "https://registry.npmjs.org/readable-stream/-/readable-stream-1.0.34.tgz",
+ "integrity": "sha512-ok1qVCJuRkNmvebYikljxJA/UEsKwLl2nI1OmaqAu4/UE+h0wKCHok4XkL/gvi39OacXvw59RJUOFUkDib2rHg==",
+ "requires": {
+ "core-util-is": "~1.0.0",
+ "inherits": "~2.0.1",
+ "isarray": "0.0.1",
+ "string_decoder": "~0.10.x"
+ }
+ },
+ "string_decoder": {
+ "version": "0.10.31",
+ "resolved": "https://registry.npmjs.org/string_decoder/-/string_decoder-0.10.31.tgz",
+ "integrity": "sha512-ev2QzSzWPYmy9GuqfIVildA4OdcGLeFZQrq5ys6RtiuF+RQQiZWr8TZNyAcuVXyQRYfEO+MsoB/1BuQVhOJuoQ=="
+ },
+ "xtend": {
+ "version": "4.0.2",
+ "resolved": "https://registry.npmjs.org/xtend/-/xtend-4.0.2.tgz",
+ "integrity": "sha512-LKYU1iAXJXUgAXn9URjiu+MWhyUXHsvfp7mcuYm9dSUKK0/CjtrUwFAxD82/mCWbtLsGjFIad0wIsod4zrTAEQ=="
+ }
+ }
+ },
"tildify": {
"version": "2.0.0",
"resolved": "https://registry.npmjs.org/tildify/-/tildify-2.0.0.tgz",
@@ -13327,6 +16001,11 @@
"resolved": "https://registry.npmjs.org/timsort/-/timsort-0.3.0.tgz",
"integrity": "sha512-qsdtZH+vMoCARQtyod4imc2nIJwg9Cc7lPRrw9CzF8ZKR0khdr8+2nX80PBhET3tcyTtJDxAffGh2rXH4tyU8A=="
},
+ "to-fast-properties": {
+ "version": "2.0.0",
+ "resolved": "https://registry.npmjs.org/to-fast-properties/-/to-fast-properties-2.0.0.tgz",
+ "integrity": "sha512-/OaKK0xYrs3DmxRYqL/yDc+FxFUVYhDlXMhRmv3z915w2HF1tnN1omB354j8VUGO/hbRzyD6Y3sA7v7GS/ceog=="
+ },
"to-regex-range": {
"version": "5.0.1",
"resolved": "https://registry.npmjs.org/to-regex-range/-/to-regex-range-5.0.1.tgz",
@@ -13340,6 +16019,11 @@
"resolved": "https://registry.npmjs.org/toidentifier/-/toidentifier-1.0.1.tgz",
"integrity": "sha512-o5sSPKEkg/DIQNmH43V0/uerLrpzVedkUh8tGNvaeXpfpuwjKenlSox/2O/BTlZUtEe+JG7s5YhEz608PlAHRA=="
},
+ "token-stream": {
+ "version": "1.0.0",
+ "resolved": "https://registry.npmjs.org/token-stream/-/token-stream-1.0.0.tgz",
+ "integrity": "sha512-VSsyNPPW74RpHwR8Fc21uubwHY7wMDeJLys2IX5zJNih+OnAnaifKHo+1LHT7DAdloQ7apeaaWg8l7qnf/TnEg=="
+ },
"tr46": {
"version": "4.1.1",
"resolved": "https://registry.npmjs.org/tr46/-/tr46-4.1.1.tgz",
@@ -13349,9 +16033,9 @@
}
},
"tslib": {
- "version": "2.6.2",
- "resolved": "https://registry.npmjs.org/tslib/-/tslib-2.6.2.tgz",
- "integrity": "sha512-AEYxH93jGFPn/a2iVAwW87VuUIkR1FVUKB77NwMF7nBTDkDrrT/Hpt/IrCJ0QXhW27jTBDcf5ZY7w6RiqTMw2Q=="
+ "version": "2.6.3",
+ "resolved": "https://registry.npmjs.org/tslib/-/tslib-2.6.3.tgz",
+ "integrity": "sha512-xNvxJEOUiWPGhUuUdQgAJPKOOJfGnIyKySOc09XkKsgdUV/3E2zvwZYdejjmRgPCgcym1juLH3226yA7sEFJKQ=="
},
"type-fest": {
"version": "0.20.2",
@@ -13367,6 +16051,17 @@
"mime-types": "~2.1.24"
}
},
+ "typedarray": {
+ "version": "0.0.6",
+ "resolved": "https://registry.npmjs.org/typedarray/-/typedarray-0.0.6.tgz",
+ "integrity": "sha512-/aCDEGatGvZ2BIk+HmLf4ifCJFwvKFNb9/JeZPMulfgFracn9QFcAf5GO8B/mweUjSoblS5In0cWhqpfs/5PQA=="
+ },
+ "typescript": {
+ "version": "5.4.5",
+ "resolved": "https://registry.npmjs.org/typescript/-/typescript-5.4.5.tgz",
+ "integrity": "sha512-vcI4UpRgg81oIRUFwR0WSIHKt11nJ7SAVlYNIu+QpqeyXP+gpQJy/Z4+F0aGxSE4MqwjyXvW/TzgkLAx2AGHwQ==",
+ "peer": true
+ },
"uid-safe": {
"version": "2.1.5",
"resolved": "https://registry.npmjs.org/uid-safe/-/uid-safe-2.1.5.tgz",
@@ -13435,6 +16130,11 @@
"resolved": "https://registry.npmjs.org/vary/-/vary-1.1.2.tgz",
"integrity": "sha512-BNGbWLfd0eUPabhkXUVm0j8uuvREyTh5ovRa/dyow/BqAbZJyC+5fU+IzQOzmAKzYqYRAISoRhdQr3eIZ/PXqg=="
},
+ "void-elements": {
+ "version": "3.1.0",
+ "resolved": "https://registry.npmjs.org/void-elements/-/void-elements-3.1.0.tgz",
+ "integrity": "sha512-Dhxzh5HZuiHQhbvTW9AMetFfBHDMYpo23Uo9btPXgdYP+3T5S+p+jgNy7spra+veYhBP2dCSgxR/i2Y02h5/6w=="
+ },
"weak-lru-cache": {
"version": "1.2.2",
"resolved": "https://registry.npmjs.org/weak-lru-cache/-/weak-lru-cache-1.2.2.tgz",
@@ -13469,6 +16169,14 @@
"webidl-conversions": "^7.0.0"
}
},
+ "which": {
+ "version": "2.0.2",
+ "resolved": "https://registry.npmjs.org/which/-/which-2.0.2.tgz",
+ "integrity": "sha512-BLI3Tl1TW3Pvl70l3yq3Y64i+awpwXqsGBYWkkqMtnbXgrMD+yj7rhW0kuEDxzJaYXGjEW5ogapKNMEKNMjibA==",
+ "requires": {
+ "isexe": "^2.0.0"
+ }
+ },
"wide-align": {
"version": "1.1.5",
"resolved": "https://registry.npmjs.org/wide-align/-/wide-align-1.1.5.tgz",
@@ -13477,6 +16185,17 @@
"string-width": "^1.0.2 || 2 || 3 || 4"
}
},
+ "with": {
+ "version": "7.0.2",
+ "resolved": "https://registry.npmjs.org/with/-/with-7.0.2.tgz",
+ "integrity": "sha512-RNGKj82nUPg3g5ygxkQl0R937xLyho1J24ItRCBTr/m1YnZkzJy1hUiHUJrc/VlsDQzsCnInEGSg3bci0Lmd4w==",
+ "requires": {
+ "@babel/parser": "^7.9.6",
+ "@babel/types": "^7.9.6",
+ "assert-never": "^1.2.1",
+ "babel-walk": "3.0.0-canary-5"
+ }
+ },
"wrap-ansi": {
"version": "7.0.0",
"resolved": "https://registry.npmjs.org/wrap-ansi/-/wrap-ansi-7.0.0.tgz",
@@ -13493,11 +16212,16 @@
"integrity": "sha512-l4Sp/DRseor9wL6EvV2+TuQn63dMkPjZ/sp9XkghTEbV9KlPS1xUsZ3u7/IQO4wxtcFB4bgpQPRcR3QCvezPcQ=="
},
"ws": {
- "version": "7.5.9",
- "resolved": "https://registry.npmjs.org/ws/-/ws-7.5.9.tgz",
- "integrity": "sha512-F+P9Jil7UiSKSkppIiD94dN07AwvFixvLIj1Og1Rl9GGMuNipJnV9JzjD6XuqmAeiswGvUmNLjr5cFuXwNS77Q==",
+ "version": "7.5.10",
+ "resolved": "https://registry.npmjs.org/ws/-/ws-7.5.10.tgz",
+ "integrity": "sha512-+dbF1tHwZpXcbOJdVOkzLDxZP1ailvSxM6ZweXTegylPny803bFhA+vqBYw4s31NSAk4S2Qz+AKXK9a4wkdjcQ==",
"requires": {}
},
+ "xtend": {
+ "version": "2.2.0",
+ "resolved": "https://registry.npmjs.org/xtend/-/xtend-2.2.0.tgz",
+ "integrity": "sha512-SLt5uylT+4aoXxXuwtQp5ZnMMzhDb1Xkg4pEqc00WUJCQifPfV9Ub1VrNhp9kXkrjZD2I2Hl8WnjP37jzZLPZw=="
+ },
"y18n": {
"version": "5.0.8",
"resolved": "https://registry.npmjs.org/y18n/-/y18n-5.0.8.tgz",
diff --git a/package.json b/package.json
index 4c21595b8..93673f482 100644
--- a/package.json
+++ b/package.json
@@ -1,6 +1,6 @@
{
"name": "reldens",
- "version": "4.0.0-beta.35",
+ "version": "4.0.0-beta.36",
"description": "Reldens - MMORPG Platform",
"author": "Damian A. Pastorini",
"license": "MIT",
@@ -43,59 +43,74 @@
},
"dependencies": {
"@colyseus/monitor": "0.15.6",
- "@colyseus/schema": "2.0.32",
+ "@colyseus/schema": "2.0.34",
"@colyseus/ws-transport": "0.15.2",
- "@parcel/bundler-default": "2.11.0",
- "@parcel/compressor-raw": "2.11.0",
- "@parcel/config-default": "2.11.0",
- "@parcel/core": "2.11.0",
- "@parcel/namer-default": "2.11.0",
- "@parcel/optimizer-css": "2.11.0",
- "@parcel/optimizer-data-url": "2.11.0",
- "@parcel/optimizer-htmlnano": "2.11.0",
- "@parcel/optimizer-image": "2.11.0",
- "@parcel/optimizer-svgo": "2.11.0",
- "@parcel/optimizer-swc": "2.11.0",
- "@parcel/packager-css": "2.11.0",
- "@parcel/packager-html": "2.11.0",
- "@parcel/packager-js": "2.11.0",
- "@parcel/packager-raw": "2.11.0",
- "@parcel/packager-raw-url": "2.11.0",
- "@parcel/packager-svg": "2.11.0",
- "@parcel/packager-wasm": "2.11.0",
- "@parcel/reporter-dev-server": "2.11.0",
- "@parcel/resolver-default": "2.11.0",
- "@parcel/runtime-browser-hmr": "2.11.0",
- "@parcel/runtime-js": "2.11.0",
- "@parcel/runtime-react-refresh": "2.11.0",
- "@parcel/runtime-service-worker": "2.11.0",
- "@parcel/transformer-babel": "2.11.0",
- "@parcel/transformer-css": "2.11.0",
- "@parcel/transformer-html": "2.11.0",
- "@parcel/transformer-image": "2.11.0",
- "@parcel/transformer-inline-string": "2.11.0",
- "@parcel/transformer-js": "2.11.0",
- "@parcel/transformer-json": "2.11.0",
- "@parcel/transformer-postcss": "2.11.0",
- "@parcel/transformer-posthtml": "2.11.0",
- "@parcel/transformer-raw": "2.11.0",
- "@parcel/transformer-react-refresh-wrap": "2.11.0",
- "@parcel/transformer-sass": "2.11.0",
- "@parcel/transformer-svg": "2.11.0",
- "@parcel/transformer-webmanifest": "2.11.0",
- "@parcel/transformer-worklet": "2.11.0",
+ "@parcel/bundler-default": "2.12.0",
+ "@parcel/compressor-raw": "2.12.0",
+ "@parcel/core": "2.12.0",
+ "@parcel/namer-default": "2.12.0",
+ "@parcel/optimizer-css": "2.12.0",
+ "@parcel/optimizer-data-url": "2.12.0",
+ "@parcel/optimizer-htmlnano": "2.12.0",
+ "@parcel/optimizer-image": "2.12.0",
+ "@parcel/optimizer-svgo": "2.12.0",
+ "@parcel/optimizer-swc": "2.12.0",
+ "@parcel/packager-css": "2.12.0",
+ "@parcel/packager-html": "2.12.0",
+ "@parcel/packager-js": "2.12.0",
+ "@parcel/packager-raw": "2.12.0",
+ "@parcel/packager-raw-url": "2.12.0",
+ "@parcel/packager-svg": "2.12.0",
+ "@parcel/packager-ts": "2.12.0",
+ "@parcel/packager-wasm": "2.12.0",
+ "@parcel/packager-xml": "2.12.0",
+ "@parcel/reporter-dev-server": "2.12.0",
+ "@parcel/resolver-default": "2.12.0",
+ "@parcel/runtime-browser-hmr": "2.12.0",
+ "@parcel/runtime-js": "2.12.0",
+ "@parcel/runtime-react-refresh": "2.12.0",
+ "@parcel/runtime-service-worker": "2.12.0",
+ "@parcel/transformer-babel": "2.12.0",
+ "@parcel/transformer-coffeescript": "2.12.0",
+ "@parcel/transformer-css": "2.12.0",
+ "@parcel/transformer-elm": "2.12.0",
+ "@parcel/transformer-glsl": "2.12.0",
+ "@parcel/transformer-graphql": "2.12.0",
+ "@parcel/transformer-html": "2.12.0",
+ "@parcel/transformer-image": "2.12.0",
+ "@parcel/transformer-inline-string": "2.12.0",
+ "@parcel/transformer-js": "2.12.0",
+ "@parcel/transformer-json": "2.12.0",
+ "@parcel/transformer-jsonld": "2.12.0",
+ "@parcel/transformer-less": "2.12.0",
+ "@parcel/transformer-postcss": "2.12.0",
+ "@parcel/transformer-posthtml": "2.12.0",
+ "@parcel/transformer-pug": "2.12.0",
+ "@parcel/transformer-raw": "2.12.0",
+ "@parcel/transformer-react-refresh-wrap": "2.12.0",
+ "@parcel/transformer-sass": "2.12.0",
+ "@parcel/transformer-stylus": "2.12.0",
+ "@parcel/transformer-sugarss": "2.12.0",
+ "@parcel/transformer-svg": "2.12.0",
+ "@parcel/transformer-toml": "2.12.0",
+ "@parcel/transformer-typescript-types": "2.12.0",
+ "@parcel/transformer-vue": "2.12.0",
+ "@parcel/transformer-webmanifest": "2.12.0",
+ "@parcel/transformer-worklet": "2.12.0",
+ "@parcel/transformer-xml": "2.12.0",
+ "@parcel/transformer-yaml": "2.12.0",
"@reldens/game-data-generator": "^0.8.0",
"@reldens/items-system": "^0.27.0",
"@reldens/modifiers": "^0.22.0",
- "@reldens/skills": "^0.26.0",
- "@reldens/storage": "^0.24.0",
+ "@reldens/skills": "^0.27.0",
+ "@reldens/storage": "^0.25.0",
"@reldens/tile-map-generator": "^0.13.0",
- "@reldens/utils": "^0.32.0",
+ "@reldens/utils": "^0.33.0",
"@sendgrid/mail": "8.1.3",
"bcrypt": "5.1.1",
"body-parser": "1.20.2",
"colyseus": "0.15.17",
- "colyseus.js": "0.15.22",
+ "colyseus.js": "0.15.25",
"core-js": "3.37.1",
"cors": "2.8.5",
"dotenv": "16.4.5",
@@ -104,15 +119,16 @@
"express-formidable": "1.2.0",
"express-rate-limit": "7.3.0",
"express-session": "1.18.0",
- "firebase": "10.12.2",
+ "firebase": "10.12.3",
"firebaseui": "6.1.0",
"mime-types": "2.1.35",
+ "multer": "^1.4.5-lts.1",
"mustache": "4.2.0",
- "nodemailer": "6.9.13",
+ "nodemailer": "6.9.14",
"p2": "0.7.1",
"pathfinding": "0.4.18",
"phaser": "3.80.1",
"regenerator-runtime": "0.14.1",
- "tslib": "2.6.2"
+ "tslib": "2.6.3"
}
}
diff --git a/theme/admin/reldens-admin-client.js b/theme/admin/reldens-admin-client.js
new file mode 100644
index 000000000..33fb75a49
--- /dev/null
+++ b/theme/admin/reldens-admin-client.js
@@ -0,0 +1,50 @@
+/**
+ *
+ * Reldens - Index
+ *
+ */
+
+window.addEventListener('DOMContentLoaded', () => {
+ // delete forms confirmation:
+ let forms = document.querySelectorAll('.form-delete');
+ if(forms){
+ for(let deleteForm of forms){
+ deleteForm.addEventListener('submit', (event) => {
+ if(!confirm('Are you sure?')){
+ event.preventDefault();
+ }
+ });
+ }
+ }
+ // sidebar headers click behavior:
+ let sideBarHeaders = document.querySelectorAll('.with-sub-items h3');
+ if(sideBarHeaders){
+ for(let header of sideBarHeaders){
+ header.addEventListener('click', (event) => {
+ event.currentTarget.parentNode.classList.toggle('active');
+ });
+ }
+ }
+ // expand menu on load:
+ let location = window.location;
+ let currentPath = location.pathname;
+ let subItemContainers = document.querySelectorAll('.with-sub-items');
+ if(subItemContainers){
+ let done = false;
+ for(let container of subItemContainers){
+ let links = container.querySelectorAll('.side-bar-item a');
+ for(let link of links){
+ let linkWithoutHost = link.href.replace(location.host, '').replace(location.protocol+'//', '');
+ if(currentPath === linkWithoutHost){
+ link.parentNode.classList.add('active');
+ container.classList.add('active');
+ done = true;
+ break;
+ }
+ }
+ if(done){
+ break;
+ }
+ }
+ }
+});
diff --git a/theme/admin/reldens-admin-client.scss b/theme/admin/reldens-admin-client.scss
new file mode 100644
index 000000000..a6ba9ce5b
--- /dev/null
+++ b/theme/admin/reldens-admin-client.scss
@@ -0,0 +1,503 @@
+/*
+ * Reldens - Administration Panel
+ */
+
+$normalFont: Verdana, Geneva, sans-serif;
+$reldensFont: "Play", sans-serif;
+$bold: 600;
+$black: #000000;
+$white: #ffffff;
+$red: #ff0000;
+$darkGrey: #333333;
+$grey: #7f8c8d;
+$lightGrey: #ecf0f1;
+$lightGrey2: #f9f9f9;
+$lightBlue: #3498db;
+$darkBlue: #34495e;
+
+
+.reldens-admin-panel {
+ font-family: $normalFont;
+ background-color: $lightGrey;
+ margin: 0;
+ padding: 0;
+ font-size: 12px;
+
+ .wrapper {
+ display: flex;
+ flex-direction: column;
+ min-height: 100vh;
+ }
+
+ .header {
+ background-color: $darkGrey;
+ padding: 1.5rem;
+ text-align: center;
+
+ .title a {
+ color: $white;
+ text-decoration: none;
+ font-size: 24px;
+ font-weight: $bold;
+ font-family: $reldensFont;
+ }
+ }
+
+ .content {
+ display: flex;
+ }
+
+ .button {
+
+ padding: 0.5rem 1rem;
+ border: none;
+ border-radius: 4px;
+ font-size: 14px;
+ cursor: pointer;
+ text-decoration: none;
+
+ &-primary {
+ color: $white;
+ background-color: $lightBlue;
+
+ &:hover {
+ background-color: $lightBlue;
+ }
+ }
+
+ &-secondary {
+ color: $white;
+ background-color: $grey;
+
+ &:hover {
+ background-color: $grey;
+ }
+ }
+
+ &-danger {
+ color: $white;
+ background-color: $red;
+
+ &:hover {
+ background-color: $red;
+ }
+ }
+ }
+
+ .side-bar {
+ min-width: 230px;
+ padding: 1.4rem;
+ background-color: $darkBlue;
+ color: $lightGrey;
+ box-shadow: 2px 0 5px rgba(0, 0, 0, 0.1);
+ }
+
+ .with-sub-items {
+ &.active {
+ .side-bar-item {
+ display: block;
+
+ &:first-of-type {
+ margin-top: 1rem;
+ }
+
+ &.active {
+ a {
+ border-left: 3px solid $white;
+ }
+ }
+ }
+ }
+
+ .side-bar-item {
+ display: none;
+
+ a {
+ display: block;
+ color: $lightGrey;
+ text-decoration: none;
+ border-left: 3px solid transparent;
+ font-size: 12px;
+ border-left: 3px solid #0000;
+ padding: 0.1rem 0.1rem 0.1rem 1rem;
+ margin-top: 0.3rem;
+ margin-bottom: 0.5rem;
+
+ &:hover, &:focus, &:active {
+ background-color: $darkBlue;
+ border-left: 3px solid $lightBlue;
+ }
+ }
+ }
+ }
+
+ .side-bar-item {
+ margin-bottom: 0.2rem;
+
+ &:first-child {
+ h3 {
+ margin-top: 0;
+ }
+ }
+
+ h3, a {
+ display: block;
+ margin: 1rem 0 0;
+ border: none;
+ padding: 0;
+ color: $lightGrey;
+ text-decoration: none;
+ cursor: pointer;
+ font-size: 14px;
+ font-weight: 400;
+ border-bottom: 1px solid $darkBlue;
+
+ &:hover {
+ font-weight: $bold;
+ }
+ }
+ }
+
+ .user-area {
+ margin-top: 1.5rem;
+ }
+
+ .main-content {
+ padding: 2rem;
+ background-color: $white;
+ box-shadow: 0 2px 10px rgba(0, 0, 0, 0.1);
+ border-radius: 8px;
+ margin: 1.4rem;
+ overflow: auto;
+ width: 100%;
+ }
+
+ .entity-list {
+ overflow: auto;
+
+ .actions {
+ display: flex;
+ justify-content: end;
+ margin-bottom: 1rem;
+ }
+ }
+
+ .forms-container {
+ width: 96%;
+ max-width: 400px;
+ margin: auto;
+ }
+
+ .form-title {
+ font-size: 22px;
+ margin-bottom: 2%;
+ color: $darkGrey;
+ text-align: center;
+ }
+
+ .input-box {
+ margin: 0 auto 4%;
+
+ label {
+ display: block;
+ font-weight: 600;
+ margin-bottom: 1%;
+ }
+
+ input[type='text'], input[type='password'] {
+ width: 96%;
+ padding: 2%;
+ border: 1px solid #ccc;
+ border-radius: 4px;
+ }
+
+ input[type='submit'] {
+ margin: 0 auto;
+ display: flex;
+
+ &:hover {
+ background-color: $lightBlue;
+ }
+ }
+ }
+
+ .table-container {
+ width: 96%;
+ margin: auto;
+ }
+
+ h2 {
+ font-size: 22px;
+ margin: 0 0 2rem;
+ color: $darkGrey;
+ text-align: center;
+ }
+
+ .list {
+ width: 100%;
+ border-collapse: collapse;
+ margin-bottom: 2%;
+ color: $darkGrey;
+ table-layout: auto;
+
+ .row {
+ background-color: $white;
+
+ &.row-header {
+ background-color: $darkBlue;
+ color: $white;
+ }
+
+ &:nth-child(even) {
+ background-color: $lightGrey;
+ }
+ }
+
+ th.field {
+ padding: 1.5rem 0;
+
+ span {
+ color: $white;
+ }
+ }
+
+ .field {
+ padding: 0.5rem 0;
+ min-width: min-content;
+ white-space: nowrap;
+ height: auto;
+ border: 1px solid #ccc;
+ text-align: left;
+
+ button {
+ border: none;
+ background-color: transparent;
+ cursor: pointer;
+ }
+
+ a, a:visited {
+ color: $black;
+ text-decoration: none;
+ }
+
+ a:active, a:hover {
+ color: $lightBlue;
+ }
+
+ span {
+ padding: 0 1rem;
+ color: $black;
+ }
+
+ &-edit, &-delete {
+ span {
+ display: block;
+ text-align: center;
+ cursor: pointer;
+ }
+ }
+
+ &-edit {
+ span {
+ svg, path {
+ width: 24px;
+ color: $lightBlue;
+ }
+ }
+ }
+
+ &-delete {
+ span {
+ svg, path {
+ width: 24px;
+ fill: $lightBlue;
+ }
+ }
+ }
+ }
+ }
+
+ .pagination {
+ width: 100%;
+ display: flex;
+ flex-flow: wrap;
+ justify-content: center;
+ padding: 1rem 0;
+ text-align: center;
+
+ a {
+ margin: 0.2rem;
+ padding: 1rem 1.4rem;
+ border: 1px solid #ccc;
+ color: $lightBlue;
+ text-decoration: none;
+
+ &:hover, &:focus, &:active {
+ background-color: $lightBlue;
+ color: $white;
+ }
+ }
+ }
+
+ .footer {
+ text-align: center;
+ padding: 2%;
+ background-color: $darkGrey;
+ color: $white;
+
+ a {
+ color: $white;
+ text-decoration: none;
+
+ &:hover {
+ text-decoration: underline;
+ }
+ }
+ }
+
+ .copyright {
+ position: relative;
+ display: block;
+ width: 100%;
+ margin: 0;
+ padding: 0;
+ text-align: center;
+
+ a, a:hover, a:visited {
+ display: block;
+ color: $white;
+ text-decoration: none;
+ padding: 0;
+ }
+
+ }
+
+ .filters {
+ background-color: $lightGrey2;
+ padding: 1rem;
+ margin-bottom: 1rem;
+ border: 1px solid #ccc;
+ border-radius: 4px;
+
+ #filter-form {
+ display: flex;
+ flex-wrap: wrap;
+ align-items: flex-end;
+ justify-content: space-between;
+
+ h4 {
+ width: 100%;
+ margin: 0 0 1rem 0;
+ font-size: 14px;
+ color: $darkGrey;
+ }
+
+ .actions {
+ display: flex;
+ width: 100%;
+ margin: 1rem 0 0 0;
+ }
+
+ .filter {
+ margin-bottom: 1rem;
+ display: flex;
+ flex-direction: column;
+
+ label {
+ font-weight: 600;
+ margin-bottom: 0.5rem;
+ }
+
+ input[type="text"] {
+ padding: 0.5rem;
+ border: 1px solid #ccc;
+ border-radius: 4px;
+ min-width: 150px; /* Minimum width for input fields */
+ }
+ }
+
+ input[type="submit"] {
+ margin-right: 1.4rem;
+
+ }
+ }
+ }
+
+ .entity-view, .entity-edit {
+ h2 {
+ font-size: 22px;
+ margin-bottom: 2rem;
+ color: $darkGrey;
+ text-align: center;
+ }
+
+ .view-field, .edit-field {
+ display: flex;
+ justify-content: space-between;
+ padding: 0;
+ margin-bottom: 1rem;
+
+ span {
+ padding: 0.5rem;
+
+ &.field-name {
+ font-weight: $bold;
+ color: $darkGrey;
+ flex: 1;
+ }
+
+ &.field-value {
+ flex: 2;
+ color: $darkBlue;
+ background-color: $lightGrey;
+ }
+ }
+ }
+
+ .view-field .field-value img {
+ max-width: 200px;
+ }
+
+ .edit-field {
+ span {
+ &.field-value {
+ display: flex;
+ flex-direction: column;
+ padding: 0;
+
+ p {
+ margin-left: 0.5rem;
+ }
+
+ input, select {
+ margin: 0;
+ padding: 0.5rem;
+ border: none;
+ background: transparent;
+
+ &:not([disabled]) {
+ margin: 0;
+ border: 1px solid #7f8c8d;
+ background: #fff;
+ }
+ }
+ }
+ }
+ }
+
+ .actions {
+ margin-top: 2rem;
+ text-align: center;
+
+ form {
+ display: inline;
+ }
+
+ .button {
+ display: inline-block;
+ margin: 0 0.5rem;
+ }
+ }
+ }
+
+}
diff --git a/theme/admin/templates/dashboard.html b/theme/admin/templates/dashboard.html
new file mode 100644
index 000000000..e23899b01
--- /dev/null
+++ b/theme/admin/templates/dashboard.html
@@ -0,0 +1 @@
+Welcome to the Reldens Administration Panel!
\ No newline at end of file
diff --git a/theme/admin/templates/default-copyright.html b/theme/admin/templates/default-copyright.html
new file mode 100644
index 000000000..39114c0b8
--- /dev/null
+++ b/theme/admin/templates/default-copyright.html
@@ -0,0 +1,5 @@
+
\ No newline at end of file
diff --git a/theme/admin/templates/edit.html b/theme/admin/templates/edit.html
new file mode 100644
index 000000000..98db56913
--- /dev/null
+++ b/theme/admin/templates/edit.html
@@ -0,0 +1,22 @@
+
diff --git a/theme/admin/templates/fields/edit/button.html b/theme/admin/templates/fields/edit/button.html
new file mode 100644
index 000000000..2544a2d5b
--- /dev/null
+++ b/theme/admin/templates/fields/edit/button.html
@@ -0,0 +1,3 @@
+
+ {{&fieldValue}}
+
\ No newline at end of file
diff --git a/theme/admin/templates/fields/edit/checkbox.html b/theme/admin/templates/fields/edit/checkbox.html
new file mode 100644
index 000000000..d497bac61
--- /dev/null
+++ b/theme/admin/templates/fields/edit/checkbox.html
@@ -0,0 +1 @@
+
\ No newline at end of file
diff --git a/theme/admin/templates/fields/edit/file.html b/theme/admin/templates/fields/edit/file.html
new file mode 100644
index 000000000..68503ac16
--- /dev/null
+++ b/theme/admin/templates/fields/edit/file.html
@@ -0,0 +1,2 @@
+{{&fieldValue}}
+
diff --git a/theme/admin/templates/fields/edit/radio.html b/theme/admin/templates/fields/edit/radio.html
new file mode 100644
index 000000000..09afcb2a6
--- /dev/null
+++ b/theme/admin/templates/fields/edit/radio.html
@@ -0,0 +1 @@
+
\ No newline at end of file
diff --git a/theme/admin/templates/fields/edit/select.html b/theme/admin/templates/fields/edit/select.html
new file mode 100644
index 000000000..45fcf4043
--- /dev/null
+++ b/theme/admin/templates/fields/edit/select.html
@@ -0,0 +1,5 @@
+
+ {{#fieldValue}}
+ {{&label}}
+ {{/fieldValue}}
+
\ No newline at end of file
diff --git a/theme/admin/templates/fields/edit/text.html b/theme/admin/templates/fields/edit/text.html
new file mode 100644
index 000000000..159547de3
--- /dev/null
+++ b/theme/admin/templates/fields/edit/text.html
@@ -0,0 +1 @@
+
\ No newline at end of file
diff --git a/theme/admin/templates/fields/edit/textarea.html b/theme/admin/templates/fields/edit/textarea.html
new file mode 100644
index 000000000..2d1ea96e0
--- /dev/null
+++ b/theme/admin/templates/fields/edit/textarea.html
@@ -0,0 +1 @@
+
\ No newline at end of file
diff --git a/theme/admin/templates/fields/view/boolean.html b/theme/admin/templates/fields/view/boolean.html
new file mode 100644
index 000000000..d576c2f5e
--- /dev/null
+++ b/theme/admin/templates/fields/view/boolean.html
@@ -0,0 +1 @@
+{{&fieldValue}}
\ No newline at end of file
diff --git a/theme/admin/templates/fields/view/image.html b/theme/admin/templates/fields/view/image.html
new file mode 100644
index 000000000..534452671
--- /dev/null
+++ b/theme/admin/templates/fields/view/image.html
@@ -0,0 +1,4 @@
+
+ {{&fieldValue}}
+
+
diff --git a/theme/admin/templates/fields/view/images.html b/theme/admin/templates/fields/view/images.html
new file mode 100644
index 000000000..c6d6c54d4
--- /dev/null
+++ b/theme/admin/templates/fields/view/images.html
@@ -0,0 +1,7 @@
+{{#fieldValue}}
+
+ {{&fieldOriginalValuePart}}
+
+
+
+{{/fieldValue}}
diff --git a/theme/admin/templates/fields/view/link.html b/theme/admin/templates/fields/view/link.html
new file mode 100644
index 000000000..15746afa6
--- /dev/null
+++ b/theme/admin/templates/fields/view/link.html
@@ -0,0 +1 @@
+{{&fieldOriginalValue}}
\ No newline at end of file
diff --git a/theme/admin/templates/fields/view/links.html b/theme/admin/templates/fields/view/links.html
new file mode 100644
index 000000000..75472dfd5
--- /dev/null
+++ b/theme/admin/templates/fields/view/links.html
@@ -0,0 +1,6 @@
+{{#fieldValue}}
+
+ {{&fieldOriginalValuePart}}
+
+
+{{/fieldValue}}
\ No newline at end of file
diff --git a/theme/admin/templates/fields/view/text.html b/theme/admin/templates/fields/view/text.html
new file mode 100644
index 000000000..d576c2f5e
--- /dev/null
+++ b/theme/admin/templates/fields/view/text.html
@@ -0,0 +1 @@
+{{&fieldValue}}
\ No newline at end of file
diff --git a/theme/admin/templates/layout.html b/theme/admin/templates/layout.html
new file mode 100644
index 000000000..c1747b8db
--- /dev/null
+++ b/theme/admin/templates/layout.html
@@ -0,0 +1,33 @@
+
+
+
+ {{&brandingCompanyName}}
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ {{&sideBar}}
+
+ {{&pageContent}}
+
+
+
+
+
+
diff --git a/theme/admin/templates/list-content.html b/theme/admin/templates/list-content.html
new file mode 100644
index 000000000..3ffe9a956
--- /dev/null
+++ b/theme/admin/templates/list-content.html
@@ -0,0 +1,56 @@
+
+{{#rows}}
+
+ {{#fields}}
+
+
+ {{&value}}
+
+
+ {{/fields}}
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+{{/rows}}
diff --git a/theme/admin/templates/list.html b/theme/admin/templates/list.html
new file mode 100644
index 000000000..a8fcc093d
--- /dev/null
+++ b/theme/admin/templates/list.html
@@ -0,0 +1,27 @@
+
+
{{&templateTitle}}
+
+
+
+
+
diff --git a/theme/admin/templates/login.html b/theme/admin/templates/login.html
new file mode 100644
index 000000000..761b0e242
--- /dev/null
+++ b/theme/admin/templates/login.html
@@ -0,0 +1,19 @@
+
diff --git a/theme/admin/templates/pagination-link.html b/theme/admin/templates/pagination-link.html
new file mode 100644
index 000000000..8f40e861c
--- /dev/null
+++ b/theme/admin/templates/pagination-link.html
@@ -0,0 +1 @@
+
\ No newline at end of file
diff --git a/theme/admin/templates/sidebar-header.html b/theme/admin/templates/sidebar-header.html
new file mode 100644
index 000000000..bb21a93fd
--- /dev/null
+++ b/theme/admin/templates/sidebar-header.html
@@ -0,0 +1,4 @@
+
+
{{&name}}
+ {{&subItems}}
+
diff --git a/theme/admin/templates/sidebar-item.html b/theme/admin/templates/sidebar-item.html
new file mode 100644
index 000000000..7ea8d677a
--- /dev/null
+++ b/theme/admin/templates/sidebar-item.html
@@ -0,0 +1,3 @@
+
diff --git a/theme/admin/templates/sidebar.html b/theme/admin/templates/sidebar.html
new file mode 100644
index 000000000..a6b784332
--- /dev/null
+++ b/theme/admin/templates/sidebar.html
@@ -0,0 +1,11 @@
+
+ {{&navigationView}}
+
+
diff --git a/theme/admin/templates/view.html b/theme/admin/templates/view.html
new file mode 100644
index 000000000..a11daa2b9
--- /dev/null
+++ b/theme/admin/templates/view.html
@@ -0,0 +1,19 @@
+
+
{{&templateTitle}}
+ {{#fields}}
+
+ {{&name}}
+ {{&value}}
+
+ {{/fields}}
+
+
diff --git a/theme/default/assets/email/reset.html b/theme/default/assets/email/reset.html
index cff115f05..639fc82b7 100644
--- a/theme/default/assets/email/reset.html
+++ b/theme/default/assets/email/reset.html
@@ -3,9 +3,9 @@
DwDeveloper - Reldens | MMORPG Platform
-
-
-
+
+
+
diff --git a/theme/default/css/reldens-admin.scss b/theme/default/css/reldens-admin.scss
deleted file mode 100644
index 499e1be5b..000000000
--- a/theme/default/css/reldens-admin.scss
+++ /dev/null
@@ -1,36 +0,0 @@
-/*
- * Reldens - Administration Panel - AdminJS styles customizations
- */
-
-.sc-eDWCr.iwFjAL.adminjs_Box {
- height: auto;
-}
-
-section.gNHxbm.adminjs_Box {
- display: flex;
- flex-direction: column;
- align-content: center;
- justify-content: center;
- text-align: center;
-}
-
-.adminjs_Text section svg {
- display: none;
-}
-
-.adminjs_Resources .adminjs_Box {
- padding-left: 32px;
- padding-right: 32px;
-
- label {
- margin: 0 0 10px 0;
- padding: 0;
- text-align: center;
- }
-}
-
-.adminjs_TableCell section audio,
-.audio-file-name {
- display: block;
- margin-bottom: 0.4rem;
-}
diff --git a/theme/index.js.dist b/theme/index.js.dist
index 9d634dc64..4d219e553 100644
--- a/theme/index.js.dist
+++ b/theme/index.js.dist
@@ -34,7 +34,7 @@ appServer.events.on('reldens.serverConfigFeaturesReady', (props) => {
if('1' === process.env.RELDENS_BLOCKED_ADMIN){
appServer.events.on('reldens.beforeCreateAdminManager', (adminPack, dispatchedEvent) => {
for(let adminResource of dispatchedEvent.serverManager.dataServer.resources){
- console.log('DEMO - Hardcoded event to disable CRUD for: '+ adminResource.resource.model.rawName);
+ console.log('DEMO - Hardcoded event to disable CRUD for: '+ adminResource?.resource?.model?.rawName ?? '');
adminResource.resource.create = () => { return true; };
adminResource.resource.update = () => { return true; };
adminResource.resource.delete = () => { return true; };
diff --git a/theme/plugins/bot.js b/theme/plugins/bot.js
index 33772189a..c8c77c25f 100644
--- a/theme/plugins/bot.js
+++ b/theme/plugins/bot.js
@@ -27,14 +27,14 @@ async function main (options)
console.log('Joined GameRoom successfully!', randomGuestName);
- gameRoom.onMessage('*', async (message) => {
- if(message.error){
- console.log(message.error);
+ gameRoom.onMessage('*', async (gameMessage) => {
+ if(gameMessage.error){
+ console.log(gameMessage.error);
return false;
}
- if (GameConst.START_GAME === message.act) {
- userData.password = message.guestPassword;
+ if (GameConst.START_GAME === gameMessage.act) {
+ userData.password = gameMessage.guestPassword;
console.log('Game started successfully!');
gameRoom.send('*', {
act: GameConst.CREATE_PLAYER,
@@ -45,25 +45,37 @@ async function main (options)
});
}
- if(GameConst.CREATE_PLAYER_RESULT === message.act){
+ if(GameConst.CREATE_PLAYER_RESULT === gameMessage.act){
userData.isNewUser = false;
- userData.selectedPlayer = message.player.id;
+ userData.selectedPlayer = gameMessage.player.id;
userData.selectedScene = 'reldens-bots';
// join the bots room:
let reldensBootsRoom = await gameClient.joinOrCreate('reldens-bots', userData);
- reldensBootsRoom.onMessage('*', async (message) => {
- console.log('Message from ReldensBots Room!', message.act);
+ let canMove = true;
+ reldensBootsRoom.onMessage('*', async (roomMessage) => {
+ console.log('Message from ReldensBots Room!', roomMessage.act);
+ if(GameConst.GAME_OVER === roomMessage.act){
+ console.log('Player is dead: '+randomGuestName+'.');
+ canMove = false;
+ }
+ if(GameConst.REVIVED === roomMessage.act){
+ console.log('Player was revived: '+randomGuestName+'.');
+ canMove = true;
+ }
});
// join the global chat room:
let chatRoom = await gameClient.joinOrCreate('chat', userData);
- chatRoom.onMessage('*', async (message) => {
- // console.log('Message from Chat Room!', message.act);
+ chatRoom.onMessage('*', async (chatMessage) => {
+ // console.log('Message from Chat Room!', chatMessage.act);
});
// make some random stuff (send chat messages and move randomly):
setInterval(() => {
+ if(!canMove){
+ return;
+ }
// every 2s send a general chat message on the room:
reldensBootsRoom.send('*', {
act: ChatConst.CHAT_ACTION,