@cosmicdrift/kumiko-bundled-features 0.371.1 → 0.372.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/dist/auth-mfa/db/queries.d.ts +3 -2
- package/dist/auth-mfa/db/queries.js +2 -5
- package/dist/auth-mfa/schema/user-mfa.d.ts +10 -10
- package/dist/billing-foundation/entities.d.ts +10 -10
- package/dist/billing-foundation/projection.d.ts +10 -10
- package/dist/cap-counter/entity.d.ts +4 -4
- package/dist/cap-overview/web/cap-cards-panel.js +2 -1
- package/dist/compliance-profiles/schema/profile-selection.d.ts +4 -4
- package/dist/config/table.d.ts +6 -6
- package/dist/config/web/index.d.ts +1 -0
- package/dist/config/web/index.js +1 -0
- package/dist/crypto-shredding/handlers/forget-subject.write.js +55 -30
- package/dist/crypto-shredding/resolve-file-bytes-deleter.d.ts +3 -0
- package/dist/crypto-shredding/resolve-file-bytes-deleter.js +24 -0
- package/dist/custom-fields/entity.d.ts +9 -7
- package/dist/custom-fields/executor.d.ts +19 -1
- package/dist/data-retention/index.d.ts +1 -0
- package/dist/data-retention/index.js +1 -0
- package/dist/data-retention/run-retention-cleanup.js +27 -159
- package/dist/data-retention/schema/tenant-retention-override.d.ts +6 -6
- package/dist/delivery/delivery-service.d.ts +2 -1
- package/dist/delivery/delivery-service.js +3 -2
- package/dist/delivery/handlers/unsubscribe-page-chrome.query.js +2 -2
- package/dist/delivery/index.d.ts +1 -1
- package/dist/delivery/index.js +1 -1
- package/dist/delivery/jobs.js +21 -7
- package/dist/delivery/recipient-address-seal.d.ts +13 -0
- package/dist/delivery/recipient-address-seal.js +53 -0
- package/dist/delivery/tables.d.ts +8 -7
- package/dist/delivery/testing.d.ts +2 -1
- package/dist/delivery/testing.js +1 -0
- package/dist/delivery/unsubscribe.d.ts +13 -2
- package/dist/delivery/unsubscribe.js +9 -1
- package/dist/document-ingest-foundation/entity.d.ts +8 -8
- package/dist/document-ingest-foundation/executor.d.ts +16 -1
- package/dist/file-foundation/read-file-ref-content.js +2 -2
- package/dist/folders/entity.d.ts +8 -8
- package/dist/folders/executor.d.ts +29 -2
- package/dist/form-draft/entity.d.ts +3 -3
- package/dist/form-draft/executor.d.ts +15 -1
- package/dist/inbound-mail-foundation/entities.d.ts +31 -31
- package/dist/inbound-mail-foundation/projection.d.ts +24 -24
- package/dist/jobs/job-run-table.d.ts +10 -10
- package/dist/ledger/entity.d.ts +21 -21
- package/dist/ledger/executor.d.ts +57 -3
- package/dist/managed-pages/table.d.ts +16 -14
- package/dist/notes-history/entity.d.ts +14 -14
- package/dist/notes-history/executor.d.ts +31 -2
- package/dist/personal-access-tokens/schema/api-token.d.ts +9 -9
- package/dist/personal-access-tokens/screens.js +14 -9
- package/dist/secrets/table.d.ts +2 -2
- package/dist/sessions/schema/user-session.d.ts +8 -8
- package/dist/shared/index.d.ts +2 -0
- package/dist/shared/index.js +2 -0
- package/dist/shared/purge-files-reaching-subject.d.ts +25 -0
- package/dist/shared/purge-files-reaching-subject.js +146 -0
- package/dist/shared/purge-row-file-refs.d.ts +33 -0
- package/dist/shared/purge-row-file-refs.js +152 -0
- package/dist/tags/entity.d.ts +9 -9
- package/dist/tags/executor.d.ts +30 -2
- package/dist/template-resolver/handlers/shared.d.ts +28 -1
- package/dist/template-resolver/table.d.ts +32 -32
- package/dist/template-resolver/template-preview.js +13 -4
- package/dist/template-resolver/user-content-table.d.ts +16 -16
- package/dist/template-resolver/web/client-plugin.js +2 -1
- package/dist/template-resolver/web/document-editor-extensions.d.ts +1 -1
- package/dist/template-resolver/web/document-editor-extensions.js +2 -5
- package/dist/template-resolver/web/placeholder-line-editor.js +2 -2
- package/dist/tenant/handlers/list.query.d.ts +21 -1
- package/dist/tenant/invitation-table.d.ts +14 -14
- package/dist/tenant/membership-table.d.ts +4 -4
- package/dist/tenant/schema/tenant.d.ts +20 -18
- package/dist/tier-engine/entity.d.ts +2 -2
- package/dist/tier-engine/tier-resolver.d.ts +2 -2
- package/dist/user/handlers/me.query.d.ts +21 -0
- package/dist/user/schema/user.d.ts +24 -22
- package/dist/user-data-rights/run-export-jobs.d.ts +20 -1
- package/dist/user-data-rights/run-forget-cleanup.js +35 -1
- package/dist/user-data-rights/schema/download-attempt.d.ts +16 -16
- package/dist/user-data-rights/schema/download-token.d.ts +16 -16
- package/dist/user-data-rights/schema/export-job.d.ts +20 -20
- package/dist/user-data-rights/web/privacy-center-screen.js +2 -1
- package/dist/waitlist/entity.d.ts +24 -24
- package/dist/waitlist/lib.d.ts +24 -1
- package/package.json +11 -11
- package/src/crypto-shredding/changes.json +6 -0
- package/src/data-retention/changes.json +6 -0
- package/src/delivery/changes.json +13 -0
- package/src/files/changes.json +7 -0
- package/src/personal-access-tokens/changes.json +12 -0
- package/src/template-resolver/changes.json +6 -0
- package/src/user-data-rights/changes.json +6 -0
|
@@ -28,7 +28,7 @@ export declare const USER_DELETED_EMAIL_PREFIX = "deleted";
|
|
|
28
28
|
export declare const USER_ANONYMIZED_EMAIL_PREFIX = "anonymized";
|
|
29
29
|
export declare const USER_ANONYMIZED_EMAIL_DOMAIN = "anonymized.invalid";
|
|
30
30
|
export declare const userEntity: import("@cosmicdrift/kumiko-types/fields").EntityDefinition<{
|
|
31
|
-
email: {
|
|
31
|
+
readonly email: {
|
|
32
32
|
readonly type: "text";
|
|
33
33
|
readonly description?: string;
|
|
34
34
|
readonly maxLength?: number;
|
|
@@ -51,7 +51,7 @@ export declare const userEntity: import("@cosmicdrift/kumiko-types/fields").Enti
|
|
|
51
51
|
} & import("@cosmicdrift/kumiko-types/fields").ResolvedPiiFlags & {
|
|
52
52
|
required: true;
|
|
53
53
|
};
|
|
54
|
-
passwordHash: {
|
|
54
|
+
readonly passwordHash: {
|
|
55
55
|
readonly type: "text";
|
|
56
56
|
readonly description?: string;
|
|
57
57
|
readonly maxLength?: number;
|
|
@@ -74,7 +74,7 @@ export declare const userEntity: import("@cosmicdrift/kumiko-types/fields").Enti
|
|
|
74
74
|
} & import("@cosmicdrift/kumiko-types/fields").ResolvedPiiFlags & {
|
|
75
75
|
required: false;
|
|
76
76
|
};
|
|
77
|
-
displayName: {
|
|
77
|
+
readonly displayName: {
|
|
78
78
|
readonly type: "text";
|
|
79
79
|
readonly description?: string;
|
|
80
80
|
readonly maxLength?: number;
|
|
@@ -97,7 +97,7 @@ export declare const userEntity: import("@cosmicdrift/kumiko-types/fields").Enti
|
|
|
97
97
|
} & import("@cosmicdrift/kumiko-types/fields").ResolvedPiiFlags & {
|
|
98
98
|
required: true;
|
|
99
99
|
};
|
|
100
|
-
locale: {
|
|
100
|
+
readonly locale: {
|
|
101
101
|
readonly type: "text";
|
|
102
102
|
readonly description?: string;
|
|
103
103
|
readonly maxLength?: number;
|
|
@@ -120,7 +120,7 @@ export declare const userEntity: import("@cosmicdrift/kumiko-types/fields").Enti
|
|
|
120
120
|
} & import("@cosmicdrift/kumiko-types/fields").ResolvedPiiFlags & {
|
|
121
121
|
required: false;
|
|
122
122
|
};
|
|
123
|
-
timezone: {
|
|
123
|
+
readonly timezone: {
|
|
124
124
|
readonly type: "tz";
|
|
125
125
|
readonly description?: string;
|
|
126
126
|
readonly required?: boolean;
|
|
@@ -129,7 +129,7 @@ export declare const userEntity: import("@cosmicdrift/kumiko-types/fields").Enti
|
|
|
129
129
|
} & import("@cosmicdrift/kumiko-types/fields").ResolvedPiiFlags & {
|
|
130
130
|
required: false;
|
|
131
131
|
};
|
|
132
|
-
lastActiveTenantId: {
|
|
132
|
+
readonly lastActiveTenantId: {
|
|
133
133
|
readonly type: "text";
|
|
134
134
|
readonly description?: string;
|
|
135
135
|
readonly maxLength?: number;
|
|
@@ -152,11 +152,12 @@ export declare const userEntity: import("@cosmicdrift/kumiko-types/fields").Enti
|
|
|
152
152
|
} & import("@cosmicdrift/kumiko-types/fields").ResolvedPiiFlags & {
|
|
153
153
|
required: false;
|
|
154
154
|
};
|
|
155
|
-
emailVerified: import("@cosmicdrift/kumiko-types/fields").BooleanFieldDef & {
|
|
155
|
+
readonly emailVerified: import("@cosmicdrift/kumiko-types/fields").BooleanFieldDef & {
|
|
156
156
|
required: false;
|
|
157
|
+
default: boolean;
|
|
157
158
|
};
|
|
158
|
-
roles: import("@cosmicdrift/kumiko-types/fields").MultiSelectFieldDef<readonly ["SystemAdmin"]>;
|
|
159
|
-
status: {
|
|
159
|
+
readonly roles: import("@cosmicdrift/kumiko-types/fields").MultiSelectFieldDef<readonly ["SystemAdmin"]>;
|
|
160
|
+
readonly status: {
|
|
160
161
|
readonly type: "select";
|
|
161
162
|
readonly description?: string;
|
|
162
163
|
readonly options: readonly ["active", "restricted", "deletionRequested", "deleted"];
|
|
@@ -180,7 +181,7 @@ export declare const userEntity: import("@cosmicdrift/kumiko-types/fields").Enti
|
|
|
180
181
|
} & import("@cosmicdrift/kumiko-types/fields").ResolvedPiiFlags & {
|
|
181
182
|
required: true;
|
|
182
183
|
};
|
|
183
|
-
gracePeriodEnd: {
|
|
184
|
+
readonly gracePeriodEnd: {
|
|
184
185
|
readonly type: "timestamp";
|
|
185
186
|
readonly description?: string;
|
|
186
187
|
readonly required?: boolean;
|
|
@@ -195,7 +196,7 @@ export declare const userEntity: import("@cosmicdrift/kumiko-types/fields").Enti
|
|
|
195
196
|
} & import("@cosmicdrift/kumiko-types/fields").ResolvedPiiFlags & {
|
|
196
197
|
required: false;
|
|
197
198
|
};
|
|
198
|
-
pendingDeletionRequestId: {
|
|
199
|
+
readonly pendingDeletionRequestId: {
|
|
199
200
|
readonly type: "text";
|
|
200
201
|
readonly description?: string;
|
|
201
202
|
readonly maxLength?: number;
|
|
@@ -220,7 +221,7 @@ export declare const userEntity: import("@cosmicdrift/kumiko-types/fields").Enti
|
|
|
220
221
|
};
|
|
221
222
|
}, "global">;
|
|
222
223
|
export declare const userTable: import("@cosmicdrift/kumiko-framework/db").EntityTable<import("@cosmicdrift/kumiko-types/fields").EntityDefinition<{
|
|
223
|
-
email: {
|
|
224
|
+
readonly email: {
|
|
224
225
|
readonly type: "text";
|
|
225
226
|
readonly description?: string;
|
|
226
227
|
readonly maxLength?: number;
|
|
@@ -243,7 +244,7 @@ export declare const userTable: import("@cosmicdrift/kumiko-framework/db").Entit
|
|
|
243
244
|
} & import("@cosmicdrift/kumiko-types/fields").ResolvedPiiFlags & {
|
|
244
245
|
required: true;
|
|
245
246
|
};
|
|
246
|
-
passwordHash: {
|
|
247
|
+
readonly passwordHash: {
|
|
247
248
|
readonly type: "text";
|
|
248
249
|
readonly description?: string;
|
|
249
250
|
readonly maxLength?: number;
|
|
@@ -266,7 +267,7 @@ export declare const userTable: import("@cosmicdrift/kumiko-framework/db").Entit
|
|
|
266
267
|
} & import("@cosmicdrift/kumiko-types/fields").ResolvedPiiFlags & {
|
|
267
268
|
required: false;
|
|
268
269
|
};
|
|
269
|
-
displayName: {
|
|
270
|
+
readonly displayName: {
|
|
270
271
|
readonly type: "text";
|
|
271
272
|
readonly description?: string;
|
|
272
273
|
readonly maxLength?: number;
|
|
@@ -289,7 +290,7 @@ export declare const userTable: import("@cosmicdrift/kumiko-framework/db").Entit
|
|
|
289
290
|
} & import("@cosmicdrift/kumiko-types/fields").ResolvedPiiFlags & {
|
|
290
291
|
required: true;
|
|
291
292
|
};
|
|
292
|
-
locale: {
|
|
293
|
+
readonly locale: {
|
|
293
294
|
readonly type: "text";
|
|
294
295
|
readonly description?: string;
|
|
295
296
|
readonly maxLength?: number;
|
|
@@ -312,7 +313,7 @@ export declare const userTable: import("@cosmicdrift/kumiko-framework/db").Entit
|
|
|
312
313
|
} & import("@cosmicdrift/kumiko-types/fields").ResolvedPiiFlags & {
|
|
313
314
|
required: false;
|
|
314
315
|
};
|
|
315
|
-
timezone: {
|
|
316
|
+
readonly timezone: {
|
|
316
317
|
readonly type: "tz";
|
|
317
318
|
readonly description?: string;
|
|
318
319
|
readonly required?: boolean;
|
|
@@ -321,7 +322,7 @@ export declare const userTable: import("@cosmicdrift/kumiko-framework/db").Entit
|
|
|
321
322
|
} & import("@cosmicdrift/kumiko-types/fields").ResolvedPiiFlags & {
|
|
322
323
|
required: false;
|
|
323
324
|
};
|
|
324
|
-
lastActiveTenantId: {
|
|
325
|
+
readonly lastActiveTenantId: {
|
|
325
326
|
readonly type: "text";
|
|
326
327
|
readonly description?: string;
|
|
327
328
|
readonly maxLength?: number;
|
|
@@ -344,11 +345,12 @@ export declare const userTable: import("@cosmicdrift/kumiko-framework/db").Entit
|
|
|
344
345
|
} & import("@cosmicdrift/kumiko-types/fields").ResolvedPiiFlags & {
|
|
345
346
|
required: false;
|
|
346
347
|
};
|
|
347
|
-
emailVerified: import("@cosmicdrift/kumiko-types/fields").BooleanFieldDef & {
|
|
348
|
+
readonly emailVerified: import("@cosmicdrift/kumiko-types/fields").BooleanFieldDef & {
|
|
348
349
|
required: false;
|
|
350
|
+
default: boolean;
|
|
349
351
|
};
|
|
350
|
-
roles: import("@cosmicdrift/kumiko-types/fields").MultiSelectFieldDef<readonly ["SystemAdmin"]>;
|
|
351
|
-
status: {
|
|
352
|
+
readonly roles: import("@cosmicdrift/kumiko-types/fields").MultiSelectFieldDef<readonly ["SystemAdmin"]>;
|
|
353
|
+
readonly status: {
|
|
352
354
|
readonly type: "select";
|
|
353
355
|
readonly description?: string;
|
|
354
356
|
readonly options: readonly ["active", "restricted", "deletionRequested", "deleted"];
|
|
@@ -372,7 +374,7 @@ export declare const userTable: import("@cosmicdrift/kumiko-framework/db").Entit
|
|
|
372
374
|
} & import("@cosmicdrift/kumiko-types/fields").ResolvedPiiFlags & {
|
|
373
375
|
required: true;
|
|
374
376
|
};
|
|
375
|
-
gracePeriodEnd: {
|
|
377
|
+
readonly gracePeriodEnd: {
|
|
376
378
|
readonly type: "timestamp";
|
|
377
379
|
readonly description?: string;
|
|
378
380
|
readonly required?: boolean;
|
|
@@ -387,7 +389,7 @@ export declare const userTable: import("@cosmicdrift/kumiko-framework/db").Entit
|
|
|
387
389
|
} & import("@cosmicdrift/kumiko-types/fields").ResolvedPiiFlags & {
|
|
388
390
|
required: false;
|
|
389
391
|
};
|
|
390
|
-
pendingDeletionRequestId: {
|
|
392
|
+
readonly pendingDeletionRequestId: {
|
|
391
393
|
readonly type: "text";
|
|
392
394
|
readonly description?: string;
|
|
393
395
|
readonly maxLength?: number;
|
|
@@ -7,7 +7,26 @@ import type { getTemporal } from "@cosmicdrift/kumiko-framework/time";
|
|
|
7
7
|
type Instant = InstanceType<ReturnType<typeof getTemporal>["Instant"]>;
|
|
8
8
|
export declare const EXPORT_CLEANUP_BACKLOG_AGE_METRIC = "export_cleanup_backlog_age";
|
|
9
9
|
export declare const EXPORT_CLEANUP_LAST_RUN_TIMESTAMP_METRIC = "export_cleanup_last_run_timestamp";
|
|
10
|
-
export declare const tokenCrud: import("@cosmicdrift/kumiko-types/event-store-executor-types").EventStoreExecutor
|
|
10
|
+
export declare const tokenCrud: import("@cosmicdrift/kumiko-types/event-store-executor-types").EventStoreExecutor<{
|
|
11
|
+
readonly id: string;
|
|
12
|
+
readonly tenantId: string;
|
|
13
|
+
readonly version: number;
|
|
14
|
+
readonly insertedAt: Temporal.Instant;
|
|
15
|
+
readonly modifiedAt: Temporal.Instant | null;
|
|
16
|
+
readonly insertedById: string | null;
|
|
17
|
+
readonly modifiedById: string | null;
|
|
18
|
+
readonly isDeleted?: boolean | undefined;
|
|
19
|
+
readonly deletedAt?: Temporal.Instant | null | undefined;
|
|
20
|
+
readonly deletedById?: string | null | undefined;
|
|
21
|
+
readonly expiresAt: Temporal.Instant;
|
|
22
|
+
readonly issuedAt: Temporal.Instant;
|
|
23
|
+
readonly jobId: string;
|
|
24
|
+
readonly lastUsedAt: Temporal.Instant | null;
|
|
25
|
+
readonly lastUsedFromIp: string | null;
|
|
26
|
+
readonly lastUsedUserAgent: string | null;
|
|
27
|
+
readonly tokenHash: string;
|
|
28
|
+
readonly useCount: unknown;
|
|
29
|
+
}>;
|
|
11
30
|
/**
|
|
12
31
|
* Notification-Callback fuer den done-Pfad. Pattern matched
|
|
13
32
|
* auth-routes.PasswordResetConfig.sendResetEmail. Plain-Token bleibt
|
|
@@ -36,11 +36,12 @@ import { createFallbackLogger } from "@cosmicdrift/kumiko-framework/logging";
|
|
|
36
36
|
// retried automatisch).
|
|
37
37
|
import { configuredPiiSubjectKms, subjectIdToKey, } from "@cosmicdrift/kumiko-framework/crypto";
|
|
38
38
|
import { createTenantDb, entityEventName, executeRawQuery, fetchOne, nullBlindIndexesForSubject, selectMany, WritePurposes, } from "@cosmicdrift/kumiko-framework/db";
|
|
39
|
+
import { deleteStoredFileAndDerivatives } from "@cosmicdrift/kumiko-framework/derivatives";
|
|
39
40
|
import { EXT_USER_DATA, EXT_USER_DATA_ORDER, extensionUsageEscapeHatchReason, } from "@cosmicdrift/kumiko-framework/engine";
|
|
40
41
|
import { createEscapeHatchReporter, UNATTRIBUTED_ACTOR, } from "@cosmicdrift/kumiko-framework/pipeline";
|
|
41
42
|
import { purgeSearchDocumentsForSubject, } from "@cosmicdrift/kumiko-framework/search";
|
|
42
43
|
import { resolveRetentionPolicyForTenant, resolveTenantRetentionPreset, } from "../data-retention/index.js";
|
|
43
|
-
import { decryptStoredPii, runInSubTransaction } from "../shared/index.js";
|
|
44
|
+
import { decryptStoredPii, purgeFilesReachingSubject, runInSubTransaction, } from "../shared/index.js";
|
|
44
45
|
import { tenantMembershipsTable } from "../tenant/index.js";
|
|
45
46
|
import { USER_STATUS, userTable } from "../user/index.js";
|
|
46
47
|
import { selectUsersDueForForgetCleanup } from "./db/queries/forget-cleanup.js";
|
|
@@ -218,6 +219,22 @@ async function processUser(args) {
|
|
|
218
219
|
const subject = { kind: "user", userId };
|
|
219
220
|
await purgeSearchDocumentsForSubject(tx, registry.features, args.searchAdapter, subjectIdToKey(subject), subject);
|
|
220
221
|
}
|
|
222
|
+
// Same ordering rationale: the files are found through the entity rows a
|
|
223
|
+
// hook may hard-delete, and a file whose uploader differs from the owner
|
|
224
|
+
// is never reached by the fileRef hook (it keys on insertedById).
|
|
225
|
+
await purgeFilesReachingSubject({
|
|
226
|
+
registry,
|
|
227
|
+
db: tx,
|
|
228
|
+
subject: { kind: "user", userId },
|
|
229
|
+
subjectKey: subjectIdToKey({ kind: "user", userId }),
|
|
230
|
+
resolveDeleteBytes: resolveForgetFileBytesDeleter(buildStorageProvider),
|
|
231
|
+
missingStorage: {
|
|
232
|
+
mode: "skip",
|
|
233
|
+
warn: (tenantId) =>
|
|
234
|
+
// biome-ignore lint/suspicious/noConsole: misconfiguration visibility, same as the fileRef delete hook
|
|
235
|
+
console.warn(`[user-data-rights:run-forget-cleanup] no file provider resolvable for tenantId=${tenantId} - file binaries of userId=${userId} are NOT deleted (rows kept). Mount file-foundation + a file-provider-* feature so erasure can reach the binaries.`),
|
|
236
|
+
},
|
|
237
|
+
});
|
|
221
238
|
for (const tenantId of tenantList) {
|
|
222
239
|
currentTenantId = tenantId;
|
|
223
240
|
// Refine the app-level model to THIS tenant: "single-user" only if the
|
|
@@ -323,6 +340,23 @@ async function processUser(args) {
|
|
|
323
340
|
tenantIdsBeforeDelete,
|
|
324
341
|
};
|
|
325
342
|
}
|
|
343
|
+
// A resolution failure collapses to "no storage" like in the fileRef delete hook; a failing
|
|
344
|
+
// byte delete throws through the sweep so the per-user sub-tx rolls back and the next run retries.
|
|
345
|
+
function resolveForgetFileBytesDeleter(buildStorageProvider) {
|
|
346
|
+
return async (tenantId) => {
|
|
347
|
+
if (!buildStorageProvider)
|
|
348
|
+
return undefined;
|
|
349
|
+
try {
|
|
350
|
+
const provider = await buildStorageProvider(tenantId);
|
|
351
|
+
return (provider &&
|
|
352
|
+
((key) => deleteStoredFileAndDerivatives(key, provider, "user-data-rights:forget-cleanup")));
|
|
353
|
+
}
|
|
354
|
+
catch {
|
|
355
|
+
// skip: provider unresolvable (not configured) -> files skipped with a warn, like the hook
|
|
356
|
+
return undefined;
|
|
357
|
+
}
|
|
358
|
+
};
|
|
359
|
+
}
|
|
326
360
|
// Pseudo-Tenant fuer User ohne aktive Memberships. RFC4122-konforme
|
|
327
361
|
// Null-UUID. Tenant-scoped Hooks finden hier nichts (no-op),
|
|
328
362
|
// tenant-agnostische Hooks (z.B. user) operieren auf der globalen
|
|
@@ -1,5 +1,5 @@
|
|
|
1
1
|
export declare const downloadAttemptEntity: import("@cosmicdrift/kumiko-types/fields").EntityDefinition<{
|
|
2
|
-
result: {
|
|
2
|
+
readonly result: {
|
|
3
3
|
readonly type: "text";
|
|
4
4
|
readonly description?: string;
|
|
5
5
|
readonly maxLength?: number;
|
|
@@ -22,7 +22,7 @@ export declare const downloadAttemptEntity: import("@cosmicdrift/kumiko-types/fi
|
|
|
22
22
|
} & import("@cosmicdrift/kumiko-types/fields").ResolvedPiiFlags & {
|
|
23
23
|
required: true;
|
|
24
24
|
};
|
|
25
|
-
via: {
|
|
25
|
+
readonly via: {
|
|
26
26
|
readonly type: "text";
|
|
27
27
|
readonly description?: string;
|
|
28
28
|
readonly maxLength?: number;
|
|
@@ -45,7 +45,7 @@ export declare const downloadAttemptEntity: import("@cosmicdrift/kumiko-types/fi
|
|
|
45
45
|
} & import("@cosmicdrift/kumiko-types/fields").ResolvedPiiFlags & {
|
|
46
46
|
required: true;
|
|
47
47
|
};
|
|
48
|
-
tokenHash: {
|
|
48
|
+
readonly tokenHash: {
|
|
49
49
|
readonly type: "text";
|
|
50
50
|
readonly description?: string;
|
|
51
51
|
readonly maxLength?: number;
|
|
@@ -68,7 +68,7 @@ export declare const downloadAttemptEntity: import("@cosmicdrift/kumiko-types/fi
|
|
|
68
68
|
} & import("@cosmicdrift/kumiko-types/fields").ResolvedPiiFlags & {
|
|
69
69
|
required: false;
|
|
70
70
|
};
|
|
71
|
-
jobId: {
|
|
71
|
+
readonly jobId: {
|
|
72
72
|
readonly type: "text";
|
|
73
73
|
readonly description?: string;
|
|
74
74
|
readonly maxLength?: number;
|
|
@@ -91,7 +91,7 @@ export declare const downloadAttemptEntity: import("@cosmicdrift/kumiko-types/fi
|
|
|
91
91
|
} & import("@cosmicdrift/kumiko-types/fields").ResolvedPiiFlags & {
|
|
92
92
|
required: false;
|
|
93
93
|
};
|
|
94
|
-
attemptedByUserId: {
|
|
94
|
+
readonly attemptedByUserId: {
|
|
95
95
|
readonly type: "text";
|
|
96
96
|
readonly description?: string;
|
|
97
97
|
readonly maxLength?: number;
|
|
@@ -114,7 +114,7 @@ export declare const downloadAttemptEntity: import("@cosmicdrift/kumiko-types/fi
|
|
|
114
114
|
} & import("@cosmicdrift/kumiko-types/fields").ResolvedPiiFlags & {
|
|
115
115
|
required: false;
|
|
116
116
|
};
|
|
117
|
-
ip: {
|
|
117
|
+
readonly ip: {
|
|
118
118
|
readonly type: "text";
|
|
119
119
|
readonly description?: string;
|
|
120
120
|
readonly maxLength?: number;
|
|
@@ -137,7 +137,7 @@ export declare const downloadAttemptEntity: import("@cosmicdrift/kumiko-types/fi
|
|
|
137
137
|
} & import("@cosmicdrift/kumiko-types/fields").ResolvedPiiFlags & {
|
|
138
138
|
required: false;
|
|
139
139
|
};
|
|
140
|
-
userAgent: {
|
|
140
|
+
readonly userAgent: {
|
|
141
141
|
readonly type: "text";
|
|
142
142
|
readonly description?: string;
|
|
143
143
|
readonly maxLength?: number;
|
|
@@ -160,7 +160,7 @@ export declare const downloadAttemptEntity: import("@cosmicdrift/kumiko-types/fi
|
|
|
160
160
|
} & import("@cosmicdrift/kumiko-types/fields").ResolvedPiiFlags & {
|
|
161
161
|
required: false;
|
|
162
162
|
};
|
|
163
|
-
attemptedAt: {
|
|
163
|
+
readonly attemptedAt: {
|
|
164
164
|
readonly type: "timestamp";
|
|
165
165
|
readonly description?: string;
|
|
166
166
|
readonly required?: boolean;
|
|
@@ -177,7 +177,7 @@ export declare const downloadAttemptEntity: import("@cosmicdrift/kumiko-types/fi
|
|
|
177
177
|
};
|
|
178
178
|
}, "tenant">;
|
|
179
179
|
export declare const downloadAttemptsTable: import("@cosmicdrift/kumiko-framework/db").EntityTable<import("@cosmicdrift/kumiko-types/fields").EntityDefinition<{
|
|
180
|
-
result: {
|
|
180
|
+
readonly result: {
|
|
181
181
|
readonly type: "text";
|
|
182
182
|
readonly description?: string;
|
|
183
183
|
readonly maxLength?: number;
|
|
@@ -200,7 +200,7 @@ export declare const downloadAttemptsTable: import("@cosmicdrift/kumiko-framewor
|
|
|
200
200
|
} & import("@cosmicdrift/kumiko-types/fields").ResolvedPiiFlags & {
|
|
201
201
|
required: true;
|
|
202
202
|
};
|
|
203
|
-
via: {
|
|
203
|
+
readonly via: {
|
|
204
204
|
readonly type: "text";
|
|
205
205
|
readonly description?: string;
|
|
206
206
|
readonly maxLength?: number;
|
|
@@ -223,7 +223,7 @@ export declare const downloadAttemptsTable: import("@cosmicdrift/kumiko-framewor
|
|
|
223
223
|
} & import("@cosmicdrift/kumiko-types/fields").ResolvedPiiFlags & {
|
|
224
224
|
required: true;
|
|
225
225
|
};
|
|
226
|
-
tokenHash: {
|
|
226
|
+
readonly tokenHash: {
|
|
227
227
|
readonly type: "text";
|
|
228
228
|
readonly description?: string;
|
|
229
229
|
readonly maxLength?: number;
|
|
@@ -246,7 +246,7 @@ export declare const downloadAttemptsTable: import("@cosmicdrift/kumiko-framewor
|
|
|
246
246
|
} & import("@cosmicdrift/kumiko-types/fields").ResolvedPiiFlags & {
|
|
247
247
|
required: false;
|
|
248
248
|
};
|
|
249
|
-
jobId: {
|
|
249
|
+
readonly jobId: {
|
|
250
250
|
readonly type: "text";
|
|
251
251
|
readonly description?: string;
|
|
252
252
|
readonly maxLength?: number;
|
|
@@ -269,7 +269,7 @@ export declare const downloadAttemptsTable: import("@cosmicdrift/kumiko-framewor
|
|
|
269
269
|
} & import("@cosmicdrift/kumiko-types/fields").ResolvedPiiFlags & {
|
|
270
270
|
required: false;
|
|
271
271
|
};
|
|
272
|
-
attemptedByUserId: {
|
|
272
|
+
readonly attemptedByUserId: {
|
|
273
273
|
readonly type: "text";
|
|
274
274
|
readonly description?: string;
|
|
275
275
|
readonly maxLength?: number;
|
|
@@ -292,7 +292,7 @@ export declare const downloadAttemptsTable: import("@cosmicdrift/kumiko-framewor
|
|
|
292
292
|
} & import("@cosmicdrift/kumiko-types/fields").ResolvedPiiFlags & {
|
|
293
293
|
required: false;
|
|
294
294
|
};
|
|
295
|
-
ip: {
|
|
295
|
+
readonly ip: {
|
|
296
296
|
readonly type: "text";
|
|
297
297
|
readonly description?: string;
|
|
298
298
|
readonly maxLength?: number;
|
|
@@ -315,7 +315,7 @@ export declare const downloadAttemptsTable: import("@cosmicdrift/kumiko-framewor
|
|
|
315
315
|
} & import("@cosmicdrift/kumiko-types/fields").ResolvedPiiFlags & {
|
|
316
316
|
required: false;
|
|
317
317
|
};
|
|
318
|
-
userAgent: {
|
|
318
|
+
readonly userAgent: {
|
|
319
319
|
readonly type: "text";
|
|
320
320
|
readonly description?: string;
|
|
321
321
|
readonly maxLength?: number;
|
|
@@ -338,7 +338,7 @@ export declare const downloadAttemptsTable: import("@cosmicdrift/kumiko-framewor
|
|
|
338
338
|
} & import("@cosmicdrift/kumiko-types/fields").ResolvedPiiFlags & {
|
|
339
339
|
required: false;
|
|
340
340
|
};
|
|
341
|
-
attemptedAt: {
|
|
341
|
+
readonly attemptedAt: {
|
|
342
342
|
readonly type: "timestamp";
|
|
343
343
|
readonly description?: string;
|
|
344
344
|
readonly required?: boolean;
|
|
@@ -1,5 +1,5 @@
|
|
|
1
1
|
export declare const exportDownloadTokenEntity: import("@cosmicdrift/kumiko-types/fields").EntityDefinition<{
|
|
2
|
-
jobId: {
|
|
2
|
+
readonly jobId: {
|
|
3
3
|
readonly type: "text";
|
|
4
4
|
readonly description?: string;
|
|
5
5
|
readonly maxLength?: number;
|
|
@@ -22,7 +22,7 @@ export declare const exportDownloadTokenEntity: import("@cosmicdrift/kumiko-type
|
|
|
22
22
|
} & import("@cosmicdrift/kumiko-types/fields").ResolvedPiiFlags & {
|
|
23
23
|
required: true;
|
|
24
24
|
};
|
|
25
|
-
tokenHash: {
|
|
25
|
+
readonly tokenHash: {
|
|
26
26
|
readonly type: "text";
|
|
27
27
|
readonly description?: string;
|
|
28
28
|
readonly maxLength?: number;
|
|
@@ -45,7 +45,7 @@ export declare const exportDownloadTokenEntity: import("@cosmicdrift/kumiko-type
|
|
|
45
45
|
} & import("@cosmicdrift/kumiko-types/fields").ResolvedPiiFlags & {
|
|
46
46
|
required: true;
|
|
47
47
|
};
|
|
48
|
-
issuedAt: {
|
|
48
|
+
readonly issuedAt: {
|
|
49
49
|
readonly type: "timestamp";
|
|
50
50
|
readonly description?: string;
|
|
51
51
|
readonly required?: boolean;
|
|
@@ -60,7 +60,7 @@ export declare const exportDownloadTokenEntity: import("@cosmicdrift/kumiko-type
|
|
|
60
60
|
} & import("@cosmicdrift/kumiko-types/fields").ResolvedPiiFlags & {
|
|
61
61
|
required: true;
|
|
62
62
|
};
|
|
63
|
-
expiresAt: {
|
|
63
|
+
readonly expiresAt: {
|
|
64
64
|
readonly type: "timestamp";
|
|
65
65
|
readonly description?: string;
|
|
66
66
|
readonly required?: boolean;
|
|
@@ -75,7 +75,7 @@ export declare const exportDownloadTokenEntity: import("@cosmicdrift/kumiko-type
|
|
|
75
75
|
} & import("@cosmicdrift/kumiko-types/fields").ResolvedPiiFlags & {
|
|
76
76
|
required: true;
|
|
77
77
|
};
|
|
78
|
-
lastUsedAt: {
|
|
78
|
+
readonly lastUsedAt: {
|
|
79
79
|
readonly type: "timestamp";
|
|
80
80
|
readonly description?: string;
|
|
81
81
|
readonly required?: boolean;
|
|
@@ -90,7 +90,7 @@ export declare const exportDownloadTokenEntity: import("@cosmicdrift/kumiko-type
|
|
|
90
90
|
} & import("@cosmicdrift/kumiko-types/fields").ResolvedPiiFlags & {
|
|
91
91
|
required: false;
|
|
92
92
|
};
|
|
93
|
-
useCount: {
|
|
93
|
+
readonly useCount: {
|
|
94
94
|
readonly type: "bigInt";
|
|
95
95
|
readonly description?: string;
|
|
96
96
|
readonly required?: boolean;
|
|
@@ -102,7 +102,7 @@ export declare const exportDownloadTokenEntity: import("@cosmicdrift/kumiko-type
|
|
|
102
102
|
} & import("@cosmicdrift/kumiko-types/fields").ResolvedPiiFlags & {
|
|
103
103
|
required: false;
|
|
104
104
|
};
|
|
105
|
-
lastUsedFromIp: {
|
|
105
|
+
readonly lastUsedFromIp: {
|
|
106
106
|
readonly type: "text";
|
|
107
107
|
readonly description?: string;
|
|
108
108
|
readonly maxLength?: number;
|
|
@@ -125,7 +125,7 @@ export declare const exportDownloadTokenEntity: import("@cosmicdrift/kumiko-type
|
|
|
125
125
|
} & import("@cosmicdrift/kumiko-types/fields").ResolvedPiiFlags & {
|
|
126
126
|
required: false;
|
|
127
127
|
};
|
|
128
|
-
lastUsedUserAgent: {
|
|
128
|
+
readonly lastUsedUserAgent: {
|
|
129
129
|
readonly type: "text";
|
|
130
130
|
readonly description?: string;
|
|
131
131
|
readonly maxLength?: number;
|
|
@@ -150,7 +150,7 @@ export declare const exportDownloadTokenEntity: import("@cosmicdrift/kumiko-type
|
|
|
150
150
|
};
|
|
151
151
|
}, "tenant">;
|
|
152
152
|
export declare const exportDownloadTokensTable: import("@cosmicdrift/kumiko-framework/db").EntityTable<import("@cosmicdrift/kumiko-types/fields").EntityDefinition<{
|
|
153
|
-
jobId: {
|
|
153
|
+
readonly jobId: {
|
|
154
154
|
readonly type: "text";
|
|
155
155
|
readonly description?: string;
|
|
156
156
|
readonly maxLength?: number;
|
|
@@ -173,7 +173,7 @@ export declare const exportDownloadTokensTable: import("@cosmicdrift/kumiko-fram
|
|
|
173
173
|
} & import("@cosmicdrift/kumiko-types/fields").ResolvedPiiFlags & {
|
|
174
174
|
required: true;
|
|
175
175
|
};
|
|
176
|
-
tokenHash: {
|
|
176
|
+
readonly tokenHash: {
|
|
177
177
|
readonly type: "text";
|
|
178
178
|
readonly description?: string;
|
|
179
179
|
readonly maxLength?: number;
|
|
@@ -196,7 +196,7 @@ export declare const exportDownloadTokensTable: import("@cosmicdrift/kumiko-fram
|
|
|
196
196
|
} & import("@cosmicdrift/kumiko-types/fields").ResolvedPiiFlags & {
|
|
197
197
|
required: true;
|
|
198
198
|
};
|
|
199
|
-
issuedAt: {
|
|
199
|
+
readonly issuedAt: {
|
|
200
200
|
readonly type: "timestamp";
|
|
201
201
|
readonly description?: string;
|
|
202
202
|
readonly required?: boolean;
|
|
@@ -211,7 +211,7 @@ export declare const exportDownloadTokensTable: import("@cosmicdrift/kumiko-fram
|
|
|
211
211
|
} & import("@cosmicdrift/kumiko-types/fields").ResolvedPiiFlags & {
|
|
212
212
|
required: true;
|
|
213
213
|
};
|
|
214
|
-
expiresAt: {
|
|
214
|
+
readonly expiresAt: {
|
|
215
215
|
readonly type: "timestamp";
|
|
216
216
|
readonly description?: string;
|
|
217
217
|
readonly required?: boolean;
|
|
@@ -226,7 +226,7 @@ export declare const exportDownloadTokensTable: import("@cosmicdrift/kumiko-fram
|
|
|
226
226
|
} & import("@cosmicdrift/kumiko-types/fields").ResolvedPiiFlags & {
|
|
227
227
|
required: true;
|
|
228
228
|
};
|
|
229
|
-
lastUsedAt: {
|
|
229
|
+
readonly lastUsedAt: {
|
|
230
230
|
readonly type: "timestamp";
|
|
231
231
|
readonly description?: string;
|
|
232
232
|
readonly required?: boolean;
|
|
@@ -241,7 +241,7 @@ export declare const exportDownloadTokensTable: import("@cosmicdrift/kumiko-fram
|
|
|
241
241
|
} & import("@cosmicdrift/kumiko-types/fields").ResolvedPiiFlags & {
|
|
242
242
|
required: false;
|
|
243
243
|
};
|
|
244
|
-
useCount: {
|
|
244
|
+
readonly useCount: {
|
|
245
245
|
readonly type: "bigInt";
|
|
246
246
|
readonly description?: string;
|
|
247
247
|
readonly required?: boolean;
|
|
@@ -253,7 +253,7 @@ export declare const exportDownloadTokensTable: import("@cosmicdrift/kumiko-fram
|
|
|
253
253
|
} & import("@cosmicdrift/kumiko-types/fields").ResolvedPiiFlags & {
|
|
254
254
|
required: false;
|
|
255
255
|
};
|
|
256
|
-
lastUsedFromIp: {
|
|
256
|
+
readonly lastUsedFromIp: {
|
|
257
257
|
readonly type: "text";
|
|
258
258
|
readonly description?: string;
|
|
259
259
|
readonly maxLength?: number;
|
|
@@ -276,7 +276,7 @@ export declare const exportDownloadTokensTable: import("@cosmicdrift/kumiko-fram
|
|
|
276
276
|
} & import("@cosmicdrift/kumiko-types/fields").ResolvedPiiFlags & {
|
|
277
277
|
required: false;
|
|
278
278
|
};
|
|
279
|
-
lastUsedUserAgent: {
|
|
279
|
+
readonly lastUsedUserAgent: {
|
|
280
280
|
readonly type: "text";
|
|
281
281
|
readonly description?: string;
|
|
282
282
|
readonly maxLength?: number;
|