From 76083087d8bfb4898464ddaaf6046b99ba06319b Mon Sep 17 00:00:00 2001 From: Manfred Touron Date: Thu, 5 Sep 2019 18:39:27 +0200 Subject: [PATCH] feat: add forestadmin --- .env.example | 3 + docker-compose.yml | 18 + forestadmin/.dockerignore | 3 + forestadmin/.forestadmin-schema.json | 2353 ++++++++++++++++++ forestadmin/.gitignore | 3 + forestadmin/Dockerfile | 8 + forestadmin/app.js | 12 + forestadmin/bin/www | 57 + forestadmin/middlewares/forestadmin/index.js | 17 + forestadmin/middlewares/welcome/index.js | 13 + forestadmin/middlewares/welcome/template.txt | 81 + forestadmin/models/achievement.js | 42 + forestadmin/models/auth_method.js | 51 + forestadmin/models/coupon.js | 36 + forestadmin/models/coupon_validation.js | 33 + forestadmin/models/event.js | 24 + forestadmin/models/hypervisor.js | 33 + forestadmin/models/index.js | 51 + forestadmin/models/inventory_item.js | 30 + forestadmin/models/level.js | 42 + forestadmin/models/level_flavor.js | 27 + forestadmin/models/level_instance.js | 33 + forestadmin/models/level_subscription.js | 30 + forestadmin/models/level_validation.js | 36 + forestadmin/models/level_version.js | 45 + forestadmin/models/notification.js | 39 + forestadmin/models/team.js | 33 + forestadmin/models/team_member.js | 33 + forestadmin/models/tournament.js | 36 + forestadmin/models/tournament_member.js | 33 + forestadmin/models/tournament_team.js | 33 + forestadmin/models/user.js | 39 + forestadmin/models/user_session.js | 27 + forestadmin/models/whoswho_attempt.js | 36 + forestadmin/package-lock.json | 1998 +++++++++++++++ forestadmin/package.json | 18 + forestadmin/public/favicon.png | Bin 0 -> 2512 bytes forestadmin/routes/.gitkeep | 0 38 files changed, 5406 insertions(+) create mode 100644 .env.example create mode 100644 forestadmin/.dockerignore create mode 100644 forestadmin/.forestadmin-schema.json create mode 100644 forestadmin/.gitignore create mode 100644 forestadmin/Dockerfile create mode 100644 forestadmin/app.js create mode 100644 forestadmin/bin/www create mode 100644 forestadmin/middlewares/forestadmin/index.js create mode 100644 forestadmin/middlewares/welcome/index.js create mode 100644 forestadmin/middlewares/welcome/template.txt create mode 100644 forestadmin/models/achievement.js create mode 100644 forestadmin/models/auth_method.js create mode 100644 forestadmin/models/coupon.js create mode 100644 forestadmin/models/coupon_validation.js create mode 100644 forestadmin/models/event.js create mode 100644 forestadmin/models/hypervisor.js create mode 100644 forestadmin/models/index.js create mode 100644 forestadmin/models/inventory_item.js create mode 100644 forestadmin/models/level.js create mode 100644 forestadmin/models/level_flavor.js create mode 100644 forestadmin/models/level_instance.js create mode 100644 forestadmin/models/level_subscription.js create mode 100644 forestadmin/models/level_validation.js create mode 100644 forestadmin/models/level_version.js create mode 100644 forestadmin/models/notification.js create mode 100644 forestadmin/models/team.js create mode 100644 forestadmin/models/team_member.js create mode 100644 forestadmin/models/tournament.js create mode 100644 forestadmin/models/tournament_member.js create mode 100644 forestadmin/models/tournament_team.js create mode 100644 forestadmin/models/user.js create mode 100644 forestadmin/models/user_session.js create mode 100644 forestadmin/models/whoswho_attempt.js create mode 100644 forestadmin/package-lock.json create mode 100644 forestadmin/package.json create mode 100644 forestadmin/public/favicon.png create mode 100644 forestadmin/routes/.gitkeep diff --git a/.env.example b/.env.example new file mode 100644 index 000000000..80b1d78fe --- /dev/null +++ b/.env.example @@ -0,0 +1,3 @@ +AUTH_SECRET= +FOREST_ENV_SECRET= +FOREST_AUTH_SECRET= diff --git a/docker-compose.yml b/docker-compose.yml index 6050c7618..79c431cff 100644 --- a/docker-compose.yml +++ b/docker-compose.yml @@ -34,6 +34,24 @@ services: links: - server + forestadmin: + build: ./forestadmin + environment: + - APPLICATION_PORT=3000 + - DATABASE_URL=mysql://pathwar:uns3cur3@serverdb:3306/pathwar + - DATABASE_SCHEMA= + - DATABASE_SSL=false + - DATABASE_ENCRYPT=false + - AUTH_SECRET + - FOREST_ENV_SECRET + - FOREST_AUTH_SECRET + ports: + - "3000:3000" + volumes: + - ./forestadmin/:/usr/src/app + depends_on: + - serverdb + keycloak: image: jboss/keycloak:6.0.1 restart: always diff --git a/forestadmin/.dockerignore b/forestadmin/.dockerignore new file mode 100644 index 000000000..c81b8d319 --- /dev/null +++ b/forestadmin/.dockerignore @@ -0,0 +1,3 @@ +node_modules +npm-debug.log +.env diff --git a/forestadmin/.forestadmin-schema.json b/forestadmin/.forestadmin-schema.json new file mode 100644 index 000000000..675a9da85 --- /dev/null +++ b/forestadmin/.forestadmin-schema.json @@ -0,0 +1,2353 @@ +{ + "collections": [{ + "name": "achievement", + "nameOld": "achievement", + "icon": null, + "integration": null, + "isReadOnly": false, + "isSearchable": true, + "isVirtual": false, + "onlyForRelationships": false, + "paginationType": "page", + "fields": [{ + "field": "argument", + "type": "String", + "defaultValue": null, + "enums": null, + "integration": null, + "isFilterable": true, + "isReadOnly": false, + "isRequired": false, + "isSortable": true, + "isVirtual": false, + "reference": null, + "inverseOf": null, + "validations": [] + }, { + "field": "authorId", + "type": "String", + "defaultValue": null, + "enums": null, + "integration": null, + "isFilterable": true, + "isReadOnly": false, + "isRequired": false, + "isSortable": true, + "isVirtual": false, + "reference": null, + "inverseOf": null, + "validations": [] + }, { + "field": "comment", + "type": "String", + "defaultValue": null, + "enums": null, + "integration": null, + "isFilterable": true, + "isReadOnly": false, + "isRequired": false, + "isSortable": true, + "isVirtual": false, + "reference": null, + "inverseOf": null, + "validations": [] + }, { + "field": "createdAt", + "type": "Date", + "defaultValue": null, + "enums": null, + "integration": null, + "isFilterable": true, + "isReadOnly": false, + "isRequired": false, + "isSortable": true, + "isVirtual": false, + "reference": null, + "inverseOf": null, + "validations": [] + }, { + "field": "id", + "type": "String", + "defaultValue": null, + "enums": null, + "integration": null, + "isFilterable": true, + "isReadOnly": false, + "isRequired": false, + "isSortable": true, + "isVirtual": false, + "reference": null, + "inverseOf": null, + "validations": [] + }, { + "field": "isGlobal", + "type": "Number", + "defaultValue": null, + "enums": null, + "integration": null, + "isFilterable": true, + "isReadOnly": false, + "isRequired": false, + "isSortable": true, + "isVirtual": false, + "reference": null, + "inverseOf": null, + "validations": [] + }, { + "field": "levelValidationId", + "type": "String", + "defaultValue": null, + "enums": null, + "integration": null, + "isFilterable": true, + "isReadOnly": false, + "isRequired": false, + "isSortable": true, + "isVirtual": false, + "reference": null, + "inverseOf": null, + "validations": [] + }, { + "field": "type", + "type": "Number", + "defaultValue": null, + "enums": null, + "integration": null, + "isFilterable": true, + "isReadOnly": false, + "isRequired": false, + "isSortable": true, + "isVirtual": false, + "reference": null, + "inverseOf": null, + "validations": [] + }, { + "field": "updatedAt", + "type": "Date", + "defaultValue": null, + "enums": null, + "integration": null, + "isFilterable": true, + "isReadOnly": false, + "isRequired": false, + "isSortable": true, + "isVirtual": false, + "reference": null, + "inverseOf": null, + "validations": [] + }], + "segments": [], + "actions": [] + }, { + "name": "auth_method", + "nameOld": "auth_method", + "icon": null, + "integration": null, + "isReadOnly": false, + "isSearchable": true, + "isVirtual": false, + "onlyForRelationships": false, + "paginationType": "page", + "fields": [{ + "field": "createdAt", + "type": "Date", + "defaultValue": null, + "enums": null, + "integration": null, + "isFilterable": true, + "isReadOnly": false, + "isRequired": false, + "isSortable": true, + "isVirtual": false, + "reference": null, + "inverseOf": null, + "validations": [] + }, { + "field": "emailAddress", + "type": "String", + "defaultValue": null, + "enums": null, + "integration": null, + "isFilterable": true, + "isReadOnly": false, + "isRequired": false, + "isSortable": true, + "isVirtual": false, + "reference": null, + "inverseOf": null, + "validations": [] + }, { + "field": "id", + "type": "String", + "defaultValue": null, + "enums": null, + "integration": null, + "isFilterable": true, + "isReadOnly": false, + "isRequired": false, + "isSortable": true, + "isVirtual": false, + "reference": null, + "inverseOf": null, + "validations": [] + }, { + "field": "identifier", + "type": "String", + "defaultValue": null, + "enums": null, + "integration": null, + "isFilterable": true, + "isReadOnly": false, + "isRequired": false, + "isSortable": true, + "isVirtual": false, + "reference": null, + "inverseOf": null, + "validations": [] + }, { + "field": "isVerified", + "type": "Number", + "defaultValue": null, + "enums": null, + "integration": null, + "isFilterable": true, + "isReadOnly": false, + "isRequired": false, + "isSortable": true, + "isVirtual": false, + "reference": null, + "inverseOf": null, + "validations": [] + }, { + "field": "passwordHash", + "type": "String", + "defaultValue": null, + "enums": null, + "integration": null, + "isFilterable": true, + "isReadOnly": false, + "isRequired": false, + "isSortable": true, + "isVirtual": false, + "reference": null, + "inverseOf": null, + "validations": [] + }, { + "field": "provider", + "type": "Number", + "defaultValue": null, + "enums": null, + "integration": null, + "isFilterable": true, + "isReadOnly": false, + "isRequired": false, + "isSortable": true, + "isVirtual": false, + "reference": null, + "inverseOf": null, + "validations": [] + }, { + "field": "salt", + "type": "String", + "defaultValue": null, + "enums": null, + "integration": null, + "isFilterable": true, + "isReadOnly": false, + "isRequired": false, + "isSortable": true, + "isVirtual": false, + "reference": null, + "inverseOf": null, + "validations": [] + }, { + "field": "totpToken", + "type": "String", + "defaultValue": null, + "enums": null, + "integration": null, + "isFilterable": true, + "isReadOnly": false, + "isRequired": false, + "isSortable": true, + "isVirtual": false, + "reference": null, + "inverseOf": null, + "validations": [] + }, { + "field": "updatedAt", + "type": "Date", + "defaultValue": null, + "enums": null, + "integration": null, + "isFilterable": true, + "isReadOnly": false, + "isRequired": false, + "isSortable": true, + "isVirtual": false, + "reference": null, + "inverseOf": null, + "validations": [] + }, { + "field": "url", + "type": "String", + "defaultValue": null, + "enums": null, + "integration": null, + "isFilterable": true, + "isReadOnly": false, + "isRequired": false, + "isSortable": true, + "isVirtual": false, + "reference": null, + "inverseOf": null, + "validations": [] + }, { + "field": "userId", + "type": "String", + "defaultValue": null, + "enums": null, + "integration": null, + "isFilterable": true, + "isReadOnly": false, + "isRequired": false, + "isSortable": true, + "isVirtual": false, + "reference": null, + "inverseOf": null, + "validations": [] + }], + "segments": [], + "actions": [] + }, { + "name": "coupon", + "nameOld": "coupon", + "icon": null, + "integration": null, + "isReadOnly": false, + "isSearchable": true, + "isVirtual": false, + "onlyForRelationships": false, + "paginationType": "page", + "fields": [{ + "field": "createdAt", + "type": "Date", + "defaultValue": null, + "enums": null, + "integration": null, + "isFilterable": true, + "isReadOnly": false, + "isRequired": false, + "isSortable": true, + "isVirtual": false, + "reference": null, + "inverseOf": null, + "validations": [] + }, { + "field": "hash", + "type": "String", + "defaultValue": null, + "enums": null, + "integration": null, + "isFilterable": true, + "isReadOnly": false, + "isRequired": false, + "isSortable": true, + "isVirtual": false, + "reference": null, + "inverseOf": null, + "validations": [] + }, { + "field": "id", + "type": "String", + "defaultValue": null, + "enums": null, + "integration": null, + "isFilterable": true, + "isReadOnly": false, + "isRequired": false, + "isSortable": true, + "isVirtual": false, + "reference": null, + "inverseOf": null, + "validations": [] + }, { + "field": "maxValidationCount", + "type": "Number", + "defaultValue": null, + "enums": null, + "integration": null, + "isFilterable": true, + "isReadOnly": false, + "isRequired": false, + "isSortable": true, + "isVirtual": false, + "reference": null, + "inverseOf": null, + "validations": [] + }, { + "field": "tournamentId", + "type": "String", + "defaultValue": null, + "enums": null, + "integration": null, + "isFilterable": true, + "isReadOnly": false, + "isRequired": false, + "isSortable": true, + "isVirtual": false, + "reference": null, + "inverseOf": null, + "validations": [] + }, { + "field": "updatedAt", + "type": "Date", + "defaultValue": null, + "enums": null, + "integration": null, + "isFilterable": true, + "isReadOnly": false, + "isRequired": false, + "isSortable": true, + "isVirtual": false, + "reference": null, + "inverseOf": null, + "validations": [] + }, { + "field": "value", + "type": "Number", + "defaultValue": null, + "enums": null, + "integration": null, + "isFilterable": true, + "isReadOnly": false, + "isRequired": false, + "isSortable": true, + "isVirtual": false, + "reference": null, + "inverseOf": null, + "validations": [] + }], + "segments": [], + "actions": [] + }, { + "name": "coupon_validation", + "nameOld": "coupon_validation", + "icon": null, + "integration": null, + "isReadOnly": false, + "isSearchable": true, + "isVirtual": false, + "onlyForRelationships": false, + "paginationType": "page", + "fields": [{ + "field": "authorId", + "type": "String", + "defaultValue": null, + "enums": null, + "integration": null, + "isFilterable": true, + "isReadOnly": false, + "isRequired": false, + "isSortable": true, + "isVirtual": false, + "reference": null, + "inverseOf": null, + "validations": [] + }, { + "field": "comment", + "type": "String", + "defaultValue": null, + "enums": null, + "integration": null, + "isFilterable": true, + "isReadOnly": false, + "isRequired": false, + "isSortable": true, + "isVirtual": false, + "reference": null, + "inverseOf": null, + "validations": [] + }, { + "field": "couponId", + "type": "String", + "defaultValue": null, + "enums": null, + "integration": null, + "isFilterable": true, + "isReadOnly": false, + "isRequired": false, + "isSortable": true, + "isVirtual": false, + "reference": null, + "inverseOf": null, + "validations": [] + }, { + "field": "createdAt", + "type": "Date", + "defaultValue": null, + "enums": null, + "integration": null, + "isFilterable": true, + "isReadOnly": false, + "isRequired": false, + "isSortable": true, + "isVirtual": false, + "reference": null, + "inverseOf": null, + "validations": [] + }, { + "field": "id", + "type": "String", + "defaultValue": null, + "enums": null, + "integration": null, + "isFilterable": true, + "isReadOnly": false, + "isRequired": false, + "isSortable": true, + "isVirtual": false, + "reference": null, + "inverseOf": null, + "validations": [] + }, { + "field": "updatedAt", + "type": "Date", + "defaultValue": null, + "enums": null, + "integration": null, + "isFilterable": true, + "isReadOnly": false, + "isRequired": false, + "isSortable": true, + "isVirtual": false, + "reference": null, + "inverseOf": null, + "validations": [] + }], + "segments": [], + "actions": [] + }, { + "name": "event", + "nameOld": "event", + "icon": null, + "integration": null, + "isReadOnly": false, + "isSearchable": true, + "isVirtual": false, + "onlyForRelationships": false, + "paginationType": "page", + "fields": [{ + "field": "createdAt", + "type": "Date", + "defaultValue": null, + "enums": null, + "integration": null, + "isFilterable": true, + "isReadOnly": false, + "isRequired": false, + "isSortable": true, + "isVirtual": false, + "reference": null, + "inverseOf": null, + "validations": [] + }, { + "field": "id", + "type": "String", + "defaultValue": null, + "enums": null, + "integration": null, + "isFilterable": true, + "isReadOnly": false, + "isRequired": false, + "isSortable": true, + "isVirtual": false, + "reference": null, + "inverseOf": null, + "validations": [] + }, { + "field": "updatedAt", + "type": "Date", + "defaultValue": null, + "enums": null, + "integration": null, + "isFilterable": true, + "isReadOnly": false, + "isRequired": false, + "isSortable": true, + "isVirtual": false, + "reference": null, + "inverseOf": null, + "validations": [] + }], + "segments": [], + "actions": [] + }, { + "name": "hypervisor", + "nameOld": "hypervisor", + "icon": null, + "integration": null, + "isReadOnly": false, + "isSearchable": true, + "isVirtual": false, + "onlyForRelationships": false, + "paginationType": "page", + "fields": [{ + "field": "address", + "type": "String", + "defaultValue": null, + "enums": null, + "integration": null, + "isFilterable": true, + "isReadOnly": false, + "isRequired": false, + "isSortable": true, + "isVirtual": false, + "reference": null, + "inverseOf": null, + "validations": [] + }, { + "field": "createdAt", + "type": "Date", + "defaultValue": null, + "enums": null, + "integration": null, + "isFilterable": true, + "isReadOnly": false, + "isRequired": false, + "isSortable": true, + "isVirtual": false, + "reference": null, + "inverseOf": null, + "validations": [] + }, { + "field": "id", + "type": "String", + "defaultValue": null, + "enums": null, + "integration": null, + "isFilterable": true, + "isReadOnly": false, + "isRequired": false, + "isSortable": true, + "isVirtual": false, + "reference": null, + "inverseOf": null, + "validations": [] + }, { + "field": "name", + "type": "String", + "defaultValue": null, + "enums": null, + "integration": null, + "isFilterable": true, + "isReadOnly": false, + "isRequired": false, + "isSortable": true, + "isVirtual": false, + "reference": null, + "inverseOf": null, + "validations": [] + }, { + "field": "status", + "type": "Number", + "defaultValue": null, + "enums": null, + "integration": null, + "isFilterable": true, + "isReadOnly": false, + "isRequired": false, + "isSortable": true, + "isVirtual": false, + "reference": null, + "inverseOf": null, + "validations": [] + }, { + "field": "updatedAt", + "type": "Date", + "defaultValue": null, + "enums": null, + "integration": null, + "isFilterable": true, + "isReadOnly": false, + "isRequired": false, + "isSortable": true, + "isVirtual": false, + "reference": null, + "inverseOf": null, + "validations": [] + }], + "segments": [], + "actions": [] + }, { + "name": "inventory_item", + "nameOld": "inventory_item", + "icon": null, + "integration": null, + "isReadOnly": false, + "isSearchable": true, + "isVirtual": false, + "onlyForRelationships": false, + "paginationType": "page", + "fields": [{ + "field": "createdAt", + "type": "Date", + "defaultValue": null, + "enums": null, + "integration": null, + "isFilterable": true, + "isReadOnly": false, + "isRequired": false, + "isSortable": true, + "isVirtual": false, + "reference": null, + "inverseOf": null, + "validations": [] + }, { + "field": "id", + "type": "String", + "defaultValue": null, + "enums": null, + "integration": null, + "isFilterable": true, + "isReadOnly": false, + "isRequired": false, + "isSortable": true, + "isVirtual": false, + "reference": null, + "inverseOf": null, + "validations": [] + }, { + "field": "item", + "type": "Number", + "defaultValue": null, + "enums": null, + "integration": null, + "isFilterable": true, + "isReadOnly": false, + "isRequired": false, + "isSortable": true, + "isVirtual": false, + "reference": null, + "inverseOf": null, + "validations": [] + }, { + "field": "ownerId", + "type": "String", + "defaultValue": null, + "enums": null, + "integration": null, + "isFilterable": true, + "isReadOnly": false, + "isRequired": false, + "isSortable": true, + "isVirtual": false, + "reference": null, + "inverseOf": null, + "validations": [] + }, { + "field": "updatedAt", + "type": "Date", + "defaultValue": null, + "enums": null, + "integration": null, + "isFilterable": true, + "isReadOnly": false, + "isRequired": false, + "isSortable": true, + "isVirtual": false, + "reference": null, + "inverseOf": null, + "validations": [] + }], + "segments": [], + "actions": [] + }, { + "name": "level", + "nameOld": "level", + "icon": null, + "integration": null, + "isReadOnly": false, + "isSearchable": true, + "isVirtual": false, + "onlyForRelationships": false, + "paginationType": "page", + "fields": [{ + "field": "author", + "type": "String", + "defaultValue": null, + "enums": null, + "integration": null, + "isFilterable": true, + "isReadOnly": false, + "isRequired": false, + "isSortable": true, + "isVirtual": false, + "reference": null, + "inverseOf": null, + "validations": [] + }, { + "field": "createdAt", + "type": "Date", + "defaultValue": null, + "enums": null, + "integration": null, + "isFilterable": true, + "isReadOnly": false, + "isRequired": false, + "isSortable": true, + "isVirtual": false, + "reference": null, + "inverseOf": null, + "validations": [] + }, { + "field": "description", + "type": "String", + "defaultValue": null, + "enums": null, + "integration": null, + "isFilterable": true, + "isReadOnly": false, + "isRequired": false, + "isSortable": true, + "isVirtual": false, + "reference": null, + "inverseOf": null, + "validations": [] + }, { + "field": "id", + "type": "String", + "defaultValue": null, + "enums": null, + "integration": null, + "isFilterable": true, + "isReadOnly": false, + "isRequired": false, + "isSortable": true, + "isVirtual": false, + "reference": null, + "inverseOf": null, + "validations": [] + }, { + "field": "isDraft", + "type": "Number", + "defaultValue": null, + "enums": null, + "integration": null, + "isFilterable": true, + "isReadOnly": false, + "isRequired": false, + "isSortable": true, + "isVirtual": false, + "reference": null, + "inverseOf": null, + "validations": [] + }, { + "field": "locale", + "type": "String", + "defaultValue": null, + "enums": null, + "integration": null, + "isFilterable": true, + "isReadOnly": false, + "isRequired": false, + "isSortable": true, + "isVirtual": false, + "reference": null, + "inverseOf": null, + "validations": [] + }, { + "field": "name", + "type": "String", + "defaultValue": null, + "enums": null, + "integration": null, + "isFilterable": true, + "isReadOnly": false, + "isRequired": false, + "isSortable": true, + "isVirtual": false, + "reference": null, + "inverseOf": null, + "validations": [] + }, { + "field": "previewUrl", + "type": "String", + "defaultValue": null, + "enums": null, + "integration": null, + "isFilterable": true, + "isReadOnly": false, + "isRequired": false, + "isSortable": true, + "isVirtual": false, + "reference": null, + "inverseOf": null, + "validations": [] + }, { + "field": "updatedAt", + "type": "Date", + "defaultValue": null, + "enums": null, + "integration": null, + "isFilterable": true, + "isReadOnly": false, + "isRequired": false, + "isSortable": true, + "isVirtual": false, + "reference": null, + "inverseOf": null, + "validations": [] + }], + "segments": [], + "actions": [] + }, { + "name": "level_flavor", + "nameOld": "level_flavor", + "icon": null, + "integration": null, + "isReadOnly": false, + "isSearchable": true, + "isVirtual": false, + "onlyForRelationships": false, + "paginationType": "page", + "fields": [{ + "field": "createdAt", + "type": "Date", + "defaultValue": null, + "enums": null, + "integration": null, + "isFilterable": true, + "isReadOnly": false, + "isRequired": false, + "isSortable": true, + "isVirtual": false, + "reference": null, + "inverseOf": null, + "validations": [] + }, { + "field": "id", + "type": "String", + "defaultValue": null, + "enums": null, + "integration": null, + "isFilterable": true, + "isReadOnly": false, + "isRequired": false, + "isSortable": true, + "isVirtual": false, + "reference": null, + "inverseOf": null, + "validations": [] + }, { + "field": "levelVersionId", + "type": "String", + "defaultValue": null, + "enums": null, + "integration": null, + "isFilterable": true, + "isReadOnly": false, + "isRequired": false, + "isSortable": true, + "isVirtual": false, + "reference": null, + "inverseOf": null, + "validations": [] + }, { + "field": "updatedAt", + "type": "Date", + "defaultValue": null, + "enums": null, + "integration": null, + "isFilterable": true, + "isReadOnly": false, + "isRequired": false, + "isSortable": true, + "isVirtual": false, + "reference": null, + "inverseOf": null, + "validations": [] + }], + "segments": [], + "actions": [] + }, { + "name": "level_instance", + "nameOld": "level_instance", + "icon": null, + "integration": null, + "isReadOnly": false, + "isSearchable": true, + "isVirtual": false, + "onlyForRelationships": false, + "paginationType": "page", + "fields": [{ + "field": "createdAt", + "type": "Date", + "defaultValue": null, + "enums": null, + "integration": null, + "isFilterable": true, + "isReadOnly": false, + "isRequired": false, + "isSortable": true, + "isVirtual": false, + "reference": null, + "inverseOf": null, + "validations": [] + }, { + "field": "flavorId", + "type": "String", + "defaultValue": null, + "enums": null, + "integration": null, + "isFilterable": true, + "isReadOnly": false, + "isRequired": false, + "isSortable": true, + "isVirtual": false, + "reference": null, + "inverseOf": null, + "validations": [] + }, { + "field": "hypervisorId", + "type": "String", + "defaultValue": null, + "enums": null, + "integration": null, + "isFilterable": true, + "isReadOnly": false, + "isRequired": false, + "isSortable": true, + "isVirtual": false, + "reference": null, + "inverseOf": null, + "validations": [] + }, { + "field": "id", + "type": "String", + "defaultValue": null, + "enums": null, + "integration": null, + "isFilterable": true, + "isReadOnly": false, + "isRequired": false, + "isSortable": true, + "isVirtual": false, + "reference": null, + "inverseOf": null, + "validations": [] + }, { + "field": "status", + "type": "Number", + "defaultValue": null, + "enums": null, + "integration": null, + "isFilterable": true, + "isReadOnly": false, + "isRequired": false, + "isSortable": true, + "isVirtual": false, + "reference": null, + "inverseOf": null, + "validations": [] + }, { + "field": "updatedAt", + "type": "Date", + "defaultValue": null, + "enums": null, + "integration": null, + "isFilterable": true, + "isReadOnly": false, + "isRequired": false, + "isSortable": true, + "isVirtual": false, + "reference": null, + "inverseOf": null, + "validations": [] + }], + "segments": [], + "actions": [] + }, { + "name": "level_subscription", + "nameOld": "level_subscription", + "icon": null, + "integration": null, + "isReadOnly": false, + "isSearchable": true, + "isVirtual": false, + "onlyForRelationships": false, + "paginationType": "page", + "fields": [{ + "field": "createdAt", + "type": "Date", + "defaultValue": null, + "enums": null, + "integration": null, + "isFilterable": true, + "isReadOnly": false, + "isRequired": false, + "isSortable": true, + "isVirtual": false, + "reference": null, + "inverseOf": null, + "validations": [] + }, { + "field": "id", + "type": "String", + "defaultValue": null, + "enums": null, + "integration": null, + "isFilterable": true, + "isReadOnly": false, + "isRequired": false, + "isSortable": true, + "isVirtual": false, + "reference": null, + "inverseOf": null, + "validations": [] + }, { + "field": "levelFlavorId", + "type": "String", + "defaultValue": null, + "enums": null, + "integration": null, + "isFilterable": true, + "isReadOnly": false, + "isRequired": false, + "isSortable": true, + "isVirtual": false, + "reference": null, + "inverseOf": null, + "validations": [] + }, { + "field": "tournamentTeamId", + "type": "String", + "defaultValue": null, + "enums": null, + "integration": null, + "isFilterable": true, + "isReadOnly": false, + "isRequired": false, + "isSortable": true, + "isVirtual": false, + "reference": null, + "inverseOf": null, + "validations": [] + }, { + "field": "updatedAt", + "type": "Date", + "defaultValue": null, + "enums": null, + "integration": null, + "isFilterable": true, + "isReadOnly": false, + "isRequired": false, + "isSortable": true, + "isVirtual": false, + "reference": null, + "inverseOf": null, + "validations": [] + }], + "segments": [], + "actions": [] + }, { + "name": "level_validation", + "nameOld": "level_validation", + "icon": null, + "integration": null, + "isReadOnly": false, + "isSearchable": true, + "isVirtual": false, + "onlyForRelationships": false, + "paginationType": "page", + "fields": [{ + "field": "authorComment", + "type": "String", + "defaultValue": null, + "enums": null, + "integration": null, + "isFilterable": true, + "isReadOnly": false, + "isRequired": false, + "isSortable": true, + "isVirtual": false, + "reference": null, + "inverseOf": null, + "validations": [] + }, { + "field": "correctorComment", + "type": "String", + "defaultValue": null, + "enums": null, + "integration": null, + "isFilterable": true, + "isReadOnly": false, + "isRequired": false, + "isSortable": true, + "isVirtual": false, + "reference": null, + "inverseOf": null, + "validations": [] + }, { + "field": "createdAt", + "type": "Date", + "defaultValue": null, + "enums": null, + "integration": null, + "isFilterable": true, + "isReadOnly": false, + "isRequired": false, + "isSortable": true, + "isVirtual": false, + "reference": null, + "inverseOf": null, + "validations": [] + }, { + "field": "id", + "type": "String", + "defaultValue": null, + "enums": null, + "integration": null, + "isFilterable": true, + "isReadOnly": false, + "isRequired": false, + "isSortable": true, + "isVirtual": false, + "reference": null, + "inverseOf": null, + "validations": [] + }, { + "field": "levelSubscriptionId", + "type": "String", + "defaultValue": null, + "enums": null, + "integration": null, + "isFilterable": true, + "isReadOnly": false, + "isRequired": false, + "isSortable": true, + "isVirtual": false, + "reference": null, + "inverseOf": null, + "validations": [] + }, { + "field": "status", + "type": "Number", + "defaultValue": null, + "enums": null, + "integration": null, + "isFilterable": true, + "isReadOnly": false, + "isRequired": false, + "isSortable": true, + "isVirtual": false, + "reference": null, + "inverseOf": null, + "validations": [] + }, { + "field": "updatedAt", + "type": "Date", + "defaultValue": null, + "enums": null, + "integration": null, + "isFilterable": true, + "isReadOnly": false, + "isRequired": false, + "isSortable": true, + "isVirtual": false, + "reference": null, + "inverseOf": null, + "validations": [] + }], + "segments": [], + "actions": [] + }, { + "name": "level_version", + "nameOld": "level_version", + "icon": null, + "integration": null, + "isReadOnly": false, + "isSearchable": true, + "isVirtual": false, + "onlyForRelationships": false, + "paginationType": "page", + "fields": [{ + "field": "changelog", + "type": "String", + "defaultValue": null, + "enums": null, + "integration": null, + "isFilterable": true, + "isReadOnly": false, + "isRequired": false, + "isSortable": true, + "isVirtual": false, + "reference": null, + "inverseOf": null, + "validations": [] + }, { + "field": "createdAt", + "type": "Date", + "defaultValue": null, + "enums": null, + "integration": null, + "isFilterable": true, + "isReadOnly": false, + "isRequired": false, + "isSortable": true, + "isVirtual": false, + "reference": null, + "inverseOf": null, + "validations": [] + }, { + "field": "driver", + "type": "Number", + "defaultValue": null, + "enums": null, + "integration": null, + "isFilterable": true, + "isReadOnly": false, + "isRequired": false, + "isSortable": true, + "isVirtual": false, + "reference": null, + "inverseOf": null, + "validations": [] + }, { + "field": "id", + "type": "String", + "defaultValue": null, + "enums": null, + "integration": null, + "isFilterable": true, + "isReadOnly": false, + "isRequired": false, + "isSortable": true, + "isVirtual": false, + "reference": null, + "inverseOf": null, + "validations": [] + }, { + "field": "isDraft", + "type": "Number", + "defaultValue": null, + "enums": null, + "integration": null, + "isFilterable": true, + "isReadOnly": false, + "isRequired": false, + "isSortable": true, + "isVirtual": false, + "reference": null, + "inverseOf": null, + "validations": [] + }, { + "field": "isLatest", + "type": "Number", + "defaultValue": null, + "enums": null, + "integration": null, + "isFilterable": true, + "isReadOnly": false, + "isRequired": false, + "isSortable": true, + "isVirtual": false, + "reference": null, + "inverseOf": null, + "validations": [] + }, { + "field": "levelId", + "type": "String", + "defaultValue": null, + "enums": null, + "integration": null, + "isFilterable": true, + "isReadOnly": false, + "isRequired": false, + "isSortable": true, + "isVirtual": false, + "reference": null, + "inverseOf": null, + "validations": [] + }, { + "field": "sourceUrl", + "type": "String", + "defaultValue": null, + "enums": null, + "integration": null, + "isFilterable": true, + "isReadOnly": false, + "isRequired": false, + "isSortable": true, + "isVirtual": false, + "reference": null, + "inverseOf": null, + "validations": [] + }, { + "field": "updatedAt", + "type": "Date", + "defaultValue": null, + "enums": null, + "integration": null, + "isFilterable": true, + "isReadOnly": false, + "isRequired": false, + "isSortable": true, + "isVirtual": false, + "reference": null, + "inverseOf": null, + "validations": [] + }, { + "field": "version", + "type": "String", + "defaultValue": null, + "enums": null, + "integration": null, + "isFilterable": true, + "isReadOnly": false, + "isRequired": false, + "isSortable": true, + "isVirtual": false, + "reference": null, + "inverseOf": null, + "validations": [] + }], + "segments": [], + "actions": [] + }, { + "name": "notification", + "nameOld": "notification", + "icon": null, + "integration": null, + "isReadOnly": false, + "isSearchable": true, + "isVirtual": false, + "onlyForRelationships": false, + "paginationType": "page", + "fields": [{ + "field": "args", + "type": "String", + "defaultValue": null, + "enums": null, + "integration": null, + "isFilterable": true, + "isReadOnly": false, + "isRequired": false, + "isSortable": true, + "isVirtual": false, + "reference": null, + "inverseOf": null, + "validations": [] + }, { + "field": "clickUrl", + "type": "String", + "defaultValue": null, + "enums": null, + "integration": null, + "isFilterable": true, + "isReadOnly": false, + "isRequired": false, + "isSortable": true, + "isVirtual": false, + "reference": null, + "inverseOf": null, + "validations": [] + }, { + "field": "createdAt", + "type": "Date", + "defaultValue": null, + "enums": null, + "integration": null, + "isFilterable": true, + "isReadOnly": false, + "isRequired": false, + "isSortable": true, + "isVirtual": false, + "reference": null, + "inverseOf": null, + "validations": [] + }, { + "field": "id", + "type": "String", + "defaultValue": null, + "enums": null, + "integration": null, + "isFilterable": true, + "isReadOnly": false, + "isRequired": false, + "isSortable": true, + "isVirtual": false, + "reference": null, + "inverseOf": null, + "validations": [] + }, { + "field": "isRead", + "type": "Number", + "defaultValue": null, + "enums": null, + "integration": null, + "isFilterable": true, + "isReadOnly": false, + "isRequired": false, + "isSortable": true, + "isVirtual": false, + "reference": null, + "inverseOf": null, + "validations": [] + }, { + "field": "msg", + "type": "String", + "defaultValue": null, + "enums": null, + "integration": null, + "isFilterable": true, + "isReadOnly": false, + "isRequired": false, + "isSortable": true, + "isVirtual": false, + "reference": null, + "inverseOf": null, + "validations": [] + }, { + "field": "updatedAt", + "type": "Date", + "defaultValue": null, + "enums": null, + "integration": null, + "isFilterable": true, + "isReadOnly": false, + "isRequired": false, + "isSortable": true, + "isVirtual": false, + "reference": null, + "inverseOf": null, + "validations": [] + }, { + "field": "userId", + "type": "String", + "defaultValue": null, + "enums": null, + "integration": null, + "isFilterable": true, + "isReadOnly": false, + "isRequired": false, + "isSortable": true, + "isVirtual": false, + "reference": null, + "inverseOf": null, + "validations": [] + }], + "segments": [], + "actions": [] + }, { + "name": "team", + "nameOld": "team", + "icon": null, + "integration": null, + "isReadOnly": false, + "isSearchable": true, + "isVirtual": false, + "onlyForRelationships": false, + "paginationType": "page", + "fields": [{ + "field": "createdAt", + "type": "Date", + "defaultValue": null, + "enums": null, + "integration": null, + "isFilterable": true, + "isReadOnly": false, + "isRequired": false, + "isSortable": true, + "isVirtual": false, + "reference": null, + "inverseOf": null, + "validations": [] + }, { + "field": "gravatarUrl", + "type": "String", + "defaultValue": null, + "enums": null, + "integration": null, + "isFilterable": true, + "isReadOnly": false, + "isRequired": false, + "isSortable": true, + "isVirtual": false, + "reference": null, + "inverseOf": null, + "validations": [] + }, { + "field": "id", + "type": "String", + "defaultValue": null, + "enums": null, + "integration": null, + "isFilterable": true, + "isReadOnly": false, + "isRequired": false, + "isSortable": true, + "isVirtual": false, + "reference": null, + "inverseOf": null, + "validations": [] + }, { + "field": "locale", + "type": "String", + "defaultValue": null, + "enums": null, + "integration": null, + "isFilterable": true, + "isReadOnly": false, + "isRequired": false, + "isSortable": true, + "isVirtual": false, + "reference": null, + "inverseOf": null, + "validations": [] + }, { + "field": "name", + "type": "String", + "defaultValue": null, + "enums": null, + "integration": null, + "isFilterable": true, + "isReadOnly": false, + "isRequired": false, + "isSortable": true, + "isVirtual": false, + "reference": null, + "inverseOf": null, + "validations": [] + }, { + "field": "updatedAt", + "type": "Date", + "defaultValue": null, + "enums": null, + "integration": null, + "isFilterable": true, + "isReadOnly": false, + "isRequired": false, + "isSortable": true, + "isVirtual": false, + "reference": null, + "inverseOf": null, + "validations": [] + }], + "segments": [], + "actions": [] + }, { + "name": "team_member", + "nameOld": "team_member", + "icon": null, + "integration": null, + "isReadOnly": false, + "isSearchable": true, + "isVirtual": false, + "onlyForRelationships": false, + "paginationType": "page", + "fields": [{ + "field": "createdAt", + "type": "Date", + "defaultValue": null, + "enums": null, + "integration": null, + "isFilterable": true, + "isReadOnly": false, + "isRequired": false, + "isSortable": true, + "isVirtual": false, + "reference": null, + "inverseOf": null, + "validations": [] + }, { + "field": "id", + "type": "String", + "defaultValue": null, + "enums": null, + "integration": null, + "isFilterable": true, + "isReadOnly": false, + "isRequired": false, + "isSortable": true, + "isVirtual": false, + "reference": null, + "inverseOf": null, + "validations": [] + }, { + "field": "role", + "type": "Number", + "defaultValue": null, + "enums": null, + "integration": null, + "isFilterable": true, + "isReadOnly": false, + "isRequired": false, + "isSortable": true, + "isVirtual": false, + "reference": null, + "inverseOf": null, + "validations": [] + }, { + "field": "teamId", + "type": "String", + "defaultValue": null, + "enums": null, + "integration": null, + "isFilterable": true, + "isReadOnly": false, + "isRequired": false, + "isSortable": true, + "isVirtual": false, + "reference": null, + "inverseOf": null, + "validations": [] + }, { + "field": "updatedAt", + "type": "Date", + "defaultValue": null, + "enums": null, + "integration": null, + "isFilterable": true, + "isReadOnly": false, + "isRequired": false, + "isSortable": true, + "isVirtual": false, + "reference": null, + "inverseOf": null, + "validations": [] + }, { + "field": "userId", + "type": "String", + "defaultValue": null, + "enums": null, + "integration": null, + "isFilterable": true, + "isReadOnly": false, + "isRequired": false, + "isSortable": true, + "isVirtual": false, + "reference": null, + "inverseOf": null, + "validations": [] + }], + "segments": [], + "actions": [] + }, { + "name": "tournament", + "nameOld": "tournament", + "icon": null, + "integration": null, + "isReadOnly": false, + "isSearchable": true, + "isVirtual": false, + "onlyForRelationships": false, + "paginationType": "page", + "fields": [{ + "field": "createdAt", + "type": "Date", + "defaultValue": null, + "enums": null, + "integration": null, + "isFilterable": true, + "isReadOnly": false, + "isRequired": false, + "isSortable": true, + "isVirtual": false, + "reference": null, + "inverseOf": null, + "validations": [] + }, { + "field": "id", + "type": "String", + "defaultValue": null, + "enums": null, + "integration": null, + "isFilterable": true, + "isReadOnly": false, + "isRequired": false, + "isSortable": true, + "isVirtual": false, + "reference": null, + "inverseOf": null, + "validations": [] + }, { + "field": "isDefault", + "type": "Number", + "defaultValue": null, + "enums": null, + "integration": null, + "isFilterable": true, + "isReadOnly": false, + "isRequired": false, + "isSortable": true, + "isVirtual": false, + "reference": null, + "inverseOf": null, + "validations": [] + }, { + "field": "name", + "type": "String", + "defaultValue": null, + "enums": null, + "integration": null, + "isFilterable": true, + "isReadOnly": false, + "isRequired": false, + "isSortable": true, + "isVirtual": false, + "reference": null, + "inverseOf": null, + "validations": [] + }, { + "field": "status", + "type": "Number", + "defaultValue": null, + "enums": null, + "integration": null, + "isFilterable": true, + "isReadOnly": false, + "isRequired": false, + "isSortable": true, + "isVirtual": false, + "reference": null, + "inverseOf": null, + "validations": [] + }, { + "field": "updatedAt", + "type": "Date", + "defaultValue": null, + "enums": null, + "integration": null, + "isFilterable": true, + "isReadOnly": false, + "isRequired": false, + "isSortable": true, + "isVirtual": false, + "reference": null, + "inverseOf": null, + "validations": [] + }, { + "field": "visibility", + "type": "Number", + "defaultValue": null, + "enums": null, + "integration": null, + "isFilterable": true, + "isReadOnly": false, + "isRequired": false, + "isSortable": true, + "isVirtual": false, + "reference": null, + "inverseOf": null, + "validations": [] + }], + "segments": [], + "actions": [] + }, { + "name": "tournament_member", + "nameOld": "tournament_member", + "icon": null, + "integration": null, + "isReadOnly": false, + "isSearchable": true, + "isVirtual": false, + "onlyForRelationships": false, + "paginationType": "page", + "fields": [{ + "field": "createdAt", + "type": "Date", + "defaultValue": null, + "enums": null, + "integration": null, + "isFilterable": true, + "isReadOnly": false, + "isRequired": false, + "isSortable": true, + "isVirtual": false, + "reference": null, + "inverseOf": null, + "validations": [] + }, { + "field": "id", + "type": "String", + "defaultValue": null, + "enums": null, + "integration": null, + "isFilterable": true, + "isReadOnly": false, + "isRequired": false, + "isSortable": true, + "isVirtual": false, + "reference": null, + "inverseOf": null, + "validations": [] + }, { + "field": "role", + "type": "Number", + "defaultValue": null, + "enums": null, + "integration": null, + "isFilterable": true, + "isReadOnly": false, + "isRequired": false, + "isSortable": true, + "isVirtual": false, + "reference": null, + "inverseOf": null, + "validations": [] + }, { + "field": "tournamentTeamId", + "type": "String", + "defaultValue": null, + "enums": null, + "integration": null, + "isFilterable": true, + "isReadOnly": false, + "isRequired": false, + "isSortable": true, + "isVirtual": false, + "reference": null, + "inverseOf": null, + "validations": [] + }, { + "field": "updatedAt", + "type": "Date", + "defaultValue": null, + "enums": null, + "integration": null, + "isFilterable": true, + "isReadOnly": false, + "isRequired": false, + "isSortable": true, + "isVirtual": false, + "reference": null, + "inverseOf": null, + "validations": [] + }, { + "field": "userId", + "type": "String", + "defaultValue": null, + "enums": null, + "integration": null, + "isFilterable": true, + "isReadOnly": false, + "isRequired": false, + "isSortable": true, + "isVirtual": false, + "reference": null, + "inverseOf": null, + "validations": [] + }], + "segments": [], + "actions": [] + }, { + "name": "tournament_team", + "nameOld": "tournament_team", + "icon": null, + "integration": null, + "isReadOnly": false, + "isSearchable": true, + "isVirtual": false, + "onlyForRelationships": false, + "paginationType": "page", + "fields": [{ + "field": "createdAt", + "type": "Date", + "defaultValue": null, + "enums": null, + "integration": null, + "isFilterable": true, + "isReadOnly": false, + "isRequired": false, + "isSortable": true, + "isVirtual": false, + "reference": null, + "inverseOf": null, + "validations": [] + }, { + "field": "id", + "type": "String", + "defaultValue": null, + "enums": null, + "integration": null, + "isFilterable": true, + "isReadOnly": false, + "isRequired": false, + "isSortable": true, + "isVirtual": false, + "reference": null, + "inverseOf": null, + "validations": [] + }, { + "field": "isDefault", + "type": "Number", + "defaultValue": null, + "enums": null, + "integration": null, + "isFilterable": true, + "isReadOnly": false, + "isRequired": false, + "isSortable": true, + "isVirtual": false, + "reference": null, + "inverseOf": null, + "validations": [] + }, { + "field": "teamId", + "type": "String", + "defaultValue": null, + "enums": null, + "integration": null, + "isFilterable": true, + "isReadOnly": false, + "isRequired": false, + "isSortable": true, + "isVirtual": false, + "reference": null, + "inverseOf": null, + "validations": [] + }, { + "field": "tournamentId", + "type": "String", + "defaultValue": null, + "enums": null, + "integration": null, + "isFilterable": true, + "isReadOnly": false, + "isRequired": false, + "isSortable": true, + "isVirtual": false, + "reference": null, + "inverseOf": null, + "validations": [] + }, { + "field": "updatedAt", + "type": "Date", + "defaultValue": null, + "enums": null, + "integration": null, + "isFilterable": true, + "isReadOnly": false, + "isRequired": false, + "isSortable": true, + "isVirtual": false, + "reference": null, + "inverseOf": null, + "validations": [] + }], + "segments": [], + "actions": [] + }, { + "name": "user", + "nameOld": "user", + "icon": null, + "integration": null, + "isReadOnly": false, + "isSearchable": true, + "isVirtual": false, + "onlyForRelationships": false, + "paginationType": "page", + "fields": [{ + "field": "createdAt", + "type": "Date", + "defaultValue": null, + "enums": null, + "integration": null, + "isFilterable": true, + "isReadOnly": false, + "isRequired": false, + "isSortable": true, + "isVirtual": false, + "reference": null, + "inverseOf": null, + "validations": [] + }, { + "field": "gravatarUrl", + "type": "String", + "defaultValue": null, + "enums": null, + "integration": null, + "isFilterable": true, + "isReadOnly": false, + "isRequired": false, + "isSortable": true, + "isVirtual": false, + "reference": null, + "inverseOf": null, + "validations": [] + }, { + "field": "id", + "type": "String", + "defaultValue": null, + "enums": null, + "integration": null, + "isFilterable": true, + "isReadOnly": false, + "isRequired": false, + "isSortable": true, + "isVirtual": false, + "reference": null, + "inverseOf": null, + "validations": [] + }, { + "field": "isStaff", + "type": "Number", + "defaultValue": null, + "enums": null, + "integration": null, + "isFilterable": true, + "isReadOnly": false, + "isRequired": false, + "isSortable": true, + "isVirtual": false, + "reference": null, + "inverseOf": null, + "validations": [] + }, { + "field": "locale", + "type": "String", + "defaultValue": null, + "enums": null, + "integration": null, + "isFilterable": true, + "isReadOnly": false, + "isRequired": false, + "isSortable": true, + "isVirtual": false, + "reference": null, + "inverseOf": null, + "validations": [] + }, { + "field": "updatedAt", + "type": "Date", + "defaultValue": null, + "enums": null, + "integration": null, + "isFilterable": true, + "isReadOnly": false, + "isRequired": false, + "isSortable": true, + "isVirtual": false, + "reference": null, + "inverseOf": null, + "validations": [] + }, { + "field": "username", + "type": "String", + "defaultValue": null, + "enums": null, + "integration": null, + "isFilterable": true, + "isReadOnly": false, + "isRequired": false, + "isSortable": true, + "isVirtual": false, + "reference": null, + "inverseOf": null, + "validations": [] + }, { + "field": "websiteUrl", + "type": "String", + "defaultValue": null, + "enums": null, + "integration": null, + "isFilterable": true, + "isReadOnly": false, + "isRequired": false, + "isSortable": true, + "isVirtual": false, + "reference": null, + "inverseOf": null, + "validations": [] + }], + "segments": [], + "actions": [] + }, { + "name": "user_session", + "nameOld": "user_session", + "icon": null, + "integration": null, + "isReadOnly": false, + "isSearchable": true, + "isVirtual": false, + "onlyForRelationships": false, + "paginationType": "page", + "fields": [{ + "field": "createdAt", + "type": "Date", + "defaultValue": null, + "enums": null, + "integration": null, + "isFilterable": true, + "isReadOnly": false, + "isRequired": false, + "isSortable": true, + "isVirtual": false, + "reference": null, + "inverseOf": null, + "validations": [] + }, { + "field": "id", + "type": "String", + "defaultValue": null, + "enums": null, + "integration": null, + "isFilterable": true, + "isReadOnly": false, + "isRequired": false, + "isSortable": true, + "isVirtual": false, + "reference": null, + "inverseOf": null, + "validations": [] + }, { + "field": "updatedAt", + "type": "Date", + "defaultValue": null, + "enums": null, + "integration": null, + "isFilterable": true, + "isReadOnly": false, + "isRequired": false, + "isSortable": true, + "isVirtual": false, + "reference": null, + "inverseOf": null, + "validations": [] + }, { + "field": "userId", + "type": "String", + "defaultValue": null, + "enums": null, + "integration": null, + "isFilterable": true, + "isReadOnly": false, + "isRequired": false, + "isSortable": true, + "isVirtual": false, + "reference": null, + "inverseOf": null, + "validations": [] + }], + "segments": [], + "actions": [] + }, { + "name": "whoswho_attempt", + "nameOld": "whoswho_attempt", + "icon": null, + "integration": null, + "isReadOnly": false, + "isSearchable": true, + "isVirtual": false, + "onlyForRelationships": false, + "paginationType": "page", + "fields": [{ + "field": "authorId", + "type": "String", + "defaultValue": null, + "enums": null, + "integration": null, + "isFilterable": true, + "isReadOnly": false, + "isRequired": false, + "isSortable": true, + "isVirtual": false, + "reference": null, + "inverseOf": null, + "validations": [] + }, { + "field": "createdAt", + "type": "Date", + "defaultValue": null, + "enums": null, + "integration": null, + "isFilterable": true, + "isReadOnly": false, + "isRequired": false, + "isSortable": true, + "isVirtual": false, + "reference": null, + "inverseOf": null, + "validations": [] + }, { + "field": "id", + "type": "String", + "defaultValue": null, + "enums": null, + "integration": null, + "isFilterable": true, + "isReadOnly": false, + "isRequired": false, + "isSortable": true, + "isVirtual": false, + "reference": null, + "inverseOf": null, + "validations": [] + }, { + "field": "success", + "type": "Number", + "defaultValue": null, + "enums": null, + "integration": null, + "isFilterable": true, + "isReadOnly": false, + "isRequired": false, + "isSortable": true, + "isVirtual": false, + "reference": null, + "inverseOf": null, + "validations": [] + }, { + "field": "targetMemberId", + "type": "String", + "defaultValue": null, + "enums": null, + "integration": null, + "isFilterable": true, + "isReadOnly": false, + "isRequired": false, + "isSortable": true, + "isVirtual": false, + "reference": null, + "inverseOf": null, + "validations": [] + }, { + "field": "targetTeamId", + "type": "String", + "defaultValue": null, + "enums": null, + "integration": null, + "isFilterable": true, + "isReadOnly": false, + "isRequired": false, + "isSortable": true, + "isVirtual": false, + "reference": null, + "inverseOf": null, + "validations": [] + }, { + "field": "updatedAt", + "type": "Date", + "defaultValue": null, + "enums": null, + "integration": null, + "isFilterable": true, + "isReadOnly": false, + "isRequired": false, + "isSortable": true, + "isVirtual": false, + "reference": null, + "inverseOf": null, + "validations": [] + }], + "segments": [], + "actions": [] + }], + "meta": { + "database_type": "mysql", + "liana": "forest-express-sequelize", + "liana_version": "3.3.4", + "orm_version": "5.8.12" + } +} \ No newline at end of file diff --git a/forestadmin/.gitignore b/forestadmin/.gitignore new file mode 100644 index 000000000..38657bed1 --- /dev/null +++ b/forestadmin/.gitignore @@ -0,0 +1,3 @@ +.DS_Store +node_modules +.env diff --git a/forestadmin/Dockerfile b/forestadmin/Dockerfile new file mode 100644 index 000000000..8444dd5c8 --- /dev/null +++ b/forestadmin/Dockerfile @@ -0,0 +1,8 @@ +FROM node:10 +WORKDIR /usr/src/app +COPY package*.json ./ +RUN npm install lumber-cli -g -s +RUN npm install -s +COPY . . +EXPOSE 3000 +CMD ["npm", "start"] diff --git a/forestadmin/app.js b/forestadmin/app.js new file mode 100644 index 000000000..54a146ffb --- /dev/null +++ b/forestadmin/app.js @@ -0,0 +1,12 @@ +const express = require('express'); +const requireAll = require('require-all'); + +const app = express(); + +requireAll({ + dirname: __dirname + '/middlewares', + recursive: true, + resolve: Module => new Module(app), +}); + +module.exports = app; diff --git a/forestadmin/bin/www b/forestadmin/bin/www new file mode 100644 index 000000000..8e6772494 --- /dev/null +++ b/forestadmin/bin/www @@ -0,0 +1,57 @@ +#!/usr/bin/env node +require('dotenv').config(); +const app = require('../app'); +const debug = require('debug')('{name}:server'); +const http = require('http'); +const chalk = require('chalk'); + +function normalizePort(val) { + var port = parseInt(val, 10); + + if (isNaN(port)) { return val; } + if (port >= 0) { return port; } + + return false; +} + +function onError(error) { + if (error.syscall !== 'listen') { + throw error; + } + + var bind = typeof port === 'string' + ? 'Pipe ' + port + : 'Port ' + port; + + switch (error.code) { + case 'EACCES': + console.error(bind + ' requires elevated privileges'); + process.exit(1); + break; + case 'EADDRINUSE': + console.error(bind + ' is already in use'); + process.exit(1); + break; + default: + throw error; + } +} + +function onListening() { + const addr = server.address(); + const bind = typeof addr === 'string' + ? 'pipe ' + addr + : 'port ' + addr.port; + debug('Listening on ' + bind); + + console.log(chalk.cyan(`Your application is listening on ${bind}.`)); +} + +const port = normalizePort(process.env.APPLICATION_PORT || '3000'); +app.set('port', port); + +const server = http.createServer(app); + +server.listen(port); +server.on('error', onError); +server.on('listening', onListening); diff --git a/forestadmin/middlewares/forestadmin/index.js b/forestadmin/middlewares/forestadmin/index.js new file mode 100644 index 000000000..24e59d66f --- /dev/null +++ b/forestadmin/middlewares/forestadmin/index.js @@ -0,0 +1,17 @@ +const models = require('../../models'); +const requireAll = require('require-all'); + +module.exports = function (app) { + require('lumber-forestadmin').run(app, { + modelsDir: __dirname + '/../../models', + envSecret: process.env.FOREST_ENV_SECRET, + authSecret: process.env.FOREST_AUTH_SECRET, + sequelize: models.sequelize, + }); + + requireAll({ + dirname: __dirname + '/../../routes', + recursive: true, + resolve: Module => app.use('/forest', Module) + }); +}; diff --git a/forestadmin/middlewares/welcome/index.js b/forestadmin/middlewares/welcome/index.js new file mode 100644 index 000000000..a95dc9267 --- /dev/null +++ b/forestadmin/middlewares/welcome/index.js @@ -0,0 +1,13 @@ +const fs = require('fs'); +const _ = require('lodash'); +const requireAll = require('require-all'); + +module.exports = function (app) { + app.get('/', (req, res) => { + const middlewares = requireAll({ dirname: `${__dirname}/..` }); + const templatePath = `${__dirname}/template.txt`; + const template = _.template(fs.readFileSync(templatePath, 'utf-8')); + + res.send(template({ middlewares: Object.keys(middlewares) })); + }); +}; diff --git a/forestadmin/middlewares/welcome/template.txt b/forestadmin/middlewares/welcome/template.txt new file mode 100644 index 000000000..3282548de --- /dev/null +++ b/forestadmin/middlewares/welcome/template.txt @@ -0,0 +1,81 @@ + + + + + LumberJS + + + +

Your application is running!

+ +
+

Installed middlewares

+ +
+ + diff --git a/forestadmin/models/achievement.js b/forestadmin/models/achievement.js new file mode 100644 index 000000000..86e43beca --- /dev/null +++ b/forestadmin/models/achievement.js @@ -0,0 +1,42 @@ +module.exports = (sequelize, DataTypes) => { + const { Sequelize } = sequelize; + const Model = sequelize.define('achievement', { + id: { + type: DataTypes.STRING, + primaryKey: true, + }, + createdAt: { + type: DataTypes.DATE, + }, + updatedAt: { + type: DataTypes.DATE, + }, + type: { + type: DataTypes.INTEGER, + }, + isGlobal: { + type: DataTypes.INTEGER, + }, + comment: { + type: DataTypes.STRING, + }, + argument: { + type: DataTypes.STRING, + }, + authorId: { + type: DataTypes.STRING, + }, + levelValidationId: { + type: DataTypes.STRING, + }, + }, { + tableName: 'achievement', + underscored: true, + }); + + Model.associate = (models) => { + }; + + return Model; +}; + diff --git a/forestadmin/models/auth_method.js b/forestadmin/models/auth_method.js new file mode 100644 index 000000000..3376e2aa6 --- /dev/null +++ b/forestadmin/models/auth_method.js @@ -0,0 +1,51 @@ +module.exports = (sequelize, DataTypes) => { + const { Sequelize } = sequelize; + const Model = sequelize.define('auth_method', { + id: { + type: DataTypes.STRING, + primaryKey: true, + }, + createdAt: { + type: DataTypes.DATE, + }, + updatedAt: { + type: DataTypes.DATE, + }, + identifier: { + type: DataTypes.STRING, + }, + emailAddress: { + type: DataTypes.STRING, + }, + passwordHash: { + type: DataTypes.STRING, + }, + salt: { + type: DataTypes.STRING, + }, + totpToken: { + type: DataTypes.STRING, + }, + url: { + type: DataTypes.STRING, + }, + isVerified: { + type: DataTypes.INTEGER, + }, + provider: { + type: DataTypes.INTEGER, + }, + userId: { + type: DataTypes.STRING, + }, + }, { + tableName: 'auth_method', + underscored: true, + }); + + Model.associate = (models) => { + }; + + return Model; +}; + diff --git a/forestadmin/models/coupon.js b/forestadmin/models/coupon.js new file mode 100644 index 000000000..a34d24244 --- /dev/null +++ b/forestadmin/models/coupon.js @@ -0,0 +1,36 @@ +module.exports = (sequelize, DataTypes) => { + const { Sequelize } = sequelize; + const Model = sequelize.define('coupon', { + id: { + type: DataTypes.STRING, + primaryKey: true, + }, + createdAt: { + type: DataTypes.DATE, + }, + updatedAt: { + type: DataTypes.DATE, + }, + hash: { + type: DataTypes.STRING, + }, + value: { + type: DataTypes.INTEGER, + }, + maxValidationCount: { + type: DataTypes.INTEGER, + }, + tournamentId: { + type: DataTypes.STRING, + }, + }, { + tableName: 'coupon', + underscored: true, + }); + + Model.associate = (models) => { + }; + + return Model; +}; + diff --git a/forestadmin/models/coupon_validation.js b/forestadmin/models/coupon_validation.js new file mode 100644 index 000000000..99c3cf248 --- /dev/null +++ b/forestadmin/models/coupon_validation.js @@ -0,0 +1,33 @@ +module.exports = (sequelize, DataTypes) => { + const { Sequelize } = sequelize; + const Model = sequelize.define('coupon_validation', { + id: { + type: DataTypes.STRING, + primaryKey: true, + }, + createdAt: { + type: DataTypes.DATE, + }, + updatedAt: { + type: DataTypes.DATE, + }, + comment: { + type: DataTypes.STRING, + }, + authorId: { + type: DataTypes.STRING, + }, + couponId: { + type: DataTypes.STRING, + }, + }, { + tableName: 'coupon_validation', + underscored: true, + }); + + Model.associate = (models) => { + }; + + return Model; +}; + diff --git a/forestadmin/models/event.js b/forestadmin/models/event.js new file mode 100644 index 000000000..37c704e95 --- /dev/null +++ b/forestadmin/models/event.js @@ -0,0 +1,24 @@ +module.exports = (sequelize, DataTypes) => { + const { Sequelize } = sequelize; + const Model = sequelize.define('event', { + id: { + type: DataTypes.STRING, + primaryKey: true, + }, + createdAt: { + type: DataTypes.DATE, + }, + updatedAt: { + type: DataTypes.DATE, + }, + }, { + tableName: 'event', + underscored: true, + }); + + Model.associate = (models) => { + }; + + return Model; +}; + diff --git a/forestadmin/models/hypervisor.js b/forestadmin/models/hypervisor.js new file mode 100644 index 000000000..4adde5d7b --- /dev/null +++ b/forestadmin/models/hypervisor.js @@ -0,0 +1,33 @@ +module.exports = (sequelize, DataTypes) => { + const { Sequelize } = sequelize; + const Model = sequelize.define('hypervisor', { + id: { + type: DataTypes.STRING, + primaryKey: true, + }, + createdAt: { + type: DataTypes.DATE, + }, + updatedAt: { + type: DataTypes.DATE, + }, + name: { + type: DataTypes.STRING, + }, + address: { + type: DataTypes.STRING, + }, + status: { + type: DataTypes.INTEGER, + }, + }, { + tableName: 'hypervisor', + underscored: true, + }); + + Model.associate = (models) => { + }; + + return Model; +}; + diff --git a/forestadmin/models/index.js b/forestadmin/models/index.js new file mode 100644 index 000000000..41356a5db --- /dev/null +++ b/forestadmin/models/index.js @@ -0,0 +1,51 @@ +const fs = require('fs'); +const path = require('path'); +const Sequelize = require('sequelize'); + +if (!process.env.DATABASE_URL) { + console.error('Cannot connect to the database. Please declare the DATABASE_URL environment variable with the correct database connection string.'); + process.exit(); +} + +let databaseOptions = { + logging: process.env.NODE_ENV === 'development' ? console.log : false, + pool: { maxConnections: 10, minConnections: 1 }, + dialectOptions: {} +}; + +if (process.env.DATABASE_SSL && JSON.parse(process.env.DATABASE_SSL.toLowerCase())) { + databaseOptions.dialectOptions.ssl = true; +} + +if (process.env.DATABASE_ENCRYPT && JSON.parse(process.env.DATABASE_ENCRYPT.toLowerCase())) { + databaseOptions.dialectOptions.encrypt = true; +} + +let sequelize = new Sequelize(process.env.DATABASE_URL, databaseOptions); +let db = {}; + +fs + .readdirSync(__dirname) + .filter(function (file) { + return (file.indexOf('.') !== 0) && (file !== 'index.js'); + }) + .forEach(function (file) { + try { + var model = sequelize['import'](path.join(__dirname, file)); + db[model.name] = model; + } catch (error) { + console.error('Model creation error: ' + error); + } + }); + +Object.keys(db).forEach(function(modelName) { + if ('associate' in db[modelName]) { + db[modelName].associate(db); + } +}); + +db.sequelize = sequelize; +db.Sequelize = Sequelize; + +module.exports = db; + diff --git a/forestadmin/models/inventory_item.js b/forestadmin/models/inventory_item.js new file mode 100644 index 000000000..56fe1f197 --- /dev/null +++ b/forestadmin/models/inventory_item.js @@ -0,0 +1,30 @@ +module.exports = (sequelize, DataTypes) => { + const { Sequelize } = sequelize; + const Model = sequelize.define('inventory_item', { + id: { + type: DataTypes.STRING, + primaryKey: true, + }, + createdAt: { + type: DataTypes.DATE, + }, + updatedAt: { + type: DataTypes.DATE, + }, + item: { + type: DataTypes.INTEGER, + }, + ownerId: { + type: DataTypes.STRING, + }, + }, { + tableName: 'inventory_item', + underscored: true, + }); + + Model.associate = (models) => { + }; + + return Model; +}; + diff --git a/forestadmin/models/level.js b/forestadmin/models/level.js new file mode 100644 index 000000000..43799c5ac --- /dev/null +++ b/forestadmin/models/level.js @@ -0,0 +1,42 @@ +module.exports = (sequelize, DataTypes) => { + const { Sequelize } = sequelize; + const Model = sequelize.define('level', { + id: { + type: DataTypes.STRING, + primaryKey: true, + }, + createdAt: { + type: DataTypes.DATE, + }, + updatedAt: { + type: DataTypes.DATE, + }, + name: { + type: DataTypes.STRING, + }, + description: { + type: DataTypes.STRING, + }, + author: { + type: DataTypes.STRING, + }, + locale: { + type: DataTypes.STRING, + }, + isDraft: { + type: DataTypes.INTEGER, + }, + previewUrl: { + type: DataTypes.STRING, + }, + }, { + tableName: 'level', + underscored: true, + }); + + Model.associate = (models) => { + }; + + return Model; +}; + diff --git a/forestadmin/models/level_flavor.js b/forestadmin/models/level_flavor.js new file mode 100644 index 000000000..fa2fe77d2 --- /dev/null +++ b/forestadmin/models/level_flavor.js @@ -0,0 +1,27 @@ +module.exports = (sequelize, DataTypes) => { + const { Sequelize } = sequelize; + const Model = sequelize.define('level_flavor', { + id: { + type: DataTypes.STRING, + primaryKey: true, + }, + createdAt: { + type: DataTypes.DATE, + }, + updatedAt: { + type: DataTypes.DATE, + }, + levelVersionId: { + type: DataTypes.STRING, + }, + }, { + tableName: 'level_flavor', + underscored: true, + }); + + Model.associate = (models) => { + }; + + return Model; +}; + diff --git a/forestadmin/models/level_instance.js b/forestadmin/models/level_instance.js new file mode 100644 index 000000000..88dcb641e --- /dev/null +++ b/forestadmin/models/level_instance.js @@ -0,0 +1,33 @@ +module.exports = (sequelize, DataTypes) => { + const { Sequelize } = sequelize; + const Model = sequelize.define('level_instance', { + id: { + type: DataTypes.STRING, + primaryKey: true, + }, + createdAt: { + type: DataTypes.DATE, + }, + updatedAt: { + type: DataTypes.DATE, + }, + status: { + type: DataTypes.INTEGER, + }, + hypervisorId: { + type: DataTypes.STRING, + }, + flavorId: { + type: DataTypes.STRING, + }, + }, { + tableName: 'level_instance', + underscored: true, + }); + + Model.associate = (models) => { + }; + + return Model; +}; + diff --git a/forestadmin/models/level_subscription.js b/forestadmin/models/level_subscription.js new file mode 100644 index 000000000..fbc2d0361 --- /dev/null +++ b/forestadmin/models/level_subscription.js @@ -0,0 +1,30 @@ +module.exports = (sequelize, DataTypes) => { + const { Sequelize } = sequelize; + const Model = sequelize.define('level_subscription', { + id: { + type: DataTypes.STRING, + primaryKey: true, + }, + createdAt: { + type: DataTypes.DATE, + }, + updatedAt: { + type: DataTypes.DATE, + }, + tournamentTeamId: { + type: DataTypes.STRING, + }, + levelFlavorId: { + type: DataTypes.STRING, + }, + }, { + tableName: 'level_subscription', + underscored: true, + }); + + Model.associate = (models) => { + }; + + return Model; +}; + diff --git a/forestadmin/models/level_validation.js b/forestadmin/models/level_validation.js new file mode 100644 index 000000000..73a18eead --- /dev/null +++ b/forestadmin/models/level_validation.js @@ -0,0 +1,36 @@ +module.exports = (sequelize, DataTypes) => { + const { Sequelize } = sequelize; + const Model = sequelize.define('level_validation', { + id: { + type: DataTypes.STRING, + primaryKey: true, + }, + createdAt: { + type: DataTypes.DATE, + }, + updatedAt: { + type: DataTypes.DATE, + }, + status: { + type: DataTypes.INTEGER, + }, + authorComment: { + type: DataTypes.STRING, + }, + correctorComment: { + type: DataTypes.STRING, + }, + levelSubscriptionId: { + type: DataTypes.STRING, + }, + }, { + tableName: 'level_validation', + underscored: true, + }); + + Model.associate = (models) => { + }; + + return Model; +}; + diff --git a/forestadmin/models/level_version.js b/forestadmin/models/level_version.js new file mode 100644 index 000000000..c54e9d3bd --- /dev/null +++ b/forestadmin/models/level_version.js @@ -0,0 +1,45 @@ +module.exports = (sequelize, DataTypes) => { + const { Sequelize } = sequelize; + const Model = sequelize.define('level_version', { + id: { + type: DataTypes.STRING, + primaryKey: true, + }, + createdAt: { + type: DataTypes.DATE, + }, + updatedAt: { + type: DataTypes.DATE, + }, + version: { + type: DataTypes.STRING, + }, + changelog: { + type: DataTypes.STRING, + }, + isDraft: { + type: DataTypes.INTEGER, + }, + isLatest: { + type: DataTypes.INTEGER, + }, + sourceUrl: { + type: DataTypes.STRING, + }, + driver: { + type: DataTypes.INTEGER, + }, + levelId: { + type: DataTypes.STRING, + }, + }, { + tableName: 'level_version', + underscored: true, + }); + + Model.associate = (models) => { + }; + + return Model; +}; + diff --git a/forestadmin/models/notification.js b/forestadmin/models/notification.js new file mode 100644 index 000000000..4d9439e2d --- /dev/null +++ b/forestadmin/models/notification.js @@ -0,0 +1,39 @@ +module.exports = (sequelize, DataTypes) => { + const { Sequelize } = sequelize; + const Model = sequelize.define('notification', { + id: { + type: DataTypes.STRING, + primaryKey: true, + }, + createdAt: { + type: DataTypes.DATE, + }, + updatedAt: { + type: DataTypes.DATE, + }, + isRead: { + type: DataTypes.INTEGER, + }, + clickUrl: { + type: DataTypes.STRING, + }, + msg: { + type: DataTypes.STRING, + }, + args: { + type: DataTypes.STRING, + }, + userId: { + type: DataTypes.STRING, + }, + }, { + tableName: 'notification', + underscored: true, + }); + + Model.associate = (models) => { + }; + + return Model; +}; + diff --git a/forestadmin/models/team.js b/forestadmin/models/team.js new file mode 100644 index 000000000..41894ddcb --- /dev/null +++ b/forestadmin/models/team.js @@ -0,0 +1,33 @@ +module.exports = (sequelize, DataTypes) => { + const { Sequelize } = sequelize; + const Model = sequelize.define('team', { + id: { + type: DataTypes.STRING, + primaryKey: true, + }, + createdAt: { + type: DataTypes.DATE, + }, + updatedAt: { + type: DataTypes.DATE, + }, + name: { + type: DataTypes.STRING, + }, + gravatarUrl: { + type: DataTypes.STRING, + }, + locale: { + type: DataTypes.STRING, + }, + }, { + tableName: 'team', + underscored: true, + }); + + Model.associate = (models) => { + }; + + return Model; +}; + diff --git a/forestadmin/models/team_member.js b/forestadmin/models/team_member.js new file mode 100644 index 000000000..b283aba91 --- /dev/null +++ b/forestadmin/models/team_member.js @@ -0,0 +1,33 @@ +module.exports = (sequelize, DataTypes) => { + const { Sequelize } = sequelize; + const Model = sequelize.define('team_member', { + id: { + type: DataTypes.STRING, + primaryKey: true, + }, + createdAt: { + type: DataTypes.DATE, + }, + updatedAt: { + type: DataTypes.DATE, + }, + role: { + type: DataTypes.INTEGER, + }, + userId: { + type: DataTypes.STRING, + }, + teamId: { + type: DataTypes.STRING, + }, + }, { + tableName: 'team_member', + underscored: true, + }); + + Model.associate = (models) => { + }; + + return Model; +}; + diff --git a/forestadmin/models/tournament.js b/forestadmin/models/tournament.js new file mode 100644 index 000000000..c7512e3a9 --- /dev/null +++ b/forestadmin/models/tournament.js @@ -0,0 +1,36 @@ +module.exports = (sequelize, DataTypes) => { + const { Sequelize } = sequelize; + const Model = sequelize.define('tournament', { + id: { + type: DataTypes.STRING, + primaryKey: true, + }, + createdAt: { + type: DataTypes.DATE, + }, + updatedAt: { + type: DataTypes.DATE, + }, + name: { + type: DataTypes.STRING, + }, + status: { + type: DataTypes.INTEGER, + }, + visibility: { + type: DataTypes.INTEGER, + }, + isDefault: { + type: DataTypes.INTEGER, + }, + }, { + tableName: 'tournament', + underscored: true, + }); + + Model.associate = (models) => { + }; + + return Model; +}; + diff --git a/forestadmin/models/tournament_member.js b/forestadmin/models/tournament_member.js new file mode 100644 index 000000000..92830886e --- /dev/null +++ b/forestadmin/models/tournament_member.js @@ -0,0 +1,33 @@ +module.exports = (sequelize, DataTypes) => { + const { Sequelize } = sequelize; + const Model = sequelize.define('tournament_member', { + id: { + type: DataTypes.STRING, + primaryKey: true, + }, + createdAt: { + type: DataTypes.DATE, + }, + updatedAt: { + type: DataTypes.DATE, + }, + role: { + type: DataTypes.INTEGER, + }, + userId: { + type: DataTypes.STRING, + }, + tournamentTeamId: { + type: DataTypes.STRING, + }, + }, { + tableName: 'tournament_member', + underscored: true, + }); + + Model.associate = (models) => { + }; + + return Model; +}; + diff --git a/forestadmin/models/tournament_team.js b/forestadmin/models/tournament_team.js new file mode 100644 index 000000000..1707a6c8f --- /dev/null +++ b/forestadmin/models/tournament_team.js @@ -0,0 +1,33 @@ +module.exports = (sequelize, DataTypes) => { + const { Sequelize } = sequelize; + const Model = sequelize.define('tournament_team', { + id: { + type: DataTypes.STRING, + primaryKey: true, + }, + createdAt: { + type: DataTypes.DATE, + }, + updatedAt: { + type: DataTypes.DATE, + }, + isDefault: { + type: DataTypes.INTEGER, + }, + tournamentId: { + type: DataTypes.STRING, + }, + teamId: { + type: DataTypes.STRING, + }, + }, { + tableName: 'tournament_team', + underscored: true, + }); + + Model.associate = (models) => { + }; + + return Model; +}; + diff --git a/forestadmin/models/user.js b/forestadmin/models/user.js new file mode 100644 index 000000000..06137716d --- /dev/null +++ b/forestadmin/models/user.js @@ -0,0 +1,39 @@ +module.exports = (sequelize, DataTypes) => { + const { Sequelize } = sequelize; + const Model = sequelize.define('user', { + id: { + type: DataTypes.STRING, + primaryKey: true, + }, + createdAt: { + type: DataTypes.DATE, + }, + updatedAt: { + type: DataTypes.DATE, + }, + username: { + type: DataTypes.STRING, + }, + gravatarUrl: { + type: DataTypes.STRING, + }, + websiteUrl: { + type: DataTypes.STRING, + }, + locale: { + type: DataTypes.STRING, + }, + isStaff: { + type: DataTypes.INTEGER, + }, + }, { + tableName: 'user', + underscored: true, + }); + + Model.associate = (models) => { + }; + + return Model; +}; + diff --git a/forestadmin/models/user_session.js b/forestadmin/models/user_session.js new file mode 100644 index 000000000..3c37fb75e --- /dev/null +++ b/forestadmin/models/user_session.js @@ -0,0 +1,27 @@ +module.exports = (sequelize, DataTypes) => { + const { Sequelize } = sequelize; + const Model = sequelize.define('user_session', { + id: { + type: DataTypes.STRING, + primaryKey: true, + }, + createdAt: { + type: DataTypes.DATE, + }, + updatedAt: { + type: DataTypes.DATE, + }, + userId: { + type: DataTypes.STRING, + }, + }, { + tableName: 'user_session', + underscored: true, + }); + + Model.associate = (models) => { + }; + + return Model; +}; + diff --git a/forestadmin/models/whoswho_attempt.js b/forestadmin/models/whoswho_attempt.js new file mode 100644 index 000000000..afda5ab5a --- /dev/null +++ b/forestadmin/models/whoswho_attempt.js @@ -0,0 +1,36 @@ +module.exports = (sequelize, DataTypes) => { + const { Sequelize } = sequelize; + const Model = sequelize.define('whoswho_attempt', { + id: { + type: DataTypes.STRING, + primaryKey: true, + }, + createdAt: { + type: DataTypes.DATE, + }, + updatedAt: { + type: DataTypes.DATE, + }, + success: { + type: DataTypes.INTEGER, + }, + authorId: { + type: DataTypes.STRING, + }, + targetMemberId: { + type: DataTypes.STRING, + }, + targetTeamId: { + type: DataTypes.STRING, + }, + }, { + tableName: 'whoswho_attempt', + underscored: true, + }); + + Model.associate = (models) => { + }; + + return Model; +}; + diff --git a/forestadmin/package-lock.json b/forestadmin/package-lock.json new file mode 100644 index 000000000..dee7141f3 --- /dev/null +++ b/forestadmin/package-lock.json @@ -0,0 +1,1998 @@ +{ + "name": "pathwar", + "version": "0.0.1", + "lockfileVersion": 1, + "requires": true, + "dependencies": { + "@types/debug": { + "version": "0.0.29", + "resolved": "https://registry.npmjs.org/@types/debug/-/debug-0.0.29.tgz", + "integrity": "sha1-oeUUrfvZLwOiJLpU1pMRHb8fN1Q=" + }, + "@types/node": { + "version": "12.7.4", + "resolved": "https://registry.npmjs.org/@types/node/-/node-12.7.4.tgz", + "integrity": "sha512-W0+n1Y+gK/8G2P/piTkBBN38Qc5Q1ZSO6B5H3QmPCUewaiXOo2GCAWZ4ElZCcNhjJuBSUSLGFUJnmlCn5+nxOQ==" + }, + "accepts": { + "version": "1.3.7", + "resolved": "https://registry.npmjs.org/accepts/-/accepts-1.3.7.tgz", + "integrity": "sha512-Il80Qs2WjYlJIBNzNkK6KYqlVMTbZLXgHx2oT0pU/fjRHyEp+PEfEPY0R3WCwAGVOtauxh1hOxNgIf5bv7dQpA==", + "requires": { + "mime-types": "~2.1.24", + "negotiator": "0.6.2" + } + }, + "ansi-regex": { + "version": "2.1.1", + "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-2.1.1.tgz", + "integrity": "sha1-w7M6te42DYbg5ijwRorn7yfWVN8=" + }, + "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" + } + }, + "ansicolors": { + "version": "0.2.1", + "resolved": "https://registry.npmjs.org/ansicolors/-/ansicolors-0.2.1.tgz", + "integrity": "sha1-vgiVmQl7dKXJxKhKDNvNtivYeu8=" + }, + "any-promise": { + "version": "1.3.0", + "resolved": "https://registry.npmjs.org/any-promise/-/any-promise-1.3.0.tgz", + "integrity": "sha1-q8av7tzqUugJzcA3au0845Y10X8=" + }, + "array-flatten": { + "version": "2.1.2", + "resolved": "https://registry.npmjs.org/array-flatten/-/array-flatten-2.1.2.tgz", + "integrity": "sha512-hNfzcOV8W4NdualtqBFPyVO+54DSJuZGY9qT4pRroB6S9e3iiido2ISIC5h9R2sPJ8H3FHCIiEnsv1lPXO3KtQ==" + }, + "assert-plus": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/assert-plus/-/assert-plus-1.0.0.tgz", + "integrity": "sha1-8S4PPF13sLHN2RRpQuTpbB5N1SU=" + }, + "async": { + "version": "1.5.2", + "resolved": "https://registry.npmjs.org/async/-/async-1.5.2.tgz", + "integrity": "sha1-7GphrlZIDAw8skHJVhjiCJL5Zyo=" + }, + "asynckit": { + "version": "0.4.0", + "resolved": "https://registry.npmjs.org/asynckit/-/asynckit-0.4.0.tgz", + "integrity": "sha1-x57Zf380y48robyXkLzDZkdLS3k=" + }, + "atob": { + "version": "2.1.2", + "resolved": "https://registry.npmjs.org/atob/-/atob-2.1.2.tgz", + "integrity": "sha512-Wm6ukoaOGJi/73p/cl2GvLjTI5JM1k/O14isD73YML8StrH/7/lRFgmg8nICZgD3bZZvjwCGxtMOD3wWNAu8cg==" + }, + "babel-runtime": { + "version": "7.0.0-beta.3", + "resolved": "https://registry.npmjs.org/babel-runtime/-/babel-runtime-7.0.0-beta.3.tgz", + "integrity": "sha512-jlzZ8RACjt0QGxq+wqsw5bCQE9RcUyWpw987mDY3GYxTpOQT2xoyNoG++oVCHzr/nACLBIprfVBNvv/If1ZYcg==", + "requires": { + "core-js": "^2.4.0", + "regenerator-runtime": "^0.11.0" + } + }, + "base32-encode": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/base32-encode/-/base32-encode-1.1.0.tgz", + "integrity": "sha512-fQWhpkWtaOPr+wvXWYDu1AfRbtIIzWDt3yDDNXLENWPwFyyxDJfVaJoOc1ks1TQckogPiHmb+0iZLQFPkZw8kg==" + }, + "bcryptjs": { + "version": "2.4.3", + "resolved": "https://registry.npmjs.org/bcryptjs/-/bcryptjs-2.4.3.tgz", + "integrity": "sha1-mrVie5PmBiH/fNrF2pczAn3x0Ms=" + }, + "bitwise-xor": { + "version": "0.0.0", + "resolved": "https://registry.npmjs.org/bitwise-xor/-/bitwise-xor-0.0.0.tgz", + "integrity": "sha1-BAqBcrW7jMVisLcRnyMLKhp4Dj0=" + }, + "bluebird": { + "version": "3.5.5", + "resolved": "https://registry.npmjs.org/bluebird/-/bluebird-3.5.5.tgz", + "integrity": "sha512-5am6HnnfN+urzt4yfg7IgTbotDjIT/u8AJpEt0sIU9FtXfVeezXAPKswrG+xKUCOYAINpSdgZVDU6QFh+cuH3w==" + }, + "body-parser": { + "version": "1.18.2", + "resolved": "https://registry.npmjs.org/body-parser/-/body-parser-1.18.2.tgz", + "integrity": "sha1-h2eKGdhLR9hZuDGZvVm84iKxBFQ=", + "requires": { + "bytes": "3.0.0", + "content-type": "~1.0.4", + "debug": "2.6.9", + "depd": "~1.1.1", + "http-errors": "~1.6.2", + "iconv-lite": "0.4.19", + "on-finished": "~2.3.0", + "qs": "6.5.1", + "raw-body": "2.3.2", + "type-is": "~1.6.15" + }, + "dependencies": { + "debug": { + "version": "2.6.9", + "resolved": "https://registry.npmjs.org/debug/-/debug-2.6.9.tgz", + "integrity": "sha512-bC7ElrdJaJnPbAP+1EotYvqZsb3ecl5wi6Bfi6BJTUcNowp6cvspg0jXznRTKDjm/E7AdgFBVeAPVMNcKGsHMA==", + "requires": { + "ms": "2.0.0" + } + }, + "http-errors": { + "version": "1.6.3", + "resolved": "https://registry.npmjs.org/http-errors/-/http-errors-1.6.3.tgz", + "integrity": "sha1-i1VoC7S+KDoLW/TqLjhYC+HZMg0=", + "requires": { + "depd": "~1.1.2", + "inherits": "2.0.3", + "setprototypeof": "1.1.0", + "statuses": ">= 1.4.0 < 2" + } + } + } + }, + "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": "sha1-+OcRMvf/5uAaXJaXpMbz5I1cyBk=" + }, + "bytes": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/bytes/-/bytes-3.0.0.tgz", + "integrity": "sha1-0ygVQE1olpn4Wk6k+odV3ROpYEg=" + }, + "cardinal": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/cardinal/-/cardinal-1.0.0.tgz", + "integrity": "sha1-UOIcGwqjdyn5N33vGWtanOyTLuk=", + "requires": { + "ansicolors": "~0.2.1", + "redeyed": "~1.0.0" + } + }, + "chalk": { + "version": "1.1.3", + "resolved": "https://registry.npmjs.org/chalk/-/chalk-1.1.3.tgz", + "integrity": "sha1-qBFcVeSnAv5NFQq9OHKCKn4J/Jg=", + "requires": { + "ansi-styles": "^2.2.1", + "escape-string-regexp": "^1.0.2", + "has-ansi": "^2.0.0", + "strip-ansi": "^3.0.0", + "supports-color": "^2.0.0" + }, + "dependencies": { + "ansi-styles": { + "version": "2.2.1", + "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-2.2.1.tgz", + "integrity": "sha1-tDLdM1i2NM914eRmQ2gkBTPB3b4=" + }, + "supports-color": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-2.0.0.tgz", + "integrity": "sha1-U10EXOa2Nj+kARcIRimZXp3zJMc=" + } + } + }, + "cls-bluebird": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/cls-bluebird/-/cls-bluebird-2.1.0.tgz", + "integrity": "sha1-N+8eCAqP+1XC9BZPU28ZGeeWiu4=", + "requires": { + "is-bluebird": "^1.0.2", + "shimmer": "^1.1.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": "sha1-p9BVi9icQveV3UIyj3QIMcpTvCU=" + }, + "colors": { + "version": "1.0.3", + "resolved": "https://registry.npmjs.org/colors/-/colors-1.0.3.tgz", + "integrity": "sha1-BDP0TYCWgP3rYO0mDxsMJi6CpAs=" + }, + "combined-stream": { + "version": "1.0.8", + "resolved": "https://registry.npmjs.org/combined-stream/-/combined-stream-1.0.8.tgz", + "integrity": "sha512-FQN4MRfuJeHf7cBbBMJFXhKSDq+2kAArBlmRBvcvFE5BB1HZKXtSFASDhdlz9zOYwxh8lDdnvmMOe/+5cdoEdg==", + "requires": { + "delayed-stream": "~1.0.0" + } + }, + "component-emitter": { + "version": "1.3.0", + "resolved": "https://registry.npmjs.org/component-emitter/-/component-emitter-1.3.0.tgz", + "integrity": "sha512-Rd3se6QB+sO1TwqZjscQrurpEPIfO0/yYnSin6Q/rD3mOutHvUrCAhJub3r90uNb+SESBuE0QYoB90YdfatsRg==" + }, + "compose-middleware": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/compose-middleware/-/compose-middleware-4.0.0.tgz", + "integrity": "sha512-8GBuTt6Q8ukt9XJ4Gka/PGAMHIZwtWgxN4kPnP+giUKUs9WFpCJGmEVk0Jij65UgoiVwC0hIHW5EQQghnIEUjQ==", + "requires": { + "@types/debug": "0.0.29", + "array-flatten": "^2.1.0", + "debug": "^3.1.0" + }, + "dependencies": { + "debug": { + "version": "3.2.6", + "resolved": "https://registry.npmjs.org/debug/-/debug-3.2.6.tgz", + "integrity": "sha512-mel+jf7nrtEl5Pn1Qx46zARXKDpBbvzezse7p7LqINmdoIk8PYP5SySaxEmYv6TZ0JyEKA1hsCId6DIhgITtWQ==", + "requires": { + "ms": "^2.1.1" + } + }, + "ms": { + "version": "2.1.2", + "resolved": "https://registry.npmjs.org/ms/-/ms-2.1.2.tgz", + "integrity": "sha512-sGkPx+VjMtmA6MX27oA4FBFELFCZZ4S4XqeGOXCv68tT+jb3vk/RyaKWP0PTKyWtmLSM0b+adUTEvbs1PEaH2w==" + } + } + }, + "content-disposition": { + "version": "0.5.2", + "resolved": "https://registry.npmjs.org/content-disposition/-/content-disposition-0.5.2.tgz", + "integrity": "sha1-DPaLud318r55YcOoUXjLhdunjLQ=" + }, + "content-type": { + "version": "1.0.4", + "resolved": "https://registry.npmjs.org/content-type/-/content-type-1.0.4.tgz", + "integrity": "sha512-hIP3EEPs8tB9AT1L+NUqtwOAps4mk2Zob89MWXMHjHWg9milF/j4osnnQLXBCBFBk/tvIG/tUc9mOUJiPBhPXA==" + }, + "cookie": { + "version": "0.3.1", + "resolved": "https://registry.npmjs.org/cookie/-/cookie-0.3.1.tgz", + "integrity": "sha1-5+Ch+e9DtMi6klxcWpboBtFoc7s=" + }, + "cookie-signature": { + "version": "1.0.6", + "resolved": "https://registry.npmjs.org/cookie-signature/-/cookie-signature-1.0.6.tgz", + "integrity": "sha1-4wOogrNCzD7oylE6eZmXNNqzriw=" + }, + "cookiejar": { + "version": "2.1.2", + "resolved": "https://registry.npmjs.org/cookiejar/-/cookiejar-2.1.2.tgz", + "integrity": "sha512-Mw+adcfzPxcPeI+0WlvRrr/3lGVO0bD75SxX6811cxSh1Wbxx7xZBGK1eVtDf6si8rg2lhnUjsVLMFMfbRIuwA==" + }, + "core-js": { + "version": "2.6.9", + "resolved": "https://registry.npmjs.org/core-js/-/core-js-2.6.9.tgz", + "integrity": "sha512-HOpZf6eXmnl7la+cUdMnLvUxKNqLUzJvgIziQ0DiF3JwSImNphIqdGqzj6hIKyX04MmV0poclQ7+wjWvxQyR2A==" + }, + "core-util-is": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/core-util-is/-/core-util-is-1.0.2.tgz", + "integrity": "sha1-tf1UIgqivFq1eqtxQMlAdUUDwac=" + }, + "cors": { + "version": "2.8.5", + "resolved": "https://registry.npmjs.org/cors/-/cors-2.8.5.tgz", + "integrity": "sha512-KIHbLJqu73RGr/hnbrO9uBeixNGuvSQjul/jdFvS/KFSIH1hWVd1ng7zOHx+YrEfInLG7q4n6GHQ9cDtxv/P6g==", + "requires": { + "object-assign": "^4", + "vary": "^1" + } + }, + "csv-stringify": { + "version": "1.0.4", + "resolved": "https://registry.npmjs.org/csv-stringify/-/csv-stringify-1.0.4.tgz", + "integrity": "sha1-vBi6ua1M7zGV/SV5gLWLR5xC0+U=", + "requires": { + "lodash.get": "^4.0.0" + } + }, + "cycle": { + "version": "1.0.3", + "resolved": "https://registry.npmjs.org/cycle/-/cycle-1.0.3.tgz", + "integrity": "sha1-IegLK+hYD5i0aPN5QwZisEbDStI=" + }, + "debug": { + "version": "4.0.1", + "resolved": "https://registry.npmjs.org/debug/-/debug-4.0.1.tgz", + "integrity": "sha512-K23FHJ/Mt404FSlp6gSZCevIbTMLX0j3fmHhUEhQ3Wq0FMODW3+cUSoLdy1Gx4polAf4t/lphhmHH35BB8cLYw==", + "requires": { + "ms": "^2.1.1" + }, + "dependencies": { + "ms": { + "version": "2.1.2", + "resolved": "https://registry.npmjs.org/ms/-/ms-2.1.2.tgz", + "integrity": "sha512-sGkPx+VjMtmA6MX27oA4FBFELFCZZ4S4XqeGOXCv68tT+jb3vk/RyaKWP0PTKyWtmLSM0b+adUTEvbs1PEaH2w==" + } + } + }, + "delayed-stream": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/delayed-stream/-/delayed-stream-1.0.0.tgz", + "integrity": "sha1-3zrhmayt+31ECqrgsp4icrJOxhk=" + }, + "denque": { + "version": "1.4.1", + "resolved": "https://registry.npmjs.org/denque/-/denque-1.4.1.tgz", + "integrity": "sha512-OfzPuSZKGcgr96rf1oODnfjqBFmr1DVoc/TrItj3Ohe0Ah1C5WX5Baquw/9U9KovnQ88EqmJbD66rKYUQYN1tQ==" + }, + "depd": { + "version": "1.1.2", + "resolved": "https://registry.npmjs.org/depd/-/depd-1.1.2.tgz", + "integrity": "sha1-m81S4UwJd2PnSbJ0xDRu0uVgtak=" + }, + "destroy": { + "version": "1.0.4", + "resolved": "https://registry.npmjs.org/destroy/-/destroy-1.0.4.tgz", + "integrity": "sha1-l4hXRCxEdJ5CBmE+N5RiBYJqvYA=" + }, + "dotenv": { + "version": "6.1.0", + "resolved": "https://registry.npmjs.org/dotenv/-/dotenv-6.1.0.tgz", + "integrity": "sha512-/veDn2ztgRlB7gKmE3i9f6CmDIyXAy6d5nBq+whO9SLX+Zs1sXEgFLPi+aSuWqUuusMfbi84fT8j34fs1HaYUw==" + }, + "dottie": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/dottie/-/dottie-2.0.1.tgz", + "integrity": "sha512-ch5OQgvGDK2u8pSZeSYAQaV/lczImd7pMJ7BcEPXmnFVjy4yJIzP6CsODJUTH8mg1tyH1Z2abOiuJO3DjZ/GBw==" + }, + "ecdsa-sig-formatter": { + "version": "1.0.11", + "resolved": "https://registry.npmjs.org/ecdsa-sig-formatter/-/ecdsa-sig-formatter-1.0.11.tgz", + "integrity": "sha512-nagl3RYrbNv6kQkeJIpt6NJZy8twLB/2vtz6yN9Z4vRKHN4/QZJIEbqohALSgwKdnksuY3k5Addp5lg8sVoVcQ==", + "requires": { + "safe-buffer": "^5.0.1" + } + }, + "ee-first": { + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/ee-first/-/ee-first-1.1.1.tgz", + "integrity": "sha1-WQxhFWsK4vTwJVcyoViyZrxWsh0=" + }, + "encodeurl": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/encodeurl/-/encodeurl-1.0.2.tgz", + "integrity": "sha1-rT/0yG7C0CkyL1oCw6mmBslbP1k=" + }, + "escape-html": { + "version": "1.0.3", + "resolved": "https://registry.npmjs.org/escape-html/-/escape-html-1.0.3.tgz", + "integrity": "sha1-Aljq5NPQwJdN4cFpGI7wBR0dGYg=" + }, + "escape-string-regexp": { + "version": "1.0.5", + "resolved": "https://registry.npmjs.org/escape-string-regexp/-/escape-string-regexp-1.0.5.tgz", + "integrity": "sha1-G2HAViGQqN/2rjuyzwIAyhMLhtQ=" + }, + "esprima": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/esprima/-/esprima-3.0.0.tgz", + "integrity": "sha1-U88kes2ncxPlUcOqLnM0LT+099k=" + }, + "etag": { + "version": "1.8.1", + "resolved": "https://registry.npmjs.org/etag/-/etag-1.8.1.tgz", + "integrity": "sha1-Qa4u62XvpiJorr/qg6x9eSmbCIc=" + }, + "express": { + "version": "4.16.4", + "resolved": "https://registry.npmjs.org/express/-/express-4.16.4.tgz", + "integrity": "sha512-j12Uuyb4FMrd/qQAm6uCHAkPtO8FDTRJZBDd5D2KOL2eLaz1yUNdUB/NOIyq0iU4q4cFarsUCrnFDPBcnksuOg==", + "requires": { + "accepts": "~1.3.5", + "array-flatten": "1.1.1", + "body-parser": "1.18.3", + "content-disposition": "0.5.2", + "content-type": "~1.0.4", + "cookie": "0.3.1", + "cookie-signature": "1.0.6", + "debug": "2.6.9", + "depd": "~1.1.2", + "encodeurl": "~1.0.2", + "escape-html": "~1.0.3", + "etag": "~1.8.1", + "finalhandler": "1.1.1", + "fresh": "0.5.2", + "merge-descriptors": "1.0.1", + "methods": "~1.1.2", + "on-finished": "~2.3.0", + "parseurl": "~1.3.2", + "path-to-regexp": "0.1.7", + "proxy-addr": "~2.0.4", + "qs": "6.5.2", + "range-parser": "~1.2.0", + "safe-buffer": "5.1.2", + "send": "0.16.2", + "serve-static": "1.13.2", + "setprototypeof": "1.1.0", + "statuses": "~1.4.0", + "type-is": "~1.6.16", + "utils-merge": "1.0.1", + "vary": "~1.1.2" + }, + "dependencies": { + "array-flatten": { + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/array-flatten/-/array-flatten-1.1.1.tgz", + "integrity": "sha1-ml9pkFGx5wczKPKgCJaLZOopVdI=" + }, + "body-parser": { + "version": "1.18.3", + "resolved": "https://registry.npmjs.org/body-parser/-/body-parser-1.18.3.tgz", + "integrity": "sha1-WykhmP/dVTs6DyDe0FkrlWlVyLQ=", + "requires": { + "bytes": "3.0.0", + "content-type": "~1.0.4", + "debug": "2.6.9", + "depd": "~1.1.2", + "http-errors": "~1.6.3", + "iconv-lite": "0.4.23", + "on-finished": "~2.3.0", + "qs": "6.5.2", + "raw-body": "2.3.3", + "type-is": "~1.6.16" + } + }, + "debug": { + "version": "2.6.9", + "resolved": "https://registry.npmjs.org/debug/-/debug-2.6.9.tgz", + "integrity": "sha512-bC7ElrdJaJnPbAP+1EotYvqZsb3ecl5wi6Bfi6BJTUcNowp6cvspg0jXznRTKDjm/E7AdgFBVeAPVMNcKGsHMA==", + "requires": { + "ms": "2.0.0" + } + }, + "finalhandler": { + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/finalhandler/-/finalhandler-1.1.1.tgz", + "integrity": "sha512-Y1GUDo39ez4aHAw7MysnUD5JzYX+WaIj8I57kO3aEPT1fFRL4sr7mjei97FgnwhAyyzRYmQZaTHb2+9uZ1dPtg==", + "requires": { + "debug": "2.6.9", + "encodeurl": "~1.0.2", + "escape-html": "~1.0.3", + "on-finished": "~2.3.0", + "parseurl": "~1.3.2", + "statuses": "~1.4.0", + "unpipe": "~1.0.0" + } + }, + "http-errors": { + "version": "1.6.3", + "resolved": "https://registry.npmjs.org/http-errors/-/http-errors-1.6.3.tgz", + "integrity": "sha1-i1VoC7S+KDoLW/TqLjhYC+HZMg0=", + "requires": { + "depd": "~1.1.2", + "inherits": "2.0.3", + "setprototypeof": "1.1.0", + "statuses": ">= 1.4.0 < 2" + } + }, + "iconv-lite": { + "version": "0.4.23", + "resolved": "https://registry.npmjs.org/iconv-lite/-/iconv-lite-0.4.23.tgz", + "integrity": "sha512-neyTUVFtahjf0mB3dZT77u+8O0QB89jFdnBkd5P1JgYPbPaia3gXXOVL2fq8VyU2gMMD7SaN7QukTB/pmXYvDA==", + "requires": { + "safer-buffer": ">= 2.1.2 < 3" + } + }, + "qs": { + "version": "6.5.2", + "resolved": "https://registry.npmjs.org/qs/-/qs-6.5.2.tgz", + "integrity": "sha512-N5ZAX4/LxJmF+7wN74pUD6qAh9/wnvdQcjq9TZjevvXzSUo7bfmw91saqMjzGS2xq91/odN2dW/WOl7qQHNDGA==" + }, + "raw-body": { + "version": "2.3.3", + "resolved": "https://registry.npmjs.org/raw-body/-/raw-body-2.3.3.tgz", + "integrity": "sha512-9esiElv1BrZoI3rCDuOuKCBRbuApGGaDPQfjSflGxdy4oyzqghxu6klEkkVIvBje+FF0BX9coEv8KqW6X/7njw==", + "requires": { + "bytes": "3.0.0", + "http-errors": "1.6.3", + "iconv-lite": "0.4.23", + "unpipe": "1.0.0" + } + }, + "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==" + }, + "send": { + "version": "0.16.2", + "resolved": "https://registry.npmjs.org/send/-/send-0.16.2.tgz", + "integrity": "sha512-E64YFPUssFHEFBvpbbjr44NCLtI1AohxQ8ZSiJjQLskAdKuriYEP6VyGEsRDH8ScozGpkaX1BGvhanqCwkcEZw==", + "requires": { + "debug": "2.6.9", + "depd": "~1.1.2", + "destroy": "~1.0.4", + "encodeurl": "~1.0.2", + "escape-html": "~1.0.3", + "etag": "~1.8.1", + "fresh": "0.5.2", + "http-errors": "~1.6.2", + "mime": "1.4.1", + "ms": "2.0.0", + "on-finished": "~2.3.0", + "range-parser": "~1.2.0", + "statuses": "~1.4.0" + } + }, + "serve-static": { + "version": "1.13.2", + "resolved": "https://registry.npmjs.org/serve-static/-/serve-static-1.13.2.tgz", + "integrity": "sha512-p/tdJrO4U387R9oMjb1oj7qSMaMfmOyd4j9hOFoxZe2baQszgHcSWjuya/CiT5kgZZKRudHNOA0pYXOl8rQ5nw==", + "requires": { + "encodeurl": "~1.0.2", + "escape-html": "~1.0.3", + "parseurl": "~1.3.2", + "send": "0.16.2" + } + }, + "statuses": { + "version": "1.4.0", + "resolved": "https://registry.npmjs.org/statuses/-/statuses-1.4.0.tgz", + "integrity": "sha512-zhSCtt8v2NDrRlPQpCNtw/heZLtfUDqxBM1udqikb/Hbk52LK4nQSwr10u77iopCW5LsyHpuXS0GnEc48mLeew==" + } + } + }, + "express-jwt": { + "version": "5.3.1", + "resolved": "https://registry.npmjs.org/express-jwt/-/express-jwt-5.3.1.tgz", + "integrity": "sha512-1C9RNq0wMp/JvsH/qZMlg3SIPvKu14YkZ4YYv7gJQ1Vq+Dv8LH9tLKenS5vMNth45gTlEUGx+ycp9IHIlaHP/g==", + "requires": { + "async": "^1.5.0", + "express-unless": "^0.3.0", + "jsonwebtoken": "^8.1.0", + "lodash.set": "^4.0.0" + } + }, + "express-unless": { + "version": "0.3.1", + "resolved": "https://registry.npmjs.org/express-unless/-/express-unless-0.3.1.tgz", + "integrity": "sha1-JVfBRudb65A+LSR/m1ugFFJpbiA=" + }, + "extend": { + "version": "3.0.2", + "resolved": "https://registry.npmjs.org/extend/-/extend-3.0.2.tgz", + "integrity": "sha512-fjquC59cD7CyW6urNXK0FBufkZcoiGG80wTuPujX590cB5Ttln20E2UB4S/WARVqhXffZl2LNgS+gQdPIIim/g==" + }, + "extsprintf": { + "version": "1.4.0", + "resolved": "https://registry.npmjs.org/extsprintf/-/extsprintf-1.4.0.tgz", + "integrity": "sha1-4mifjzVvrWLMplo6kcXfX5VRaS8=" + }, + "eyes": { + "version": "0.1.8", + "resolved": "https://registry.npmjs.org/eyes/-/eyes-0.1.8.tgz", + "integrity": "sha1-Ys8SAjTGg3hdkCNIqADvPgzCC8A=" + }, + "fast-safe-stringify": { + "version": "2.0.6", + "resolved": "https://registry.npmjs.org/fast-safe-stringify/-/fast-safe-stringify-2.0.6.tgz", + "integrity": "sha512-q8BZ89jjc+mz08rSxROs8VsrBBcn1SIw1kq9NjolL509tkABRk9io01RAjSaEv1Xb2uFLt8VtRiZbGp5H8iDtg==" + }, + "finalhandler": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/finalhandler/-/finalhandler-1.1.0.tgz", + "integrity": "sha1-zgtoVbRYU+eRsvzGgARtiCU91/U=", + "requires": { + "debug": "2.6.9", + "encodeurl": "~1.0.1", + "escape-html": "~1.0.3", + "on-finished": "~2.3.0", + "parseurl": "~1.3.2", + "statuses": "~1.3.1", + "unpipe": "~1.0.0" + }, + "dependencies": { + "debug": { + "version": "2.6.9", + "resolved": "https://registry.npmjs.org/debug/-/debug-2.6.9.tgz", + "integrity": "sha512-bC7ElrdJaJnPbAP+1EotYvqZsb3ecl5wi6Bfi6BJTUcNowp6cvspg0jXznRTKDjm/E7AdgFBVeAPVMNcKGsHMA==", + "requires": { + "ms": "2.0.0" + } + }, + "statuses": { + "version": "1.3.1", + "resolved": "https://registry.npmjs.org/statuses/-/statuses-1.3.1.tgz", + "integrity": "sha1-+vUbnrdKrvOzrPStX2Gr8ky3uT4=" + } + } + }, + "forest-express": { + "version": "3.2.4", + "resolved": "https://registry.npmjs.org/forest-express/-/forest-express-3.2.4.tgz", + "integrity": "sha512-aHX87ehU4i/RYBeDB0k6M/Glj2Zd4FGS/cbUgaQ3CgdyWJhhQCu/4D8TVazHH7s8SO7nhQq1zt+GwdZEil8K7Q==", + "requires": { + "babel-runtime": "7.0.0-beta.3", + "base32-encode": "1.1.0", + "bcryptjs": "2.4.3", + "bitwise-xor": "0.0.0", + "bluebird": "3.3.4", + "body-parser": "1.18.2", + "compose-middleware": "4.0.0", + "cors": "2.8.4", + "csv-stringify": "1.0.4", + "express": "4.16.2", + "express-jwt": "5.3.1", + "forest-ip-utils": "1.0.1", + "http-errors": "1.7.2", + "inflected": "2.0.4", + "jsonapi-serializer": "3.6.4", + "jsonwebtoken": "8.5.1", + "lodash": "4.17.13", + "moment": "2.19.4", + "otplib": "10.0.0", + "require-all": "3.0.0", + "superagent": "3.7.0", + "useragent": "2.1.13", + "uuid": "3.0.1", + "verror": "1.10.0", + "winston": "2.2.0" + }, + "dependencies": { + "array-flatten": { + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/array-flatten/-/array-flatten-1.1.1.tgz", + "integrity": "sha1-ml9pkFGx5wczKPKgCJaLZOopVdI=" + }, + "bluebird": { + "version": "3.3.4", + "resolved": "https://registry.npmjs.org/bluebird/-/bluebird-3.3.4.tgz", + "integrity": "sha1-94D+Q+GnplEPZ6vX0NeVM6QN3eY=" + }, + "cors": { + "version": "2.8.4", + "resolved": "https://registry.npmjs.org/cors/-/cors-2.8.4.tgz", + "integrity": "sha1-K9OB8usgECAQXNUOpZ2mMJBpRoY=", + "requires": { + "object-assign": "^4", + "vary": "^1" + } + }, + "debug": { + "version": "2.6.9", + "resolved": "https://registry.npmjs.org/debug/-/debug-2.6.9.tgz", + "integrity": "sha512-bC7ElrdJaJnPbAP+1EotYvqZsb3ecl5wi6Bfi6BJTUcNowp6cvspg0jXznRTKDjm/E7AdgFBVeAPVMNcKGsHMA==", + "requires": { + "ms": "2.0.0" + } + }, + "express": { + "version": "4.16.2", + "resolved": "https://registry.npmjs.org/express/-/express-4.16.2.tgz", + "integrity": "sha1-41xt/i1kt9ygpc1PIXgb4ymeB2w=", + "requires": { + "accepts": "~1.3.4", + "array-flatten": "1.1.1", + "body-parser": "1.18.2", + "content-disposition": "0.5.2", + "content-type": "~1.0.4", + "cookie": "0.3.1", + "cookie-signature": "1.0.6", + "debug": "2.6.9", + "depd": "~1.1.1", + "encodeurl": "~1.0.1", + "escape-html": "~1.0.3", + "etag": "~1.8.1", + "finalhandler": "1.1.0", + "fresh": "0.5.2", + "merge-descriptors": "1.0.1", + "methods": "~1.1.2", + "on-finished": "~2.3.0", + "parseurl": "~1.3.2", + "path-to-regexp": "0.1.7", + "proxy-addr": "~2.0.2", + "qs": "6.5.1", + "range-parser": "~1.2.0", + "safe-buffer": "5.1.1", + "send": "0.16.1", + "serve-static": "1.13.1", + "setprototypeof": "1.1.0", + "statuses": "~1.3.1", + "type-is": "~1.6.15", + "utils-merge": "1.0.1", + "vary": "~1.1.2" + } + }, + "jsonapi-serializer": { + "version": "3.6.4", + "resolved": "https://registry.npmjs.org/jsonapi-serializer/-/jsonapi-serializer-3.6.4.tgz", + "integrity": "sha512-n0FVi4Cs7Gzk6dH9kn+8to7yGYhVpdsFRtMHi3SaC80EWap2wjCcXPioSlq0hnqzdEFXtay0hRR4yRqXkLTJSA==", + "requires": { + "inflected": "^1.1.6", + "lodash": "^4.16.3" + }, + "dependencies": { + "inflected": { + "version": "1.1.7", + "resolved": "https://registry.npmjs.org/inflected/-/inflected-1.1.7.tgz", + "integrity": "sha1-w5PfbihHLQ13swguw6ogkfS8lvk=" + } + } + }, + "lodash": { + "version": "4.17.13", + "resolved": "https://registry.npmjs.org/lodash/-/lodash-4.17.13.tgz", + "integrity": "sha512-vm3/XWXfWtRua0FkUyEHBZy8kCPjErNBT9fJx8Zvs+U6zjqPbTUOpkaoum3O5uiA8sm+yNMHXfYkTUHFoMxFNA==" + }, + "moment": { + "version": "2.19.4", + "resolved": "https://registry.npmjs.org/moment/-/moment-2.19.4.tgz", + "integrity": "sha512-1xFTAknSLfc47DIxHDUbnJWC+UwgWxATmymaxIPQpmMh7LBm7ZbwVEsuushqwL2GYZU0jie4xO+TK44hJPjNSQ==" + }, + "require-all": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/require-all/-/require-all-3.0.0.tgz", + "integrity": "sha1-Rz1JcEvjEBFc4ST3c4Ox69hnExI=" + }, + "statuses": { + "version": "1.3.1", + "resolved": "https://registry.npmjs.org/statuses/-/statuses-1.3.1.tgz", + "integrity": "sha1-+vUbnrdKrvOzrPStX2Gr8ky3uT4=" + }, + "superagent": { + "version": "3.7.0", + "resolved": "https://registry.npmjs.org/superagent/-/superagent-3.7.0.tgz", + "integrity": "sha512-/8trxO6NbLx4YXb7IeeFTSmsQ35pQBiTBsLNvobZx7qBzBeHYvKCyIIhW2gNcWbLzYxPAjdgFbiepd8ypwC0Gw==", + "requires": { + "component-emitter": "^1.2.0", + "cookiejar": "^2.1.0", + "debug": "^3.1.0", + "extend": "^3.0.0", + "form-data": "^2.3.1", + "formidable": "^1.1.1", + "methods": "^1.1.1", + "mime": "^1.4.1", + "qs": "^6.5.1", + "readable-stream": "^2.0.5" + }, + "dependencies": { + "debug": { + "version": "3.2.6", + "resolved": "https://registry.npmjs.org/debug/-/debug-3.2.6.tgz", + "integrity": "sha512-mel+jf7nrtEl5Pn1Qx46zARXKDpBbvzezse7p7LqINmdoIk8PYP5SySaxEmYv6TZ0JyEKA1hsCId6DIhgITtWQ==", + "requires": { + "ms": "^2.1.1" + } + }, + "ms": { + "version": "2.1.2", + "resolved": "https://registry.npmjs.org/ms/-/ms-2.1.2.tgz", + "integrity": "sha512-sGkPx+VjMtmA6MX27oA4FBFELFCZZ4S4XqeGOXCv68tT+jb3vk/RyaKWP0PTKyWtmLSM0b+adUTEvbs1PEaH2w==" + } + } + } + } + }, + "forest-express-mongoose": { + "version": "3.2.4", + "resolved": "https://registry.npmjs.org/forest-express-mongoose/-/forest-express-mongoose-3.2.4.tgz", + "integrity": "sha512-f28YlJKtV6AR/zXqnwUg/IHkqN+ZJi8DlGzitVgESfbyLe4BoGeLO0PF29H9iVNo+UNU4xbz/QIaCto9XDshbQ==", + "requires": { + "babel-runtime": "7.0.0-beta.3", + "bluebird": "2.9.25", + "forest-express": "3.2.4", + "http-errors": "1.7.2", + "lodash": "4.17.13", + "moment": "2.24.0" + }, + "dependencies": { + "bluebird": { + "version": "2.9.25", + "resolved": "https://registry.npmjs.org/bluebird/-/bluebird-2.9.25.tgz", + "integrity": "sha1-bja9BAZNlTTAcWC59/JsWnOP4Wo=" + }, + "lodash": { + "version": "4.17.13", + "resolved": "https://registry.npmjs.org/lodash/-/lodash-4.17.13.tgz", + "integrity": "sha512-vm3/XWXfWtRua0FkUyEHBZy8kCPjErNBT9fJx8Zvs+U6zjqPbTUOpkaoum3O5uiA8sm+yNMHXfYkTUHFoMxFNA==" + } + } + }, + "forest-express-sequelize": { + "version": "3.3.4", + "resolved": "https://registry.npmjs.org/forest-express-sequelize/-/forest-express-sequelize-3.3.4.tgz", + "integrity": "sha512-rGeUYNPjWvEwTkfmb6e5ZRL3Gmc/mqkKNz4tHLS4vhiCidlyy+DADZjBiJdK+MH763sbe+7dWGDxq+kMBEVTYg==", + "requires": { + "babel-runtime": "7.0.0-beta.3", + "bluebird": "2.9.25", + "forest-express": "3.2.6", + "http-errors": "1.6.1", + "lodash": "4.17.13", + "moment": "2.19.4", + "moment-timezone": "0.5.14", + "semver": "5.4.1" + }, + "dependencies": { + "array-flatten": { + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/array-flatten/-/array-flatten-1.1.1.tgz", + "integrity": "sha1-ml9pkFGx5wczKPKgCJaLZOopVdI=" + }, + "bluebird": { + "version": "2.9.25", + "resolved": "https://registry.npmjs.org/bluebird/-/bluebird-2.9.25.tgz", + "integrity": "sha1-bja9BAZNlTTAcWC59/JsWnOP4Wo=" + }, + "cors": { + "version": "2.8.4", + "resolved": "https://registry.npmjs.org/cors/-/cors-2.8.4.tgz", + "integrity": "sha1-K9OB8usgECAQXNUOpZ2mMJBpRoY=", + "requires": { + "object-assign": "^4", + "vary": "^1" + } + }, + "debug": { + "version": "2.6.9", + "resolved": "https://registry.npmjs.org/debug/-/debug-2.6.9.tgz", + "integrity": "sha512-bC7ElrdJaJnPbAP+1EotYvqZsb3ecl5wi6Bfi6BJTUcNowp6cvspg0jXznRTKDjm/E7AdgFBVeAPVMNcKGsHMA==", + "requires": { + "ms": "2.0.0" + } + }, + "express": { + "version": "4.16.2", + "resolved": "https://registry.npmjs.org/express/-/express-4.16.2.tgz", + "integrity": "sha1-41xt/i1kt9ygpc1PIXgb4ymeB2w=", + "requires": { + "accepts": "~1.3.4", + "array-flatten": "1.1.1", + "body-parser": "1.18.2", + "content-disposition": "0.5.2", + "content-type": "~1.0.4", + "cookie": "0.3.1", + "cookie-signature": "1.0.6", + "debug": "2.6.9", + "depd": "~1.1.1", + "encodeurl": "~1.0.1", + "escape-html": "~1.0.3", + "etag": "~1.8.1", + "finalhandler": "1.1.0", + "fresh": "0.5.2", + "merge-descriptors": "1.0.1", + "methods": "~1.1.2", + "on-finished": "~2.3.0", + "parseurl": "~1.3.2", + "path-to-regexp": "0.1.7", + "proxy-addr": "~2.0.2", + "qs": "6.5.1", + "range-parser": "~1.2.0", + "safe-buffer": "5.1.1", + "send": "0.16.1", + "serve-static": "1.13.1", + "setprototypeof": "1.1.0", + "statuses": "~1.3.1", + "type-is": "~1.6.15", + "utils-merge": "1.0.1", + "vary": "~1.1.2" + } + }, + "forest-express": { + "version": "3.2.6", + "resolved": "https://registry.npmjs.org/forest-express/-/forest-express-3.2.6.tgz", + "integrity": "sha512-r0cCuLO9TIqc1AkqLNtsnqLdYSSt5kDhwkXrr4DXqTe5/whk9cF4j/o60qCr9Y6r8SxzMx/lYDwHKrAqbw5UxA==", + "requires": { + "babel-runtime": "7.0.0-beta.3", + "base32-encode": "1.1.0", + "bcryptjs": "2.4.3", + "bitwise-xor": "0.0.0", + "bluebird": "3.3.4", + "body-parser": "1.18.2", + "compose-middleware": "4.0.0", + "cors": "2.8.4", + "csv-stringify": "1.0.4", + "express": "4.16.2", + "express-jwt": "5.3.1", + "forest-ip-utils": "1.0.1", + "http-errors": "1.7.2", + "inflected": "2.0.4", + "jsonapi-serializer": "3.6.5", + "jsonwebtoken": "8.5.1", + "lodash": "4.17.13", + "moment": "2.19.4", + "otplib": "10.0.0", + "require-all": "3.0.0", + "superagent": "3.7.0", + "useragent": "2.1.13", + "uuid": "3.0.1", + "verror": "1.10.0", + "winston": "2.2.0" + }, + "dependencies": { + "bluebird": { + "version": "3.3.4", + "resolved": "https://registry.npmjs.org/bluebird/-/bluebird-3.3.4.tgz", + "integrity": "sha1-94D+Q+GnplEPZ6vX0NeVM6QN3eY=" + }, + "http-errors": { + "version": "1.7.2", + "resolved": "https://registry.npmjs.org/http-errors/-/http-errors-1.7.2.tgz", + "integrity": "sha512-uUQBt3H/cSIVfch6i1EuPNy/YsRSOUBXTVfZ+yR7Zjez3qjBz6i9+i4zjNaoqcoFVI4lQJ5plg63TvGfRSDCRg==", + "requires": { + "depd": "~1.1.2", + "inherits": "2.0.3", + "setprototypeof": "1.1.1", + "statuses": ">= 1.5.0 < 2", + "toidentifier": "1.0.0" + } + }, + "setprototypeof": { + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/setprototypeof/-/setprototypeof-1.1.1.tgz", + "integrity": "sha512-JvdAWfbXeIGaZ9cILp38HntZSFSo3mWg6xGcJJsd+d4aRMOqauag1C63dJfDw7OaMYwEbHMOxEZ1lqVRYP2OAw==" + }, + "statuses": { + "version": "1.5.0", + "resolved": "https://registry.npmjs.org/statuses/-/statuses-1.5.0.tgz", + "integrity": "sha1-Fhx9rBd2Wf2YEfQ3cfqZOBR4Yow=" + } + } + }, + "http-errors": { + "version": "1.6.1", + "resolved": "https://registry.npmjs.org/http-errors/-/http-errors-1.6.1.tgz", + "integrity": "sha1-X4uO2YrKVFZWv1cplzh/kEpyIlc=", + "requires": { + "depd": "1.1.0", + "inherits": "2.0.3", + "setprototypeof": "1.0.3", + "statuses": ">= 1.3.1 < 2" + }, + "dependencies": { + "depd": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/depd/-/depd-1.1.0.tgz", + "integrity": "sha1-4b2Cxqq2ztlluXuIsX7T5SjKGMM=" + }, + "setprototypeof": { + "version": "1.0.3", + "resolved": "https://registry.npmjs.org/setprototypeof/-/setprototypeof-1.0.3.tgz", + "integrity": "sha1-ZlZ+NwQ+608E2RvWWMDL77VbjgQ=" + } + } + }, + "lodash": { + "version": "4.17.13", + "resolved": "https://registry.npmjs.org/lodash/-/lodash-4.17.13.tgz", + "integrity": "sha512-vm3/XWXfWtRua0FkUyEHBZy8kCPjErNBT9fJx8Zvs+U6zjqPbTUOpkaoum3O5uiA8sm+yNMHXfYkTUHFoMxFNA==" + }, + "moment": { + "version": "2.19.4", + "resolved": "https://registry.npmjs.org/moment/-/moment-2.19.4.tgz", + "integrity": "sha512-1xFTAknSLfc47DIxHDUbnJWC+UwgWxATmymaxIPQpmMh7LBm7ZbwVEsuushqwL2GYZU0jie4xO+TK44hJPjNSQ==" + }, + "require-all": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/require-all/-/require-all-3.0.0.tgz", + "integrity": "sha1-Rz1JcEvjEBFc4ST3c4Ox69hnExI=" + }, + "semver": { + "version": "5.4.1", + "resolved": "https://registry.npmjs.org/semver/-/semver-5.4.1.tgz", + "integrity": "sha512-WfG/X9+oATh81XtllIo/I8gOiY9EXRdv1cQdyykeXK17YcUW3EXUAi2To4pcH6nZtJPr7ZOpM5OMyWJZm+8Rsg==" + }, + "statuses": { + "version": "1.3.1", + "resolved": "https://registry.npmjs.org/statuses/-/statuses-1.3.1.tgz", + "integrity": "sha1-+vUbnrdKrvOzrPStX2Gr8ky3uT4=" + }, + "superagent": { + "version": "3.7.0", + "resolved": "https://registry.npmjs.org/superagent/-/superagent-3.7.0.tgz", + "integrity": "sha512-/8trxO6NbLx4YXb7IeeFTSmsQ35pQBiTBsLNvobZx7qBzBeHYvKCyIIhW2gNcWbLzYxPAjdgFbiepd8ypwC0Gw==", + "requires": { + "component-emitter": "^1.2.0", + "cookiejar": "^2.1.0", + "debug": "^3.1.0", + "extend": "^3.0.0", + "form-data": "^2.3.1", + "formidable": "^1.1.1", + "methods": "^1.1.1", + "mime": "^1.4.1", + "qs": "^6.5.1", + "readable-stream": "^2.0.5" + }, + "dependencies": { + "debug": { + "version": "3.2.6", + "resolved": "https://registry.npmjs.org/debug/-/debug-3.2.6.tgz", + "integrity": "sha512-mel+jf7nrtEl5Pn1Qx46zARXKDpBbvzezse7p7LqINmdoIk8PYP5SySaxEmYv6TZ0JyEKA1hsCId6DIhgITtWQ==", + "requires": { + "ms": "^2.1.1" + } + }, + "ms": { + "version": "2.1.2", + "resolved": "https://registry.npmjs.org/ms/-/ms-2.1.2.tgz", + "integrity": "sha512-sGkPx+VjMtmA6MX27oA4FBFELFCZZ4S4XqeGOXCv68tT+jb3vk/RyaKWP0PTKyWtmLSM0b+adUTEvbs1PEaH2w==" + } + } + } + } + }, + "forest-ip-utils": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/forest-ip-utils/-/forest-ip-utils-1.0.1.tgz", + "integrity": "sha512-m/pXGliPvJ6pt5/kyTgNT3X4AKHBdeKJX+cg1RVHWrQiqvD7Qs6WbSaP8/l1nJz1FhrLC/EQJAWXTj/kdJjDEQ==", + "requires": { + "ip-address": "^5.8.9", + "range_check": "^1.4.0" + } + }, + "form-data": { + "version": "2.5.1", + "resolved": "https://registry.npmjs.org/form-data/-/form-data-2.5.1.tgz", + "integrity": "sha512-m21N3WOmEEURgk6B9GLOE4RuWOFf28Lhh9qGYeNlGq4VDXUlJy2th2slBNU8Gp8EzloYZOibZJ7t5ecIrFSjVA==", + "requires": { + "asynckit": "^0.4.0", + "combined-stream": "^1.0.6", + "mime-types": "^2.1.12" + } + }, + "formidable": { + "version": "1.2.1", + "resolved": "https://registry.npmjs.org/formidable/-/formidable-1.2.1.tgz", + "integrity": "sha512-Fs9VRguL0gqGHkXS5GQiMCr1VhZBxz0JnJs4JmMp/2jL18Fmbzvv7vOFRU+U8TBkHEE/CX1qDXzJplVULgsLeg==" + }, + "forwarded": { + "version": "0.1.2", + "resolved": "https://registry.npmjs.org/forwarded/-/forwarded-0.1.2.tgz", + "integrity": "sha1-mMI9qxF1ZXuMBXPozszZGw/xjIQ=" + }, + "fresh": { + "version": "0.5.2", + "resolved": "https://registry.npmjs.org/fresh/-/fresh-0.5.2.tgz", + "integrity": "sha1-PYyt2Q2XZWn6g1qx+OSyOhBWBac=" + }, + "generate-function": { + "version": "2.3.1", + "resolved": "https://registry.npmjs.org/generate-function/-/generate-function-2.3.1.tgz", + "integrity": "sha512-eeB5GfMNeevm/GRYq20ShmsaGcmI81kIX2K9XQx5miC8KdHaC6Jm0qQ8ZNeGOi7wYB8OsdxKs+Y2oVuTFuVwKQ==", + "requires": { + "is-property": "^1.0.2" + } + }, + "has-ansi": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/has-ansi/-/has-ansi-2.0.0.tgz", + "integrity": "sha1-NPUEnOHs3ysGSa8+8k5F7TVBbZE=", + "requires": { + "ansi-regex": "^2.0.0" + } + }, + "has-flag": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-3.0.0.tgz", + "integrity": "sha1-tdRU3CGZriJWmfNGfloH87lVuv0=" + }, + "http-errors": { + "version": "1.7.2", + "resolved": "https://registry.npmjs.org/http-errors/-/http-errors-1.7.2.tgz", + "integrity": "sha512-uUQBt3H/cSIVfch6i1EuPNy/YsRSOUBXTVfZ+yR7Zjez3qjBz6i9+i4zjNaoqcoFVI4lQJ5plg63TvGfRSDCRg==", + "requires": { + "depd": "~1.1.2", + "inherits": "2.0.3", + "setprototypeof": "1.1.1", + "statuses": ">= 1.5.0 < 2", + "toidentifier": "1.0.0" + }, + "dependencies": { + "setprototypeof": { + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/setprototypeof/-/setprototypeof-1.1.1.tgz", + "integrity": "sha512-JvdAWfbXeIGaZ9cILp38HntZSFSo3mWg6xGcJJsd+d4aRMOqauag1C63dJfDw7OaMYwEbHMOxEZ1lqVRYP2OAw==" + } + } + }, + "iconv-lite": { + "version": "0.4.19", + "resolved": "https://registry.npmjs.org/iconv-lite/-/iconv-lite-0.4.19.tgz", + "integrity": "sha512-oTZqweIP51xaGPI4uPa56/Pri/480R+mo7SeU+YETByQNhDG55ycFyNLIgta9vXhILrxXDmF7ZGhqZIcuN0gJQ==" + }, + "inflected": { + "version": "2.0.4", + "resolved": "https://registry.npmjs.org/inflected/-/inflected-2.0.4.tgz", + "integrity": "sha512-HQPzFLTTUvwfeUH6RAGjD8cHS069mBqXG5n4qaxX7sJXBhVQrsGgF+0ZJGkSuN6a8pcUWB/GXStta11kKi/WvA==" + }, + "inflection": { + "version": "1.12.0", + "resolved": "https://registry.npmjs.org/inflection/-/inflection-1.12.0.tgz", + "integrity": "sha1-ogCTVlbW9fa8TcdQLhrstwMihBY=" + }, + "inherits": { + "version": "2.0.3", + "resolved": "https://registry.npmjs.org/inherits/-/inherits-2.0.3.tgz", + "integrity": "sha1-Yzwsg+PaQqUC9SRmAiSA9CCCYd4=" + }, + "ip-address": { + "version": "5.9.4", + "resolved": "https://registry.npmjs.org/ip-address/-/ip-address-5.9.4.tgz", + "integrity": "sha512-dHkI3/YNJq4b/qQaz+c8LuarD3pY24JqZWfjB8aZx1gtpc2MDILu9L9jpZe1sHpzo/yWFweQVn+U//FhazUxmw==", + "requires": { + "jsbn": "1.1.0", + "lodash": "^4.17.15", + "sprintf-js": "1.1.2" + } + }, + "ip6": { + "version": "0.0.4", + "resolved": "https://registry.npmjs.org/ip6/-/ip6-0.0.4.tgz", + "integrity": "sha1-RMWp23njnUBSAbTXjROzhw5I2zE=" + }, + "ipaddr.js": { + "version": "1.9.0", + "resolved": "https://registry.npmjs.org/ipaddr.js/-/ipaddr.js-1.9.0.tgz", + "integrity": "sha512-M4Sjn6N/+O6/IXSJseKqHoFc+5FdGJ22sXqnjTpdZweHK64MzEPAyQZyEU3R/KRv2GLoa7nNtg/C2Ev6m7z+eA==" + }, + "is-bluebird": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/is-bluebird/-/is-bluebird-1.0.2.tgz", + "integrity": "sha1-CWQ5Bg9KpBGr7hkUOoTWpVNG1uI=" + }, + "is-property": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/is-property/-/is-property-1.0.2.tgz", + "integrity": "sha1-V/4cTkhHTt1lsJkR8msc1Ald2oQ=" + }, + "isarray": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/isarray/-/isarray-1.0.0.tgz", + "integrity": "sha1-u5NdSFgsuhaMBoNJV6VKPgcSTxE=" + }, + "isstream": { + "version": "0.1.2", + "resolved": "https://registry.npmjs.org/isstream/-/isstream-0.1.2.tgz", + "integrity": "sha1-R+Y/evVa+m+S4VAOaQ64uFKcCZo=" + }, + "jsbn": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/jsbn/-/jsbn-1.1.0.tgz", + "integrity": "sha1-sBMHyym2GKHtJux56RH4A8TaAEA=" + }, + "jsonapi-serializer": { + "version": "3.6.5", + "resolved": "https://registry.npmjs.org/jsonapi-serializer/-/jsonapi-serializer-3.6.5.tgz", + "integrity": "sha512-UmBU9JnWVi2H2vZcPTSsPsA7+SUIkuGXwjXbx2GWW7crbZr/pYgQPUH3MSmOQYvpAIYlg5oIomnS4F9eM8g5cQ==", + "requires": { + "inflected": "^1.1.6", + "lodash": "^4.16.3" + }, + "dependencies": { + "inflected": { + "version": "1.1.7", + "resolved": "https://registry.npmjs.org/inflected/-/inflected-1.1.7.tgz", + "integrity": "sha1-w5PfbihHLQ13swguw6ogkfS8lvk=" + } + } + }, + "jsonwebtoken": { + "version": "8.5.1", + "resolved": "https://registry.npmjs.org/jsonwebtoken/-/jsonwebtoken-8.5.1.tgz", + "integrity": "sha512-XjwVfRS6jTMsqYs0EsuJ4LGxXV14zQybNd4L2r0UvbVnSF9Af8x7p5MzbJ90Ioz/9TI41/hTCvznF/loiSzn8w==", + "requires": { + "jws": "^3.2.2", + "lodash.includes": "^4.3.0", + "lodash.isboolean": "^3.0.3", + "lodash.isinteger": "^4.0.4", + "lodash.isnumber": "^3.0.3", + "lodash.isplainobject": "^4.0.6", + "lodash.isstring": "^4.0.1", + "lodash.once": "^4.0.0", + "ms": "^2.1.1", + "semver": "^5.6.0" + }, + "dependencies": { + "ms": { + "version": "2.1.2", + "resolved": "https://registry.npmjs.org/ms/-/ms-2.1.2.tgz", + "integrity": "sha512-sGkPx+VjMtmA6MX27oA4FBFELFCZZ4S4XqeGOXCv68tT+jb3vk/RyaKWP0PTKyWtmLSM0b+adUTEvbs1PEaH2w==" + } + } + }, + "jwa": { + "version": "1.4.1", + "resolved": "https://registry.npmjs.org/jwa/-/jwa-1.4.1.tgz", + "integrity": "sha512-qiLX/xhEEFKUAJ6FiBMbes3w9ATzyk5W7Hvzpa/SLYdxNtng+gcurvrI7TbACjIXlsJyr05/S1oUhZrc63evQA==", + "requires": { + "buffer-equal-constant-time": "1.0.1", + "ecdsa-sig-formatter": "1.0.11", + "safe-buffer": "^5.0.1" + } + }, + "jws": { + "version": "3.2.2", + "resolved": "https://registry.npmjs.org/jws/-/jws-3.2.2.tgz", + "integrity": "sha512-YHlZCB6lMTllWDtSPHz/ZXTsi8S00usEV6v1tjq8tOUZzw7DpSDWVXjXDre6ed1w/pd495ODpHZYSdkRTsa0HA==", + "requires": { + "jwa": "^1.4.1", + "safe-buffer": "^5.0.1" + } + }, + "lodash": { + "version": "4.17.15", + "resolved": "https://registry.npmjs.org/lodash/-/lodash-4.17.15.tgz", + "integrity": "sha512-8xOcRHvCjnocdS5cpwXQXVzmmh5e5+saE2QGoeQmbKmRS6J3VQppPOIt0MnmE+4xlZoumy0GPG0D0MVIQbNA1A==" + }, + "lodash.get": { + "version": "4.4.2", + "resolved": "https://registry.npmjs.org/lodash.get/-/lodash.get-4.4.2.tgz", + "integrity": "sha1-LRd/ZS+jHpObRDjVNBSZ36OCXpk=" + }, + "lodash.includes": { + "version": "4.3.0", + "resolved": "https://registry.npmjs.org/lodash.includes/-/lodash.includes-4.3.0.tgz", + "integrity": "sha1-YLuYqHy5I8aMoeUTJUgzFISfVT8=" + }, + "lodash.isboolean": { + "version": "3.0.3", + "resolved": "https://registry.npmjs.org/lodash.isboolean/-/lodash.isboolean-3.0.3.tgz", + "integrity": "sha1-bC4XHbKiV82WgC/UOwGyDV9YcPY=" + }, + "lodash.isinteger": { + "version": "4.0.4", + "resolved": "https://registry.npmjs.org/lodash.isinteger/-/lodash.isinteger-4.0.4.tgz", + "integrity": "sha1-YZwK89A/iwTDH1iChAt3sRzWg0M=" + }, + "lodash.isnumber": { + "version": "3.0.3", + "resolved": "https://registry.npmjs.org/lodash.isnumber/-/lodash.isnumber-3.0.3.tgz", + "integrity": "sha1-POdoEMWSjQM1IwGsKHMX8RwLH/w=" + }, + "lodash.isplainobject": { + "version": "4.0.6", + "resolved": "https://registry.npmjs.org/lodash.isplainobject/-/lodash.isplainobject-4.0.6.tgz", + "integrity": "sha1-fFJqUtibRcRcxpC4gWO+BJf1UMs=" + }, + "lodash.isstring": { + "version": "4.0.1", + "resolved": "https://registry.npmjs.org/lodash.isstring/-/lodash.isstring-4.0.1.tgz", + "integrity": "sha1-1SfftUVuynzJu5XV2ur4i6VKVFE=" + }, + "lodash.once": { + "version": "4.1.1", + "resolved": "https://registry.npmjs.org/lodash.once/-/lodash.once-4.1.1.tgz", + "integrity": "sha1-DdOXEhPHxW34gJd9UEyI+0cal6w=" + }, + "lodash.set": { + "version": "4.3.2", + "resolved": "https://registry.npmjs.org/lodash.set/-/lodash.set-4.3.2.tgz", + "integrity": "sha1-2HV7HagH3eJIFrDWqEvqGnYjCyM=" + }, + "long": { + "version": "3.2.0", + "resolved": "https://registry.npmjs.org/long/-/long-3.2.0.tgz", + "integrity": "sha1-2CG3E4yhy1gcFymQ7xTbIAtcR0s=" + }, + "lru-cache": { + "version": "2.2.4", + "resolved": "https://registry.npmjs.org/lru-cache/-/lru-cache-2.2.4.tgz", + "integrity": "sha1-bGWGGb7PFAMdDQtZSxYELOTcBj0=" + }, + "lumber-forestadmin": { + "version": "1.2.1", + "resolved": "https://registry.npmjs.org/lumber-forestadmin/-/lumber-forestadmin-1.2.1.tgz", + "integrity": "sha512-+rjepxugid2UQuPoyeIEXigZPD84+WferCtYF9vomI6f7X4rvgS1MNGj1zcyZlWZ0bNDyjsdedDXsQkeh+VVuQ==", + "requires": { + "atob": "2.1.2", + "bluebird": "^3.5.4", + "chalk": "^2.4.2", + "cors": "^2.8.5", + "forest-express-mongoose": "^3.2.0", + "forest-express-sequelize": "^3.2.0", + "jsonapi-serializer": "^3.6.4", + "lodash": "^4.17.11", + "mkdirp": "^0.5.1", + "require-all": "^3.0.0", + "superagent": "^5.0.2", + "superagent-promise": "^1.1.0" + }, + "dependencies": { + "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" + } + }, + "require-all": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/require-all/-/require-all-3.0.0.tgz", + "integrity": "sha1-Rz1JcEvjEBFc4ST3c4Ox69hnExI=" + } + } + }, + "media-typer": { + "version": "0.3.0", + "resolved": "https://registry.npmjs.org/media-typer/-/media-typer-0.3.0.tgz", + "integrity": "sha1-hxDXrwqmJvj/+hzgAWhUUmMlV0g=" + }, + "merge-descriptors": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/merge-descriptors/-/merge-descriptors-1.0.1.tgz", + "integrity": "sha1-sAqqVW3YtEVoFQ7J0blT8/kMu2E=" + }, + "methods": { + "version": "1.1.2", + "resolved": "https://registry.npmjs.org/methods/-/methods-1.1.2.tgz", + "integrity": "sha1-VSmk1nZUE07cxSZmVoNbD4Ua/O4=" + }, + "mime": { + "version": "1.4.1", + "resolved": "https://registry.npmjs.org/mime/-/mime-1.4.1.tgz", + "integrity": "sha512-KI1+qOZu5DcW6wayYHSzR/tXKCDC5Om4s1z2QJjDULzLcmf3DvzS7oluY4HCTrc+9FiKmWUgeNLg7W3uIQvxtQ==" + }, + "mime-db": { + "version": "1.40.0", + "resolved": "https://registry.npmjs.org/mime-db/-/mime-db-1.40.0.tgz", + "integrity": "sha512-jYdeOMPy9vnxEqFRRo6ZvTZ8d9oPb+k18PKoYNYUe2stVEBPPwsln/qWzdbmaIvnhZ9v2P+CuecK+fpUfsV2mA==" + }, + "mime-types": { + "version": "2.1.24", + "resolved": "https://registry.npmjs.org/mime-types/-/mime-types-2.1.24.tgz", + "integrity": "sha512-WaFHS3MCl5fapm3oLxU4eYDw77IQM2ACcxQ9RIxfaC3ooc6PFuBMGZZsYpvoXS5D5QTWPieo1jjLdAm3TBP3cQ==", + "requires": { + "mime-db": "1.40.0" + } + }, + "minimist": { + "version": "0.0.8", + "resolved": "https://registry.npmjs.org/minimist/-/minimist-0.0.8.tgz", + "integrity": "sha1-hX/Kv8M5fSYluCKCYuhqp6ARsF0=" + }, + "mkdirp": { + "version": "0.5.1", + "resolved": "https://registry.npmjs.org/mkdirp/-/mkdirp-0.5.1.tgz", + "integrity": "sha1-MAV0OOrGz3+MR2fzhkjWaX11yQM=", + "requires": { + "minimist": "0.0.8" + } + }, + "moment": { + "version": "2.24.0", + "resolved": "https://registry.npmjs.org/moment/-/moment-2.24.0.tgz", + "integrity": "sha512-bV7f+6l2QigeBBZSM/6yTNq4P2fNpSWj/0e7jQcy87A8e7o2nAfP/34/2ky5Vw4B9S446EtIhodAzkFCcR4dQg==" + }, + "moment-timezone": { + "version": "0.5.14", + "resolved": "https://registry.npmjs.org/moment-timezone/-/moment-timezone-0.5.14.tgz", + "integrity": "sha1-TrOP+VOLgBCLpGekWPPtQmjM/LE=", + "requires": { + "moment": ">= 2.9.0" + } + }, + "ms": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/ms/-/ms-2.0.0.tgz", + "integrity": "sha1-VgiurfwAvmwpAd9fmGF4jeDVl8g=" + }, + "mysql2": { + "version": "1.4.2", + "resolved": "https://registry.npmjs.org/mysql2/-/mysql2-1.4.2.tgz", + "integrity": "sha1-teBACf1tY/AHVSU9+IVAolMmQLI=", + "requires": { + "cardinal": "1.0.0", + "denque": "^1.1.1", + "generate-function": "^2.0.0", + "iconv-lite": "^0.4.18", + "long": "^3.2.0", + "lru-cache": "^4.1.1", + "named-placeholders": "1.1.1", + "object-assign": "^4.1.1", + "readable-stream": "2.3.2", + "safe-buffer": "^5.0.1", + "seq-queue": "0.0.5", + "sqlstring": "^2.2.0" + }, + "dependencies": { + "lru-cache": { + "version": "4.1.5", + "resolved": "https://registry.npmjs.org/lru-cache/-/lru-cache-4.1.5.tgz", + "integrity": "sha512-sWZlbEP2OsHNkXrMl5GYk/jKk70MBng6UU4YI/qGDYbgf6YbP4EvmqISbXCoJiRKs+1bSpFHVgQxvJ17F2li5g==", + "requires": { + "pseudomap": "^1.0.2", + "yallist": "^2.1.2" + } + }, + "process-nextick-args": { + "version": "1.0.7", + "resolved": "https://registry.npmjs.org/process-nextick-args/-/process-nextick-args-1.0.7.tgz", + "integrity": "sha1-FQ4gt1ZZCtP5EJPyWk8q2L/zC6M=" + }, + "readable-stream": { + "version": "2.3.2", + "resolved": "https://registry.npmjs.org/readable-stream/-/readable-stream-2.3.2.tgz", + "integrity": "sha1-WgTfBeT1f+Pw3Gj90R3FyXx+b00=", + "requires": { + "core-util-is": "~1.0.0", + "inherits": "~2.0.3", + "isarray": "~1.0.0", + "process-nextick-args": "~1.0.6", + "safe-buffer": "~5.1.0", + "string_decoder": "~1.0.0", + "util-deprecate": "~1.0.1" + } + }, + "string_decoder": { + "version": "1.0.3", + "resolved": "https://registry.npmjs.org/string_decoder/-/string_decoder-1.0.3.tgz", + "integrity": "sha512-4AH6Z5fzNNBcH+6XDMfA/BTt87skxqJlO0lAh3Dker5zThcAxG6mKz+iGu308UKoPPQ8Dcqx/4JhujzltRa+hQ==", + "requires": { + "safe-buffer": "~5.1.0" + } + } + } + }, + "named-placeholders": { + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/named-placeholders/-/named-placeholders-1.1.1.tgz", + "integrity": "sha1-O3oNJiA910s6nfTJz7gnsvuQfmQ=", + "requires": { + "lru-cache": "2.5.0" + }, + "dependencies": { + "lru-cache": { + "version": "2.5.0", + "resolved": "https://registry.npmjs.org/lru-cache/-/lru-cache-2.5.0.tgz", + "integrity": "sha1-2COIrpyWC+y+oMc7uet5tsbOmus=" + } + } + }, + "negotiator": { + "version": "0.6.2", + "resolved": "https://registry.npmjs.org/negotiator/-/negotiator-0.6.2.tgz", + "integrity": "sha512-hZXc7K2e+PgeI1eDBe/10Ard4ekbfrrqG8Ep+8Jmf4JID2bNg7NvCPOZN+kfF574pFQI7mum2AUqDidoKqcTOw==" + }, + "object-assign": { + "version": "4.1.1", + "resolved": "https://registry.npmjs.org/object-assign/-/object-assign-4.1.1.tgz", + "integrity": "sha1-IQmtx5ZYh8/AXLvUQsrIv7s2CGM=" + }, + "on-finished": { + "version": "2.3.0", + "resolved": "https://registry.npmjs.org/on-finished/-/on-finished-2.3.0.tgz", + "integrity": "sha1-IPEzZIGwg811M3mSoWlxqi2QaUc=", + "requires": { + "ee-first": "1.1.1" + } + }, + "os-tmpdir": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/os-tmpdir/-/os-tmpdir-1.0.2.tgz", + "integrity": "sha1-u+Z0BseaqFxc/sdm/lc0VV36EnQ=" + }, + "otplib": { + "version": "10.0.0", + "resolved": "https://registry.npmjs.org/otplib/-/otplib-10.0.0.tgz", + "integrity": "sha512-6YoW3o3pOfvEBCNTtohJFy8znAAlqBJqJYS6raikkqEL1xTwKW0avHXl7PklR4/3qgAnM9Z5xH7ZN54Z4Z3S9g==", + "requires": { + "thirty-two": "1.0.2" + } + }, + "parseurl": { + "version": "1.3.3", + "resolved": "https://registry.npmjs.org/parseurl/-/parseurl-1.3.3.tgz", + "integrity": "sha512-CiyeOxFT/JZyN5m0z9PfXw4SCBJ6Sygz1Dpl0wqjlhDEGGBP1GnsUVEL0p63hoG1fcj3fHynXi9NYO4nWOL+qQ==" + }, + "path-to-regexp": { + "version": "0.1.7", + "resolved": "https://registry.npmjs.org/path-to-regexp/-/path-to-regexp-0.1.7.tgz", + "integrity": "sha1-32BBeABfUi8V60SQ5yR6G/qmf4w=" + }, + "pkginfo": { + "version": "0.3.1", + "resolved": "https://registry.npmjs.org/pkginfo/-/pkginfo-0.3.1.tgz", + "integrity": "sha1-Wyn2qB9wcXFC4J52W76rl7T4HiE=" + }, + "process-nextick-args": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/process-nextick-args/-/process-nextick-args-2.0.1.tgz", + "integrity": "sha512-3ouUOpQhtgrbOa17J7+uxOTpITYWaGP7/AhoR3+A+/1e9skrzelGi/dXzEYyvbxubEF6Wn2ypscTKiKJFFn1ag==" + }, + "proxy-addr": { + "version": "2.0.5", + "resolved": "https://registry.npmjs.org/proxy-addr/-/proxy-addr-2.0.5.tgz", + "integrity": "sha512-t/7RxHXPH6cJtP0pRG6smSr9QJidhB+3kXu0KgXnbGYMgzEnUxRQ4/LDdfOwZEMyIh3/xHb8PX3t+lfL9z+YVQ==", + "requires": { + "forwarded": "~0.1.2", + "ipaddr.js": "1.9.0" + } + }, + "pseudomap": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/pseudomap/-/pseudomap-1.0.2.tgz", + "integrity": "sha1-8FKijacOYYkX7wqKw0wa5aaChrM=" + }, + "qs": { + "version": "6.5.1", + "resolved": "https://registry.npmjs.org/qs/-/qs-6.5.1.tgz", + "integrity": "sha512-eRzhrN1WSINYCDCbrz796z37LOe3m5tmW7RQf6oBntukAG1nmovJvhnwHHRMAfeoItc1m2Hk02WER2aQ/iqs+A==" + }, + "range-parser": { + "version": "1.2.1", + "resolved": "https://registry.npmjs.org/range-parser/-/range-parser-1.2.1.tgz", + "integrity": "sha512-Hrgsx+orqoygnmhFbKaHE6c296J+HTAQXoxEF6gNupROmmGJRoyzfG3ccAveqCBrwr/2yxQ5BVd/GTl5agOwSg==" + }, + "range_check": { + "version": "1.4.0", + "resolved": "https://registry.npmjs.org/range_check/-/range_check-1.4.0.tgz", + "integrity": "sha1-zYfHrGLEC6nfabhwPGBPYMN0hjU=", + "requires": { + "ip6": "0.0.4", + "ipaddr.js": "1.2" + }, + "dependencies": { + "ipaddr.js": { + "version": "1.2.0", + "resolved": "https://registry.npmjs.org/ipaddr.js/-/ipaddr.js-1.2.0.tgz", + "integrity": "sha1-irpJyRknmVhb3WQ+DMtQ6K53e6Q=" + } + } + }, + "raw-body": { + "version": "2.3.2", + "resolved": "https://registry.npmjs.org/raw-body/-/raw-body-2.3.2.tgz", + "integrity": "sha1-vNYMd9Prk83gBQKVw/N5OJvIj4k=", + "requires": { + "bytes": "3.0.0", + "http-errors": "1.6.2", + "iconv-lite": "0.4.19", + "unpipe": "1.0.0" + }, + "dependencies": { + "depd": { + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/depd/-/depd-1.1.1.tgz", + "integrity": "sha1-V4O04cRZ8G+lyif5kfPQbnoxA1k=" + }, + "http-errors": { + "version": "1.6.2", + "resolved": "https://registry.npmjs.org/http-errors/-/http-errors-1.6.2.tgz", + "integrity": "sha1-CgAsyFcHGSp+eUbO7cERVfYOxzY=", + "requires": { + "depd": "1.1.1", + "inherits": "2.0.3", + "setprototypeof": "1.0.3", + "statuses": ">= 1.3.1 < 2" + } + }, + "setprototypeof": { + "version": "1.0.3", + "resolved": "https://registry.npmjs.org/setprototypeof/-/setprototypeof-1.0.3.tgz", + "integrity": "sha1-ZlZ+NwQ+608E2RvWWMDL77VbjgQ=" + } + } + }, + "readable-stream": { + "version": "2.3.6", + "resolved": "https://registry.npmjs.org/readable-stream/-/readable-stream-2.3.6.tgz", + "integrity": "sha512-tQtKA9WIAhBF3+VLAseyMqZeBjW0AHJoxOtYqSUZNJxauErmLbVm2FW1y+J/YA9dUrAC39ITejlZWhVIwawkKw==", + "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" + } + }, + "redeyed": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/redeyed/-/redeyed-1.0.1.tgz", + "integrity": "sha1-6WwZO0DAgWsArshCaY5hGF5VSYo=", + "requires": { + "esprima": "~3.0.0" + } + }, + "regenerator-runtime": { + "version": "0.11.1", + "resolved": "https://registry.npmjs.org/regenerator-runtime/-/regenerator-runtime-0.11.1.tgz", + "integrity": "sha512-MguG95oij0fC3QV3URf4V2SDYGJhJnJGqvIIgdECeODCT98wSWDAJ94SSuVpYQUoTcGUIL6L4yNB7j1DFFHSBg==" + }, + "require-all": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/require-all/-/require-all-3.0.0.tgz", + "integrity": "sha1-Rz1JcEvjEBFc4ST3c4Ox69hnExI=" + }, + "retry-as-promised": { + "version": "3.2.0", + "resolved": "https://registry.npmjs.org/retry-as-promised/-/retry-as-promised-3.2.0.tgz", + "integrity": "sha512-CybGs60B7oYU/qSQ6kuaFmRd9sTZ6oXSc0toqePvV74Ac6/IFZSI1ReFQmtCN+uvW1Mtqdwpvt/LGOiCBAY2Mg==", + "requires": { + "any-promise": "^1.3.0" + } + }, + "safe-buffer": { + "version": "5.1.1", + "resolved": "https://registry.npmjs.org/safe-buffer/-/safe-buffer-5.1.1.tgz", + "integrity": "sha512-kKvNJn6Mm93gAczWVJg7wH+wGYWNrDHdWvpUmHyEsgCtIwwo3bqPtV4tR5tuPaUhTOo/kvhVwd8XwwOllGYkbg==" + }, + "safer-buffer": { + "version": "2.1.2", + "resolved": "https://registry.npmjs.org/safer-buffer/-/safer-buffer-2.1.2.tgz", + "integrity": "sha512-YZo3K82SD7Riyi0E1EQPojLz7kpepnSQI9IyPbHHg1XXXevb5dJI7tpyN2ADxGcQbHG7vcyRHk0cbwqcQriUtg==" + }, + "semver": { + "version": "5.7.1", + "resolved": "https://registry.npmjs.org/semver/-/semver-5.7.1.tgz", + "integrity": "sha512-sauaDf/PZdVgrLTNYHRtpXa1iRiKcaebiKQ1BJdpQlWH2lCvexQdX55snPFyK7QzpudqbCI0qXFfOasHdyNDGQ==" + }, + "send": { + "version": "0.16.1", + "resolved": "https://registry.npmjs.org/send/-/send-0.16.1.tgz", + "integrity": "sha512-ElCLJdJIKPk6ux/Hocwhk7NFHpI3pVm/IZOYWqUmoxcgeyM+MpxHHKhb8QmlJDX1pU6WrgaHBkVNm73Sv7uc2A==", + "requires": { + "debug": "2.6.9", + "depd": "~1.1.1", + "destroy": "~1.0.4", + "encodeurl": "~1.0.1", + "escape-html": "~1.0.3", + "etag": "~1.8.1", + "fresh": "0.5.2", + "http-errors": "~1.6.2", + "mime": "1.4.1", + "ms": "2.0.0", + "on-finished": "~2.3.0", + "range-parser": "~1.2.0", + "statuses": "~1.3.1" + }, + "dependencies": { + "debug": { + "version": "2.6.9", + "resolved": "https://registry.npmjs.org/debug/-/debug-2.6.9.tgz", + "integrity": "sha512-bC7ElrdJaJnPbAP+1EotYvqZsb3ecl5wi6Bfi6BJTUcNowp6cvspg0jXznRTKDjm/E7AdgFBVeAPVMNcKGsHMA==", + "requires": { + "ms": "2.0.0" + } + }, + "http-errors": { + "version": "1.6.3", + "resolved": "https://registry.npmjs.org/http-errors/-/http-errors-1.6.3.tgz", + "integrity": "sha1-i1VoC7S+KDoLW/TqLjhYC+HZMg0=", + "requires": { + "depd": "~1.1.2", + "inherits": "2.0.3", + "setprototypeof": "1.1.0", + "statuses": ">= 1.4.0 < 2" + }, + "dependencies": { + "statuses": { + "version": "1.5.0", + "resolved": "https://registry.npmjs.org/statuses/-/statuses-1.5.0.tgz", + "integrity": "sha1-Fhx9rBd2Wf2YEfQ3cfqZOBR4Yow=" + } + } + }, + "statuses": { + "version": "1.3.1", + "resolved": "https://registry.npmjs.org/statuses/-/statuses-1.3.1.tgz", + "integrity": "sha1-+vUbnrdKrvOzrPStX2Gr8ky3uT4=" + } + } + }, + "seq-queue": { + "version": "0.0.5", + "resolved": "https://registry.npmjs.org/seq-queue/-/seq-queue-0.0.5.tgz", + "integrity": "sha1-1WgS4cAXpuTnw+Ojeh2m143TyT4=" + }, + "sequelize": { + "version": "5.8.12", + "resolved": "https://registry.npmjs.org/sequelize/-/sequelize-5.8.12.tgz", + "integrity": "sha512-TtgGgQx/+Nub/IdkV7hqEoozUnOYv28waB/l44fMk37Rr+4G3Inrn9opDb/g81zSuRUKsYGOucdWq0qLH+7ujA==", + "requires": { + "bluebird": "^3.5.0", + "cls-bluebird": "^2.1.0", + "debug": "^4.1.1", + "dottie": "^2.0.0", + "inflection": "1.12.0", + "lodash": "^4.17.11", + "moment": "^2.24.0", + "moment-timezone": "^0.5.21", + "retry-as-promised": "^3.1.0", + "semver": "^6.1.1", + "sequelize-pool": "^2.2.0", + "toposort-class": "^1.0.1", + "uuid": "^3.2.1", + "validator": "^10.11.0", + "wkx": "^0.4.6" + }, + "dependencies": { + "debug": { + "version": "4.1.1", + "resolved": "https://registry.npmjs.org/debug/-/debug-4.1.1.tgz", + "integrity": "sha512-pYAIzeRo8J6KPEaJ0VWOh5Pzkbw/RetuzehGM7QRRX5he4fPHx2rdKMB256ehJCkX+XRQm16eZLqLNS8RSZXZw==", + "requires": { + "ms": "^2.1.1" + } + }, + "moment-timezone": { + "version": "0.5.26", + "resolved": "https://registry.npmjs.org/moment-timezone/-/moment-timezone-0.5.26.tgz", + "integrity": "sha512-sFP4cgEKTCymBBKgoxZjYzlSovC20Y6J7y3nanDc5RoBIXKlZhoYwBoZGe3flwU6A372AcRwScH8KiwV6zjy1g==", + "requires": { + "moment": ">= 2.9.0" + } + }, + "ms": { + "version": "2.1.2", + "resolved": "https://registry.npmjs.org/ms/-/ms-2.1.2.tgz", + "integrity": "sha512-sGkPx+VjMtmA6MX27oA4FBFELFCZZ4S4XqeGOXCv68tT+jb3vk/RyaKWP0PTKyWtmLSM0b+adUTEvbs1PEaH2w==" + }, + "semver": { + "version": "6.3.0", + "resolved": "https://registry.npmjs.org/semver/-/semver-6.3.0.tgz", + "integrity": "sha512-b39TBaTSfV6yBrapU89p5fKekE2m/NwnDocOVruQFS1/veMgdzuPcnOM34M6CwxW8jH/lxEa5rBoDeUwu5HHTw==" + }, + "uuid": { + "version": "3.3.3", + "resolved": "https://registry.npmjs.org/uuid/-/uuid-3.3.3.tgz", + "integrity": "sha512-pW0No1RGHgzlpHJO1nsVrHKpOEIxkGg1xB+v0ZmdNH5OAeAwzAVrCnI2/6Mtx+Uys6iaylxa+D3g4j63IKKjSQ==" + } + } + }, + "sequelize-pool": { + "version": "2.3.0", + "resolved": "https://registry.npmjs.org/sequelize-pool/-/sequelize-pool-2.3.0.tgz", + "integrity": "sha512-Ibz08vnXvkZ8LJTiUOxRcj1Ckdn7qafNZ2t59jYHMX1VIebTAOYefWdRYFt6z6+hy52WGthAHAoLc9hvk3onqA==" + }, + "serve-static": { + "version": "1.13.1", + "resolved": "https://registry.npmjs.org/serve-static/-/serve-static-1.13.1.tgz", + "integrity": "sha512-hSMUZrsPa/I09VYFJwa627JJkNs0NrfL1Uzuup+GqHfToR2KcsXFymXSV90hoyw3M+msjFuQly+YzIH/q0MGlQ==", + "requires": { + "encodeurl": "~1.0.1", + "escape-html": "~1.0.3", + "parseurl": "~1.3.2", + "send": "0.16.1" + } + }, + "setprototypeof": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/setprototypeof/-/setprototypeof-1.1.0.tgz", + "integrity": "sha512-BvE/TwpZX4FXExxOxZyRGQQv651MSwmWKZGqvmPcRIjDqWub67kTKuIMx43cZZrS/cBBzwBcNDWoFxt2XEFIpQ==" + }, + "shimmer": { + "version": "1.2.1", + "resolved": "https://registry.npmjs.org/shimmer/-/shimmer-1.2.1.tgz", + "integrity": "sha512-sQTKC1Re/rM6XyFM6fIAGHRPVGvyXfgzIDvzoq608vM+jeyVD0Tu1E6Np0Kc2zAIFWIj963V2800iF/9LPieQw==" + }, + "sprintf-js": { + "version": "1.1.2", + "resolved": "https://registry.npmjs.org/sprintf-js/-/sprintf-js-1.1.2.tgz", + "integrity": "sha512-VE0SOVEHCk7Qc8ulkWw3ntAzXuqf7S2lvwQaDLRnUeIEaKNQJzV6BwmLKhOqT61aGhfUMrXeaBk+oDGCzvhcug==" + }, + "sqlstring": { + "version": "2.3.1", + "resolved": "https://registry.npmjs.org/sqlstring/-/sqlstring-2.3.1.tgz", + "integrity": "sha1-R1OT/56RR5rqYtyvDKPRSYOn+0A=" + }, + "stack-trace": { + "version": "0.0.10", + "resolved": "https://registry.npmjs.org/stack-trace/-/stack-trace-0.0.10.tgz", + "integrity": "sha1-VHxws0fo0ytOEI6hoqFZ5f3eGcA=" + }, + "statuses": { + "version": "1.5.0", + "resolved": "https://registry.npmjs.org/statuses/-/statuses-1.5.0.tgz", + "integrity": "sha1-Fhx9rBd2Wf2YEfQ3cfqZOBR4Yow=" + }, + "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" + } + }, + "strip-ansi": { + "version": "3.0.1", + "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-3.0.1.tgz", + "integrity": "sha1-ajhfuIU9lS1f8F0Oiq+UJ43GPc8=", + "requires": { + "ansi-regex": "^2.0.0" + } + }, + "superagent": { + "version": "5.1.0", + "resolved": "https://registry.npmjs.org/superagent/-/superagent-5.1.0.tgz", + "integrity": "sha512-7V6JVx5N+eTL1MMqRBX0v0bG04UjrjAvvZJTF/VDH/SH2GjSLqlrcYepFlpTrXpm37aSY6h3GGVWGxXl/98TKA==", + "requires": { + "component-emitter": "^1.3.0", + "cookiejar": "^2.1.2", + "debug": "^4.1.1", + "fast-safe-stringify": "^2.0.6", + "form-data": "^2.3.3", + "formidable": "^1.2.1", + "methods": "^1.1.2", + "mime": "^2.4.4", + "qs": "^6.7.0", + "readable-stream": "^3.4.0", + "semver": "^6.1.1" + }, + "dependencies": { + "debug": { + "version": "4.1.1", + "resolved": "https://registry.npmjs.org/debug/-/debug-4.1.1.tgz", + "integrity": "sha512-pYAIzeRo8J6KPEaJ0VWOh5Pzkbw/RetuzehGM7QRRX5he4fPHx2rdKMB256ehJCkX+XRQm16eZLqLNS8RSZXZw==", + "requires": { + "ms": "^2.1.1" + } + }, + "mime": { + "version": "2.4.4", + "resolved": "https://registry.npmjs.org/mime/-/mime-2.4.4.tgz", + "integrity": "sha512-LRxmNwziLPT828z+4YkNzloCFC2YM4wrB99k+AV5ZbEyfGNWfG8SO1FUXLmLDBSo89NrJZ4DIWeLjy1CHGhMGA==" + }, + "ms": { + "version": "2.1.2", + "resolved": "https://registry.npmjs.org/ms/-/ms-2.1.2.tgz", + "integrity": "sha512-sGkPx+VjMtmA6MX27oA4FBFELFCZZ4S4XqeGOXCv68tT+jb3vk/RyaKWP0PTKyWtmLSM0b+adUTEvbs1PEaH2w==" + }, + "qs": { + "version": "6.8.0", + "resolved": "https://registry.npmjs.org/qs/-/qs-6.8.0.tgz", + "integrity": "sha512-tPSkj8y92PfZVbinY1n84i1Qdx75lZjMQYx9WZhnkofyxzw2r7Ho39G3/aEvSUdebxpnnM4LZJCtvE/Aq3+s9w==" + }, + "readable-stream": { + "version": "3.4.0", + "resolved": "https://registry.npmjs.org/readable-stream/-/readable-stream-3.4.0.tgz", + "integrity": "sha512-jItXPLmrSR8jmTRmRWJXCnGJsfy85mB3Wd/uINMXA65yrnFo0cPClFIUWzo2najVNSl+mx7/4W8ttlLWJe99pQ==", + "requires": { + "inherits": "^2.0.3", + "string_decoder": "^1.1.1", + "util-deprecate": "^1.0.1" + } + }, + "semver": { + "version": "6.3.0", + "resolved": "https://registry.npmjs.org/semver/-/semver-6.3.0.tgz", + "integrity": "sha512-b39TBaTSfV6yBrapU89p5fKekE2m/NwnDocOVruQFS1/veMgdzuPcnOM34M6CwxW8jH/lxEa5rBoDeUwu5HHTw==" + } + } + }, + "superagent-promise": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/superagent-promise/-/superagent-promise-1.1.0.tgz", + "integrity": "sha1-uvIti73UOamwfdEPjAj1T+JQNTM=" + }, + "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" + } + }, + "thirty-two": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/thirty-two/-/thirty-two-1.0.2.tgz", + "integrity": "sha1-TKL//AKlEpDSdEueP1V2k8prYno=" + }, + "tmp": { + "version": "0.0.33", + "resolved": "https://registry.npmjs.org/tmp/-/tmp-0.0.33.tgz", + "integrity": "sha512-jRCJlojKnZ3addtTOjdIqoRuPEKBvNXcGYqzO6zWZX8KfKEpnGY5jfggJQ3EjKuu8D4bJRr0y+cYJFmYbImXGw==", + "requires": { + "os-tmpdir": "~1.0.2" + } + }, + "toidentifier": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/toidentifier/-/toidentifier-1.0.0.tgz", + "integrity": "sha512-yaOH/Pk/VEhBWWTlhI+qXxDFXlejDGcQipMlyxda9nthulaxLZUNcUqFxokp0vcYnvteJln5FNQDRrxj3YcbVw==" + }, + "toposort-class": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/toposort-class/-/toposort-class-1.0.1.tgz", + "integrity": "sha1-f/0feMi+KMO6Rc1OGj9e4ZO9mYg=" + }, + "type-is": { + "version": "1.6.18", + "resolved": "https://registry.npmjs.org/type-is/-/type-is-1.6.18.tgz", + "integrity": "sha512-TkRKr9sUTxEH8MdfuCSP7VizJyzRNMjj2J2do2Jr3Kym598JVdEksuzPQCnlFPW4ky9Q+iA+ma9BGm06XQBy8g==", + "requires": { + "media-typer": "0.3.0", + "mime-types": "~2.1.24" + } + }, + "unpipe": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/unpipe/-/unpipe-1.0.0.tgz", + "integrity": "sha1-sr9O6FFKrmFltIF4KdIbLvSZBOw=" + }, + "useragent": { + "version": "2.1.13", + "resolved": "https://registry.npmjs.org/useragent/-/useragent-2.1.13.tgz", + "integrity": "sha1-u6Q+iqJNXOuDwpN0c+EC4h33TBA=", + "requires": { + "lru-cache": "2.2.x", + "tmp": "0.0.x" + } + }, + "util-deprecate": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/util-deprecate/-/util-deprecate-1.0.2.tgz", + "integrity": "sha1-RQ1Nyfpw3nMnYvvS1KKJgUGaDM8=" + }, + "utils-merge": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/utils-merge/-/utils-merge-1.0.1.tgz", + "integrity": "sha1-n5VxD1CiZ5R7LMwSR0HBAoQn5xM=" + }, + "uuid": { + "version": "3.0.1", + "resolved": "https://registry.npmjs.org/uuid/-/uuid-3.0.1.tgz", + "integrity": "sha1-ZUS7ot/ajBzxfmKaOjBeK7H+5sE=" + }, + "validator": { + "version": "10.11.0", + "resolved": "https://registry.npmjs.org/validator/-/validator-10.11.0.tgz", + "integrity": "sha512-X/p3UZerAIsbBfN/IwahhYaBbY68EN/UQBWHtsbXGT5bfrH/p4NQzUCG1kF/rtKaNpnJ7jAu6NGTdSNtyNIXMw==" + }, + "vary": { + "version": "1.1.2", + "resolved": "https://registry.npmjs.org/vary/-/vary-1.1.2.tgz", + "integrity": "sha1-IpnwLG3tMNSllhsLn3RSShj2NPw=" + }, + "verror": { + "version": "1.10.0", + "resolved": "https://registry.npmjs.org/verror/-/verror-1.10.0.tgz", + "integrity": "sha1-OhBcoXBTr1XW4nDB+CiGguGNpAA=", + "requires": { + "assert-plus": "^1.0.0", + "core-util-is": "1.0.2", + "extsprintf": "^1.2.0" + } + }, + "winston": { + "version": "2.2.0", + "resolved": "https://registry.npmjs.org/winston/-/winston-2.2.0.tgz", + "integrity": "sha1-LIU92Hq1UqjoSF1yy7+aIobwKbc=", + "requires": { + "async": "~1.0.0", + "colors": "1.0.x", + "cycle": "1.0.x", + "eyes": "0.1.x", + "isstream": "0.1.x", + "pkginfo": "0.3.x", + "stack-trace": "0.0.x" + }, + "dependencies": { + "async": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/async/-/async-1.0.0.tgz", + "integrity": "sha1-+PwEyjoTeErenhZBr5hXjPvWR6k=" + } + } + }, + "wkx": { + "version": "0.4.8", + "resolved": "https://registry.npmjs.org/wkx/-/wkx-0.4.8.tgz", + "integrity": "sha512-ikPXMM9IR/gy/LwiOSqWlSL3X/J5uk9EO2hHNRXS41eTLXaUFEVw9fn/593jW/tE5tedNg8YjT5HkCa4FqQZyQ==", + "requires": { + "@types/node": "*" + } + }, + "yallist": { + "version": "2.1.2", + "resolved": "https://registry.npmjs.org/yallist/-/yallist-2.1.2.tgz", + "integrity": "sha1-HBH5IY8HYImkfdUS+TxmmaaoHVI=" + } + } +} diff --git a/forestadmin/package.json b/forestadmin/package.json new file mode 100644 index 000000000..bce6d8f7b --- /dev/null +++ b/forestadmin/package.json @@ -0,0 +1,18 @@ +{ + "name": "pathwar", + "version": "0.0.1", + "private": true, + "scripts": { + "start": "node ./bin/www" + }, + "dependencies": { + "chalk": "~1.1.3", + "debug": "~4.0.1", + "dotenv": "~6.1.0", + "express": "~4.16.3", + "lumber-forestadmin": "^1.2.1", + "mysql2": "~1.4.2", + "require-all": "^3.0.0", + "sequelize": "~5.8.11" + } +} diff --git a/forestadmin/public/favicon.png b/forestadmin/public/favicon.png new file mode 100644 index 0000000000000000000000000000000000000000..2c26500fe735977e471dc5d86ceb6c4b0e85ff26 GIT binary patch literal 2512 zcmZWrNl%+s6#Z;40fRw-#)Ls&pb$uyA%HMoGuvRW6G9n`9UKUR$qZ%;ld42*s-}xX zs;Wj^bkRYr8ns zr@P%`Of_nnW^y`OF2dT$=qTvn&clg$2wYw0VtW%4K>AV2V0E@MURu>5@Os@ty>G~1 zAYZJgC%;;p!D|yU@Xmw3--5JVcF8~$OdfbTQzayw&;T2oI#PLIYNYb4^Es;H!BHFL?+k8;O8icFMore7SSsgUb zrmKJff?^u@05yX-l=$17iB1`~(#&^06=OapF*G&FohgAcoSPop>NP$60P)6b^U-#} ztpr&;R;aV6r91|<83cO4D3EIta3KaTSHc(H=D>0Fvq)k5ed9hWA<)<%`|pQi54YX( zro?>yEI8FPAc?jf?fK_$1K>OtA=WiJF{A+%s4x6a6+1W>OgfC~h6--B*~rS-PtjdD0+S~_cG00H)SJ=mm0Na8e% ziw#o2Dgqf#9zZ$isBMGOR&PLnQ~ZX`BLTD~YFMw%2ci&|kg;$XW|6X82HE`t0yI{r z7FfvT##kl$Vn^)y1z1&1cr1y)wv<&j;z`mH3lKm4E}UO5wN7ypR&_@QJki2s#&Sow zRRWG{YOy&nToDitmTa0hABUE};$Jv$9rS?#F0Tj-qq34;I*x|yx&}rRY)e^ZPEs5}>v_f`xLg%*f-MHH$rmGiP?jr3J7e@WrE`zi zi3jgOfNpT_`^73N_p2eE2XVTzs5pje&H;5?7~d&W|Lj9POQ7Qk?*g~jOFa3$#gl)2 z3Y%w#09~(&;6^yKH33!aE1zKFaQaek+fk#r9LwO9jAZtI#*U2(ld@u*MN}xa*$a1pp+0tFAZRZm#nFxVVF?(;D#Yy#u zHxZ36(@X53Aeh1rbr%@oYgr~1 zP(NpHg#mVdSZD54{dgxHhu-Psw%39@-t`Owp<(}D4{r13@UFN6W{)ccE^nkTtlV66 zN;{6a2J!5ggCDmf+qVwC`jU6M;S9v@Uw{JaaGIepN4}N}FUVU7xW3G)9|!05JEJvL zW4H`b_VVMq%yk3?*l}Et4+J`9vRG5SM3eLjKyJ|>SR9!T1O?+!v6oAg$R#bvg+3q zL3>{jbev~#T*gfNOg3LDS2Yx0n#-B9Ks@~rH8H#}mQoJxgo9J@aM>dOYh4J=vP)al zEvdGIXN29t=>c1FXMYP13y>JcZI0tiKFL7SRA&!Mrn-