ode class="language-py">+environ.Env.read_env() 25
+# Build paths inside the project like this: BASE_DIR / 'subdir'.
26
+BASE_DIR = Path(__file__).resolve().parent.parent
27
+
28
+
29
+# Quick-start development settings - unsuitable for production
30
+# See https://docs.djangoproject.com/en/4.1/howto/deployment/checklist/
31
+
32
+# SECURITY WARNING: keep the secret key used in production secret!
33
+SECRET_KEY = 'django-insecure-e197skh+hf2!q)k&z9a*=#_mnr4y(+x@i856z76oxpz!19%3u='
34
+
35
+# SECURITY WARNING: don't run with debug turned on in production!
36
+DEBUG = True
37
+
38
+mode = os.getenv('MODE')
39
+pprint(f"==== {mode} ====")
40
+if mode == "dev" or mode == "":
41
+    DEBUG = True
42
+else:
43
+    DEBUG = False
44
+ALLOWED_HOSTS = ['*']
45
+
46
+
47
+# Application definition
48
+
49
+INSTALLED_APPS = [
50
+    'django.contrib.admin',
51
+    'django.contrib.auth',
52
+    'django.contrib.contenttypes',
53
+    'django.contrib.sessions',
54
+    'django.contrib.messages',
55
+    'django.contrib.staticfiles',
56
+    'django.contrib.humanize',
57
+    'django.contrib.postgres',
58
+    'crispy_forms',
59
+    "crispy_bootstrap5",
60
+    "django_browser_reload",
61
+    'widget_tweaks',
62
+    'django_bootstrap_breadcrumbs',
63
+    'django_filters',
64
+    'django_yarnpkg',
65
+    'backend.apps.BackendConfig',
66
+]
67
+
68
+MIDDLEWARE = [
69
+    'django.middleware.security.SecurityMiddleware',
70
+    'django.contrib.sessions.middleware.SessionMiddleware',
71
+    'django.middleware.common.CommonMiddleware',
72
+    'django.middleware.csrf.CsrfViewMiddleware',
73
+    'django.contrib.auth.middleware.AuthenticationMiddleware',
74
+    'django.contrib.messages.middleware.MessageMiddleware',
75
+    'django.middleware.clickjacking.XFrameOptionsMiddleware',
76
+    "django_browser_reload.middleware.BrowserReloadMiddleware",
77
+]
78
+
79
+ROOT_URLCONF = 'network_report.urls'
80
+
81
+TEMPLATES = [
82
+    {
83
+        'BACKEND': 'django.template.backends.django.DjangoTemplates',
84
+        'DIRS': [os.path.join(BASE_DIR,'templates')],
85
+        'APP_DIRS': True,
86
+        'OPTIONS': {
87
+            'context_processors': [
88
+                'django.template.context_processors.debug',
89
+                'django.template.context_processors.request',
90
+                'django.contrib.auth.context_processors.auth',
91
+                'django.contrib.messages.context_processors.messages',
92
+            ],
93
+        },
94
+    },
95
+]
96
+
97
+WSGI_APPLICATION = 'network_report.wsgi.application'
98
+
99
+
100
+# Database
101
+# https://docs.djangoproject.com/en/4.1/ref/settings/#databases
102
+
103
+DATABASES = {
104
+    'default': {
105
+        'ENGINE': 'django.db.backends.postgresql_psycopg2',
106
+        'NAME': env("POSTGRES_NAME"),
107
+        'USER': env("POSTGRES_USER"),
108
+        'PASSWORD': env("POSTGRES_PASSWORD"),
109
+        'HOST': 'db',
110
+        'PORT': '5432',
111
+    }
112
+}
113
+
114
+
115
+# Password validation
116
+# https://docs.djangoproject.com/en/4.1/ref/settings/#auth-password-validators
117
+
118
+AUTH_PASSWORD_VALIDATORS = [
119
+    {
120
+        'NAME': 'django.contrib.auth.password_validation.UserAttributeSimilarityValidator',
121
+    },
122
+    {
123
+        'NAME': 'django.contrib.auth.password_validation.MinimumLengthValidator',
124
+    },
125
+    {
126
+        'NAME': 'django.contrib.auth.password_validation.CommonPasswordValidator',
127
+    },
128
+    {
129
+        'NAME': 'django.contrib.auth.password_validation.NumericPasswordValidator',
130
+    },
131
+]
132
+
133
+
134
+# Internationalization
135
+# https://docs.djangoproject.com/en/4.1/topics/i18n/
136
+
137
+LANGUAGE_CODE = 'en-us'
138
+
139
+TIME_ZONE = 'UTC'
140
+
141
+USE_I18N = True
142
+
143
+USE_TZ = True
144
+
145
+
146
+# Static files (CSS, JavaScript, Images)
147
+# https://docs.djangoproject.com/en/4.1/howto/static-files/
148
+
149
+STATIC_URL = 'static/'
150
+
151
+# Default primary key field type
152
+# https://docs.djangoproject.com/en/4.1/ref/settings/#default-auto-field
153
+
154
+DEFAULT_AUTO_FIELD = 'django.db.models.BigAutoField'
155
+
156
+MEDIA_URL = '/media/'
157
+MEDIA_ROOT = os.path.join(BASE_DIR, 'media/')
158
+
159
+
160
+CRISPY_ALLOWED_TEMPLATE_PACKS = "bootstrap5"
161
+
162
+CRISPY_TEMPLATE_PACK = "bootstrap5"
163
+
164
+STATICFILES_DIRS = [
165
+    BASE_DIR / "static",
166
+]
167
+
168
+STATIC_ROOT = BASE_DIR / 'staticfiles'
169
+
170
+STATICFILES_FINDERS = [
171
+    'django.contrib.staticfiles.finders.FileSystemFinder',
172
+    'django.contrib.staticfiles.finders.AppDirectoriesFinder',
173
+    'django_yarnpkg.finders.NodeModulesFinder',
174
+    'compressor.finders.CompressorFinder'
175
+]
176
+
177
+
178
+YARN_INSTALLED_APPS = (
179
+    'bootstrap@^5.0',
180
+    'underscore@^1.6.1',
181
+    'alpinejs@^3.10.5',
182
+    'axios@^1.2.2',
183
+    'tailwindcss@^3.2.4',
184
+    'sortablejs@^1.1.5',
185
+    'chart.js@^4.1.1',
186
+    'datatables.net-bs5',
187
+    'lightbox2',
188
+    'granim', 
189
+    'slick-carousel',
190
+    'mjml',
191
+    'tailwind-color-palette', 
192
+    'paper-css'
193
+)

+ 31 - 0
app/network_report/urls.py

@@ -0,0 +1,31 @@
1
+"""network_report URL Configuration
2
+
3
+The `urlpatterns` list routes URLs to views. For more information please see:
4
+    https://docs.djangoproject.com/en/4.1/topics/http/urls/
5
+Examples:
6
+Function views
7
+    1. Add an import:  from my_app import views
8
+    2. Add a URL to urlpatterns:  path('', views.home, name='home')
9
+Class-based views
10
+    1. Add an import:  from other_app.views import Home
11
+    2. Add a URL to urlpatterns:  path('', Home.as_view(), name='home')
12
+Including another URLconf
13
+    1. Import the include() function: from django.urls import include, path
14
+    2. Add a URL to urlpatterns:  path('blog/', include('blog.urls'))
15
+"""
16
+from django.contrib import admin
17
+from django.urls import path, include, re_path
18
+from django.conf import settings
19
+from django.conf.urls.static import static
20
+from django.views.generic.base import RedirectView
21
+
22
+urlpatterns = [
23
+    path('admin/', admin.site.urls),
24
+    path('backend/', include('backend.urls')),
25
+    path("__reload__/", include("django_browser_reload.urls")),
26
+    path('', RedirectView.as_view(pattern_name='backend:index', permanent=True)),
27
+] + static(settings.STATIC_URL, document_root=settings.STATIC_ROOT)
28
+
29
+if settings.DEBUG:
30
+    urlpatterns += static(settings.MEDIA_URL,
31
+                          document_root=settings.MEDIA_ROOT)

+ 16 - 0
app/network_report/wsgi.py

@@ -0,0 +1,16 @@
1
+"""
2
+WSGI config for network_report project.
3
+
4
+It exposes the WSGI callable as a module-level variable named ``application``.
5
+
6
+For more information on this file, see
7
+https://docs.djangoproject.com/en/4.1/howto/deployment/wsgi/
8
+"""
9
+
10
+import os
11
+
12
+from django.core.wsgi import get_wsgi_application
13
+
14
+os.environ.setdefault('DJANGO_SETTINGS_MODULE', 'network_report.settings')
15
+
16
+application = get_wsgi_application()

+ 1 - 0
app/node_modules/.bin/css-beautify

@@ -0,0 +1 @@
1
+../js-beautify/js/bin/css-beautify.js

+ 1 - 0
app/node_modules/.bin/cssesc

@@ -0,0 +1 @@
1
+../cssesc/bin/cssesc

+ 1 - 0
app/node_modules/.bin/editorconfig

@@ -0,0 +1 @@
1
+../editorconfig/bin/editorconfig

+ 1 - 0
app/node_modules/.bin/he

@@ -0,0 +1 @@
1
+../he/bin/he

+ 1 - 0
app/node_modules/.bin/html-beautify

@@ -0,0 +1 @@
1
+../js-beautify/js/bin/html-beautify.js

+ 1 - 0
app/node_modules/.bin/html-minifier

@@ -0,0 +1 @@
1
+../html-minifier/cli.js

+ 1 - 0
app/node_modules/.bin/jiti

@@ -0,0 +1 @@
1
+../jiti/bin/jiti.js

+ 1 - 0
app/node_modules/.bin/js-beautify

@@ -0,0 +1 @@
1
+../js-beautify/js/bin/js-beautify.js

+ 1 - 0
app/node_modules/.bin/juice

@@ -0,0 +1 @@
1
+../juice/bin/juice

+ 1 - 0
app/node_modules/.bin/migrate

@@ -0,0 +1 @@
1
+../mjml-migrate/lib/cli.js

+ 1 - 0
app/node_modules/.bin/mime

@@ -0,0 +1 @@
1
+../mime/cli.js

+ 1 - 0
app/node_modules/.bin/mjml

@@ -0,0 +1 @@
1
+../mjml/bin/mjml

+ 1 - 0
app/node_modules/.bin/mjml-cli

@@ -0,0 +1 @@
1
+../mjml-cli/bin/mjml

+ 1 - 0
app/node_modules/.bin/nanoid

@@ -0,0 +1 @@
1
+../nanoid/bin/nanoid.cjs

+ 1 - 0
app/node_modules/.bin/nopt

@@ -0,0 +1 @@
1
+../nopt/bin/nopt.js

+ 1 - 0
app/node_modules/.bin/resolve

@@ -0,0 +1 @@
1
+../resolve/bin/resolve

+ 1 - 0
app/node_modules/.bin/semver

@@ -0,0 +1 @@
1
+../semver/bin/semver.js

+ 1 - 0
app/node_modules/.bin/sucrase

@@ -0,0 +1 @@
1
+../sucrase/bin/sucrase

+ 1 - 0
app/node_modules/.bin/sucrase-node

@@ -0,0 +1 @@
1
+../sucrase/bin/sucrase-node

+ 1 - 0
app/node_modules/.bin/tailwind

@@ -0,0 +1 @@
1
+../tailwindcss/lib/cli.js

+ 1 - 0
app/node_modules/.bin/tailwindcss

@@ -0,0 +1 @@
1
+../tailwindcss/lib/cli.js

+ 1 - 0
app/node_modules/.bin/uglifyjs

@@ -0,0 +1 @@
1
+../uglify-js/bin/uglifyjs

+ 272 - 0
app/node_modules/.yarn-integrity

@@ -0,0 +1,272 @@
1
+{
2
+  "systemParams": "linux-arm64-108",
3
+  "modulesFolders": [
4
+    "node_modules"
5
+  ],
6
+  "flags": [],
7
+  "linkedModules": [],
8
+  "topLevelPatterns": [
9
+    "alpinejs@^3.10.5",
10
+    "axios@^1.2.2",
11
+    "bootstrap@^5.0",
12
+    "chart.js@^4.1.1",
13
+    "datatables.net-bs5@^1.13.6",
14
+    "granim@^2.0.0",
15
+    "lightbox2@^2.11.4",
16
+    "mjml@^4.14.1",
17
+    "paper-css@^0.4.1",
18
+    "slick-carousel@^1.8.1",
19
+    "sortablejs@^1.1.5",
20
+    "tailwind-color-palette@^1.0.3",
21
+    "tailwindcss@^3.2.4",
22
+    "underscore@^1.6.1"
23
+  ],
24
+  "lockfileEntries": {
25
+    "@alloc/quick-lru@^5.2.0": "https://registry.yarnpkg.com/@alloc/quick-lru/-/quick-lru-5.2.0.tgz#7bf68b20c0a350f936915fcae06f58e32007ce30",
26
+    "@babel/runtime@^7.14.6": "https://registry.yarnpkg.com/@babel/runtime/-/runtime-7.22.15.tgz#38f46494ccf6cf020bd4eed7124b425e83e523b8",
27
+    "@jridgewell/gen-mapping@^0.3.2": "https://registry.yarnpkg.com/@jridgewell/gen-mapping/-/gen-mapping-0.3.3.tgz#7e02e6eb5df901aaedb08514203b096614024098",
28
+    "@jridgewell/resolve-uri@^3.1.0": "https://registry.yarnpkg.com/@jridgewell/resolve-uri/-/resolve-uri-3.1.1.tgz#c08679063f279615a3326583ba3a90d1d82cc721",
29
+    "@jridgewell/set-array@^1.0.1": "https://registry.yarnpkg.com/@jridgewell/set-array/-/set-array-1.1.2.tgz#7c6cf998d6d20b914c0a55a91ae928ff25965e72",
30
+    "@jridgewell/sourcemap-codec@^1.4.10": "https://registry.yarnpkg.com/@jridgewell/sourcemap-codec/-/sourcemap-codec-1.4.15.tgz#d7c6e6755c78567a951e04ab52ef0fd26de59f32",
31
+    "@jridgewell/sourcemap-codec@^1.4.14": "https://registry.yarnpkg.com/@jridgewell/sourcemap-codec/-/sourcemap-codec-1.4.15.tgz#d7c6e6755c78567a951e04ab52ef0fd26de59f32",
32
+    "@jridgewell/trace-mapping@^0.3.9": "https://registry.yarnpkg.com/@jridgewell/trace-mapping/-/trace-mapping-0.3.19.tgz#f8a3249862f91be48d3127c3cfe992f79b4b8811",
33
+    "@kurkle/color@^0.3.0": "https://registry.yarnpkg.com/@kurkle/color/-/color-0.3.2.tgz#5acd38242e8bde4f9986e7913c8fdf49d3aa199f",
34
+    "@nodelib/fs.scandir@2.1.5": "https://registry.yarnpkg.com/@nodelib/fs.scandir/-/fs.scandir-2.1.5.tgz#7619c2eb21b25483f6d167548b4cfd5a7488c3d5",
35
+    "@nodelib/fs.stat@2.0.5": "https://registry.yarnpkg.com/@nodelib/fs.stat/-/fs.stat-2.0.5.tgz#5bd262af94e9d25bd1e71b05deed44876a222e8b",
36
+    "@nodelib/fs.stat@^2.0.2": "https://registry.yarnpkg.com/@nodelib/fs.stat/-/fs.stat-2.0.5.tgz#5bd262af94e9d25bd1e71b05deed44876a222e8b",
37
+    "@nodelib/fs.walk@^1.2.3": "https://registry.yarnpkg.com/@nodelib/fs.walk/-/fs.walk-1.2.8.tgz#e95737e8bb6746ddedf69c556953494f196fe69a",
38
+    "@one-ini/wasm@0.1.1": "https://registry.yarnpkg.com/@one-ini/wasm/-/wasm-0.1.1.tgz#6013659736c9dbfccc96e8a9c2b3de317df39323",
39
+    "@vue/reactivity@~3.1.1": "https://registry.yarnpkg.com/@vue/reactivity/-/reactivity-3.1.5.tgz#dbec4d9557f7c8f25c2635db1e23a78a729eb991",
40
+    "@vue/shared@3.1.5": "https://registry.yarnpkg.com/@vue/shared/-/shared-3.1.5.tgz#74ee3aad995d0a3996a6bb9533d4d280514ede03",
41
+    "abbrev@^1.0.0": "https://registry.yarnpkg.com/abbrev/-/abbrev-1.1.1.tgz#f8f2c887ad10bf67f634f005b6987fed3179aac8",
42
+    "alpinejs@^3.10.5": "https://registry.yarnpkg.com/alpinejs/-/alpinejs-3.13.0.tgz#0334d5f9edb612be33f1f8a7eb3a579b53e4f04e",
43
+    "ansi-colors@^4.1.1": "https://registry.yarnpkg.com/ansi-colors/-/ansi-colors-4.1.3.tgz#37611340eb2243e70cc604cad35d63270d48781b",
44
+    "ansi-regex@^5.0.1": "https://registry.yarnpkg.com/ansi-regex/-/ansi-regex-5.0.1.tgz#082cb2c89c9fe8659a311a53bd6a4dc5301db304",
45
+    "ansi-styles@^4.0.0": "https://registry.yarnpkg.com/ansi-styles/-/ansi-styles-4.3.0.tgz#edd803628ae71c04c85ae7a0906edad34b648937",
46
+    "any-promise@^1.0.0": "https://registry.yarnpkg.com/any-promise/-/any-promise-1.3.0.tgz#abc6afeedcea52e809cdc0376aed3ce39635d17f",
47
+    "anymatch@~3.1.2": "https://registry.yarnpkg.com/anymatch/-/anymatch-3.1.3.tgz#790c58b19ba1720a84205b57c618d5ad8524973e",
48
+    "arg@^5.0.2": "https://registry.yarnpkg.com/arg/-/arg-5.0.2.tgz#c81433cc427c92c4dcf4865142dbca6f15acd59c",
49
+    "asynckit@^0.4.0": "https://registry.yarnpkg.com/asynckit/-/asynckit-0.4.0.tgz#c79ed97f7f34cb8f2ba1bc9790bcc366474b4b79",
50
+    "axios@^1.2.2": "https://registry.yarnpkg.com/axios/-/axios-1.5.0.tgz#f02e4af823e2e46a9768cfc74691fdd0517ea267",
51
+    "balanced-match@^1.0.0": "https://registry.yarnpkg.com/balanced-match/-/balanced-match-1.0.2.tgz#e83e3a7e3f300b34cb9d87f615fa0cbf357690ee",
52
+    "binary-extensions@^2.0.0": "https://registry.yarnpkg.com/binary-extensions/-/binary-extensions-2.2.0.tgz#75f502eeaf9ffde42fc98829645be4ea76bd9e2d",
53
+    "boolbase@^1.0.0": "https://registry.yarnpkg.com/boolbase/-/boolbase-1.0.0.tgz#68dff5fbe60c51eb37725ea9e3ed310dcc1e776e",
54
+    "bootstrap@^5.0": "https://registry.yarnpkg.com/bootstrap/-/bootstrap-5.3.2.tgz#97226583f27aae93b2b28ab23f4c114757ff16ae",
55
+    "brace-expansion@^1.1.7": "https://registry.yarnpkg.com/brace-expansion/-/brace-expansion-1.1.11.tgz#3c7fcbf529d87226f3d2f52b966ff5271eb441dd",
56
+    "brace-expansion@^2.0.1": "https://registry.yarnpkg.com/brace-expansion/-/brace-expansion-2.0.1.tgz#1edc459e0f0c548486ecf9fc99f2221364b9a0ae",
57
+    "braces@^3.0.2": "https://registry.yarnpkg.com/braces/-/braces-3.0.2.tgz#3454e1a462ee8d599e236df336cd9ea4f8afe107",
58
+    "braces@~3.0.2": "https://registry.yarnpkg.com/braces/-/braces-3.0.2.tgz#3454e1a462ee8d599e236df336cd9ea4f8afe107",
59
+    "camel-case@^3.0.0": "https://registry.yarnpkg.com/camel-case/-/camel-case-3.0.0.tgz#ca3c3688a4e9cf3a4cda777dc4dcbc713249cf73",
60
+    "camelcase-css@^2.0.1": "https://registry.yarnpkg.com/camelcase-css/-/camelcase-css-2.0.1.tgz#ee978f6947914cc30c6b44741b6ed1df7f043fd5",
61
+    "chart.js@^4.1.1": "https://registry.yarnpkg.com/chart.js/-/chart.js-4.4.0.tgz#df843fdd9ec6bd88d7f07e2b95348d221bd2698c",
62
+    "cheerio-select@^2.1.0": "https://registry.yarnpkg.com/cheerio-select/-/cheerio-select-2.1.0.tgz#4d8673286b8126ca2a8e42740d5e3c4884ae21b4",
63
+    "cheerio@1.0.0-rc.12": "https://registry.yarnpkg.com/cheerio/-/cheerio-1.0.0-rc.12.tgz#788bf7466506b1c6bf5fae51d24a2c4d62e47683",
64
+    "cheerio@^1.0.0-rc.12": "https://registry.yarnpkg.com/cheerio/-/cheerio-1.0.0-rc.12.tgz#788bf7466506b1c6bf5fae51d24a2c4d62e47683",
65
+    "chokidar@^3.0.0": "https://registry.yarnpkg.com/chokidar/-/chokidar-3.5.3.tgz#1cf37c8707b932bd1af1ae22c0432e2acd1903bd",
66
+    "chokidar@^3.5.3": "https://registry.yarnpkg.com/chokidar/-/chokidar-3.5.3.tgz#1cf37c8707b932bd1af1ae22c0432e2acd1903bd",
67
+    "clean-css@^4.2.1": "https://registry.yarnpkg.com/clean-css/-/clean-css-4.2.4.tgz#733bf46eba4e607c6891ea57c24a989356831178",
68
+    "cliui@^7.0.2": "https://registry.yarnpkg.com/cliui/-/cliui-7.0.4.tgz#a0265ee655476fc807aea9df3df8df7783808b4f",
69
+    "color-convert@^2.0.1": "https://registry.yarnpkg.com/color-convert/-/color-convert-2.0.1.tgz#72d3a68d598c9bdb3af2ad1e84f21d896abd4de3",
70
+    "color-name@~1.1.4": "https://registry.yarnpkg.com/color-name/-/color-name-1.1.4.tgz#c2a09a87acbde69543de6f63fa3995c826c536a2",
71
+    "combined-stream@^1.0.8": "https://registry.yarnpkg.com/combined-stream/-/combined-stream-1.0.8.tgz#c3d45a8b34fd730631a110a8a2520682b31d5a7f",
72
+    "commander@^10.0.0": "https://registry.yarnpkg.com/commander/-/commander-10.0.1.tgz#881ee46b4f77d1c1dccc5823433aa39b022cbe06",
73
+    "commander@^2.19.0": "https://registry.yarnpkg.com/commander/-/commander-2.20.3.tgz#fd485e84c03eb4881c20722ba48035e8531aeb33",
74
+    "commander@^4.0.0": "https://registry.yarnpkg.com/commander/-/commander-4.1.1.tgz#9fd602bd936294e9e9ef46a3f4d6964044b18068",
75
+    "commander@^6.1.0": "https://registry.yarnpkg.com/commander/-/commander-6.2.1.tgz#0792eb682dfbc325999bb2b84fddddba110ac73c",
76
+    "concat-map@0.0.1": "https://registry.yarnpkg.com/concat-map/-/concat-map-0.0.1.tgz#d8a96bd77fd68df7793a73036a3ba0d5405d477b",
77
+    "config-chain@^1.1.13": "https://registry.yarnpkg.com/config-chain/-/config-chain-1.1.13.tgz#fad0795aa6a6cdaff9ed1b68e9dff94372c232f4",
78
+    "css-select@^5.1.0": "https://registry.yarnpkg.com/css-select/-/css-select-5.1.0.tgz#b8ebd6554c3637ccc76688804ad3f6a6fdaea8a6",
79
+    "css-what@^6.1.0": "https://registry.yarnpkg.com/css-what/-/css-what-6.1.0.tgz#fb5effcf76f1ddea2c81bdfaa4de44e79bac70f4",
80
+    "cssesc@^3.0.0": "https://registry.yarnpkg.com/cssesc/-/cssesc-3.0.0.tgz#37741919903b868565e1c09ea747445cd18983ee",
81
+    "datatables.net-bs5@^1.13.6": "https://registry.yarnpkg.com/datatables.net-bs5/-/datatables.net-bs5-1.13.6.tgz#33bf10c0844bb08e17327d841089c1f277f796ff",
82
+    "datatables.net@>=1.13.4": "https://registry.yarnpkg.com/datatables.net/-/datatables.net-1.13.6.tgz#6e282adbbb2732e8df495611b8bb54e19f7a943e",
83
+    "delayed-stream@~1.0.0": "https://registry.yarnpkg.com/delayed-stream/-/delayed-stream-1.0.0.tgz#df3ae199acadfb7d440aaae0b29e2272b24ec619",
84
+    "detect-node@2.0.4": "https://registry.yarnpkg.com/detect-node/-/detect-node-2.0.4.tgz#014ee8f8f669c5c58023da64b8179c083a28c46c",
85
+    "detect-node@^2.0.4": "https://registry.yarnpkg.com/detect-node/-/detect-node-2.1.0.tgz#c9c70775a49c3d03bc2c06d9a73be550f978f8b1",
86
+    "didyoumean@^1.2.2": "https://registry.yarnpkg.com/didyoumean/-/didyoumean-1.2.2.tgz#989346ffe9e839b4555ecf5666edea0d3e8ad037",
87
+    "dlv@^1.1.3": "https://registry.yarnpkg.com/dlv/-/dlv-1.1.3.tgz#5c198a8a11453596e751494d49874bc7732f2e79",
88
+    "dom-serializer@^1.0.1": "https://registry.yarnpkg.com/dom-serializer/-/dom-serializer-1.4.1.tgz#de5d41b1aea290215dc45a6dae8adcf1d32e2d30",
89
+    "dom-serializer@^2.0.0": "https://registry.yarnpkg.com/dom-serializer/-/dom-serializer-2.0.0.tgz#e41b802e1eedf9f6cae183ce5e622d789d7d8e53",
90
+    "domelementtype@^2.0.1": "https://registry.yarnpkg.com/domelementtype/-/domelementtype-2.3.0.tgz#5c45e8e869952626331d7aab326d01daf65d589d",
91
+    "domelementtype@^2.2.0": "https://registry.yarnpkg.com/domelementtype/-/domelementtype-2.3.0.tgz#5c45e8e869952626331d7aab326d01daf65d589d",
92
+    "domelementtype@^2.3.0": "https://registry.yarnpkg.com/domelementtype/-/domelementtype-2.3.0.tgz#5c45e8e869952626331d7aab326d01daf65d589d",
93
+    "domhandler@^3.3.0": "https://registry.yarnpkg.com/domhandler/-/domhandler-3.3.0.tgz#6db7ea46e4617eb15cf875df68b2b8524ce0037a",
94
+    "domhandler@^4.2.0": "https://registry.yarnpkg.com/domhandler/-/domhandler-4.3.1.tgz#8d792033416f59d68bc03a5aa7b018c1ca89279c",
95
+    "domhandler@^5.0.2": "https://registry.yarnpkg.com/domhandler/-/domhandler-5.0.3.tgz#cc385f7f751f1d1fc650c21374804254538c7d31",
96
+    "domhandler@^5.0.3": "https://registry.yarnpkg.com/domhandler/-/domhandler-5.0.3.tgz#cc385f7f751f1d1fc650c21374804254538c7d31",
97
+    "domutils@^2.4.2": "https://registry.yarnpkg.com/domutils/-/domutils-2.8.0.tgz#4437def5db6e2d1f5d6ee859bd95ca7d02048135",
98
+    "domutils@^3.0.1": "https://registry.yarnpkg.com/domutils/-/domutils-3.1.0.tgz#c47f551278d3dc4b0b1ab8cbb42d751a6f0d824e",
99
+    "editorconfig@^1.0.3": "https://registry.yarnpkg.com/editorconfig/-/editorconfig-1.0.4.tgz#040c9a8e9a6c5288388b87c2db07028aa89f53a3",
100
+    "emoji-regex@^8.0.0": "https://registry.yarnpkg.com/emoji-regex/-/emoji-regex-8.0.0.tgz#e818fd69ce5ccfcb404594f842963bf53164cc37",
101
+    "entities@^2.0.0": "https://registry.yarnpkg.com/entities/-/entities-2.2.0.tgz#098dc90ebb83d8dffa089d55256b351d34c4da55",
102
+    "entities@^4.2.0": "https://registry.yarnpkg.com/entities/-/entities-4.5.0.tgz#5d268ea5e7113ec74c4d033b79ea5a35a488fb48",
103
+    "entities@^4.4.0": "https://registry.yarnpkg.com/entities/-/entities-4.5.0.tgz#5d268ea5e7113ec74c4d033b79ea5a35a488fb48",
104
+    "escalade@^3.1.1": "https://registry.yarnpkg.com/escalade/-/escalade-3.1.1.tgz#d8cfdc7000965c5a0174b4a82eaa5c0552742e40",
105
+    "escape-goat@^3.0.0": "https://registry.yarnpkg.com/escape-goat/-/escape-goat-3.0.0.tgz#e8b5fb658553fe8a3c4959c316c6ebb8c842b19c",
106
+    "fast-glob@^3.2.12": "https://registry.yarnpkg.com/fast-glob/-/fast-glob-3.3.1.tgz#784b4e897340f3dbbef17413b3f11acf03c874c4",
107
+    "fastq@^1.6.0": "https://registry.yarnpkg.com/fastq/-/fastq-1.15.0.tgz#d04d07c6a2a68fe4599fea8d2e103a937fae6b3a",
108
+    "fill-range@^7.0.1": "https://registry.yarnpkg.com/fill-range/-/fill-range-7.0.1.tgz#1919a6a7c75fe38b2c7c77e5198535da9acdda40",
109
+    "follow-redirects@^1.15.0": "https://registry.yarnpkg.com/follow-redirects/-/follow-redirects-1.15.2.tgz#b460864144ba63f2681096f274c4e57026da2c13",
110
+    "form-data@^4.0.0": "https://registry.yarnpkg.com/form-data/-/form-data-4.0.0.tgz#93919daeaf361ee529584b9b31664dc12c9fa452",
111
+    "fs.realpath@^1.0.0": "https://registry.yarnpkg.com/fs.realpath/-/fs.realpath-1.0.0.tgz#1504ad2523158caa40db4a2787cb01411994ea4f",
112
+    "fsevents@~2.3.2": "https://registry.yarnpkg.com/fsevents/-/fsevents-2.3.3.tgz#cac6407785d03675a2a5e1a5305c697b347d90d6",
113
+    "function-bind@^1.1.1": "https://registry.yarnpkg.com/function-bind/-/function-bind-1.1.1.tgz#a56899d3ea3c9bab874bb9773b7c5ede92f4895d",
114
+    "get-caller-file@^2.0.5": "https://registry.yarnpkg.com/get-caller-file/-/get-caller-file-2.0.5.tgz#4f94412a82db32f36e3b0b9741f8a97feb031f7e",
115
+    "glob-parent@^5.1.2": "https://registry.yarnpkg.com/glob-parent/-/glob-parent-5.1.2.tgz#869832c58034fe68a4093c17dc15e8340d8401c4",
116
+    "glob-parent@^6.0.2": "https://registry.yarnpkg.com/glob-parent/-/glob-parent-6.0.2.tgz#6d237d99083950c79290f24c7642a3de9a28f9e3",
117
+    "glob-parent@~5.1.2": "https://registry.yarnpkg.com/glob-parent/-/glob-parent-5.1.2.tgz#869832c58034fe68a4093c17dc15e8340d8401c4",
118
+    "glob@7.1.6": "https://registry.yarnpkg.com/glob/-/glob-7.1.6.tgz#141f33b81a7c2492e125594307480c46679278a6",
119
+    "glob@^7.1.1": "https://registry.yarnpkg.com/glob/-/glob-7.2.3.tgz#b8df0fb802bbfa8e89bd1d938b4e16578ed44f2b",
120
+    "glob@^8.1.0": "https://registry.yarnpkg.com/glob/-/glob-8.1.0.tgz#d388f656593ef708ee3e34640fdfb99a9fd1c33e",
121
+    "granim@^2.0.0": "https://registry.yarnpkg.com/granim/-/granim-2.0.0.tgz#cd3905e97dd5cb5ef0b164b68d5073ac43f1eec6",
122
+    "has@^1.0.3": "https://registry.yarnpkg.com/has/-/has-1.0.3.tgz#722d7cbfc1f6aa8241f16dd814e011e1f41e8796",
123
+    "he@^1.2.0": "https://registry.yarnpkg.com/he/-/he-1.2.0.tgz#84ae65fa7eafb165fddb61566ae14baf05664f0f",
124
+    "html-minifier@^4.0.0": "https://registry.yarnpkg.com/html-minifier/-/html-minifier-4.0.0.tgz#cca9aad8bce1175e02e17a8c33e46d8988889f56",
125
+    "htmlparser2@^5.0.0": "https://registry.yarnpkg.com/htmlparser2/-/htmlparser2-5.0.1.tgz#7daa6fc3e35d6107ac95a4fc08781f091664f6e7",
126
+    "htmlparser2@^8.0.1": "https://registry.yarnpkg.com/htmlparser2/-/htmlparser2-8.0.2.tgz#f002151705b383e62433b5cf466f5b716edaec21",
127
+    "inflight@^1.0.4": "https://registry.yarnpkg.com/inflight/-/inflight-1.0.6.tgz#49bd6331d7d02d0c09bc910a1075ba8165b56df9",
128
+    "inherits@2": "https://registry.yarnpkg.com/inherits/-/inherits-2.0.4.tgz#0fa2c64f932917c3433a0ded55363aae37416b7c",
129
+    "ini@^1.3.4": "https://registry.yarnpkg.com/ini/-/ini-1.3.8.tgz#a29da425b48806f34767a4efce397269af28432c",
130
+    "is-binary-path@~2.1.0": "https://registry.yarnpkg.com/is-binary-path/-/is-binary-path-2.1.0.tgz#ea1f7f3b80f064236e83470f86c09c254fb45b09",
131
+    "is-core-module@^2.13.0": "https://registry.yarnpkg.com/is-core-module/-/is-core-module-2.13.0.tgz#bb52aa6e2cbd49a30c2ba68c42bf3435ba6072db",
132
+    "is-extglob@^2.1.1": "https://registry.yarnpkg.com/is-extglob/-/is-extglob-2.1.1.tgz#a88c02535791f02ed37c76a1b9ea9773c833f8c2",
133
+    "is-fullwidth-code-point@^3.0.0": "https://registry.yarnpkg.com/is-fullwidth-code-point/-/is-fullwidth-code-point-3.0.0.tgz#f116f8064fe90b3f7844a38997c0b75051269f1d",
134
+    "is-glob@^4.0.1": "https://registry.yarnpkg.com/is-glob/-/is-glob-4.0.3.tgz#64f61e42cbbb2eec2071a9dac0b28ba1e65d5084",
135
+    "is-glob@^4.0.3": "https://registry.yarnpkg.com/is-glob/-/is-glob-4.0.3.tgz#64f61e42cbbb2eec2071a9dac0b28ba1e65d5084",
136
+    "is-glob@~4.0.1": "https://registry.yarnpkg.com/is-glob/-/is-glob-4.0.3.tgz#64f61e42cbbb2eec2071a9dac0b28ba1e65d5084",
137
+    "is-number@^7.0.0": "https://registry.yarnpkg.com/is-number/-/is-number-7.0.0.tgz#7535345b896734d5f80c4d06c50955527a14f12b",
138
+    "jiti@^1.18.2": "https://registry.yarnpkg.com/jiti/-/jiti-1.20.0.tgz#2d823b5852ee8963585c8dd8b7992ffc1ae83b42",
139
+    "jquery@>=1.7": "https://registry.yarnpkg.com/jquery/-/jquery-3.7.1.tgz#083ef98927c9a6a74d05a6af02806566d16274de",
140
+    "js-beautify@^1.6.14": "https://registry.yarnpkg.com/js-beautify/-/js-beautify-1.14.9.tgz#a5db728bc5a0d84d3b1a597c376b29bd4d39c8e5",
141
+    "juice@^9.0.0": "https://registry.yarnpkg.com/juice/-/juice-9.1.0.tgz#3ef8a12392d44c1cd996022aa977581049a65050",
142
+    "lightbox2@^2.11.4": "https://registry.yarnpkg.com/lightbox2/-/lightbox2-2.11.4.tgz#3ba020011ecea9237d0905c47db4026e9ab64400",
143
+    "lilconfig@^2.0.5": "https://registry.yarnpkg.com/lilconfig/-/lilconfig-2.1.0.tgz#78e23ac89ebb7e1bfbf25b18043de756548e7f52",
144
+    "lilconfig@^2.1.0": "https://registry.yarnpkg.com/lilconfig/-/lilconfig-2.1.0.tgz#78e23ac89ebb7e1bfbf25b18043de756548e7f52",
145
+    "lines-and-columns@^1.1.6": "https://registry.yarnpkg.com/lines-and-columns/-/lines-and-columns-1.2.4.tgz#eca284f75d2965079309dc0ad9255abb2ebc1632",
146
+    "lodash@^4.17.15": "https://registry.yarnpkg.com/lodash/-/lodash-4.17.21.tgz#679591c564c3bffaae8454cf0b3df370c3d6911c",
147
+    "lodash@^4.17.21": "https://registry.yarnpkg.com/lodash/-/lodash-4.17.21.tgz#679591c564c3bffaae8454cf0b3df370c3d6911c",
148
+    "lower-case@^1.1.1": "https://registry.yarnpkg.com/lower-case/-/lower-case-1.1.4.tgz#9a2cabd1b9e8e0ae993a4bf7d5875c39c42e8eac",
149
+    "lru-cache@^6.0.0": "https://registry.yarnpkg.com/lru-cache/-/lru-cache-6.0.0.tgz#6d6fe6570ebd96aaf90fcad1dafa3b2566db3a94",
150
+    "mensch@^0.3.4": "https://registry.yarnpkg.com/mensch/-/mensch-0.3.4.tgz#770f91b46cb16ea5b204ee735768c3f0c491fecd",
151
+    "merge2@^1.3.0": "https://registry.yarnpkg.com/merge2/-/merge2-1.4.1.tgz#4368892f885e907455a6fd7dc55c0c9d404990ae",
152
+    "micromatch@^4.0.4": "https://registry.yarnpkg.com/micromatch/-/micromatch-4.0.5.tgz#bc8999a7cbbf77cdc89f132f6e467051b49090c6",
153
+    "micromatch@^4.0.5": "https://registry.yarnpkg.com/micromatch/-/micromatch-4.0.5.tgz#bc8999a7cbbf77cdc89f132f6e467051b49090c6",
154
+    "mime-db@1.52.0": "https://registry.yarnpkg.com/mime-db/-/mime-db-1.52.0.tgz#bbabcdc02859f4987301c856e3387ce5ec43bf70",
155
+    "mime-types@^2.1.12": "https://registry.yarnpkg.com/mime-types/-/mime-types-2.1.35.tgz#381a871b62a734450660ae3deee44813f70d959a",
156
+    "mime@^2.4.6": "https://registry.yarnpkg.com/mime/-/mime-2.6.0.tgz#a2a682a95cd4d0cb1d6257e28f83da7e35800367",
157
+    "minimatch@9.0.1": "https://registry.yarnpkg.com/minimatch/-/minimatch-9.0.1.tgz#8a555f541cf976c622daf078bb28f29fb927c253",
158
+    "minimatch@^3.0.4": "https://registry.yarnpkg.com/minimatch/-/minimatch-3.1.2.tgz#19cd194bfd3e428f049a70817c038d89ab4be35b",
159
+    "minimatch@^3.1.1": "https://registry.yarnpkg.com/minimatch/-/minimatch-3.1.2.tgz#19cd194bfd3e428f049a70817c038d89ab4be35b",
160
+    "minimatch@^5.0.1": "https://registry.yarnpkg.com/minimatch/-/minimatch-5.1.6.tgz#1cfcb8cf5522ea69952cd2af95ae09477f122a96",
161
+    "mjml-accordion@4.14.1": "https://registry.yarnpkg.com/mjml-accordion/-/mjml-accordion-4.14.1.tgz#39977d426ed4e828614245c8b2e8212085394d14",
162
+    "mjml-body@4.14.1": "https://registry.yarnpkg.com/mjml-body/-/mjml-body-4.14.1.tgz#31c79c25a74257ff042e287c09fb363a98e1209f",
163
+    "mjml-button@4.14.1": "https://registry.yarnpkg.com/mjml-button/-/mjml-button-4.14.1.tgz#a1779555ca4a479c5a52cc0025e8ca0f8e74dad8",
164
+    "mjml-carousel@4.14.1": "https://registry.yarnpkg.com/mjml-carousel/-/mjml-carousel-4.14.1.tgz#dc90116af6adab22bf2074e54165c3b5b7998328",
165
+    "mjml-cli@4.14.1": "https://registry.yarnpkg.com/mjml-cli/-/mjml-cli-4.14.1.tgz#4f445e30a3573c9bd57ee6d5a2a6bf8d5b1a0b20",
166
+    "mjml-column@4.14.1": "https://registry.yarnpkg.com/mjml-column/-/mjml-column-4.14.1.tgz#828cd4e5f82dcbc6d91bd2ac83d56e7b262becbe",
167
+    "mjml-core@4.14.1": "https://registry.yarnpkg.com/mjml-core/-/mjml-core-4.14.1.tgz#f748a137c280b89a8d09fab1a988014c3fc8dcd2",
168
+    "mjml-divider@4.14.1": "https://registry.yarnpkg.com/mjml-divider/-/mjml-divider-4.14.1.tgz#c5f90bffc0cd1321b6a73342163311221dff1d26",
169
+    "mjml-group@4.14.1": "https://registry.yarnpkg.com/mjml-group/-/mjml-group-4.14.1.tgz#5c3f1a99f0f338241697c2971964a6f89a1fd2a7",
170
+    "mjml-head-attributes@4.14.1": "https://registry.yarnpkg.com/mjml-head-attributes/-/mjml-head-attributes-4.14.1.tgz#cd864f46e039823c4c0c1070745865dac83101d7",
171
+    "mjml-head-breakpoint@4.14.1": "https://registry.yarnpkg.com/mjml-head-breakpoint/-/mjml-head-breakpoint-4.14.1.tgz#60900466174b0e9dc1d763a4836917351a3cc074",
172
+    "mjml-head-font@4.14.1": "https://registry.yarnpkg.com/mjml-head-font/-/mjml-head-font-4.14.1.tgz#b642dff1f0542df701ececb80f8ca625d9efb48e",
173
+    "mjml-head-html-attributes@4.14.1": "https://registry.yarnpkg.com/mjml-head-html-attributes/-/mjml-head-html-attributes-4.14.1.tgz#c9fddb0e8cb813a7f929c17ee8ae2dfdc397611e",
174
+    "mjml-head-preview@4.14.1": "https://registry.yarnpkg.com/mjml-head-preview/-/mjml-head-preview-4.14.1.tgz#b7db35020229aadec857f292f9725cd81014c51f",
175
+    "mjml-head-style@4.14.1": "https://registry.yarnpkg.com/mjml-head-style/-/mjml-head-style-4.14.1.tgz#6bec3b30fd0ac6ca3ee9806d8721c9e32b0968b6",
176
+    "mjml-head-title@4.14.1": "https://registry.yarnpkg.com/mjml-head-title/-/mjml-head-title-4.14.1.tgz#ff1af20467e8ea7f65a29bbc0c58e05d98cb45a6",
177
+    "mjml-head@4.14.1": "https://registry.yarnpkg.com/mjml-head/-/mjml-head-4.14.1.tgz#27ae83d9023b6b2126cd4dd105685b0b08a8baa3",
178
+    "mjml-hero@4.14.1": "https://registry.yarnpkg.com/mjml-hero/-/mjml-hero-4.14.1.tgz#6e969e24ae1eacff037c3170849f1eb51cda1253",
179
+    "mjml-image@4.14.1": "https://registry.yarnpkg.com/mjml-image/-/mjml-image-4.14.1.tgz#825566ce9d79692b3c841f85597e533217a0a960",
180
+    "mjml-migrate@4.14.1": "https://registry.yarnpkg.com/mjml-migrate/-/mjml-migrate-4.14.1.tgz#e3e1402f9310c1fed8a0a1c800fab316fbc56d12",
181
+    "mjml-navbar@4.14.1": "https://registry.yarnpkg.com/mjml-navbar/-/mjml-navbar-4.14.1.tgz#7979049759a7850f239fd2ee63bc47cc02c5c2e9",
182
+    "mjml-parser-xml@4.14.1": "https://registry.yarnpkg.com/mjml-parser-xml/-/mjml-parser-xml-4.14.1.tgz#bf20f06614569a2adf017698bb411e16dcd831c2",
183
+    "mjml-preset-core@4.14.1": "https://registry.yarnpkg.com/mjml-preset-core/-/mjml-preset-core-4.14.1.tgz#9b465f4d1227c928497973b34c5d0903f04dc649",
184
+    "mjml-raw@4.14.1": "https://registry.yarnpkg.com/mjml-raw/-/mjml-raw-4.14.1.tgz#d543e40f7e1c3468593d6783e7e4ce10bfd9b2d8",
185
+    "mjml-section@4.14.1": "https://registry.yarnpkg.com/mjml-section/-/mjml-section-4.14.1.tgz#3309aae46aca1b33f034c5f3b9dad883c52f2267",
186
+    "mjml-social@4.14.1": "https://registry.yarnpkg.com/mjml-social/-/mjml-social-4.14.1.tgz#7fe45c7c8c328142d2514e5c61d8c3939ee97e3f",
187
+    "mjml-spacer@4.14.1": "https://registry.yarnpkg.com/mjml-spacer/-/mjml-spacer-4.14.1.tgz#24fa57fb5e7781825ab3f03c1bec108afd0e97da",
188
+    "mjml-table@4.14.1": "https://registry.yarnpkg.com/mjml-table/-/mjml-table-4.14.1.tgz#f22ff9ec9b74cd4c3d677866b68e740b07fdf700",
189
+    "mjml-text@4.14.1": "https://registry.yarnpkg.com/mjml-text/-/mjml-text-4.14.1.tgz#09ba10828976fc7e2493ac3187f6a6e5e5b50442",
190
+    "mjml-validator@4.13.0": "https://registry.yarnpkg.com/mjml-validator/-/mjml-validator-4.13.0.tgz#a05bac51535cb8073a253304105ffbaf88f85d26",
191
+    "mjml-wrapper@4.14.1": "https://registry.yarnpkg.com/mjml-wrapper/-/mjml-wrapper-4.14.1.tgz#d52478d0529584343aa7924a012e26c084673ae0",
192
+    "mjml@^4.14.1": "https://registry.yarnpkg.com/mjml/-/mjml-4.14.1.tgz#4c9ca49bb6a4df51c204d2448e3385d5e166ec00",
193
+    "mz@^2.7.0": "https://registry.yarnpkg.com/mz/-/mz-2.7.0.tgz#95008057a56cafadc2bc63dde7f9ff6955948e32",
194
+    "nanoid@^3.3.6": "https://registry.yarnpkg.com/nanoid/-/nanoid-3.3.6.tgz#443380c856d6e9f9824267d960b4236ad583ea4c",
195
+    "no-case@^2.2.0": "https://registry.yarnpkg.com/no-case/-/no-case-2.3.2.tgz#60b813396be39b3f1288a4c1ed5d1e7d28b464ac",
196
+    "node-fetch@^2.6.0": "https://registry.yarnpkg.com/node-fetch/-/node-fetch-2.7.0.tgz#d0f0fa6e3e2dc1d27efcd8ad99d550bda94d187d",
197
+    "nopt@^6.0.0": "https://registry.yarnpkg.com/nopt/-/nopt-6.0.0.tgz#245801d8ebf409c6df22ab9d95b65e1309cdb16d",
198
+    "normalize-path@^3.0.0": "https://registry.yarnpkg.com/normalize-path/-/normalize-path-3.0.0.tgz#0dcd69ff23a1c9b11fd0978316644a0388216a65",
199
+    "normalize-path@~3.0.0": "https://registry.yarnpkg.com/normalize-path/-/normalize-path-3.0.0.tgz#0dcd69ff23a1c9b11fd0978316644a0388216a65",
200
+    "nth-check@^2.0.1": "https://registry.yarnpkg.com/nth-check/-/nth-check-2.1.1.tgz#c9eab428effce36cd6b92c924bdb000ef1f1ed1d",
201
+    "object-assign@^4.0.1": "https://registry.yarnpkg.com/object-assign/-/object-assign-4.1.1.tgz#2109adc7965887cfc05cbbd442cac8bfbb360863",
202
+    "object-hash@^3.0.0": "https://registry.yarnpkg.com/object-hash/-/object-hash-3.0.0.tgz#73f97f753e7baffc0e2cc9d6e079079744ac82e9",
203
+    "once@^1.3.0": "https://registry.yarnpkg.com/once/-/once-1.4.0.tgz#583b1aa775961d4b113ac17d9c50baef9dd76bd1",
204
+    "paper-css@^0.4.1": "https://registry.yarnpkg.com/paper-css/-/paper-css-0.4.1.tgz#170ce3f3f6969f20e0c8830163c9ab8aed2b8f36",
205
+    "param-case@^2.1.1": "https://registry.yarnpkg.com/param-case/-/param-case-2.1.1.tgz#df94fd8cf6531ecf75e6bef9a0858fbc72be2247",
206
+    "parse5-htmlparser2-tree-adapter@^7.0.0": "https://registry.yarnpkg.com/parse5-htmlparser2-tree-adapter/-/parse5-htmlparser2-tree-adapter-7.0.0.tgz#23c2cc233bcf09bb7beba8b8a69d46b08c62c2f1",
207
+    "parse5@^7.0.0": "https://registry.yarnpkg.com/parse5/-/parse5-7.1.2.tgz#0736bebbfd77793823240a23b7fc5e010b7f8e32",
208
+    "path-is-absolute@^1.0.0": "https://registry.yarnpkg.com/path-is-absolute/-/path-is-absolute-1.0.1.tgz#174b9268735534ffbc7ace6bf53a5a9e1b5c5f5f",
209
+    "path-parse@^1.0.7": "https://registry.yarnpkg.com/path-parse/-/path-parse-1.0.7.tgz#fbc114b60ca42b30d9daf5858e4bd68bbedb6735",
210
+    "picocolors@^1.0.0": "https://registry.yarnpkg.com/picocolors/-/picocolors-1.0.0.tgz#cb5bdc74ff3f51892236eaf79d68bc44564ab81c",
211
+    "picomatch@^2.0.4": "https://registry.yarnpkg.com/picomatch/-/picomatch-2.3.1.tgz#3ba3833733646d9d3e4995946c1365a67fb07a42",
212
+    "picomatch@^2.2.1": "https://registry.yarnpkg.com/picomatch/-/picomatch-2.3.1.tgz#3ba3833733646d9d3e4995946c1365a67fb07a42",
213
+    "picomatch@^2.3.1": "https://registry.yarnpkg.com/picomatch/-/picomatch-2.3.1.tgz#3ba3833733646d9d3e4995946c1365a67fb07a42",
214
+    "pify@^2.3.0": "https://registry.yarnpkg.com/pify/-/pify-2.3.0.tgz#ed141a6ac043a849ea588498e7dca8b15330e90c",
215
+    "pirates@^4.0.1": "https://registry.yarnpkg.com/pirates/-/pirates-4.0.6.tgz#3018ae32ecfcff6c29ba2267cbf21166ac1f36b9",
216
+    "postcss-import@^15.1.0": "https://registry.yarnpkg.com/postcss-import/-/postcss-import-15.1.0.tgz#41c64ed8cc0e23735a9698b3249ffdbf704adc70",
217
+    "postcss-js@^4.0.1": "https://registry.yarnpkg.com/postcss-js/-/postcss-js-4.0.1.tgz#61598186f3703bab052f1c4f7d805f3991bee9d2",
218
+    "postcss-load-config@^4.0.1": "https://registry.yarnpkg.com/postcss-load-config/-/postcss-load-config-4.0.1.tgz#152383f481c2758274404e4962743191d73875bd",
219
+    "postcss-nested@^6.0.1": "https://registry.yarnpkg.com/postcss-nested/-/postcss-nested-6.0.1.tgz#f83dc9846ca16d2f4fa864f16e9d9f7d0961662c",
220
+    "postcss-selector-parser@^6.0.11": "https://registry.yarnpkg.com/postcss-selector-parser/-/postcss-selector-parser-6.0.13.tgz#d05d8d76b1e8e173257ef9d60b706a8e5e99bf1b",
221
+    "postcss-value-parser@^4.0.0": "https://registry.yarnpkg.com/postcss-value-parser/-/postcss-value-parser-4.2.0.tgz#723c09920836ba6d3e5af019f92bc0971c02e514",
222
+    "postcss@^8.4.23": "https://registry.yarnpkg.com/postcss/-/postcss-8.4.29.tgz#33bc121cf3b3688d4ddef50be869b2a54185a1dd",
223
+    "proto-list@~1.2.1": "https://registry.yarnpkg.com/proto-list/-/proto-list-1.2.4.tgz#212d5bfe1318306a420f6402b8e26ff39647a849",
224
+    "proxy-from-env@^1.1.0": "https://registry.yarnpkg.com/proxy-from-env/-/proxy-from-env-1.1.0.tgz#e102f16ca355424865755d2c9e8ea4f24d58c3e2",
225
+    "queue-microtask@^1.2.2": "https://registry.yarnpkg.com/queue-microtask/-/queue-microtask-1.2.3.tgz#4929228bbc724dfac43e0efb058caf7b6cfb6243",
226
+    "read-cache@^1.0.0": "https://registry.yarnpkg.com/read-cache/-/read-cache-1.0.0.tgz#e664ef31161166c9751cdbe8dbcf86b5fb58f774",
227
+    "readdirp@~3.6.0": "https://registry.yarnpkg.com/readdirp/-/readdirp-3.6.0.tgz#74a370bd857116e245b29cc97340cd431a02a6c7",
228
+    "regenerator-runtime@^0.14.0": "https://registry.yarnpkg.com/regenerator-runtime/-/regenerator-runtime-0.14.0.tgz#5e19d68eb12d486f797e15a3c6a918f7cec5eb45",
229
+    "relateurl@^0.2.7": "https://registry.yarnpkg.com/relateurl/-/relateurl-0.2.7.tgz#54dbf377e51440aca90a4cd274600d3ff2d888a9",
230
+    "require-directory@^2.1.1": "https://registry.yarnpkg.com/require-directory/-/require-directory-2.1.1.tgz#8c64ad5fd30dab1c976e2344ffe7f792a6a6df42",
231
+    "resolve@^1.1.7": "https://registry.yarnpkg.com/resolve/-/resolve-1.22.6.tgz#dd209739eca3aef739c626fea1b4f3c506195362",
232
+    "resolve@^1.22.2": "https://registry.yarnpkg.com/resolve/-/resolve-1.22.6.tgz#dd209739eca3aef739c626fea1b4f3c506195362",
233
+    "reusify@^1.0.4": "https://registry.yarnpkg.com/reusify/-/reusify-1.0.4.tgz#90da382b1e126efc02146e90845a88db12925d76",
234
+    "run-parallel@^1.1.9": "https://registry.yarnpkg.com/run-parallel/-/run-parallel-1.2.0.tgz#66d1368da7bdf921eb9d95bd1a9229e7f21a43ee",
235
+    "semver@^7.5.3": "https://registry.yarnpkg.com/semver/-/semver-7.5.4.tgz#483986ec4ed38e1c6c48c34894a9182dbff68a6e",
236
+    "slick-carousel@^1.8.1": "https://registry.yarnpkg.com/slick-carousel/-/slick-carousel-1.8.1.tgz#a4bfb29014887bb66ce528b90bd0cda262cc8f8d",
237
+    "slick@^1.12.2": "https://registry.yarnpkg.com/slick/-/slick-1.12.2.tgz#bd048ddb74de7d1ca6915faa4a57570b3550c2d7",
238
+    "sortablejs@^1.1.5": "https://registry.yarnpkg.com/sortablejs/-/sortablejs-1.15.0.tgz#53230b8aa3502bb77a29e2005808ffdb4a5f7e2a",
239
+    "source-map-js@^1.0.2": "https://registry.yarnpkg.com/source-map-js/-/source-map-js-1.0.2.tgz#adbc361d9c62df380125e7f161f71c826f1e490c",
240
+    "source-map@~0.6.0": "https://registry.yarnpkg.com/source-map/-/source-map-0.6.1.tgz#74722af32e9614e9c287a8d0bbde48b5e2f1a263",
241
+    "string-width@^4.1.0": "https://registry.yarnpkg.com/string-width/-/string-width-4.2.3.tgz#269c7117d27b05ad2e536830a8ec895ef9c6d010",
242
+    "string-width@^4.2.0": "https://registry.yarnpkg.com/string-width/-/string-width-4.2.3.tgz#269c7117d27b05ad2e536830a8ec895ef9c6d010",
243
+    "strip-ansi@^6.0.0": "https://registry.yarnpkg.com/strip-ansi/-/strip-ansi-6.0.1.tgz#9e26c63d30f53443e9489495b2105d37b67a85d9",
244
+    "strip-ansi@^6.0.1": "https://registry.yarnpkg.com/strip-ansi/-/strip-ansi-6.0.1.tgz#9e26c63d30f53443e9489495b2105d37b67a85d9",
245
+    "sucrase@^3.32.0": "https://registry.yarnpkg.com/sucrase/-/sucrase-3.34.0.tgz#1e0e2d8fcf07f8b9c3569067d92fbd8690fb576f",
246
+    "supports-preserve-symlinks-flag@^1.0.0": "https://registry.yarnpkg.com/supports-preserve-symlinks-flag/-/supports-preserve-symlinks-flag-1.0.0.tgz#6eda4bd344a3c94aea376d4cc31bc77311039e09",
247
+    "tailwind-color-palette@^1.0.3": "https://registry.yarnpkg.com/tailwind-color-palette/-/tailwind-color-palette-1.0.3.tgz#568dcd499530665216eeeb18b8101d5dfa2ee582",
248
+    "tailwindcss@^3.2.4": "https://registry.yarnpkg.com/tailwindcss/-/tailwindcss-3.3.3.tgz#90da807393a2859189e48e9e7000e6880a736daf",
249
+    "thenify-all@^1.0.0": "https://registry.yarnpkg.com/thenify-all/-/thenify-all-1.6.0.tgz#1a1918d402d8fc3f98fbf234db0bcc8cc10e9726",
250
+    "thenify@>= 3.1.0 < 4": "https://registry.yarnpkg.com/thenify/-/thenify-3.3.1.tgz#8932e686a4066038a016dd9e2ca46add9838a95f",
251
+    "to-regex-range@^5.0.1": "https://registry.yarnpkg.com/to-regex-range/-/to-regex-range-5.0.1.tgz#1648c44aae7c8d988a326018ed72f5b4dd0392e4",
252
+    "tr46@~0.0.3": "https://registry.yarnpkg.com/tr46/-/tr46-0.0.3.tgz#8184fd347dac9cdc185992f3a6622e14b9d9ab6a",
253
+    "ts-interface-checker@^0.1.9": "https://registry.yarnpkg.com/ts-interface-checker/-/ts-interface-checker-0.1.13.tgz#784fd3d679722bc103b1b4b8030bcddb5db2a699",
254
+    "uglify-js@^3.5.1": "https://registry.yarnpkg.com/uglify-js/-/uglify-js-3.17.4.tgz#61678cf5fa3f5b7eb789bb345df29afb8257c22c",
255
+    "underscore@^1.6.1": "https://registry.yarnpkg.com/underscore/-/underscore-1.13.6.tgz#04786a1f589dc6c09f761fc5f45b89e935136441",
256
+    "upper-case@^1.1.1": "https://registry.yarnpkg.com/upper-case/-/upper-case-1.1.3.tgz#f6b4501c2ec4cdd26ba78be7222961de77621598",
257
+    "util-deprecate@^1.0.2": "https://registry.yarnpkg.com/util-deprecate/-/util-deprecate-1.0.2.tgz#450d4dc9fa70de732762fbd2d4a28981419a0ccf",
258
+    "valid-data-url@^3.0.0": "https://registry.yarnpkg.com/valid-data-url/-/valid-data-url-3.0.1.tgz#826c1744e71b5632e847dd15dbd45b9fb38aa34f",
259
+    "web-resource-inliner@^6.0.1": "https://registry.yarnpkg.com/web-resource-inliner/-/web-resource-inliner-6.0.1.tgz#df0822f0a12028805fe80719ed52ab6526886e02",
260
+    "webidl-conversions@^3.0.0": "https://registry.yarnpkg.com/webidl-conversions/-/webidl-conversions-3.0.1.tgz#24534275e2a7bc6be7bc86611cc16ae0a5654871",
261
+    "whatwg-url@^5.0.0": "https://registry.yarnpkg.com/whatwg-url/-/whatwg-url-5.0.0.tgz#966454e8765462e37644d3626f6742ce8b70965d",
262
+    "wrap-ansi@^7.0.0": "https://registry.yarnpkg.com/wrap-ansi/-/wrap-ansi-7.0.0.tgz#67e145cff510a6a6984bdf1152911d69d2eb9e43",
263
+    "wrappy@1": "https://registry.yarnpkg.com/wrappy/-/wrappy-1.0.2.tgz#b5243d8f3ec1aa35f1364605bc0d1036e30ab69f",
264
+    "y18n@^5.0.5": "https://registry.yarnpkg.com/y18n/-/y18n-5.0.8.tgz#7f4934d0f7ca8c56f95314939ddcd2dd91ce1d55",
265
+    "yallist@^4.0.0": "https://registry.yarnpkg.com/yallist/-/yallist-4.0.0.tgz#9bb92790d9c0effec63be73519e11a35019a3a72",
266
+    "yaml@^2.1.1": "https://registry.yarnpkg.com/yaml/-/yaml-2.3.2.tgz#f522db4313c671a0ca963a75670f1c12ea909144",
267
+    "yargs-parser@^20.2.2": "https://registry.yarnpkg.com/yargs-parser/-/yargs-parser-20.2.9.tgz#2eb7dc3b0289718fc295f362753845c41a0c94ee",
268
+    "yargs@^16.1.0": "https://registry.yarnpkg.com/yargs/-/yargs-16.2.0.tgz#1c82bf0f6b6a66eafce7ef30e376f49a12477f66"
269
+  },
270
+  "files": [],
271
+  "artifacts": {}
272
+}

+ 128 - 0
app/node_modules/@alloc/quick-lru/index.d.ts

@@ -0,0 +1,128 @@
1
+declare namespace QuickLRU {
2
+	interface Options<KeyType, ValueType> {
3
+		/**
4
+		The maximum number of milliseconds an item should remain in the cache.
5
+
6
+		@default Infinity
7
+
8
+		By default, `maxAge` will be `Infinity`, which means that items will never expire.
9
+		Lazy expiration upon the next write or read call.
10
+
11
+		Individual expiration of an item can be specified by the `set(key, value, maxAge)` method.
12
+		*/
13
+		readonly maxAge?: number;
14
+
15
+		/**
16
+		The maximum number of items before evicting the least recently used items.
17
+		*/
18
+		readonly maxSize: number;
19
+
20
+		/**
21
+		Called right before an item is evicted from the cache.
22
+
23
+		Useful for side effects or for items like object URLs that need explicit cleanup (`revokeObjectURL`).
24
+		*/
25
+		onEviction?: (key: KeyType, value: ValueType) => void;
26
+	}
27
+}
28
+
29
+declare class QuickLRU<KeyType, ValueType>
30
+	implements Iterable<[KeyType, ValueType]> {
31
+	/**
32
+	The stored item count.
33
+	*/
34
+	readonly size: number;
35
+
36
+	/**
37
+	Simple ["Least Recently Used" (LRU) cache](https://en.m.wikipedia.org/wiki/Cache_replacement_policies#Least_Recently_Used_.28LRU.29).
38
+
39
+	The instance is [`iterable`](https://developer.mozilla.org/en/docs/Web/JavaScript/Reference/Iteration_protocols) so you can use it directly in a [`for…of`](https://developer.mozilla.org/en/docs/Web/JavaScript/Reference/Statements/for...of) loop.
40
+
41
+	@example
42
+	```
43
+	import QuickLRU = require('quick-lru');
44
+
45
+	const lru = new QuickLRU({maxSize: 1000});
46
+
47
+	lru.set('🦄', '🌈');
48
+
49
+	lru.has('🦄');
50
+	//=> true
51
+
52
+	lru.get('🦄');
53
+	//=> '🌈'
54
+	```
55
+	*/
56
+	constructor(options: QuickLRU.Options<KeyType, ValueType>);
57
+
58
+	[Symbol.iterator](): IterableIterator<[KeyType, ValueType]>;
59
+
60
+	/**
61
+	Set an item. Returns the instance.
62
+
63
+	Individual expiration of an item can be specified with the `maxAge` option. If not specified, the global `maxAge` value will be used in case it is specified in the constructor, otherwise the item will never expire.
64
+
65
+	@returns The list instance.
66
+	*/
67
+	set(key: KeyType, value: ValueType, options?: {maxAge?: number}): this;
68
+
69
+	/**
70
+	Get an item.
71
+
72
+	@returns The stored item or `undefined`.
73
+	*/
74
+	get(key: KeyType): ValueType | undefined;
75
+
76
+	/**
77
+	Check if an item exists.
78
+	*/
79
+	has(key: KeyType): boolean;
80
+
81
+	/**
82
+	Get an item without marking it as recently used.
83
+
84
+	@returns The stored item or `undefined`.
85
+	*/
86
+	peek(key: KeyType): ValueType | undefined;
87
+
88
+	/**
89
+	Delete an item.
90
+
91
+	@returns `true` if the item is removed or `false` if the item doesn't exist.
92
+	*/
93
+	delete(key: KeyType): boolean;
94
+
95
+	/**
96
+	Delete all items.
97
+	*/
98
+	clear(): void;
99
+
100
+	/**
101
+	Update the `maxSize` in-place, discarding items as necessary. Insertion order is mostly preserved, though this is not a strong guarantee.
102
+
103
+	Useful for on-the-fly tuning of cache sizes in live systems.
104
+	*/
105
+	resize(maxSize: number): void;
106
+
107
+	/**
108
+	Iterable for all the keys.
109
+	*/
110
+	keys(): IterableIterator<KeyType>;
111
+
112
+	/**
113
+	Iterable for all the values.
114
+	*/
115
+	values(): IterableIterator<ValueType>;
116
+
117
+	/**
118
+	Iterable for all entries, starting with the oldest (ascending in recency).
119
+	*/
120
+	entriesAscending(): IterableIterator<[KeyType, ValueType]>;
121
+
122
+	/**
123
+	Iterable for all entries, starting with the newest (descending in recency).
124
+	*/
125
+	entriesDescending(): IterableIterator<[KeyType, ValueType]>;
126
+}
127
+
128
+export = QuickLRU;

+ 263 - 0
app/node_modules/@alloc/quick-lru/index.js

@@ -0,0 +1,263 @@
1
+'use strict';
2
+
3
+class QuickLRU {
4
+	constructor(options = {}) {
5
+		if (!(options.maxSize && options.maxSize > 0)) {
6
+			throw new TypeError('`maxSize` must be a number greater than 0');
7
+		}
8
+
9
+		if (typeof options.maxAge === 'number' && options.maxAge === 0) {
10
+			throw new TypeError('`maxAge` must be a number greater than 0');
11
+		}
12
+
13
+		this.maxSize = options.maxSize;
14
+		this.maxAge = options.maxAge || Infinity;
15
+		this.onEviction = options.onEviction;
16
+		this.cache = new Map();
17
+		this.oldCache = new Map();
18
+		this._size = 0;
19
+	}
20
+
21
+	_emitEvictions(cache) {
22
+		if (typeof this.onEviction !== 'function') {
23
+			return;
24
+		}
25
+
26
+		for (const [key, item] of cache) {
27
+			this.onEviction(key, item.value);
28
+		}
29
+	}
30
+
31
+	_deleteIfExpired(key, item) {
32
+		if (typeof item.expiry === 'number' && item.expiry <= Date.now()) {
33
+			if (typeof this.onEviction === 'function') {
34
+				this.onEviction(key, item.value);
35
+			}
36
+
37
+			return this.delete(key);
38
+		}
39
+
40
+		return false;
41
+	}
42
+
43
+	_getOrDeleteIfExpired(key, item) {
44
+		const deleted = this._deleteIfExpired(key, item);
45
+		if (deleted === false) {
46
+			return item.value;
47
+		}
48
+	}
49
+
50
+	_getItemValue(key, item) {
51
+		return item.expiry ? this._getOrDeleteIfExpired(key, item) : item.value;
52
+	}
53
+
54
+	_peek(key, cache) {
55
+		const item = cache.get(key);
56
+
57
+		return this._getItemValue(key, item);
58
+	}
59
+
60
+	_set(key, value) {
61
+		this.cache.set(key, value);
62
+		this._size++;
63
+
64
+		if (this._size >= this.maxSize) {
65
+			this._size = 0;
66
+			this._emitEvictions(this.oldCache);
67
+			this.oldCache = this.cache;
68
+			this.cache = new Map();
69
+		}
70
+	}
71
+
72
+	_moveToRecent(key, item) {
73
+		this.oldCache.delete(key);
74
+		this._set(key, item);
75
+	}
76
+
77
+	* _entriesAscending() {
78
+		for (const item of this.oldCache) {
79
+			const [key, value] = item;
80
+			if (!this.cache.has(key)) {
81
+				const deleted = this._deleteIfExpired(key, value);
82
+				if (deleted === false) {
83
+					yield item;
84
+				}
85
+			}
86
+		}
87
+
88
+		for (const item of this.cache) {
89
+			const [key, value] = item;
90
+			const deleted = this._deleteIfExpired(key, value);
91
+			if (deleted === false) {
92
+				yield item;
93
+			}
94
+		}
95
+	}
96
+
97
+	get(key) {
98
+		if (this.cache.has(key)) {
99
+			const item = this.cache.get(key);
100
+
101
+			return this._getItemValue(key, item);
102
+		}
103
+
104
+		if (this.oldCache.has(key)) {
105
+			const item = this.oldCache.get(key);
106
+			if (this._deleteIfExpired(key, item) === false) {
107
+				this._moveToRecent(key, item);
108
+				return item.value;
109
+			}
110
+		}
111
+	}
112
+
113
+	set(key, value, {maxAge = this.maxAge === Infinity ? undefined : Date.now() + this.maxAge} = {}) {
114
+		if (this.cache.has(key)) {
115
+			this.cache.set(key, {
116
+				value,
117
+				maxAge
118
+			});
119
+		} else {
120
+			this._set(key, {value, expiry: maxAge});
121
+		}
122
+	}
123
+
124
+	has(key) {
125
+		if (this.cache.has(key)) {
126
+			return !this._deleteIfExpired(key, this.cache.get(key));
127
+		}
128
+
129
+		if (this.oldCache.has(key)) {
130
+			return !this._deleteIfExpired(key, this.oldCache.get(key));
131
+		}
132
+
133
+		return false;
134
+	}
135
+
136
+	peek(key) {
137
+		if (this.cache.has(key)) {
138
+			return this._peek(key, this.cache);
139
+		}
140
+
141
+		if (this.oldCache.has(key)) {
142
+			return this._peek(key, this.oldCache);
143
+		}
144
+	}
145
+
146
+	delete(key) {
147
+		const deleted = this.cache.delete(key);
148
+		if (deleted) {
149
+			this._size--;
150
+		}
151
+
152
+		return this.oldCache.delete(key) || deleted;
153
+	}
154
+
155
+	clear() {
156
+		this.cache.clear();
157
+		this.oldCache.clear();
158
+		this._size = 0;
159
+	}
160
+	
161
+	resize(newSize) {
162
+		if (!(newSize && newSize > 0)) {
163
+			throw new TypeError('`maxSize` must be a number greater than 0');
164
+		}
165
+
166
+		const items = [...this._entriesAscending()];
167
+		const removeCount = items.length - newSize;
168
+		if (removeCount < 0) {
169
+			this.cache = new Map(items);
170
+			this.oldCache = new Map();
171
+			this._size = items.length;
172
+		} else {
173
+			if (removeCount > 0) {
174
+				this._emitEvictions(items.slice(0, removeCount));
175
+			}
176
+
177
+			this.oldCache = new Map(items.slice(removeCount));
178
+			this.cache = new Map();
179
+			this._size = 0;
180
+		}
181
+
182
+		this.maxSize = newSize;
183
+	}
184
+
185
+	* keys() {
186
+		for (const [key] of this) {
187
+			yield key;
188
+		}
189
+	}
190
+
191
+	* values() {
192
+		for (const [, value] of this) {
193
+			yield value;
194
+		}
195
+	}
196
+
197
+	* [Symbol.iterator]() {
198
+		for (const item of this.cache) {
199
+			const [key, value] = item;
200
+			const deleted = this._deleteIfExpired(key, value);
201
+			if (deleted === false) {
202
+				yield [key, value.value];
203
+			}
204
+		}
205
+
206
+		for (const item of this.oldCache) {
207
+			const [key, value] = item;
208
+			if (!this.cache.has(key)) {
209
+				const deleted = this._deleteIfExpired(key, value);
210
+				if (deleted === false) {
211
+					yield [key, value.value];
212
+				}
213
+			}
214
+		}
215
+	}
216
+
217
+	* entriesDescending() {
218
+		let items = [...this.cache];
219
+		for (let i = items.length - 1; i >= 0; --i) {
220
+			const item = items[i];
221
+			const [key, value] = item;
222
+			const deleted = this._deleteIfExpired(key, value);
223
+			if (deleted === false) {
224
+				yield [key, value.value];
225
+			}
226
+		}
227
+
228
+		items = [...this.oldCache];
229
+		for (let i = items.length - 1; i >= 0; --i) {
230
+			const item = items[i];
231
+			const [key, value] = item;
232
+			if (!this.cache.has(key)) {
233
+				const deleted = this._deleteIfExpired(key, value);
234
+				if (deleted === false) {
235
+					yield [key, value.value];
236
+				}
237
+			}
238
+		}
239
+	}
240
+
241
+	* entriesAscending() {
242
+		for (const [key, value] of this._entriesAscending()) {
243
+			yield [key, value.value];
244
+		}
245
+	}
246
+
247
+	get size() {
248
+		if (!this._size) {
249
+			return this.oldCache.size;
250
+		}
251
+
252
+		let oldCacheSize = 0;
253
+		for (const key of this.oldCache.keys()) {
254
+			if (!this.cache.has(key)) {
255
+				oldCacheSize++;
256
+			}
257
+		}
258
+
259
+		return Math.min(this._size + oldCacheSize, this.maxSize);
260
+	}
261
+}
262
+
263
+module.exports = QuickLRU;

+ 9 - 0
app/node_modules/@alloc/quick-lru/license

@@ -0,0 +1,9 @@
1
+MIT License
2
+
3
+Copyright (c) Sindre Sorhus <sindresorhus@gmail.com> (sindresorhus.com)
4
+
5
+Permission is hereby granted, free of charge, to any person obtaining a copy of this software and associated documentation files (the "Software"), to deal in the Software without restriction, including without limitation the rights to use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of the Software, and to permit persons to whom the Software is furnished to do so, subject to the following conditions:
6
+
7
+The above copyright notice and this permission notice shall be included in all copies or substantial portions of the Software.
8
+
9
+THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.

+ 43 - 0
app/node_modules/@alloc/quick-lru/package.json

@@ -0,0 +1,43 @@
1
+{
2
+	"name": "@alloc/quick-lru",
3
+	"version": "5.2.0",
4
+	"description": "Simple “Least Recently Used” (LRU) cache",
5
+	"license": "MIT",
6
+	"repository": "sindresorhus/quick-lru",
7
+	"funding": "https://github.com/sponsors/sindresorhus",
8
+	"author": {
9
+		"name": "Sindre Sorhus",
10
+		"email": "sindresorhus@gmail.com",
11
+		"url": "https://sindresorhus.com"
12
+	},
13
+	"engines": {
14
+		"node": ">=10"
15
+	},
16
+	"scripts": {
17
+		"test": "xo && nyc ava && tsd"
18
+	},
19
+	"files": [
20
+		"index.js",
21
+		"index.d.ts"
22
+	],
23
+	"keywords": [
24
+		"lru",
25
+		"quick",
26
+		"cache",
27
+		"caching",
28
+		"least",
29
+		"recently",
30
+		"used",
31
+		"fast",
32
+		"map",
33
+		"hash",
34
+		"buffer"
35
+	],
36
+	"devDependencies": {
37
+		"ava": "^2.0.0",
38
+		"coveralls": "^3.0.3",
39
+		"nyc": "^15.0.0",
40
+		"tsd": "^0.11.0",
41
+		"xo": "^0.26.0"
42
+	}
43
+}

+ 139 - 0
app/node_modules/@alloc/quick-lru/readme.md

@@ -0,0 +1,139 @@
1
+# quick-lru [![Build Status](https://travis-ci.org/sindresorhus/quick-lru.svg?branch=master)](https://travis-ci.org/sindresorhus/quick-lru) [![Coverage Status](https://coveralls.io/repos/github/sindresorhus/quick-lru/badge.svg?branch=master)](https://coveralls.io/github/sindresorhus/quick-lru?branch=master)
2
+
3
+> Simple [“Least Recently Used” (LRU) cache](https://en.m.wikipedia.org/wiki/Cache_replacement_policies#Least_Recently_Used_.28LRU.29)
4
+
5
+Useful when you need to cache something and limit memory usage.
6
+
7
+Inspired by the [`hashlru` algorithm](https://github.com/dominictarr/hashlru#algorithm), but instead uses [`Map`](https://developer.mozilla.org/en/docs/Web/JavaScript/Reference/Global_Objects/Map) to support keys of any type, not just strings, and values can be `undefined`.
8
+
9
+## Install
10
+
11
+```
12
+$ npm install quick-lru
13
+```
14
+
15
+## Usage
16
+
17
+```js
18
+const QuickLRU = require('quick-lru');
19
+
20
+const lru = new QuickLRU({maxSize: 1000});
21
+
22
+lru.set('🦄', '🌈');
23
+
24
+lru.has('🦄');
25
+//=> true
26
+
27
+lru.get('🦄');
28
+//=> '🌈'
29
+```
30
+
31
+## API
32
+
33
+### new QuickLRU(options?)
34
+
35
+Returns a new instance.
36
+
37
+### options
38
+
39
+Type: `object`
40
+
41
+#### maxSize
42
+
43
+*Required*\
44
+Type: `number`
45
+
46
+The maximum number of items before evicting the least recently used items.
47
+
48
+#### maxAge
49
+
50
+Type: `number`\
51
+Default: `Infinity`
52
+
53
+The maximum number of milliseconds an item should remain in cache.
54
+By default maxAge will be Infinity, which means that items will never expire.
55
+
56
+Lazy expiration happens upon the next `write` or `read` call.
57
+
58
+Individual expiration of an item can be specified by the `set(key, value, options)` method.
59
+
60
+#### onEviction
61
+
62
+*Optional*\
63
+Type: `(key, value) => void`
64
+
65
+Called right before an item is evicted from the cache.
66
+
67
+Useful for side effects or for items like object URLs that need explicit cleanup (`revokeObjectURL`).
68
+
69
+### Instance
70
+
71
+The instance is [`iterable`](https://developer.mozilla.org/en/docs/Web/JavaScript/Reference/Iteration_protocols) so you can use it directly in a [`for…of`](https://developer.mozilla.org/en/docs/Web/JavaScript/Reference/Statements/for...of) loop.
72
+
73
+Both `key` and `value` can be of any type.
74
+
75
+#### .set(key, value, options?)
76
+
77
+Set an item. Returns the instance.
78
+
79
+Individual expiration of an item can be specified with the `maxAge` option. If not specified, the global `maxAge` value will be used in case it is specified on the constructor, otherwise the item will never expire.
80
+
81
+#### .get(key)
82
+
83
+Get an item.
84
+
85
+#### .has(key)
86
+
87
+Check if an item exists.
88
+
89
+#### .peek(key)
90
+
91
+Get an item without marking it as recently used.
92
+
93
+#### .delete(key)
94
+
95
+Delete an item.
96
+
97
+Returns `true` if the item is removed or `false` if the item doesn't exist.
98
+
99
+#### .clear()
100
+
101
+Delete all items.
102
+
103
+#### .resize(maxSize)
104
+
105
+Update the `maxSize`, discarding items as necessary. Insertion order is mostly preserved, though this is not a strong guarantee.
106
+
107
+Useful for on-the-fly tuning of cache sizes in live systems.
108
+
109
+#### .keys()
110
+
111
+Iterable for all the keys.
112
+
113
+#### .values()
114
+
115
+Iterable for all the values.
116
+
117
+#### .entriesAscending()
118
+
119
+Iterable for all entries, starting with the oldest (ascending in recency).
120
+
121
+#### .entriesDescending()
122
+
123
+Iterable for all entries, starting with the newest (descending in recency).
124
+
125
+#### .size
126
+
127
+The stored item count.
128
+
129
+---
130
+
131
+<div align="center">
132
+	<b>
133
+		<a href="https://tidelift.com/subscription/pkg/npm-quick-lru?utm_source=npm-quick-lru&utm_medium=referral&utm_campaign=readme">Get professional support for this package with a Tidelift subscription</a>
134
+	</b>
135
+	<br>
136
+	<sub>
137
+		Tidelift helps make open source sustainable for maintainers while giving companies<br>assurances about security, maintenance, and licensing for their dependencies.
138
+	</sub>
139
+</div>

+ 22 - 0
app/node_modules/@babel/runtime/LICENSE

@@ -0,0 +1,22 @@
1
+MIT License
2
+
3
+Copyright (c) 2014-present Sebastian McKenzie and other contributors
4
+
5
+Permission is hereby granted, free of charge, to any person obtaining
6
+a copy of this software and associated documentation files (the
7
+"Software"), to deal in the Software without restriction, including
8
+without limitation the rights to use, copy, modify, merge, publish,
9
+distribute, sublicense, and/or sell copies of the Software, and to
10
+permit persons to whom the Software is furnished to do so, subject to
11
+the following conditions:
12
+
13
+The above copyright notice and this permission notice shall be
14
+included in all copies or substantial portions of the Software.
15
+
16
+THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
17
+EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
18
+MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
19
+NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE
20
+LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION
21
+OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION
22
+WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.

+ 19 - 0
app/node_modules/@babel/runtime/README.md

@@ -0,0 +1,19 @@
1
+# @babel/runtime
2
+
3
+> babel's modular runtime helpers
4
+
5
+See our website [@babel/runtime](https://babeljs.io/docs/babel-runtime) for more information.
6
+
7
+## Install
8
+
9
+Using npm:
10
+
11
+```sh
12
+npm install --save @babel/runtime
13
+```
14
+
15
+or using yarn:
16
+
17
+```sh
18
+yarn add @babel/runtime
19
+```

+ 64 - 0
app/node_modules/@babel/runtime/helpers/AsyncGenerator.js

@@ -0,0 +1,64 @@
1
+var OverloadYield = require("./OverloadYield.js");
2
+function AsyncGenerator(e) {
3
+  var r, t;
4
+  function resume(r, t) {
5
+    try {
6
+      var n = e[r](t),
7
+        o = n.value,
8
+        u = o instanceof OverloadYield;
9
+      Promise.resolve(u ? o.v : o).then(function (t) {
10
+        if (u) {
11
+          var i = "return" === r ? "return" : "next";
12
+          if (!o.k || t.done) return resume(i, t);
13
+          t = e[i](t).value;
14
+        }
15
+        settle(n.done ? "return" : "normal", t);
16
+      }, function (e) {
17
+        resume("throw", e);
18
+      });
19
+    } catch (e) {
20
+      settle("throw", e);
21
+    }
22
+  }
23
+  function settle(e, n) {
24
+    switch (e) {
25
+      case "return":
26
+        r.resolve({
27
+          value: n,
28
+          done: !0
29
+        });
30
+        break;
31
+      case "throw":
32
+        r.reject(n);
33
+        break;
34
+      default:
35
+        r.resolve({
36
+          value: n,
37
+          done: !1
38
+        });
39
+    }
40
+    (r = r.next) ? resume(r.key, r.arg) : t = null;
41
+  }
42
+  this._invoke = function (e, n) {
43
+    return new Promise(function (o, u) {
44
+      var i = {
45
+        key: e,
46
+        arg: n,
47
+        resolve: o,
48
+        reject: u,
49
+        next: null
50
+      };
51
+      t ? t = t.next = i : (r = t = i, resume(e, n));
52
+    });
53
+  }, "function" != typeof e["return"] && (this["return"] = void 0);
54
+}
55
+AsyncGenerator.prototype["function" == typeof Symbol && Symbol.asyncIterator || "@@asyncIterator"] = function () {
56
+  return this;
57
+}, AsyncGenerator.prototype.next = function (e) {
58
+  return this._invoke("next", e);
59
+}, AsyncGenerator.prototype["throw"] = function (e) {
60
+  return this._invoke("throw", e);
61
+}, AsyncGenerator.prototype["return"] = function (e) {
62
+  return this._invoke("return", e);
63
+};
64
+module.exports = AsyncGenerator, module.exports.__esModule = true, module.exports["default"] = module.exports;

+ 4 - 0
app/node_modules/@babel/runtime/helpers/AwaitValue.js

@@ -0,0 +1,4 @@
1
+function _AwaitValue(value) {
2
+  this.wrapped = value;
3
+}
4
+module.exports = _AwaitValue, module.exports.__esModule = true, module.exports["default"] = module.exports;

+ 4 - 0
app/node_modules/@babel/runtime/helpers/OverloadYield.js

@@ -0,0 +1,4 @@
1
+function _OverloadYield(t, e) {
2
+  this.v = t, this.k = e;
3
+}
4
+module.exports = _OverloadYield, module.exports.__esModule = true, module.exports["default"] = module.exports;

+ 24 - 0
app/node_modules/@babel/runtime/helpers/applyDecoratedDescriptor.js

@@ -0,0 +1,24 @@
1
+function _applyDecoratedDescriptor(target, property, decorators, descriptor, context) {
2
+  var desc = {};
3
+  Object.keys(descriptor).forEach(function (key) {
4
+    desc[key] = descriptor[key];
5
+  });
6
+  desc.enumerable = !!desc.enumerable;
7
+  desc.configurable = !!desc.configurable;
8
+  if ('value' in desc || desc.initializer) {
9
+    desc.writable = true;
10
+  }
11
+  desc = decorators.slice().reverse().reduce(function (desc, decorator) {
12
+    return decorator(target, property, desc) || desc;
13
+  }, desc);
14
+  if (context && desc.initializer !== void 0) {
15
+    desc.value = desc.initializer ? desc.initializer.call(context) : void 0;
16
+    desc.initializer = undefined;
17
+  }
18
+  if (desc.initializer === void 0) {
19
+    Object.defineProperty(target, property, desc);
20
+    desc = null;
21
+  }
22
+  return desc;
23
+}
24
+module.exports = _applyDecoratedDescriptor, module.exports.__esModule = true, module.exports["default"] = module.exports;

+ 236 - 0
app/node_modules/@babel/runtime/helpers/applyDecs.js

@@ -0,0 +1,236 @@
1
+var _typeof = require("./typeof.js")["default"];
2
+function old_createMetadataMethodsForProperty(e, t, a, r) {
3
+  return {
4
+    getMetadata: function getMetadata(o) {
5
+      old_assertNotFinished(r, "getMetadata"), old_assertMetadataKey(o);
6
+      var i = e[o];
7
+      if (void 0 !== i) if (1 === t) {
8
+        var n = i["public"];
9
+        if (void 0 !== n) return n[a];
10
+      } else if (2 === t) {
11
+        var l = i["private"];
12
+        if (void 0 !== l) return l.get(a);
13
+      } else if (Object.hasOwnProperty.call(i, "constructor")) return i.constructor;
14
+    },
15
+    setMetadata: function setMetadata(o, i) {
16
+      old_assertNotFinished(r, "setMetadata"), old_assertMetadataKey(o);
17
+      var n = e[o];
18
+      if (void 0 === n && (n = e[o] = {}), 1 === t) {
19
+        var l = n["public"];
20
+        void 0 === l && (l = n["public"] = {}), l[a] = i;
21
+      } else if (2 === t) {
22
+        var s = n.priv;
23
+        void 0 === s && (s = n["private"] = new Map()), s.set(a, i);
24
+      } else n.constructor = i;
25
+    }
26
+  };
27
+}
28
+function old_convertMetadataMapToFinal(e, t) {
29
+  var a = e[Symbol.metadata || Symbol["for"]("Symbol.metadata")],
30
+    r = Object.getOwnPropertySymbols(t);
31
+  if (0 !== r.length) {
32
+    for (var o = 0; o < r.length; o++) {
33
+      var i = r[o],
34
+        n = t[i],
35
+        l = a ? a[i] : null,
36
+        s = n["public"],
37
+        c = l ? l["public"] : null;
38
+      s && c && Object.setPrototypeOf(s, c);
39
+      var d = n["private"];
40
+      if (d) {
41
+        var u = Array.from(d.values()),
42
+          f = l ? l["private"] : null;
43
+        f && (u = u.concat(f)), n["private"] = u;
44
+      }
45
+      l && Object.setPrototypeOf(n, l);
46
+    }
47
+    a && Object.setPrototypeOf(t, a), e[Symbol.metadata || Symbol["for"]("Symbol.metadata")] = t;
48
+  }
49
+}
50
+function old_createAddInitializerMethod(e, t) {
51
+  return function (a) {
52
+    old_assertNotFinished(t, "addInitializer"), old_assertCallable(a, "An initializer"), e.push(a);
53
+  };
54
+}
55
+function old_memberDec(e, t, a, r, o, i, n, l, s) {
56
+  var c;
57
+  switch (i) {
58
+    case 1:
59
+      c = "accessor";
60
+      break;
61
+    case 2:
62
+      c = "method";
63
+      break;
64
+    case 3:
65
+      c = "getter";
66
+      break;
67
+    case 4:
68
+      c = "setter";
69
+      break;
70
+    default:
71
+      c = "field";
72
+  }
73
+  var d,
74
+    u,
75
+    f = {
76
+      kind: c,
77
+      name: l ? "#" + t : t,
78
+      isStatic: n,
79
+      isPrivate: l
80
+    },
81
+    p = {
82
+      v: !1
83
+    };
84
+  if (0 !== i && (f.addInitializer = old_createAddInitializerMethod(o, p)), l) {
85
+    d = 2, u = Symbol(t);
86
+    var v = {};
87
+    0 === i ? (v.get = a.get, v.set = a.set) : 2 === i ? v.get = function () {
88
+      return a.value;
89
+    } : (1 !== i && 3 !== i || (v.get = function () {
90
+      return a.get.call(this);
91
+    }), 1 !== i && 4 !== i || (v.set = function (e) {
92
+      a.set.call(this, e);
93
+    })), f.access = v;
94
+  } else d = 1, u = t;
95
+  try {
96
+    return e(s, Object.assign(f, old_createMetadataMethodsForProperty(r, d, u, p)));
97
+  } finally {
98
+    p.v = !0;
99
+  }
100
+}
101
+function old_assertNotFinished(e, t) {
102
+  if (e.v) throw new Error("attempted to call " + t + " after decoration was finished");
103
+}
104
+function old_assertMetadataKey(e) {
105
+  if ("symbol" != _typeof(e)) throw new TypeError("Metadata keys must be symbols, received: " + e);
106
+}
107
+function old_assertCallable(e, t) {
108
+  if ("function" != typeof e) throw new TypeError(t + " must be a function");
109
+}
110
+function old_assertValidReturnValue(e, t) {
111
+  var a = _typeof(t);
112
+  if (1 === e) {
113
+    if ("object" !== a || null === t) throw new TypeError("accessor decorators must return an object with get, set, or init properties or void 0");
114
+    void 0 !== t.get && old_assertCallable(t.get, "accessor.get"), void 0 !== t.set && old_assertCallable(t.set, "accessor.set"), void 0 !== t.init && old_assertCallable(t.init, "accessor.init"), void 0 !== t.initializer && old_assertCallable(t.initializer, "accessor.initializer");
115
+  } else if ("function" !== a) {
116
+    var r;
117
+    throw r = 0 === e ? "field" : 10 === e ? "class" : "method", new TypeError(r + " decorators must return a function or void 0");
118
+  }
119
+}
120
+function old_getInit(e) {
121
+  var t;
122
+  return null == (t = e.init) && (t = e.initializer) && "undefined" != typeof console && console.warn(".initializer has been renamed to .init as of March 2022"), t;
123
+}
124
+function old_applyMemberDec(e, t, a, r, o, i, n, l, s) {
125
+  var c,
126
+    d,
127
+    u,
128
+    f,
129
+    p,
130
+    v,
131
+    h = a[0];
132
+  if (n ? c = 0 === o || 1 === o ? {
133
+    get: a[3],
134
+    set: a[4]
135
+  } : 3 === o ? {
136
+    get: a[3]
137
+  } : 4 === o ? {
138
+    set: a[3]
139
+  } : {
140
+    value: a[3]
141
+  } : 0 !== o && (c = Object.getOwnPropertyDescriptor(t, r)), 1 === o ? u = {
142
+    get: c.get,
143
+    set: c.set
144
+  } : 2 === o ? u = c.value : 3 === o ? u = c.get : 4 === o && (u = c.set), "function" == typeof h) void 0 !== (f = old_memberDec(h, r, c, l, s, o, i, n, u)) && (old_assertValidReturnValue(o, f), 0 === o ? d = f : 1 === o ? (d = old_getInit(f), p = f.get || u.get, v = f.set || u.set, u = {
145
+    get: p,
146
+    set: v
147
+  }) : u = f);else for (var y = h.length - 1; y >= 0; y--) {
148
+    var b;
149
+    if (void 0 !== (f = old_memberDec(h[y], r, c, l, s, o, i, n, u))) old_assertValidReturnValue(o, f), 0 === o ? b = f : 1 === o ? (b = old_getInit(f), p = f.get || u.get, v = f.set || u.set, u = {
150
+      get: p,
151
+      set: v
152
+    }) : u = f, void 0 !== b && (void 0 === d ? d = b : "function" == typeof d ? d = [d, b] : d.push(b));
153
+  }
154
+  if (0 === o || 1 === o) {
155
+    if (void 0 === d) d = function d(e, t) {
156
+      return t;
157
+    };else if ("function" != typeof d) {
158
+      var g = d;
159
+      d = function d(e, t) {
160
+        for (var a = t, r = 0; r < g.length; r++) a = g[r].call(e, a);
161
+        return a;
162
+      };
163
+    } else {
164
+      var m = d;
165
+      d = function d(e, t) {
166
+        return m.call(e, t);
167
+      };
168
+    }
169
+    e.push(d);
170
+  }
171
+  0 !== o && (1 === o ? (c.get = u.get, c.set = u.set) : 2 === o ? c.value = u : 3 === o ? c.get = u : 4 === o && (c.set = u), n ? 1 === o ? (e.push(function (e, t) {
172
+    return u.get.call(e, t);
173
+  }), e.push(function (e, t) {
174
+    return u.set.call(e, t);
175
+  })) : 2 === o ? e.push(u) : e.push(function (e, t) {
176
+    return u.call(e, t);
177
+  }) : Object.defineProperty(t, r, c));
178
+}
179
+function old_applyMemberDecs(e, t, a, r, o) {
180
+  for (var i, n, l = new Map(), s = new Map(), c = 0; c < o.length; c++) {
181
+    var d = o[c];
182
+    if (Array.isArray(d)) {
183
+      var u,
184
+        f,
185
+        p,
186
+        v = d[1],
187
+        h = d[2],
188
+        y = d.length > 3,
189
+        b = v >= 5;
190
+      if (b ? (u = t, f = r, 0 !== (v -= 5) && (p = n = n || [])) : (u = t.prototype, f = a, 0 !== v && (p = i = i || [])), 0 !== v && !y) {
191
+        var g = b ? s : l,
192
+          m = g.get(h) || 0;
193
+        if (!0 === m || 3 === m && 4 !== v || 4 === m && 3 !== v) throw new Error("Attempted to decorate a public method/accessor that has the same name as a previously decorated public method/accessor. This is not currently supported by the decorators plugin. Property name was: " + h);
194
+        !m && v > 2 ? g.set(h, v) : g.set(h, !0);
195
+      }
196
+      old_applyMemberDec(e, u, d, h, v, b, y, f, p);
197
+    }
198
+  }
199
+  old_pushInitializers(e, i), old_pushInitializers(e, n);
200
+}
201
+function old_pushInitializers(e, t) {
202
+  t && e.push(function (e) {
203
+    for (var a = 0; a < t.length; a++) t[a].call(e);
204
+    return e;
205
+  });
206
+}
207
+function old_applyClassDecs(e, t, a, r) {
208
+  if (r.length > 0) {
209
+    for (var o = [], i = t, n = t.name, l = r.length - 1; l >= 0; l--) {
210
+      var s = {
211
+        v: !1
212
+      };
213
+      try {
214
+        var c = Object.assign({
215
+            kind: "class",
216
+            name: n,
217
+            addInitializer: old_createAddInitializerMethod(o, s)
218
+          }, old_createMetadataMethodsForProperty(a, 0, n, s)),
219
+          d = r[l](i, c);
220
+      } finally {
221
+        s.v = !0;
222
+      }
223
+      void 0 !== d && (old_assertValidReturnValue(10, d), i = d);
224
+    }
225
+    e.push(i, function () {
226
+      for (var e = 0; e < o.length; e++) o[e].call(i);
227
+    });
228
+  }
229
+}
230
+function applyDecs(e, t, a) {
231
+  var r = [],
232
+    o = {},
233
+    i = {};
234
+  return old_applyMemberDecs(r, e, i, o, t), old_convertMetadataMapToFinal(e.prototype, i), old_applyClassDecs(r, e, o, a), old_convertMetadataMapToFinal(e, o), r;
235
+}
236
+module.exports = applyDecs, module.exports.__esModule = true, module.exports["default"] = module.exports;

+ 187 - 0
app/node_modules/@babel/runtime/helpers/applyDecs2203.js

@@ -0,0 +1,187 @@
1
+var _typeof = require("./typeof.js")["default"];
2
+function applyDecs2203Factory() {
3
+  function createAddInitializerMethod(e, t) {
4
+    return function (r) {
5
+      !function (e, t) {
6
+        if (e.v) throw new Error("attempted to call " + t + " after decoration was finished");
7
+      }(t, "addInitializer"), assertCallable(r, "An initializer"), e.push(r);
8
+    };
9
+  }
10
+  function memberDec(e, t, r, a, n, i, s, o) {
11
+    var c;
12
+    switch (n) {
13
+      case 1:
14
+        c = "accessor";
15
+        break;
16
+      case 2:
17
+        c = "method";
18
+        break;
19
+      case 3:
20
+        c = "getter";
21
+        break;
22
+      case 4:
23
+        c = "setter";
24
+        break;
25
+      default:
26
+        c = "field";
27
+    }
28
+    var l,
29
+      u,
30
+      f = {
31
+        kind: c,
32
+        name: s ? "#" + t : t,
33
+        "static": i,
34
+        "private": s
35
+      },
36
+      p = {
37
+        v: !1
38
+      };
39
+    0 !== n && (f.addInitializer = createAddInitializerMethod(a, p)), 0 === n ? s ? (l = r.get, u = r.set) : (l = function l() {
40
+      return this[t];
41
+    }, u = function u(e) {
42
+      this[t] = e;
43
+    }) : 2 === n ? l = function l() {
44
+      return r.value;
45
+    } : (1 !== n && 3 !== n || (l = function l() {
46
+      return r.get.call(this);
47
+    }), 1 !== n && 4 !== n || (u = function u(e) {
48
+      r.set.call(this, e);
49
+    })), f.access = l && u ? {
50
+      get: l,
51
+      set: u
52
+    } : l ? {
53
+      get: l
54
+    } : {
55
+      set: u
56
+    };
57
+    try {
58
+      return e(o, f);
59
+    } finally {
60
+      p.v = !0;
61
+    }
62
+  }
63
+  function assertCallable(e, t) {
64
+    if ("function" != typeof e) throw new TypeError(t + " must be a function");
65
+  }
66
+  function assertValidReturnValue(e, t) {
67
+    var r = _typeof(t);
68
+    if (1 === e) {
69
+      if ("object" !== r || null === t) throw new TypeError("accessor decorators must return an object with get, set, or init properties or void 0");
70
+      void 0 !== t.get && assertCallable(t.get, "accessor.get"), void 0 !== t.set && assertCallable(t.set, "accessor.set"), void 0 !== t.init && assertCallable(t.init, "accessor.init");
71
+    } else if ("function" !== r) {
72
+      var a;
73
+      throw a = 0 === e ? "field" : 10 === e ? "class" : "method", new TypeError(a + " decorators must return a function or void 0");
74
+    }
75
+  }
76
+  function applyMemberDec(e, t, r, a, n, i, s, o) {
77
+    var c,
78
+      l,
79
+      u,
80
+      f,
81
+      p,
82
+      d,
83
+      h = r[0];
84
+    if (s ? c = 0 === n || 1 === n ? {
85
+      get: r[3],
86
+      set: r[4]
87
+    } : 3 === n ? {
88
+      get: r[3]
89
+    } : 4 === n ? {
90
+      set: r[3]
91
+    } : {
92
+      value: r[3]
93
+    } : 0 !== n && (c = Object.getOwnPropertyDescriptor(t, a)), 1 === n ? u = {
94
+      get: c.get,
95
+      set: c.set
96
+    } : 2 === n ? u = c.value : 3 === n ? u = c.get : 4 === n && (u = c.set), "function" == typeof h) void 0 !== (f = memberDec(h, a, c, o, n, i, s, u)) && (assertValidReturnValue(n, f), 0 === n ? l = f : 1 === n ? (l = f.init, p = f.get || u.get, d = f.set || u.set, u = {
97
+      get: p,
98
+      set: d
99
+    }) : u = f);else for (var v = h.length - 1; v >= 0; v--) {
100
+      var g;
101
+      if (void 0 !== (f = memberDec(h[v], a, c, o, n, i, s, u))) assertValidReturnValue(n, f), 0 === n ? g = f : 1 === n ? (g = f.init, p = f.get || u.get, d = f.set || u.set, u = {
102
+        get: p,
103
+        set: d
104
+      }) : u = f, void 0 !== g && (void 0 === l ? l = g : "function" == typeof l ? l = [l, g] : l.push(g));
105
+    }
106
+    if (0 === n || 1 === n) {
107
+      if (void 0 === l) l = function l(e, t) {
108
+        return t;
109
+      };else if ("function" != typeof l) {
110
+        var y = l;
111
+        l = function l(e, t) {
112
+          for (var r = t, a = 0; a < y.length; a++) r = y[a].call(e, r);
113
+          return r;
114
+        };
115
+      } else {
116
+        var m = l;
117
+        l = function l(e, t) {
118
+          return m.call(e, t);
119
+        };
120
+      }
121
+      e.push(l);
122
+    }
123
+    0 !== n && (1 === n ? (c.get = u.get, c.set = u.set) : 2 === n ? c.value = u : 3 === n ? c.get = u : 4 === n && (c.set = u), s ? 1 === n ? (e.push(function (e, t) {
124
+      return u.get.call(e, t);
125
+    }), e.push(function (e, t) {
126
+      return u.set.call(e, t);
127
+    })) : 2 === n ? e.push(u) : e.push(function (e, t) {
128
+      return u.call(e, t);
129
+    }) : Object.defineProperty(t, a, c));
130
+  }
131
+  function pushInitializers(e, t) {
132
+    t && e.push(function (e) {
133
+      for (var r = 0; r < t.length; r++) t[r].call(e);
134
+      return e;
135
+    });
136
+  }
137
+  return function (e, t, r) {
138
+    var a = [];
139
+    return function (e, t, r) {
140
+      for (var a, n, i = new Map(), s = new Map(), o = 0; o < r.length; o++) {
141
+        var c = r[o];
142
+        if (Array.isArray(c)) {
143
+          var l,
144
+            u,
145
+            f = c[1],
146
+            p = c[2],
147
+            d = c.length > 3,
148
+            h = f >= 5;
149
+          if (h ? (l = t, 0 != (f -= 5) && (u = n = n || [])) : (l = t.prototype, 0 !== f && (u = a = a || [])), 0 !== f && !d) {
150
+            var v = h ? s : i,
151
+              g = v.get(p) || 0;
152
+            if (!0 === g || 3 === g && 4 !== f || 4 === g && 3 !== f) throw new Error("Attempted to decorate a public method/accessor that has the same name as a previously decorated public method/accessor. This is not currently supported by the decorators plugin. Property name was: " + p);
153
+            !g && f > 2 ? v.set(p, f) : v.set(p, !0);
154
+          }
155
+          applyMemberDec(e, l, c, p, f, h, d, u);
156
+        }
157
+      }
158
+      pushInitializers(e, a), pushInitializers(e, n);
159
+    }(a, e, t), function (e, t, r) {
160
+      if (r.length > 0) {
161
+        for (var a = [], n = t, i = t.name, s = r.length - 1; s >= 0; s--) {
162
+          var o = {
163
+            v: !1
164
+          };
165
+          try {
166
+            var c = r[s](n, {
167
+              kind: "class",
168
+              name: i,
169
+              addInitializer: createAddInitializerMethod(a, o)
170
+            });
171
+          } finally {
172
+            o.v = !0;
173
+          }
174
+          void 0 !== c && (assertValidReturnValue(10, c), n = c);
175
+        }
176
+        e.push(n, function () {
177
+          for (var e = 0; e < a.length; e++) a[e].call(n);
178
+        });
179
+      }
180
+    }(a, e, r), a;
181
+  };
182
+}
183
+var applyDecs2203Impl;
184
+function applyDecs2203(e, t, r) {
185
+  return (applyDecs2203Impl = applyDecs2203Impl || applyDecs2203Factory())(e, t, r);
186
+}
187
+module.exports = applyDecs2203, module.exports.__esModule = true, module.exports["default"] = module.exports;

+ 191 - 0
app/node_modules/@babel/runtime/helpers/applyDecs2203R.js

@@ -0,0 +1,191 @@
1
+var _typeof = require("./typeof.js")["default"];
2
+function applyDecs2203RFactory() {
3
+  function createAddInitializerMethod(e, t) {
4
+    return function (r) {
5
+      !function (e, t) {
6
+        if (e.v) throw new Error("attempted to call " + t + " after decoration was finished");
7
+      }(t, "addInitializer"), assertCallable(r, "An initializer"), e.push(r);
8
+    };
9
+  }
10
+  function memberDec(e, t, r, n, a, i, s, o) {
11
+    var c;
12
+    switch (a) {
13
+      case 1:
14
+        c = "accessor";
15
+        break;
16
+      case 2:
17
+        c = "method";
18
+        break;
19
+      case 3:
20
+        c = "getter";
21
+        break;
22
+      case 4:
23
+        c = "setter";
24
+        break;
25
+      default:
26
+        c = "field";
27
+    }
28
+    var l,
29
+      u,
30
+      f = {
31
+        kind: c,
32
+        name: s ? "#" + t : t,
33
+        "static": i,
34
+        "private": s
35
+      },
36
+      p = {
37
+        v: !1
38
+      };
39
+    0 !== a && (f.addInitializer = createAddInitializerMethod(n, p)), 0 === a ? s ? (l = r.get, u = r.set) : (l = function l() {
40
+      return this[t];
41
+    }, u = function u(e) {
42
+      this[t] = e;
43
+    }) : 2 === a ? l = function l() {
44
+      return r.value;
45
+    } : (1 !== a && 3 !== a || (l = function l() {
46
+      return r.get.call(this);
47
+    }), 1 !== a && 4 !== a || (u = function u(e) {
48
+      r.set.call(this, e);
49
+    })), f.access = l && u ? {
50
+      get: l,
51
+      set: u
52
+    } : l ? {
53
+      get: l
54
+    } : {
55
+      set: u
56
+    };
57
+    try {
58
+      return e(o, f);
59
+    } finally {
60
+      p.v = !0;
61
+    }
62
+  }
63
+  function assertCallable(e, t) {
64
+    if ("function" != typeof e) throw new TypeError(t + " must be a function");
65
+  }
66
+  function assertValidReturnValue(e, t) {
67
+    var r = _typeof(t);
68
+    if (1 === e) {
69
+      if ("object" !== r || null === t) throw new TypeError("accessor decorators must return an object with get, set, or init properties or void 0");
70
+      void 0 !== t.get && assertCallable(t.get, "accessor.get"), void 0 !== t.set && assertCallable(t.set, "accessor.set"), void 0 !== t.init && assertCallable(t.init, "accessor.init");
71
+    } else if ("function" !== r) {
72
+      var n;
73
+      throw n = 0 === e ? "field" : 10 === e ? "class" : "method", new TypeError(n + " decorators must return a function or void 0");
74
+    }
75
+  }
76
+  function applyMemberDec(e, t, r, n, a, i, s, o) {
77
+    var c,
78
+      l,
79
+      u,
80
+      f,
81
+      p,
82
+      d,
83
+      h = r[0];
84
+    if (s ? c = 0 === a || 1 === a ? {
85
+      get: r[3],
86
+      set: r[4]
87
+    } : 3 === a ? {
88
+      get: r[3]
89
+    } : 4 === a ? {
90
+      set: r[3]
91
+    } : {
92
+      value: r[3]
93
+    } : 0 !== a && (c = Object.getOwnPropertyDescriptor(t, n)), 1 === a ? u = {
94
+      get: c.get,
95
+      set: c.set
96
+    } : 2 === a ? u = c.value : 3 === a ? u = c.get : 4 === a && (u = c.set), "function" == typeof h) void 0 !== (f = memberDec(h, n, c, o, a, i, s, u)) && (assertValidReturnValue(a, f), 0 === a ? l = f : 1 === a ? (l = f.init, p = f.get || u.get, d = f.set || u.set, u = {
97
+      get: p,
98
+      set: d
99
+    }) : u = f);else for (var v = h.length - 1; v >= 0; v--) {
100
+      var g;
101
+      if (void 0 !== (f = memberDec(h[v], n, c, o, a, i, s, u))) assertValidReturnValue(a, f), 0 === a ? g = f : 1 === a ? (g = f.init, p = f.get || u.get, d = f.set || u.set, u = {
102
+        get: p,
103
+        set: d
104
+      }) : u = f, void 0 !== g && (void 0 === l ? l = g : "function" == typeof l ? l = [l, g] : l.push(g));
105
+    }
106
+    if (0 === a || 1 === a) {
107
+      if (void 0 === l) l = function l(e, t) {
108
+        return t;
109
+      };else if ("function" != typeof l) {
110
+        var y = l;
111
+        l = function l(e, t) {
112
+          for (var r = t, n = 0; n < y.length; n++) r = y[n].call(e, r);
113
+          return r;
114
+        };
115
+      } else {
116
+        var m = l;
117
+        l = function l(e, t) {
118
+          return m.call(e, t);
119
+        };
120
+      }
121
+      e.push(l);
122
+    }
123
+    0 !== a && (1 === a ? (c.get = u.get, c.set = u.set) : 2 === a ? c.value = u : 3 === a ? c.get = u : 4 === a && (c.set = u), s ? 1 === a ? (e.push(function (e, t) {
124
+      return u.get.call(e, t);
125
+    }), e.push(function (e, t) {
126
+      return u.set.call(e, t);
127
+    })) : 2 === a ? e.push(u) : e.push(function (e, t) {
128
+      return u.call(e, t);
129
+    }) : Object.defineProperty(t, n, c));
130
+  }
131
+  function applyMemberDecs(e, t) {
132
+    for (var r, n, a = [], i = new Map(), s = new Map(), o = 0; o < t.length; o++) {
133
+      var c = t[o];
134
+      if (Array.isArray(c)) {
135
+        var l,
136
+          u,
137
+          f = c[1],
138
+          p = c[2],
139
+          d = c.length > 3,
140
+          h = f >= 5;
141
+        if (h ? (l = e, 0 !== (f -= 5) && (u = n = n || [])) : (l = e.prototype, 0 !== f && (u = r = r || [])), 0 !== f && !d) {
142
+          var v = h ? s : i,
143
+            g = v.get(p) || 0;
144
+          if (!0 === g || 3 === g && 4 !== f || 4 === g && 3 !== f) throw new Error("Attempted to decorate a public method/accessor that has the same name as a previously decorated public method/accessor. This is not currently supported by the decorators plugin. Property name was: " + p);
145
+          !g && f > 2 ? v.set(p, f) : v.set(p, !0);
146
+        }
147
+        applyMemberDec(a, l, c, p, f, h, d, u);
148
+      }
149
+    }
150
+    return pushInitializers(a, r), pushInitializers(a, n), a;
151
+  }
152
+  function pushInitializers(e, t) {
153
+    t && e.push(function (e) {
154
+      for (var r = 0; r < t.length; r++) t[r].call(e);
155
+      return e;
156
+    });
157
+  }
158
+  return function (e, t, r) {
159
+    return {
160
+      e: applyMemberDecs(e, t),
161
+      get c() {
162
+        return function (e, t) {
163
+          if (t.length > 0) {
164
+            for (var r = [], n = e, a = e.name, i = t.length - 1; i >= 0; i--) {
165
+              var s = {
166
+                v: !1
167
+              };
168
+              try {
169
+                var o = t[i](n, {
170
+                  kind: "class",
171
+                  name: a,
172
+                  addInitializer: createAddInitializerMethod(r, s)
173
+                });
174
+              } finally {
175
+                s.v = !0;
176
+              }
177
+              void 0 !== o && (assertValidReturnValue(10, o), n = o);
178
+            }
179
+            return [n, function () {
180
+              for (var e = 0; e < r.length; e++) r[e].call(n);
181
+            }];
182
+          }
183
+        }(e, r);
184
+      }
185
+    };
186
+  };
187
+}
188
+function applyDecs2203R(e, t, r) {
189
+  return (module.exports = applyDecs2203R = applyDecs2203RFactory(), module.exports.__esModule = true, module.exports["default"] = module.exports)(e, t, r);
190
+}
191
+module.exports = applyDecs2203R, module.exports.__esModule = true, module.exports["default"] = module.exports;

+ 222 - 0
app/node_modules/@babel/runtime/helpers/applyDecs2301.js

@@ -0,0 +1,222 @@
1
+var _typeof = require("./typeof.js")["default"];
2
+var checkInRHS = require("./checkInRHS.js");
3
+function applyDecs2301Factory() {
4
+  function createAddInitializerMethod(e, t) {
5
+    return function (r) {
6
+      !function (e, t) {
7
+        if (e.v) throw new Error("attempted to call " + t + " after decoration was finished");
8
+      }(t, "addInitializer"), assertCallable(r, "An initializer"), e.push(r);
9
+    };
10
+  }
11
+  function assertInstanceIfPrivate(e, t) {
12
+    if (!e(t)) throw new TypeError("Attempted to access private element on non-instance");
13
+  }
14
+  function memberDec(e, t, r, n, a, i, s, o, c) {
15
+    var u;
16
+    switch (a) {
17
+      case 1:
18
+        u = "accessor";
19
+        break;
20
+      case 2:
21
+        u = "method";
22
+        break;
23
+      case 3:
24
+        u = "getter";
25
+        break;
26
+      case 4:
27
+        u = "setter";
28
+        break;
29
+      default:
30
+        u = "field";
31
+    }
32
+    var l,
33
+      f,
34
+      p = {
35
+        kind: u,
36
+        name: s ? "#" + t : t,
37
+        "static": i,
38
+        "private": s
39
+      },
40
+      d = {
41
+        v: !1
42
+      };
43
+    if (0 !== a && (p.addInitializer = createAddInitializerMethod(n, d)), s || 0 !== a && 2 !== a) {
44
+      if (2 === a) l = function l(e) {
45
+        return assertInstanceIfPrivate(c, e), r.value;
46
+      };else {
47
+        var h = 0 === a || 1 === a;
48
+        (h || 3 === a) && (l = s ? function (e) {
49
+          return assertInstanceIfPrivate(c, e), r.get.call(e);
50
+        } : function (e) {
51
+          return r.get.call(e);
52
+        }), (h || 4 === a) && (f = s ? function (e, t) {
53
+          assertInstanceIfPrivate(c, e), r.set.call(e, t);
54
+        } : function (e, t) {
55
+          r.set.call(e, t);
56
+        });
57
+      }
58
+    } else l = function l(e) {
59
+      return e[t];
60
+    }, 0 === a && (f = function f(e, r) {
61
+      e[t] = r;
62
+    });
63
+    var v = s ? c.bind() : function (e) {
64
+      return t in e;
65
+    };
66
+    p.access = l && f ? {
67
+      get: l,
68
+      set: f,
69
+      has: v
70
+    } : l ? {
71
+      get: l,
72
+      has: v
73
+    } : {
74
+      set: f,
75
+      has: v
76
+    };
77
+    try {
78
+      return e(o, p);
79
+    } finally {
80
+      d.v = !0;
81
+    }
82
+  }
83
+  function assertCallable(e, t) {
84
+    if ("function" != typeof e) throw new TypeError(t + " must be a function");
85
+  }
86
+  function assertValidReturnValue(e, t) {
87
+    var r = _typeof(t);
88
+    if (1 === e) {
89
+      if ("object" !== r || null === t) throw new TypeError("accessor decorators must return an object with get, set, or init properties or void 0");
90
+      void 0 !== t.get && assertCallable(t.get, "accessor.get"), void 0 !== t.set && assertCallable(t.set, "accessor.set"), void 0 !== t.init && assertCallable(t.init, "accessor.init");
91
+    } else if ("function" !== r) {
92
+      var n;
93
+      throw n = 0 === e ? "field" : 10 === e ? "class" : "method", new TypeError(n + " decorators must return a function or void 0");
94
+    }
95
+  }
96
+  function curryThis2(e) {
97
+    return function (t) {
98
+      e(this, t);
99
+    };
100
+  }
101
+  function applyMemberDec(e, t, r, n, a, i, s, o, c) {
102
+    var u,
103
+      l,
104
+      f,
105
+      p,
106
+      d,
107
+      h,
108
+      v,
109
+      g = r[0];
110
+    if (s ? u = 0 === a || 1 === a ? {
111
+      get: (p = r[3], function () {
112
+        return p(this);
113
+      }),
114
+      set: curryThis2(r[4])
115
+    } : 3 === a ? {
116
+      get: r[3]
117
+    } : 4 === a ? {
118
+      set: r[3]
119
+    } : {
120
+      value: r[3]
121
+    } : 0 !== a && (u = Object.getOwnPropertyDescriptor(t, n)), 1 === a ? f = {
122
+      get: u.get,
123
+      set: u.set
124
+    } : 2 === a ? f = u.value : 3 === a ? f = u.get : 4 === a && (f = u.set), "function" == typeof g) void 0 !== (d = memberDec(g, n, u, o, a, i, s, f, c)) && (assertValidReturnValue(a, d), 0 === a ? l = d : 1 === a ? (l = d.init, h = d.get || f.get, v = d.set || f.set, f = {
125
+      get: h,
126
+      set: v
127
+    }) : f = d);else for (var y = g.length - 1; y >= 0; y--) {
128
+      var m;
129
+      if (void 0 !== (d = memberDec(g[y], n, u, o, a, i, s, f, c))) assertValidReturnValue(a, d), 0 === a ? m = d : 1 === a ? (m = d.init, h = d.get || f.get, v = d.set || f.set, f = {
130
+        get: h,
131
+        set: v
132
+      }) : f = d, void 0 !== m && (void 0 === l ? l = m : "function" == typeof l ? l = [l, m] : l.push(m));
133
+    }
134
+    if (0 === a || 1 === a) {
135
+      if (void 0 === l) l = function l(e, t) {
136
+        return t;
137
+      };else if ("function" != typeof l) {
138
+        var b = l;
139
+        l = function l(e, t) {
140
+          for (var r = t, n = 0; n < b.length; n++) r = b[n].call(e, r);
141
+          return r;
142
+        };
143
+      } else {
144
+        var I = l;
145
+        l = function l(e, t) {
146
+          return I.call(e, t);
147
+        };
148
+      }
149
+      e.push(l);
150
+    }
151
+    0 !== a && (1 === a ? (u.get = f.get, u.set = f.set) : 2 === a ? u.value = f : 3 === a ? u.get = f : 4 === a && (u.set = f), s ? 1 === a ? (e.push(function (e, t) {
152
+      return f.get.call(e, t);
153
+    }), e.push(function (e, t) {
154
+      return f.set.call(e, t);
155
+    })) : 2 === a ? e.push(f) : e.push(function (e, t) {
156
+      return f.call(e, t);
157
+    }) : Object.defineProperty(t, n, u));
158
+  }
159
+  function applyMemberDecs(e, t, r) {
160
+    for (var n, a, i, s = [], o = new Map(), c = new Map(), u = 0; u < t.length; u++) {
161
+      var l = t[u];
162
+      if (Array.isArray(l)) {
163
+        var f,
164
+          p,
165
+          d = l[1],
166
+          h = l[2],
167
+          v = l.length > 3,
168
+          g = d >= 5,
169
+          y = r;
170
+        if (g ? (f = e, 0 !== (d -= 5) && (p = a = a || []), v && !i && (i = function i(t) {
171
+          return checkInRHS(t) === e;
172
+        }), y = i) : (f = e.prototype, 0 !== d && (p = n = n || [])), 0 !== d && !v) {
173
+          var m = g ? c : o,
174
+            b = m.get(h) || 0;
175
+          if (!0 === b || 3 === b && 4 !== d || 4 === b && 3 !== d) throw new Error("Attempted to decorate a public method/accessor that has the same name as a previously decorated public method/accessor. This is not currently supported by the decorators plugin. Property name was: " + h);
176
+          !b && d > 2 ? m.set(h, d) : m.set(h, !0);
177
+        }
178
+        applyMemberDec(s, f, l, h, d, g, v, p, y);
179
+      }
180
+    }
181
+    return pushInitializers(s, n), pushInitializers(s, a), s;
182
+  }
183
+  function pushInitializers(e, t) {
184
+    t && e.push(function (e) {
185
+      for (var r = 0; r < t.length; r++) t[r].call(e);
186
+      return e;
187
+    });
188
+  }
189
+  return function (e, t, r, n) {
190
+    return {
191
+      e: applyMemberDecs(e, t, n),
192
+      get c() {
193
+        return function (e, t) {
194
+          if (t.length > 0) {
195
+            for (var r = [], n = e, a = e.name, i = t.length - 1; i >= 0; i--) {
196
+              var s = {
197
+                v: !1
198
+              };
199
+              try {
200
+                var o = t[i](n, {
201
+                  kind: "class",
202
+                  name: a,
203
+                  addInitializer: createAddInitializerMethod(r, s)
204
+                });
205
+              } finally {
206
+                s.v = !0;
207
+              }
208
+              void 0 !== o && (assertValidReturnValue(10, o), n = o);
209
+            }
210
+            return [n, function () {
211
+              for (var e = 0; e < r.length; e++) r[e].call(n);
212
+            }];
213
+          }
214
+        }(e, r);
215
+      }
216
+    };
217
+  };
218
+}
219
+function applyDecs2301(e, t, r, n) {
220
+  return (module.exports = applyDecs2301 = applyDecs2301Factory(), module.exports.__esModule = true, module.exports["default"] = module.exports)(e, t, r, n);
221
+}
222
+module.exports = applyDecs2301, module.exports.__esModule = true, module.exports["default"] = module.exports;

+ 220 - 0
app/node_modules/@babel/runtime/helpers/applyDecs2305.js

@@ -0,0 +1,220 @@
1
+var _typeof = require("./typeof.js")["default"];
2
+var checkInRHS = require("./checkInRHS.js");
3
+function createAddInitializerMethod(e, t) {
4
+  return function (r) {
5
+    assertNotFinished(t, "addInitializer"), assertCallable(r, "An initializer"), e.push(r);
6
+  };
7
+}
8
+function assertInstanceIfPrivate(e, t) {
9
+  if (!e(t)) throw new TypeError("Attempted to access private element on non-instance");
10
+}
11
+function memberDec(e, t, r, n, a, i, s, o, c, l) {
12
+  var u;
13
+  switch (i) {
14
+    case 1:
15
+      u = "accessor";
16
+      break;
17
+    case 2:
18
+      u = "method";
19
+      break;
20
+    case 3:
21
+      u = "getter";
22
+      break;
23
+    case 4:
24
+      u = "setter";
25
+      break;
26
+    default:
27
+      u = "field";
28
+  }
29
+  var f,
30
+    d,
31
+    p = {
32
+      kind: u,
33
+      name: o ? "#" + r : r,
34
+      "static": s,
35
+      "private": o
36
+    },
37
+    h = {
38
+      v: !1
39
+    };
40
+  if (0 !== i && (p.addInitializer = createAddInitializerMethod(a, h)), o || 0 !== i && 2 !== i) {
41
+    if (2 === i) f = function f(e) {
42
+      return assertInstanceIfPrivate(l, e), n.value;
43
+    };else {
44
+      var v = 0 === i || 1 === i;
45
+      (v || 3 === i) && (f = o ? function (e) {
46
+        return assertInstanceIfPrivate(l, e), n.get.call(e);
47
+      } : function (e) {
48
+        return n.get.call(e);
49
+      }), (v || 4 === i) && (d = o ? function (e, t) {
50
+        assertInstanceIfPrivate(l, e), n.set.call(e, t);
51
+      } : function (e, t) {
52
+        n.set.call(e, t);
53
+      });
54
+    }
55
+  } else f = function f(e) {
56
+    return e[r];
57
+  }, 0 === i && (d = function d(e, t) {
58
+    e[r] = t;
59
+  });
60
+  var y = o ? l.bind() : function (e) {
61
+    return r in e;
62
+  };
63
+  p.access = f && d ? {
64
+    get: f,
65
+    set: d,
66
+    has: y
67
+  } : f ? {
68
+    get: f,
69
+    has: y
70
+  } : {
71
+    set: d,
72
+    has: y
73
+  };
74
+  try {
75
+    return e.call(t, c, p);
76
+  } finally {
77
+    h.v = !0;
78
+  }
79
+}
80
+function assertNotFinished(e, t) {
81
+  if (e.v) throw new Error("attempted to call " + t + " after decoration was finished");
82
+}
83
+function assertCallable(e, t) {
84
+  if ("function" != typeof e) throw new TypeError(t + " must be a function");
85
+}
86
+function assertValidReturnValue(e, t) {
87
+  var r = _typeof(t);
88
+  if (1 === e) {
89
+    if ("object" !== r || null === t) throw new TypeError("accessor decorators must return an object with get, set, or init properties or void 0");
90
+    void 0 !== t.get && assertCallable(t.get, "accessor.get"), void 0 !== t.set && assertCallable(t.set, "accessor.set"), void 0 !== t.init && assertCallable(t.init, "accessor.init");
91
+  } else if ("function" !== r) {
92
+    var n;
93
+    throw n = 0 === e ? "field" : 5 === e ? "class" : "method", new TypeError(n + " decorators must return a function or void 0");
94
+  }
95
+}
96
+function curryThis1(e) {
97
+  return function () {
98
+    return e(this);
99
+  };
100
+}
101
+function curryThis2(e) {
102
+  return function (t) {
103
+    e(this, t);
104
+  };
105
+}
106
+function applyMemberDec(e, t, r, n, a, i, s, o, c, l) {
107
+  var u,
108
+    f,
109
+    d,
110
+    p,
111
+    h,
112
+    v,
113
+    y = r[0];
114
+  n || Array.isArray(y) || (y = [y]), o ? u = 0 === i || 1 === i ? {
115
+    get: curryThis1(r[3]),
116
+    set: curryThis2(r[4])
117
+  } : 3 === i ? {
118
+    get: r[3]
119
+  } : 4 === i ? {
120
+    set: r[3]
121
+  } : {
122
+    value: r[3]
123
+  } : 0 !== i && (u = Object.getOwnPropertyDescriptor(t, a)), 1 === i ? d = {
124
+    get: u.get,
125
+    set: u.set
126
+  } : 2 === i ? d = u.value : 3 === i ? d = u.get : 4 === i && (d = u.set);
127
+  for (var g = n ? 2 : 1, m = y.length - 1; m >= 0; m -= g) {
128
+    var b;
129
+    if (void 0 !== (p = memberDec(y[m], n ? y[m - 1] : void 0, a, u, c, i, s, o, d, l))) assertValidReturnValue(i, p), 0 === i ? b = p : 1 === i ? (b = p.init, h = p.get || d.get, v = p.set || d.set, d = {
130
+      get: h,
131
+      set: v
132
+    }) : d = p, void 0 !== b && (void 0 === f ? f = b : "function" == typeof f ? f = [f, b] : f.push(b));
133
+  }
134
+  if (0 === i || 1 === i) {
135
+    if (void 0 === f) f = function f(e, t) {
136
+      return t;
137
+    };else if ("function" != typeof f) {
138
+      var I = f;
139
+      f = function f(e, t) {
140
+        for (var r = t, n = I.length - 1; n >= 0; n--) r = I[n].call(e, r);
141
+        return r;
142
+      };
143
+    } else {
144
+      var w = f;
145
+      f = function f(e, t) {
146
+        return w.call(e, t);
147
+      };
148
+    }
149
+    e.push(f);
150
+  }
151
+  0 !== i && (1 === i ? (u.get = d.get, u.set = d.set) : 2 === i ? u.value = d : 3 === i ? u.get = d : 4 === i && (u.set = d), o ? 1 === i ? (e.push(function (e, t) {
152
+    return d.get.call(e, t);
153
+  }), e.push(function (e, t) {
154
+    return d.set.call(e, t);
155
+  })) : 2 === i ? e.push(d) : e.push(function (e, t) {
156
+    return d.call(e, t);
157
+  }) : Object.defineProperty(t, a, u));
158
+}
159
+function applyMemberDecs(e, t, r) {
160
+  for (var n, a, i, s = [], o = new Map(), c = new Map(), l = 0; l < t.length; l++) {
161
+    var u = t[l];
162
+    if (Array.isArray(u)) {
163
+      var f,
164
+        d,
165
+        p = u[1],
166
+        h = u[2],
167
+        v = u.length > 3,
168
+        y = 16 & p,
169
+        g = !!(8 & p),
170
+        m = r;
171
+      if (p &= 7, g ? (f = e, 0 !== p && (d = a = a || []), v && !i && (i = function i(t) {
172
+        return checkInRHS(t) === e;
173
+      }), m = i) : (f = e.prototype, 0 !== p && (d = n = n || [])), 0 !== p && !v) {
174
+        var b = g ? c : o,
175
+          I = b.get(h) || 0;
176
+        if (!0 === I || 3 === I && 4 !== p || 4 === I && 3 !== p) throw new Error("Attempted to decorate a public method/accessor that has the same name as a previously decorated public method/accessor. This is not currently supported by the decorators plugin. Property name was: " + h);
177
+        b.set(h, !(!I && p > 2) || p);
178
+      }
179
+      applyMemberDec(s, f, u, y, h, p, g, v, d, m);
180
+    }
181
+  }
182
+  return pushInitializers(s, n), pushInitializers(s, a), s;
183
+}
184
+function pushInitializers(e, t) {
185
+  t && e.push(function (e) {
186
+    for (var r = 0; r < t.length; r++) t[r].call(e);
187
+    return e;
188
+  });
189
+}
190
+function applyClassDecs(e, t, r) {
191
+  if (t.length) {
192
+    for (var n = [], a = e, i = e.name, s = r ? 2 : 1, o = t.length - 1; o >= 0; o -= s) {
193
+      var c = {
194
+        v: !1
195
+      };
196
+      try {
197
+        var l = t[o].call(r ? t[o - 1] : void 0, a, {
198
+          kind: "class",
199
+          name: i,
200
+          addInitializer: createAddInitializerMethod(n, c)
201
+        });
202
+      } finally {
203
+        c.v = !0;
204
+      }
205
+      void 0 !== l && (assertValidReturnValue(5, l), a = l);
206
+    }
207
+    return [a, function () {
208
+      for (var e = 0; e < n.length; e++) n[e].call(a);
209
+    }];
210
+  }
211
+}
212
+function applyDecs2305(e, t, r, n, a) {
213
+  return {
214
+    e: applyMemberDecs(e, t, a),
215
+    get c() {
216
+      return applyClassDecs(e, r, n);
217
+    }
218
+  };
219
+}
220
+module.exports = applyDecs2305, module.exports.__esModule = true, module.exports["default"] = module.exports;

+ 6 - 0
app/node_modules/@babel/runtime/helpers/arrayLikeToArray.js

@@ -0,0 +1,6 @@
1
+function _arrayLikeToArray(arr, len) {
2
+  if (len == null || len > arr.length) len = arr.length;
3
+  for (var i = 0, arr2 = new Array(len); i < len; i++) arr2[i] = arr[i];
4
+  return arr2;
5
+}
6
+module.exports = _arrayLikeToArray, module.exports.__esModule = true, module.exports["default"] = module.exports;

+ 4 - 0
app/node_modules/@babel/runtime/helpers/arrayWithHoles.js

@@ -0,0 +1,4 @@
1
+function _arrayWithHoles(arr) {
2
+  if (Array.isArray(arr)) return arr;
3
+}
4
+module.exports = _arrayWithHoles, module.exports.__esModule = true, module.exports["default"] = module.exports;

+ 5 - 0
app/node_modules/@babel/runtime/helpers/arrayWithoutHoles.js

@@ -0,0 +1,5 @@
1
+var arrayLikeToArray = require("./arrayLikeToArray.js");
2
+function _arrayWithoutHoles(arr) {
3
+  if (Array.isArray(arr)) return arrayLikeToArray(arr);
4
+}
5
+module.exports = _arrayWithoutHoles, module.exports.__esModule = true, module.exports["default"] = module.exports;

+ 7 - 0
app/node_modules/@babel/runtime/helpers/assertThisInitialized.js

@@ -0,0 +1,7 @@
1
+function _assertThisInitialized(self) {
2
+  if (self === void 0) {
3
+    throw new ReferenceError("this hasn't been initialised - super() hasn't been called");
4
+  }
5
+  return self;
6
+}
7
+module.exports = _assertThisInitialized, module.exports.__esModule = true, module.exports["default"] = module.exports;

+ 24 - 0
app/node_modules/@babel/runtime/helpers/asyncGeneratorDelegate.js

@@ -0,0 +1,24 @@
1
+var OverloadYield = require("./OverloadYield.js");
2
+function _asyncGeneratorDelegate(t) {
3
+  var e = {},
4
+    n = !1;
5
+  function pump(e, r) {
6
+    return n = !0, r = new Promise(function (n) {
7
+      n(t[e](r));
8
+    }), {
9
+      done: !1,
10
+      value: new OverloadYield(r, 1)
11
+    };
12
+  }
13
+  return e["undefined" != typeof Symbol && Symbol.iterator || "@@iterator"] = function () {
14
+    return this;
15
+  }, e.next = function (t) {
16
+    return n ? (n = !1, t) : pump("next", t);
17
+  }, "function" == typeof t["throw"] && (e["throw"] = function (t) {
18
+    if (n) throw n = !1, t;
19
+    return pump("throw", t);
20
+  }), "function" == typeof t["return"] && (e["return"] = function (t) {
21
+    return n ? (n = !1, t) : pump("return", t);
22
+  }), e;
23
+}
24
+module.exports = _asyncGeneratorDelegate, module.exports.__esModule = true, module.exports["default"] = module.exports;

+ 45 - 0
app/node_modules/@babel/runtime/helpers/asyncIterator.js

@@ -0,0 +1,45 @@
1
+function _asyncIterator(r) {
2
+  var n,
3
+    t,
4
+    o,
5
+    e = 2;
6
+  for ("undefined" != typeof Symbol && (t = Symbol.asyncIterator, o = Symbol.iterator); e--;) {
7
+    if (t && null != (n = r[t])) return n.call(r);
8
+    if (o && null != (n = r[o])) return new AsyncFromSyncIterator(n.call(r));
9
+    t = "@@asyncIterator", o = "@@iterator";
10
+  }
11
+  throw new TypeError("Object is not async iterable");
12
+}
13
+function AsyncFromSyncIterator(r) {
14
+  function AsyncFromSyncIteratorContinuation(r) {
15
+    if (Object(r) !== r) return Promise.reject(new TypeError(r + " is not an object."));
16
+    var n = r.done;
17
+    return Promise.resolve(r.value).then(function (r) {
18
+      return {
19
+        value: r,
20
+        done: n
21
+      };
22
+    });
23
+  }
24
+  return AsyncFromSyncIterator = function AsyncFromSyncIterator(r) {
25
+    this.s = r, this.n = r.next;
26
+  }, AsyncFromSyncIterator.prototype = {
27
+    s: null,
28
+    n: null,
29
+    next: function next() {
30
+      return AsyncFromSyncIteratorContinuation(this.n.apply(this.s, arguments));
31
+    },
32
+    "return": function _return(r) {
33
+      var n = this.s["return"];
34
+      return void 0 === n ? Promise.resolve({
35
+        value: r,
36
+        done: !0
37
+      }) : AsyncFromSyncIteratorContinuation(n.apply(this.s, arguments));
38
+    },
39
+    "throw": function _throw(r) {
40
+      var n = this.s["return"];
41
+      return void 0 === n ? Promise.reject(r) : AsyncFromSyncIteratorContinuation(n.apply(this.s, arguments));
42
+    }
43
+  }, new AsyncFromSyncIterator(r);
44
+}
45
+module.exports = _asyncIterator, module.exports.__esModule = true, module.exports["default"] = module.exports;

+ 31 - 0
app/node_modules/@babel/runtime/helpers/asyncToGenerator.js

@@ -0,0 +1,31 @@
1
+function asyncGeneratorStep(gen, resolve, reject, _next, _throw, key, arg) {
2
+  try {
3
+    var info = gen[key](arg);
4
+    var value = info.value;
5
+  } catch (error) {
6
+    reject(error);
7
+    return;
8
+  }
9
+  if (info.done) {
10
+    resolve(value);
11
+  } else {
12
+    Promise.resolve(value).then(_next, _throw);
13
+  }
14
+}
15
+function _asyncToGenerator(fn) {
16
+  return function () {
17
+    var self = this,
18
+      args = arguments;
19
+    return new Promise(function (resolve, reject) {
20
+      var gen = fn.apply(self, args);
21
+      function _next(value) {
22
+        asyncGeneratorStep(gen, resolve, reject, _next, _throw, "next", value);
23
+      }
24
+      function _throw(err) {
25
+        asyncGeneratorStep(gen, resolve, reject, _next, _throw, "throw", err);
26
+      }
27
+      _next(undefined);
28
+    });
29
+  };
30
+}
31
+module.exports = _asyncToGenerator, module.exports.__esModule = true, module.exports["default"] = module.exports;

+ 5 - 0
app/node_modules/@babel/runtime/helpers/awaitAsyncGenerator.js

@@ -0,0 +1,5 @@
1
+var OverloadYield = require("./OverloadYield.js");
2
+function _awaitAsyncGenerator(e) {
3
+  return new OverloadYield(e, 0);
4
+}
5
+module.exports = _awaitAsyncGenerator, module.exports.__esModule = true, module.exports["default"] = module.exports;

+ 6 - 0
app/node_modules/@babel/runtime/helpers/checkInRHS.js

@@ -0,0 +1,6 @@
1
+var _typeof = require("./typeof.js")["default"];
2
+function _checkInRHS(e) {
3
+  if (Object(e) !== e) throw TypeError("right-hand side of 'in' should be an object, got " + (null !== e ? _typeof(e) : "null"));
4
+  return e;
5
+}
6
+module.exports = _checkInRHS, module.exports.__esModule = true, module.exports["default"] = module.exports;

+ 6 - 0
app/node_modules/@babel/runtime/helpers/checkPrivateRedeclaration.js

@@ -0,0 +1,6 @@
1
+function _checkPrivateRedeclaration(obj, privateCollection) {
2
+  if (privateCollection.has(obj)) {
3
+    throw new TypeError("Cannot initialize the same private elements twice on an object");
4
+  }
5
+}
6
+module.exports = _checkPrivateRedeclaration, module.exports.__esModule = true, module.exports["default"] = module.exports;

+ 18 - 0
app/node_modules/@babel/runtime/helpers/classApplyDescriptorDestructureSet.js

@@ -0,0 +1,18 @@
1
+function _classApplyDescriptorDestructureSet(receiver, descriptor) {
2
+  if (descriptor.set) {
3
+    if (!("__destrObj" in descriptor)) {
4
+      descriptor.__destrObj = {
5
+        set value(v) {
6
+          descriptor.set.call(receiver, v);
7
+        }
8
+      };
9
+    }
10
+    return descriptor.__destrObj;
11
+  } else {
12
+    if (!descriptor.writable) {
13
+      throw new TypeError("attempted to set read only private field");
14
+    }
15
+    return descriptor;
16
+  }
17
+}
18
+module.exports = _classApplyDescriptorDestructureSet, module.exports.__esModule = true, module.exports["default"] = module.exports;

+ 7 - 0
app/node_modules/@babel/runtime/helpers/classApplyDescriptorGet.js

@@ -0,0 +1,7 @@
1
+function _classApplyDescriptorGet(receiver, descriptor) {
2
+  if (descriptor.get) {
3
+    return descriptor.get.call(receiver);
4
+  }
5
+  return descriptor.value;
6
+}
7
+module.exports = _classApplyDescriptorGet, module.exports.__esModule = true, module.exports["default"] = module.exports;

+ 11 - 0
app/node_modules/@babel/runtime/helpers/classApplyDescriptorSet.js

@@ -0,0 +1,11 @@
1
+function _classApplyDescriptorSet(receiver, descriptor, value) {
2
+  if (descriptor.set) {
3
+    descriptor.set.call(receiver, value);
4
+  } else {
5
+    if (!descriptor.writable) {
6
+      throw new TypeError("attempted to set read only private field");
7
+    }
8
+    descriptor.value = value;
9
+  }
10
+}
11
+module.exports = _classApplyDescriptorSet, module.exports.__esModule = true, module.exports["default"] = module.exports;

+ 6 - 0
app/node_modules/@babel/runtime/helpers/classCallCheck.js

@@ -0,0 +1,6 @@
1
+function _classCallCheck(instance, Constructor) {
2
+  if (!(instance instanceof Constructor)) {
3
+    throw new TypeError("Cannot call a class as a function");
4
+  }
5
+}
6
+module.exports = _classCallCheck, module.exports.__esModule = true, module.exports["default"] = module.exports;

+ 6 - 0
app/node_modules/@babel/runtime/helpers/classCheckPrivateStaticAccess.js

@@ -0,0 +1,6 @@
1
+function _classCheckPrivateStaticAccess(receiver, classConstructor) {
2
+  if (receiver !== classConstructor) {
3
+    throw new TypeError("Private static access of wrong provenance");
4
+  }
5
+}
6
+module.exports = _classCheckPrivateStaticAccess, module.exports.__esModule = true, module.exports["default"] = module.exports;

+ 6 - 0
app/node_modules/@babel/runtime/helpers/classCheckPrivateStaticFieldDescriptor.js

@@ -0,0 +1,6 @@
1
+function _classCheckPrivateStaticFieldDescriptor(descriptor, action) {
2
+  if (descriptor === undefined) {
3
+    throw new TypeError("attempted to " + action + " private static field before its declaration");
4
+  }
5
+}
6
+module.exports = _classCheckPrivateStaticFieldDescriptor, module.exports.__esModule = true, module.exports["default"] = module.exports;

+ 7 - 0
app/node_modules/@babel/runtime/helpers/classExtractFieldDescriptor.js

@@ -0,0 +1,7 @@
1
+function _classExtractFieldDescriptor(receiver, privateMap, action) {
2
+  if (!privateMap.has(receiver)) {
3
+    throw new TypeError("attempted to " + action + " private field on non-instance");
4
+  }
5
+  return privateMap.get(receiver);
6
+}
7
+module.exports = _classExtractFieldDescriptor, module.exports.__esModule = true, module.exports["default"] = module.exports;

+ 4 - 0
app/node_modules/@babel/runtime/helpers/classNameTDZError.js

@@ -0,0 +1,4 @@
1
+function _classNameTDZError(name) {
2
+  throw new ReferenceError("Class \"" + name + "\" cannot be referenced in computed property keys.");
3
+}
4
+module.exports = _classNameTDZError, module.exports.__esModule = true, module.exports["default"] = module.exports;

+ 7 - 0
app/node_modules/@babel/runtime/helpers/classPrivateFieldDestructureSet.js

@@ -0,0 +1,7 @@
1
+var classApplyDescriptorDestructureSet = require("./classApplyDescriptorDestructureSet.js");
2
+var classExtractFieldDescriptor = require("./classExtractFieldDescriptor.js");
3
+function _classPrivateFieldDestructureSet(receiver, privateMap) {
4
+  var descriptor = classExtractFieldDescriptor(receiver, privateMap, "set");
5
+  return classApplyDescriptorDestructureSet(receiver, descriptor);
6
+}
7
+module.exports = _classPrivateFieldDestructureSet, module.exports.__esModule = true, module.exports["default"] = module.exports;

+ 7 - 0
app/node_modules/@babel/runtime/helpers/classPrivateFieldGet.js

@@ -0,0 +1,7 @@
1
+var classApplyDescriptorGet = require("./classApplyDescriptorGet.js");
2
+var classExtractFieldDescriptor = require("./classExtractFieldDescriptor.js");
3
+function _classPrivateFieldGet(receiver, privateMap) {
4
+  var descriptor = classExtractFieldDescriptor(receiver, privateMap, "get");
5
+  return classApplyDescriptorGet(receiver, descriptor);
6
+}
7
+module.exports = _classPrivateFieldGet, module.exports.__esModule = true, module.exports["default"] = module.exports;

+ 6 - 0
app/node_modules/@babel/runtime/helpers/classPrivateFieldInitSpec.js

@@ -0,0 +1,6 @@
1
+var checkPrivateRedeclaration = require("./checkPrivateRedeclaration.js");
2
+function _classPrivateFieldInitSpec(obj, privateMap, value) {
3
+  checkPrivateRedeclaration(obj, privateMap);
4
+  privateMap.set(obj, value);
5
+}
6
+module.exports = _classPrivateFieldInitSpec, module.exports.__esModule = true, module.exports["default"] = module.exports;

+ 7 - 0
app/node_modules/@babel/runtime/helpers/classPrivateFieldLooseBase.js

@@ -0,0 +1,7 @@
1
+function _classPrivateFieldBase(receiver, privateKey) {
2
+  if (!Object.prototype.hasOwnProperty.call(receiver, privateKey)) {
3
+    throw new TypeError("attempted to use private field on non-instance");
4
+  }
5
+  return receiver;
6
+}
7
+module.exports = _classPrivateFieldBase, module.exports.__esModule = true, module.exports["default"] = module.exports;

+ 5 - 0
app/node_modules/@babel/runtime/helpers/classPrivateFieldLooseKey.js

@@ -0,0 +1,5 @@
1
+var id = 0;
2
+function _classPrivateFieldKey(name) {
3
+  return "__private_" + id++ + "_" + name;
4
+}
5
+module.exports = _classPrivateFieldKey, module.exports.__esModule = true, module.exports["default"] = module.exports;

+ 8 - 0
app/node_modules/@babel/runtime/helpers/classPrivateFieldSet.js

@@ -0,0 +1,8 @@
1
+var classApplyDescriptorSet = require("./classApplyDescriptorSet.js");
2
+var classExtractFieldDescriptor = require("./classExtractFieldDescriptor.js");
3
+function _classPrivateFieldSet(receiver, privateMap, value) {
4
+  var descriptor = classExtractFieldDescriptor(receiver, privateMap, "set");
5
+  classApplyDescriptorSet(receiver, descriptor, value);
6
+  return value;
7
+}
8
+module.exports = _classPrivateFieldSet, module.exports.__esModule = true, module.exports["default"] = module.exports;

+ 7 - 0
app/node_modules/@babel/runtime/helpers/classPrivateMethodGet.js

@@ -0,0 +1,7 @@
1
+function _classPrivateMethodGet(receiver, privateSet, fn) {
2
+  if (!privateSet.has(receiver)) {
3
+    throw new TypeError("attempted to get private field on non-instance");
4
+  }
5
+  return fn;
6
+}
7
+module.exports = _classPrivateMethodGet, module.exports.__esModule = true, module.exports["default"] = module.exports;

+ 6 - 0
app/node_modules/@babel/runtime/helpers/classPrivateMethodInitSpec.js

@@ -0,0 +1,6 @@
1
+var checkPrivateRedeclaration = require("./checkPrivateRedeclaration.js");
2
+function _classPrivateMethodInitSpec(obj, privateSet) {
3
+  checkPrivateRedeclaration(obj, privateSet);
4
+  privateSet.add(obj);
5
+}
6
+module.exports = _classPrivateMethodInitSpec, module.exports.__esModule = true, module.exports["default"] = module.exports;

+ 4 - 0
app/node_modules/@babel/runtime/helpers/classPrivateMethodSet.js

@@ -0,0 +1,4 @@
1
+function _classPrivateMethodSet() {
2
+  throw new TypeError("attempted to reassign private method");
3
+}
4
+module.exports = _classPrivateMethodSet, module.exports.__esModule = true, module.exports["default"] = module.exports;

+ 9 - 0
app/node_modules/@babel/runtime/helpers/classStaticPrivateFieldDestructureSet.js

@@ -0,0 +1,9 @@
1
+var classApplyDescriptorDestructureSet = require("./classApplyDescriptorDestructureSet.js");
2
+var classCheckPrivateStaticAccess = require("./classCheckPrivateStaticAccess.js");
3
+var classCheckPrivateStaticFieldDescriptor = require("./classCheckPrivateStaticFieldDescriptor.js");
4
+function _classStaticPrivateFieldDestructureSet(receiver, classConstructor, descriptor) {
5
+  classCheckPrivateStaticAccess(receiver, classConstructor);
6
+  classCheckPrivateStaticFieldDescriptor(descriptor, "set");
7
+  return classApplyDescriptorDestructureSet(receiver, descriptor);
8
+}
9
+module.exports = _classStaticPrivateFieldDestructureSet, module.exports.__esModule = true, module.exports["default"] = module.exports;

+ 9 - 0
app/node_modules/@babel/runtime/helpers/classStaticPrivateFieldSpecGet.js

@@ -0,0 +1,9 @@
1
+var classApplyDescriptorGet = require("./classApplyDescriptorGet.js");
2
+var classCheckPrivateStaticAccess = require("./classCheckPrivateStaticAccess.js");
3
+var classCheckPrivateStaticFieldDescriptor = require("./classCheckPrivateStaticFieldDescriptor.js");
4
+function _classStaticPrivateFieldSpecGet(receiver, classConstructor, descriptor) {
5
+  classCheckPrivateStaticAccess(receiver, classConstructor);
6
+  classCheckPrivateStaticFieldDescriptor(descriptor, "get");
7
+  return classApplyDescriptorGet(receiver, descriptor);
8
+}
9
+module.exports = _classStaticPrivateFieldSpecGet, module.exports.__esModule = true, module.exports["default"] = module.exports;

+ 10 - 0
app/node_modules/@babel/runtime/helpers/classStaticPrivateFieldSpecSet.js

@@ -0,0 +1,10 @@
1
+var classApplyDescriptorSet = require("./classApplyDescriptorSet.js");
2
+var classCheckPrivateStaticAccess = require("./classCheckPrivateStaticAccess.js");
3
+var classCheckPrivateStaticFieldDescriptor = require("./classCheckPrivateStaticFieldDescriptor.js");
4
+function _classStaticPrivateFieldSpecSet(receiver, classConstructor, descriptor, value) {
5
+  classCheckPrivateStaticAccess(receiver, classConstructor);
6
+  classCheckPrivateStaticFieldDescriptor(descriptor, "set");
7
+  classApplyDescriptorSet(receiver, descriptor, value);
8
+  return value;
9
+}
10
+module.exports = _classStaticPrivateFieldSpecSet, module.exports.__esModule = true, module.exports["default"] = module.exports;

+ 6 - 0
app/node_modules/@babel/runtime/helpers/classStaticPrivateMethodGet.js

@@ -0,0 +1,6 @@
1
+var classCheckPrivateStaticAccess = require("./classCheckPrivateStaticAccess.js");
2
+function _classStaticPrivateMethodGet(receiver, classConstructor, method) {
3
+  classCheckPrivateStaticAccess(receiver, classConstructor);
4
+  return method;
5
+}
6
+module.exports = _classStaticPrivateMethodGet, module.exports.__esModule = true, module.exports["default"] = module.exports;

+ 4 - 0
app/node_modules/@babel/runtime/helpers/classStaticPrivateMethodSet.js

@@ -0,0 +1,4 @@
1
+function _classStaticPrivateMethodSet() {
2
+  throw new TypeError("attempted to set read only static private field");
3
+}
4
+module.exports = _classStaticPrivateMethodSet, module.exports.__esModule = true, module.exports["default"] = module.exports;

+ 18 - 0
app/node_modules/@babel/runtime/helpers/construct.js

@@ -0,0 +1,18 @@
1
+var setPrototypeOf = require("./setPrototypeOf.js");
2
+var isNativeReflectConstruct = require("./isNativeReflectConstruct.js");
3
+function _construct(Parent, args, Class) {
4
+  if (isNativeReflectConstruct()) {
5
+    module.exports = _construct = Reflect.construct.bind(), module.exports.__esModule = true, module.exports["default"] = module.exports;
6
+  } else {
7
+    module.exports = _construct = function _construct(Parent, args, Class) {
8
+      var a = [null];
9
+      a.push.apply(a, args);
10
+      var Constructor = Function.bind.apply(Parent, a);
11
+      var instance = new Constructor();
12
+      if (Class) setPrototypeOf(instance, Class.prototype);
13
+      return instance;
14
+    }, module.exports.__esModule = true, module.exports["default"] = module.exports;
15
+  }
16
+  return _construct.apply(null, arguments);
17
+}
18
+module.exports = _construct, module.exports.__esModule = true, module.exports["default"] = module.exports;

+ 19 - 0
app/node_modules/@babel/runtime/helpers/createClass.js

@@ -0,0 +1,19 @@
1
+var toPropertyKey = require("./toPropertyKey.js");
2
+function _defineProperties(target, props) {
3
+  for (var i = 0; i < props.length; i++) {
4
+    var descriptor = props[i];
5
+    descriptor.enumerable = descriptor.enumerable || false;
6
+    descriptor.configurable = true;
7
+    if ("value" in descriptor) descriptor.writable = true;
8
+    Object.defineProperty(target, toPropertyKey(descriptor.key), descriptor);
9
+  }
10
+}
11
+function _createClass(Constructor, protoProps, staticProps) {
12
+  if (protoProps) _defineProperties(Constructor.prototype, protoProps);
13
+  if (staticProps) _defineProperties(Constructor, staticProps);
14
+  Object.defineProperty(Constructor, "prototype", {
15
+    writable: false
16
+  });
17
+  return Constructor;
18
+}
19
+module.exports = _createClass, module.exports.__esModule = true, module.exports["default"] = module.exports;

+ 53 - 0
app/node_modules/@babel/runtime/helpers/createForOfIteratorHelper.js

@@ -0,0 +1,53 @@
1
+var unsupportedIterableToArray = require("./unsupportedIterableToArray.js");
2
+function _createForOfIteratorHelper(o, allowArrayLike) {
3
+  var it = typeof Symbol !== "undefined" && o[Symbol.iterator] || o["@@iterator"];
4
+  if (!it) {
5
+    if (Array.isArray(o) || (it = unsupportedIterableToArray(o)) || allowArrayLike && o && typeof o.length === "number") {
6
+      if (it) o = it;
7
+      var i = 0;
8
+      var F = function F() {};
9
+      return {
10
+        s: F,
11
+        n: function n() {
12
+          if (i >= o.length) return {
13
+            done: true
14
+          };
15
+          return {
16
+            done: false,
17
+            value: o[i++]
18
+          };
19
+        },
20
+        e: function e(_e) {
21
+          throw _e;
22
+        },
23
+        f: F
24
+      };
25
+    }
26
+    throw new TypeError("Invalid attempt to iterate non-iterable instance.\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.");
27
+  }
28
+  var normalCompletion = true,
29
+    didErr = false,
30
+    err;
31
+  return {
32
+    s: function s() {
33
+      it = it.call(o);
34
+    },
35
+    n: function n() {
36
+      var step = it.next();
37
+      normalCompletion = step.done;
38
+      return step;
39
+    },
40
+    e: function e(_e2) {
41
+      didErr = true;
42
+      err = _e2;
43
+    },
44
+    f: function f() {
45
+      try {
46
+        if (!normalCompletion && it["return"] != null) it["return"]();
47
+      } finally {
48
+        if (didErr) throw err;
49
+      }
50
+    }
51
+  };
52
+}
53
+module.exports = _createForOfIteratorHelper, module.exports.__esModule = true, module.exports["default"] = module.exports;

+ 20 - 0
app/node_modules/@babel/runtime/helpers/createForOfIteratorHelperLoose.js

@@ -0,0 +1,20 @@
1
+var unsupportedIterableToArray = require("./unsupportedIterableToArray.js");
2
+function _createForOfIteratorHelperLoose(o, allowArrayLike) {
3
+  var it = typeof Symbol !== "undefined" && o[Symbol.iterator] || o["@@iterator"];
4
+  if (it) return (it = it.call(o)).next.bind(it);
5
+  if (Array.isArray(o) || (it = unsupportedIterableToArray(o)) || allowArrayLike && o && typeof o.length === "number") {
6
+    if (it) o = it;
7
+    var i = 0;
8
+    return function () {
9
+      if (i >= o.length) return {
10
+        done: true
11
+      };
12
+      return {
13
+        done: false,
14
+        value: o[i++]
15
+      };
16
+    };
17
+  }
18
+  throw new TypeError("Invalid attempt to iterate non-iterable instance.\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.");
19
+}
20
+module.exports = _createForOfIteratorHelperLoose, module.exports.__esModule = true, module.exports["default"] = module.exports;

+ 18 - 0
app/node_modules/@babel/runtime/helpers/createSuper.js

@@ -0,0 +1,18 @@
1
+var getPrototypeOf = require("./getPrototypeOf.js");
2
+var isNativeReflectConstruct = require("./isNativeReflectConstruct.js");
3
+var possibleConstructorReturn = require("./possibleConstructorReturn.js");
4
+function _createSuper(Derived) {
5
+  var hasNativeReflectConstruct = isNativeReflectConstruct();
6
+  return function _createSuperInternal() {
7
+    var Super = getPrototypeOf(Derived),
8
+      result;
9
+    if (hasNativeReflectConstruct) {
10
+      var NewTarget = getPrototypeOf(this).constructor;
11
+      result = Reflect.construct(Super, arguments, NewTarget);
12
+    } else {
13
+      result = Super.apply(this, arguments);
14
+    }
15
+    return possibleConstructorReturn(this, result);
16
+  };
17
+}
18
+module.exports = _createSuper, module.exports.__esModule = true, module.exports["default"] = module.exports;

+ 343 - 0
app/node_modules/@babel/runtime/helpers/decorate.js

@@ -0,0 +1,343 @@
1
+var toArray = require("./toArray.js");
2
+var toPropertyKey = require("./toPropertyKey.js");
3
+function _decorate(decorators, factory, superClass, mixins) {
4
+  var api = _getDecoratorsApi();
5
+  if (mixins) {
6
+    for (var i = 0; i < mixins.length; i++) {
7
+      api = mixins[i](api);
8
+    }
9
+  }
10
+  var r = factory(function initialize(O) {
11
+    api.initializeInstanceElements(O, decorated.elements);
12
+  }, superClass);
13
+  var decorated = api.decorateClass(_coalesceClassElements(r.d.map(_createElementDescriptor)), decorators);
14
+  api.initializeClassElements(r.F, decorated.elements);
15
+  return api.runClassFinishers(r.F, decorated.finishers);
16
+}
17
+function _getDecoratorsApi() {
18
+  _getDecoratorsApi = function _getDecoratorsApi() {
19
+    return api;
20
+  };
21
+  var api = {
22
+    elementsDefinitionOrder: [["method"], ["field"]],
23
+    initializeInstanceElements: function initializeInstanceElements(O, elements) {
24
+      ["method", "field"].forEach(function (kind) {
25
+        elements.forEach(function (element) {
26
+          if (element.kind === kind && element.placement === "own") {
27
+            this.defineClassElement(O, element);
28
+          }
29
+        }, this);
30
+      }, this);
31
+    },
32
+    initializeClassElements: function initializeClassElements(F, elements) {
33
+      var proto = F.prototype;
34
+      ["method", "field"].forEach(function (kind) {
35
+        elements.forEach(function (element) {
36
+          var placement = element.placement;
37
+          if (element.kind === kind && (placement === "static" || placement === "prototype")) {
38
+            var receiver = placement === "static" ? F : proto;
39
+            this.defineClassElement(receiver, element);
40
+          }
41
+        }, this);
42
+      }, this);
43
+    },
44
+    defineClassElement: function defineClassElement(receiver, element) {
45
+      var descriptor = element.descriptor;
46
+      if (element.kind === "field") {
47
+        var initializer = element.initializer;
48
+        descriptor = {
49
+          enumerable: descriptor.enumerable,
50
+          writable: descriptor.writable,
51
+          configurable: descriptor.configurable,
52
+          value: initializer === void 0 ? void 0 : initializer.call(receiver)
53
+        };
54
+      }
55
+      Object.defineProperty(receiver, element.key, descriptor);
56
+    },
57
+    decorateClass: function decorateClass(elements, decorators) {
58
+      var newElements = [];
59
+      var finishers = [];
60
+      var placements = {
61
+        "static": [],
62
+        prototype: [],
63
+        own: []
64
+      };
65
+      elements.forEach(function (element) {
66
+        this.addElementPlacement(element, placements);
67
+      }, this);
68
+      elements.forEach(function (element) {
69
+        if (!_hasDecorators(element)) return newElements.push(element);
70
+        var elementFinishersExtras = this.decorateElement(element, placements);
71
+        newElements.push(elementFinishersExtras.element);
72
+        newElements.push.apply(newElements, elementFinishersExtras.extras);
73
+        finishers.push.apply(finishers, elementFinishersExtras.finishers);
74
+      }, this);
75
+      if (!decorators) {
76
+        return {
77
+          elements: newElements,
78
+          finishers: finishers
79
+        };
80
+      }
81
+      var result = this.decorateConstructor(newElements, decorators);
82
+      finishers.push.apply(finishers, result.finishers);
83
+      result.finishers = finishers;
84
+      return result;
85
+    },
86
+    addElementPlacement: function addElementPlacement(element, placements, silent) {
87
+      var keys = placements[element.placement];
88
+      if (!silent && keys.indexOf(element.key) !== -1) {
89
+        throw new TypeError("Duplicated element (" + element.key + ")");
90
+      }
91
+      keys.push(element.key);
92
+    },
93
+    decorateElement: function decorateElement(element, placements) {
94
+      var extras = [];
95
+      var finishers = [];
96
+      for (var decorators = element.decorators, i = decorators.length - 1; i >= 0; i--) {
97
+        var keys = placements[element.placement];
98
+        keys.splice(keys.indexOf(element.key), 1);
99
+        var elementObject = this.fromElementDescriptor(element);
100
+        var elementFinisherExtras = this.toElementFinisherExtras((0, decorators[i])(elementObject) || elementObject);
101
+        element = elementFinisherExtras.element;
102
+        this.addElementPlacement(element, placements);
103
+        if (elementFinisherExtras.finisher) {
104
+          finishers.push(elementFinisherExtras.finisher);
105
+        }
106
+        var newExtras = elementFinisherExtras.extras;
107
+        if (newExtras) {
108
+          for (var j = 0; j < newExtras.length; j++) {
109
+            this.addElementPlacement(newExtras[j], placements);
110
+          }
111
+          extras.push.apply(extras, newExtras);
112
+        }
113
+      }
114
+      return {
115
+        element: element,
116
+        finishers: finishers,
117
+        extras: extras
118
+      };
119
+    },
120
+    decorateConstructor: function decorateConstructor(elements, decorators) {
121
+      var finishers = [];
122
+      for (var i = decorators.length - 1; i >= 0; i--) {
123
+        var obj = this.fromClassDescriptor(elements);
124
+        var elementsAndFinisher = this.toClassDescriptor((0, decorators[i])(obj) || obj);
125
+        if (elementsAndFinisher.finisher !== undefined) {
126
+          finishers.push(elementsAndFinisher.finisher);
127
+        }
128
+        if (elementsAndFinisher.elements !== undefined) {
129
+          elements = elementsAndFinisher.elements;
130
+          for (var j = 0; j < elements.length - 1; j++) {
131
+            for (var k = j + 1; k < elements.length; k++) {
132
+              if (elements[j].key === elements[k].key && elements[j].placement === elements[k].placement) {
133
+                throw new TypeError("Duplicated element (" + elements[j].key + ")");
134
+              }
135
+            }
136
+          }
137
+        }
138
+      }
139
+      return {
140
+        elements: elements,
141
+        finishers: finishers
142
+      };
143
+    },
144
+    fromElementDescriptor: function fromElementDescriptor(element) {
145
+      var obj = {
146
+        kind: element.kind,
147
+        key: element.key,
148
+        placement: element.placement,
149
+        descriptor: element.descriptor
150
+      };
151
+      var desc = {
152
+        value: "Descriptor",
153
+        configurable: true
154
+      };
155
+      Object.defineProperty(obj, Symbol.toStringTag, desc);
156
+      if (element.kind === "field") obj.initializer = element.initializer;
157
+      return obj;
158
+    },
159
+    toElementDescriptors: function toElementDescriptors(elementObjects) {
160
+      if (elementObjects === undefined) return;
161
+      return toArray(elementObjects).map(function (elementObject) {
162
+        var element = this.toElementDescriptor(elementObject);
163
+        this.disallowProperty(elementObject, "finisher", "An element descriptor");
164
+        this.disallowProperty(elementObject, "extras", "An element descriptor");
165
+        return element;
166
+      }, this);
167
+    },
168
+    toElementDescriptor: function toElementDescriptor(elementObject) {
169
+      var kind = String(elementObject.kind);
170
+      if (kind !== "method" && kind !== "field") {
171
+        throw new TypeError('An element descriptor\'s .kind property must be either "method" or' + ' "field", but a decorator created an element descriptor with' + ' .kind "' + kind + '"');
172
+      }
173
+      var key = toPropertyKey(elementObject.key);
174
+      var placement = String(elementObject.placement);
175
+      if (placement !== "static" && placement !== "prototype" && placement !== "own") {
176
+        throw new TypeError('An element descriptor\'s .placement property must be one of "static",' + ' "prototype" or "own", but a decorator created an element descriptor' + ' with .placement "' + placement + '"');
177
+      }
178
+      var descriptor = elementObject.descriptor;
179
+      this.disallowProperty(elementObject, "elements", "An element descriptor");
180
+      var element = {
181
+        kind: kind,
182
+        key: key,
183
+        placement: placement,
184
+        descriptor: Object.assign({}, descriptor)
185
+      };
186
+      if (kind !== "field") {
187
+        this.disallowProperty(elementObject, "initializer", "A method descriptor");
188
+      } else {
189
+        this.disallowProperty(descriptor, "get", "The property descriptor of a field descriptor");
190
+        this.disallowProperty(descriptor, "set", "The property descriptor of a field descriptor");
191
+        this.disallowProperty(descriptor, "value", "The property descriptor of a field descriptor");
192
+        element.initializer = elementObject.initializer;
193
+      }
194
+      return element;
195
+    },
196
+    toElementFinisherExtras: function toElementFinisherExtras(elementObject) {
197
+      var element = this.toElementDescriptor(elementObject);
198
+      var finisher = _optionalCallableProperty(elementObject, "finisher");
199
+      var extras = this.toElementDescriptors(elementObject.extras);
200
+      return {
201
+        element: element,
202
+        finisher: finisher,
203
+        extras: extras
204
+      };
205
+    },
206
+    fromClassDescriptor: function fromClassDescriptor(elements) {
207
+      var obj = {
208
+        kind: "class",
209
+        elements: elements.map(this.fromElementDescriptor, this)
210
+      };
211
+      var desc = {
212
+        value: "Descriptor",
213
+        configurable: true
214
+      };
215
+      Object.defineProperty(obj, Symbol.toStringTag, desc);
216
+      return obj;
217
+    },
218
+    toClassDescriptor: function toClassDescriptor(obj) {
219
+      var kind = String(obj.kind);
220
+      if (kind !== "class") {
221
+        throw new TypeError('A class descriptor\'s .kind property must be "class", but a decorator' + ' created a class descriptor with .kind "' + kind + '"');
222
+      }
223
+      this.disallowProperty(obj, "key", "A class descriptor");
224
+      this.disallowProperty(obj, "placement", "A class descriptor");
225
+      this.disallowProperty(obj, "descriptor", "A class descriptor");
226
+      this.disallowProperty(obj, "initializer", "A class descriptor");
227
+      this.disallowProperty(obj, "extras", "A class descriptor");
228
+      var finisher = _optionalCallableProperty(obj, "finisher");
229
+      var elements = this.toElementDescriptors(obj.elements);
230
+      return {
231
+        elements: elements,
232
+        finisher: finisher
233
+      };
234
+    },
235
+    runClassFinishers: function runClassFinishers(constructor, finishers) {
236
+      for (var i = 0; i < finishers.length; i++) {
237
+        var newConstructor = (0, finishers[i])(constructor);
238
+        if (newConstructor !== undefined) {
239
+          if (typeof newConstructor !== "function") {
240
+            throw new TypeError("Finishers must return a constructor.");
241
+          }
242
+          constructor = newConstructor;
243
+        }
244
+      }
245
+      return constructor;
246
+    },
247
+    disallowProperty: function disallowProperty(obj, name, objectType) {
248
+      if (obj[name] !== undefined) {
249
+        throw new TypeError(objectType + " can't have a ." + name + " property.");
250
+      }
251
+    }
252
+  };
253
+  return api;
254
+}
255
+function _createElementDescriptor(def) {
256
+  var key = toPropertyKey(def.key);
257
+  var descriptor;
258
+  if (def.kind === "method") {
259
+    descriptor = {
260
+      value: def.value,
261
+      writable: true,
262
+      configurable: true,
263
+      enumerable: false
264
+    };
265
+  } else if (def.kind === "get") {
266
+    descriptor = {
267
+      get: def.value,
268
+      configurable: true,
269
+      enumerable: false
270
+    };
271
+  } else if (def.kind === "set") {
272
+    descriptor = {
273
+      set: def.value,
274
+      configurable: true,
275
+      enumerable: false
276
+    };
277
+  } else if (def.kind === "field") {
278
+    descriptor = {
279
+      configurable: true,
280
+      writable: true,
281
+      enumerable: true
282
+    };
283
+  }
284
+  var element = {
285
+    kind: def.kind === "field" ? "field" : "method",
286
+    key: key,
287
+    placement: def["static"] ? "static" : def.kind === "field" ? "own" : "prototype",
288
+    descriptor: descriptor
289
+  };
290
+  if (def.decorators) element.decorators = def.decorators;
291
+  if (def.kind === "field") element.initializer = def.value;
292
+  return element;
293
+}
294
+function _coalesceGetterSetter(element, other) {
295
+  if (element.descriptor.get !== undefined) {
296
+    other.descriptor.get = element.descriptor.get;
297
+  } else {
298
+    other.descriptor.set = element.descriptor.set;
299
+  }
300
+}
301
+function _coalesceClassElements(elements) {
302
+  var newElements = [];
303
+  var isSameElement = function isSameElement(other) {
304
+    return other.kind === "method" && other.key === element.key && other.placement === element.placement;
305
+  };
306
+  for (var i = 0; i < elements.length; i++) {
307
+    var element = elements[i];
308
+    var other;
309
+    if (element.kind === "method" && (other = newElements.find(isSameElement))) {
310
+      if (_isDataDescriptor(element.descriptor) || _isDataDescriptor(other.descriptor)) {
311
+        if (_hasDecorators(element) || _hasDecorators(other)) {
312
+          throw new ReferenceError("Duplicated methods (" + element.key + ") can't be decorated.");
313
+        }
314
+        other.descriptor = element.descriptor;
315
+      } else {
316
+        if (_hasDecorators(element)) {
317
+          if (_hasDecorators(other)) {
318
+            throw new ReferenceError("Decorators can't be placed on different accessors with for " + "the same property (" + element.key + ").");
319
+          }
320
+          other.decorators = element.decorators;
321
+        }
322
+        _coalesceGetterSetter(element, other);
323
+      }
324
+    } else {
325
+      newElements.push(element);
326
+    }
327
+  }
328
+  return newElements;
329
+}
330
+function _hasDecorators(element) {
331
+  return element.decorators && element.decorators.length;
332
+}
333
+function _isDataDescriptor(desc) {
334
+  return desc !== undefined && !(desc.value === undefined && desc.writable === undefined);
335
+}
336
+function _optionalCallableProperty(obj, name) {
337
+  var value = obj[name];
338
+  if (value !== undefined && typeof value !== "function") {
339
+    throw new TypeError("Expected '" + name + "' to be a function");
340
+  }
341
+  return value;
342
+}
343
+module.exports = _decorate, module.exports.__esModule = true, module.exports["default"] = module.exports;

+ 12 - 0
app/node_modules/@babel/runtime/helpers/defaults.js

@@ -0,0 +1,12 @@
1
+function _defaults(obj, defaults) {
2
+  var keys = Object.getOwnPropertyNames(defaults);
3
+  for (var i = 0; i < keys.length; i++) {
4
+    var key = keys[i];
5
+    var value = Object.getOwnPropertyDescriptor(defaults, key);
6
+    if (value && value.configurable && obj[key] === undefined) {
7
+      Object.defineProperty(obj, key, value);
8
+    }
9
+  }
10
+  return obj;
11
+}
12
+module.exports = _defaults, module.exports.__esModule = true, module.exports["default"] = module.exports;

+ 8 - 0
app/node_modules/@babel/runtime/helpers/defineAccessor.js

@@ -0,0 +1,8 @@
1
+function _defineAccessor(e, r, n, t) {
2
+  var c = {
3
+    configurable: !0,
4
+    enumerable: !0
5
+  };
6
+  return c[e] = t, Object.defineProperty(r, n, c);
7
+}
8
+module.exports = _defineAccessor, module.exports.__esModule = true, module.exports["default"] = module.exports;

+ 20 - 0
app/node_modules/@babel/runtime/helpers/defineEnumerableProperties.js

@@ -0,0 +1,20 @@
1
+function _defineEnumerableProperties(obj, descs) {
2
+  for (var key in descs) {
3
+    var desc = descs[key];
4
+    desc.configurable = desc.enumerable = true;
5
+    if ("value" in desc) desc.writable = true;
6
+    Object.defineProperty(obj, key, desc);
7
+  }
8
+  if (Object.getOwnPropertySymbols) {
9
+    var objectSymbols = Object.getOwnPropertySymbols(descs);
10
+    for (var i = 0; i < objectSymbols.length; i++) {
11
+      var sym = objectSymbols[i];
12
+      var desc = descs[sym];
13
+      desc.configurable = desc.enumerable = true;
14
+      if ("value" in desc) desc.writable = true;
15
+      Object.defineProperty(obj, sym, desc);
16
+    }
17
+  }
18
+  return obj;
19
+}
20
+module.exports = _defineEnumerableProperties, module.exports.__esModule = true, module.exports["default"] = module.exports;

+ 16 - 0
app/node_modules/@babel/runtime/helpers/defineProperty.js

@@ -0,0 +1,16 @@
1
+var toPropertyKey = require("./toPropertyKey.js");
2
+function _defineProperty(obj, key, value) {
3
+  key = toPropertyKey(key);
4
+  if (key in obj) {
5
+    Object.defineProperty(obj, key, {
6
+      value: value,
7
+      enumerable: true,
8
+      configurable: true,
9
+      writable: true
10
+    });
11
+  } else {
12
+    obj[key] = value;
13
+  }
14
+  return obj;
15
+}
16
+module.exports = _defineProperty, module.exports.__esModule = true, module.exports["default"] = module.exports;

+ 0 - 0
app/node_modules/@babel/runtime/helpers/dispose.js


Niektóre pliki nie zostały wyświetlone z powodu dużej ilości zmienionych plików

tum/whitesports - Gogs: Simplico Git Service

Нет описания

handler.php 45KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360361362363364365366367368369370371372373374375376377378379380381382383384385386387388389390391392393394395396397398399400401402403404405406407408409410411412413414415416417418419420421422423424425426427428429430431432433434435436437438439440441442443444445446447448449450451452453454455456457458459460461462463464465466467468469470471472473474475476477478479480481482483484485486487488489490491492493494495496497498499500501502503504505506507508509510511512513514515516517518519520521522523524525526527528529530531532533534535536537538539540541542543544545546547548549550551552553554555556557558559560561562563564565566567568569570571572573574575576577578579580581582583584585586587588589590591592593594595596597598599600601602603604605606607608609610611612613614615616617618619620621622623624625626627628629630631632633634635636637638639640641642643644645646647648649650651652653654655656657658659660661662663664665666667668669670671672673674675676677678679680681682683684685686687688689690691692693694695696697698699700701702703704705706707708709710711712713714715716717718719720721722723724725726727728729730731732733734735736737738739740741742743744745746747748749750751752753754755756757758759760761762763764765766767768769770771772773774775776777778779780781782783784785786787788789790791792793794795796797798799800801802803804805806807808809810811812813814815816817818819820821822823824825826827828829830831832833834835836837838839840841842843844845846847848849850851852853854855856857858859860861862863864865866867868869870871872873874875876877878879880881882883884885886887888889890891892893894895896897898899900901902903904905906907908909910911912913914915916917918919920921922923924925926927928929930931932933934935936937938939940941942943944945946947948949950951952953954955956957958959960961962963964965966967968969970971972973974975976977978979980981982983984985986987988989990991992993994995996997998999100010011002100310041005100610071008100910101011101210131014101510161017101810191020102110221023102410251026102710281029103010311032103310341035103610371038103910401041104210431044104510461047104810491050105110521053105410551056105710581059106010611062106310641065106610671068106910701071107210731074107510761077107810791080108110821083108410851086108710881089109010911092109310941095109610971098109911001101110211031104110511061107110811091110111111121113111411151116111711181119112011211122112311241125112611271128112911301131113211331134113511361137113811391140114111421143114411451146114711481149115011511152115311541155115611571158115911601161116211631164116511661167116811691170117111721173117411751176117711781179118011811182118311841185118611871188118911901191119211931194119511961197119811991200120112021203120412051206120712081209121012111212121312141215121612171218121912201221122212231224122512261227122812291230123112321233123412351236123712381239
  1. <?php
  2. /**
  3. * Copy & Delete Posts – Post requests handler file.
  4. *
  5. * @package CDP
  6. * @subpackage PostHandler
  7. * @author CopyDeletePosts
  8. * @since 1.0.0
  9. * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * */
  10. /** –– **\
  11. * Main handler + It will also sanitize and verify that request a little bit.
  12. * @since 1.0.0
  13. */
  14. add_action('wp_ajax_cdp_action_handling', function () {
  15. if (isset($_SERVER['HTTP_X_REQUESTED_WITH']) && strtolower($_SERVER['HTTP_X_REQUESTED_WITH']) === 'xmlhttprequest') {
  16. if (isset($_POST['token']) && $_POST['token'] == 'cdp' && isset($_POST['f']) && is_admin()) {
  17. // Expand execution time
  18. if (intval(ini_get('max_execution_time')) < 7200)
  19. set_time_limit(0);
  20. // Get WP-Plugin path
  21. $premium_plugin = 'copy-delete-posts-premium/copy-delete-posts-premium.php';
  22. $premium_dir = WP_PLUGIN_DIR . '/' . 'copy-delete-posts-premium';
  23. $pplugin_path = $premium_dir . '/handler/premium.php';
  24. // Load premium content if the plugin is here
  25. if (is_dir($premium_dir) && is_plugin_active($premium_plugin))
  26. require_once($pplugin_path);
  27. // Is premium function
  28. $areWePro = is_plugin_active($premium_plugin);
  29. // Get user roles and check if the role is permmited to use plugin
  30. $access = false;
  31. $current_user = wp_get_current_user();
  32. $access_roles = get_option('_cdp_globals');
  33. if (!isset($access_roles['roles']))
  34. $access_roles = array();
  35. foreach ($current_user->roles as $role => $name)
  36. if ($name == 'administrator' || (isset($access_roles['roles'][$name]) && $access_roles['roles'][$name] == 'true')) {
  37. $access = true;
  38. break;
  39. }
  40. // Check user permission
  41. if ($access === true) {
  42. // Pointers
  43. if ($_POST['f'] == 'no_intro')
  44. cdp_add_new_no_intro();
  45. else if ($_POST['f'] == 'intro_again')
  46. cdp_add_new_intro();
  47. else if ($_POST['f'] == 'save_options')
  48. cdp_save_plugin_options($areWePro);
  49. else if ($_POST['f'] == 'copy_post')
  50. cdp_insert_new_post($areWePro);
  51. else if ($_POST['f'] == 'get_settings')
  52. cdp_get_profile();
  53. else if ($_POST['f'] == 'get_all_settings')
  54. cdp_get_all_profiles();
  55. else if ($_POST['f'] == 'save_profiles' && $areWePro)
  56. cdp_save_profile_set();
  57. else if ($_POST['f'] == 'get_all_posts')
  58. cdp_get_all_posts();
  59. else if ($_POST['f'] == 'delete_them')
  60. cdp_delete_posts();
  61. else if ($_POST['f'] == 'get_formatted_time' && $areWePro)
  62. cdp_formatted_time();
  63. else if ($_POST['f'] == 'set_default_profile')
  64. cdp_set_default_profile();
  65. else if ($_POST['f'] == 'get_default_profile')
  66. cdp_get_default_profile();
  67. else if ($_POST['f'] == 'clear_crons')
  68. cdp_clear_all_crons();
  69. else if ($_POST['f'] == 'i_saw_this_noti')
  70. cdp_set_noti_as_seen();
  71. else if ($_POST['f'] == 'try_to_hide_the_tasks')
  72. cdp_just_hide_task();
  73. else if ($_POST['f'] == 'try_to_kill_the_tasks')
  74. cdp_just_kill_task();
  75. else if ($_POST['f'] == 'give_me_current_tasks')
  76. cdp_just_get_tasks();
  77. else if ($_POST['f'] == 'hide_cron_notice')
  78. cdp_hide_perf_notice();
  79. else if ($_POST['f'] == 'review_dismiss')
  80. cdp_review();
  81. else if ($_POST['f'] == 'debug_function')
  82. cdp_debug_function();
  83. else if ($_POST['f'] == 'delete_success_img')
  84. delete_option('_cdp_show_copy');
  85. else if ($_POST['f'] == 'save_redi_state' && $areWePro)
  86. cdpp_save_redi_state();
  87. else if ($_POST['f'] == 'multi_redi_importer' && $areWePro)
  88. cdpp_redis_importer();
  89. else if ($_POST['f'] == 'save_redirections' && $areWePro)
  90. cdpp_save_redirections();
  91. else if ($_POST['f'] == 'delete_redirect' && $areWePro)
  92. cdpp_delete_redirection();
  93. else if ($_POST['f'] == 'switch_redirects' && $areWePro)
  94. cdpp_switch_redirects();
  95. else if ($_POST['f'] == 'get_authors' && $areWePro)
  96. cdpp_get_authors();
  97. else if ($_POST['f'] == 'get_curr_time' && $areWePro)
  98. cdpp_get_curr_s_time();
  99. else if ($_POST['f'] == 'get_post_export' && $areWePro)
  100. cdpp_get_for_export();
  101. else if ($_POST['f'] == 'import_posts' && $areWePro)
  102. cdpp_take_for_import();
  103. else if ($_POST['f'] == 'save_aci' && $areWePro)
  104. cdpp_save_cleanup_settings();
  105. else if ($_POST['f'] == 'get_aci' && $areWePro)
  106. cdpp_get_cleanup_settings();
  107. else if ($_POST['f'] == 'turn_off_aci' && $areWePro)
  108. cdpp_turn_the_acii_off();
  109. else if ($_POST['f'] == 'i_love_squirrels' && $areWePro)
  110. cdpp_squirrel();
  111. else
  112. echo 'error';
  113. } else
  114. echo 'error';
  115. } else
  116. echo 'no_access';
  117. } else
  118. echo 'no_access';
  119. wp_die();
  120. });
  121. /** –– * */
  122. /** –– **\
  123. * This function will be fired when user don't want to see intro – never again.
  124. * @since 1.0.6
  125. */
  126. function cdp_review() {
  127. // Option
  128. $method = sanitize_text_field($_POST['decision']);
  129. // Get user id and array from db
  130. $user_id = get_current_user_id();
  131. $already = get_option('_cdp_review', false);
  132. // Create if not exists
  133. if ($already == false)
  134. $already = array('installed' => time(), 'users' => array());
  135. // Set dismiss
  136. $already['users'][$user_id] = array();
  137. $already['users'][$user_id]['dismiss'] = (($method == 'remind') ? time() : true);
  138. // Add option to datbase if not exit.
  139. $opt = update_option('_cdp_review', $already);
  140. // Return success
  141. echo json_encode(array('status' => 'success'));
  142. }
  143. /** –– * */
  144. /** –– **\
  145. * This function will be fired when user don't want to see intro – never again.
  146. * @since 1.0.0
  147. */
  148. function cdp_add_new_no_intro() {
  149. // Get user id and array from db
  150. $user_id = get_current_user_id();
  151. $already = get_option('_cdp_no_intro');
  152. // Check if it's first time that user checked this option.
  153. if (!$already)
  154. $already = array($user_id);
  155. // If it already exists just add another user.
  156. else if (!in_array($user_id, $already))
  157. array_push($already, $user_id);
  158. // If the user already exists exit.
  159. else
  160. exit;
  161. // Add option to datbase if not exit.
  162. $opt = update_option('_cdp_no_intro', $already);
  163. }
  164. /** –– * */
  165. /** –– **\
  166. * This function will be fired when user want to see intro – again.
  167. * @since 1.0.0
  168. */
  169. function cdp_add_new_intro() {
  170. // Get user id and array from db
  171. $user_id = get_current_user_id();
  172. $already = get_option('_cdp_no_intro');
  173. // Check if it's first time that user checked this option.
  174. if ($already && in_array($user_id, $already))
  175. unset($already[array_search($user_id, $already, true)]);
  176. // If the user no exists exit.
  177. else
  178. exit;
  179. // Add option to database if not exit.
  180. $opt = update_option('_cdp_no_intro', $already);
  181. }
  182. /** –– * */
  183. /** –– **\
  184. * This function will be fired when user want to save plugin options – again.
  185. * @since 1.0.0
  186. */
  187. function cdp_save_plugin_options($areWePro) {
  188. // Get the info about our professionalness
  189. $areWePro = $areWePro;
  190. // Get new options and current profile.
  191. $options = ((isset($_POST['options'])) ? cdp_sanitize_array($_POST['options']) : false);
  192. $entire = ((isset($_POST['entire'])) ? cdp_sanitize_array($_POST['entire']) : false);
  193. $profile = ((isset($_POST['profile'])) ? sanitize_text_field($_POST['profile']) : false);
  194. // Get current options and profiles.
  195. $a_or = get_option('_cdp_profiles');
  196. $already = get_option('_cdp_profiles');
  197. $g_or = get_option('_cdp_globals');
  198. $globals = get_option('_cdp_globals');
  199. // Check if it's first time – create array.
  200. if (!is_array($already))
  201. $already = array();
  202. if (!is_array($globals))
  203. $globals = array();
  204. // Add display name for this profile
  205. $profile = preg_replace('/\s+/', '_', trim(strtolower($profile)));
  206. // Write new settings for this profile.
  207. $already[$profile] = $options;
  208. $already[$profile]['usmplugin'] = 'false';
  209. $already[$profile]['yoast'] = 'false';
  210. $already[$profile]['woo'] = 'false';
  211. if ($areWePro)
  212. $already[$profile] = cdpp_filter_premium_opts($already, $options, $profile);
  213. if (!isset($already[$profile]['names']['display']) || (strlen(trim($already[$profile]['names']['display'])) <= 0))
  214. $already[$profile]['names']['display'] = $profile;
  215. $globals = $entire;
  216. // Check if there is default profile
  217. if (!array_key_exists('default', $already) || !array_key_exists('title', $already['default'])) {
  218. $already['default'] = array();
  219. if (function_exists('cdp_default_options'))
  220. $already['default'] = cdp_default_options();
  221. if (function_exists('cdp_default_global_options'))
  222. $globals['others'] = cdp_default_global_options();
  223. }
  224. // Add new options to database.
  225. $s1 = update_option('_cdp_globals', $globals);
  226. $s2 = update_option('_cdp_profiles', $already);
  227. // Check if success while uploading
  228. if (($s1 || $s2) || ($globals == $g_or) || ($already == $a_or))
  229. echo 'success';
  230. else
  231. echo 'error';
  232. }
  233. /** –– * */
  234. /** –– **\
  235. * This function will be fired when user want to save plugin options – again.
  236. * @since 1.0.0
  237. */
  238. function cdp_insert_new_post($areWePro = false) {
  239. // Performance copy time start
  240. $timein = microtime(true);
  241. // Create output array which will be returned to requester
  242. $output = array('status' => 'success');
  243. // Get ID(s) of post(s)
  244. $ids = ((isset($_POST['id'])) ? cdp_sanitize_array($_POST['id']) : false);
  245. // Get all important pieces of information from requester
  246. $data = ((isset($_POST['data'])) ? cdp_sanitize_array($_POST['data']) : false);
  247. $site = isset($_POST['data']['site']) ? sanitize_text_field($_POST['data']['site']) : false;
  248. $times = isset($_POST['data']['times']) ? sanitize_text_field($_POST['data']['times']) : 1;
  249. $swap = isset($_POST['data']['swap']) ? sanitize_text_field($_POST['data']['swap']) : false;
  250. $profile = isset($_POST['data']['profile']) ? sanitize_text_field($_POST['data']['profile']) : 'default';
  251. $origin = isset($_POST['origin']) ? sanitize_text_field($_POST['origin']) : false;
  252. $custom = isset($_POST['data']['custom']) ? cdp_sanitize_array($_POST['data']['custom']) : false;
  253. // Load default options for selected profile
  254. $defaults = get_option('_cdp_profiles')[$profile];
  255. // Settings for this copy
  256. $settings = (($data['type'] != 'copy-quick' && $custom != false) ? $custom : $defaults);
  257. if (!isset($settings['names']))
  258. $settings['names'] = $defaults['names'];
  259. // Convert string to boolean – only for much less code later
  260. foreach ($settings as $setting => $val)
  261. if ($setting != 'names')
  262. $settings[$setting] = (($val == 'true') ? true : false);
  263. /**
  264. * This local function filters post data by user settings
  265. * @param $post (array of wordpress post/page data)
  266. * @param $settings (array of preselected settings of profile or by user)
  267. * @return array with insert ready values for wordpress post || false on wrong $post
  268. */
  269. function cdp_filter_post($post, $swap, $opt, $settings, $taxonomies = false, $areWePro) {
  270. // If $post has wrong format return false
  271. if (!(is_array($post) || is_object($post)))
  272. return false;
  273. // Array for formatted and prepared taxonomy
  274. $ft = array();
  275. $buin = array('link_category', 'nav_menu', 'post_tag', 'category', 'post_format');
  276. // Loop thorugh all taxonomies from post
  277. foreach ($taxonomies as $taxonomy) {
  278. // Set the name to shorted variable
  279. $tn = $taxonomy->taxonomy;
  280. // Check if it's private taxonomy and if it's set in options
  281. if ($tn == 'link_category' && !$settings['link_category'])
  282. continue;
  283. if ($tn == 'nav_menu' && !$settings['nav_menu'])
  284. continue;
  285. if ($tn == 'post_tag' && !$settings['post_tag'])
  286. continue;
  287. if ($tn == 'category' && !$settings['category'])
  288. continue;
  289. if ($tn == 'post_format' && !$settings['format'])
  290. continue;
  291. // Don't copy custom taxonomy if it's not checked
  292. if (!in_array($tn, $buin) && !$settings['taxonomy'])
  293. continue;
  294. // Push next term of existing taxonomy
  295. if (isset($ft[$tn]))
  296. array_push($ft[$tn], $taxonomy->term_id);
  297. // Create new taxonomy and push new term
  298. else {
  299. $ft[$tn] = array();
  300. array_push($ft[$tn], $taxonomy->term_id);
  301. }
  302. }
  303. // Create array with required values and contant values
  304. $new = array(
  305. 'post_title' => ($settings['title'] ? cdp_create_title($post['post_title'], $settings['names'], $post['ID'], $areWePro) : __('Untitled Copy', 'copy-delete-posts')),
  306. 'post_date' => ($settings['date'] ? $post['post_date'] : current_time('mysql')),
  307. 'post_status' => ($settings['status'] ? $post['post_status'] : 'draft'),
  308. 'post_author' => ($settings['author'] ? $post['post_author'] : wp_get_current_user()->ID),
  309. 'post_content' => ($settings['content']) ? $post['post_content'] : ' ',
  310. 'comment_status' => $post['comment_status'], // that's additional element which cannot be edited by user
  311. 'post_parent' => $post['post_parent'] // that's additional element which cannot be edited by user
  312. );
  313. // Converter
  314. if ((($opt == '2' && $swap == 'true') || $swap == 'true') && $areWePro && function_exists('cdpp_post_converter'))
  315. $new['post_type'] = cdpp_post_converter($post['post_type']);
  316. else
  317. $new['post_type'] = $post['post_type'];
  318. // Add optional values of post – depending on settings
  319. if ($settings['slug'])
  320. $new['post_name'] = $post['post_name'];
  321. if ($settings['excerpt'])
  322. $new['post_excerpt'] = $post['post_excerpt'];
  323. if ($settings['template'])
  324. $new['page_template'] = $post['page_template'];
  325. if ($settings['password'])
  326. $new['post_password'] = $post['post_password'];
  327. if ($settings['menu_order'])
  328. $new['menu_order'] = $post['menu_order'];
  329. if ($settings['category'])
  330. $new['post_category'] = $post['post_category'];
  331. if ($settings['post_tag'])
  332. $new['tags_input'] = $post['tags_input'];
  333. if ($taxonomies != false)
  334. $new['tax_input'] = $ft;
  335. // Return filtered data of current post
  336. return $new;
  337. }
  338. /**
  339. * This local function filters post data by user settings
  340. * @param $metas (array of wordpress post/page meta data)
  341. * @param $settings (array of preselected settings of profile or by user)
  342. * @return array with metadata values for post || false on wrong $metas
  343. */
  344. function cdp_filter_meta($metas, $settings, $id, $areWePro, $site, $title) {
  345. // If $metas has wrong format return false
  346. if (!(is_array($metas) || is_object($metas)))
  347. return false;
  348. // Create empty array for filtered meta data
  349. $prepared = array(
  350. // Add or replace ours copy tracker
  351. array('_cdp_origin' => $id),
  352. array('_cdp_origin_site' => $site),
  353. array('_cdp_origin_title' => $title),
  354. array('_cdp_counter' => '0')
  355. );
  356. // Iterate through every meta index
  357. foreach ($metas as $meta => $vals) {
  358. // Conditions
  359. $a = ($areWePro && function_exists('cdpp_check_yoast')) ? cdpp_check_yoast($settings, $meta) : false;
  360. $b = ($areWePro && function_exists('cdpp_check_usm')) ? cdpp_check_usm($settings, $meta) : false;
  361. $c = ($areWePro && function_exists('cdpp_check_woo')) ? cdpp_check_woo($settings, $meta, $id) : false;
  362. $d = ($settings['f_image'] && $meta == '_thumbnail_id') ? true : false;
  363. $e = (mb_substr($meta, 0, 4) == '_wp_') ? true : false;
  364. $f = ($meta == '_thumbnail_id' && $settings['f_image']) ? true : false;
  365. $g = ($meta == '_cdp_origin') ? true : false;
  366. $h = (mb_substr($meta, 0, 11) == '_elementor_') ? true : false;
  367. // $i = (isset($settings['all_metadata']) && $settings['all_metadata'] == 'true') ? true : false;
  368. // If any of above condition is true pass the meta tag
  369. if ($a || $b || $c || $d || $e || $f || $g || $h /*|| $i*/) {
  370. // Prepare data and insert filtered to results
  371. foreach ($vals as $val)
  372. array_push($prepared, array($meta => $val));
  373. } else {
  374. // error_log(print_r($vals, true));
  375. }
  376. }
  377. // Return results
  378. return $prepared;
  379. }
  380. /**
  381. * This local function format title by user settings
  382. * @param $title (string)
  383. * @param $settings (array of name settings preselected in profile)
  384. * @return string formated title
  385. */
  386. function cdp_create_title($title, $settings, $id, $areWePro) {
  387. // Date formats
  388. $date_format = intval($settings['format']);
  389. // Get right format
  390. if ($date_format == 1)
  391. $date_format = 'm/d/Y';
  392. else if ($date_format == 2)
  393. $date_format = 'd/m/Y';
  394. else {
  395. if ($areWePro && function_exists('cdpp_custom_date'))
  396. $date_format = cdpp_custom_date($settings);
  397. else
  398. $date_format = 'd/m/Y';
  399. }
  400. // Create date and time replacements
  401. $curr = current_time('timestamp', true);
  402. $date = date($date_format, $curr);
  403. $time = date('H:i:s', $curr);
  404. // Concat whole title with prefix and suffix
  405. $new_title = $settings['prefix'] . ' ' . $title . ' ' . $settings['suffix'];
  406. // Make replace of placeholders
  407. $new_title = str_replace('[CurrentDate]', $date, $new_title);
  408. $new_title = str_replace('[CurrentTime]', $time, $new_title);
  409. // Return formatted title
  410. return $new_title;
  411. }
  412. /**
  413. * This local function inserts whole post into database
  414. * @param $data (array prepared by cdp_filter_post function)
  415. * @param $times (int how many times should this function copy post)
  416. * @return array of new inserted post(s) and error status
  417. * Structure of return array: { ids: [$ids], error: (count of errors) }
  418. */
  419. function cdp_insert_post($id, $data, $times, $areWePro, $isChild = false, $p_ids = null, $site) {
  420. // Get Wordpress database
  421. global $wpdb;
  422. // Create empty array for new id(s) and error(s)
  423. $results = array('ids' => array(), 'error' => 0, 'counter' => 0);
  424. // Prevent SQL injection
  425. if (!is_numeric($id)) {
  426. echo json_encode(array('status' => 'error', 'message' => __('Invalid ID argument.', 'copy-delete-posts')));
  427. exit;
  428. }
  429. // And just in case
  430. $id = esc_sql(intval($id));
  431. // Get Counter value
  432. $prefix = (($site != -1) ? $wpdb->get_blog_prefix($site) : $wpdb->get_blog_prefix());
  433. $newestId = $wpdb->get_results("SELECT post_id FROM {$prefix}postmeta WHERE meta_key = '_cdp_origin' AND meta_value = {$id} ORDER BY post_id DESC LIMIT 1", ARRAY_A);
  434. $newestId = ((array_key_exists(0, $newestId)) ? (intval($newestId[0]['post_id'])) : false);
  435. if (isset($newestId) && $newestId != false && $newestId > 0)
  436. $counter = $wpdb->get_results("SELECT meta_value AS 'Counter' FROM {$prefix}postmeta WHERE meta_key = '_cdp_counter' AND post_id = {$newestId} ORDER BY post_id DESC", ARRAY_A)[0]['Counter'];
  437. else
  438. $counter = 1;
  439. $base_title = $data['post_title'];
  440. $counter = intval($counter) + 1;
  441. // Handle multisite for premium
  442. if ($areWePro && function_exists('cdpp_handle_multisite'))
  443. cdpp_handle_multisite($site);
  444. // Loop for each post iteration
  445. for ($i = 0; $i < $times; ++$i) {
  446. // Change parent if it's child
  447. if ($isChild)
  448. $data['post_parent'] = $p_ids['posts'][$i];
  449. // Replace title with Counter if multiple copies
  450. $data['post_title'] = str_replace('[Counter]', ($counter + $i), $base_title);
  451. // Insert post with filtered data
  452. $new = wp_insert_post($data, true);
  453. // Check if the post is inserted successfully and append array
  454. if (is_numeric($new))
  455. array_push($results['ids'], $new);
  456. else
  457. $results['error'] ++;
  458. }
  459. // Handle multisite for premium fix
  460. if ($areWePro && function_exists('cdpp_handle_multisite_after'))
  461. cdpp_handle_multisite_after($site);
  462. // Set first counter number for future
  463. $results['counter'] = $counter;
  464. // Return array with results
  465. return $results;
  466. }
  467. /**
  468. * This local function filter and adds missing meta to added post
  469. * @param $ids (array of post ids)
  470. * @param $metas (filtered meta data with cdp_filter_meta function)
  471. * @return array structure below
  472. * { ids: { [id] => [failed times]}, error: { [id] => [failed times]} }
  473. */
  474. function cdp_insert_post_meta($ids, $metas, $areWePro, $counter, $site) {
  475. // Handle multisite for premium
  476. if ($areWePro && function_exists('cdpp_handle_multisite'))
  477. cdpp_handle_multisite($site);
  478. // Create empty array for new id(s) and error(s)
  479. $results = array('ids' => array(), 'error' => array());
  480. // Iterate through every inserted post
  481. foreach ($ids as $id) {
  482. // Iterate through every meta tag
  483. foreach ($metas as $meta_id => $meta) {
  484. // Get individual data from metas array
  485. foreach ($meta as $key => $val) {
  486. // Replace the counter with dynamic value
  487. if ($key == '_cdp_counter')
  488. $val = $counter;
  489. // Insert meta tag
  490. $res = add_post_meta($id, $key, $val);
  491. // Check if the insert was successfull
  492. if ($res != false) {
  493. if (!isset($results['ids'][$id]))
  494. $results['ids'][$id] = [];
  495. array_push($results['ids'][$id], array($key, $val));
  496. } else {
  497. if (!isset($results['error'][$id]))
  498. $results['error'][$id] = [];
  499. array_push($results['error'][$id], array($key, $val));
  500. }
  501. }
  502. }
  503. // Iterate the counter
  504. $counter++;
  505. }
  506. // Fix multisite handler
  507. if ($areWePro && function_exists('cdpp_handle_multisite_after'))
  508. cdpp_handle_multisite_after($site);
  509. // Return the results
  510. return $results;
  511. }
  512. /**
  513. * This local function search for childs and catch their IDs
  514. * @param $id string/int (post id)
  515. * @return array of child(s) ID(s)
  516. */
  517. function cdp_check_childs($id) {
  518. $childs = [];
  519. $childrens = get_children(array('post_parent' => $id));
  520. foreach ($childrens as $i => $child)
  521. array_push($childs, $child->ID);
  522. return $childs;
  523. }
  524. /**
  525. * This local function copies original attachments
  526. * @param $path string (path to original file)
  527. * @return string path to new file
  528. */
  529. function cdp_copy_attachment($path = '', $destination) {
  530. if ($path == '')
  531. return false;
  532. $dirname = $destination;
  533. $name = basename($path);
  534. $actual_name = pathinfo($name, PATHINFO_FILENAME);
  535. $original_name = $actual_name;
  536. $extension = pathinfo($name, PATHINFO_EXTENSION);
  537. $i = 1;
  538. while (file_exists($dirname . '/' . $actual_name . "." . $extension)) {
  539. $actual_name = (string) $original_name . '-' . $i;
  540. $name = $actual_name . '.' . $extension;
  541. $i++;
  542. }
  543. copy($path, $dirname . '/' . $name);
  544. return $dirname . '/' . $name;
  545. }
  546. /**
  547. * This local function gets copy and insert attachments
  548. * @param $id int/string of post
  549. * @return array of inserted attachments
  550. */
  551. function cdp_insert_attachments($id, $inserted_posts, $areWePro, $site) {
  552. $inserts = array();
  553. $media = get_attached_media('', $id);
  554. // Handle multisite for premium
  555. if ($areWePro && function_exists('cdpp_handle_multisite'))
  556. cdpp_handle_multisite($site);
  557. // Fix wordpress multisite path
  558. add_filter('upload_dir', 'cdp_fix_upload_paths');
  559. $wp_upload_dir = wp_upload_dir();
  560. remove_filter('upload_dir', 'cdp_fix_upload_paths');
  561. // Handle multisite for premium fix
  562. if ($areWePro && function_exists('cdpp_handle_multisite_after'))
  563. cdpp_handle_multisite_after($site);
  564. foreach ($media as $i => $m) {
  565. if (get_attached_file($m->ID) == '')
  566. continue;
  567. $path = cdp_copy_attachment(get_attached_file($m->ID), $wp_upload_dir['path']);
  568. $filename = $path;
  569. $parent_post_id = $inserted_posts['ids'][0];
  570. $filetype = wp_check_filetype(basename($filename), null);
  571. // Handle multisite for premium
  572. if ($areWePro && function_exists('cdpp_handle_multisite'))
  573. cdpp_handle_multisite($site);
  574. $attachment = array(
  575. 'guid' => $wp_upload_dir['url'] . '/' . basename($filename),
  576. 'post_mime_type' => $filetype['type'],
  577. 'post_title' => preg_replace('/\.[^.]+$/', '', basename($filename)),
  578. 'post_content' => '',
  579. 'post_status' => 'inherit'
  580. );
  581. $attach_id = wp_insert_attachment($attachment, $filename, $parent_post_id);
  582. array_push($inserts, array('url' => wp_get_attachment_url($attach_id), 'id' => $attach_id));
  583. $attach_data = wp_generate_attachment_metadata($attach_id, $filename);
  584. wp_update_attachment_metadata($attach_id, $attach_data);
  585. // Handle multisite for premium fix
  586. if ($areWePro && function_exists('cdpp_handle_multisite_after'))
  587. cdpp_handle_multisite_after($site);
  588. }
  589. return $inserts;
  590. }
  591. /**
  592. * This local function gets comments and copy them
  593. * @param $id int/string of base post
  594. * @param $dests array of post ids where the comms from $id should be copied
  595. * @return array of inserted comments
  596. */
  597. function cdp_copy_comments($id, $dests) {
  598. $comments = get_comments(array('post_id' => $id));
  599. $curr = current_time('mysql');
  600. $all_inserts = array();
  601. $all_inserts['fix_try'] = array();
  602. $all_inserts['olds'] = '';
  603. foreach ($dests as $dest) {
  604. $p = 0;
  605. $olds = array();
  606. $cm1 = $comments;
  607. foreach ($cm1 as $i => $c) {
  608. $c = $c->to_array();
  609. $old_id = $c['comment_ID'];
  610. $parent = $c['comment_parent'];
  611. $c['comment_date'] = $curr;
  612. $c['comment_date_gmt'] = $curr;
  613. $c['comment_post_ID'] = $dest;
  614. $c['comment_parent'] = 0;
  615. if ($parent != "0")
  616. $p++;
  617. $new_id = @wp_insert_comment($c);
  618. $olds[$old_id] = array('new' => $new_id, 'old_parent_id' => $parent);
  619. array_push($all_inserts, array('old' => $old_id, 'new' => $new_id, 'parent' => $parent));
  620. }
  621. if ($p != 0) {
  622. $cm2 = $comments;
  623. foreach ($cm2 as $j => $m) {
  624. if ($m->comment_parent != "0" && $olds[$m->comment_ID]['old_parent_id'] == $m->comment_parent) {
  625. $post = get_comment($olds[$m->comment_ID]['new']);
  626. $post = $post->to_array();
  627. $post['comment_parent'] = $olds[$m->comment_parent]['new'];
  628. wp_update_comment($post);
  629. }
  630. }
  631. }
  632. }
  633. return $all_inserts;
  634. }
  635. // Main code for this duplication – for each id (post) do whole process
  636. function cdp_process_ids($ids, $swap, $settings, $times, $site, $areWePro, $g, $isChild = false, $p_ids = null) {
  637. // Make it clear
  638. $globals = cdp_default_global_options();
  639. if ($g != false)
  640. $globals = $g;
  641. $g = $globals['others'];
  642. // Return data storage
  643. $output = [];
  644. $new_posts = array('parents' => array(), 'childs' => array(), 'ids' => array());
  645. // Iterate each id
  646. foreach ($ids as $id) {
  647. // Get post data and meta data
  648. $post = get_post($id)->to_array();
  649. $meta = get_post_custom($id);
  650. $taxonomies = wp_get_object_terms($id, get_taxonomies());
  651. // Check if this post type is allowed to copy
  652. $type = $post['post_type'];
  653. if ($g['cdp-content-pages'] == 'false' && $type == 'page')
  654. continue;
  655. if ($g['cdp-content-posts'] == 'false' && $type == 'post')
  656. continue;
  657. if ($g['cdp-content-custom'] == 'false' && ($type != 'page' && $type != 'post'))
  658. continue;
  659. // Post converting?
  660. $pConv = false;
  661. if (array_key_exists('postConverter', $globals))
  662. $pConv = $globals['postConverter'];
  663. // Run process and validate response
  664. $childrens = cdp_check_childs($id); // if sizeof($this) == has childs
  665. $post_data = cdp_filter_post($post, $swap, $pConv, $settings, $taxonomies, $areWePro, $swap); // can be false
  666. $meta_data = cdp_filter_meta($meta, $settings, $id, $areWePro, $site, $post_data['post_title']); // can be false
  667. $inserted_posts = cdp_insert_post($id, $post_data, $times, $areWePro, $isChild, $p_ids, $site); // $res['error'] must be == 0
  668. $inserted_metas = cdp_insert_post_meta($inserted_posts['ids'], $meta_data, $areWePro, $inserted_posts['counter'], $site); // sizeof($res['error']) must be == 0
  669. // Comments copy
  670. if ($settings['comments'])
  671. $inserted_comments = cdp_copy_comments($id, $inserted_posts['ids']);
  672. $cms = get_comments(array('post_id' => $id));
  673. // Post format
  674. if ($settings['format'])
  675. foreach ($inserted_posts['ids'] as $i => $tid)
  676. $isReFormat = set_post_format($tid, get_post_format($id));
  677. // Featured image copy
  678. if ($settings['attachments'])
  679. $inserted_attachments = cdp_insert_attachments($id, $inserted_posts, $areWePro, $site);
  680. else
  681. $inserted_attachments = false;
  682. // Copy childrens recursively if exist
  683. if ($settings['children'] && sizeof($childrens) > 0) {
  684. $child_helpers = array('posts' => $inserted_posts['ids']);
  685. $inserted_childs = cdp_process_ids($childrens, $swap, $settings, $times, $site, $areWePro, $globals, true, $child_helpers);
  686. array_push($new_posts['childs'], array($id => $inserted_childs['$new_posts']['ids']));
  687. }
  688. // Add new inserted IDs
  689. foreach ($inserted_posts['ids'] as $i_id)
  690. array_push($new_posts['parents'], $i_id);
  691. // Merge for easier read
  692. $new_posts['ids'] = array_merge($new_posts['ids'], $new_posts['parents'], $new_posts['childs']);
  693. }
  694. // Return all data to main request
  695. return array('$output' => $output, '$new_posts' => $new_posts);
  696. }
  697. // Run the machine for selected post(s)
  698. $g = get_option('_cdp_globals', false);
  699. $new_insertions = cdp_process_ids($ids, $swap, $settings, $times, $site, $areWePro, $g);
  700. // Handle multisite for premium
  701. if ($areWePro && function_exists('cdpp_handle_multisite'))
  702. cdpp_handle_multisite($site);
  703. $pConv = false;
  704. if (array_key_exists('postConverter', $g) && $areWePro)
  705. $pConv = (($g['postConverter'] === '2' || $g['postConverter'] === 2) ? true : false);
  706. // Output link if it's edited post
  707. $aCop = ((array_key_exists('afterCopy', $g)) ? $g['afterCopy'] : '1');
  708. if (($data['type'] == 'copy-custom-link' || $aCop == '2'))
  709. $output['link'] = get_edit_post_link($new_insertions['$new_posts']['parents'][0], 'x');
  710. if ($pConv == true && !($data['type'] == 'copy-custom-link' || $aCop == '2'))
  711. $output['link'] = 'pConv';
  712. else
  713. update_option('_cdp_show_copy', true);
  714. // Handle multisite for premium fix
  715. if ($areWePro && function_exists('cdpp_handle_multisite_after'))
  716. cdpp_handle_multisite_after($site);
  717. // Check performance by time
  718. $copyTime = microtime(true) - $timein;
  719. $copyTimePerOne = $copyTime / $times;
  720. // Set only if had good performance all the time
  721. $isSlowPerf = true;
  722. if (get_option('cdp_latest_slow_performance', false) == false) {
  723. $isSlowPerf = false;
  724. }
  725. // Check if the copy time of one page was slower than 0.051 of second
  726. if ($copyTimePerOne > 0.051) {
  727. $isSlowPerf = true;
  728. }
  729. // Set the performance status
  730. update_option('cdp_latest_slow_performance', $isSlowPerf);
  731. // Update history with logs
  732. $logs = get_option('cdp_copy_logs_times', array());
  733. if (sizeof($logs) >= 50) {
  734. $logs = array_slice($logs, 0, 48);
  735. }
  736. $logs = array_values($logs);
  737. array_unshift($logs, array('amount' => $times, 'time' => $copyTime, 'perOne' => $copyTimePerOne, 'data' => time(), 'memory' => memory_get_usage(), 'peak' => memory_get_peak_usage(true)));
  738. update_option('cdp_copy_logs_times', $logs);
  739. echo json_encode(cdp_sanitize_array($output));
  740. }
  741. /** –– * */
  742. /** –– **\
  743. * This function will return profile information for presets.
  744. * @return object of settings by requested profile
  745. * @since 1.0.0
  746. */
  747. function cdp_get_profile() {
  748. if (function_exists('cdpp_get_all_profiles'))
  749. cdpp_get_profile();
  750. else {
  751. // Search for the settings of profile
  752. $settings = get_option('_cdp_profiles')['default'];
  753. // Display those settings
  754. echo json_encode(cdp_sanitize_array($settings));
  755. }
  756. }
  757. /** –– * */
  758. /** –– **\
  759. * This function will return all profile information for manager.
  760. * @return object of settings by requested profile
  761. * @since 1.0.0
  762. */
  763. function cdp_get_all_profiles() {
  764. if (function_exists('cdpp_get_all_profiles'))
  765. cdpp_get_all_profiles();
  766. else
  767. cdp_get_profile();
  768. }
  769. /** –– * */
  770. /** –– **\
  771. * This function will return all not trashed posts
  772. * @return object of posts and success or fail message
  773. */
  774. function cdp_get_all_posts() {
  775. $output = array();
  776. $args = array(
  777. 'numberposts' => -1,
  778. 'post_type' => 'post',
  779. 'post_status' => 'publish,private,draft,future,pending,inherit,sticky'
  780. );
  781. $output['posts'] = get_posts($args);
  782. $args['post_type'] = 'page';
  783. $output['pages'] = get_posts($args);
  784. $output['custom'] = array();
  785. $post_types = get_post_types(array('public' => true, '_builtin' => false));
  786. if (sizeof($post_types) > 0)
  787. $output['custom'] = get_posts(array(
  788. 'post_type' => $post_types,
  789. 'numberposts' => -1,
  790. 'post_status' => 'publish,private,draft,future,pending,inherit,sticky'
  791. ));
  792. $output['meta'] = array();
  793. foreach ($output['posts'] as $k => $p)
  794. $output['meta'][$p->ID] = get_post_meta($p->ID);
  795. foreach ($output['pages'] as $k => $p)
  796. $output['meta'][$p->ID] = get_post_meta($p->ID);
  797. foreach ($output['custom'] as $k => $p)
  798. $output['meta'][$p->ID] = get_post_meta($p->ID);
  799. echo json_encode(cdp_sanitize_array($output));
  800. }
  801. /** –– * */
  802. /** –– **\
  803. * This function will delete all posts in array PERMANENTLY!
  804. * @return object of success message or error
  805. */
  806. function cdp_delete_posts() {
  807. $ids = ((isset($_POST['ids'])) ? cdp_sanitize_array($_POST['ids']) : false); // ids to delete
  808. $throttling = sanitize_text_field($_POST['throttling']); // throttling if enabeld
  809. $thc = sanitize_text_field($_POST['thc']); // throttling count if enabeld
  810. $thrs = sanitize_text_field($_POST['thrs']) == 'true' ? true : false; // trash or not?
  811. $redi = sanitize_text_field($_POST['redi']) == 'true' ? true : false; // redirect if enabled
  812. $auit = sanitize_text_field($_POST['auit']) == 'true' ? true : false; // auit if enabled
  813. $auitd = ((isset($_POST['auitd'])) ? cdp_sanitize_array($_POST['auitd']) : false); // auitd if auit enabled
  814. $prepared_ids = array();
  815. $inGroup = 0;
  816. $curr = current_time('timestamp');
  817. $token = uniqid($curr, true);
  818. $cdp_cron = get_option('_cdp_crons');
  819. $site = is_multisite() ? get_current_blog_id() : '-1';
  820. if ($cdp_cron == false)
  821. $cdp_cron = array();
  822. $cdp_cron[$token] = array(
  823. 'start' => $curr,
  824. 'ids' => $ids,
  825. 'done' => false,
  826. 'shown' => false,
  827. 'f' => 'delete',
  828. 'del_size' => sizeof($ids),
  829. 'handler' => 'cdp_cron_delete',
  830. 'auit' => $auit,
  831. 'auitd' => $auitd
  832. );
  833. $cdp_cron[$token]['tasks'] = array();
  834. $cdp_cron[$token]['args'] = array();
  835. if ($throttling == '1' && $thc && intval($thc) >= 1 && intval($thc) <= 10240) {
  836. $inGroup = ceil(intval($thc) / 30);
  837. for ($i = 0, $k = 2; $i < sizeof($ids); $i = $i + $inGroup, $k++)
  838. $cdp_cron[$token]['tasks']["-$k"] = false;
  839. update_option('_cdp_crons', $cdp_cron);
  840. for ($i = 0, $k = 2; $i < sizeof($ids); $i = $i + $inGroup, $k++) {
  841. $tg = array();
  842. $tt = array('tsk' => "-" . $k, 'token' => $token);
  843. for ($j = $i; $j < ($i + $inGroup); $j++)
  844. if (isset($ids[$j]))
  845. array_push($tg, $ids[$j]);
  846. array_push($prepared_ids, $tg);
  847. $time = $k * 2;
  848. $args = array(array('ids' => $tg, 'site' => $site, 'trash' => $thrs, 'token' => $tt));
  849. wp_schedule_single_event(strtotime("+$time seconds"), 'cdp_cron_delete', $args);
  850. array_push($cdp_cron[$token]['args'], $args);
  851. }
  852. } else {
  853. $cdp_cron[$token]['tasks']["-0"] = false;
  854. update_option('_cdp_crons', $cdp_cron);
  855. $tt = array('tsk' => "-0", 'token' => $token);
  856. $args = array(array('ids' => $ids, 'site' => $site, 'trash' => $thrs, 'token' => $tt));
  857. wp_schedule_single_event(strtotime('+2 seconds'), 'cdp_cron_delete', $args);
  858. array_push($cdp_cron[$token]['args'], $args);
  859. }
  860. echo json_encode(array('status' => 'success', 'token' => cdp_sanitize_array($token)));
  861. }
  862. /** –– * */
  863. /** –– **\
  864. * This function will delete all posts in array PERMANENTLY!
  865. * @return object of success message or error
  866. */
  867. function cdp_clear_all_crons() {
  868. $cdp_cron = get_option('_cdp_crons');
  869. foreach ($cdp_cron as $cron => $val) {
  870. if (array_key_exists('done', $val)) {
  871. if ($val['done'] != true) {
  872. echo json_encode(array(
  873. 'status' => 'fail',
  874. 'type' => 'warning',
  875. 'msg' => __('You can\'t clear messages when tasks are in progress, please firstly kill tasks or wait till the end.', 'copy-delete-posts')
  876. ));
  877. return;
  878. }
  879. }
  880. }
  881. $cdp_cron = delete_option('_cdp_crons');
  882. echo json_encode(array('status' => 'success'));
  883. }
  884. /** –– * */
  885. /** –– **\
  886. * Local function which sets default profile for user
  887. * @return Boolean
  888. */
  889. function cdp_set_default_profile() {
  890. $curr = get_option('_cdp_preselections');
  891. $id = get_current_user_id();
  892. $new = array();
  893. $selection = ((isset($_POST['selection'])) ? cdp_sanitize_array($_POST['selection']) : false);
  894. if ($curr && !is_object($curr) || $curr == false)
  895. $new = array($id => $selection);
  896. else {
  897. $new = $curr;
  898. $new[$id] = $selection;
  899. }
  900. $stat = update_option('_cdp_preselections', $new);
  901. echo cdp_sanitize_array($stat);
  902. }
  903. /** –– * */
  904. /** –– **\
  905. * Local function which gets default profile for user
  906. * @return String
  907. */
  908. function cdp_get_default_profile() {
  909. echo(esc_html(get_option('_cdp_preselections')[get_current_user_id()]));
  910. }
  911. /** –– * */
  912. /** –– **\
  913. * This function will set as seen notification!
  914. * @return object of success message — WARNING: ALWAYS
  915. */
  916. function cdp_set_noti_as_seen() {
  917. if (wp_doing_cron())
  918. return;
  919. $token = ((isset($_POST['noti_token'])) ? sanitize_text_field($_POST['noti_token']) : false);
  920. $cdp_cron = get_option('_cdp_crons', array());
  921. $cdp_cron[$token]['shown'] = true;
  922. update_option('_cdp_crons', $cdp_cron);
  923. echo json_encode(array('status' => 'success'));
  924. }
  925. /** –– * */
  926. /** –– **\
  927. * This function will delete task from the history!
  928. * @return object of success message or fail
  929. */
  930. function cdp_just_hide_task() {
  931. $token = ((isset($_POST['task'])) ? sanitize_text_field($_POST['task']) : false);
  932. $cdp_cron = get_option('_cdp_crons', array());
  933. unset($cdp_cron[$token]);
  934. $res = update_option('_cdp_crons', $cdp_cron);
  935. if ($res)
  936. echo json_encode(array('status' => 'success'));
  937. else
  938. echo json_encode(array('status' => 'fail', 'type' => 'error', 'msg' => __('We can\'t hide this task now, – maybe it\'t already hidden. Please try again later.', 'copy-delete-posts')));
  939. }
  940. /** –– * */
  941. /** –– **\
  942. * This function will kill task from the cron!
  943. * @return object of success message or fail
  944. */
  945. function cdp_just_kill_task() {
  946. $token = ((isset($_POST['task'])) ? sanitize_text_field($_POST['task']) : false);
  947. $cdp_cron = get_option('_cdp_crons', array());
  948. $handler = $cdp_cron[$token]['handler'];
  949. $args = (array_key_exists('args', $cdp_cron[$token]) ? $cdp_cron[$token]['args'] : array());
  950. if ($cdp_cron[$token]['done'] != false) {
  951. echo json_encode(array('status' => 'fail', 'type' => 'error', 'msg' => __('This task has already ended this work, please wait for list refresh and try again.', 'copy-delete-posts')));
  952. return;
  953. }
  954. $status = true;
  955. $res = false;
  956. foreach ($args as $arg => $val) {
  957. $sres = wp_clear_scheduled_hook($handler, $val);
  958. if ($sres == false)
  959. $status = false;
  960. }
  961. if ($cdp_cron[$token]['done'] != false)
  962. $status = true;
  963. if ($status == true) {
  964. unset($cdp_cron[$token]);
  965. $res = update_option('_cdp_crons', $cdp_cron);
  966. }
  967. if ($status || $res)
  968. echo json_encode(array('status' => 'success'));
  969. else
  970. echo json_encode(array('status' => 'fail', 'type' => 'error', 'msg' => __('We can\'t confirm that we killed this task now, please try again later or check if it\'t killed.', 'copy-delete-posts')));
  971. }
  972. /** –– * */
  973. /** –– **\
  974. * This function will catch current cron tasks!
  975. * @return object of tasks or fail
  976. */
  977. function cdp_just_get_tasks() {
  978. $cdp_cron = get_option('_cdp_crons', false);
  979. if ($cdp_cron)
  980. echo json_encode(array('status' => 'success', 'tasks' => cdp_sanitize_array($cdp_cron)));
  981. else
  982. echo json_encode(array('status' => 'fail', 'type' => 'error', 'msg' => __('We couldn\'t catch current tasks, please try again later.', 'copy-delete-posts')));
  983. }
  984. /** –– * */
  985. /** –– **\
  986. * This function will remove performance notice
  987. * @return void
  988. */
  989. function cdp_hide_perf_notice() {
  990. update_option('cdp_dismiss_perf_notice', true);
  991. update_option('cdp_latest_slow_performance', false);
  992. echo json_encode(array('status' => 'success'));
  993. }
  994. /** –– * */
  995. /** –– **\
  996. * This function is just for debug have fun with it!
  997. * It can be fired by function cdp_totally_know_what_i_am_doing('really');
  998. * It won't work in production mode so dont even try it, if you're not me ~ Mikołaj :P
  999. * @return mixed
  1000. */
  1001. function cdp_debug_function() {
  1002. // require_once('C:/Developer/Web/wordpress/wp-content/plugins/copy-delete-posts-premium/classes/methods.php');
  1003. // $settings = get_option('cdpp_aci_settings', false);
  1004. // $meth = new CDP_Premium($settings);
  1005. // $posts = $meth->load_posts($settings['scan']);
  1006. // $filtred = $meth->filter_posts($posts);
  1007. $cdp_cron = get_option('_cdp_crons', false);
  1008. $things_to_debug = array(
  1009. '$cdp_cron' => $cdp_cron
  1010. );
  1011. var_export($things_to_debug);
  1012. }
  1013. /** –– **/