@flusys/nestjs-shared 9.1.2 → 9.2.1
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/README.md +94 -18
- package/classes/api-controller.class.d.ts +1 -0
- package/classes/api-service.class.d.ts +7 -2
- package/classes/hybrid-cache.class.d.ts +17 -4
- package/constants/index.d.ts +1 -0
- package/constants/permissions.d.ts +9 -0
- package/fesm/183.js +7 -7
- package/fesm/{282.js → 47.js} +98 -158
- package/fesm/470.js +333 -382
- package/fesm/667.js +17 -17
- package/fesm/681.js +326 -129
- package/fesm/{948.js → 997.js} +46 -24
- package/fesm/chunks/123.js +17 -9
- package/fesm/chunks/37.js +5 -5
- package/fesm/classes/index.js +4 -3
- package/fesm/constants/index.js +19 -8
- package/fesm/decorators/index.js +120 -39
- package/fesm/dtos/index.js +1 -1
- package/fesm/entities/index.js +8 -8
- package/fesm/enums/index.js +2 -2
- package/fesm/exceptions/index.js +12 -12
- package/fesm/guards/index.js +201 -68
- package/fesm/index.js +50 -41
- package/fesm/interceptors/index.js +290 -590
- package/fesm/interfaces/index.js +17 -8
- package/fesm/middlewares/index.js +4 -4
- package/fesm/modules/index.js +2 -2
- package/fesm/pipes/index.js +8 -8
- package/fesm/utils/index.js +137 -478
- package/interceptors/idempotency.interceptor.d.ts +14 -2
- package/interceptors/slug.interceptor.d.ts +1 -0
- package/interfaces/permission-action-registry.interface.d.ts +1 -0
- package/interfaces/permission.interface.d.ts +1 -0
- package/modules/shared-permission-cache/shared-permission-cache.service.d.ts +3 -1
- package/modules/utils/utils.service.d.ts +6 -6
- package/package.json +2 -2
- package/utils/date-time.util.d.ts +0 -1
- package/utils/event-pattern.util.d.ts +1 -0
- package/utils/permission-cache-key.util.d.ts +3 -0
- package/utils/query-helpers.util.d.ts +2 -2
package/fesm/utils/index.js
CHANGED
|
@@ -1,451 +1,11 @@
|
|
|
1
|
-
import * as __rspack_external__flusys_nestjs_core_config_197fa0a9 from "@flusys/nestjs-core/config";
|
|
2
|
-
import * as __rspack_external__nestjs_common_a04939da from "@nestjs/common";
|
|
3
1
|
import * as __rspack_external_crypto from "crypto";
|
|
2
|
+
import * as __rspack_external_typeorm from "typeorm";
|
|
4
3
|
export const __rspack_esm_id = 152;
|
|
5
4
|
export const __rspack_esm_ids = [152];
|
|
6
5
|
export const __webpack_modules__ = {
|
|
7
|
-
|
|
8
|
-
/* import */ var
|
|
9
|
-
/* import */ var
|
|
10
|
-
// Metadata keys
|
|
11
|
-
const IS_PUBLIC_KEY = 'isPublic';
|
|
12
|
-
const PERMISSIONS_KEY = 'permissions';
|
|
13
|
-
const DOMAIN_EVENT_HANDLER_KEY = 'domainEventHandler';
|
|
14
|
-
// Injection tokens
|
|
15
|
-
const CACHE_INSTANCE = 'CACHE_INSTANCE';
|
|
16
|
-
const PERMISSION_GUARD_CONFIG = 'PERMISSION_GUARD_CONFIG';
|
|
17
|
-
const EVENT_BUS_INSTANCE = 'EVENT_BUS_INSTANCE';
|
|
18
|
-
const EVENT_BUS_MODULE_OPTIONS = 'EVENT_BUS_MODULE_OPTIONS';
|
|
19
|
-
// Header names
|
|
20
|
-
const IDEMPOTENCY_KEY_HEADER = 'x-idempotency-key';
|
|
21
|
-
const REQUEST_ID_HEADER = 'x-request-id';
|
|
22
|
-
const CLIENT_TYPE_HEADER = 'x-client-type';
|
|
23
|
-
// Cache key prefixes
|
|
24
|
-
const PERMISSIONS_CACHE_PREFIX = 'my-permissions';
|
|
25
|
-
const IDEMPOTENCY_CACHE_PREFIX = 'idempotency';
|
|
26
|
-
// Event bus defaults
|
|
27
|
-
const DEFAULT_EVENT_EXCHANGE = 'flusys.events';
|
|
28
|
-
const DEFAULT_EVENT_TOPIC = 'flusys.domain-events';
|
|
29
|
-
const DEFAULT_EVENT_SERVICE_NAME = 'flusys';
|
|
30
|
-
// Permission codes
|
|
31
|
-
|
|
32
|
-
// Message keys for localization
|
|
33
|
-
|
|
34
|
-
|
|
35
|
-
__webpack_require__.d(__webpack_exports__, {
|
|
36
|
-
BC: () => (/* reexport safe */ _permissions_js__rspack_import_0.BC),
|
|
37
|
-
Bz: () => (/* reexport safe */ _permissions_js__rspack_import_0.Bz),
|
|
38
|
-
DP: () => (/* reexport safe */ _permissions_js__rspack_import_0.DP),
|
|
39
|
-
Em: () => (/* reexport safe */ _permissions_js__rspack_import_0.Em),
|
|
40
|
-
G0: () => (/* reexport safe */ _permissions_js__rspack_import_0.G0),
|
|
41
|
-
GH: () => (/* reexport safe */ _permissions_js__rspack_import_0.GH),
|
|
42
|
-
GT: () => (/* reexport safe */ _permissions_js__rspack_import_0.GT),
|
|
43
|
-
Jj: () => (/* reexport safe */ _permissions_js__rspack_import_0.Jj),
|
|
44
|
-
N3: () => (/* reexport safe */ _permissions_js__rspack_import_0.N3),
|
|
45
|
-
ON: () => (/* reexport safe */ _permissions_js__rspack_import_0.ON),
|
|
46
|
-
P0: () => (/* reexport safe */ _permissions_js__rspack_import_0.P0),
|
|
47
|
-
Q5: () => (/* reexport safe */ _permissions_js__rspack_import_0.Q5),
|
|
48
|
-
S6: () => (/* reexport safe */ _permissions_js__rspack_import_0.S6),
|
|
49
|
-
T: () => (/* reexport safe */ _permissions_js__rspack_import_0.T),
|
|
50
|
-
UB: () => (/* reexport safe */ _permissions_js__rspack_import_0.UB),
|
|
51
|
-
UG: () => (/* reexport safe */ _permissions_js__rspack_import_0.UG),
|
|
52
|
-
UU: () => (/* reexport safe */ _message_keys_js__rspack_import_1.UU),
|
|
53
|
-
Ub: () => (/* reexport safe */ _permissions_js__rspack_import_0.Ub),
|
|
54
|
-
V0: () => (/* reexport safe */ _permissions_js__rspack_import_0.V0),
|
|
55
|
-
Wc: () => (/* reexport safe */ _permissions_js__rspack_import_0.Wc),
|
|
56
|
-
Y3: () => (/* reexport safe */ _permissions_js__rspack_import_0.Y3),
|
|
57
|
-
Y7: () => (/* reexport safe */ _permissions_js__rspack_import_0.Y7),
|
|
58
|
-
_X: () => (/* reexport safe */ _permissions_js__rspack_import_0._X),
|
|
59
|
-
aO: () => (/* reexport safe */ _permissions_js__rspack_import_0.aO),
|
|
60
|
-
aT: () => (/* reexport safe */ _permissions_js__rspack_import_0.aT),
|
|
61
|
-
fS: () => (/* reexport safe */ _permissions_js__rspack_import_0.fS),
|
|
62
|
-
hg: () => (/* reexport safe */ _message_keys_js__rspack_import_1.hg),
|
|
63
|
-
kA: () => (/* reexport safe */ _permissions_js__rspack_import_0.kA),
|
|
64
|
-
kd: () => (/* reexport safe */ _permissions_js__rspack_import_0.kd),
|
|
65
|
-
l3: () => (/* reexport safe */ _permissions_js__rspack_import_0.l3),
|
|
66
|
-
mK: () => (/* reexport safe */ _message_keys_js__rspack_import_1.mK),
|
|
67
|
-
mV: () => (/* reexport safe */ _permissions_js__rspack_import_0.mV),
|
|
68
|
-
rH: () => (/* reexport safe */ _permissions_js__rspack_import_0.rH),
|
|
69
|
-
t$: () => (/* reexport safe */ _permissions_js__rspack_import_0.t$),
|
|
70
|
-
w7: () => (/* reexport safe */ _permissions_js__rspack_import_0.w7),
|
|
71
|
-
wA: () => (/* reexport safe */ _permissions_js__rspack_import_0.wA),
|
|
72
|
-
wM: () => (/* reexport safe */ _permissions_js__rspack_import_0.wM),
|
|
73
|
-
z$: () => (/* reexport safe */ _permissions_js__rspack_import_0.z$),
|
|
74
|
-
zd: () => (/* reexport safe */ _permissions_js__rspack_import_0.zd)
|
|
75
|
-
}, {
|
|
76
|
-
Hq: DEFAULT_EVENT_EXCHANGE,
|
|
77
|
-
Lw: PERMISSION_GUARD_CONFIG,
|
|
78
|
-
N7: PERMISSIONS_KEY,
|
|
79
|
-
PT: DOMAIN_EVENT_HANDLER_KEY,
|
|
80
|
-
Qj: EVENT_BUS_INSTANCE,
|
|
81
|
-
SL: EVENT_BUS_MODULE_OPTIONS,
|
|
82
|
-
fG: PERMISSIONS_CACHE_PREFIX,
|
|
83
|
-
iH: IDEMPOTENCY_KEY_HEADER,
|
|
84
|
-
jA: IS_PUBLIC_KEY,
|
|
85
|
-
kC: REQUEST_ID_HEADER,
|
|
86
|
-
mg: IDEMPOTENCY_CACHE_PREFIX,
|
|
87
|
-
nx: DEFAULT_EVENT_TOPIC,
|
|
88
|
-
xw: CLIENT_TYPE_HEADER,
|
|
89
|
-
zl: CACHE_INSTANCE
|
|
90
|
-
});
|
|
91
|
-
|
|
92
|
-
|
|
93
|
-
},
|
|
94
|
-
389(__unused_rspack_module, __webpack_exports__, __webpack_require__) {
|
|
95
|
-
// ==================== AUTH (Shared across guards/interceptors) ====================
|
|
96
|
-
// These are duplicated in nestjs-auth but needed here to avoid circular dependencies
|
|
97
|
-
const AUTH_MESSAGES = {
|
|
98
|
-
TOKEN_REQUIRED: 'auth.token.required',
|
|
99
|
-
TOKEN_INVALID: 'auth.token.invalid',
|
|
100
|
-
ENTITY_BELOG_ANOTHER_COMPANY: 'entity.belongs.another.company',
|
|
101
|
-
COMPANY_NO_ACCESS: 'auth.company.no.access'
|
|
102
|
-
};
|
|
103
|
-
// ==================== ERROR (HTTP Exceptions) ====================
|
|
104
|
-
const ERROR_MESSAGES = {
|
|
105
|
-
NOT_FOUND: 'error.not.found',
|
|
106
|
-
VALIDATION: 'error.validation',
|
|
107
|
-
UNAUTHORIZED: 'error.unauthorized',
|
|
108
|
-
FORBIDDEN: 'error.forbidden',
|
|
109
|
-
CONFLICT: 'error.conflict',
|
|
110
|
-
DB_FOREIGN_KEY: 'error.db.foreign.key',
|
|
111
|
-
DB_NOT_NULL: 'error.db.not.null',
|
|
112
|
-
DB_INVALID_INPUT: 'error.db.invalid.input',
|
|
113
|
-
DB_VALUE_TOO_LONG: 'error.db.value.too.long',
|
|
114
|
-
DB_CHECK_CONSTRAINT: 'error.db.check.constraint',
|
|
115
|
-
DB_DEADLOCK: 'error.db.deadlock',
|
|
116
|
-
INTERNAL: 'error.internal',
|
|
117
|
-
SERVICE_UNAVAILABLE: 'error.service.unavailable',
|
|
118
|
-
UNKNOWN: 'error.unknown',
|
|
119
|
-
HTTP: 'error.http',
|
|
120
|
-
GENERIC: 'error.generic',
|
|
121
|
-
PERMISSION_SYSTEM_UNAVAILABLE: 'error.permission.system.unavailable',
|
|
122
|
-
INSUFFICIENT_PERMISSIONS: 'error.insufficient.permissions',
|
|
123
|
-
INSUFFICIENT_PERMISSIONS_OR: 'error.insufficient.permissions.or',
|
|
124
|
-
NO_PERMISSIONS_FOUND: 'error.no.permissions.found',
|
|
125
|
-
ENDPOINT_DISABLED: 'error.endpoint.disabled'
|
|
126
|
-
};
|
|
127
|
-
// ==================== SYSTEM (Infrastructure) ====================
|
|
128
|
-
const SYSTEM_MESSAGES = {
|
|
129
|
-
REPOSITORY_NOT_AVAILABLE: 'system.repository.not.available',
|
|
130
|
-
DATASOURCE_NOT_AVAILABLE: 'system.datasource.not.available',
|
|
131
|
-
DATABASE_CONFIG_NOT_AVAILABLE: 'system.database.config.not.available',
|
|
132
|
-
SERVICE_NOT_AVAILABLE: 'system.service.not.available',
|
|
133
|
-
CONFIG_REQUIRED: 'system.config.required',
|
|
134
|
-
INTERNAL_ERROR: 'system.internal.error',
|
|
135
|
-
DUPLICATE_REQUEST: 'system.duplicate.request',
|
|
136
|
-
INVALID_TENANT_ID: 'system.invalid.tenant.id',
|
|
137
|
-
TENANT_NOT_FOUND: 'system.tenant.not.found',
|
|
138
|
-
TENANT_HEADER_REQUIRED: 'system.tenant.header.required',
|
|
139
|
-
MISSING_PARAMETER: 'system.missing.parameter',
|
|
140
|
-
SDK_NOT_INSTALLED: 'system.sdk.not.installed',
|
|
141
|
-
PATH_TRAVERSAL_DETECTED: 'system.path.traversal.detected',
|
|
142
|
-
INVALID_FILE_KEY: 'system.invalid.file.key'
|
|
143
|
-
};
|
|
144
|
-
|
|
145
|
-
__webpack_require__.d(__webpack_exports__, {
|
|
146
|
-
}, {
|
|
147
|
-
UU: ERROR_MESSAGES,
|
|
148
|
-
hg: SYSTEM_MESSAGES,
|
|
149
|
-
mK: AUTH_MESSAGES
|
|
150
|
-
});
|
|
151
|
-
|
|
152
|
-
|
|
153
|
-
},
|
|
154
|
-
975(__unused_rspack_module, __webpack_exports__, __webpack_require__) {
|
|
155
|
-
// ==================== AUTH MODULE ====================
|
|
156
|
-
const USER_PERMISSIONS = {
|
|
157
|
-
CREATE: 'user.create',
|
|
158
|
-
READ: 'user.read',
|
|
159
|
-
UPDATE: 'user.update',
|
|
160
|
-
DELETE: 'user.delete',
|
|
161
|
-
LOOKUP: 'user.lookup'
|
|
162
|
-
};
|
|
163
|
-
const COMPANY_PERMISSIONS = {
|
|
164
|
-
CREATE: 'company.create',
|
|
165
|
-
READ: 'company.read',
|
|
166
|
-
UPDATE: 'company.update',
|
|
167
|
-
DELETE: 'company.delete'
|
|
168
|
-
};
|
|
169
|
-
const BRANCH_PERMISSIONS = {
|
|
170
|
-
CREATE: 'branch.create',
|
|
171
|
-
READ: 'branch.read',
|
|
172
|
-
UPDATE: 'branch.update',
|
|
173
|
-
DELETE: 'branch.delete'
|
|
174
|
-
};
|
|
175
|
-
const SOCIAL_AUTH_CONFIG_PERMISSIONS = {
|
|
176
|
-
CREATE: 'social-config.create',
|
|
177
|
-
READ: 'social-config.read',
|
|
178
|
-
UPDATE: 'social-config.update',
|
|
179
|
-
DELETE: 'social-config.delete'
|
|
180
|
-
};
|
|
181
|
-
// ==================== IAM MODULE ====================
|
|
182
|
-
const ACTION_PERMISSIONS = {
|
|
183
|
-
CREATE: 'action.create',
|
|
184
|
-
READ: 'action.read',
|
|
185
|
-
UPDATE: 'action.update',
|
|
186
|
-
DELETE: 'action.delete'
|
|
187
|
-
};
|
|
188
|
-
const ROLE_PERMISSIONS = {
|
|
189
|
-
CREATE: 'role.create',
|
|
190
|
-
READ: 'role.read',
|
|
191
|
-
UPDATE: 'role.update',
|
|
192
|
-
DELETE: 'role.delete'
|
|
193
|
-
};
|
|
194
|
-
const ROLE_ACTION_PERMISSIONS = {
|
|
195
|
-
READ: 'role-action.read',
|
|
196
|
-
ASSIGN: 'role-action.assign'
|
|
197
|
-
};
|
|
198
|
-
const USER_ROLE_PERMISSIONS = {
|
|
199
|
-
READ: 'user-role.read',
|
|
200
|
-
ASSIGN: 'user-role.assign'
|
|
201
|
-
};
|
|
202
|
-
const USER_ACTION_PERMISSIONS = {
|
|
203
|
-
READ: 'user-action.read',
|
|
204
|
-
ASSIGN: 'user-action.assign'
|
|
205
|
-
};
|
|
206
|
-
const COMPANY_ACTION_PERMISSIONS = {
|
|
207
|
-
READ: 'company-action.read',
|
|
208
|
-
ASSIGN: 'company-action.assign'
|
|
209
|
-
};
|
|
210
|
-
// ==================== STORAGE MODULE ====================
|
|
211
|
-
const FILE_PERMISSIONS = {
|
|
212
|
-
CREATE: 'file.create',
|
|
213
|
-
READ: 'file.read',
|
|
214
|
-
UPDATE: 'file.update',
|
|
215
|
-
DELETE: 'file.delete',
|
|
216
|
-
VIEW_PRIVATE_ACTION: 'file.view.private'
|
|
217
|
-
};
|
|
218
|
-
const FOLDER_PERMISSIONS = {
|
|
219
|
-
CREATE: 'folder.create',
|
|
220
|
-
READ: 'folder.read',
|
|
221
|
-
UPDATE: 'folder.update',
|
|
222
|
-
DELETE: 'folder.delete'
|
|
223
|
-
};
|
|
224
|
-
const STORAGE_CONFIG_PERMISSIONS = {
|
|
225
|
-
CREATE: 'storage-config.create',
|
|
226
|
-
READ: 'storage-config.read',
|
|
227
|
-
UPDATE: 'storage-config.update',
|
|
228
|
-
DELETE: 'storage-config.delete'
|
|
229
|
-
};
|
|
230
|
-
const UPLOAD_CONFIG_PERMISSIONS = {
|
|
231
|
-
DELETE: 'upload-config.delete'
|
|
232
|
-
};
|
|
233
|
-
// ==================== EMAIL MODULE ====================
|
|
234
|
-
const EMAIL_CONFIG_PERMISSIONS = {
|
|
235
|
-
CREATE: 'email-config.create',
|
|
236
|
-
READ: 'email-config.read',
|
|
237
|
-
UPDATE: 'email-config.update',
|
|
238
|
-
DELETE: 'email-config.delete'
|
|
239
|
-
};
|
|
240
|
-
const EMAIL_TEMPLATE_PERMISSIONS = {
|
|
241
|
-
CREATE: 'email-template.create',
|
|
242
|
-
READ: 'email-template.read',
|
|
243
|
-
UPDATE: 'email-template.update',
|
|
244
|
-
DELETE: 'email-template.delete'
|
|
245
|
-
};
|
|
246
|
-
// ==================== FORM BUILDER MODULE ====================
|
|
247
|
-
const FORM_PERMISSIONS = {
|
|
248
|
-
CREATE: 'form.create',
|
|
249
|
-
READ: 'form.read',
|
|
250
|
-
UPDATE: 'form.update',
|
|
251
|
-
DELETE: 'form.delete'
|
|
252
|
-
};
|
|
253
|
-
const FORM_RESULT_PERMISSIONS = {
|
|
254
|
-
CREATE: 'form-result.create',
|
|
255
|
-
READ: 'form-result.read',
|
|
256
|
-
UPDATE: 'form-result.update',
|
|
257
|
-
DELETE: 'form-result.delete'
|
|
258
|
-
};
|
|
259
|
-
// ==================== ENTITY BUILDER MODULE ====================
|
|
260
|
-
// Static metadata permissions only. Per-dynamic-entity record permissions
|
|
261
|
-
// (`entity_builder.entity.<entityCode>.<action>`) are checked by flows running as the caller;
|
|
262
|
-
// ENTITY_BUILDER_ALL_DYNAMIC is the wildcard that grants all of them (and nothing else).
|
|
263
|
-
const ENTITY_DEFINITION_PERMISSIONS = {
|
|
264
|
-
CREATE: 'entity_builder.entity_definition.create',
|
|
265
|
-
READ: 'entity_builder.entity_definition.read',
|
|
266
|
-
UPDATE: 'entity_builder.entity_definition.update',
|
|
267
|
-
DELETE: 'entity_builder.entity_definition.delete'
|
|
268
|
-
};
|
|
269
|
-
const FIELD_DEFINITION_PERMISSIONS = {
|
|
270
|
-
READ: 'entity_builder.field_definition.read',
|
|
271
|
-
UPDATE: 'entity_builder.field_definition.update'
|
|
272
|
-
};
|
|
273
|
-
const FLOW_DEFINITION_PERMISSIONS = {
|
|
274
|
-
CREATE: 'entity_builder.flow_definition.create',
|
|
275
|
-
READ: 'entity_builder.flow_definition.read',
|
|
276
|
-
UPDATE: 'entity_builder.flow_definition.update',
|
|
277
|
-
DELETE: 'entity_builder.flow_definition.delete',
|
|
278
|
-
TEST: 'entity_builder.flow_definition.test',
|
|
279
|
-
/** Needed to save a flow containing a code node (sandboxed JavaScript). */ CODE: 'entity_builder.flow_definition.code'
|
|
280
|
-
};
|
|
281
|
-
const ENTITY_BUILDER_DYNAMIC_PREFIX = 'entity_builder.entity';
|
|
282
|
-
const ENTITY_BUILDER_ALL_DYNAMIC = {
|
|
283
|
-
ALL: `${ENTITY_BUILDER_DYNAMIC_PREFIX}.*`
|
|
284
|
-
};
|
|
285
|
-
const dynamicEntityPermissionParent = (entityCode)=>`${ENTITY_BUILDER_DYNAMIC_PREFIX}.${entityCode}`;
|
|
286
|
-
const dynamicEntityPermission = (entityCode, action)=>`${dynamicEntityPermissionParent(entityCode)}.${action}`;
|
|
287
|
-
// ==================== EVENT MANAGER MODULE ====================
|
|
288
|
-
const EVENT_PERMISSIONS = {
|
|
289
|
-
CREATE: 'event.create',
|
|
290
|
-
READ: 'event.read',
|
|
291
|
-
UPDATE: 'event.update',
|
|
292
|
-
DELETE: 'event.delete'
|
|
293
|
-
};
|
|
294
|
-
// ==================== NOTIFICATION MODULE ====================
|
|
295
|
-
const NOTIFICATION_PERMISSIONS = {
|
|
296
|
-
CREATE: 'notification.create',
|
|
297
|
-
READ: 'notification.read',
|
|
298
|
-
UPDATE: 'notification.update',
|
|
299
|
-
DELETE: 'notification.delete'
|
|
300
|
-
};
|
|
301
|
-
// ==================== LOCALIZATION MODULE ====================
|
|
302
|
-
const LANGUAGE_PERMISSIONS = {
|
|
303
|
-
CREATE: 'language.create',
|
|
304
|
-
READ: 'language.read',
|
|
305
|
-
UPDATE: 'language.update',
|
|
306
|
-
DELETE: 'language.delete'
|
|
307
|
-
};
|
|
308
|
-
const TRANSLATION_KEY_PERMISSIONS = {
|
|
309
|
-
CREATE: 'translation-key.create',
|
|
310
|
-
READ: 'translation-key.read',
|
|
311
|
-
UPDATE: 'translation-key.update',
|
|
312
|
-
DELETE: 'translation-key.delete'
|
|
313
|
-
};
|
|
314
|
-
const TRANSLATION_PERMISSIONS = {
|
|
315
|
-
CREATE: 'translation.create',
|
|
316
|
-
READ: 'translation.read',
|
|
317
|
-
UPDATE: 'translation.update',
|
|
318
|
-
DELETE: 'translation.delete'
|
|
319
|
-
};
|
|
320
|
-
// ==================== TASK MANAGER MODULE ====================
|
|
321
|
-
const TASK_BOARD_PERMISSIONS = {
|
|
322
|
-
CREATE: 'task-board.create',
|
|
323
|
-
READ: 'task-board.read',
|
|
324
|
-
UPDATE: 'task-board.update',
|
|
325
|
-
DELETE: 'task-board.delete',
|
|
326
|
-
MANAGE_MEMBERS: 'task-board.manage-members'
|
|
327
|
-
};
|
|
328
|
-
const TASK_LIST_PERMISSIONS = {
|
|
329
|
-
CREATE: 'task-list.create',
|
|
330
|
-
READ: 'task-list.read',
|
|
331
|
-
UPDATE: 'task-list.update',
|
|
332
|
-
DELETE: 'task-list.delete'
|
|
333
|
-
};
|
|
334
|
-
const TASK_PERMISSIONS = {
|
|
335
|
-
CREATE: 'task.create',
|
|
336
|
-
READ: 'task.read',
|
|
337
|
-
UPDATE: 'task.update',
|
|
338
|
-
DELETE: 'task.delete',
|
|
339
|
-
MOVE: 'task.move',
|
|
340
|
-
ASSIGN: 'task.assign'
|
|
341
|
-
};
|
|
342
|
-
const TASK_LABEL_PERMISSIONS = {
|
|
343
|
-
CREATE: 'task-label.create',
|
|
344
|
-
READ: 'task-label.read',
|
|
345
|
-
UPDATE: 'task-label.update',
|
|
346
|
-
DELETE: 'task-label.delete'
|
|
347
|
-
};
|
|
348
|
-
const TASK_COMMENT_PERMISSIONS = {
|
|
349
|
-
CREATE: 'task-comment.create',
|
|
350
|
-
READ: 'task-comment.read',
|
|
351
|
-
DELETE: 'task-comment.delete'
|
|
352
|
-
};
|
|
353
|
-
// ==================== AI ASSISTANT MODULE ====================
|
|
354
|
-
const AI_ASSISTANT_PERMISSIONS = {
|
|
355
|
-
VIEW_ALL_HISTORY: 'ai-assistant.view-all-history'
|
|
356
|
-
};
|
|
357
|
-
// ==================== AGGREGATED EXPORTS ====================
|
|
358
|
-
const PERMISSIONS = {
|
|
359
|
-
// Auth
|
|
360
|
-
USER: USER_PERMISSIONS,
|
|
361
|
-
COMPANY: COMPANY_PERMISSIONS,
|
|
362
|
-
BRANCH: BRANCH_PERMISSIONS,
|
|
363
|
-
SOCIAL_AUTH_CONFIG: SOCIAL_AUTH_CONFIG_PERMISSIONS,
|
|
364
|
-
// IAM
|
|
365
|
-
ACTION: ACTION_PERMISSIONS,
|
|
366
|
-
ROLE: ROLE_PERMISSIONS,
|
|
367
|
-
ROLE_ACTION: ROLE_ACTION_PERMISSIONS,
|
|
368
|
-
USER_ROLE: USER_ROLE_PERMISSIONS,
|
|
369
|
-
USER_ACTION: USER_ACTION_PERMISSIONS,
|
|
370
|
-
COMPANY_ACTION: COMPANY_ACTION_PERMISSIONS,
|
|
371
|
-
// Storage
|
|
372
|
-
FILE: FILE_PERMISSIONS,
|
|
373
|
-
FOLDER: FOLDER_PERMISSIONS,
|
|
374
|
-
STORAGE_CONFIG: STORAGE_CONFIG_PERMISSIONS,
|
|
375
|
-
// Email
|
|
376
|
-
EMAIL_CONFIG: EMAIL_CONFIG_PERMISSIONS,
|
|
377
|
-
EMAIL_TEMPLATE: EMAIL_TEMPLATE_PERMISSIONS,
|
|
378
|
-
// Form Builder
|
|
379
|
-
FORM: FORM_PERMISSIONS,
|
|
380
|
-
FORM_RESULT: FORM_RESULT_PERMISSIONS,
|
|
381
|
-
// Entity Builder
|
|
382
|
-
ENTITY_DEFINITION: ENTITY_DEFINITION_PERMISSIONS,
|
|
383
|
-
FIELD_DEFINITION: FIELD_DEFINITION_PERMISSIONS,
|
|
384
|
-
FLOW_DEFINITION: FLOW_DEFINITION_PERMISSIONS,
|
|
385
|
-
ENTITY_BUILDER_ALL_DYNAMIC: ENTITY_BUILDER_ALL_DYNAMIC,
|
|
386
|
-
// Event Manager
|
|
387
|
-
EVENT: EVENT_PERMISSIONS,
|
|
388
|
-
// Notification
|
|
389
|
-
NOTIFICATION: NOTIFICATION_PERMISSIONS,
|
|
390
|
-
// Localization
|
|
391
|
-
LANGUAGE: LANGUAGE_PERMISSIONS,
|
|
392
|
-
TRANSLATION_KEY: TRANSLATION_KEY_PERMISSIONS,
|
|
393
|
-
TRANSLATION: TRANSLATION_PERMISSIONS,
|
|
394
|
-
// Task Manager
|
|
395
|
-
TASK_BOARD: TASK_BOARD_PERMISSIONS,
|
|
396
|
-
TASK_LIST: TASK_LIST_PERMISSIONS,
|
|
397
|
-
TASK: TASK_PERMISSIONS,
|
|
398
|
-
TASK_LABEL: TASK_LABEL_PERMISSIONS,
|
|
399
|
-
TASK_COMMENT: TASK_COMMENT_PERMISSIONS,
|
|
400
|
-
// AI Assistant
|
|
401
|
-
AI_ASSISTANT: AI_ASSISTANT_PERMISSIONS
|
|
402
|
-
};
|
|
403
|
-
|
|
404
|
-
__webpack_require__.d(__webpack_exports__, {
|
|
405
|
-
}, {
|
|
406
|
-
BC: USER_PERMISSIONS,
|
|
407
|
-
Bz: AI_ASSISTANT_PERMISSIONS,
|
|
408
|
-
DP: ENTITY_DEFINITION_PERMISSIONS,
|
|
409
|
-
Em: STORAGE_CONFIG_PERMISSIONS,
|
|
410
|
-
G0: ENTITY_BUILDER_ALL_DYNAMIC,
|
|
411
|
-
GH: dynamicEntityPermissionParent,
|
|
412
|
-
GT: FORM_RESULT_PERMISSIONS,
|
|
413
|
-
Jj: PERMISSIONS,
|
|
414
|
-
N3: TRANSLATION_KEY_PERMISSIONS,
|
|
415
|
-
ON: TASK_LIST_PERMISSIONS,
|
|
416
|
-
P0: ROLE_ACTION_PERMISSIONS,
|
|
417
|
-
Q5: LANGUAGE_PERMISSIONS,
|
|
418
|
-
S6: FILE_PERMISSIONS,
|
|
419
|
-
T: TASK_PERMISSIONS,
|
|
420
|
-
UB: UPLOAD_CONFIG_PERMISSIONS,
|
|
421
|
-
UG: TASK_LABEL_PERMISSIONS,
|
|
422
|
-
Ub: EVENT_PERMISSIONS,
|
|
423
|
-
V0: EMAIL_CONFIG_PERMISSIONS,
|
|
424
|
-
Wc: FORM_PERMISSIONS,
|
|
425
|
-
Y3: TASK_BOARD_PERMISSIONS,
|
|
426
|
-
Y7: ACTION_PERMISSIONS,
|
|
427
|
-
_X: USER_ACTION_PERMISSIONS,
|
|
428
|
-
aO: COMPANY_ACTION_PERMISSIONS,
|
|
429
|
-
aT: dynamicEntityPermission,
|
|
430
|
-
fS: TRANSLATION_PERMISSIONS,
|
|
431
|
-
kA: FIELD_DEFINITION_PERMISSIONS,
|
|
432
|
-
kd: FLOW_DEFINITION_PERMISSIONS,
|
|
433
|
-
l3: SOCIAL_AUTH_CONFIG_PERMISSIONS,
|
|
434
|
-
mV: ROLE_PERMISSIONS,
|
|
435
|
-
rH: NOTIFICATION_PERMISSIONS,
|
|
436
|
-
t$: COMPANY_PERMISSIONS,
|
|
437
|
-
w7: USER_ROLE_PERMISSIONS,
|
|
438
|
-
wA: BRANCH_PERMISSIONS,
|
|
439
|
-
wM: FOLDER_PERMISSIONS,
|
|
440
|
-
z$: EMAIL_TEMPLATE_PERMISSIONS,
|
|
441
|
-
zd: TASK_COMMENT_PERMISSIONS
|
|
442
|
-
});
|
|
443
|
-
|
|
444
|
-
|
|
445
|
-
},
|
|
446
|
-
374(__unused_rspack_module, __webpack_exports__, __webpack_require__) {
|
|
447
|
-
/* import */ var _nestjs_common__rspack_import_0 = __webpack_require__(157);
|
|
448
|
-
/* import */ var _constants_message_keys_js__rspack_import_1 = __webpack_require__(389);
|
|
6
|
+
8374(__unused_rspack_module, __webpack_exports__, __webpack_require__) {
|
|
7
|
+
/* import */ var _nestjs_common__rspack_import_0 = __webpack_require__(6157);
|
|
8
|
+
/* import */ var _constants_message_keys_js__rspack_import_1 = __webpack_require__(4389);
|
|
449
9
|
|
|
450
10
|
|
|
451
11
|
class PermissionSystemUnavailableException extends _nestjs_common__rspack_import_0.InternalServerErrorException {
|
|
@@ -490,7 +50,7 @@ __webpack_require__.d(__webpack_exports__, {
|
|
|
490
50
|
|
|
491
51
|
|
|
492
52
|
},
|
|
493
|
-
|
|
53
|
+
8154(__unused_rspack_module, __webpack_exports__, __webpack_require__) {
|
|
494
54
|
/**
|
|
495
55
|
* The tenant a cache key belongs to: the provider's current tenant in multi-tenant mode, else
|
|
496
56
|
* undefined. A single database never prefixes, so a stray tenant header cannot split its cache.
|
|
@@ -505,7 +65,7 @@ __webpack_require__.d(__webpack_exports__, {
|
|
|
505
65
|
|
|
506
66
|
|
|
507
67
|
},
|
|
508
|
-
|
|
68
|
+
8456(__unused_rspack_module, __webpack_exports__, __webpack_require__) {
|
|
509
69
|
const SENSITIVE_KEYS = [
|
|
510
70
|
'password',
|
|
511
71
|
'secret',
|
|
@@ -543,25 +103,27 @@ const MAX_DEPTH = 8;
|
|
|
543
103
|
* `*` matches exactly one segment, `#` and `**` match zero or more segments.
|
|
544
104
|
*/ function matchEventPattern(pattern, eventName) {
|
|
545
105
|
if (pattern === eventName) return true;
|
|
546
|
-
|
|
547
|
-
const nameSegments = eventName.split('.');
|
|
548
|
-
return matchSegments(patternSegments, 0, nameSegments, 0);
|
|
106
|
+
return matchSegments(pattern.split('.'), eventName.split('.'));
|
|
549
107
|
}
|
|
550
108
|
function isMultiWildcard(segment) {
|
|
551
109
|
return segment === '#' || segment === '**';
|
|
552
110
|
}
|
|
553
|
-
|
|
554
|
-
|
|
555
|
-
|
|
556
|
-
|
|
557
|
-
|
|
558
|
-
|
|
111
|
+
/** Linear in pattern x name length: each (pattern, name) position is decided once, however many `#` there are. */ function matchSegments(pattern, name) {
|
|
112
|
+
let matches = new Array(name.length + 1).fill(false);
|
|
113
|
+
matches[name.length] = true;
|
|
114
|
+
for(let p = pattern.length - 1; p >= 0; p--){
|
|
115
|
+
const segment = pattern[p];
|
|
116
|
+
const next = new Array(name.length + 1).fill(false);
|
|
117
|
+
for(let n = name.length; n >= 0; n--){
|
|
118
|
+
if (isMultiWildcard(segment)) {
|
|
119
|
+
next[n] = matches[n] || n < name.length && next[n + 1];
|
|
120
|
+
} else {
|
|
121
|
+
next[n] = n < name.length && (segment === '*' || segment === name[n]) && matches[n + 1];
|
|
122
|
+
}
|
|
559
123
|
}
|
|
560
|
-
|
|
124
|
+
matches = next;
|
|
561
125
|
}
|
|
562
|
-
|
|
563
|
-
if (segment !== '*' && segment !== name[nameIndex]) return false;
|
|
564
|
-
return matchSegments(pattern, patternIndex + 1, name, nameIndex + 1);
|
|
126
|
+
return matches[0];
|
|
565
127
|
}
|
|
566
128
|
/**
|
|
567
129
|
* Strips credential-like fields before a row leaves the process on an event.
|
|
@@ -592,13 +154,14 @@ function sanitizeValue(value, ancestors, depth) {
|
|
|
592
154
|
ancestors.delete(value);
|
|
593
155
|
}
|
|
594
156
|
}
|
|
595
|
-
function isSensitiveKey(key) {
|
|
596
|
-
const
|
|
597
|
-
if (SENSITIVE_EXACT_KEYS.includes(
|
|
598
|
-
return SENSITIVE_KEYS.some((sensitive)=>
|
|
157
|
+
/** Case and separator blind, so `apiKey`, `api_key`, `X-API-KEY` and `private-key` all match. */ function isSensitiveKey(key) {
|
|
158
|
+
const normalized = key.toLowerCase().replace(/[\s_.-]/g, '');
|
|
159
|
+
if (SENSITIVE_EXACT_KEYS.includes(normalized)) return true;
|
|
160
|
+
return SENSITIVE_KEYS.some((sensitive)=>normalized.includes(sensitive));
|
|
599
161
|
}
|
|
600
162
|
|
|
601
163
|
__webpack_require__.d(__webpack_exports__, {
|
|
164
|
+
Gd: () => (isSensitiveKey),
|
|
602
165
|
IN: () => (sanitizeEventPayload),
|
|
603
166
|
_c: () => (isMultiWildcard),
|
|
604
167
|
qe: () => (matchEventPattern)
|
|
@@ -606,8 +169,10 @@ __webpack_require__.d(__webpack_exports__, {
|
|
|
606
169
|
|
|
607
170
|
|
|
608
171
|
},
|
|
609
|
-
|
|
610
|
-
/* import */ var _constants_index_js__rspack_import_0 = __webpack_require__(
|
|
172
|
+
3199(__unused_rspack_module, __webpack_exports__, __webpack_require__) {
|
|
173
|
+
/* import */ var _constants_index_js__rspack_import_0 = __webpack_require__(6043);
|
|
174
|
+
/* import */ var _middlewares_logger_middleware_js__rspack_import_1 = __webpack_require__(8244);
|
|
175
|
+
|
|
611
176
|
|
|
612
177
|
const DEFAULT_USER_PERMISSION_KEY_FORMAT = `${_constants_index_js__rspack_import_0/* .PERMISSIONS_CACHE_PREFIX */.fG}:user:{userId}`;
|
|
613
178
|
const DEFAULT_COMPANY_PERMISSION_KEY_FORMAT = `${_constants_index_js__rspack_import_0/* .PERMISSIONS_CACHE_PREFIX */.fG}:company:{companyId}:branch:{branchId}:user:{userId}`;
|
|
@@ -618,9 +183,31 @@ const DEFAULT_COMPANY_PERMISSION_KEY_FORMAT = `${_constants_index_js__rspack_imp
|
|
|
618
183
|
}
|
|
619
184
|
return (config?.userPermissionKeyFormat || DEFAULT_USER_PERMISSION_KEY_FORMAT).replace('{userId}', options.userId);
|
|
620
185
|
}
|
|
186
|
+
/**
|
|
187
|
+
* Tenant databases can share user ids (they are cloned from one template), so multi-tenant keys
|
|
188
|
+
* carry the request's tenant. A single database never does: a stray tenant header must not move
|
|
189
|
+
* a user onto a cache entry that invalidation never reaches.
|
|
190
|
+
*/ function permissionTenant(config) {
|
|
191
|
+
return config?.multiTenant ? `tenant:${(0,_middlewares_logger_middleware_js__rspack_import_1/* .getTenantId */.EO)() ?? 'none'}:` : '';
|
|
192
|
+
}
|
|
193
|
+
function permissionStampName(userId, config) {
|
|
194
|
+
return `${_constants_index_js__rspack_import_0/* .PERMISSIONS_CACHE_PREFIX */.fG}:${permissionTenant(config)}user:${userId}`;
|
|
195
|
+
}
|
|
196
|
+
/**
|
|
197
|
+
* The key a user's permissions are cached under right now: tenant + scope + the user's version
|
|
198
|
+
* stamp. Resolve it once, BEFORE reading grants from the database, and write under that same key.
|
|
199
|
+
*/ async function resolvePermissionCacheKey(cache, options, config) {
|
|
200
|
+
const stamp = await cache.getStamp(permissionStampName(options.userId, config));
|
|
201
|
+
return `${permissionTenant(config)}${buildPermissionCacheKey(options, config)}:v:${stamp}`;
|
|
202
|
+
}
|
|
203
|
+
/** Drops every cached permission scope (each company and branch) of the user, on every instance */ async function invalidatePermissionCache(cache, userId, config) {
|
|
204
|
+
await cache.bumpStamp(permissionStampName(userId, config));
|
|
205
|
+
}
|
|
621
206
|
|
|
622
207
|
__webpack_require__.d(__webpack_exports__, {
|
|
623
|
-
|
|
208
|
+
Rw: () => (resolvePermissionCacheKey),
|
|
209
|
+
nt: () => (buildPermissionCacheKey),
|
|
210
|
+
xp: () => (invalidatePermissionCache)
|
|
624
211
|
}, {
|
|
625
212
|
q6: DEFAULT_USER_PERMISSION_KEY_FORMAT,
|
|
626
213
|
s8: DEFAULT_COMPANY_PERMISSION_KEY_FORMAT
|
|
@@ -629,7 +216,7 @@ __webpack_require__.d(__webpack_exports__, {
|
|
|
629
216
|
|
|
630
217
|
},
|
|
631
218
|
788(__unused_rspack_module, __webpack_exports__, __webpack_require__) {
|
|
632
|
-
/* import */ var _exceptions_permission_exception_js__rspack_import_0 = __webpack_require__(
|
|
219
|
+
/* import */ var _exceptions_permission_exception_js__rspack_import_0 = __webpack_require__(8374);
|
|
633
220
|
|
|
634
221
|
/** Whether `granted` covers `required`, honoring `*` (everything) and `prefix.*` (everything under prefix) wildcards */ function matchesPermission(granted, required) {
|
|
635
222
|
if (granted.includes(required)) return true;
|
|
@@ -710,21 +297,89 @@ __webpack_require__.d(__webpack_exports__, {
|
|
|
710
297
|
|
|
711
298
|
|
|
712
299
|
},
|
|
713
|
-
|
|
300
|
+
3366(__unused_rspack_module, __webpack_exports__, __webpack_require__) {
|
|
301
|
+
/**
|
|
302
|
+
* URL-friendly slug: lower case, words joined by single hyphens. Latin accents are folded
|
|
303
|
+
* (`Café` -> `cafe`) and letters of other scripts are kept, so a non-Latin name never
|
|
304
|
+
* collapses to an empty slug. Never starts or ends with a hyphen, also after truncation.
|
|
305
|
+
*
|
|
306
|
+
* @example
|
|
307
|
+
* generateSlug('My Company Name') // 'my-company-name'
|
|
308
|
+
* generateSlug('Hello World!') // 'hello-world'
|
|
309
|
+
*/ function generateSlug(text, maxLength = 100) {
|
|
310
|
+
const slug = text.normalize('NFKD').toLowerCase().replace(/([a-z0-9])\p{M}+/gu, '$1').replace(/[^\p{L}\p{N}\p{M}\s-]/gu, '').trim().replace(/[\s-]+/g, '-').replace(/^-+|-+$/g, '').normalize('NFC');
|
|
311
|
+
return Array.from(slug).slice(0, Math.max(maxLength, 0)).join('').replace(/-+$/, '');
|
|
312
|
+
}
|
|
313
|
+
/**
|
|
314
|
+
* Generate unique slug using single database query (optimized for large datasets)
|
|
315
|
+
* Appends numeric suffix if collision exists (e.g., 'my-company-1', 'my-company-2')
|
|
316
|
+
*
|
|
317
|
+
* Performance: O(1) database query regardless of collision count
|
|
318
|
+
* - Works efficiently with millions of records
|
|
319
|
+
* - Requires index on slug column for best performance
|
|
320
|
+
*
|
|
321
|
+
* @param text - The text to convert to slug
|
|
322
|
+
* @param findMatchingSlugs - Async function that returns all slugs matching base pattern
|
|
323
|
+
* Should query: WHERE slug = baseSlug OR slug LIKE 'baseSlug-%'
|
|
324
|
+
* @param maxLength - Maximum length of the base slug (default: 100)
|
|
325
|
+
* @returns Unique URL-friendly slug
|
|
326
|
+
*
|
|
327
|
+
* @example
|
|
328
|
+
* const slug = await generateUniqueSlug('My Company', async (baseSlug) => {
|
|
329
|
+
* return repo
|
|
330
|
+
* .createQueryBuilder('c')
|
|
331
|
+
* .select('c.slug')
|
|
332
|
+
* .where('c.slug = :base OR c.slug LIKE :pattern', {
|
|
333
|
+
* base: baseSlug,
|
|
334
|
+
* pattern: `${baseSlug}-%`,
|
|
335
|
+
* })
|
|
336
|
+
* .getMany()
|
|
337
|
+
* .then(rows => rows.map(r => r.slug));
|
|
338
|
+
* });
|
|
339
|
+
*/ async function generateUniqueSlug(text, findMatchingSlugs, maxLength = 100) {
|
|
340
|
+
const baseSlug = generateSlug(text, maxLength);
|
|
341
|
+
// Single query to get all matching slugs
|
|
342
|
+
const existingSlugs = await findMatchingSlugs(baseSlug);
|
|
343
|
+
// No collisions - base slug is available
|
|
344
|
+
if (existingSlugs.length === 0) {
|
|
345
|
+
return baseSlug;
|
|
346
|
+
}
|
|
347
|
+
// Build set for O(1) lookup
|
|
348
|
+
const existingSet = new Set(existingSlugs);
|
|
349
|
+
// Base slug not taken (only suffixed versions exist)
|
|
350
|
+
if (!existingSet.has(baseSlug)) {
|
|
351
|
+
return baseSlug;
|
|
352
|
+
}
|
|
353
|
+
// Find next available suffix in memory (fast)
|
|
354
|
+
let counter = 1;
|
|
355
|
+
while(counter < 10000){
|
|
356
|
+
const slugWithSuffix = `${baseSlug}-${counter}`;
|
|
357
|
+
if (!existingSet.has(slugWithSuffix)) {
|
|
358
|
+
return slugWithSuffix;
|
|
359
|
+
}
|
|
360
|
+
counter++;
|
|
361
|
+
}
|
|
362
|
+
// Fallback: append random string (extremely rare edge case)
|
|
363
|
+
const randomSuffix = Math.random().toString(36).substring(2, 8);
|
|
364
|
+
return `${baseSlug}-${randomSuffix}`;
|
|
365
|
+
}
|
|
714
366
|
|
|
715
|
-
|
|
367
|
+
__webpack_require__.d(__webpack_exports__, {
|
|
368
|
+
o: () => (generateUniqueSlug),
|
|
369
|
+
z: () => (generateSlug)
|
|
370
|
+
});
|
|
716
371
|
|
|
717
372
|
|
|
718
373
|
},
|
|
719
|
-
|
|
374
|
+
7823(module) {
|
|
720
375
|
|
|
721
|
-
module.exports =
|
|
376
|
+
module.exports = __rspack_external_crypto;
|
|
722
377
|
|
|
723
378
|
|
|
724
379
|
},
|
|
725
|
-
|
|
380
|
+
7158(module) {
|
|
726
381
|
|
|
727
|
-
module.exports =
|
|
382
|
+
module.exports = __rspack_external_typeorm;
|
|
728
383
|
|
|
729
384
|
|
|
730
385
|
},
|
|
@@ -732,11 +387,13 @@ module.exports = __rspack_external_crypto;
|
|
|
732
387
|
};
|
|
733
388
|
import { __webpack_require__ } from '../runtime.js';
|
|
734
389
|
var __webpack_exec__ = function(moduleId) { return __webpack_require__(__webpack_require__.s = moduleId); }
|
|
735
|
-
import * as __rspack_chunk_1 from '../
|
|
390
|
+
import * as __rspack_chunk_1 from '../997.js';
|
|
736
391
|
__webpack_require__.C(__rspack_chunk_1);
|
|
737
|
-
import * as __rspack_chunk_2 from '
|
|
392
|
+
import * as __rspack_chunk_2 from '../47.js';
|
|
738
393
|
__webpack_require__.C(__rspack_chunk_2);
|
|
739
|
-
|
|
394
|
+
import * as __rspack_chunk_3 from './index.js';
|
|
395
|
+
__webpack_require__.C(__rspack_chunk_3);
|
|
396
|
+
var __webpack_exports__ = __webpack_exec__(4578);var __webpack_exports__DEFAULT_COMPANY_PERMISSION_KEY_FORMAT = __webpack_exports__.s8;
|
|
740
397
|
var __webpack_exports__DEFAULT_USER_PERMISSION_KEY_FORMAT = __webpack_exports__.q6;
|
|
741
398
|
var __webpack_exports__EXPRESSION_FUNCTIONS = __webpack_exports__.Dd;
|
|
742
399
|
var __webpack_exports__EXPRESSION_LIMITS = __webpack_exports__.wj;
|
|
@@ -769,14 +426,15 @@ var __webpack_exports__generateSecureToken = __webpack_exports__.sN;
|
|
|
769
426
|
var __webpack_exports__generateSlug = __webpack_exports__.z9;
|
|
770
427
|
var __webpack_exports__generateUniqueSlug = __webpack_exports__.oo;
|
|
771
428
|
var __webpack_exports__getBranchPath = __webpack_exports__.gN;
|
|
772
|
-
var __webpack_exports__getTodayInTimezone = __webpack_exports__.oB;
|
|
773
429
|
var __webpack_exports__hasCompanyId = __webpack_exports__.f;
|
|
774
430
|
var __webpack_exports__hashToken = __webpack_exports__.QK;
|
|
431
|
+
var __webpack_exports__invalidatePermissionCache = __webpack_exports__.xp;
|
|
775
432
|
var __webpack_exports__isBranchWithin = __webpack_exports__.QU;
|
|
776
433
|
var __webpack_exports__isBrowserRequest = __webpack_exports__.wh;
|
|
777
434
|
var __webpack_exports__isExpired = __webpack_exports__._d;
|
|
778
435
|
var __webpack_exports__isExpressionError = __webpack_exports__.tX;
|
|
779
436
|
var __webpack_exports__isMultiWildcard = __webpack_exports__._c;
|
|
437
|
+
var __webpack_exports__isSensitiveKey = __webpack_exports__.Gd;
|
|
780
438
|
var __webpack_exports__loadOptionalModule = __webpack_exports__.lk;
|
|
781
439
|
var __webpack_exports__loadPermissionCodes = __webpack_exports__.CQ;
|
|
782
440
|
var __webpack_exports__localToUtc = __webpack_exports__.vf;
|
|
@@ -787,9 +445,10 @@ var __webpack_exports__normalizeBranchIds = __webpack_exports__.Ty;
|
|
|
787
445
|
var __webpack_exports__parseDurationToMs = __webpack_exports__.Ju;
|
|
788
446
|
var __webpack_exports__permissionLogicCodes = __webpack_exports__.MO;
|
|
789
447
|
var __webpack_exports__permissionLogicProblem = __webpack_exports__.HU;
|
|
448
|
+
var __webpack_exports__resolvePermissionCacheKey = __webpack_exports__.Rw;
|
|
790
449
|
var __webpack_exports__safeRegexProblem = __webpack_exports__._X;
|
|
791
450
|
var __webpack_exports__sanitizeEventPayload = __webpack_exports__.IN;
|
|
792
451
|
var __webpack_exports__utcToLocal = __webpack_exports__.v4;
|
|
793
452
|
var __webpack_exports__validateCompanyOwnership = __webpack_exports__.bE;
|
|
794
453
|
var __webpack_exports__withSavepoint = __webpack_exports__.o0;
|
|
795
|
-
export { __webpack_exports__DEFAULT_COMPANY_PERMISSION_KEY_FORMAT as DEFAULT_COMPANY_PERMISSION_KEY_FORMAT, __webpack_exports__DEFAULT_USER_PERMISSION_KEY_FORMAT as DEFAULT_USER_PERMISSION_KEY_FORMAT, __webpack_exports__EXPRESSION_FUNCTIONS as EXPRESSION_FUNCTIONS, __webpack_exports__EXPRESSION_LIMITS as EXPRESSION_LIMITS, __webpack_exports__ExpressionError as ExpressionError, __webpack_exports__MAX_PERMISSION_LOGIC_CODES as MAX_PERMISSION_LOGIC_CODES, __webpack_exports__MAX_PERMISSION_LOGIC_DEPTH as MAX_PERMISSION_LOGIC_DEPTH, __webpack_exports__SAFE_REGEX_LIMITS as SAFE_REGEX_LIMITS, __webpack_exports__applyBranchFilter as applyBranchFilter, __webpack_exports__applyCompanyFilter as applyCompanyFilter, __webpack_exports__assertValidConditionGroup as assertValidConditionGroup, __webpack_exports__assertValidExpression as assertValidExpression, __webpack_exports__buildCompanyWhereCondition as buildCompanyWhereCondition, __webpack_exports__buildCookieOptions as buildCookieOptions, __webpack_exports__buildFrontendUrl as buildFrontendUrl, __webpack_exports__buildPermissionCacheKey as buildPermissionCacheKey, __webpack_exports__cacheTenantId as cacheTenantId, __webpack_exports__collectBranchAncestorIds as collectBranchAncestorIds, __webpack_exports__collectBranchDescendantIds as collectBranchDescendantIds, __webpack_exports__compileSafeRegex as compileSafeRegex, __webpack_exports__escapeHtml as escapeHtml, __webpack_exports__escapeHtmlVariables as escapeHtmlVariables, __webpack_exports__evaluateConditionGroup as evaluateConditionGroup, __webpack_exports__evaluateExpression as evaluateExpression, __webpack_exports__evaluatePermissionLogic as evaluatePermissionLogic, __webpack_exports__expressionToNumber as expressionToNumber, __webpack_exports__expressionToText as expressionToText, __webpack_exports__extractFrontendUrl as extractFrontendUrl, __webpack_exports__formatInTimezone as formatInTimezone, __webpack_exports__generateSecureToken as generateSecureToken, __webpack_exports__generateSlug as generateSlug, __webpack_exports__generateUniqueSlug as generateUniqueSlug, __webpack_exports__getBranchPath as getBranchPath,
|
|
454
|
+
export { __webpack_exports__DEFAULT_COMPANY_PERMISSION_KEY_FORMAT as DEFAULT_COMPANY_PERMISSION_KEY_FORMAT, __webpack_exports__DEFAULT_USER_PERMISSION_KEY_FORMAT as DEFAULT_USER_PERMISSION_KEY_FORMAT, __webpack_exports__EXPRESSION_FUNCTIONS as EXPRESSION_FUNCTIONS, __webpack_exports__EXPRESSION_LIMITS as EXPRESSION_LIMITS, __webpack_exports__ExpressionError as ExpressionError, __webpack_exports__MAX_PERMISSION_LOGIC_CODES as MAX_PERMISSION_LOGIC_CODES, __webpack_exports__MAX_PERMISSION_LOGIC_DEPTH as MAX_PERMISSION_LOGIC_DEPTH, __webpack_exports__SAFE_REGEX_LIMITS as SAFE_REGEX_LIMITS, __webpack_exports__applyBranchFilter as applyBranchFilter, __webpack_exports__applyCompanyFilter as applyCompanyFilter, __webpack_exports__assertValidConditionGroup as assertValidConditionGroup, __webpack_exports__assertValidExpression as assertValidExpression, __webpack_exports__buildCompanyWhereCondition as buildCompanyWhereCondition, __webpack_exports__buildCookieOptions as buildCookieOptions, __webpack_exports__buildFrontendUrl as buildFrontendUrl, __webpack_exports__buildPermissionCacheKey as buildPermissionCacheKey, __webpack_exports__cacheTenantId as cacheTenantId, __webpack_exports__collectBranchAncestorIds as collectBranchAncestorIds, __webpack_exports__collectBranchDescendantIds as collectBranchDescendantIds, __webpack_exports__compileSafeRegex as compileSafeRegex, __webpack_exports__escapeHtml as escapeHtml, __webpack_exports__escapeHtmlVariables as escapeHtmlVariables, __webpack_exports__evaluateConditionGroup as evaluateConditionGroup, __webpack_exports__evaluateExpression as evaluateExpression, __webpack_exports__evaluatePermissionLogic as evaluatePermissionLogic, __webpack_exports__expressionToNumber as expressionToNumber, __webpack_exports__expressionToText as expressionToText, __webpack_exports__extractFrontendUrl as extractFrontendUrl, __webpack_exports__formatInTimezone as formatInTimezone, __webpack_exports__generateSecureToken as generateSecureToken, __webpack_exports__generateSlug as generateSlug, __webpack_exports__generateUniqueSlug as generateUniqueSlug, __webpack_exports__getBranchPath as getBranchPath, __webpack_exports__hasCompanyId as hasCompanyId, __webpack_exports__hashToken as hashToken, __webpack_exports__invalidatePermissionCache as invalidatePermissionCache, __webpack_exports__isBranchWithin as isBranchWithin, __webpack_exports__isBrowserRequest as isBrowserRequest, __webpack_exports__isExpired as isExpired, __webpack_exports__isExpressionError as isExpressionError, __webpack_exports__isMultiWildcard as isMultiWildcard, __webpack_exports__isSensitiveKey as isSensitiveKey, __webpack_exports__loadOptionalModule as loadOptionalModule, __webpack_exports__loadPermissionCodes as loadPermissionCodes, __webpack_exports__localToUtc as localToUtc, __webpack_exports__matchEventPattern as matchEventPattern, __webpack_exports__matchesPermission as matchesPermission, __webpack_exports__messageRef as messageRef, __webpack_exports__normalizeBranchIds as normalizeBranchIds, __webpack_exports__parseDurationToMs as parseDurationToMs, __webpack_exports__permissionLogicCodes as permissionLogicCodes, __webpack_exports__permissionLogicProblem as permissionLogicProblem, __webpack_exports__resolvePermissionCacheKey as resolvePermissionCacheKey, __webpack_exports__safeRegexProblem as safeRegexProblem, __webpack_exports__sanitizeEventPayload as sanitizeEventPayload, __webpack_exports__utcToLocal as utcToLocal, __webpack_exports__validateCompanyOwnership as validateCompanyOwnership, __webpack_exports__withSavepoint as withSavepoint };
|