@appweaver/core 1.5.1 → 1.6.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/app/load-providers.js +9 -4
- package/cache/cache-service.d.ts +1 -1
- package/cache/cache-service.js +4 -5
- package/cache/cache.js +102 -13
- package/context/dependency-injection.d.ts +2 -2
- package/context/dependency-injection.js +3 -2
- package/health/health-service.js +3 -1
- package/memory/redis.d.ts +1 -1
- package/memory/redis.js +44 -5
- package/package.json +1 -1
- package/prisma/client/internal/class.js +3 -3
- package/prisma/client/internal/prismaNamespace.d.ts +1 -2
- package/prisma/client/internal/prismaNamespace.js +1 -2
- package/prisma/client/internal/prismaNamespaceBrowser.d.ts +1 -2
- package/prisma/client/internal/prismaNamespaceBrowser.js +1 -2
- package/prisma/client/models/OneTimeToken.d.ts +25 -53
- package/queue/bull-queue.js +66 -6
- package/security/auth-service.d.ts +1 -0
- package/security/auth-service.js +43 -13
- package/security/resources/one-time-token/model.js +10 -6
- package/security/store/database-security-store.js +20 -17
- package/security/store/redis-security-store.js +6 -1
- package/server/create-server.js +13 -7
- package/types/generated.d.ts +8 -11
package/app/load-providers.js
CHANGED
|
@@ -19,11 +19,16 @@ function loadProviders(baseDir) {
|
|
|
19
19
|
(0, context_1.loadProvider)(baseDir, common_1.config.EVENTS_PROVIDER, common_1.Events);
|
|
20
20
|
(0, context_1.loadProvider)(baseDir, common_1.config.SECURITY_STORE_PROVIDER, common_1.SecurityStore);
|
|
21
21
|
(0, context_1.loadProvider)(baseDir, common_1.config.REDIS_PROVIDER, common_1.Redis, false);
|
|
22
|
-
(0, context_1.loadProvider)(baseDir, common_1.config.QUEUE_PROVIDER, common_1.Queue, false);
|
|
23
|
-
|
|
24
|
-
|
|
22
|
+
const queueLoaded = (0, context_1.loadProvider)(baseDir, common_1.config.QUEUE_PROVIDER, common_1.Queue, false);
|
|
23
|
+
const mailerLoaded = common_1.config.MAILER_ENABLED &&
|
|
24
|
+
(0, context_1.loadProvider)(baseDir, common_1.config.MAILER_PROVIDER, common_1.Mailer, false);
|
|
25
|
+
if (common_1.config.SCHEDULER_ENABLED) {
|
|
26
|
+
(0, context_1.loadProvider)(baseDir, common_1.config.SCHEDULER_PROVIDER, common_1.Scheduler, false);
|
|
27
|
+
}
|
|
25
28
|
// Core feature services
|
|
26
|
-
|
|
29
|
+
if (mailerLoaded && queueLoaded) {
|
|
30
|
+
(0, context_1.loadProvider)(__dirname, '../mailer/email-service', undefined, false);
|
|
31
|
+
}
|
|
27
32
|
(0, context_1.loadProvider)(__dirname, '../cache/cache-service');
|
|
28
33
|
(0, context_1.loadProvider)(__dirname, '../storage/file-service');
|
|
29
34
|
(0, context_1.loadProvider)(__dirname, '../security/auth-service');
|
package/cache/cache-service.d.ts
CHANGED
|
@@ -19,7 +19,7 @@ export declare class CacheService {
|
|
|
19
19
|
*
|
|
20
20
|
* @param {string} key - The unique key to identify the value in the cache.
|
|
21
21
|
* @param {Object} value - The value to store in the cache.
|
|
22
|
-
* @param {number} [ttl] - Optional time-to-live for the cache entry in
|
|
22
|
+
* @param {number} [ttl] - Optional time-to-live for the cache entry in milliseconds.
|
|
23
23
|
* @param {boolean} [replace=false] - Optional flag that indicates if the existing cache entry should be replaced
|
|
24
24
|
* with the new value and ttl.
|
|
25
25
|
* @return {Promise<boolean>} A promise that resolves to true if the key-value pair was added, or false if the key
|
package/cache/cache-service.js
CHANGED
|
@@ -22,12 +22,11 @@ class CacheService {
|
|
|
22
22
|
* @return A promise that resolves to the cached value if the key exists, or null if the key is not found.
|
|
23
23
|
*/
|
|
24
24
|
async getCachedValue(key) {
|
|
25
|
-
const
|
|
26
|
-
if (
|
|
25
|
+
const value = await this._cache.get(key);
|
|
26
|
+
if (value !== null) {
|
|
27
27
|
common_1.logger.debug({ key }, 'Retrieved value from cache');
|
|
28
|
-
return this._cache.get(key);
|
|
29
28
|
}
|
|
30
|
-
return
|
|
29
|
+
return value;
|
|
31
30
|
}
|
|
32
31
|
/**
|
|
33
32
|
* Adds a key-value pair to the cache if the key does not already exist.
|
|
@@ -35,7 +34,7 @@ class CacheService {
|
|
|
35
34
|
*
|
|
36
35
|
* @param {string} key - The unique key to identify the value in the cache.
|
|
37
36
|
* @param {Object} value - The value to store in the cache.
|
|
38
|
-
* @param {number} [ttl] - Optional time-to-live for the cache entry in
|
|
37
|
+
* @param {number} [ttl] - Optional time-to-live for the cache entry in milliseconds.
|
|
39
38
|
* @param {boolean} [replace=false] - Optional flag that indicates if the existing cache entry should be replaced
|
|
40
39
|
* with the new value and ttl.
|
|
41
40
|
* @return {Promise<boolean>} A promise that resolves to true if the key-value pair was added, or false if the key
|
package/cache/cache.js
CHANGED
|
@@ -11,16 +11,110 @@ class Cache extends common_1.Cache {
|
|
|
11
11
|
_evictionIndex = this.createEvictionIndex();
|
|
12
12
|
/** @internal */
|
|
13
13
|
_maxSizeBytes = (0, common_1.textToBytes)(common_1.config.CACHE_MAX_SIZE);
|
|
14
|
+
/** @internal */
|
|
15
|
+
_unavailable = false;
|
|
16
|
+
/** @internal */
|
|
17
|
+
_stale = false;
|
|
18
|
+
/** @internal */
|
|
19
|
+
_recovery;
|
|
14
20
|
constructor(_memory) {
|
|
15
21
|
super();
|
|
16
22
|
this._memory = _memory;
|
|
17
23
|
}
|
|
18
24
|
async onInit() {
|
|
19
25
|
if (common_1.config.CACHE_ENABLED && common_1.config.CACHE_CLEAN_START) {
|
|
20
|
-
|
|
26
|
+
if (this._memory.isAvailable()) {
|
|
27
|
+
await this.expire();
|
|
28
|
+
}
|
|
29
|
+
else {
|
|
30
|
+
// Cleaned on the first use once the memory connects
|
|
31
|
+
this._stale = true;
|
|
32
|
+
}
|
|
21
33
|
}
|
|
22
34
|
}
|
|
23
35
|
async get(key) {
|
|
36
|
+
return this.guard(null, () => this.readEntry(key));
|
|
37
|
+
}
|
|
38
|
+
async set(key, value, ttl) {
|
|
39
|
+
return this.guard(false, () => this.writeEntry(key, value, ttl));
|
|
40
|
+
}
|
|
41
|
+
async has(key) {
|
|
42
|
+
return this.guard(false, () => this._memory.hasKey(this.addPrefix(key)));
|
|
43
|
+
}
|
|
44
|
+
async evict(key) {
|
|
45
|
+
return this.guard(false, () => this.removeEntry(key));
|
|
46
|
+
}
|
|
47
|
+
async expire(pattern = '*') {
|
|
48
|
+
return this.guard(0, () => this.expireEntries(pattern));
|
|
49
|
+
}
|
|
50
|
+
async keys(pattern = '*') {
|
|
51
|
+
return this.guard([], async () => {
|
|
52
|
+
const prefixedPattern = this.addPrefix(pattern);
|
|
53
|
+
const prefixedKeys = await this._memory.findKeys(prefixedPattern);
|
|
54
|
+
return Array.from(prefixedKeys);
|
|
55
|
+
});
|
|
56
|
+
}
|
|
57
|
+
/**
|
|
58
|
+
* Runs a memory action. With `CACHE_SKIP_ON_ERROR` it falls back to the given
|
|
59
|
+
* value while the memory is unavailable or failing, so callers keep working
|
|
60
|
+
* without the cache, otherwise the error is thrown. Entries written before an
|
|
61
|
+
* outage may miss invalidations made during it, so the whole cache is cleared
|
|
62
|
+
* once the memory is available again.
|
|
63
|
+
*
|
|
64
|
+
* @internal
|
|
65
|
+
*/
|
|
66
|
+
async guard(fallback, action) {
|
|
67
|
+
if (!common_1.config.CACHE_SKIP_ON_ERROR) {
|
|
68
|
+
return this.run(action);
|
|
69
|
+
}
|
|
70
|
+
if (!this._memory.isAvailable()) {
|
|
71
|
+
this.markUnavailable();
|
|
72
|
+
return fallback;
|
|
73
|
+
}
|
|
74
|
+
try {
|
|
75
|
+
return await this.run(action);
|
|
76
|
+
}
|
|
77
|
+
catch (error) {
|
|
78
|
+
this.markUnavailable(error);
|
|
79
|
+
return fallback;
|
|
80
|
+
}
|
|
81
|
+
}
|
|
82
|
+
/** @internal */
|
|
83
|
+
async run(action) {
|
|
84
|
+
if (this._stale) {
|
|
85
|
+
await this.recover();
|
|
86
|
+
}
|
|
87
|
+
return action();
|
|
88
|
+
}
|
|
89
|
+
/** @internal */
|
|
90
|
+
markUnavailable(error) {
|
|
91
|
+
this._stale = true;
|
|
92
|
+
if (!this._unavailable) {
|
|
93
|
+
this._unavailable = true;
|
|
94
|
+
common_1.logger.error(error, 'Cache is unavailable, continuing without it');
|
|
95
|
+
}
|
|
96
|
+
}
|
|
97
|
+
/** @internal */
|
|
98
|
+
recover() {
|
|
99
|
+
this._recovery ??= this.expireEntries('*')
|
|
100
|
+
.then(() => {
|
|
101
|
+
for (const prefixedKey of this._entryMeta.keys()) {
|
|
102
|
+
this._evictionIndex.remove(prefixedKey);
|
|
103
|
+
}
|
|
104
|
+
this._entryMeta.clear();
|
|
105
|
+
this._stale = false;
|
|
106
|
+
if (this._unavailable) {
|
|
107
|
+
this._unavailable = false;
|
|
108
|
+
common_1.logger.info('Cache is available again, cleared stale entries');
|
|
109
|
+
}
|
|
110
|
+
})
|
|
111
|
+
.finally(() => {
|
|
112
|
+
this._recovery = undefined;
|
|
113
|
+
});
|
|
114
|
+
return this._recovery;
|
|
115
|
+
}
|
|
116
|
+
/** @internal */
|
|
117
|
+
async readEntry(key) {
|
|
24
118
|
const prefixedKey = this.addPrefix(key);
|
|
25
119
|
const data = await this._memory.getValue(prefixedKey);
|
|
26
120
|
if (data) {
|
|
@@ -39,14 +133,15 @@ class Cache extends common_1.Cache {
|
|
|
39
133
|
this._entryMeta.set(prefixedKey, updatedMeta);
|
|
40
134
|
this._evictionIndex.touch(prefixedKey, updatedMeta);
|
|
41
135
|
}
|
|
42
|
-
else if (
|
|
136
|
+
else if (this._entryMeta.has(prefixedKey)) {
|
|
43
137
|
// Remove key from meta and index storage if it does not exist memory
|
|
44
138
|
this._entryMeta.delete(prefixedKey);
|
|
45
139
|
this._evictionIndex.remove(prefixedKey);
|
|
46
140
|
}
|
|
47
141
|
return data;
|
|
48
142
|
}
|
|
49
|
-
|
|
143
|
+
/** @internal */
|
|
144
|
+
async writeEntry(key, value, ttl) {
|
|
50
145
|
const prefixedKey = this.addPrefix(key);
|
|
51
146
|
const expireMs = ttl === 0 ? undefined : (ttl ?? common_1.config.CACHE_DEFAULT_TTL);
|
|
52
147
|
await this.evictExcessEntries();
|
|
@@ -66,17 +161,16 @@ class Cache extends common_1.Cache {
|
|
|
66
161
|
await this.ensureMemoryLimit();
|
|
67
162
|
return result;
|
|
68
163
|
}
|
|
69
|
-
|
|
70
|
-
|
|
71
|
-
}
|
|
72
|
-
async evict(key) {
|
|
164
|
+
/** @internal */
|
|
165
|
+
async removeEntry(key) {
|
|
73
166
|
const prefixedKey = this.addPrefix(key);
|
|
74
167
|
const result = await this._memory.removeValue(prefixedKey);
|
|
75
168
|
this._entryMeta.delete(prefixedKey);
|
|
76
169
|
this._evictionIndex.remove(prefixedKey);
|
|
77
170
|
return result;
|
|
78
171
|
}
|
|
79
|
-
|
|
172
|
+
/** @internal */
|
|
173
|
+
async expireEntries(pattern) {
|
|
80
174
|
const prefixedPattern = this.addPrefix(pattern);
|
|
81
175
|
const prefixedKeys = await this._memory.findKeys(prefixedPattern);
|
|
82
176
|
await this._memory.removeEntries(prefixedPattern);
|
|
@@ -86,11 +180,6 @@ class Cache extends common_1.Cache {
|
|
|
86
180
|
}
|
|
87
181
|
return prefixedKeys.size;
|
|
88
182
|
}
|
|
89
|
-
async keys(pattern = '*') {
|
|
90
|
-
const prefixedPattern = this.addPrefix(pattern);
|
|
91
|
-
const prefixedKeys = await this._memory.findKeys(prefixedPattern);
|
|
92
|
-
return Array.from(prefixedKeys);
|
|
93
|
-
}
|
|
94
183
|
/** @internal */
|
|
95
184
|
async evictExcessEntries() {
|
|
96
185
|
const now = Date.now();
|
|
@@ -26,9 +26,9 @@ export declare function define<T = DefinitionValue, S extends T = T>(value: Defi
|
|
|
26
26
|
* @param {DefinitionClass} [definition] - An optional definition object used to define the loaded module.
|
|
27
27
|
* @param {boolean} [required=true] - Indicates whether the module is required. If true, an error is thrown on failure;
|
|
28
28
|
* otherwise, a warning is logged.
|
|
29
|
-
* @return
|
|
29
|
+
* @return {boolean} `true` if the module was loaded and defined, `false` otherwise.
|
|
30
30
|
*/
|
|
31
|
-
export declare function loadProvider(baseDir: string, classPath: string, definition?: DefinitionClass, required?: boolean):
|
|
31
|
+
export declare function loadProvider(baseDir: string, classPath: string, definition?: DefinitionClass, required?: boolean): boolean;
|
|
32
32
|
/**
|
|
33
33
|
* Retrieves a definition from the application context based on the provided name.
|
|
34
34
|
* The method handles specific naming conventions for models, services, routes, and policies,
|
|
@@ -78,7 +78,7 @@ function define(value, nameOrClass, mode = 'ignore') {
|
|
|
78
78
|
* @param {DefinitionClass} [definition] - An optional definition object used to define the loaded module.
|
|
79
79
|
* @param {boolean} [required=true] - Indicates whether the module is required. If true, an error is thrown on failure;
|
|
80
80
|
* otherwise, a warning is logged.
|
|
81
|
-
* @return
|
|
81
|
+
* @return {boolean} `true` if the module was loaded and defined, `false` otherwise.
|
|
82
82
|
*/
|
|
83
83
|
function loadProvider(baseDir, classPath, definition, required = true) {
|
|
84
84
|
const { value, error } = (0, common_1.loadModule)(baseDir, classPath);
|
|
@@ -90,13 +90,14 @@ function loadProvider(baseDir, classPath, definition, required = true) {
|
|
|
90
90
|
throw error ?? new Error(msg);
|
|
91
91
|
}
|
|
92
92
|
common_1.logger.warn(error, msg);
|
|
93
|
-
return;
|
|
93
|
+
return false;
|
|
94
94
|
}
|
|
95
95
|
// Extract class constructor from the exported value and add it to definitions
|
|
96
96
|
const ctor = Object.values(value).find((exportedValue) => (0, common_1.isConstructor)(exportedValue));
|
|
97
97
|
// Define the first found class constructor, if no constructor found then
|
|
98
98
|
// define anything that was first exported from this file
|
|
99
99
|
define(ctor ?? Object.values(value)[0], definition);
|
|
100
|
+
return true;
|
|
100
101
|
}
|
|
101
102
|
/**
|
|
102
103
|
* Retrieves a definition from the application context based on the provided name.
|
package/health/health-service.js
CHANGED
|
@@ -27,7 +27,9 @@ class HealthService {
|
|
|
27
27
|
status: checkResults[index].success
|
|
28
28
|
? common_1.HealthCheckStatus.Up
|
|
29
29
|
: common_1.HealthCheckStatus.Down,
|
|
30
|
-
message: !hideMessages
|
|
30
|
+
message: !hideMessages.includes(key)
|
|
31
|
+
? checkResults[index].message
|
|
32
|
+
: undefined
|
|
31
33
|
};
|
|
32
34
|
return acc;
|
|
33
35
|
}, {});
|
package/memory/redis.d.ts
CHANGED
package/memory/redis.js
CHANGED
|
@@ -13,19 +13,33 @@ class Redis extends common_1.Redis {
|
|
|
13
13
|
constructor() {
|
|
14
14
|
super();
|
|
15
15
|
this._options = this.parseConnectionUrl(common_1.config.REDIS_URL);
|
|
16
|
-
|
|
16
|
+
// Commands fail right away while disconnected instead of queueing, so the
|
|
17
|
+
// callers can fall back without waiting for the reconnection
|
|
18
|
+
this._client = this.createClient({
|
|
19
|
+
connectionName: 'appweaver',
|
|
20
|
+
lazyConnect: true,
|
|
21
|
+
enableOfflineQueue: false,
|
|
22
|
+
maxRetriesPerRequest: 1
|
|
23
|
+
});
|
|
17
24
|
}
|
|
18
25
|
async onInit() {
|
|
19
|
-
|
|
26
|
+
try {
|
|
27
|
+
await this.connect();
|
|
28
|
+
}
|
|
29
|
+
catch {
|
|
30
|
+
// Logged by the connection monitor, the client keeps reconnecting
|
|
31
|
+
}
|
|
20
32
|
}
|
|
21
33
|
async onDestroy() {
|
|
22
34
|
await this.disconnect();
|
|
23
35
|
}
|
|
24
36
|
createClient(options = {}) {
|
|
25
|
-
|
|
37
|
+
const client = new ioredis_1.Redis({
|
|
26
38
|
...this._options,
|
|
27
39
|
...options
|
|
28
40
|
});
|
|
41
|
+
this.monitorConnection(client);
|
|
42
|
+
return client;
|
|
29
43
|
}
|
|
30
44
|
async connect() {
|
|
31
45
|
await this._client.connect();
|
|
@@ -35,7 +49,8 @@ class Redis extends common_1.Redis {
|
|
|
35
49
|
await this._client.quit();
|
|
36
50
|
}
|
|
37
51
|
catch {
|
|
38
|
-
//
|
|
52
|
+
// Stops the reconnection of a connection that is down
|
|
53
|
+
this._client.disconnect();
|
|
39
54
|
}
|
|
40
55
|
}
|
|
41
56
|
async getValue(key) {
|
|
@@ -65,7 +80,7 @@ class Redis extends common_1.Redis {
|
|
|
65
80
|
return this._client.del(...keys);
|
|
66
81
|
}
|
|
67
82
|
async findKeys(pattern = '*') {
|
|
68
|
-
return new Promise((resolve) => {
|
|
83
|
+
return new Promise((resolve, reject) => {
|
|
69
84
|
const stream = this._client.scanStream({
|
|
70
85
|
match: pattern,
|
|
71
86
|
count: 10000
|
|
@@ -79,6 +94,7 @@ class Redis extends common_1.Redis {
|
|
|
79
94
|
stream.on('end', () => {
|
|
80
95
|
resolve(keysSet);
|
|
81
96
|
});
|
|
97
|
+
stream.on('error', reject);
|
|
82
98
|
});
|
|
83
99
|
}
|
|
84
100
|
async valueSizeBytes(key) {
|
|
@@ -97,6 +113,29 @@ class Redis extends common_1.Redis {
|
|
|
97
113
|
return { success: false, message: e.message };
|
|
98
114
|
}
|
|
99
115
|
}
|
|
116
|
+
isAvailable() {
|
|
117
|
+
return this._client.status === 'ready';
|
|
118
|
+
}
|
|
119
|
+
/** @internal */
|
|
120
|
+
monitorConnection(client) {
|
|
121
|
+
const name = client.options.connectionName ?? 'redis';
|
|
122
|
+
let lost = false;
|
|
123
|
+
// Logs only the first error of an outage, the client emits one on every
|
|
124
|
+
// failed reconnection attempt
|
|
125
|
+
client.on('error', (error) => {
|
|
126
|
+
if (!lost) {
|
|
127
|
+
lost = true;
|
|
128
|
+
common_1.logger.error(error, `Redis connection '${name}' is down, reconnecting in background`);
|
|
129
|
+
}
|
|
130
|
+
});
|
|
131
|
+
client.on('ready', () => {
|
|
132
|
+
if (lost) {
|
|
133
|
+
lost = false;
|
|
134
|
+
common_1.logger.info(`Redis connection '${name}' is restored`);
|
|
135
|
+
}
|
|
136
|
+
});
|
|
137
|
+
}
|
|
138
|
+
/** @internal */
|
|
100
139
|
parseConnectionUrl(url) {
|
|
101
140
|
const urlPattern = /redis:\/\/(?:(.*?)(?::(.*?))?@)?(.*?):(\d+)(?:\/(\d+))?/;
|
|
102
141
|
const match = url.match(urlPattern);
|
package/package.json
CHANGED
|
@@ -51,7 +51,7 @@ const config = {
|
|
|
51
51
|
"clientVersion": "7.9.1",
|
|
52
52
|
"engineVersion": "e922089b7d7502aff4249d5da3420f6fa55fc6ad",
|
|
53
53
|
"activeProvider": "sqlite",
|
|
54
|
-
"inlineSchema": "// This is your Prisma schema file,\n// learn more about it in the docs: https://pris.ly/d/prisma-schema\n\n// Generated by Appweaver. Please do not edit this file manually.\n\ndatasource db {\n provider = \"sqlite\"\n}\n\ngenerator client {\n provider = \"prisma-client\"\n output = \"./client\"\n}\n\nmodel ApiKey {\n id Int @id @default(autoincrement())\n key String\n keyHash String @unique\n name String?\n description String?\n enabled Boolean @default(true)\n expiresAt DateTime?\n\n /// Audit columns\n updatedAt DateTime @updatedAt\n createdAt DateTime @default(now())\n}\n\nmodel ConnectedAccount {\n id Int @id @default(autoincrement())\n provider String\n providerAccountId String\n scope String?\n lastLoginAt DateTime\n\n /// Audit columns\n updatedAt DateTime @updatedAt\n createdAt DateTime @default(now())\n\n @@unique([provider, providerAccountId])\n}\n\nmodel OneTimeToken {\n id Int @id @default(autoincrement())\n tokenHash String\n purpose String\n expiresAt DateTime\n
|
|
54
|
+
"inlineSchema": "// This is your Prisma schema file,\n// learn more about it in the docs: https://pris.ly/d/prisma-schema\n\n// Generated by Appweaver. Please do not edit this file manually.\n\ndatasource db {\n provider = \"sqlite\"\n}\n\ngenerator client {\n provider = \"prisma-client\"\n output = \"./client\"\n}\n\nmodel ApiKey {\n id Int @id @default(autoincrement())\n key String\n keyHash String @unique\n name String?\n description String?\n enabled Boolean @default(true)\n expiresAt DateTime?\n\n /// Audit columns\n updatedAt DateTime @updatedAt\n createdAt DateTime @default(now())\n}\n\nmodel ConnectedAccount {\n id Int @id @default(autoincrement())\n provider String\n providerAccountId String\n scope String?\n lastLoginAt DateTime\n\n /// Audit columns\n updatedAt DateTime @updatedAt\n createdAt DateTime @default(now())\n\n @@unique([provider, providerAccountId])\n}\n\nmodel OneTimeToken {\n id Int @id @default(autoincrement())\n tokenHash String @unique\n purpose String\n data Json\n expiresAt DateTime\n\n /// Audit columns\n createdAt DateTime @default(now())\n\n @@index([expiresAt])\n}\n\nmodel Permission {\n id Int @id @default(autoincrement())\n name String @unique\n\n /// Related columns\n roles Role[] @relation(\"RolePermissionsPermission\")\n\n /// Audit columns\n updatedAt DateTime @updatedAt\n createdAt DateTime @default(now())\n}\n\nmodel Role {\n id Int @id @default(autoincrement())\n name String @unique\n\n /// Related columns\n permissions Permission[] @relation(\"RolePermissionsPermission\")\n\n /// Audit columns\n updatedAt DateTime @updatedAt\n createdAt DateTime @default(now())\n}\n\nmodel Seeder {\n id String @id @default(uuid())\n checksum String\n seederName String @unique\n startedAt DateTime\n finishedAt DateTime\n logs String?\n\n @@map(\"_seeders\")\n}\n\nmodel File {\n id Int @id @default(autoincrement())\n name String @unique\n originalName String\n mimeType String\n sizeBytes Int\n checksum String\n title String?\n description String?\n resourceField String?\n resourceName String?\n resourceId String?\n\n /// Audit columns\n updatedAt DateTime @updatedAt\n createdAt DateTime @default(now())\n deletedAt DateTime?\n\n @@index([resourceName, resourceId, resourceField])\n}\n",
|
|
55
55
|
"runtimeDataModel": {
|
|
56
56
|
"models": {},
|
|
57
57
|
"enums": {},
|
|
@@ -62,10 +62,10 @@ const config = {
|
|
|
62
62
|
"graph": ""
|
|
63
63
|
}
|
|
64
64
|
};
|
|
65
|
-
config.runtimeDataModel = JSON.parse("{\"models\":{\"ApiKey\":{\"fields\":[{\"name\":\"id\",\"kind\":\"scalar\",\"type\":\"Int\"},{\"name\":\"key\",\"kind\":\"scalar\",\"type\":\"String\"},{\"name\":\"keyHash\",\"kind\":\"scalar\",\"type\":\"String\"},{\"name\":\"name\",\"kind\":\"scalar\",\"type\":\"String\"},{\"name\":\"description\",\"kind\":\"scalar\",\"type\":\"String\"},{\"name\":\"enabled\",\"kind\":\"scalar\",\"type\":\"Boolean\"},{\"name\":\"expiresAt\",\"kind\":\"scalar\",\"type\":\"DateTime\"},{\"name\":\"updatedAt\",\"kind\":\"scalar\",\"type\":\"DateTime\"},{\"name\":\"createdAt\",\"kind\":\"scalar\",\"type\":\"DateTime\"}],\"dbName\":null},\"ConnectedAccount\":{\"fields\":[{\"name\":\"id\",\"kind\":\"scalar\",\"type\":\"Int\"},{\"name\":\"provider\",\"kind\":\"scalar\",\"type\":\"String\"},{\"name\":\"providerAccountId\",\"kind\":\"scalar\",\"type\":\"String\"},{\"name\":\"scope\",\"kind\":\"scalar\",\"type\":\"String\"},{\"name\":\"lastLoginAt\",\"kind\":\"scalar\",\"type\":\"DateTime\"},{\"name\":\"updatedAt\",\"kind\":\"scalar\",\"type\":\"DateTime\"},{\"name\":\"createdAt\",\"kind\":\"scalar\",\"type\":\"DateTime\"}],\"dbName\":null},\"OneTimeToken\":{\"fields\":[{\"name\":\"id\",\"kind\":\"scalar\",\"type\":\"Int\"},{\"name\":\"tokenHash\",\"kind\":\"scalar\",\"type\":\"String\"},{\"name\":\"purpose\",\"kind\":\"scalar\",\"type\":\"String\"},{\"name\":\"
|
|
65
|
+
config.runtimeDataModel = JSON.parse("{\"models\":{\"ApiKey\":{\"fields\":[{\"name\":\"id\",\"kind\":\"scalar\",\"type\":\"Int\"},{\"name\":\"key\",\"kind\":\"scalar\",\"type\":\"String\"},{\"name\":\"keyHash\",\"kind\":\"scalar\",\"type\":\"String\"},{\"name\":\"name\",\"kind\":\"scalar\",\"type\":\"String\"},{\"name\":\"description\",\"kind\":\"scalar\",\"type\":\"String\"},{\"name\":\"enabled\",\"kind\":\"scalar\",\"type\":\"Boolean\"},{\"name\":\"expiresAt\",\"kind\":\"scalar\",\"type\":\"DateTime\"},{\"name\":\"updatedAt\",\"kind\":\"scalar\",\"type\":\"DateTime\"},{\"name\":\"createdAt\",\"kind\":\"scalar\",\"type\":\"DateTime\"}],\"dbName\":null},\"ConnectedAccount\":{\"fields\":[{\"name\":\"id\",\"kind\":\"scalar\",\"type\":\"Int\"},{\"name\":\"provider\",\"kind\":\"scalar\",\"type\":\"String\"},{\"name\":\"providerAccountId\",\"kind\":\"scalar\",\"type\":\"String\"},{\"name\":\"scope\",\"kind\":\"scalar\",\"type\":\"String\"},{\"name\":\"lastLoginAt\",\"kind\":\"scalar\",\"type\":\"DateTime\"},{\"name\":\"updatedAt\",\"kind\":\"scalar\",\"type\":\"DateTime\"},{\"name\":\"createdAt\",\"kind\":\"scalar\",\"type\":\"DateTime\"}],\"dbName\":null},\"OneTimeToken\":{\"fields\":[{\"name\":\"id\",\"kind\":\"scalar\",\"type\":\"Int\"},{\"name\":\"tokenHash\",\"kind\":\"scalar\",\"type\":\"String\"},{\"name\":\"purpose\",\"kind\":\"scalar\",\"type\":\"String\"},{\"name\":\"data\",\"kind\":\"scalar\",\"type\":\"Json\"},{\"name\":\"expiresAt\",\"kind\":\"scalar\",\"type\":\"DateTime\"},{\"name\":\"createdAt\",\"kind\":\"scalar\",\"type\":\"DateTime\"}],\"dbName\":null},\"Permission\":{\"fields\":[{\"name\":\"id\",\"kind\":\"scalar\",\"type\":\"Int\"},{\"name\":\"name\",\"kind\":\"scalar\",\"type\":\"String\"},{\"name\":\"roles\",\"kind\":\"object\",\"type\":\"Role\",\"relationName\":\"RolePermissionsPermission\"},{\"name\":\"updatedAt\",\"kind\":\"scalar\",\"type\":\"DateTime\"},{\"name\":\"createdAt\",\"kind\":\"scalar\",\"type\":\"DateTime\"}],\"dbName\":null},\"Role\":{\"fields\":[{\"name\":\"id\",\"kind\":\"scalar\",\"type\":\"Int\"},{\"name\":\"name\",\"kind\":\"scalar\",\"type\":\"String\"},{\"name\":\"permissions\",\"kind\":\"object\",\"type\":\"Permission\",\"relationName\":\"RolePermissionsPermission\"},{\"name\":\"updatedAt\",\"kind\":\"scalar\",\"type\":\"DateTime\"},{\"name\":\"createdAt\",\"kind\":\"scalar\",\"type\":\"DateTime\"}],\"dbName\":null},\"Seeder\":{\"fields\":[{\"name\":\"id\",\"kind\":\"scalar\",\"type\":\"String\"},{\"name\":\"checksum\",\"kind\":\"scalar\",\"type\":\"String\"},{\"name\":\"seederName\",\"kind\":\"scalar\",\"type\":\"String\"},{\"name\":\"startedAt\",\"kind\":\"scalar\",\"type\":\"DateTime\"},{\"name\":\"finishedAt\",\"kind\":\"scalar\",\"type\":\"DateTime\"},{\"name\":\"logs\",\"kind\":\"scalar\",\"type\":\"String\"}],\"dbName\":\"_seeders\"},\"File\":{\"fields\":[{\"name\":\"id\",\"kind\":\"scalar\",\"type\":\"Int\"},{\"name\":\"name\",\"kind\":\"scalar\",\"type\":\"String\"},{\"name\":\"originalName\",\"kind\":\"scalar\",\"type\":\"String\"},{\"name\":\"mimeType\",\"kind\":\"scalar\",\"type\":\"String\"},{\"name\":\"sizeBytes\",\"kind\":\"scalar\",\"type\":\"Int\"},{\"name\":\"checksum\",\"kind\":\"scalar\",\"type\":\"String\"},{\"name\":\"title\",\"kind\":\"scalar\",\"type\":\"String\"},{\"name\":\"description\",\"kind\":\"scalar\",\"type\":\"String\"},{\"name\":\"resourceField\",\"kind\":\"scalar\",\"type\":\"String\"},{\"name\":\"resourceName\",\"kind\":\"scalar\",\"type\":\"String\"},{\"name\":\"resourceId\",\"kind\":\"scalar\",\"type\":\"String\"},{\"name\":\"updatedAt\",\"kind\":\"scalar\",\"type\":\"DateTime\"},{\"name\":\"createdAt\",\"kind\":\"scalar\",\"type\":\"DateTime\"},{\"name\":\"deletedAt\",\"kind\":\"scalar\",\"type\":\"DateTime\"}],\"dbName\":null}},\"enums\":{},\"types\":{}}");
|
|
66
66
|
config.parameterizationSchema = {
|
|
67
67
|
strings: JSON.parse("[\"where\",\"ApiKey.findUnique\",\"ApiKey.findUniqueOrThrow\",\"orderBy\",\"cursor\",\"ApiKey.findFirst\",\"ApiKey.findFirstOrThrow\",\"ApiKey.findMany\",\"data\",\"ApiKey.createOne\",\"ApiKey.createMany\",\"ApiKey.createManyAndReturn\",\"ApiKey.updateOne\",\"ApiKey.updateMany\",\"ApiKey.updateManyAndReturn\",\"create\",\"update\",\"ApiKey.upsertOne\",\"ApiKey.deleteOne\",\"ApiKey.deleteMany\",\"having\",\"_count\",\"_avg\",\"_sum\",\"_min\",\"_max\",\"ApiKey.groupBy\",\"ApiKey.aggregate\",\"ConnectedAccount.findUnique\",\"ConnectedAccount.findUniqueOrThrow\",\"ConnectedAccount.findFirst\",\"ConnectedAccount.findFirstOrThrow\",\"ConnectedAccount.findMany\",\"ConnectedAccount.createOne\",\"ConnectedAccount.createMany\",\"ConnectedAccount.createManyAndReturn\",\"ConnectedAccount.updateOne\",\"ConnectedAccount.updateMany\",\"ConnectedAccount.updateManyAndReturn\",\"ConnectedAccount.upsertOne\",\"ConnectedAccount.deleteOne\",\"ConnectedAccount.deleteMany\",\"ConnectedAccount.groupBy\",\"ConnectedAccount.aggregate\",\"OneTimeToken.findUnique\",\"OneTimeToken.findUniqueOrThrow\",\"OneTimeToken.findFirst\",\"OneTimeToken.findFirstOrThrow\",\"OneTimeToken.findMany\",\"OneTimeToken.createOne\",\"OneTimeToken.createMany\",\"OneTimeToken.createManyAndReturn\",\"OneTimeToken.updateOne\",\"OneTimeToken.updateMany\",\"OneTimeToken.updateManyAndReturn\",\"OneTimeToken.upsertOne\",\"OneTimeToken.deleteOne\",\"OneTimeToken.deleteMany\",\"OneTimeToken.groupBy\",\"OneTimeToken.aggregate\",\"permissions\",\"roles\",\"Permission.findUnique\",\"Permission.findUniqueOrThrow\",\"Permission.findFirst\",\"Permission.findFirstOrThrow\",\"Permission.findMany\",\"Permission.createOne\",\"Permission.createMany\",\"Permission.createManyAndReturn\",\"Permission.updateOne\",\"Permission.updateMany\",\"Permission.updateManyAndReturn\",\"Permission.upsertOne\",\"Permission.deleteOne\",\"Permission.deleteMany\",\"Permission.groupBy\",\"Permission.aggregate\",\"Role.findUnique\",\"Role.findUniqueOrThrow\",\"Role.findFirst\",\"Role.findFirstOrThrow\",\"Role.findMany\",\"Role.createOne\",\"Role.createMany\",\"Role.createManyAndReturn\",\"Role.updateOne\",\"Role.updateMany\",\"Role.updateManyAndReturn\",\"Role.upsertOne\",\"Role.deleteOne\",\"Role.deleteMany\",\"Role.groupBy\",\"Role.aggregate\",\"Seeder.findUnique\",\"Seeder.findUniqueOrThrow\",\"Seeder.findFirst\",\"Seeder.findFirstOrThrow\",\"Seeder.findMany\",\"Seeder.createOne\",\"Seeder.createMany\",\"Seeder.createManyAndReturn\",\"Seeder.updateOne\",\"Seeder.updateMany\",\"Seeder.updateManyAndReturn\",\"Seeder.upsertOne\",\"Seeder.deleteOne\",\"Seeder.deleteMany\",\"Seeder.groupBy\",\"Seeder.aggregate\",\"File.findUnique\",\"File.findUniqueOrThrow\",\"File.findFirst\",\"File.findFirstOrThrow\",\"File.findMany\",\"File.createOne\",\"File.createMany\",\"File.createManyAndReturn\",\"File.updateOne\",\"File.updateMany\",\"File.updateManyAndReturn\",\"File.upsertOne\",\"File.deleteOne\",\"File.deleteMany\",\"File.groupBy\",\"File.aggregate\",\"AND\",\"OR\",\"NOT\",\"id\",\"name\",\"originalName\",\"mimeType\",\"sizeBytes\",\"checksum\",\"title\",\"description\",\"resourceField\",\"resourceName\",\"resourceId\",\"updatedAt\",\"createdAt\",\"deletedAt\",\"equals\",\"in\",\"notIn\",\"lt\",\"lte\",\"gt\",\"gte\",\"not\",\"contains\",\"startsWith\",\"endsWith\",\"seederName\",\"startedAt\",\"finishedAt\",\"logs\",\"every\",\"some\",\"none\",\"tokenHash\",\"purpose\",\"expiresAt\",\"string_contains\",\"string_starts_with\",\"string_ends_with\",\"array_starts_with\",\"array_ends_with\",\"provider\",\"providerAccountId\",\"scope\",\"lastLoginAt\",\"provider_providerAccountId\",\"key\",\"keyHash\",\"enabled\",\"connectOrCreate\",\"upsert\",\"set\",\"disconnect\",\"delete\",\"connect\",\"updateMany\",\"deleteMany\",\"increment\",\"decrement\",\"multiply\",\"divide\"]"),
|
|
68
|
-
graph: "pQJHcAx-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_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-AQAgFgAAxQEAIBcAAL4BACAYAAC-AQAgGQAAvgEAII8BAgAAAAGQAQIAAAAEkQECAAAABJIBAgAAAAGTAQIAAAABlAECAAAAAZUBAgAAAAGWAQIAxAEAIQ4VAAC-AQAgGAAAwwEAIBkAAMMBACCPAQEAAAABkAEBAAAABJEBAQAAAASSAQEAAAABkwEBAAAAAZQBAQAAAAGVAQEAAAABlgEBAMIBACGXAQEAAAABmAEBAAAAAZkBAQAAAAEOFQAAuwEAIBgAAMEBACAZAADBAQAgjwEBAAAAAZABAQAAAAWRAQEAAAAFkgEBAAAAAZMBAQAAAAGUAQEAAAABlQEBAAAAAZYBAQDAAQAhlwEBAAAAAZgBAQAAAAGZAQEAAAABCxUAAL4BACAYAAC_AQAgGQAAvwEAII8BQAAAAAGQAUAAAAAEkQFAAAAABJIBQAAAAAGTAUAAAAABlAFAAAAAAZUBQAAAAAGWAUAAvQEAIQsVAAC7AQAgGAAAvAEAIBkAALwBACCPAUAAAAABkAFAAAAABZEBQAAAAAWSAUAAAAABkwFAAAAAAZQBQAAAAAGVAUAAAAABlgFAALoBACELFQAAuwEAIBgAALwBACAZAAC8AQAgjwFAAAAAAZABQAAAAAWRAUAAAAAFkgFAAAAAAZMBQAAAAAGUAUAAAAABlQFAAAAAAZYBQAC6AQAhCI8BAgAAAAGQAQIAAAAFkQECAAAABZIBAgAAAAGTAQIAAAABlAECAAAAAZUBAgAAAAGWAQIAuwEAIQiPAUAAAAABkAFAAAAABZEBQAAAAAWSAUAAAAABkwFAAAAAAZQBQAAAAAGVAUAAAAABlgFAALwBACELFQAAvgEAIBgAAL8BACAZAAC_AQAgjwFAAAAAAZABQAAAAASRAUAAAAAEkgFAAAAAAZMBQAAAAAGUAUAAAAABlQFAAAAAAZYBQAC9AQAhCI8BAgAAAAGQAQIAAAAEkQECAAAABJIBAgAAAAGTAQIAAAABlAECAAAAAZUBAgAAAAGWAQIAvgEAIQiPAUAAAAABkAFAAAAABJEBQAAAAASSAUAAAAABkwFAAAAAAZQBQAAAAAGVAUAAAAABlgFAAL8BACEOFQAAuwEAIBgAAMEBACAZAADBAQAgjwEBAAAAAZABAQAAAAWRAQEAAAAFkgEBAAAAAZMBAQAAAAGUAQEAAAABlQEBAAAAAZYBAQDAAQAhlwEBAAAAAZgBAQAAAAGZAQEAAAABC48BAQAAAAGQAQEAAAAFkQEBAAAABZIBAQAAAAGTAQEAAAABlAEBAAAAAZUBAQAAAAGWAQEAwQEAIZcBAQAAAAGYAQEAAAABmQEBAAAAAQ4VAAC-AQAgGAAAwwEAIBkAAMMBACCPAQEAAAABkAEBAAAABJEBAQAAAASSAQEAAAABkwEBAAAAAZQBAQAAAAGVAQEAAAABlgEBAMIBACGXAQEAAAABmAEBAAAAAZkBAQAAAAELjwEBAAAAAZABAQAAAASRAQEAAAAEkgEBAAAAAZMBAQAAAAGUAQEAAAABlQEBAAAAAZYBAQDDAQAhlwEBAAAAAZgBAQAAAAGZAQEAAAABDRUAAL4BACAWAADFAQAgFwAAvgEAIBgAAL4BACAZAAC-AQAgjwECAAAAAZABAgAAAASRAQIAAAAEkgECAAAAAZMBAgAAAAGUAQIAAAABlQECAAAAAZYBAgDEAQAhCI8BCAAAAAGQAQgAAAAEkQEIAAAABJIBCAAAAAGTAQgAAAABlAEIAAAAAZUBCAAAAAGWAQgAxQEAIRF-AADGAQAwfwAAngEAEIABAADGAQAwgQECAMcBACGCAQEAyAEAIYMBAQDIAQAhhAEBAMgBACGFAQIAxwEAIYYBAQDIAQAhhwEBAMkBACGIAQEAyQEAIYkBAQDJAQAhigEBAMkBACGLAQEAyQEAIYwBQADKAQAhjQFAAMoBACGOAUAAywEAIQiPAQIAAAABkAECAAAABJEBAgAAAASSAQIAAAABkwECAAAAAZQBAgAAAAGVAQIAAAABlgECAL4BACELjwEBAAAAAZABAQAAAASRAQEAAAAEkgEBAAAAAZMBAQAAAAGUAQEAAAABlQEBAAAAAZYBAQDDAQAhlwEBAAAAAZgBAQAAAAGZAQEAAAABC48BAQAAAAGQAQEAAAAFkQEBAAAABZIBAQAAAAGTAQEAAAABlAEBAAAAAZUBAQAAAAGWAQEAwQEAIZcBAQAAAAGYAQEAAAABmQEBAAAAAQiPAUAAAAABkAFAAAAABJEBQAAAAASSAUAAAAABkwFAAAAAAZQBQAAAAAGVAUAAAAABlgFAAL8BACEIjwFAAAAAAZABQAAAAAWRAUAAAAAFkgFAAAAAAZMBQAAAAAGUAUAAAAABlQFAAAAAAZYBQAC8AQAhCX4AAMwBADB_AACYAQAQgAEAAMwBADCBAQEAtgEAIYYBAQC2AQAhmgEBALYBACGbAUAAuAEAIZwBQAC4AQAhnQEBALcBACEJfgAAzQEAMH8AAIUBABCAAQAAzQEAMIEBAQDIAQAhhgEBAMgBACGaAQEAyAEAIZsBQADKAQAhnAFAAMoBACGdAQEAyQEAIQd-AADOAQAwfwAAfwAQgAEAAM4BADCBAQIAtQEAIYIBAQC2AQAhjAFAALgBACGNAUAAuAEAIQd-AADPAQAwfwAAaQAQgAEAAM8BADCBAQIAtQEAIYIBAQC2AQAhjAFAALgBACGNAUAAuAEAIQg9AADRAQAgfgAA0AEAMH8AAFIAEIABAADQAQAwgQECAMcBACGCAQEAyAEAIYwBQADKAQAhjQFAAMoBACEDngEAAE4AIJ8BAABOACCgAQAATgAgCDwAANMBACB-AADSAQAwfwAATgAQgAEAANIBADCBAQIAxwEAIYIBAQDIAQAhjAFAAMoBACGNAUAAygEAIQOeAQAAUgAgnwEAAFIAIKABAABSACAKCAAA1QEAIH4AANQBADB_AABJABCAAQAA1AEAMIEBAgC1AQAhjAFAALgBACGNAUAAuAEAIaEBAQC2AQAhogEBALYBACGjAUAAuAEAIQoVAAC-AQAgGAAA1gEAIBkAANYBACCPAYAAAAABlgGAAAAAAaQBAQAAAAGlAQEAAAABpgEBAAAAAacBgAAAAAGoAYAAAAABB48BgAAAAAGWAYAAAAABpAEBAAAAAaUBAQAAAAGmAQEAAAABpwGAAAAAAagBgAAAAAEKCAAA2AEAIH4AANcBADB_AAA2ABCAAQAA1wEAMIEBAgDHAQAhjAFAAMoBACGNAUAAygEAIaEBAQDIAQAhogEBAMgBACGjAUAAygEAIQePAYAAAAABlgGAAAAAAaQBAQAAAAGlAQEAAAABpgEBAAAAAacBgAAAAAGoAYAAAAABCn4AANkBADB_AAAwABCAAQAA2QEAMIEBAgC1AQAhjAFAALgBACGNAUAAuAEAIakBAQC2AQAhqgEBALYBACGrAQEAtwEAIawBQAC4AQAhCn4AANoBADB_AAAdABCAAQAA2gEAMIEBAgDHAQAhjAFAAMoBACGNAUAAygEAIakBAQDIAQAhqgEBAMgBACGrAQEAyQEAIawBQADKAQAhAqkBAQAAAAGqAQEAAAABDH4AANwBADB_AAAXABCAAQAA3AEAMIEBAgC1AQAhggEBALcBACGIAQEAtwEAIYwBQAC4AQAhjQFAALgBACGjAUAAuQEAIa4BAQC2AQAhrwEBALYBACGwASAA3QEAIQUVAAC-AQAgGAAA3wEAIBkAAN8BACCPASAAAAABlgEgAN4BACEFFQAAvgEAIBgAAN8BACAZAADfAQAgjwEgAAAAAZYBIADeAQAhAo8BIAAAAAGWASAA3wEAIQx-AADgAQAwfwAABAAQgAEAAOABADCBAQIAxwEAIYIBAQDJAQAhiAEBAMkBACGMAUAAygEAIY0BQADKAQAhowFAAMsBACGuAQEAyAEAIa8BAQDIAQAhsAEgAOEBACECjwEgAAAAAZYBIADfAQAhAAAAAAAAAbMBAQAAAAEFswECAAAAAbkBAgAAAAG6AQIAAAABuwECAAAAAbwBAgAAAAEBswEBAAAAAQGzAUAAAAABAbMBQAAAAAEAAAAAAAAAAAoPAAD2AQAwEAAA-gEAMLEBAAD3AQAwsgEAAPgBADCzAQAA-QEAMLQBAAD5AQAwtQEAAPkBADC2AQAA-QEAMLcBAAD7AQAwuAEAAPwBADAEgQECAAAAAYIBAQAAAAGMAUAAAAABjQFAAAAAAQIAAABMACAPAACAAgAgAwAAAEwAIA8AAIACACAQAAD_AQAgCD0AANEBACB-AADQAQAwfwAAUgAQgAEAANABADCBAQIAAAABggEBAAAAAYwBQADKAQAhjQFAAMoBACECAAAATAAgCAAA_wEAIAIAAAD9AQAgCAAA_gEAIAd-AAD8AQAwfwAA_QEAEIABAAD8AQAwgQECAMcBACGCAQEAyAEAIYwBQADKAQAhjQFAAMoBACEHfgAA_AEAMH8AAP0BABCAAQAA_AEAMIEBAgDHAQAhggEBAMgBACGMAUAAygEAIY0BQADKAQAhBIEBAgDpAQAhggEBAOgBACGMAUAA6wEAIY0BQADrAQAhBIEBAgDpAQAhggEBAOgBACGMAUAA6wEAIY0BQADrAQAhBIEBAgAAAAGCAQEAAAABjAFAAAAAAY0BQAAAAAEDDwAA9gEAMLEBAAD3AQAwtgEAAPkBADAAAAAAAAoPAACIAgAwEAAAjAIAMLEBAACJAgAwsgEAAIoCADCzAQAAiwIAMLQBAACLAgAwtQEAAIsCADC2AQAAiwIAMLcBAACNAgAwuAEAAI4CADAEgQECAAAAAYIBAQAAAAGMAUAAAAABjQFAAAAAAQIAAABQACAPAACSAgAgAwAAAFAAIA8AAJICACAQAACRAgAgCDwAANMBACB-AADSAQAwfwAATgAQgAEAANIBADCBAQIAAAABggEBAAAAAYwBQADKAQAhjQFAAMoBACECAAAAUAAgCAAAkQIAIAIAAACPAgAgCAAAkAIAIAd-AACOAgAwfwAAjwIAEIABAACOAgAwgQECAMcBACGCAQEAyAEAIYwBQADKAQAhjQFAAMoBACEHfgAAjgIAMH8AAI8CABCAAQAAjgIAMIEBAgDHAQAhggEBAMgBACGMAUAAygEAIY0BQADKAQAhBIEBAgDpAQAhggEBAOgBACGMAUAA6wEAIY0BQADrAQAhBIEBAgDpAQAhggEBAOgBACGMAUAA6wEAIY0BQADrAQAhBIEBAgAAAAGCAQEAAAABjAFAAAAAAY0BQAAAAAEDDwAAiAIAMLEBAACJAgAwtgEAAIsCADAAAAAAAAAAAAAAAAAAAAAAAAGzASAAAAABAAAAAAUVAAYWAAcXAAgYAAkZAAoAAAAAAAUVAAYWAAcXAAgYAAkZAAoAAAAFFQAQFgARFwASGAATGQAUAAAAAAAFFQAQFgARFwASGAATGQAUAAAABRUAGhYAGxcAHBgAHRkAHgAAAAAABRUAGhYAGxcAHBgAHRkAHgIVACM9USECFQAiPFQgATxVAAE9VgAAAAUVACcWACgXACkYACoZACsAAAAAAAUVACcWACgXACkYACoZACsAAAUVADAWADEXADIYADMZADQAAAAAAAUVADAWADEXADIYADMZADQAAAADFQA6GAA7GQA8AAAAAxUAOhgAOxkAPAAAAAUVAEIWAEMXAEQYAEUZAEYAAAAAAAUVAEIWAEMXAEQYAEUZAEYBAgECAwEFBgEGBwEHCAEJCgEKDAILDQMMDwENEQIOEgQREwESFAETFQIaGAUbGQscGwwdHAweHwwfIAwgIQwhIwwiJQIjJg0kKAwlKgImKw4nLAwoLQwpLgIqMQ8rMhUsNBYtNRYuOBYvORYwOhYxPBYyPgIzPxc0QRY1QwI2RBg3RRY4RhY5RwI6Shk7Sx8-TSA_VyBAWCBBWSBCWiBDXCBEXgJFXyRGYSBHYwJIZCVJZSBKZiBLZwJMaiZNayxObCFPbSFQbiFRbyFScCFTciFUdAJVdS1WdyFXeQJYei5ZeyFafCFbfQJcgAEvXYEBNV6DATZfhAE2YIcBNmGIATZiiQE2Y4sBNmSNAQJljgE3ZpABNmeSAQJokwE4aZQBNmqVATZrlgECbJkBOW2aAT1unAE-b50BPnCgAT5xoQE-cqIBPnOkAT50pgECdacBP3apAT53qwECeKwBQHmtAT56rgE-e68BAnyyAUF9swFH"
|
|
68
|
+
graph: "pQJHcAx-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_AABSABCAAQAA0AEAMIEBAgAAAAGCAQEAAAABjAFAAMoBACGNAUAAygEAIQEAAABMACAIPAAA0wEAIH4AANIBADB_AABOABCAAQAA0gEAMIEBAgDHAQAhggEBAMgBACGMAUAAygEAIY0BQADKAQAhATwAAJUCACAIPAAA0wEAIH4AANIBADB_AABOABCAAQAA0gEAMIEBAgAAAAGCAQEAAAABjAFAAMoBACGNAUAAygEAIQMAAABOACADAABPADAEAABQACAIPQAA0QEAIH4AANABADB_AABSABCAAQAA0AEAMIEBAgDHAQAhggEBAMgBACGMAUAAygEAIY0BQADKAQAhAT0AAJQCACADAAAAUgAgAwAAUwAwBAAATAAgAQAAAFIAIAEAAABOACABAAAATAAgAwAAAFIAIAMAAFMAMAQAAEwAIAMAAABSACADAABTADAEAABMACADAAAAUgAgAwAAUwAwBAAATAAgBT0AAJMCACCBAQIAAAABggEBAAAAAYwBQAAAAAGNAUAAAAABAQgAAFsAIASBAQIAAAABggEBAAAAAYwBQAAAAAGNAUAAAAABAQgAAF0AMAEIAABdADAFPQAAhwIAIIEBAgDpAQAhggEBAOgBACGMAUAA6wEAIY0BQADrAQAhAgAAAEwAIAgAAGAAIASBAQIA6QEAIYIBAQDoAQAhjAFAAOsBACGNAUAA6wEAIQIAAABSACAIAABiACACAAAAUgAgCAAAYgAgAwAAAEwAIA8AAFsAIBAAAGAAIAEAAABMACABAAAAUgAgBRUAAIICACAWAACDAgAgFwAAhgIAIBgAAIUCACAZAACEAgAgB34AAM8BADB_AABpABCAAQAAzwEAMIEBAgC1AQAhggEBALYBACGMAUAAuAEAIY0BQAC4AQAhAwAAAFIAIAMAAGgAMBQAAGkAIAMAAABSACADAABTADAEAABMACABAAAAUAAgAQAAAFAAIAMAAABOACADAABPADAEAABQACADAAAATgAgAwAATwAwBAAAUAAgAwAAAE4AIAMAAE8AMAQAAFAAIAU8AACBAgAggQECAAAAAYIBAQAAAAGMAUAAAAABjQFAAAAAAQEIAABxACAEgQECAAAAAYIBAQAAAAGMAUAAAAABjQFAAAAAAQEIAABzADABCAAAcwAwBTwAAPUBACCBAQIA6QEAIYIBAQDoAQAhjAFAAOsBACGNAUAA6wEAIQIAAABQACAIAAB2ACAEgQECAOkBACGCAQEA6AEAIYwBQADrAQAhjQFAAOsBACECAAAATgAgCAAAeAAgAgAAAE4AIAgAAHgAIAMAAABQACAPAABxACAQAAB2ACABAAAAUAAgAQAAAE4AIAUVAADwAQAgFgAA8QEAIBcAAPQBACAYAADzAQAgGQAA8gEAIAd-AADOAQAwfwAAfwAQgAEAAM4BADCBAQIAtQEAIYIBAQC2AQAhjAFAALgBACGNAUAAuAEAIQMAAABOACADAAB-ADAUAAB_ACADAAAATgAgAwAATwAwBAAAUAAgCX4AAM0BADB_AACFAQAQgAEAAM0BADCBAQEAAAABhgEBAMgBACGaAQEAAAABmwFAAMoBACGcAUAAygEAIZ0BAQDJAQAhAQAAAIIBACABAAAAggEAIAl-AADNAQAwfwAAhQEAEIABAADNAQAwgQEBAMgBACGGAQEAyAEAIZoBAQDIAQAhmwFAAMoBACGcAUAAygEAIZ0BAQDJAQAhAZ0BAADiAQAgAwAAAIUBACADAACGAQAwBAAAggEAIAMAAACFAQAgAwAAhgEAMAQAAIIBACADAAAAhQEAIAMAAIYBADAEAACCAQAgBoEBAQAAAAGGAQEAAAABmgEBAAAAAZsBQAAAAAGcAUAAAAABnQEBAAAAAQEIAACKAQAgBoEBAQAAAAGGAQEAAAABmgEBAAAAAZsBQAAAAAGcAUAAAAABnQEBAAAAAQEIAACMAQAwAQgAAIwBADAGgQEBAOgBACGGAQEA6AEAIZoBAQDoAQAhmwFAAOsBACGcAUAA6wEAIZ0BAQDqAQAhAgAAAIIBACAIAACPAQAgBoEBAQDoAQAhhgEBAOgBACGaAQEA6AEAIZsBQADrAQAhnAFAAOsBACGdAQEA6gEAIQIAAACFAQAgCAAAkQEAIAIAAACFAQAgCAAAkQEAIAMAAACCAQAgDwAAigEAIBAAAI8BACABAAAAggEAIAEAAACFAQAgBBUAAO0BACAYAADvAQAgGQAA7gEAIJ0BAADiAQAgCX4AAMwBADB_AACYAQAQgAEAAMwBADCBAQEAtgEAIYYBAQC2AQAhmgEBALYBACGbAUAAuAEAIZwBQAC4AQAhnQEBALcBACEDAAAAhQEAIAMAAJcBADAUAACYAQAgAwAAAIUBACADAACGAQAwBAAAggEAIBF-AADGAQAwfwAAngEAEIABAADGAQAwgQECAAAAAYIBAQAAAAGDAQEAyAEAIYQBAQDIAQAhhQECAMcBACGGAQEAyAEAIYcBAQDJAQAhiAEBAMkBACGJAQEAyQEAIYoBAQDJAQAhiwEBAMkBACGMAUAAygEAIY0BQADKAQAhjgFAAMsBACEBAAAAmwEAIAEAAACbAQAgEX4AAMYBADB_AACeAQAQgAEAAMYBADCBAQIAxwEAIYIBAQDIAQAhgwEBAMgBACGEAQEAyAEAIYUBAgDHAQAhhgEBAMgBACGHAQEAyQEAIYgBAQDJAQAhiQEBAMkBACGKAQEAyQEAIYsBAQDJAQAhjAFAAMoBACGNAUAAygEAIY4BQADLAQAhBocBAADiAQAgiAEAAOIBACCJAQAA4gEAIIoBAADiAQAgiwEAAOIBACCOAQAA4gEAIAMAAACeAQAgAwAAnwEAMAQAAJsBACADAAAAngEAIAMAAJ8BADAEAACbAQAgAwAAAJ4BACADAACfAQAwBAAAmwEAIA6BAQIAAAABggEBAAAAAYMBAQAAAAGEAQEAAAABhQECAAAAAYYBAQAAAAGHAQEAAAABiAEBAAAAAYkBAQAAAAGKAQEAAAABiwEBAAAAAYwBQAAAAAGNAUAAAAABjgFAAAAAAQEIAACjAQAgDoEBAgAAAAGCAQEAAAABgwEBAAAAAYQBAQAAAAGFAQIAAAABhgEBAAAAAYcBAQAAAAGIAQEAAAABiQEBAAAAAYoBAQAAAAGLAQEAAAABjAFAAAAAAY0BQAAAAAGOAUAAAAABAQgAAKUBADABCAAApQEAMA6BAQIA6QEAIYIBAQDoAQAhgwEBAOgBACGEAQEA6AEAIYUBAgDpAQAhhgEBAOgBACGHAQEA6gEAIYgBAQDqAQAhiQEBAOoBACGKAQEA6gEAIYsBAQDqAQAhjAFAAOsBACGNAUAA6wEAIY4BQADsAQAhAgAAAJsBACAIAACoAQAgDoEBAgDpAQAhggEBAOgBACGDAQEA6AEAIYQBAQDoAQAhhQECAOkBACGGAQEA6AEAIYcBAQDqAQAhiAEBAOoBACGJAQEA6gEAIYoBAQDqAQAhiwEBAOoBACGMAUAA6wEAIY0BQADrAQAhjgFAAOwBACECAAAAngEAIAgAAKoBACACAAAAngEAIAgAAKoBACADAAAAmwEAIA8AAKMBACAQAACoAQAgAQAAAJsBACABAAAAngEAIAsVAADjAQAgFgAA5AEAIBcAAOcBACAYAADmAQAgGQAA5QEAIIcBAADiAQAgiAEAAOIBACCJAQAA4gEAIIoBAADiAQAgiwEAAOIBACCOAQAA4gEAIBF-AAC0AQAwfwAAsQEAEIABAAC0AQAwgQECALUBACGCAQEAtgEAIYMBAQC2AQAhhAEBALYBACGFAQIAtQEAIYYBAQC2AQAhhwEBALcBACGIAQEAtwEAIYkBAQC3AQAhigEBALcBACGLAQEAtwEAIYwBQAC4AQAhjQFAALgBACGOAUAAuQEAIQMAAACeAQAgAwAAsAEAMBQAALEBACADAAAAngEAIAMAAJ8BADAEAACbAQAgEX4AALQBADB_AACxAQAQgAEAALQBADCBAQIAtQEAIYIBAQC2AQAhgwEBALYBACGEAQEAtgEAIYUBAgC1AQAhhgEBALYBACGHAQEAtwEAIYgBAQC3AQAhiQEBALcBACGKAQEAtwEAIYsBAQC3AQAhjAFAALgBACGNAUAAuAEAIY4BQAC5AQAhDRUAAL4BACAWAADFAQAgFwAAvgEAIBgAAL4BACAZAAC-AQAgjwECAAAAAZABAgAAAASRAQIAAAAEkgECAAAAAZMBAgAAAAGUAQIAAAABlQECAAAAAZYBAgDEAQAhDhUAAL4BACAYAADDAQAgGQAAwwEAII8BAQAAAAGQAQEAAAAEkQEBAAAABJIBAQAAAAGTAQEAAAABlAEBAAAAAZUBAQAAAAGWAQEAwgEAIZcBAQAAAAGYAQEAAAABmQEBAAAAAQ4VAAC7AQAgGAAAwQEAIBkAAMEBACCPAQEAAAABkAEBAAAABZEBAQAAAAWSAQEAAAABkwEBAAAAAZQBAQAAAAGVAQEAAAABlgEBAMABACGXAQEAAAABmAEBAAAAAZkBAQAAAAELFQAAvgEAIBgAAL8BACAZAAC_AQAgjwFAAAAAAZABQAAAAASRAUAAAAAEkgFAAAAAAZMBQAAAAAGUAUAAAAABlQFAAAAAAZYBQAC9AQAhCxUAALsBACAYAAC8AQAgGQAAvAEAII8BQAAAAAGQAUAAAAAFkQFAAAAABZIBQAAAAAGTAUAAAAABlAFAAAAAAZUBQAAAAAGWAUAAugEAIQsVAAC7AQAgGAAAvAEAIBkAALwBACCPAUAAAAABkAFAAAAABZEBQAAAAAWSAUAAAAABkwFAAAAAAZQBQAAAAAGVAUAAAAABlgFAALoBACEIjwECAAAAAZABAgAAAAWRAQIAAAAFkgECAAAAAZMBAgAAAAGUAQIAAAABlQECAAAAAZYBAgC7AQAhCI8BQAAAAAGQAUAAAAAFkQFAAAAABZIBQAAAAAGTAUAAAAABlAFAAAAAAZUBQAAAAAGWAUAAvAEAIQsVAAC-AQAgGAAAvwEAIBkAAL8BACCPAUAAAAABkAFAAAAABJEBQAAAAASSAUAAAAABkwFAAAAAAZQBQAAAAAGVAUAAAAABlgFAAL0BACEIjwECAAAAAZABAgAAAASRAQIAAAAEkgECAAAAAZMBAgAAAAGUAQIAAAABlQECAAAAAZYBAgC-AQAhCI8BQAAAAAGQAUAAAAAEkQFAAAAABJIBQAAAAAGTAUAAAAABlAFAAAAAAZUBQAAAAAGWAUAAvwEAIQ4VAAC7AQAgGAAAwQEAIBkAAMEBACCPAQEAAAABkAEBAAAABZEBAQAAAAWSAQEAAAABkwEBAAAAAZQBAQAAAAGVAQEAAAABlgEBAMABACGXAQEAAAABmAEBAAAAAZkBAQAAAAELjwEBAAAAAZABAQAAAAWRAQEAAAAFkgEBAAAAAZMBAQAAAAGUAQEAAAABlQEBAAAAAZYBAQDBAQAhlwEBAAAAAZgBAQAAAAGZAQEAAAABDhUAAL4BACAYAADDAQAgGQAAwwEAII8BAQAAAAGQAQEAAAAEkQEBAAAABJIBAQAAAAGTAQEAAAABlAEBAAAAAZUBAQAAAAGWAQEAwgEAIZcBAQAAAAGYAQEAAAABmQEBAAAAAQuPAQEAAAABkAEBAAAABJEBAQAAAASSAQEAAAABkwEBAAAAAZQBAQAAAAGVAQEAAAABlgEBAMMBACGXAQEAAAABmAEBAAAAAZkBAQAAAAENFQAAvgEAIBYAAMUBACAXAAC-AQAgGAAAvgEAIBkAAL4BACCPAQIAAAABkAECAAAABJEBAgAAAASSAQIAAAABkwECAAAAAZQBAgAAAAGVAQIAAAABlgECAMQBACEIjwEIAAAAAZABCAAAAASRAQgAAAAEkgEIAAAAAZMBCAAAAAGUAQgAAAABlQEIAAAAAZYBCADFAQAhEX4AAMYBADB_AACeAQAQgAEAAMYBADCBAQIAxwEAIYIBAQDIAQAhgwEBAMgBACGEAQEAyAEAIYUBAgDHAQAhhgEBAMgBACGHAQEAyQEAIYgBAQDJAQAhiQEBAMkBACGKAQEAyQEAIYsBAQDJAQAhjAFAAMoBACGNAUAAygEAIY4BQADLAQAhCI8BAgAAAAGQAQIAAAAEkQECAAAABJIBAgAAAAGTAQIAAAABlAECAAAAAZUBAgAAAAGWAQIAvgEAIQuPAQEAAAABkAEBAAAABJEBAQAAAASSAQEAAAABkwEBAAAAAZQBAQAAAAGVAQEAAAABlgEBAMMBACGXAQEAAAABmAEBAAAAAZkBAQAAAAELjwEBAAAAAZABAQAAAAWRAQEAAAAFkgEBAAAAAZMBAQAAAAGUAQEAAAABlQEBAAAAAZYBAQDBAQAhlwEBAAAAAZgBAQAAAAGZAQEAAAABCI8BQAAAAAGQAUAAAAAEkQFAAAAABJIBQAAAAAGTAUAAAAABlAFAAAAAAZUBQAAAAAGWAUAAvwEAIQiPAUAAAAABkAFAAAAABZEBQAAAAAWSAUAAAAABkwFAAAAAAZQBQAAAAAGVAUAAAAABlgFAALwBACEJfgAAzAEAMH8AAJgBABCAAQAAzAEAMIEBAQC2AQAhhgEBALYBACGaAQEAtgEAIZsBQAC4AQAhnAFAALgBACGdAQEAtwEAIQl-AADNAQAwfwAAhQEAEIABAADNAQAwgQEBAMgBACGGAQEAyAEAIZoBAQDIAQAhmwFAAMoBACGcAUAAygEAIZ0BAQDJAQAhB34AAM4BADB_AAB_ABCAAQAAzgEAMIEBAgC1AQAhggEBALYBACGMAUAAuAEAIY0BQAC4AQAhB34AAM8BADB_AABpABCAAQAAzwEAMIEBAgC1AQAhggEBALYBACGMAUAAuAEAIY0BQAC4AQAhCD0AANEBACB-AADQAQAwfwAAUgAQgAEAANABADCBAQIAxwEAIYIBAQDIAQAhjAFAAMoBACGNAUAAygEAIQOeAQAATgAgnwEAAE4AIKABAABOACAIPAAA0wEAIH4AANIBADB_AABOABCAAQAA0gEAMIEBAgDHAQAhggEBAMgBACGMAUAAygEAIY0BQADKAQAhA54BAABSACCfAQAAUgAgoAEAAFIAIAkIAADVAQAgfgAA1AEAMH8AAEkAEIABAADUAQAwgQECALUBACGNAUAAuAEAIaEBAQC2AQAhogEBALYBACGjAUAAuAEAIQoVAAC-AQAgGAAA1gEAIBkAANYBACCPAYAAAAABlgGAAAAAAaQBAQAAAAGlAQEAAAABpgEBAAAAAacBgAAAAAGoAYAAAAABB48BgAAAAAGWAYAAAAABpAEBAAAAAaUBAQAAAAGmAQEAAAABpwGAAAAAAagBgAAAAAEJCAAA2AEAIH4AANcBADB_AAA2ABCAAQAA1wEAMIEBAgDHAQAhjQFAAMoBACGhAQEAyAEAIaIBAQDIAQAhowFAAMoBACEHjwGAAAAAAZYBgAAAAAGkAQEAAAABpQEBAAAAAaYBAQAAAAGnAYAAAAABqAGAAAAAAQp-AADZAQAwfwAAMAAQgAEAANkBADCBAQIAtQEAIYwBQAC4AQAhjQFAALgBACGpAQEAtgEAIaoBAQC2AQAhqwEBALcBACGsAUAAuAEAIQp-AADaAQAwfwAAHQAQgAEAANoBADCBAQIAxwEAIYwBQADKAQAhjQFAAMoBACGpAQEAyAEAIaoBAQDIAQAhqwEBAMkBACGsAUAAygEAIQKpAQEAAAABqgEBAAAAAQx-AADcAQAwfwAAFwAQgAEAANwBADCBAQIAtQEAIYIBAQC3AQAhiAEBALcBACGMAUAAuAEAIY0BQAC4AQAhowFAALkBACGuAQEAtgEAIa8BAQC2AQAhsAEgAN0BACEFFQAAvgEAIBgAAN8BACAZAADfAQAgjwEgAAAAAZYBIADeAQAhBRUAAL4BACAYAADfAQAgGQAA3wEAII8BIAAAAAGWASAA3gEAIQKPASAAAAABlgEgAN8BACEMfgAA4AEAMH8AAAQAEIABAADgAQAwgQECAMcBACGCAQEAyQEAIYgBAQDJAQAhjAFAAMoBACGNAUAAygEAIaMBQADLAQAhrgEBAMgBACGvAQEAyAEAIbABIADhAQAhAo8BIAAAAAGWASAA3wEAIQAAAAAAAAGzAQEAAAABBbMBAgAAAAG5AQIAAAABugECAAAAAbsBAgAAAAG8AQIAAAABAbMBAQAAAAEBswFAAAAAAQGzAUAAAAABAAAAAAAAAAAKDwAA9gEAMBAAAPoBADCxAQAA9wEAMLIBAAD4AQAwswEAAPkBADC0AQAA-QEAMLUBAAD5AQAwtgEAAPkBADC3AQAA-wEAMLgBAAD8AQAwBIEBAgAAAAGCAQEAAAABjAFAAAAAAY0BQAAAAAECAAAATAAgDwAAgAIAIAMAAABMACAPAACAAgAgEAAA_wEAIAg9AADRAQAgfgAA0AEAMH8AAFIAEIABAADQAQAwgQECAAAAAYIBAQAAAAGMAUAAygEAIY0BQADKAQAhAgAAAEwAIAgAAP8BACACAAAA_QEAIAgAAP4BACAHfgAA_AEAMH8AAP0BABCAAQAA_AEAMIEBAgDHAQAhggEBAMgBACGMAUAAygEAIY0BQADKAQAhB34AAPwBADB_AAD9AQAQgAEAAPwBADCBAQIAxwEAIYIBAQDIAQAhjAFAAMoBACGNAUAAygEAIQSBAQIA6QEAIYIBAQDoAQAhjAFAAOsBACGNAUAA6wEAIQSBAQIA6QEAIYIBAQDoAQAhjAFAAOsBACGNAUAA6wEAIQSBAQIAAAABggEBAAAAAYwBQAAAAAGNAUAAAAABAw8AAPYBADCxAQAA9wEAMLYBAAD5AQAwAAAAAAAKDwAAiAIAMBAAAIwCADCxAQAAiQIAMLIBAACKAgAwswEAAIsCADC0AQAAiwIAMLUBAACLAgAwtgEAAIsCADC3AQAAjQIAMLgBAACOAgAwBIEBAgAAAAGCAQEAAAABjAFAAAAAAY0BQAAAAAECAAAAUAAgDwAAkgIAIAMAAABQACAPAACSAgAgEAAAkQIAIAg8AADTAQAgfgAA0gEAMH8AAE4AEIABAADSAQAwgQECAAAAAYIBAQAAAAGMAUAAygEAIY0BQADKAQAhAgAAAFAAIAgAAJECACACAAAAjwIAIAgAAJACACAHfgAAjgIAMH8AAI8CABCAAQAAjgIAMIEBAgDHAQAhggEBAMgBACGMAUAAygEAIY0BQADKAQAhB34AAI4CADB_AACPAgAQgAEAAI4CADCBAQIAxwEAIYIBAQDIAQAhjAFAAMoBACGNAUAAygEAIQSBAQIA6QEAIYIBAQDoAQAhjAFAAOsBACGNAUAA6wEAIQSBAQIA6QEAIYIBAQDoAQAhjAFAAOsBACGNAUAA6wEAIQSBAQIAAAABggEBAAAAAYwBQAAAAAGNAUAAAAABAw8AAIgCADCxAQAAiQIAMLYBAACLAgAwAAAAAAAAAAAAAAAAAAAAAAABswEgAAAAAQAAAAAFFQAGFgAHFwAIGAAJGQAKAAAAAAAFFQAGFgAHFwAIGAAJGQAKAAAABRUAEBYAERcAEhgAExkAFAAAAAAABRUAEBYAERcAEhgAExkAFAAAAAUVABoWABsXABwYAB0ZAB4AAAAAAAUVABoWABsXABwYAB0ZAB4CFQAjPVEhAhUAIjxUIAE8VQABPVYAAAAFFQAnFgAoFwApGAAqGQArAAAAAAAFFQAnFgAoFwApGAAqGQArAAAFFQAwFgAxFwAyGAAzGQA0AAAAAAAFFQAwFgAxFwAyGAAzGQA0AAAAAxUAOhgAOxkAPAAAAAMVADoYADsZADwAAAAFFQBCFgBDFwBEGABFGQBGAAAAAAAFFQBCFgBDFwBEGABFGQBGAQIBAgMBBQYBBgcBBwgBCQoBCgwCCw0DDA8BDRECDhIEERMBEhQBExUCGhgFGxkLHBsMHRwMHh8MHyAMICEMISMMIiUCIyYNJCgMJSoCJisOJywMKC0MKS4CKjEPKzIVLDQWLTUWLjgWLzkWMDoWMTwWMj4CMz8XNEEWNUMCNkQYN0UWOEYWOUcCOkoZO0sfPk0gP1cgQFggQVkgQlogQ1wgRF4CRV8kRmEgR2MCSGQlSWUgSmYgS2cCTGomTWssTmwhT20hUG4hUW8hUnAhU3IhVHQCVXUtVnchV3kCWHouWXshWnwhW30CXIABL12BATVegwE2X4QBNmCHATZhiAE2YokBNmOLATZkjQECZY4BN2aQATZnkgECaJMBOGmUATZqlQE2a5YBAmyZATltmgE9bpwBPm-dAT5woAE-caEBPnKiAT5zpAE-dKYBAnWnAT92qQE-d6sBAnisAUB5rQE-eq4BPnuvAQJ8sgFBfbMBRw"
|
|
69
69
|
};
|
|
70
70
|
async function decodeBase64AsWasm(wasmBase64) {
|
|
71
71
|
const { Buffer } = await Promise.resolve().then(() => __importStar(require('node:buffer')));
|
|
@@ -842,9 +842,8 @@ export declare const OneTimeTokenScalarFieldEnum: {
|
|
|
842
842
|
readonly id: "id";
|
|
843
843
|
readonly tokenHash: "tokenHash";
|
|
844
844
|
readonly purpose: "purpose";
|
|
845
|
-
readonly expiresAt: "expiresAt";
|
|
846
845
|
readonly data: "data";
|
|
847
|
-
readonly
|
|
846
|
+
readonly expiresAt: "expiresAt";
|
|
848
847
|
readonly createdAt: "createdAt";
|
|
849
848
|
};
|
|
850
849
|
export type OneTimeTokenScalarFieldEnum = (typeof OneTimeTokenScalarFieldEnum)[keyof typeof OneTimeTokenScalarFieldEnum];
|
|
@@ -141,9 +141,8 @@ exports.OneTimeTokenScalarFieldEnum = {
|
|
|
141
141
|
id: 'id',
|
|
142
142
|
tokenHash: 'tokenHash',
|
|
143
143
|
purpose: 'purpose',
|
|
144
|
-
expiresAt: 'expiresAt',
|
|
145
144
|
data: 'data',
|
|
146
|
-
|
|
145
|
+
expiresAt: 'expiresAt',
|
|
147
146
|
createdAt: 'createdAt'
|
|
148
147
|
};
|
|
149
148
|
exports.PermissionScalarFieldEnum = {
|
|
@@ -65,9 +65,8 @@ export declare const OneTimeTokenScalarFieldEnum: {
|
|
|
65
65
|
readonly id: "id";
|
|
66
66
|
readonly tokenHash: "tokenHash";
|
|
67
67
|
readonly purpose: "purpose";
|
|
68
|
-
readonly expiresAt: "expiresAt";
|
|
69
68
|
readonly data: "data";
|
|
70
|
-
readonly
|
|
69
|
+
readonly expiresAt: "expiresAt";
|
|
71
70
|
readonly createdAt: "createdAt";
|
|
72
71
|
};
|
|
73
72
|
export type OneTimeTokenScalarFieldEnum = (typeof OneTimeTokenScalarFieldEnum)[keyof typeof OneTimeTokenScalarFieldEnum];
|
|
@@ -113,9 +113,8 @@ exports.OneTimeTokenScalarFieldEnum = {
|
|
|
113
113
|
id: 'id',
|
|
114
114
|
tokenHash: 'tokenHash',
|
|
115
115
|
purpose: 'purpose',
|
|
116
|
-
expiresAt: 'expiresAt',
|
|
117
116
|
data: 'data',
|
|
118
|
-
|
|
117
|
+
expiresAt: 'expiresAt',
|
|
119
118
|
createdAt: 'createdAt'
|
|
120
119
|
};
|
|
121
120
|
exports.PermissionScalarFieldEnum = {
|