@nanas-home/hub-common 0.11.293 → 0.11.295
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/dist/chunk/{PLTFPASQ.js → 25ISDQEC.js} +896 -896
- package/dist/index.css +1 -1
- package/dist/{dateValidation-CKBhGWaY.d.ts → mediaUpload-CcZW1mii.d.ts} +438 -438
- package/dist/node-utils/index.d.ts +43 -43
- package/dist/node-utils/index.js +219 -221
- package/dist/web/index.d.ts +402 -402
- package/dist/web/index.js +2622 -2625
- package/dist/web/index.jsx +2917 -2920
- package/package.json +1 -1
|
@@ -2,6 +2,80 @@ import dayjs from 'dayjs';
|
|
|
2
2
|
import { Token, Container } from '@freshgum/typedi';
|
|
3
3
|
import { jwtDecode } from 'jwt-decode';
|
|
4
4
|
|
|
5
|
+
// src/helpers/asyncHelper.ts
|
|
6
|
+
var timeout = (ms) => {
|
|
7
|
+
return new Promise((resolve) => setTimeout(resolve, ms));
|
|
8
|
+
};
|
|
9
|
+
var addToParallelTasks = async (tasks, newTask, numTasksInParallel = 5) => {
|
|
10
|
+
if (tasks.length >= numTasksInParallel) {
|
|
11
|
+
const finishedTask = Promise.any(tasks);
|
|
12
|
+
const indexOfTask = tasks.indexOf(finishedTask);
|
|
13
|
+
tasks.splice(indexOfTask, 1);
|
|
14
|
+
await finishedTask;
|
|
15
|
+
}
|
|
16
|
+
tasks.push(newTask);
|
|
17
|
+
return tasks;
|
|
18
|
+
};
|
|
19
|
+
|
|
20
|
+
// src/contracts/generated/enum/permissionType.ts
|
|
21
|
+
var PermissionType = /* @__PURE__ */ ((PermissionType2) => {
|
|
22
|
+
PermissionType2[PermissionType2["None"] = 0] = "None";
|
|
23
|
+
PermissionType2[PermissionType2["All"] = 1] = "All";
|
|
24
|
+
PermissionType2[PermissionType2["AdminLogin"] = 2] = "AdminLogin";
|
|
25
|
+
PermissionType2[PermissionType2["UserView"] = 20] = "UserView";
|
|
26
|
+
PermissionType2[PermissionType2["UserManage"] = 21] = "UserManage";
|
|
27
|
+
PermissionType2[PermissionType2["UserDelete"] = 22] = "UserDelete";
|
|
28
|
+
PermissionType2[PermissionType2["ActivitiesView"] = 30] = "ActivitiesView";
|
|
29
|
+
PermissionType2[PermissionType2["UserPermissionView"] = 40] = "UserPermissionView";
|
|
30
|
+
PermissionType2[PermissionType2["UserPermissionManage"] = 41] = "UserPermissionManage";
|
|
31
|
+
PermissionType2[PermissionType2["UserPermissionDelete"] = 42] = "UserPermissionDelete";
|
|
32
|
+
PermissionType2[PermissionType2["PetView"] = 60] = "PetView";
|
|
33
|
+
PermissionType2[PermissionType2["PetManage"] = 61] = "PetManage";
|
|
34
|
+
PermissionType2[PermissionType2["PetDelete"] = 62] = "PetDelete";
|
|
35
|
+
PermissionType2[PermissionType2["CommentView"] = 80] = "CommentView";
|
|
36
|
+
PermissionType2[PermissionType2["CommentManage"] = 81] = "CommentManage";
|
|
37
|
+
PermissionType2[PermissionType2["CommentDelete"] = 82] = "CommentDelete";
|
|
38
|
+
PermissionType2[PermissionType2["AddressView"] = 100] = "AddressView";
|
|
39
|
+
PermissionType2[PermissionType2["AddressManage"] = 101] = "AddressManage";
|
|
40
|
+
PermissionType2[PermissionType2["AddressDelete"] = 102] = "AddressDelete";
|
|
41
|
+
PermissionType2[PermissionType2["BookingView"] = 120] = "BookingView";
|
|
42
|
+
PermissionType2[PermissionType2["BookingManage"] = 121] = "BookingManage";
|
|
43
|
+
PermissionType2[PermissionType2["BookingDelete"] = 122] = "BookingDelete";
|
|
44
|
+
PermissionType2[PermissionType2["AnswerView"] = 140] = "AnswerView";
|
|
45
|
+
PermissionType2[PermissionType2["AnswerManage"] = 141] = "AnswerManage";
|
|
46
|
+
PermissionType2[PermissionType2["AnswerDelete"] = 142] = "AnswerDelete";
|
|
47
|
+
PermissionType2[PermissionType2["QuestionView"] = 150] = "QuestionView";
|
|
48
|
+
PermissionType2[PermissionType2["QuestionManage"] = 151] = "QuestionManage";
|
|
49
|
+
PermissionType2[PermissionType2["QuestionDelete"] = 152] = "QuestionDelete";
|
|
50
|
+
PermissionType2[PermissionType2["UploadView"] = 160] = "UploadView";
|
|
51
|
+
PermissionType2[PermissionType2["UploadManage"] = 161] = "UploadManage";
|
|
52
|
+
PermissionType2[PermissionType2["UploadDelete"] = 162] = "UploadDelete";
|
|
53
|
+
PermissionType2[PermissionType2["MembershipView"] = 170] = "MembershipView";
|
|
54
|
+
PermissionType2[PermissionType2["MembershipManage"] = 171] = "MembershipManage";
|
|
55
|
+
PermissionType2[PermissionType2["MembershipDelete"] = 172] = "MembershipDelete";
|
|
56
|
+
PermissionType2[PermissionType2["UserMembershipView"] = 180] = "UserMembershipView";
|
|
57
|
+
PermissionType2[PermissionType2["UserMembershipManage"] = 181] = "UserMembershipManage";
|
|
58
|
+
PermissionType2[PermissionType2["UserMembershipDelete"] = 182] = "UserMembershipDelete";
|
|
59
|
+
return PermissionType2;
|
|
60
|
+
})(PermissionType || {});
|
|
61
|
+
|
|
62
|
+
// src/helpers/permissionHelper.ts
|
|
63
|
+
var hasRequiredPermissions = (props) => {
|
|
64
|
+
if (props.userPermissions.includes(1 /* All */)) {
|
|
65
|
+
props.hasAdminPermission?.();
|
|
66
|
+
return true;
|
|
67
|
+
}
|
|
68
|
+
const missingPermissions = props.requiredPermissions.filter((p) => props.userPermissions.includes(p) == false);
|
|
69
|
+
if (missingPermissions.length > 0) {
|
|
70
|
+
props.doesNotHavePermission?.(missingPermissions);
|
|
71
|
+
return false;
|
|
72
|
+
}
|
|
73
|
+
return true;
|
|
74
|
+
};
|
|
75
|
+
|
|
76
|
+
// src/helpers/commonHelper.ts
|
|
77
|
+
var getUsersName = (details) => `${details?.firstName} ${details?.lastName}`;
|
|
78
|
+
|
|
5
79
|
// src/helpers/mimeHelper.ts
|
|
6
80
|
var mimeTypeLookup = {
|
|
7
81
|
txt: "text/plain",
|
|
@@ -23,89 +97,6 @@ var getMimeTypeFromExtension = (extension, logger) => {
|
|
|
23
97
|
return "application/octet-stream";
|
|
24
98
|
};
|
|
25
99
|
|
|
26
|
-
// src/helpers/performanceHelper.ts
|
|
27
|
-
var getPerformanceTimer = () => ({
|
|
28
|
-
start: performance.now(),
|
|
29
|
-
getTimeElapsed: (start) => performance.now() - start
|
|
30
|
-
});
|
|
31
|
-
|
|
32
|
-
// src/helpers/hashHelper.ts
|
|
33
|
-
var cyrb53 = (input, seed = 0) => {
|
|
34
|
-
let h1 = 3735928559 ^ seed, h2 = 1103547991 ^ seed;
|
|
35
|
-
for (let i = 0, ch; i < input.length; i++) {
|
|
36
|
-
ch = input.charCodeAt(i);
|
|
37
|
-
h1 = Math.imul(h1 ^ ch, 2654435761);
|
|
38
|
-
h2 = Math.imul(h2 ^ ch, 1597334677);
|
|
39
|
-
}
|
|
40
|
-
h1 = Math.imul(h1 ^ h1 >>> 16, 2246822507);
|
|
41
|
-
h1 ^= Math.imul(h2 ^ h2 >>> 13, 3266489909);
|
|
42
|
-
h2 = Math.imul(h2 ^ h2 >>> 16, 2246822507);
|
|
43
|
-
h2 ^= Math.imul(h1 ^ h1 >>> 13, 3266489909);
|
|
44
|
-
return 4294967296 * (2097151 & h2) + (h1 >>> 0);
|
|
45
|
-
};
|
|
46
|
-
|
|
47
|
-
// src/helpers/randomHelper.ts
|
|
48
|
-
var randomIntFromRange = (min, max) => {
|
|
49
|
-
return Math.floor(Math.random() * (max - min) + min);
|
|
50
|
-
};
|
|
51
|
-
var randomItemFromArray = (items) => {
|
|
52
|
-
const randomIndex = randomIntFromRange(0, items.length);
|
|
53
|
-
return items[randomIndex];
|
|
54
|
-
};
|
|
55
|
-
|
|
56
|
-
// src/helpers/guidHelper.ts
|
|
57
|
-
var uuidv4 = () => {
|
|
58
|
-
var d = (/* @__PURE__ */ new Date()).getTime();
|
|
59
|
-
var d2 = typeof performance !== "undefined" && performance.now && performance.now() * 1e3 || 0;
|
|
60
|
-
return "xxxxxxxx-xxxx-4xxx-yxxx-xxxxxxxxxxxx".replace(/[xy]/g, function(c) {
|
|
61
|
-
var r = Math.random() * 16;
|
|
62
|
-
if (d > 0) {
|
|
63
|
-
r = (d + r) % 16 | 0;
|
|
64
|
-
d = Math.floor(d / 16);
|
|
65
|
-
} else {
|
|
66
|
-
r = (d2 + r) % 16 | 0;
|
|
67
|
-
d2 = Math.floor(d2 / 16);
|
|
68
|
-
}
|
|
69
|
-
return (c === "x" ? r : r & 3 | 8).toString(16);
|
|
70
|
-
});
|
|
71
|
-
};
|
|
72
|
-
|
|
73
|
-
// src/helpers/stringHelper.ts
|
|
74
|
-
var capitalizeAlphabet = "ABCDEFGHIJKLMNOPQRSTUVWXYZ";
|
|
75
|
-
var capitalizeFirstLetter = (orig) => {
|
|
76
|
-
if ((orig?.length ?? 0) == 0) return orig;
|
|
77
|
-
return [orig[0].toUpperCase(), ...orig.slice(1, orig.length)].join("");
|
|
78
|
-
};
|
|
79
|
-
var lowercaseFirstLetter = (orig) => {
|
|
80
|
-
if (orig.length == 0) return orig;
|
|
81
|
-
return [orig[0].toLowerCase(), ...orig.slice(1, orig.length)].join("");
|
|
82
|
-
};
|
|
83
|
-
var addSpacesForEnum = (orig) => {
|
|
84
|
-
if (orig.length == 0) return orig;
|
|
85
|
-
let result = "";
|
|
86
|
-
for (const char of orig) {
|
|
87
|
-
if (capitalizeAlphabet.includes(char)) {
|
|
88
|
-
result += " ";
|
|
89
|
-
}
|
|
90
|
-
result += char;
|
|
91
|
-
}
|
|
92
|
-
return result;
|
|
93
|
-
};
|
|
94
|
-
var formatFileSize = (sizeInKb) => {
|
|
95
|
-
const units = ["KB", "MB", "GB", "TB"];
|
|
96
|
-
let size = sizeInKb;
|
|
97
|
-
let unitIndex = 0;
|
|
98
|
-
while (size >= 1024 && unitIndex < units.length - 1) {
|
|
99
|
-
size /= 1024;
|
|
100
|
-
unitIndex++;
|
|
101
|
-
}
|
|
102
|
-
const formatter = new Intl.NumberFormat("en-US", {
|
|
103
|
-
minimumFractionDigits: 0,
|
|
104
|
-
maximumFractionDigits: 0
|
|
105
|
-
});
|
|
106
|
-
return `${formatter.format(size)} ${units[unitIndex]}`;
|
|
107
|
-
};
|
|
108
|
-
|
|
109
100
|
// src/helpers/arrayHelper.ts
|
|
110
101
|
var makeArrayOrDefault = (propsVal, defaultValue = []) => {
|
|
111
102
|
if (propsVal == null) return defaultValue;
|
|
@@ -125,83 +116,9 @@ var arrayContains = (arr, items, method = "AND") => {
|
|
|
125
116
|
return true;
|
|
126
117
|
};
|
|
127
118
|
|
|
128
|
-
// src/helpers/
|
|
129
|
-
|
|
130
|
-
|
|
131
|
-
}
|
|
132
|
-
|
|
133
|
-
// src/helpers/eventHelper.ts
|
|
134
|
-
var onTargetValue = (funcOnEvent) => (event) => {
|
|
135
|
-
const value = event.target?.value;
|
|
136
|
-
if (value == null) return;
|
|
137
|
-
funcOnEvent(value);
|
|
138
|
-
};
|
|
139
|
-
var onTargetChecked = (funcOnEvent) => (event) => {
|
|
140
|
-
const value = event.target?.checked;
|
|
141
|
-
if (value == null) return;
|
|
142
|
-
funcOnEvent(value);
|
|
143
|
-
};
|
|
144
|
-
var onTargetFiles = (funcOnEvent) => (event) => {
|
|
145
|
-
const fileList = event.target.files;
|
|
146
|
-
if (fileList == null || fileList.length < 1) return;
|
|
147
|
-
funcOnEvent(fileList);
|
|
148
|
-
};
|
|
149
|
-
var preventDefault = (event) => {
|
|
150
|
-
event?.preventDefault?.();
|
|
151
|
-
return event;
|
|
152
|
-
};
|
|
153
|
-
var stopPropagation = (event) => {
|
|
154
|
-
event?.stopPropagation?.();
|
|
155
|
-
return event;
|
|
156
|
-
};
|
|
157
|
-
|
|
158
|
-
// src/services/internal/config/commonConfigService.ts
|
|
159
|
-
var CommonConfigService = class {
|
|
160
|
-
_internalIsProd;
|
|
161
|
-
getHubApiUrl = () => this.get("VITE_HUB_API_URL");
|
|
162
|
-
getHubLandingUrl = () => this.get("VITE_HUB_LANDING_URL");
|
|
163
|
-
getHubClientUrl = () => this.get("VITE_HUB_CLIENT_URL");
|
|
164
|
-
getHubAdminUrl = () => this.get("VITE_HUB_ADMIN_URL");
|
|
165
|
-
getHubCoverageUrl = () => this.get("VITE_HUB_COVERAGE_URL");
|
|
166
|
-
getHubDocsUrl = () => this.get("VITE_HUB_DOCS_URL");
|
|
167
|
-
getHubStorybookUrl = () => this.get("VITE_HUB_STORYBOOK_URL");
|
|
168
|
-
getHubspotId = () => this.get("VITE_HUBSPOT_ID");
|
|
169
|
-
getFakeApiRequestDelay = () => this.getNumber("VITE_FAKE_API_REQUEST_DELAY");
|
|
170
|
-
getCaptchaEnabled = () => this.getBool("VITE_ENABLE_CAPTCHA");
|
|
171
|
-
getHCaptchaSecret = () => this.get("HCAPTCHA_SECRET");
|
|
172
|
-
getHCaptchaSiteKey = () => this.get("VITE_HCAPTCHA_SITE_KEY");
|
|
173
|
-
getTolgeeApiKey = () => this.get("VITE_TOLGEE_API_KEY");
|
|
174
|
-
getTolgeeApiUrl = () => this.get("VITE_TOLGEE_API_URL");
|
|
175
|
-
getTolgeeProjectId = () => this.getNumber("VITE_TOLGEE_PROJECT_ID");
|
|
176
|
-
/* Special case, available on UI & API */
|
|
177
|
-
isProd = () => {
|
|
178
|
-
if (this._internalIsProd == null) {
|
|
179
|
-
this._internalIsProd = this.get("NODE_ENV").toLocaleLowerCase() === "production" || this.get("MODE").toLocaleLowerCase() === "production";
|
|
180
|
-
}
|
|
181
|
-
return this._internalIsProd;
|
|
182
|
-
};
|
|
183
|
-
packageVersion = () => this.getWithFallback("npm_package_version", "PACKAGE_VERSION");
|
|
184
|
-
getConsoleLogLevels = () => {
|
|
185
|
-
const envVar = this.get("VITE_CONSOLE_LOGGING");
|
|
186
|
-
if (envVar?.length < 1) return ["trace", "log", "info", "debug", "warn", "error"];
|
|
187
|
-
return envVar.split(",").map((l) => l);
|
|
188
|
-
};
|
|
189
|
-
get(property, defaultValue) {
|
|
190
|
-
let value = void 0;
|
|
191
|
-
value = import.meta.env?.[property];
|
|
192
|
-
if (defaultValue != null) {
|
|
193
|
-
return value ?? defaultValue;
|
|
194
|
-
}
|
|
195
|
-
return value ?? "";
|
|
196
|
-
}
|
|
197
|
-
getWithFallback = (property, fallbackProperty, defaultValue) => {
|
|
198
|
-
const orig = this.get(property);
|
|
199
|
-
if (orig != null) return orig;
|
|
200
|
-
return this.get(fallbackProperty, defaultValue);
|
|
201
|
-
};
|
|
202
|
-
getBool = (property, defaultValue) => this.get(property, defaultValue).toLowerCase() == "true";
|
|
203
|
-
getNumber = (property, defaultValue) => Number(this.get(property, defaultValue?.toString?.()));
|
|
204
|
-
};
|
|
119
|
+
// src/helpers/typescriptHacks.ts
|
|
120
|
+
var anyObject = () => ({});
|
|
121
|
+
var fakePromise = () => new Promise((res) => res({}));
|
|
205
122
|
var formatDate = (date, format = "DD MMM YYYY HH:mm") => {
|
|
206
123
|
const dateStr = dayjs(date).format(format);
|
|
207
124
|
if (dateStr.includes("Invalid")) return "";
|
|
@@ -242,193 +159,17 @@ var getWeekNumber = (d) => {
|
|
|
242
159
|
return Math.ceil(((d.getTime() - yearStart.getTime()) / 864e5 + 1) / 7);
|
|
243
160
|
};
|
|
244
161
|
|
|
245
|
-
// src/services/internal/log/logService.ts
|
|
246
|
-
var LogService = class {
|
|
247
|
-
constructor(config, _numDaysToKeep = 100) {
|
|
248
|
-
this._numDaysToKeep = _numDaysToKeep;
|
|
249
|
-
this._logLevels = config.getConsoleLogLevels();
|
|
250
|
-
this._latestLogDate = addDays(/* @__PURE__ */ new Date(), -this._numDaysToKeep);
|
|
251
|
-
console.info("Log Levels: ", this._logLevels.join());
|
|
252
|
-
}
|
|
253
|
-
logs = [];
|
|
254
|
-
_logLevels;
|
|
255
|
-
_latestLogDate;
|
|
256
|
-
_logMessageToConsole = (log) => {
|
|
257
|
-
let logStyle = "";
|
|
258
|
-
switch (log.type) {
|
|
259
|
-
case "log":
|
|
260
|
-
case "info":
|
|
261
|
-
logStyle = "color: green; font-size: medium";
|
|
262
|
-
break;
|
|
263
|
-
case "warn":
|
|
264
|
-
logStyle = "color: orange; font-size: medium";
|
|
265
|
-
break;
|
|
266
|
-
case "error":
|
|
267
|
-
logStyle = "color: red; font-size: large";
|
|
268
|
-
break;
|
|
269
|
-
}
|
|
270
|
-
let messageString = `%c${log.message}`;
|
|
271
|
-
if ((log.optionalParams ?? []).length > 0) {
|
|
272
|
-
messageString += `
|
|
273
|
-
additional params:
|
|
274
|
-
${(log.optionalParams ?? []).join("\n\r")}`;
|
|
275
|
-
}
|
|
276
|
-
if ((log.groups ?? []).length > 0) {
|
|
277
|
-
const groupString = (log.groups ?? []).map((g) => `[${g}]`).join();
|
|
278
|
-
messageString = `${groupString} - ${messageString}`;
|
|
279
|
-
}
|
|
280
|
-
const dateString = formatForDateLocalDetailed(/* @__PURE__ */ new Date());
|
|
281
|
-
const logFunc = console[log.type];
|
|
282
|
-
logFunc(`${dateString}: ${messageString}`, logStyle);
|
|
283
|
-
};
|
|
284
|
-
_track = (type, groups) => (message, ...optionalParams) => {
|
|
285
|
-
const log = {
|
|
286
|
-
type,
|
|
287
|
-
groups,
|
|
288
|
-
message,
|
|
289
|
-
date: /* @__PURE__ */ new Date(),
|
|
290
|
-
optionalParams: optionalParams.map((op) => JSON.stringify(op, null, 2))
|
|
291
|
-
};
|
|
292
|
-
this.logs = this.logs.filter((t) => t.date > this._latestLogDate);
|
|
293
|
-
this.logs.push(log);
|
|
294
|
-
if (this._logLevels.includes(log.type) === false) return;
|
|
295
|
-
else this._logMessageToConsole(log);
|
|
296
|
-
};
|
|
297
|
-
getLogger = (...groups) => ({
|
|
298
|
-
d: this._track("debug", groups),
|
|
299
|
-
i: this._track("info", groups),
|
|
300
|
-
w: this._track("warn", groups),
|
|
301
|
-
e: this._track("error", groups)
|
|
302
|
-
});
|
|
303
|
-
};
|
|
304
|
-
var dependencyInjectionSetup = (props) => {
|
|
305
|
-
setContainerToken(APP_TYPE, props.appType);
|
|
306
|
-
if (props.botPath != null) setContainerToken(BOT_PATH, props.botPath);
|
|
307
|
-
if (props.siteConfig != null) setContainerToken(SITE_CONFIG, props.siteConfig);
|
|
308
|
-
const configService = new CommonConfigService();
|
|
309
|
-
const logService = new LogService(configService);
|
|
310
|
-
setContainerToken(CommonConfigService, configService);
|
|
311
|
-
setContainerToken(LogService, logService);
|
|
312
|
-
return {
|
|
313
|
-
logService,
|
|
314
|
-
configService
|
|
315
|
-
};
|
|
316
|
-
};
|
|
317
|
-
var BOT_PATH = new Token("BOT_PATH");
|
|
318
|
-
var getBotPath = () => Container.get(BOT_PATH);
|
|
319
|
-
var APP_TYPE = new Token("APP_TYPE");
|
|
320
|
-
var getAppType = () => Container.get(APP_TYPE);
|
|
321
|
-
var SITE_CONFIG = new Token("SITE_CONFIG");
|
|
322
|
-
var setSiteConfig = (value) => Container.set({ id: SITE_CONFIG, value });
|
|
323
|
-
var getSiteConfig = () => {
|
|
324
|
-
try {
|
|
325
|
-
return Container.get(SITE_CONFIG);
|
|
326
|
-
} catch {
|
|
327
|
-
console.error("unable to get site config. Did you set the config on app startup?");
|
|
328
|
-
}
|
|
329
|
-
};
|
|
330
|
-
var setContainerToken = (id, value) => Container.set({ id, value });
|
|
331
|
-
var getCommonConfig = () => Container.get(CommonConfigService);
|
|
332
|
-
var getLog = () => Container.get(LogService);
|
|
333
|
-
|
|
334
|
-
// src/helpers/typescriptHacks.ts
|
|
335
|
-
var anyObject = () => ({});
|
|
336
|
-
var fakePromise = () => new Promise((res) => res({}));
|
|
337
|
-
|
|
338
|
-
// src/helpers/imageHelper.ts
|
|
339
|
-
var getImageParams = (file) => {
|
|
340
|
-
const fileExtension = file.name?.split?.(".")?.pop?.() ?? ".png";
|
|
341
|
-
return new Promise((resolve, reject) => {
|
|
342
|
-
const reader = new FileReader();
|
|
343
|
-
reader.onload = async (e) => {
|
|
344
|
-
const image = new Image();
|
|
345
|
-
if (e.target == null || e.target.result == null) {
|
|
346
|
-
reject("e.target.result is null");
|
|
347
|
-
return;
|
|
348
|
-
}
|
|
349
|
-
image.src = e.target.result;
|
|
350
|
-
await image.decode();
|
|
351
|
-
resolve({
|
|
352
|
-
name: file.name,
|
|
353
|
-
type: file.type,
|
|
354
|
-
width: image.width,
|
|
355
|
-
height: image.height,
|
|
356
|
-
fileSize: file.size,
|
|
357
|
-
fileExtension
|
|
358
|
-
});
|
|
359
|
-
};
|
|
360
|
-
reader.onerror = (e) => reject(e);
|
|
361
|
-
reader.readAsDataURL(file);
|
|
362
|
-
});
|
|
363
|
-
};
|
|
364
|
-
|
|
365
|
-
// src/contracts/generated/enum/permissionType.ts
|
|
366
|
-
var PermissionType = /* @__PURE__ */ ((PermissionType2) => {
|
|
367
|
-
PermissionType2[PermissionType2["None"] = 0] = "None";
|
|
368
|
-
PermissionType2[PermissionType2["All"] = 1] = "All";
|
|
369
|
-
PermissionType2[PermissionType2["AdminLogin"] = 2] = "AdminLogin";
|
|
370
|
-
PermissionType2[PermissionType2["UserView"] = 20] = "UserView";
|
|
371
|
-
PermissionType2[PermissionType2["UserManage"] = 21] = "UserManage";
|
|
372
|
-
PermissionType2[PermissionType2["UserDelete"] = 22] = "UserDelete";
|
|
373
|
-
PermissionType2[PermissionType2["ActivitiesView"] = 30] = "ActivitiesView";
|
|
374
|
-
PermissionType2[PermissionType2["UserPermissionView"] = 40] = "UserPermissionView";
|
|
375
|
-
PermissionType2[PermissionType2["UserPermissionManage"] = 41] = "UserPermissionManage";
|
|
376
|
-
PermissionType2[PermissionType2["UserPermissionDelete"] = 42] = "UserPermissionDelete";
|
|
377
|
-
PermissionType2[PermissionType2["PetView"] = 60] = "PetView";
|
|
378
|
-
PermissionType2[PermissionType2["PetManage"] = 61] = "PetManage";
|
|
379
|
-
PermissionType2[PermissionType2["PetDelete"] = 62] = "PetDelete";
|
|
380
|
-
PermissionType2[PermissionType2["CommentView"] = 80] = "CommentView";
|
|
381
|
-
PermissionType2[PermissionType2["CommentManage"] = 81] = "CommentManage";
|
|
382
|
-
PermissionType2[PermissionType2["CommentDelete"] = 82] = "CommentDelete";
|
|
383
|
-
PermissionType2[PermissionType2["AddressView"] = 100] = "AddressView";
|
|
384
|
-
PermissionType2[PermissionType2["AddressManage"] = 101] = "AddressManage";
|
|
385
|
-
PermissionType2[PermissionType2["AddressDelete"] = 102] = "AddressDelete";
|
|
386
|
-
PermissionType2[PermissionType2["BookingView"] = 120] = "BookingView";
|
|
387
|
-
PermissionType2[PermissionType2["BookingManage"] = 121] = "BookingManage";
|
|
388
|
-
PermissionType2[PermissionType2["BookingDelete"] = 122] = "BookingDelete";
|
|
389
|
-
PermissionType2[PermissionType2["AnswerView"] = 140] = "AnswerView";
|
|
390
|
-
PermissionType2[PermissionType2["AnswerManage"] = 141] = "AnswerManage";
|
|
391
|
-
PermissionType2[PermissionType2["AnswerDelete"] = 142] = "AnswerDelete";
|
|
392
|
-
PermissionType2[PermissionType2["QuestionView"] = 150] = "QuestionView";
|
|
393
|
-
PermissionType2[PermissionType2["QuestionManage"] = 151] = "QuestionManage";
|
|
394
|
-
PermissionType2[PermissionType2["QuestionDelete"] = 152] = "QuestionDelete";
|
|
395
|
-
PermissionType2[PermissionType2["UploadView"] = 160] = "UploadView";
|
|
396
|
-
PermissionType2[PermissionType2["UploadManage"] = 161] = "UploadManage";
|
|
397
|
-
PermissionType2[PermissionType2["UploadDelete"] = 162] = "UploadDelete";
|
|
398
|
-
PermissionType2[PermissionType2["MembershipView"] = 170] = "MembershipView";
|
|
399
|
-
PermissionType2[PermissionType2["MembershipManage"] = 171] = "MembershipManage";
|
|
400
|
-
PermissionType2[PermissionType2["MembershipDelete"] = 172] = "MembershipDelete";
|
|
401
|
-
PermissionType2[PermissionType2["UserMembershipView"] = 180] = "UserMembershipView";
|
|
402
|
-
PermissionType2[PermissionType2["UserMembershipManage"] = 181] = "UserMembershipManage";
|
|
403
|
-
PermissionType2[PermissionType2["UserMembershipDelete"] = 182] = "UserMembershipDelete";
|
|
404
|
-
return PermissionType2;
|
|
405
|
-
})(PermissionType || {});
|
|
406
|
-
|
|
407
|
-
// src/helpers/permissionHelper.ts
|
|
408
|
-
var hasRequiredPermissions = (props) => {
|
|
409
|
-
if (props.userPermissions.includes(1 /* All */)) {
|
|
410
|
-
props.hasAdminPermission?.();
|
|
411
|
-
return true;
|
|
412
|
-
}
|
|
413
|
-
const missingPermissions = props.requiredPermissions.filter((p) => props.userPermissions.includes(p) == false);
|
|
414
|
-
if (missingPermissions.length > 0) {
|
|
415
|
-
props.doesNotHavePermission?.(missingPermissions);
|
|
416
|
-
return false;
|
|
417
|
-
}
|
|
418
|
-
return true;
|
|
419
|
-
};
|
|
420
|
-
|
|
421
162
|
// src/assets/meta.json
|
|
422
163
|
var meta_default = {
|
|
423
164
|
packageVersion: "0.11.0",
|
|
424
|
-
date: "2025-08-
|
|
425
|
-
gitCommitHash: "
|
|
165
|
+
date: "2025-08-31",
|
|
166
|
+
gitCommitHash: "2e4e0ec3cc603d9540250a7fd4721fcaec6ba608"
|
|
426
167
|
};
|
|
427
168
|
|
|
428
169
|
// src/assets/packagesUsed.json
|
|
429
170
|
var packagesUsed_default = {
|
|
430
|
-
generatedDate: "2025-08-
|
|
431
|
-
generatedDateFormat: "2025-08-
|
|
171
|
+
generatedDate: "2025-08-31T19:05:39.039Z",
|
|
172
|
+
generatedDateFormat: "2025-08-31",
|
|
432
173
|
list: [
|
|
433
174
|
{
|
|
434
175
|
name: "@chromatic-com/storybook",
|
|
@@ -566,169 +307,178 @@ var packagesUsed_default = {
|
|
|
566
307
|
var getMeta = () => meta_default;
|
|
567
308
|
var getPackagesUsed = () => packagesUsed_default;
|
|
568
309
|
|
|
569
|
-
// src/helpers/
|
|
570
|
-
|
|
571
|
-
|
|
572
|
-
|
|
573
|
-
|
|
574
|
-
|
|
310
|
+
// src/helpers/stringHelper.ts
|
|
311
|
+
var capitalizeAlphabet = "ABCDEFGHIJKLMNOPQRSTUVWXYZ";
|
|
312
|
+
var capitalizeFirstLetter = (orig) => {
|
|
313
|
+
if ((orig?.length ?? 0) == 0) return orig;
|
|
314
|
+
return [orig[0].toUpperCase(), ...orig.slice(1, orig.length)].join("");
|
|
315
|
+
};
|
|
316
|
+
var lowercaseFirstLetter = (orig) => {
|
|
317
|
+
if (orig.length == 0) return orig;
|
|
318
|
+
return [orig[0].toLowerCase(), ...orig.slice(1, orig.length)].join("");
|
|
319
|
+
};
|
|
320
|
+
var addSpacesForEnum = (orig) => {
|
|
321
|
+
if (orig.length == 0) return orig;
|
|
322
|
+
let result = "";
|
|
323
|
+
for (const char of orig) {
|
|
324
|
+
if (capitalizeAlphabet.includes(char)) {
|
|
325
|
+
result += " ";
|
|
575
326
|
}
|
|
576
|
-
|
|
577
|
-
|
|
578
|
-
|
|
327
|
+
result += char;
|
|
328
|
+
}
|
|
329
|
+
return result;
|
|
330
|
+
};
|
|
331
|
+
var formatFileSize = (sizeInKb) => {
|
|
332
|
+
const units = ["KB", "MB", "GB", "TB"];
|
|
333
|
+
let size = sizeInKb;
|
|
334
|
+
let unitIndex = 0;
|
|
335
|
+
while (size >= 1024 && unitIndex < units.length - 1) {
|
|
336
|
+
size /= 1024;
|
|
337
|
+
unitIndex++;
|
|
338
|
+
}
|
|
339
|
+
const formatter = new Intl.NumberFormat("en-US", {
|
|
340
|
+
minimumFractionDigits: 0,
|
|
341
|
+
maximumFractionDigits: 0
|
|
579
342
|
});
|
|
580
|
-
|
|
581
|
-
|
|
582
|
-
}
|
|
583
|
-
|
|
584
|
-
// src/helpers/commonHelper.ts
|
|
585
|
-
var getUsersName = (details) => `${details?.firstName} ${details?.lastName}`;
|
|
343
|
+
return `${formatter.format(size)} ${units[unitIndex]}`;
|
|
344
|
+
};
|
|
586
345
|
|
|
587
|
-
// src/
|
|
588
|
-
var
|
|
589
|
-
|
|
590
|
-
|
|
591
|
-
|
|
592
|
-
|
|
593
|
-
|
|
594
|
-
|
|
595
|
-
|
|
596
|
-
|
|
597
|
-
|
|
598
|
-
|
|
599
|
-
|
|
600
|
-
|
|
601
|
-
|
|
602
|
-
|
|
603
|
-
|
|
604
|
-
|
|
605
|
-
|
|
606
|
-
|
|
607
|
-
|
|
608
|
-
|
|
609
|
-
|
|
610
|
-
|
|
611
|
-
|
|
612
|
-
|
|
613
|
-
|
|
614
|
-
|
|
615
|
-
|
|
616
|
-
|
|
617
|
-
|
|
618
|
-
|
|
619
|
-
|
|
620
|
-
|
|
621
|
-
|
|
622
|
-
|
|
623
|
-
|
|
624
|
-
|
|
625
|
-
swagger: { name: "Addresses", description: "Endpoints for managing addresses" }
|
|
626
|
-
},
|
|
627
|
-
answer: {
|
|
628
|
-
prefix: "/admin/answer",
|
|
629
|
-
swagger: { name: "Answers", description: "Endpoints for managing answers to signup questions" }
|
|
630
|
-
},
|
|
631
|
-
booking: {
|
|
632
|
-
prefix: "/admin/booking",
|
|
633
|
-
byUser: "/user",
|
|
634
|
-
swagger: { name: "Bookings", description: "Endpoints for managing bookings" }
|
|
635
|
-
},
|
|
636
|
-
comment: {
|
|
637
|
-
prefix: "/admin/comment",
|
|
638
|
-
byLink: "/link",
|
|
639
|
-
swagger: { name: "Comments", description: "Endpoints for managing Comments" }
|
|
640
|
-
},
|
|
641
|
-
membership: {
|
|
642
|
-
prefix: "/admin/membership",
|
|
643
|
-
swagger: { name: "Memberships", description: "Endpoints for managing Memberships" }
|
|
644
|
-
},
|
|
645
|
-
pet: {
|
|
646
|
-
prefix: "/admin/pet",
|
|
647
|
-
byUser: "/user",
|
|
648
|
-
swagger: { name: "Pets", description: "Endpoints for managing Pets" }
|
|
649
|
-
},
|
|
650
|
-
question: {
|
|
651
|
-
prefix: "/admin/question",
|
|
652
|
-
swagger: {
|
|
653
|
-
name: "Questions",
|
|
654
|
-
description: "Endpoints for managing questions that users need to answer in order to complete their profiles"
|
|
655
|
-
}
|
|
656
|
-
},
|
|
657
|
-
upload: {
|
|
658
|
-
prefix: "/admin/upload",
|
|
659
|
-
viewRaw: "/view-raw",
|
|
660
|
-
image: "/image",
|
|
661
|
-
swagger: { name: "Uploads", description: "Endpoints for managing Uploads" }
|
|
662
|
-
},
|
|
663
|
-
user: {
|
|
664
|
-
prefix: "/admin/user",
|
|
665
|
-
swagger: { name: "Users", description: "Endpoints for Admins to manage Users" }
|
|
666
|
-
},
|
|
667
|
-
userMembership: {
|
|
668
|
-
prefix: "/admin/user-membership",
|
|
669
|
-
byUser: "/user",
|
|
670
|
-
swagger: { name: "UserMemberships", description: "Endpoints for managing User's Memberships" }
|
|
671
|
-
},
|
|
672
|
-
userPermission: {
|
|
673
|
-
prefix: "/admin/user-permission",
|
|
674
|
-
swagger: { name: "UserPermissions", description: "Endpoints for getting and managing user permissions." }
|
|
675
|
-
}
|
|
676
|
-
},
|
|
677
|
-
client: {
|
|
678
|
-
answer: {
|
|
679
|
-
prefix: "/answer",
|
|
680
|
-
forProfile: "/profile",
|
|
681
|
-
forPet: "/pet",
|
|
682
|
-
swagger: { name: "Answers", description: "Endpoints for managing answers to signup questions" }
|
|
683
|
-
},
|
|
684
|
-
booking: {
|
|
685
|
-
prefix: "/booking",
|
|
686
|
-
swagger: { name: "Bookings", description: "Endpoints for User to manage their Bookings" }
|
|
687
|
-
},
|
|
688
|
-
membership: {
|
|
689
|
-
prefix: "/membership",
|
|
690
|
-
swagger: { name: "MembershipTiers", description: "Endpoints for public TierMemberships" }
|
|
691
|
-
},
|
|
692
|
-
pet: {
|
|
693
|
-
prefix: "/pet",
|
|
694
|
-
swagger: { name: "Pets", description: "Endpoints for User to manage their Pets" }
|
|
695
|
-
},
|
|
696
|
-
profile: {
|
|
697
|
-
prefix: "/profile",
|
|
698
|
-
avatar: "/avatar",
|
|
699
|
-
answers: "/answers",
|
|
700
|
-
swagger: { name: "Profile", description: "Endpoints for User to manage their Profile" }
|
|
701
|
-
},
|
|
702
|
-
upload: {
|
|
703
|
-
prefix: "/upload",
|
|
704
|
-
image: "/image",
|
|
705
|
-
swagger: { name: "Uploads", description: "Endpoints for managing Uploads" }
|
|
706
|
-
}
|
|
346
|
+
// src/services/internal/config/commonConfigService.ts
|
|
347
|
+
var CommonConfigService = class {
|
|
348
|
+
_internalIsProd;
|
|
349
|
+
getHubApiUrl = () => this.get("VITE_HUB_API_URL");
|
|
350
|
+
getHubLandingUrl = () => this.get("VITE_HUB_LANDING_URL");
|
|
351
|
+
getHubClientUrl = () => this.get("VITE_HUB_CLIENT_URL");
|
|
352
|
+
getHubAdminUrl = () => this.get("VITE_HUB_ADMIN_URL");
|
|
353
|
+
getHubCoverageUrl = () => this.get("VITE_HUB_COVERAGE_URL");
|
|
354
|
+
getHubDocsUrl = () => this.get("VITE_HUB_DOCS_URL");
|
|
355
|
+
getHubStorybookUrl = () => this.get("VITE_HUB_STORYBOOK_URL");
|
|
356
|
+
getHubspotId = () => this.get("VITE_HUBSPOT_ID");
|
|
357
|
+
getFakeApiRequestDelay = () => this.getNumber("VITE_FAKE_API_REQUEST_DELAY");
|
|
358
|
+
getCaptchaEnabled = () => this.getBool("VITE_ENABLE_CAPTCHA");
|
|
359
|
+
getHCaptchaSecret = () => this.get("HCAPTCHA_SECRET");
|
|
360
|
+
getHCaptchaSiteKey = () => this.get("VITE_HCAPTCHA_SITE_KEY");
|
|
361
|
+
getTolgeeApiKey = () => this.get("VITE_TOLGEE_API_KEY");
|
|
362
|
+
getTolgeeApiUrl = () => this.get("VITE_TOLGEE_API_URL");
|
|
363
|
+
getTolgeeProjectId = () => this.getNumber("VITE_TOLGEE_PROJECT_ID");
|
|
364
|
+
/* Special case, available on UI & API */
|
|
365
|
+
isProd = () => {
|
|
366
|
+
if (this._internalIsProd == null) {
|
|
367
|
+
this._internalIsProd = this.get("NODE_ENV").toLocaleLowerCase() === "production" || this.get("MODE").toLocaleLowerCase() === "production";
|
|
368
|
+
}
|
|
369
|
+
return this._internalIsProd;
|
|
370
|
+
};
|
|
371
|
+
packageVersion = () => this.getWithFallback("npm_package_version", "PACKAGE_VERSION");
|
|
372
|
+
getConsoleLogLevels = () => {
|
|
373
|
+
const envVar = this.get("VITE_CONSOLE_LOGGING");
|
|
374
|
+
if (envVar?.length < 1) return ["trace", "log", "info", "debug", "warn", "error"];
|
|
375
|
+
return envVar.split(",").map((l) => l);
|
|
376
|
+
};
|
|
377
|
+
get(property, defaultValue) {
|
|
378
|
+
let value = void 0;
|
|
379
|
+
value = import.meta.env?.[property];
|
|
380
|
+
if (defaultValue != null) {
|
|
381
|
+
return value ?? defaultValue;
|
|
382
|
+
}
|
|
383
|
+
return value ?? "";
|
|
707
384
|
}
|
|
385
|
+
getWithFallback = (property, fallbackProperty, defaultValue) => {
|
|
386
|
+
const orig = this.get(property);
|
|
387
|
+
if (orig != null) return orig;
|
|
388
|
+
return this.get(fallbackProperty, defaultValue);
|
|
389
|
+
};
|
|
390
|
+
getBool = (property, defaultValue) => this.get(property, defaultValue).toLowerCase() == "true";
|
|
391
|
+
getNumber = (property, defaultValue) => Number(this.get(property, defaultValue?.toString?.()));
|
|
708
392
|
};
|
|
709
393
|
|
|
710
|
-
// src/
|
|
711
|
-
var
|
|
712
|
-
|
|
713
|
-
|
|
714
|
-
|
|
715
|
-
|
|
394
|
+
// src/services/internal/log/logService.ts
|
|
395
|
+
var LogService = class {
|
|
396
|
+
constructor(config, _numDaysToKeep = 100) {
|
|
397
|
+
this._numDaysToKeep = _numDaysToKeep;
|
|
398
|
+
this._logLevels = config.getConsoleLogLevels();
|
|
399
|
+
this._latestLogDate = addDays(/* @__PURE__ */ new Date(), -this._numDaysToKeep);
|
|
400
|
+
console.info("Log Levels: ", this._logLevels.join());
|
|
401
|
+
}
|
|
402
|
+
logs = [];
|
|
403
|
+
_logLevels;
|
|
404
|
+
_latestLogDate;
|
|
405
|
+
_logMessageToConsole = (log) => {
|
|
406
|
+
let logStyle = "";
|
|
407
|
+
switch (log.type) {
|
|
408
|
+
case "log":
|
|
409
|
+
case "info":
|
|
410
|
+
logStyle = "color: green; font-size: medium";
|
|
411
|
+
break;
|
|
412
|
+
case "warn":
|
|
413
|
+
logStyle = "color: orange; font-size: medium";
|
|
414
|
+
break;
|
|
415
|
+
case "error":
|
|
416
|
+
logStyle = "color: red; font-size: large";
|
|
417
|
+
break;
|
|
418
|
+
}
|
|
419
|
+
let messageString = `%c${log.message}`;
|
|
420
|
+
if ((log.optionalParams ?? []).length > 0) {
|
|
421
|
+
messageString += `
|
|
422
|
+
additional params:
|
|
423
|
+
${(log.optionalParams ?? []).join("\n\r")}`;
|
|
424
|
+
}
|
|
425
|
+
if ((log.groups ?? []).length > 0) {
|
|
426
|
+
const groupString = (log.groups ?? []).map((g) => `[${g}]`).join();
|
|
427
|
+
messageString = `${groupString} - ${messageString}`;
|
|
428
|
+
}
|
|
429
|
+
const dateString = formatForDateLocalDetailed(/* @__PURE__ */ new Date());
|
|
430
|
+
const logFunc = console[log.type];
|
|
431
|
+
logFunc(`${dateString}: ${messageString}`, logStyle);
|
|
432
|
+
};
|
|
433
|
+
_track = (type, groups) => (message, ...optionalParams) => {
|
|
434
|
+
const log = {
|
|
435
|
+
type,
|
|
436
|
+
groups,
|
|
437
|
+
message,
|
|
438
|
+
date: /* @__PURE__ */ new Date(),
|
|
439
|
+
optionalParams: optionalParams.map((op) => JSON.stringify(op, null, 2))
|
|
440
|
+
};
|
|
441
|
+
this.logs = this.logs.filter((t) => t.date > this._latestLogDate);
|
|
442
|
+
this.logs.push(log);
|
|
443
|
+
if (this._logLevels.includes(log.type) === false) return;
|
|
444
|
+
else this._logMessageToConsole(log);
|
|
445
|
+
};
|
|
446
|
+
getLogger = (...groups) => ({
|
|
447
|
+
d: this._track("debug", groups),
|
|
448
|
+
i: this._track("info", groups),
|
|
449
|
+
w: this._track("warn", groups),
|
|
450
|
+
e: this._track("error", groups)
|
|
451
|
+
});
|
|
716
452
|
};
|
|
717
|
-
|
|
718
|
-
|
|
719
|
-
|
|
720
|
-
|
|
453
|
+
var dependencyInjectionSetup = (props) => {
|
|
454
|
+
setContainerToken(APP_TYPE, props.appType);
|
|
455
|
+
if (props.botPath != null) setContainerToken(BOT_PATH, props.botPath);
|
|
456
|
+
if (props.siteConfig != null) setContainerToken(SITE_CONFIG, props.siteConfig);
|
|
457
|
+
const configService = new CommonConfigService();
|
|
458
|
+
const logService = new LogService(configService);
|
|
459
|
+
setContainerToken(CommonConfigService, configService);
|
|
460
|
+
setContainerToken(LogService, logService);
|
|
461
|
+
return {
|
|
462
|
+
logService,
|
|
463
|
+
configService
|
|
464
|
+
};
|
|
721
465
|
};
|
|
722
|
-
var
|
|
723
|
-
|
|
724
|
-
|
|
725
|
-
|
|
726
|
-
|
|
727
|
-
|
|
466
|
+
var BOT_PATH = new Token("BOT_PATH");
|
|
467
|
+
var getBotPath = () => Container.get(BOT_PATH);
|
|
468
|
+
var APP_TYPE = new Token("APP_TYPE");
|
|
469
|
+
var getAppType = () => Container.get(APP_TYPE);
|
|
470
|
+
var SITE_CONFIG = new Token("SITE_CONFIG");
|
|
471
|
+
var setSiteConfig = (value) => Container.set({ id: SITE_CONFIG, value });
|
|
472
|
+
var getSiteConfig = () => {
|
|
473
|
+
try {
|
|
474
|
+
return Container.get(SITE_CONFIG);
|
|
475
|
+
} catch {
|
|
476
|
+
console.error("unable to get site config. Did you set the config on app startup?");
|
|
728
477
|
}
|
|
729
|
-
tasks.push(newTask);
|
|
730
|
-
return tasks;
|
|
731
478
|
};
|
|
479
|
+
var setContainerToken = (id, value) => Container.set({ id, value });
|
|
480
|
+
var getCommonConfig = () => Container.get(CommonConfigService);
|
|
481
|
+
var getLog = () => Container.get(LogService);
|
|
732
482
|
|
|
733
483
|
// src/helpers/urlHelper.ts
|
|
734
484
|
var urlRef = (url) => {
|
|
@@ -739,341 +489,296 @@ var urlRef = (url) => {
|
|
|
739
489
|
}
|
|
740
490
|
return url + `?ref=${ref}`;
|
|
741
491
|
};
|
|
742
|
-
var getPayloadFromJwt = (token) => {
|
|
743
|
-
try {
|
|
744
|
-
const decoded = jwtDecode(token);
|
|
745
|
-
const timeStamp = (/* @__PURE__ */ new Date()).getTime() / 1e3;
|
|
746
|
-
if (decoded.exp < timeStamp) {
|
|
747
|
-
throw "JWT token expired";
|
|
748
|
-
}
|
|
749
|
-
return {
|
|
750
|
-
isSuccess: true,
|
|
751
|
-
value: ""
|
|
752
|
-
};
|
|
753
|
-
} catch (err) {
|
|
754
|
-
return {
|
|
755
|
-
isSuccess: false,
|
|
756
|
-
errorMessage: err?.toString?.() ?? ""
|
|
757
|
-
};
|
|
758
|
-
}
|
|
759
|
-
};
|
|
760
492
|
|
|
761
|
-
// src/helpers/
|
|
762
|
-
|
|
763
|
-
|
|
764
|
-
|
|
765
|
-
|
|
493
|
+
// src/helpers/debounceHelper.ts
|
|
494
|
+
function debounceLeading(fn, ms) {
|
|
495
|
+
let timer;
|
|
496
|
+
const func = (args) => new Promise((resolve) => {
|
|
497
|
+
if (timer) {
|
|
498
|
+
clearTimeout(timer);
|
|
499
|
+
}
|
|
500
|
+
timer = setTimeout(() => {
|
|
501
|
+
resolve(fn(args));
|
|
502
|
+
}, ms);
|
|
503
|
+
});
|
|
504
|
+
const destroy = () => clearTimeout(timer);
|
|
505
|
+
return { func, destroy };
|
|
506
|
+
}
|
|
766
507
|
|
|
767
|
-
// src/
|
|
768
|
-
var
|
|
769
|
-
|
|
508
|
+
// src/helpers/hashHelper.ts
|
|
509
|
+
var cyrb53 = (input, seed = 0) => {
|
|
510
|
+
let h1 = 3735928559 ^ seed, h2 = 1103547991 ^ seed;
|
|
511
|
+
for (let i = 0, ch; i < input.length; i++) {
|
|
512
|
+
ch = input.charCodeAt(i);
|
|
513
|
+
h1 = Math.imul(h1 ^ ch, 2654435761);
|
|
514
|
+
h2 = Math.imul(h2 ^ ch, 1597334677);
|
|
515
|
+
}
|
|
516
|
+
h1 = Math.imul(h1 ^ h1 >>> 16, 2246822507);
|
|
517
|
+
h1 ^= Math.imul(h2 ^ h2 >>> 13, 3266489909);
|
|
518
|
+
h2 = Math.imul(h2 ^ h2 >>> 16, 2246822507);
|
|
519
|
+
h2 ^= Math.imul(h1 ^ h1 >>> 13, 3266489909);
|
|
520
|
+
return 4294967296 * (2097151 & h2) + (h1 >>> 0);
|
|
770
521
|
};
|
|
771
522
|
|
|
772
|
-
// src/
|
|
773
|
-
var
|
|
774
|
-
|
|
775
|
-
|
|
776
|
-
|
|
777
|
-
"2",
|
|
778
|
-
"3",
|
|
779
|
-
"4",
|
|
780
|
-
"5",
|
|
781
|
-
"6",
|
|
782
|
-
"7",
|
|
783
|
-
"8",
|
|
784
|
-
"9",
|
|
785
|
-
"0",
|
|
786
|
-
"A",
|
|
787
|
-
"B",
|
|
788
|
-
"C",
|
|
789
|
-
"D",
|
|
790
|
-
"E",
|
|
791
|
-
"F"
|
|
792
|
-
];
|
|
793
|
-
|
|
794
|
-
// src/contracts/generated/enum/appType.ts
|
|
795
|
-
var AppType = /* @__PURE__ */ ((AppType2) => {
|
|
796
|
-
AppType2[AppType2["Admin"] = 0] = "Admin";
|
|
797
|
-
AppType2[AppType2["Client"] = 1] = "Client";
|
|
798
|
-
AppType2[AppType2["Api"] = 2] = "Api";
|
|
799
|
-
AppType2[AppType2["Test"] = 3] = "Test";
|
|
800
|
-
AppType2[AppType2["Interactive"] = 4] = "Interactive";
|
|
801
|
-
return AppType2;
|
|
802
|
-
})(AppType || {});
|
|
803
|
-
var webAppTypes = [
|
|
804
|
-
0 /* Admin */,
|
|
805
|
-
//
|
|
806
|
-
1 /* Client */
|
|
807
|
-
];
|
|
808
|
-
var isWebApp = (appType) => webAppTypes.includes(appType);
|
|
809
|
-
|
|
810
|
-
// src/contracts/generated/enum/searchableColumnInfo.ts
|
|
811
|
-
var SearchableColumnType = /* @__PURE__ */ ((SearchableColumnType2) => {
|
|
812
|
-
SearchableColumnType2[SearchableColumnType2["STRING_ENUM"] = 0] = "STRING_ENUM";
|
|
813
|
-
SearchableColumnType2[SearchableColumnType2["STRING_OF_ENUMS"] = 1] = "STRING_OF_ENUMS";
|
|
814
|
-
SearchableColumnType2[SearchableColumnType2["STRING"] = 2] = "STRING";
|
|
815
|
-
SearchableColumnType2[SearchableColumnType2["NUMBER"] = 3] = "NUMBER";
|
|
816
|
-
SearchableColumnType2[SearchableColumnType2["BOOLEAN"] = 4] = "BOOLEAN";
|
|
817
|
-
SearchableColumnType2[SearchableColumnType2["DATE"] = 5] = "DATE";
|
|
818
|
-
return SearchableColumnType2;
|
|
819
|
-
})(SearchableColumnType || {});
|
|
820
|
-
|
|
821
|
-
// src/contracts/generated/enum/petStatusType.ts
|
|
822
|
-
var PetStatusType = /* @__PURE__ */ ((PetStatusType2) => {
|
|
823
|
-
PetStatusType2[PetStatusType2["Unknown"] = 0] = "Unknown";
|
|
824
|
-
PetStatusType2[PetStatusType2["Active"] = 1] = "Active";
|
|
825
|
-
PetStatusType2[PetStatusType2["Deceased"] = 2] = "Deceased";
|
|
826
|
-
PetStatusType2[PetStatusType2["Blacklisted"] = 3] = "Blacklisted";
|
|
827
|
-
return PetStatusType2;
|
|
828
|
-
})(PetStatusType || {});
|
|
829
|
-
|
|
830
|
-
// src/contracts/generated/enum/petType.ts
|
|
831
|
-
var PetType = /* @__PURE__ */ ((PetType2) => {
|
|
832
|
-
PetType2[PetType2["Unknown"] = 0] = "Unknown";
|
|
833
|
-
PetType2[PetType2["Dog"] = 1] = "Dog";
|
|
834
|
-
PetType2[PetType2["Cat"] = 2] = "Cat";
|
|
835
|
-
return PetType2;
|
|
836
|
-
})(PetType || {});
|
|
837
|
-
|
|
838
|
-
// src/contracts/generated/enum/bookingAddonType.ts
|
|
839
|
-
var BookingAddonType = /* @__PURE__ */ ((BookingAddonType2) => {
|
|
840
|
-
BookingAddonType2[BookingAddonType2["None"] = 0] = "None";
|
|
841
|
-
BookingAddonType2[BookingAddonType2["PetTaxi"] = 1] = "PetTaxi";
|
|
842
|
-
return BookingAddonType2;
|
|
843
|
-
})(BookingAddonType || {});
|
|
844
|
-
|
|
845
|
-
// src/contracts/generated/enum/addressLinkType.ts
|
|
846
|
-
var AddressLinkType = /* @__PURE__ */ ((AddressLinkType2) => {
|
|
847
|
-
AddressLinkType2[AddressLinkType2["Unknown"] = 0] = "Unknown";
|
|
848
|
-
AddressLinkType2[AddressLinkType2["User"] = 1] = "User";
|
|
849
|
-
return AddressLinkType2;
|
|
850
|
-
})(AddressLinkType || {});
|
|
523
|
+
// src/helpers/enumHelper.ts
|
|
524
|
+
var getArrFromEnum = (enumType, isNan = false) => {
|
|
525
|
+
const result = Object.values(enumType).filter((dt) => isNaN(dt) == isNan);
|
|
526
|
+
return result;
|
|
527
|
+
};
|
|
851
528
|
|
|
852
|
-
// src/
|
|
853
|
-
var
|
|
854
|
-
|
|
855
|
-
|
|
856
|
-
|
|
857
|
-
|
|
858
|
-
|
|
529
|
+
// src/helpers/eventHelper.ts
|
|
530
|
+
var onTargetValue = (funcOnEvent) => (event) => {
|
|
531
|
+
const value = event.target?.value;
|
|
532
|
+
if (value == null) return;
|
|
533
|
+
funcOnEvent(value);
|
|
534
|
+
};
|
|
535
|
+
var onTargetChecked = (funcOnEvent) => (event) => {
|
|
536
|
+
const value = event.target?.checked;
|
|
537
|
+
if (value == null) return;
|
|
538
|
+
funcOnEvent(value);
|
|
539
|
+
};
|
|
540
|
+
var onTargetFiles = (funcOnEvent) => (event) => {
|
|
541
|
+
const fileList = event.target.files;
|
|
542
|
+
if (fileList == null || fileList.length < 1) return;
|
|
543
|
+
funcOnEvent(fileList);
|
|
544
|
+
};
|
|
545
|
+
var preventDefault = (event) => {
|
|
546
|
+
event?.preventDefault?.();
|
|
547
|
+
return event;
|
|
548
|
+
};
|
|
549
|
+
var stopPropagation = (event) => {
|
|
550
|
+
event?.stopPropagation?.();
|
|
551
|
+
return event;
|
|
552
|
+
};
|
|
859
553
|
|
|
860
|
-
// src/
|
|
861
|
-
var
|
|
862
|
-
|
|
863
|
-
|
|
864
|
-
|
|
865
|
-
return MembershipType2;
|
|
866
|
-
})(MembershipType || {});
|
|
554
|
+
// src/helpers/performanceHelper.ts
|
|
555
|
+
var getPerformanceTimer = () => ({
|
|
556
|
+
start: performance.now(),
|
|
557
|
+
getTimeElapsed: (start) => performance.now() - start
|
|
558
|
+
});
|
|
867
559
|
|
|
868
|
-
// src/
|
|
869
|
-
var
|
|
870
|
-
|
|
871
|
-
|
|
872
|
-
|
|
873
|
-
|
|
874
|
-
|
|
560
|
+
// src/helpers/randomHelper.ts
|
|
561
|
+
var randomIntFromRange = (min, max) => {
|
|
562
|
+
return Math.floor(Math.random() * (max - min) + min);
|
|
563
|
+
};
|
|
564
|
+
var randomItemFromArray = (items) => {
|
|
565
|
+
const randomIndex = randomIntFromRange(0, items.length);
|
|
566
|
+
return items[randomIndex];
|
|
567
|
+
};
|
|
875
568
|
|
|
876
|
-
// src/
|
|
877
|
-
|
|
878
|
-
|
|
879
|
-
|
|
880
|
-
UploadLinkType2[UploadLinkType2["Pet"] = 2] = "Pet";
|
|
881
|
-
return UploadLinkType2;
|
|
882
|
-
})(UploadLinkType || {});
|
|
883
|
-
var UploadType = /* @__PURE__ */ ((UploadType2) => {
|
|
884
|
-
UploadType2[UploadType2["Unknown"] = 0] = "Unknown";
|
|
885
|
-
UploadType2[UploadType2["UserProfilePic"] = 5] = "UserProfilePic";
|
|
886
|
-
UploadType2[UploadType2["PetProfilePic"] = 10] = "PetProfilePic";
|
|
887
|
-
UploadType2[UploadType2["PetExtraPic"] = 11] = "PetExtraPic";
|
|
888
|
-
UploadType2[UploadType2["HomePhoto"] = 20] = "HomePhoto";
|
|
889
|
-
return UploadType2;
|
|
890
|
-
})(UploadType || {});
|
|
891
|
-
var uploadsThatNeedEncryption = [];
|
|
569
|
+
// src/helpers/propHelper.ts
|
|
570
|
+
function nameof(key1, key2) {
|
|
571
|
+
return key2 ?? key1;
|
|
572
|
+
}
|
|
892
573
|
|
|
893
|
-
// src/
|
|
894
|
-
var
|
|
895
|
-
|
|
896
|
-
|
|
897
|
-
|
|
898
|
-
|
|
899
|
-
|
|
900
|
-
|
|
901
|
-
|
|
574
|
+
// src/helpers/imageHelper.ts
|
|
575
|
+
var getImageParams = (file) => {
|
|
576
|
+
const fileExtension = file.name?.split?.(".")?.pop?.() ?? ".png";
|
|
577
|
+
return new Promise((resolve, reject) => {
|
|
578
|
+
const reader = new FileReader();
|
|
579
|
+
reader.onload = async (e) => {
|
|
580
|
+
const image = new Image();
|
|
581
|
+
if (e.target == null || e.target.result == null) {
|
|
582
|
+
reject("e.target.result is null");
|
|
583
|
+
return;
|
|
584
|
+
}
|
|
585
|
+
image.src = e.target.result;
|
|
586
|
+
await image.decode();
|
|
587
|
+
resolve({
|
|
588
|
+
name: file.name,
|
|
589
|
+
type: file.type,
|
|
590
|
+
width: image.width,
|
|
591
|
+
height: image.height,
|
|
592
|
+
fileSize: file.size,
|
|
593
|
+
fileExtension
|
|
594
|
+
});
|
|
595
|
+
};
|
|
596
|
+
reader.onerror = (e) => reject(e);
|
|
597
|
+
reader.readAsDataURL(file);
|
|
598
|
+
});
|
|
599
|
+
};
|
|
902
600
|
|
|
903
|
-
// src/
|
|
904
|
-
var
|
|
905
|
-
|
|
906
|
-
|
|
907
|
-
|
|
908
|
-
|
|
909
|
-
|
|
910
|
-
|
|
911
|
-
|
|
912
|
-
}
|
|
601
|
+
// src/helpers/guidHelper.ts
|
|
602
|
+
var uuidv4 = () => {
|
|
603
|
+
var d = (/* @__PURE__ */ new Date()).getTime();
|
|
604
|
+
var d2 = typeof performance !== "undefined" && performance.now && performance.now() * 1e3 || 0;
|
|
605
|
+
return "xxxxxxxx-xxxx-4xxx-yxxx-xxxxxxxxxxxx".replace(/[xy]/g, function(c) {
|
|
606
|
+
var r = Math.random() * 16;
|
|
607
|
+
if (d > 0) {
|
|
608
|
+
r = (d + r) % 16 | 0;
|
|
609
|
+
d = Math.floor(d / 16);
|
|
610
|
+
} else {
|
|
611
|
+
r = (d2 + r) % 16 | 0;
|
|
612
|
+
d2 = Math.floor(d2 / 16);
|
|
613
|
+
}
|
|
614
|
+
return (c === "x" ? r : r & 3 | 8).toString(16);
|
|
615
|
+
});
|
|
616
|
+
};
|
|
617
|
+
var getPayloadFromJwt = (token) => {
|
|
618
|
+
try {
|
|
619
|
+
const decoded = jwtDecode(token);
|
|
620
|
+
const timeStamp = (/* @__PURE__ */ new Date()).getTime() / 1e3;
|
|
621
|
+
if (decoded.exp < timeStamp) {
|
|
622
|
+
throw "JWT token expired";
|
|
623
|
+
}
|
|
624
|
+
return {
|
|
625
|
+
isSuccess: true,
|
|
626
|
+
value: ""
|
|
627
|
+
};
|
|
628
|
+
} catch (err) {
|
|
629
|
+
return {
|
|
630
|
+
isSuccess: false,
|
|
631
|
+
errorMessage: err?.toString?.() ?? ""
|
|
632
|
+
};
|
|
633
|
+
}
|
|
634
|
+
};
|
|
913
635
|
|
|
914
|
-
// src/contracts/generated/
|
|
915
|
-
var
|
|
916
|
-
|
|
917
|
-
|
|
918
|
-
|
|
919
|
-
|
|
920
|
-
|
|
921
|
-
}
|
|
922
|
-
|
|
923
|
-
// src/contracts/generated/enum/userAccountFlagType.ts
|
|
924
|
-
var UserAccountFlagType = /* @__PURE__ */ ((UserAccountFlagType2) => {
|
|
925
|
-
UserAccountFlagType2[UserAccountFlagType2["Unknown"] = 0] = "Unknown";
|
|
926
|
-
UserAccountFlagType2[UserAccountFlagType2["ChangePassword"] = 1] = "ChangePassword";
|
|
927
|
-
return UserAccountFlagType2;
|
|
928
|
-
})(UserAccountFlagType || {});
|
|
929
|
-
|
|
930
|
-
// src/contracts/generated/enum/membershipStatus.ts
|
|
931
|
-
var MembershipStatus = /* @__PURE__ */ ((MembershipStatus2) => {
|
|
932
|
-
MembershipStatus2[MembershipStatus2["Unknown"] = 0] = "Unknown";
|
|
933
|
-
MembershipStatus2[MembershipStatus2["Active"] = 1] = "Active";
|
|
934
|
-
MembershipStatus2[MembershipStatus2["PendingPayment"] = 2] = "PendingPayment";
|
|
935
|
-
MembershipStatus2[MembershipStatus2["Paused"] = 5] = "Paused";
|
|
936
|
-
MembershipStatus2[MembershipStatus2["Cancelled"] = 10] = "Cancelled";
|
|
937
|
-
MembershipStatus2[MembershipStatus2["Removed"] = 11] = "Removed";
|
|
938
|
-
return MembershipStatus2;
|
|
939
|
-
})(MembershipStatus || {});
|
|
940
|
-
|
|
941
|
-
// src/contracts/generated/enum/questionType.ts
|
|
942
|
-
var QuestionType = /* @__PURE__ */ ((QuestionType2) => {
|
|
943
|
-
QuestionType2[QuestionType2["Unknown"] = 0] = "Unknown";
|
|
944
|
-
QuestionType2[QuestionType2["ShortText"] = 1] = "ShortText";
|
|
945
|
-
QuestionType2[QuestionType2["LongText"] = 2] = "LongText";
|
|
946
|
-
QuestionType2[QuestionType2["YesNo"] = 3] = "YesNo";
|
|
947
|
-
QuestionType2[QuestionType2["YesNoUnknown"] = 4] = "YesNoUnknown";
|
|
948
|
-
QuestionType2[QuestionType2["StarRating5"] = 5] = "StarRating5";
|
|
949
|
-
return QuestionType2;
|
|
950
|
-
})(QuestionType || {});
|
|
951
|
-
var QuestionForType = /* @__PURE__ */ ((QuestionForType2) => {
|
|
952
|
-
QuestionForType2[QuestionForType2["Unknown"] = 0] = "Unknown";
|
|
953
|
-
QuestionForType2[QuestionForType2["Host"] = 1] = "Host";
|
|
954
|
-
QuestionForType2[QuestionForType2["Owner"] = 2] = "Owner";
|
|
955
|
-
QuestionForType2[QuestionForType2["Pet"] = 3] = "Pet";
|
|
956
|
-
return QuestionForType2;
|
|
957
|
-
})(QuestionForType || {});
|
|
958
|
-
|
|
959
|
-
// src/contracts/generated/enum/bookingStatus.ts
|
|
960
|
-
var BookingStatusType = /* @__PURE__ */ ((BookingStatusType2) => {
|
|
961
|
-
BookingStatusType2[BookingStatusType2["Pending"] = 0] = "Pending";
|
|
962
|
-
BookingStatusType2[BookingStatusType2["Cancelled"] = 1] = "Cancelled";
|
|
963
|
-
BookingStatusType2[BookingStatusType2["FindPlacement"] = 2] = "FindPlacement";
|
|
964
|
-
BookingStatusType2[BookingStatusType2["Request"] = 3] = "Request";
|
|
965
|
-
BookingStatusType2[BookingStatusType2["PaidWithHostMatch"] = 4] = "PaidWithHostMatch";
|
|
966
|
-
BookingStatusType2[BookingStatusType2["Complete"] = 5] = "Complete";
|
|
967
|
-
BookingStatusType2[BookingStatusType2["CompleteWithHostFeedback"] = 6] = "CompleteWithHostFeedback";
|
|
968
|
-
return BookingStatusType2;
|
|
969
|
-
})(BookingStatusType || {});
|
|
970
|
-
|
|
971
|
-
// src/contracts/generated/enum/networkState.ts
|
|
972
|
-
var NetworkState = /* @__PURE__ */ ((NetworkState2) => {
|
|
973
|
-
NetworkState2[NetworkState2["Pending"] = 0] = "Pending";
|
|
974
|
-
NetworkState2[NetworkState2["Loading"] = 1] = "Loading";
|
|
975
|
-
NetworkState2[NetworkState2["Success"] = 2] = "Success";
|
|
976
|
-
NetworkState2[NetworkState2["Error"] = 3] = "Error";
|
|
977
|
-
return NetworkState2;
|
|
978
|
-
})(NetworkState || {});
|
|
979
|
-
|
|
980
|
-
// src/contracts/generated/enum/orderDirectionType.ts
|
|
981
|
-
var OrderDirectionType = /* @__PURE__ */ ((OrderDirectionType2) => {
|
|
982
|
-
OrderDirectionType2["ASC"] = "ASC";
|
|
983
|
-
OrderDirectionType2["DESC"] = "DESC";
|
|
984
|
-
return OrderDirectionType2;
|
|
985
|
-
})(OrderDirectionType || {});
|
|
986
|
-
|
|
987
|
-
// src/contracts/generated/searchColumns.ts
|
|
988
|
-
var searchColumns = {
|
|
989
|
-
pet: [{ "property": "type", "type": 1 }, { "property": "sex", "type": 2 }, { "property": "breed", "type": 2 }, { "property": "neutered", "type": 2 }, { "property": "name", "type": 2 }, { "property": "notes", "type": 2 }, { "property": "dateOfBirth", "type": 5 }],
|
|
990
|
-
upload: [{ "property": "linkUuid", "type": 2 }, { "property": "linkType", "type": 2 }, { "property": "type", "type": 2 }, { "property": "fileName", "type": 2 }, { "property": "blobType", "type": 2 }, { "property": "sizeInKb", "type": 2 }, { "property": "dateCreated", "type": 5 }],
|
|
991
|
-
address: [{ "property": "name", "type": 2 }, { "property": "street", "type": 2 }, { "property": "city", "type": 2 }, { "property": "postalCode", "type": 2 }, { "property": "country", "type": 2 }],
|
|
992
|
-
user: [{ "property": "types", "type": 1 }, { "property": "firstName", "type": 2 }, { "property": "lastName", "type": 2 }, { "property": "email", "type": 2 }, { "property": "hubspotId", "type": 2 }, { "property": "flags", "type": 1 }, { "property": "dateCreated", "type": 5 }],
|
|
993
|
-
question: [{ "property": "forTypes", "type": 1 }, { "property": "transKey", "type": 2 }, { "property": "fallback", "type": 2 }, { "property": "type", "type": 0 }, { "property": "sortOrder", "type": 3 }, { "property": "visible", "type": 4 }, { "property": "notes", "type": 2 }],
|
|
994
|
-
booking: [{ "property": "startDate", "type": 5 }, { "property": "endDate", "type": 5 }, { "property": "status", "type": 2 }, { "property": "notes", "type": 2 }]
|
|
995
|
-
};
|
|
996
|
-
|
|
997
|
-
// src/contracts/generated/restrictions/addressRestriction.ts
|
|
998
|
-
var AddressRestriction = {
|
|
999
|
-
name: { minLength: 3, maxLength: 50 },
|
|
1000
|
-
street: { minLength: 3, maxLength: 150 },
|
|
1001
|
-
city: { minLength: 3, maxLength: 80 },
|
|
1002
|
-
postalCode: { minLength: 3, maxLength: 20 },
|
|
1003
|
-
country: { minLength: 3, maxLength: 100 },
|
|
1004
|
-
notes: { minLength: 0, maxLength: 1e3 }
|
|
1005
|
-
};
|
|
1006
|
-
|
|
1007
|
-
// src/contracts/generated/restrictions/petRestriction.ts
|
|
1008
|
-
var PetRestriction = {
|
|
1009
|
-
name: { minLength: 3, maxLength: 80 },
|
|
1010
|
-
breed: { minLength: 3, maxLength: 80 },
|
|
1011
|
-
notes: { minLength: 0, maxLength: 1e3 }
|
|
1012
|
-
};
|
|
1013
|
-
|
|
1014
|
-
// src/contracts/generated/restrictions/commentRestriction.ts
|
|
1015
|
-
var CommentRestriction = {
|
|
1016
|
-
name: { maxLength: 80 },
|
|
1017
|
-
comment: { maxLength: 1e3 }
|
|
1018
|
-
};
|
|
1019
|
-
|
|
1020
|
-
// src/contracts/generated/restrictions/userRestriction.ts
|
|
1021
|
-
var UserRestriction = {
|
|
1022
|
-
firstName: { minLength: 3, maxLength: 80 },
|
|
1023
|
-
lastName: { minLength: 3, maxLength: 80 },
|
|
1024
|
-
email: { minLength: 5, maxLength: 150 },
|
|
1025
|
-
password: { minLength: 5, maxLength: 50 },
|
|
1026
|
-
hubspotId: { maxLength: 50 },
|
|
1027
|
-
flags: { maxLength: 150 }
|
|
1028
|
-
};
|
|
1029
|
-
|
|
1030
|
-
// src/contracts/generated/restrictions/activityRestriction.ts
|
|
1031
|
-
var ActivityRestriction = {
|
|
1032
|
-
details: { maxLength: 500 }
|
|
1033
|
-
};
|
|
1034
|
-
|
|
1035
|
-
// src/contracts/generated/restrictions/uploadRestriction.ts
|
|
1036
|
-
var UploadRestriction = {
|
|
1037
|
-
fileName: { minLength: 3, maxLength: 150 },
|
|
1038
|
-
blobType: { minLength: 1, maxLength: 50 }
|
|
1039
|
-
};
|
|
1040
|
-
|
|
1041
|
-
// src/contracts/generated/restrictions/permissionRestriction.ts
|
|
1042
|
-
var PermissionRestriction = {
|
|
1043
|
-
name: { maxLength: 50 }
|
|
1044
|
-
};
|
|
1045
|
-
|
|
1046
|
-
// src/contracts/generated/restrictions/answerRestriction.ts
|
|
1047
|
-
var AnswerRestriction = {
|
|
1048
|
-
answer: { minLength: 1, maxLength: 500 },
|
|
1049
|
-
notes: { minLength: 0, maxLength: 1e3 }
|
|
636
|
+
// src/contracts/generated/apiRoute.ts
|
|
637
|
+
var apiParams = {
|
|
638
|
+
general: {
|
|
639
|
+
segment: "segment"
|
|
640
|
+
},
|
|
641
|
+
user: {
|
|
642
|
+
id: "id"
|
|
643
|
+
}
|
|
1050
644
|
};
|
|
1051
|
-
|
|
1052
|
-
|
|
1053
|
-
|
|
1054
|
-
|
|
1055
|
-
|
|
1056
|
-
|
|
1057
|
-
|
|
645
|
+
var apiRoute = {
|
|
646
|
+
home: "/",
|
|
647
|
+
swagger: "/swagger",
|
|
648
|
+
common: {
|
|
649
|
+
auth: {
|
|
650
|
+
prefix: "/auth",
|
|
651
|
+
devJwt: "/jwt",
|
|
652
|
+
login: "/login",
|
|
653
|
+
signup: "/signup",
|
|
654
|
+
swagger: { name: "Auth", description: "Endpoints for login, sign up etc" },
|
|
655
|
+
token: {
|
|
656
|
+
prefix: "/token",
|
|
657
|
+
swagger: { name: "AuthToken", description: "Endpoints for creating an API token" }
|
|
658
|
+
}
|
|
659
|
+
},
|
|
660
|
+
version: "/version"
|
|
661
|
+
},
|
|
662
|
+
admin: {
|
|
663
|
+
activity: {
|
|
664
|
+
prefix: "/admin/activity",
|
|
665
|
+
swagger: {
|
|
666
|
+
name: "Activity",
|
|
667
|
+
description: "Endpoints for retrieving and managing activities"
|
|
668
|
+
}
|
|
669
|
+
},
|
|
670
|
+
address: {
|
|
671
|
+
prefix: "/admin/address",
|
|
672
|
+
byLink: "/link",
|
|
673
|
+
lookup: "/lookup",
|
|
674
|
+
swagger: { name: "Addresses", description: "Endpoints for managing addresses" }
|
|
675
|
+
},
|
|
676
|
+
answer: {
|
|
677
|
+
prefix: "/admin/answer",
|
|
678
|
+
swagger: { name: "Answers", description: "Endpoints for managing answers to signup questions" }
|
|
679
|
+
},
|
|
680
|
+
booking: {
|
|
681
|
+
prefix: "/admin/booking",
|
|
682
|
+
byUser: "/user",
|
|
683
|
+
swagger: { name: "Bookings", description: "Endpoints for managing bookings" }
|
|
684
|
+
},
|
|
685
|
+
comment: {
|
|
686
|
+
prefix: "/admin/comment",
|
|
687
|
+
byLink: "/link",
|
|
688
|
+
swagger: { name: "Comments", description: "Endpoints for managing Comments" }
|
|
689
|
+
},
|
|
690
|
+
membership: {
|
|
691
|
+
prefix: "/admin/membership",
|
|
692
|
+
swagger: { name: "Memberships", description: "Endpoints for managing Memberships" }
|
|
693
|
+
},
|
|
694
|
+
pet: {
|
|
695
|
+
prefix: "/admin/pet",
|
|
696
|
+
byUser: "/user",
|
|
697
|
+
swagger: { name: "Pets", description: "Endpoints for managing Pets" }
|
|
698
|
+
},
|
|
699
|
+
question: {
|
|
700
|
+
prefix: "/admin/question",
|
|
701
|
+
swagger: {
|
|
702
|
+
name: "Questions",
|
|
703
|
+
description: "Endpoints for managing questions that users need to answer in order to complete their profiles"
|
|
704
|
+
}
|
|
705
|
+
},
|
|
706
|
+
upload: {
|
|
707
|
+
prefix: "/admin/upload",
|
|
708
|
+
viewRaw: "/view-raw",
|
|
709
|
+
image: "/image",
|
|
710
|
+
swagger: { name: "Uploads", description: "Endpoints for managing Uploads" }
|
|
711
|
+
},
|
|
712
|
+
user: {
|
|
713
|
+
prefix: "/admin/user",
|
|
714
|
+
swagger: { name: "Users", description: "Endpoints for Admins to manage Users" }
|
|
715
|
+
},
|
|
716
|
+
userMembership: {
|
|
717
|
+
prefix: "/admin/user-membership",
|
|
718
|
+
byUser: "/user",
|
|
719
|
+
swagger: { name: "UserMemberships", description: "Endpoints for managing User's Memberships" }
|
|
720
|
+
},
|
|
721
|
+
userPermission: {
|
|
722
|
+
prefix: "/admin/user-permission",
|
|
723
|
+
swagger: { name: "UserPermissions", description: "Endpoints for getting and managing user permissions." }
|
|
724
|
+
}
|
|
725
|
+
},
|
|
726
|
+
client: {
|
|
727
|
+
answer: {
|
|
728
|
+
prefix: "/answer",
|
|
729
|
+
forProfile: "/profile",
|
|
730
|
+
forPet: "/pet",
|
|
731
|
+
swagger: { name: "Answers", description: "Endpoints for managing answers to signup questions" }
|
|
732
|
+
},
|
|
733
|
+
booking: {
|
|
734
|
+
prefix: "/booking",
|
|
735
|
+
swagger: { name: "Bookings", description: "Endpoints for User to manage their Bookings" }
|
|
736
|
+
},
|
|
737
|
+
membership: {
|
|
738
|
+
prefix: "/membership",
|
|
739
|
+
swagger: { name: "MembershipTiers", description: "Endpoints for public TierMemberships" }
|
|
740
|
+
},
|
|
741
|
+
pet: {
|
|
742
|
+
prefix: "/pet",
|
|
743
|
+
swagger: { name: "Pets", description: "Endpoints for User to manage their Pets" }
|
|
744
|
+
},
|
|
745
|
+
profile: {
|
|
746
|
+
prefix: "/profile",
|
|
747
|
+
avatar: "/avatar",
|
|
748
|
+
answers: "/answers",
|
|
749
|
+
swagger: { name: "Profile", description: "Endpoints for User to manage their Profile" }
|
|
750
|
+
},
|
|
751
|
+
upload: {
|
|
752
|
+
prefix: "/upload",
|
|
753
|
+
image: "/image",
|
|
754
|
+
swagger: { name: "Uploads", description: "Endpoints for managing Uploads" }
|
|
755
|
+
}
|
|
756
|
+
}
|
|
1058
757
|
};
|
|
1059
758
|
|
|
1060
|
-
// src/
|
|
1061
|
-
var
|
|
1062
|
-
|
|
759
|
+
// src/helpers/profileHelper.ts
|
|
760
|
+
var getUserAvatarUrl = (userUuid) => {
|
|
761
|
+
return `${getCommonConfig().getHubApiUrl()}${apiRoute.client.profile.prefix}/${userUuid}/profile.png`;
|
|
1063
762
|
};
|
|
1064
|
-
|
|
1065
|
-
|
|
1066
|
-
var UnavailabilityRestriction = {
|
|
1067
|
-
notes: { maxLength: 500 }
|
|
763
|
+
var getPetAvatarUrl = (petUuid) => {
|
|
764
|
+
return `${getCommonConfig().getHubApiUrl()}${apiRoute.client.pet.prefix}/${petUuid}/profile.png`;
|
|
1068
765
|
};
|
|
1069
766
|
|
|
1070
|
-
// src/contracts/generated/
|
|
1071
|
-
var
|
|
1072
|
-
|
|
1073
|
-
|
|
1074
|
-
|
|
1075
|
-
|
|
1076
|
-
|
|
767
|
+
// src/contracts/generated/enum/appType.ts
|
|
768
|
+
var AppType = /* @__PURE__ */ ((AppType2) => {
|
|
769
|
+
AppType2[AppType2["Admin"] = 0] = "Admin";
|
|
770
|
+
AppType2[AppType2["Client"] = 1] = "Client";
|
|
771
|
+
AppType2[AppType2["Api"] = 2] = "Api";
|
|
772
|
+
AppType2[AppType2["Test"] = 3] = "Test";
|
|
773
|
+
AppType2[AppType2["Interactive"] = 4] = "Interactive";
|
|
774
|
+
return AppType2;
|
|
775
|
+
})(AppType || {});
|
|
776
|
+
var webAppTypes = [
|
|
777
|
+
0 /* Admin */,
|
|
778
|
+
//
|
|
779
|
+
1 /* Client */
|
|
780
|
+
];
|
|
781
|
+
var isWebApp = (appType) => webAppTypes.includes(appType);
|
|
1077
782
|
|
|
1078
783
|
// src/validation/baseValidation.ts
|
|
1079
784
|
var noValidation = (_) => ({ isValid: true });
|
|
@@ -1112,6 +817,101 @@ var validateForEach = (validation) => (values) => {
|
|
|
1112
817
|
return { isValid: true };
|
|
1113
818
|
};
|
|
1114
819
|
|
|
820
|
+
// src/validation/textValidation.ts
|
|
821
|
+
var minLength = (minLengthVal) => (value) => {
|
|
822
|
+
if ((value?.length ?? 0) >= minLengthVal) {
|
|
823
|
+
return { isValid: true };
|
|
824
|
+
}
|
|
825
|
+
return {
|
|
826
|
+
isValid: false,
|
|
827
|
+
errorMessageTransKey: "min_length_validator",
|
|
828
|
+
errorMessageParams: { count: minLengthVal },
|
|
829
|
+
errorMessage: `Minimum length required is {count}`
|
|
830
|
+
};
|
|
831
|
+
};
|
|
832
|
+
var maxLength = (maxLengthVal) => (value) => {
|
|
833
|
+
if ((value?.length ?? 0) <= maxLengthVal) {
|
|
834
|
+
return { isValid: true };
|
|
835
|
+
}
|
|
836
|
+
return {
|
|
837
|
+
isValid: false,
|
|
838
|
+
errorMessageTransKey: "max_length_validator",
|
|
839
|
+
errorMessageParams: { count: maxLengthVal },
|
|
840
|
+
errorMessage: `Text is too long! Maximum length allowed is {count}`
|
|
841
|
+
};
|
|
842
|
+
};
|
|
843
|
+
var shouldBeUrl = (value) => {
|
|
844
|
+
const validationFailures = [];
|
|
845
|
+
const safeValue = `${value}`;
|
|
846
|
+
const numPeriods = safeValue.split("").filter((c) => c === ".").length;
|
|
847
|
+
const isLastCharPeriod = safeValue[safeValue.length - 1] === ".";
|
|
848
|
+
if (numPeriods < 1 || isLastCharPeriod) {
|
|
849
|
+
validationFailures.push("Should have at least one period in a sensible location.");
|
|
850
|
+
}
|
|
851
|
+
if (validationFailures.length > 0) {
|
|
852
|
+
return {
|
|
853
|
+
isValid: false,
|
|
854
|
+
errorMessageTransKey: "link_validator",
|
|
855
|
+
errorMessageParams: { current: value },
|
|
856
|
+
errorMessage: `Should be a valid link/url. ({current}) does not meet the requirements: ${validationFailures.join(
|
|
857
|
+
". "
|
|
858
|
+
)}.`
|
|
859
|
+
};
|
|
860
|
+
}
|
|
861
|
+
return { isValid: true };
|
|
862
|
+
};
|
|
863
|
+
var shouldBeYoutubeUrl = (value) => {
|
|
864
|
+
const safeValue = `${value}`;
|
|
865
|
+
const youtubePartialUrl = "https://www.youtube.com/watch?v=";
|
|
866
|
+
if (safeValue.includes(youtubePartialUrl)) {
|
|
867
|
+
return { isValid: true };
|
|
868
|
+
}
|
|
869
|
+
return {
|
|
870
|
+
isValid: false,
|
|
871
|
+
errorMessageTransKey: "youtube_url_validator",
|
|
872
|
+
errorMessageParams: { startUrl: youtubePartialUrl },
|
|
873
|
+
errorMessage: `Youtube url should start with {startUrl}`
|
|
874
|
+
};
|
|
875
|
+
};
|
|
876
|
+
|
|
877
|
+
// src/validation/dateValidation.ts
|
|
878
|
+
var minDate = (minDate2) => (value) => {
|
|
879
|
+
if (isBefore(minDate2, value)) {
|
|
880
|
+
return { isValid: true };
|
|
881
|
+
}
|
|
882
|
+
return {
|
|
883
|
+
isValid: false,
|
|
884
|
+
errorMessageTransKey: "min_date_validator",
|
|
885
|
+
errorMessageParams: { date: formatDate(minDate2, "DD MMM YY") },
|
|
886
|
+
errorMessage: "Minimum date is {date}"
|
|
887
|
+
};
|
|
888
|
+
};
|
|
889
|
+
var maxDate = (maxDate2) => (value) => {
|
|
890
|
+
if (isBefore(value, maxDate2)) {
|
|
891
|
+
return { isValid: true };
|
|
892
|
+
}
|
|
893
|
+
return {
|
|
894
|
+
isValid: false,
|
|
895
|
+
errorMessageTransKey: "max_date_validator",
|
|
896
|
+
errorMessageParams: { date: formatDate(maxDate2, "DD MMM YY") },
|
|
897
|
+
errorMessage: "Maximum date is {date}"
|
|
898
|
+
};
|
|
899
|
+
};
|
|
900
|
+
|
|
901
|
+
// src/validation/numberValidation.ts
|
|
902
|
+
var isNumber = (value) => {
|
|
903
|
+
if (value != null) {
|
|
904
|
+
if (isNaN(Number(value)) == false) {
|
|
905
|
+
return { isValid: true };
|
|
906
|
+
}
|
|
907
|
+
}
|
|
908
|
+
return {
|
|
909
|
+
isValid: false,
|
|
910
|
+
errorMessageTransKey: "is_number_validator",
|
|
911
|
+
errorMessage: `Must be a number`
|
|
912
|
+
};
|
|
913
|
+
};
|
|
914
|
+
|
|
1115
915
|
// src/validation/arrayValidation.ts
|
|
1116
916
|
var minItems = (minLength2) => (values) => {
|
|
1117
917
|
const safeArr = makeArrayOrDefault(values);
|
|
@@ -1175,99 +975,299 @@ var selectedOptionIsInEnum = (enumType) => (values) => {
|
|
|
1175
975
|
return { isValid: true };
|
|
1176
976
|
};
|
|
1177
977
|
|
|
1178
|
-
// src/
|
|
1179
|
-
var
|
|
1180
|
-
|
|
1181
|
-
return { isValid: true };
|
|
1182
|
-
}
|
|
1183
|
-
return {
|
|
1184
|
-
isValid: false,
|
|
1185
|
-
errorMessageTransKey: "min_length_validator",
|
|
1186
|
-
errorMessageParams: { count: minLengthVal },
|
|
1187
|
-
errorMessage: `Minimum length required is {count}`
|
|
1188
|
-
};
|
|
978
|
+
// src/constants/localStorageKeys.ts
|
|
979
|
+
var LocalStorageKeys = {
|
|
980
|
+
nanaHubProfile: 10
|
|
1189
981
|
};
|
|
1190
|
-
|
|
1191
|
-
|
|
1192
|
-
|
|
1193
|
-
|
|
1194
|
-
|
|
1195
|
-
|
|
1196
|
-
|
|
1197
|
-
|
|
1198
|
-
|
|
1199
|
-
|
|
982
|
+
|
|
983
|
+
// src/constants/validation.ts
|
|
984
|
+
var minUrlLength = 5;
|
|
985
|
+
var portalGlyphLength = 12;
|
|
986
|
+
var validUuidChars = [
|
|
987
|
+
"1",
|
|
988
|
+
"2",
|
|
989
|
+
"3",
|
|
990
|
+
"4",
|
|
991
|
+
"5",
|
|
992
|
+
"6",
|
|
993
|
+
"7",
|
|
994
|
+
"8",
|
|
995
|
+
"9",
|
|
996
|
+
"0",
|
|
997
|
+
"A",
|
|
998
|
+
"B",
|
|
999
|
+
"C",
|
|
1000
|
+
"D",
|
|
1001
|
+
"E",
|
|
1002
|
+
"F"
|
|
1003
|
+
];
|
|
1004
|
+
|
|
1005
|
+
// src/contracts/generated/restrictions/drivingRouteRestriction.ts
|
|
1006
|
+
var DrivingRouteRestriction = {
|
|
1007
|
+
notes: { maxLength: 500 }
|
|
1200
1008
|
};
|
|
1201
|
-
|
|
1202
|
-
|
|
1203
|
-
|
|
1204
|
-
|
|
1205
|
-
|
|
1206
|
-
|
|
1207
|
-
|
|
1208
|
-
|
|
1209
|
-
|
|
1210
|
-
|
|
1211
|
-
|
|
1212
|
-
|
|
1213
|
-
|
|
1214
|
-
|
|
1215
|
-
|
|
1216
|
-
|
|
1217
|
-
|
|
1218
|
-
}
|
|
1219
|
-
|
|
1009
|
+
|
|
1010
|
+
// src/contracts/generated/restrictions/questionRestriction.ts
|
|
1011
|
+
var QuestionRestriction = {
|
|
1012
|
+
transKey: { minLength: 3, maxLength: 50 },
|
|
1013
|
+
fallback: { minLength: 1, maxLength: 500 },
|
|
1014
|
+
forTypes: { minLength: 0, maxLength: 100 },
|
|
1015
|
+
notes: { minLength: 0, maxLength: 1e3 }
|
|
1016
|
+
};
|
|
1017
|
+
|
|
1018
|
+
// src/contracts/generated/restrictions/uploadRestriction.ts
|
|
1019
|
+
var UploadRestriction = {
|
|
1020
|
+
fileName: { minLength: 3, maxLength: 150 },
|
|
1021
|
+
blobType: { minLength: 1, maxLength: 50 }
|
|
1022
|
+
};
|
|
1023
|
+
|
|
1024
|
+
// src/contracts/generated/restrictions/userRestriction.ts
|
|
1025
|
+
var UserRestriction = {
|
|
1026
|
+
firstName: { minLength: 3, maxLength: 80 },
|
|
1027
|
+
lastName: { minLength: 3, maxLength: 80 },
|
|
1028
|
+
email: { minLength: 5, maxLength: 150 },
|
|
1029
|
+
password: { minLength: 5, maxLength: 50 },
|
|
1030
|
+
hubspotId: { maxLength: 50 },
|
|
1031
|
+
flags: { maxLength: 150 }
|
|
1032
|
+
};
|
|
1033
|
+
|
|
1034
|
+
// src/contracts/generated/restrictions/activityRestriction.ts
|
|
1035
|
+
var ActivityRestriction = {
|
|
1036
|
+
details: { maxLength: 500 }
|
|
1037
|
+
};
|
|
1038
|
+
|
|
1039
|
+
// src/contracts/generated/restrictions/unavailabilityRestriction.ts
|
|
1040
|
+
var UnavailabilityRestriction = {
|
|
1041
|
+
notes: { maxLength: 500 }
|
|
1042
|
+
};
|
|
1043
|
+
|
|
1044
|
+
// src/contracts/generated/restrictions/bookingRestriction.ts
|
|
1045
|
+
var BookingRestriction = {
|
|
1046
|
+
notes: { maxLength: 250 }
|
|
1047
|
+
};
|
|
1048
|
+
var BookingAddonRestriction = {
|
|
1049
|
+
notes: { maxLength: 250 }
|
|
1050
|
+
};
|
|
1051
|
+
|
|
1052
|
+
// src/contracts/generated/restrictions/commentRestriction.ts
|
|
1053
|
+
var CommentRestriction = {
|
|
1054
|
+
name: { maxLength: 80 },
|
|
1055
|
+
comment: { maxLength: 1e3 }
|
|
1220
1056
|
};
|
|
1221
|
-
|
|
1222
|
-
|
|
1223
|
-
|
|
1224
|
-
|
|
1225
|
-
|
|
1226
|
-
}
|
|
1227
|
-
return {
|
|
1228
|
-
isValid: false,
|
|
1229
|
-
errorMessageTransKey: "youtube_url_validator",
|
|
1230
|
-
errorMessageParams: { startUrl: youtubePartialUrl },
|
|
1231
|
-
errorMessage: `Youtube url should start with {startUrl}`
|
|
1232
|
-
};
|
|
1057
|
+
|
|
1058
|
+
// src/contracts/generated/restrictions/petRestriction.ts
|
|
1059
|
+
var PetRestriction = {
|
|
1060
|
+
name: { minLength: 3, maxLength: 80 },
|
|
1061
|
+
breed: { minLength: 3, maxLength: 80 },
|
|
1062
|
+
notes: { minLength: 0, maxLength: 1e3 }
|
|
1233
1063
|
};
|
|
1234
1064
|
|
|
1235
|
-
// src/
|
|
1236
|
-
var
|
|
1237
|
-
|
|
1238
|
-
|
|
1239
|
-
return { isValid: true };
|
|
1240
|
-
}
|
|
1241
|
-
}
|
|
1242
|
-
return {
|
|
1243
|
-
isValid: false,
|
|
1244
|
-
errorMessageTransKey: "is_number_validator",
|
|
1245
|
-
errorMessage: `Must be a number`
|
|
1246
|
-
};
|
|
1065
|
+
// src/contracts/generated/restrictions/answerRestriction.ts
|
|
1066
|
+
var AnswerRestriction = {
|
|
1067
|
+
answer: { minLength: 1, maxLength: 500 },
|
|
1068
|
+
notes: { minLength: 0, maxLength: 1e3 }
|
|
1247
1069
|
};
|
|
1248
1070
|
|
|
1249
|
-
// src/
|
|
1250
|
-
var
|
|
1251
|
-
|
|
1252
|
-
return { isValid: true };
|
|
1253
|
-
}
|
|
1254
|
-
return {
|
|
1255
|
-
isValid: false,
|
|
1256
|
-
errorMessageTransKey: "min_date_validator",
|
|
1257
|
-
errorMessageParams: { date: formatDate(minDate2, "DD MMM YY") },
|
|
1258
|
-
errorMessage: "Minimum date is {date}"
|
|
1259
|
-
};
|
|
1071
|
+
// src/contracts/generated/restrictions/permissionRestriction.ts
|
|
1072
|
+
var PermissionRestriction = {
|
|
1073
|
+
name: { maxLength: 50 }
|
|
1260
1074
|
};
|
|
1261
|
-
|
|
1262
|
-
|
|
1263
|
-
|
|
1264
|
-
}
|
|
1265
|
-
|
|
1266
|
-
|
|
1267
|
-
|
|
1268
|
-
|
|
1269
|
-
|
|
1270
|
-
|
|
1075
|
+
|
|
1076
|
+
// src/contracts/generated/restrictions/addressRestriction.ts
|
|
1077
|
+
var AddressRestriction = {
|
|
1078
|
+
name: { minLength: 3, maxLength: 50 },
|
|
1079
|
+
street: { minLength: 3, maxLength: 150 },
|
|
1080
|
+
city: { minLength: 3, maxLength: 80 },
|
|
1081
|
+
postalCode: { minLength: 3, maxLength: 20 },
|
|
1082
|
+
country: { minLength: 3, maxLength: 100 },
|
|
1083
|
+
notes: { minLength: 0, maxLength: 1e3 }
|
|
1084
|
+
};
|
|
1085
|
+
|
|
1086
|
+
// src/contracts/generated/searchColumns.ts
|
|
1087
|
+
var searchColumns = {
|
|
1088
|
+
pet: [{ "property": "type", "type": 1 }, { "property": "sex", "type": 2 }, { "property": "breed", "type": 2 }, { "property": "neutered", "type": 2 }, { "property": "name", "type": 2 }, { "property": "notes", "type": 2 }, { "property": "dateOfBirth", "type": 5 }],
|
|
1089
|
+
upload: [{ "property": "linkUuid", "type": 2 }, { "property": "linkType", "type": 2 }, { "property": "type", "type": 2 }, { "property": "fileName", "type": 2 }, { "property": "blobType", "type": 2 }, { "property": "sizeInKb", "type": 2 }, { "property": "dateCreated", "type": 5 }],
|
|
1090
|
+
address: [{ "property": "name", "type": 2 }, { "property": "street", "type": 2 }, { "property": "city", "type": 2 }, { "property": "postalCode", "type": 2 }, { "property": "country", "type": 2 }],
|
|
1091
|
+
user: [{ "property": "types", "type": 1 }, { "property": "firstName", "type": 2 }, { "property": "lastName", "type": 2 }, { "property": "email", "type": 2 }, { "property": "hubspotId", "type": 2 }, { "property": "flags", "type": 1 }, { "property": "dateCreated", "type": 5 }],
|
|
1092
|
+
question: [{ "property": "forTypes", "type": 1 }, { "property": "transKey", "type": 2 }, { "property": "fallback", "type": 2 }, { "property": "type", "type": 0 }, { "property": "sortOrder", "type": 3 }, { "property": "visible", "type": 4 }, { "property": "notes", "type": 2 }],
|
|
1093
|
+
booking: [{ "property": "startDate", "type": 5 }, { "property": "endDate", "type": 5 }, { "property": "status", "type": 2 }, { "property": "notes", "type": 2 }]
|
|
1271
1094
|
};
|
|
1272
1095
|
|
|
1096
|
+
// src/contracts/generated/enum/petSexType.ts
|
|
1097
|
+
var PetSexType = /* @__PURE__ */ ((PetSexType2) => {
|
|
1098
|
+
PetSexType2[PetSexType2["Other"] = 0] = "Other";
|
|
1099
|
+
PetSexType2[PetSexType2["Male"] = 1] = "Male";
|
|
1100
|
+
PetSexType2[PetSexType2["Female"] = 2] = "Female";
|
|
1101
|
+
return PetSexType2;
|
|
1102
|
+
})(PetSexType || {});
|
|
1103
|
+
|
|
1104
|
+
// src/contracts/generated/enum/petStatusType.ts
|
|
1105
|
+
var PetStatusType = /* @__PURE__ */ ((PetStatusType2) => {
|
|
1106
|
+
PetStatusType2[PetStatusType2["Unknown"] = 0] = "Unknown";
|
|
1107
|
+
PetStatusType2[PetStatusType2["Active"] = 1] = "Active";
|
|
1108
|
+
PetStatusType2[PetStatusType2["Deceased"] = 2] = "Deceased";
|
|
1109
|
+
PetStatusType2[PetStatusType2["Blacklisted"] = 3] = "Blacklisted";
|
|
1110
|
+
return PetStatusType2;
|
|
1111
|
+
})(PetStatusType || {});
|
|
1112
|
+
|
|
1113
|
+
// src/contracts/generated/enum/userType.ts
|
|
1114
|
+
var UserType = /* @__PURE__ */ ((UserType2) => {
|
|
1115
|
+
UserType2[UserType2["Unknown"] = 0] = "Unknown";
|
|
1116
|
+
UserType2[UserType2["Owner"] = 1] = "Owner";
|
|
1117
|
+
UserType2[UserType2["Host"] = 2] = "Host";
|
|
1118
|
+
UserType2[UserType2["Driver"] = 3] = "Driver";
|
|
1119
|
+
UserType2[UserType2["Admin"] = 50] = "Admin";
|
|
1120
|
+
UserType2[UserType2["BotToken"] = 99] = "BotToken";
|
|
1121
|
+
return UserType2;
|
|
1122
|
+
})(UserType || {});
|
|
1123
|
+
|
|
1124
|
+
// src/contracts/generated/enum/bookingAddonType.ts
|
|
1125
|
+
var BookingAddonType = /* @__PURE__ */ ((BookingAddonType2) => {
|
|
1126
|
+
BookingAddonType2[BookingAddonType2["None"] = 0] = "None";
|
|
1127
|
+
BookingAddonType2[BookingAddonType2["PetTaxi"] = 1] = "PetTaxi";
|
|
1128
|
+
return BookingAddonType2;
|
|
1129
|
+
})(BookingAddonType || {});
|
|
1130
|
+
|
|
1131
|
+
// src/contracts/generated/enum/commentLinkType.ts
|
|
1132
|
+
var CommentLinkType = /* @__PURE__ */ ((CommentLinkType2) => {
|
|
1133
|
+
CommentLinkType2[CommentLinkType2["Unknown"] = 0] = "Unknown";
|
|
1134
|
+
CommentLinkType2[CommentLinkType2["User"] = 1] = "User";
|
|
1135
|
+
CommentLinkType2[CommentLinkType2["Pet"] = 2] = "Pet";
|
|
1136
|
+
CommentLinkType2[CommentLinkType2["Booking"] = 3] = "Booking";
|
|
1137
|
+
return CommentLinkType2;
|
|
1138
|
+
})(CommentLinkType || {});
|
|
1139
|
+
|
|
1140
|
+
// src/contracts/generated/enum/bookingStatus.ts
|
|
1141
|
+
var BookingStatusType = /* @__PURE__ */ ((BookingStatusType2) => {
|
|
1142
|
+
BookingStatusType2[BookingStatusType2["Pending"] = 0] = "Pending";
|
|
1143
|
+
BookingStatusType2[BookingStatusType2["Cancelled"] = 1] = "Cancelled";
|
|
1144
|
+
BookingStatusType2[BookingStatusType2["FindPlacement"] = 2] = "FindPlacement";
|
|
1145
|
+
BookingStatusType2[BookingStatusType2["Request"] = 3] = "Request";
|
|
1146
|
+
BookingStatusType2[BookingStatusType2["PaidWithHostMatch"] = 4] = "PaidWithHostMatch";
|
|
1147
|
+
BookingStatusType2[BookingStatusType2["Complete"] = 5] = "Complete";
|
|
1148
|
+
BookingStatusType2[BookingStatusType2["CompleteWithHostFeedback"] = 6] = "CompleteWithHostFeedback";
|
|
1149
|
+
return BookingStatusType2;
|
|
1150
|
+
})(BookingStatusType || {});
|
|
1151
|
+
|
|
1152
|
+
// src/contracts/generated/enum/searchableColumnInfo.ts
|
|
1153
|
+
var SearchableColumnType = /* @__PURE__ */ ((SearchableColumnType2) => {
|
|
1154
|
+
SearchableColumnType2[SearchableColumnType2["STRING_ENUM"] = 0] = "STRING_ENUM";
|
|
1155
|
+
SearchableColumnType2[SearchableColumnType2["STRING_OF_ENUMS"] = 1] = "STRING_OF_ENUMS";
|
|
1156
|
+
SearchableColumnType2[SearchableColumnType2["STRING"] = 2] = "STRING";
|
|
1157
|
+
SearchableColumnType2[SearchableColumnType2["NUMBER"] = 3] = "NUMBER";
|
|
1158
|
+
SearchableColumnType2[SearchableColumnType2["BOOLEAN"] = 4] = "BOOLEAN";
|
|
1159
|
+
SearchableColumnType2[SearchableColumnType2["DATE"] = 5] = "DATE";
|
|
1160
|
+
return SearchableColumnType2;
|
|
1161
|
+
})(SearchableColumnType || {});
|
|
1162
|
+
|
|
1163
|
+
// src/contracts/generated/enum/networkState.ts
|
|
1164
|
+
var NetworkState = /* @__PURE__ */ ((NetworkState2) => {
|
|
1165
|
+
NetworkState2[NetworkState2["Pending"] = 0] = "Pending";
|
|
1166
|
+
NetworkState2[NetworkState2["Loading"] = 1] = "Loading";
|
|
1167
|
+
NetworkState2[NetworkState2["Success"] = 2] = "Success";
|
|
1168
|
+
NetworkState2[NetworkState2["Error"] = 3] = "Error";
|
|
1169
|
+
return NetworkState2;
|
|
1170
|
+
})(NetworkState || {});
|
|
1171
|
+
|
|
1172
|
+
// src/contracts/generated/enum/membershipType.ts
|
|
1173
|
+
var MembershipType = /* @__PURE__ */ ((MembershipType2) => {
|
|
1174
|
+
MembershipType2[MembershipType2["None"] = 0] = "None";
|
|
1175
|
+
MembershipType2[MembershipType2["Club"] = 1] = "Club";
|
|
1176
|
+
MembershipType2[MembershipType2["ClubPlus"] = 2] = "ClubPlus";
|
|
1177
|
+
return MembershipType2;
|
|
1178
|
+
})(MembershipType || {});
|
|
1179
|
+
|
|
1180
|
+
// src/contracts/generated/enum/activityType.ts
|
|
1181
|
+
var ActivityType = /* @__PURE__ */ ((ActivityType2) => {
|
|
1182
|
+
ActivityType2[ActivityType2["Unknown"] = 0] = "Unknown";
|
|
1183
|
+
ActivityType2[ActivityType2["Create"] = 1] = "Create";
|
|
1184
|
+
ActivityType2[ActivityType2["Read"] = 2] = "Read";
|
|
1185
|
+
ActivityType2[ActivityType2["Update"] = 3] = "Update";
|
|
1186
|
+
ActivityType2[ActivityType2["Delete"] = 4] = "Delete";
|
|
1187
|
+
return ActivityType2;
|
|
1188
|
+
})(ActivityType || {});
|
|
1189
|
+
|
|
1190
|
+
// src/contracts/generated/enum/questionType.ts
|
|
1191
|
+
var QuestionType = /* @__PURE__ */ ((QuestionType2) => {
|
|
1192
|
+
QuestionType2[QuestionType2["Unknown"] = 0] = "Unknown";
|
|
1193
|
+
QuestionType2[QuestionType2["ShortText"] = 1] = "ShortText";
|
|
1194
|
+
QuestionType2[QuestionType2["LongText"] = 2] = "LongText";
|
|
1195
|
+
QuestionType2[QuestionType2["YesNo"] = 3] = "YesNo";
|
|
1196
|
+
QuestionType2[QuestionType2["YesNoUnknown"] = 4] = "YesNoUnknown";
|
|
1197
|
+
QuestionType2[QuestionType2["StarRating5"] = 5] = "StarRating5";
|
|
1198
|
+
return QuestionType2;
|
|
1199
|
+
})(QuestionType || {});
|
|
1200
|
+
var QuestionForType = /* @__PURE__ */ ((QuestionForType2) => {
|
|
1201
|
+
QuestionForType2[QuestionForType2["Unknown"] = 0] = "Unknown";
|
|
1202
|
+
QuestionForType2[QuestionForType2["Host"] = 1] = "Host";
|
|
1203
|
+
QuestionForType2[QuestionForType2["Owner"] = 2] = "Owner";
|
|
1204
|
+
QuestionForType2[QuestionForType2["Pet"] = 3] = "Pet";
|
|
1205
|
+
return QuestionForType2;
|
|
1206
|
+
})(QuestionForType || {});
|
|
1207
|
+
|
|
1208
|
+
// src/contracts/generated/enum/orderDirectionType.ts
|
|
1209
|
+
var OrderDirectionType = /* @__PURE__ */ ((OrderDirectionType2) => {
|
|
1210
|
+
OrderDirectionType2["ASC"] = "ASC";
|
|
1211
|
+
OrderDirectionType2["DESC"] = "DESC";
|
|
1212
|
+
return OrderDirectionType2;
|
|
1213
|
+
})(OrderDirectionType || {});
|
|
1214
|
+
|
|
1215
|
+
// src/contracts/generated/enum/userAccountFlagType.ts
|
|
1216
|
+
var UserAccountFlagType = /* @__PURE__ */ ((UserAccountFlagType2) => {
|
|
1217
|
+
UserAccountFlagType2[UserAccountFlagType2["Unknown"] = 0] = "Unknown";
|
|
1218
|
+
UserAccountFlagType2[UserAccountFlagType2["ChangePassword"] = 1] = "ChangePassword";
|
|
1219
|
+
return UserAccountFlagType2;
|
|
1220
|
+
})(UserAccountFlagType || {});
|
|
1221
|
+
|
|
1222
|
+
// src/contracts/generated/enum/uploadLinkType.ts
|
|
1223
|
+
var UploadLinkType = /* @__PURE__ */ ((UploadLinkType2) => {
|
|
1224
|
+
UploadLinkType2[UploadLinkType2["Unknown"] = 0] = "Unknown";
|
|
1225
|
+
UploadLinkType2[UploadLinkType2["User"] = 1] = "User";
|
|
1226
|
+
UploadLinkType2[UploadLinkType2["Pet"] = 2] = "Pet";
|
|
1227
|
+
return UploadLinkType2;
|
|
1228
|
+
})(UploadLinkType || {});
|
|
1229
|
+
var UploadType = /* @__PURE__ */ ((UploadType2) => {
|
|
1230
|
+
UploadType2[UploadType2["Unknown"] = 0] = "Unknown";
|
|
1231
|
+
UploadType2[UploadType2["UserProfilePic"] = 5] = "UserProfilePic";
|
|
1232
|
+
UploadType2[UploadType2["PetProfilePic"] = 10] = "PetProfilePic";
|
|
1233
|
+
UploadType2[UploadType2["PetExtraPic"] = 11] = "PetExtraPic";
|
|
1234
|
+
UploadType2[UploadType2["HomePhoto"] = 20] = "HomePhoto";
|
|
1235
|
+
return UploadType2;
|
|
1236
|
+
})(UploadType || {});
|
|
1237
|
+
var uploadsThatNeedEncryption = [];
|
|
1238
|
+
|
|
1239
|
+
// src/contracts/generated/enum/answerLinkType.ts
|
|
1240
|
+
var AnswerLinkType = /* @__PURE__ */ ((AnswerLinkType2) => {
|
|
1241
|
+
AnswerLinkType2[AnswerLinkType2["Unknown"] = 0] = "Unknown";
|
|
1242
|
+
AnswerLinkType2[AnswerLinkType2["User"] = 1] = "User";
|
|
1243
|
+
AnswerLinkType2[AnswerLinkType2["Pet"] = 2] = "Pet";
|
|
1244
|
+
return AnswerLinkType2;
|
|
1245
|
+
})(AnswerLinkType || {});
|
|
1246
|
+
|
|
1247
|
+
// src/contracts/generated/enum/membershipStatus.ts
|
|
1248
|
+
var MembershipStatus = /* @__PURE__ */ ((MembershipStatus2) => {
|
|
1249
|
+
MembershipStatus2[MembershipStatus2["Unknown"] = 0] = "Unknown";
|
|
1250
|
+
MembershipStatus2[MembershipStatus2["Active"] = 1] = "Active";
|
|
1251
|
+
MembershipStatus2[MembershipStatus2["PendingPayment"] = 2] = "PendingPayment";
|
|
1252
|
+
MembershipStatus2[MembershipStatus2["Paused"] = 5] = "Paused";
|
|
1253
|
+
MembershipStatus2[MembershipStatus2["Cancelled"] = 10] = "Cancelled";
|
|
1254
|
+
MembershipStatus2[MembershipStatus2["Removed"] = 11] = "Removed";
|
|
1255
|
+
return MembershipStatus2;
|
|
1256
|
+
})(MembershipStatus || {});
|
|
1257
|
+
|
|
1258
|
+
// src/contracts/generated/enum/petType.ts
|
|
1259
|
+
var PetType = /* @__PURE__ */ ((PetType2) => {
|
|
1260
|
+
PetType2[PetType2["Unknown"] = 0] = "Unknown";
|
|
1261
|
+
PetType2[PetType2["Dog"] = 1] = "Dog";
|
|
1262
|
+
PetType2[PetType2["Cat"] = 2] = "Cat";
|
|
1263
|
+
return PetType2;
|
|
1264
|
+
})(PetType || {});
|
|
1265
|
+
|
|
1266
|
+
// src/contracts/generated/enum/addressLinkType.ts
|
|
1267
|
+
var AddressLinkType = /* @__PURE__ */ ((AddressLinkType2) => {
|
|
1268
|
+
AddressLinkType2[AddressLinkType2["Unknown"] = 0] = "Unknown";
|
|
1269
|
+
AddressLinkType2[AddressLinkType2["User"] = 1] = "User";
|
|
1270
|
+
return AddressLinkType2;
|
|
1271
|
+
})(AddressLinkType || {});
|
|
1272
|
+
|
|
1273
1273
|
export { APP_TYPE, ActivityRestriction, ActivityType, AddressLinkType, AddressRestriction, AnswerLinkType, AnswerRestriction, AppType, BOT_PATH, BookingAddonRestriction, BookingAddonType, BookingRestriction, BookingStatusType, CommentLinkType, CommentRestriction, CommonConfigService, DrivingRouteRestriction, LocalStorageKeys, LogService, MembershipStatus, MembershipType, NetworkState, OrderDirectionType, PermissionRestriction, PermissionType, PetRestriction, PetSexType, PetStatusType, PetType, QuestionForType, QuestionRestriction, QuestionType, SITE_CONFIG, SearchableColumnType, UnavailabilityRestriction, UploadLinkType, UploadRestriction, UploadType, UserAccountFlagType, UserRestriction, UserType, addDays, addMinutes, addMonths, addSeconds, addSpacesForEnum, addToParallelTasks, anyObject, apiParams, apiRoute, arrayContains, arrayOfNLength, capitalizeFirstLetter, cyrb53, dateDiffInDays, debounceLeading, dependencyInjectionSetup, fakePromise, formatDate, formatFileSize, formatForBookingDate, formatForDateDropdown, formatForDateLocal, formatForDateLocalDetailed, formatForDateOfBirth, formatForDateWithTime, getAgeInYears, getAppType, getArrFromEnum, getBotPath, getCommonConfig, getImageParams, getLog, getMeta, getMimeTypeFromExtension, getPackagesUsed, getPayloadFromJwt, getPerformanceTimer, getPetAvatarUrl, getSiteConfig, getUserAvatarUrl, getUsersName, getWeekNumber, hasRequiredPermissions, isBefore, isNumber, isSameDay, isWebApp, lowercaseFirstLetter, makeArrayOrDefault, maxDate, maxItems, maxLength, mimeTypeLookup, minDate, minItems, minLength, minUrlLength, multiValidation, nameof, noValidation, notNull, onTargetChecked, onTargetFiles, onTargetValue, onlyUnique, portalGlyphLength, preventDefault, randomIntFromRange, randomItemFromArray, searchColumns, selectedItemsExist, selectedOptionIsInEnum, separateValidation, setContainerToken, setSiteConfig, shouldBeUrl, shouldBeYoutubeUrl, stopPropagation, timeout, uploadsThatNeedEncryption, urlRef, uuidv4, validUuidChars, validateForEach, webAppTypes };
|