@proofhound/core 0.1.13 → 0.1.15

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.
Files changed (55) hide show
  1. package/dist/server/channels/mcp/dataset-import.tools.d.ts.map +1 -1
  2. package/dist/server/channels/mcp/dataset-import.tools.js +54 -5
  3. package/dist/server/channels/mcp/dataset-import.tools.js.map +1 -1
  4. package/dist/server/common/contracts/object-storage.provider.d.ts +2 -0
  5. package/dist/server/common/contracts/object-storage.provider.d.ts.map +1 -1
  6. package/dist/server/common/contracts/object-storage.provider.js +4 -0
  7. package/dist/server/common/contracts/object-storage.provider.js.map +1 -1
  8. package/dist/server/common/contracts/quota-policy.hook.d.ts +1 -1
  9. package/dist/server/common/contracts/quota-policy.hook.d.ts.map +1 -1
  10. package/dist/server/common/contracts/quota-policy.hook.js.map +1 -1
  11. package/dist/server/infrastructure/orchestration/bullmq.module.js +1 -1
  12. package/dist/server/infrastructure/orchestration/bullmq.module.js.map +1 -1
  13. package/dist/server/infrastructure/orchestration/bullmq.service.d.ts +4 -2
  14. package/dist/server/infrastructure/orchestration/bullmq.service.d.ts.map +1 -1
  15. package/dist/server/infrastructure/orchestration/bullmq.service.js +9 -2
  16. package/dist/server/infrastructure/orchestration/bullmq.service.js.map +1 -1
  17. package/dist/server/modules/dataset/dataset-import-raw-parser.d.ts +9 -0
  18. package/dist/server/modules/dataset/dataset-import-raw-parser.d.ts.map +1 -0
  19. package/dist/server/modules/dataset/dataset-import-raw-parser.js +344 -0
  20. package/dist/server/modules/dataset/dataset-import-raw-parser.js.map +1 -0
  21. package/dist/server/modules/dataset/dataset-import.controller.d.ts +140 -37
  22. package/dist/server/modules/dataset/dataset-import.controller.d.ts.map +1 -1
  23. package/dist/server/modules/dataset/dataset-import.controller.js +39 -0
  24. package/dist/server/modules/dataset/dataset-import.controller.js.map +1 -1
  25. package/dist/server/modules/dataset/dataset-import.repository.d.ts +29 -2
  26. package/dist/server/modules/dataset/dataset-import.repository.d.ts.map +1 -1
  27. package/dist/server/modules/dataset/dataset-import.repository.js +88 -6
  28. package/dist/server/modules/dataset/dataset-import.repository.js.map +1 -1
  29. package/dist/server/modules/dataset/dataset-import.service.d.ts +20 -5
  30. package/dist/server/modules/dataset/dataset-import.service.d.ts.map +1 -1
  31. package/dist/server/modules/dataset/dataset-import.service.js +268 -41
  32. package/dist/server/modules/dataset/dataset-import.service.js.map +1 -1
  33. package/dist/server/modules/dataset/dataset.module.d.ts.map +1 -1
  34. package/dist/server/modules/dataset/dataset.module.js +2 -1
  35. package/dist/server/modules/dataset/dataset.module.js.map +1 -1
  36. package/dist/server/modules/dataset/dataset.repository.d.ts +7 -3
  37. package/dist/server/modules/dataset/dataset.repository.d.ts.map +1 -1
  38. package/dist/server/modules/dataset/dataset.repository.js +127 -8
  39. package/dist/server/modules/dataset/dataset.repository.js.map +1 -1
  40. package/dist/server/modules/dataset/dataset.service.d.ts +3 -0
  41. package/dist/server/modules/dataset/dataset.service.d.ts.map +1 -1
  42. package/dist/server/modules/dataset/dataset.service.js +31 -7
  43. package/dist/server/modules/dataset/dataset.service.js.map +1 -1
  44. package/dist/worker/consumers/dataset-raw-import.consumer.d.ts +18 -0
  45. package/dist/worker/consumers/dataset-raw-import.consumer.d.ts.map +1 -0
  46. package/dist/worker/consumers/dataset-raw-import.consumer.js +52 -0
  47. package/dist/worker/consumers/dataset-raw-import.consumer.js.map +1 -0
  48. package/dist/worker/proofhound-worker.module.d.ts.map +1 -1
  49. package/dist/worker/proofhound-worker.module.js +10 -2
  50. package/dist/worker/proofhound-worker.module.js.map +1 -1
  51. package/dist/worker/runners/dataset-raw-import-runner.d.ts +25 -0
  52. package/dist/worker/runners/dataset-raw-import-runner.d.ts.map +1 -0
  53. package/dist/worker/runners/dataset-raw-import-runner.js +238 -0
  54. package/dist/worker/runners/dataset-raw-import-runner.js.map +1 -0
  55. package/package.json +14 -12
@@ -1,8 +1,10 @@
1
1
  import { type OnModuleDestroy, type OnModuleInit } from '@nestjs/common';
2
- import type { CompleteDatasetImportResponseDto, CreateDatasetImportDto, DatasetImportBatchDto, DatasetImportBatchResponseDto, DatasetImportItemDto } from '@proofhound/shared';
2
+ import type { CompleteDatasetImportResponseDto, CreateDatasetImportDto, CreateRawDatasetImportDto, CreateRawDatasetImportResponseDto, DatasetImportBatchDto, DatasetImportBatchResponseDto, DatasetRawImportCapabilitiesDto, DatasetImportStatusDto } from '@proofhound/shared';
3
3
  import { AccessControlService } from '../../common/contracts/access-control.service';
4
+ import { ObjectStorageProvider } from '../../common/contracts/object-storage.provider';
4
5
  import { QuotaPolicyHook } from '../../common/contracts/quota-policy.hook';
5
6
  import type { CurrentUserPayload } from '../../common/decorators/current-user.decorator';
7
+ import { BullmqService } from '../../infrastructure/orchestration';
6
8
  import { DatasetImportRepository } from './dataset-import.repository';
7
9
  import { DatasetService } from './dataset.service';
8
10
  export declare class DatasetImportService implements OnModuleInit, OnModuleDestroy {
@@ -10,27 +12,40 @@ export declare class DatasetImportService implements OnModuleInit, OnModuleDestr
10
12
  private readonly datasetService;
11
13
  private readonly accessControl;
12
14
  private readonly quotaPolicy;
15
+ private readonly storage;
16
+ private readonly bullmq;
13
17
  private readonly logger;
14
18
  private sweepTimer;
15
19
  private sweeping;
16
- constructor(repo: DatasetImportRepository, datasetService: DatasetService, accessControl: AccessControlService, quotaPolicy: QuotaPolicyHook);
20
+ constructor(repo: DatasetImportRepository, datasetService: DatasetService, accessControl: AccessControlService, quotaPolicy: QuotaPolicyHook, storage: ObjectStorageProvider, bullmq: BullmqService);
17
21
  onModuleInit(): void;
18
22
  onModuleDestroy(): void;
19
- createImport(projectId: string, dto: CreateDatasetImportDto, actor: CurrentUserPayload): Promise<DatasetImportItemDto>;
23
+ createImport(projectId: string, dto: CreateDatasetImportDto, actor: CurrentUserPayload): Promise<DatasetImportStatusDto>;
24
+ getRawImportCapabilities(projectId: string, actor: CurrentUserPayload): Promise<DatasetRawImportCapabilitiesDto>;
25
+ createRawImport(projectId: string, dto: CreateRawDatasetImportDto, actor: CurrentUserPayload): Promise<CreateRawDatasetImportResponseDto>;
20
26
  appendBatch(projectId: string, importId: string, dto: DatasetImportBatchDto, actor: CurrentUserPayload): Promise<DatasetImportBatchResponseDto>;
21
27
  complete(projectId: string, importId: string, actor: CurrentUserPayload): Promise<CompleteDatasetImportResponseDto>;
28
+ completeRawUpload(projectId: string, importId: string, actor: CurrentUserPayload): Promise<DatasetImportStatusDto>;
22
29
  abort(projectId: string, importId: string, actor: CurrentUserPayload): Promise<void>;
23
- getImport(projectId: string, importId: string, actor: CurrentUserPayload): Promise<DatasetImportItemDto>;
30
+ getImport(projectId: string, importId: string, actor: CurrentUserPayload): Promise<DatasetImportStatusDto>;
24
31
  sweepStaleImports(): Promise<void>;
25
32
  private getAccessibleProject;
26
33
  private getWritableProject;
27
- private requireImporting;
34
+ private requireImport;
35
+ private requireImportState;
28
36
  private assertConsistentMappings;
29
37
  private toFieldMappings;
30
38
  private externalIdFieldName;
31
39
  private getExternalId;
40
+ private completeStagedImport;
41
+ private assertRawObjectWithinLimit;
42
+ private assertUploadSizeWithinLimit;
43
+ private cleanupRawImportResources;
44
+ private cleanupRawObjectRef;
45
+ private getRawObjectName;
32
46
  private toImportItem;
33
47
  private getSweepIntervalMs;
34
48
  private getStaleTimeoutMs;
49
+ private getRawUploadMaxBytes;
35
50
  }
36
51
  //# sourceMappingURL=dataset-import.service.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"dataset-import.service.d.ts","sourceRoot":"","sources":["../../../../src/server/modules/dataset/dataset-import.service.ts"],"names":[],"mappings":"AAEA,OAAO,EAKL,KAAK,eAAe,EACpB,KAAK,YAAY,EAClB,MAAM,gBAAgB,CAAC;AAExB,OAAO,KAAK,EACV,gCAAgC,EAChC,sBAAsB,EAEtB,qBAAqB,EACrB,6BAA6B,EAC7B,oBAAoB,EAGrB,MAAM,oBAAoB,CAAC;AAE5B,OAAO,EAAE,oBAAoB,EAAE,MAAM,+CAA+C,CAAC;AACrF,OAAO,EAAE,eAAe,EAAE,MAAM,0CAA0C,CAAC;AAC3E,OAAO,KAAK,EAAE,kBAAkB,EAAE,MAAM,gDAAgD,CAAC;AAEzF,OAAO,EAEL,uBAAuB,EAIxB,MAAM,6BAA6B,CAAC;AACrC,OAAO,EAAE,cAAc,EAAE,MAAM,mBAAmB,CAAC;AAQnD,qBACa,oBAAqB,YAAW,YAAY,EAAE,eAAe;IAMtE,OAAO,CAAC,QAAQ,CAAC,IAAI;IACrB,OAAO,CAAC,QAAQ,CAAC,cAAc;IAC/B,OAAO,CAAC,QAAQ,CAAC,aAAa;IAC9B,OAAO,CAAC,QAAQ,CAAC,WAAW;IAR9B,OAAO,CAAC,QAAQ,CAAC,MAAM,CAAiE;IACxF,OAAO,CAAC,UAAU,CAA+B;IACjD,OAAO,CAAC,QAAQ,CAAS;gBAGN,IAAI,EAAE,uBAAuB,EAC7B,cAAc,EAAE,cAAc,EAC9B,aAAa,EAAE,oBAAoB,EACnC,WAAW,EAAE,eAAe;IAG/C,YAAY,IAAI,IAAI;IAKpB,eAAe,IAAI,IAAI;IAOjB,YAAY,CAChB,SAAS,EAAE,MAAM,EACjB,GAAG,EAAE,sBAAsB,EAC3B,KAAK,EAAE,kBAAkB,GACxB,OAAO,CAAC,oBAAoB,CAAC;IAkB1B,WAAW,CACf,SAAS,EAAE,MAAM,EACjB,QAAQ,EAAE,MAAM,EAChB,GAAG,EAAE,qBAAqB,EAC1B,KAAK,EAAE,kBAAkB,GACxB,OAAO,CAAC,6BAA6B,CAAC;IA2BnC,QAAQ,CACZ,SAAS,EAAE,MAAM,EACjB,QAAQ,EAAE,MAAM,EAChB,KAAK,EAAE,kBAAkB,GACxB,OAAO,CAAC,gCAAgC,CAAC;IAsCtC,KAAK,CAAC,SAAS,EAAE,MAAM,EAAE,QAAQ,EAAE,MAAM,EAAE,KAAK,EAAE,kBAAkB,GAAG,OAAO,CAAC,IAAI,CAAC;IAKpF,SAAS,CAAC,SAAS,EAAE,MAAM,EAAE,QAAQ,EAAE,MAAM,EAAE,KAAK,EAAE,kBAAkB,GAAG,OAAO,CAAC,oBAAoB,CAAC;IAQxG,iBAAiB,IAAI,OAAO,CAAC,IAAI,CAAC;YAgB1B,oBAAoB;YAMpB,kBAAkB;YAKlB,gBAAgB;IAO9B,OAAO,CAAC,wBAAwB;IAOhC,OAAO,CAAC,eAAe;IAIvB,OAAO,CAAC,mBAAmB;IAI3B,OAAO,CAAC,aAAa;IAOrB,OAAO,CAAC,YAAY;IAkBpB,OAAO,CAAC,kBAAkB;IAK1B,OAAO,CAAC,iBAAiB;CAI1B"}
1
+ {"version":3,"file":"dataset-import.service.d.ts","sourceRoot":"","sources":["../../../../src/server/modules/dataset/dataset-import.service.ts"],"names":[],"mappings":"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"}
@@ -16,7 +16,9 @@ const common_1 = require("@nestjs/common");
16
16
  const logger_1 = require("@proofhound/logger");
17
17
  const access_control_1 = require("../../common/access-control");
18
18
  const access_control_service_1 = require("../../common/contracts/access-control.service");
19
+ const object_storage_provider_1 = require("../../common/contracts/object-storage.provider");
19
20
  const quota_policy_hook_1 = require("../../common/contracts/quota-policy.hook");
21
+ const orchestration_1 = require("../../infrastructure/orchestration");
20
22
  const dataset_field_schema_util_1 = require("./dataset-field-schema.util");
21
23
  const dataset_import_repository_1 = require("./dataset-import.repository");
22
24
  const dataset_service_1 = require("./dataset.service");
@@ -25,12 +27,17 @@ const DEFAULT_SWEEP_INTERVAL_MS = 60_000;
25
27
  const DEFAULT_STALE_TIMEOUT_MS = 120_000;
26
28
  const MIN_TICK_MS = 1_000;
27
29
  const IMAGE_ROLES = new Set(['image', 'image_url', 'image_base64']);
30
+ const DEFAULT_DATASET_RAW_UPLOAD_MAX_BYTES = 2 * 1024 * 1024 * 1024;
31
+ const DEFAULT_RAW_UPLOAD_EXPIRES_IN_SECONDS = 60 * 60;
32
+ const RAW_IMPORT_JOB_ID_PREFIX = 'dataset-raw-import';
28
33
  let DatasetImportService = class DatasetImportService {
29
- constructor(repo, datasetService, accessControl, quotaPolicy) {
34
+ constructor(repo, datasetService, accessControl, quotaPolicy, storage, bullmq) {
30
35
  this.repo = repo;
31
36
  this.datasetService = datasetService;
32
37
  this.accessControl = accessControl;
33
38
  this.quotaPolicy = quotaPolicy;
39
+ this.storage = storage;
40
+ this.bullmq = bullmq;
34
41
  this.logger = (0, logger_1.createLogger)('dataset-import.service', { service: 'server' });
35
42
  this.sweepTimer = null;
36
43
  this.sweeping = false;
@@ -48,6 +55,7 @@ let DatasetImportService = class DatasetImportService {
48
55
  async createImport(projectId, dto, actor) {
49
56
  await this.getWritableProject(projectId, actor);
50
57
  this.assertConsistentMappings(dto);
58
+ this.assertUploadSizeWithinLimit(dto.sourceFile.fileSizeBytes);
51
59
  if (await this.repo.isDatasetNameTaken(projectId, dto.name)) {
52
60
  throw new common_1.ConflictException('dataset_name_taken');
53
61
  }
@@ -57,12 +65,68 @@ let DatasetImportService = class DatasetImportService {
57
65
  project: { projectId, source: 'local' },
58
66
  source: 'dataset_import',
59
67
  });
60
- const row = await this.repo.createImport({ projectId, actorUserId: actor.sub, dto });
68
+ const row = await this.repo.createImport({ projectId, actorUserId: actor.sub, dto, initialStatus: 'uploading' });
61
69
  return this.toImportItem(row);
62
70
  }
71
+ async getRawImportCapabilities(projectId, actor) {
72
+ await this.getAccessibleProject(projectId, actor);
73
+ return {
74
+ supported: this.storage.isEnabled() && this.storage.supportsClientUploadSessions(),
75
+ maxBytes: this.getRawUploadMaxBytes(),
76
+ };
77
+ }
78
+ async createRawImport(projectId, dto, actor) {
79
+ await this.getWritableProject(projectId, actor);
80
+ this.assertConsistentMappings(dto);
81
+ this.assertUploadSizeWithinLimit(dto.sourceFile.fileSizeBytes);
82
+ if (await this.repo.isDatasetNameTaken(projectId, dto.name)) {
83
+ throw new common_1.ConflictException('dataset_name_taken');
84
+ }
85
+ if (!this.storage.isEnabled() || !this.storage.supportsClientUploadSessions()) {
86
+ throw new common_1.ServiceUnavailableException('dataset_raw_upload_unavailable');
87
+ }
88
+ await this.quotaPolicy.assertCanStore({
89
+ actor: (0, access_control_1.toActorContext)(actor),
90
+ bytes: nonnegativeInteger(dto.sourceFile.fileSizeBytes),
91
+ project: { projectId, source: 'local' },
92
+ source: 'dataset_raw_import',
93
+ });
94
+ const importId = (0, node_crypto_1.randomUUID)();
95
+ const uploadSession = await this.storage.createUploadSession({
96
+ project: { projectId, source: 'local' },
97
+ resourceType: 'dataset_raw',
98
+ resourceId: importId,
99
+ name: this.getRawObjectName(dto),
100
+ }, {
101
+ contentType: dto.sourceFile.contentType,
102
+ maxBytes: Math.min(dto.sourceFile.fileSizeBytes, this.getRawUploadMaxBytes()),
103
+ expiresInSeconds: DEFAULT_RAW_UPLOAD_EXPIRES_IN_SECONDS,
104
+ });
105
+ if (!uploadSession) {
106
+ throw new common_1.ServiceUnavailableException('dataset_raw_upload_unavailable');
107
+ }
108
+ try {
109
+ const row = await this.repo.createImport({
110
+ importId,
111
+ projectId,
112
+ actorUserId: actor.sub,
113
+ dto,
114
+ importMode: 'raw_object',
115
+ rawUploadSession: { sessionId: uploadSession.sessionId, expiresAt: uploadSession.expiresAt },
116
+ });
117
+ return { import: this.toImportItem(row), uploadSession, maxBytes: this.getRawUploadMaxBytes() };
118
+ }
119
+ catch (error) {
120
+ await this.storage.abortUpload(uploadSession.sessionId).catch(() => undefined);
121
+ throw error;
122
+ }
123
+ }
63
124
  async appendBatch(projectId, importId, dto, actor) {
64
125
  await this.getWritableProject(projectId, actor);
65
- const session = await this.requireImporting(projectId, importId);
126
+ const session = await this.requireImportState(projectId, importId, ['uploading', 'importing']);
127
+ if (session.importMode !== 'batch') {
128
+ throw new common_1.ConflictException('dataset_import_batch_not_allowed');
129
+ }
66
130
  // Reject gaps so the committed staging rows always form a contiguous [0, receivedRows) prefix.
67
131
  if (dto.batchStartIndex > session.receivedRows) {
68
132
  throw new common_1.BadRequestException({ message: 'dataset_import_batch_gap', receivedRows: session.receivedRows });
@@ -84,45 +148,84 @@ let DatasetImportService = class DatasetImportService {
84
148
  }
85
149
  async complete(projectId, importId, actor) {
86
150
  await this.getWritableProject(projectId, actor);
87
- const session = await this.requireImporting(projectId, importId);
88
- const sampleRows = await this.repo.getSampleDataForInference(importId, TYPE_INFERENCE_SAMPLE_LIMIT);
89
- const fieldSchema = (0, dataset_field_schema_util_1.buildDatasetFieldSchema)(this.toFieldMappings(session), sampleRows);
90
- const hasImages = fieldSchema.some((field) => IMAGE_ROLES.has(field.role));
91
- const datasetId = (0, node_crypto_1.randomUUID)();
151
+ const session = await this.requireImport(projectId, importId);
152
+ if (session.importMode === 'batch') {
153
+ return this.completeStagedImport(projectId, session, actor);
154
+ }
155
+ if (['queued', 'parsing', 'importing', 'completed', 'failed', 'aborted'].includes(session.status)) {
156
+ return this.toImportItem(session);
157
+ }
158
+ if (session.status !== 'uploaded') {
159
+ throw new common_1.ConflictException('dataset_raw_upload_not_completed');
160
+ }
161
+ await this.quotaPolicy.assertCanStore({
162
+ actor: (0, access_control_1.toActorContext)(actor),
163
+ bytes: nonnegativeInteger(session.fileSizeBytes),
164
+ project: { projectId, source: 'local' },
165
+ source: 'dataset_import_complete',
166
+ });
167
+ const jobId = `${RAW_IMPORT_JOB_ID_PREFIX}:${importId}`;
168
+ const queued = await this.repo.markQueued(projectId, importId, jobId);
169
+ if (!queued)
170
+ throw new common_1.ConflictException('dataset_import_not_uploaded');
92
171
  try {
93
- const { sampleCount } = await this.repo.promote({
94
- importId,
95
- projectId,
96
- actorUserId: actor.sub,
97
- datasetId,
98
- name: session.name,
99
- description: session.description,
100
- fieldSchema,
101
- hasImages,
172
+ await this.bullmq.enqueueDatasetRawImportJob({ projectId, importId, actorId: actor.sub }, jobId);
173
+ }
174
+ catch (error) {
175
+ await this.repo.markFailed(projectId, importId, 'dataset_import_enqueue_failed', error.message);
176
+ throw error;
177
+ }
178
+ this.logger.info({ importId, jobId }, 'dataset_raw_import_queued');
179
+ return this.toImportItem(queued);
180
+ }
181
+ async completeRawUpload(projectId, importId, actor) {
182
+ await this.getWritableProject(projectId, actor);
183
+ const session = await this.requireImport(projectId, importId);
184
+ if (session.importMode !== 'raw_object')
185
+ throw new common_1.ConflictException('dataset_raw_upload_not_allowed');
186
+ if (['uploaded', 'queued', 'parsing', 'importing', 'completed'].includes(session.status)) {
187
+ return this.toImportItem(session);
188
+ }
189
+ if (session.status !== 'created' && session.status !== 'uploading') {
190
+ throw new common_1.ConflictException('dataset_import_not_uploading');
191
+ }
192
+ if (!session.rawUploadSessionId)
193
+ throw new common_1.BadRequestException('dataset_raw_upload_missing_session');
194
+ let finalizedRef = null;
195
+ try {
196
+ const ref = await this.storage.completeUpload({
197
+ sessionId: session.rawUploadSessionId,
198
+ actor: (0, access_control_1.toActorContext)(actor),
199
+ project: { projectId, source: 'local' },
102
200
  });
103
- const dataset = await this.datasetService.getDataset(projectId, datasetId, actor);
104
- await this.datasetService.recordDatasetImportCompleted({
105
- projectId,
106
- datasetId,
107
- importId,
108
- actorId: actor.sub,
109
- sampleCount,
201
+ finalizedRef = ref;
202
+ this.assertRawObjectWithinLimit(ref);
203
+ await this.quotaPolicy.assertCanStore({
204
+ actor: (0, access_control_1.toActorContext)(actor),
205
+ bytes: nonnegativeInteger(ref.bytes),
206
+ project: { projectId, source: 'local' },
207
+ source: 'dataset_raw_import',
110
208
  });
111
- this.logger.info({ importId, datasetId, sampleCount }, 'dataset_import_completed');
112
- return { dataset, sampleCount };
209
+ const row = await this.repo.markRawUploadCompleted(projectId, importId, ref);
210
+ if (!row)
211
+ throw new common_1.ConflictException('dataset_import_not_uploading');
212
+ this.logger.info({ importId, bytes: ref.bytes }, 'dataset_raw_upload_completed');
213
+ return this.toImportItem(row);
113
214
  }
114
215
  catch (error) {
115
- if (error instanceof dataset_import_repository_1.DatasetImportEmptyError)
116
- throw new common_1.BadRequestException('dataset_import_empty');
117
- if (error instanceof dataset_import_repository_1.DatasetNameTakenError)
118
- throw new common_1.ConflictException('dataset_name_taken');
216
+ await this.repo.markFailed(projectId, importId, 'dataset_raw_upload_complete_failed', error.message);
217
+ await this.cleanupRawImportResources(finalizedRef ? { ...session, rawObjectRef: finalizedRef } : session);
119
218
  throw error;
120
219
  }
121
220
  }
122
- // Cancel an in-progress import: delete the session (staging rows cascade). Idempotent missing session is a no-op.
221
+ // Cancel an in-progress import. Staging rows are cleared and raw transfer resources are removed best-effort.
123
222
  async abort(projectId, importId, actor) {
124
223
  await this.getWritableProject(projectId, actor);
125
- await this.repo.deleteImport(projectId, importId);
224
+ const row = await this.repo.findImportById(projectId, importId);
225
+ if (!row || row.status === 'completed')
226
+ return;
227
+ const aborted = await this.repo.markAborted(projectId, importId);
228
+ await this.cleanupRawImportResources(aborted ?? row);
126
229
  }
127
230
  async getImport(projectId, importId, actor) {
128
231
  await this.getAccessibleProject(projectId, actor);
@@ -138,11 +241,16 @@ let DatasetImportService = class DatasetImportService {
138
241
  this.sweeping = true;
139
242
  try {
140
243
  const threshold = new Date(Date.now() - this.getStaleTimeoutMs());
141
- const ids = await this.repo.findStaleImportIds(threshold);
142
- if (ids.length === 0)
244
+ const staleImports = await this.repo.findStaleImports(threshold);
245
+ const ids = staleImports.map((row) => row.id);
246
+ if (ids.length === 0) {
247
+ await this.storage.sweepPendingUploads(threshold.toISOString()).catch(() => undefined);
143
248
  return;
144
- const deleted = await this.repo.deleteImportsByIds(ids);
145
- this.logger.info({ deleted }, 'dataset_import_sweep_reaped');
249
+ }
250
+ await Promise.all(staleImports.map((row) => this.repo.markAborted(row.projectId, row.id)));
251
+ await Promise.all(staleImports.map((row) => this.cleanupRawImportResources(row)));
252
+ const pendingUploads = await this.storage.sweepPendingUploads(threshold.toISOString()).catch(() => 0);
253
+ this.logger.info({ aborted: ids.length, pendingUploads }, 'dataset_import_sweep_reaped');
146
254
  }
147
255
  catch (error) {
148
256
  this.logger.error({ error: error.message }, 'dataset_import_sweep_failed');
@@ -161,12 +269,17 @@ let DatasetImportService = class DatasetImportService {
161
269
  await this.accessControl.assertCan((0, access_control_1.toActorContext)(actor), { projectId, source: 'local' }, 'project_write');
162
270
  await this.getAccessibleProject(projectId, actor);
163
271
  }
164
- async requireImporting(projectId, importId) {
272
+ async requireImport(projectId, importId) {
165
273
  const row = await this.repo.findImportById(projectId, importId);
166
274
  if (!row)
167
275
  throw new common_1.NotFoundException(`Dataset import ${importId} not found`);
168
- if (row.status !== 'importing')
169
- throw new common_1.ConflictException('dataset_import_not_importing');
276
+ return row;
277
+ }
278
+ async requireImportState(projectId, importId, states) {
279
+ const row = await this.requireImport(projectId, importId);
280
+ if (!states.includes(row.status)) {
281
+ throw new common_1.ConflictException('dataset_import_invalid_state');
282
+ }
170
283
  return row;
171
284
  }
172
285
  assertConsistentMappings(dto) {
@@ -191,11 +304,78 @@ let DatasetImportService = class DatasetImportService {
191
304
  return null;
192
305
  return String(value);
193
306
  }
307
+ async completeStagedImport(projectId, session, actor) {
308
+ if (!['uploading', 'importing'].includes(session.status)) {
309
+ return this.toImportItem(session);
310
+ }
311
+ try {
312
+ const sampleRows = await this.repo.getSampleDataForInference(session.id, TYPE_INFERENCE_SAMPLE_LIMIT);
313
+ const fieldSchema = (0, dataset_field_schema_util_1.buildDatasetFieldSchema)(this.toFieldMappings(session), sampleRows);
314
+ const hasImages = fieldSchema.some((field) => IMAGE_ROLES.has(field.role));
315
+ const datasetId = (0, node_crypto_1.randomUUID)();
316
+ const { sampleCount } = await this.repo.promote({
317
+ importId: session.id,
318
+ projectId,
319
+ actorUserId: actor.sub,
320
+ datasetId,
321
+ name: session.name,
322
+ description: session.description,
323
+ fieldSchema,
324
+ hasImages,
325
+ });
326
+ await this.datasetService.recordDatasetImportCompleted({
327
+ projectId,
328
+ datasetId,
329
+ importId: session.id,
330
+ actorId: actor.sub,
331
+ sampleCount,
332
+ });
333
+ this.logger.info({ importId: session.id, datasetId, sampleCount }, 'dataset_import_completed');
334
+ const row = await this.repo.findImportById(projectId, session.id);
335
+ return this.toImportItem(row ?? { ...session, datasetId, status: 'completed', receivedRows: sampleCount });
336
+ }
337
+ catch (error) {
338
+ if (error instanceof dataset_import_repository_1.DatasetImportEmptyError)
339
+ throw new common_1.BadRequestException('dataset_import_empty');
340
+ if (error instanceof dataset_import_repository_1.DatasetNameTakenError)
341
+ throw new common_1.ConflictException('dataset_name_taken');
342
+ throw error;
343
+ }
344
+ }
345
+ assertRawObjectWithinLimit(ref) {
346
+ this.assertUploadSizeWithinLimit(ref.bytes);
347
+ }
348
+ assertUploadSizeWithinLimit(bytes) {
349
+ if (nonnegativeInteger(bytes) > this.getRawUploadMaxBytes()) {
350
+ throw new common_1.BadRequestException('dataset_raw_upload_too_large');
351
+ }
352
+ }
353
+ async cleanupRawImportResources(row) {
354
+ if (row.rawUploadSessionId) {
355
+ await this.storage.abortUpload(row.rawUploadSessionId).catch((error) => {
356
+ this.logger.warn({ importId: row.id, error: error.message }, 'dataset_raw_upload_abort_failed');
357
+ });
358
+ }
359
+ if (row.rawObjectRef) {
360
+ await this.cleanupRawObjectRef(row.rawObjectRef, row.id);
361
+ }
362
+ }
363
+ async cleanupRawObjectRef(ref, importId) {
364
+ await this.storage.deleteObjects([ref]).catch((error) => {
365
+ this.logger.warn({ importId, key: ref.key, error: error.message }, 'dataset_raw_object_delete_failed');
366
+ });
367
+ }
368
+ getRawObjectName(dto) {
369
+ return `input.${dto.sourceFormat}`;
370
+ }
194
371
  toImportItem(row) {
372
+ const state = row.status;
373
+ const progress = buildImportProgress(row, state);
195
374
  return {
196
375
  id: row.id,
197
376
  projectId: row.projectId,
198
377
  datasetId: row.datasetId,
378
+ importMode: row.importMode === 'raw_object' ? 'raw_object' : 'batch',
199
379
  name: row.name,
200
380
  description: row.description,
201
381
  fileName: row.fileName,
@@ -203,7 +383,18 @@ let DatasetImportService = class DatasetImportService {
203
383
  sourceFormat: row.sourceFormat,
204
384
  declaredTotalRows: row.declaredTotalRows,
205
385
  receivedRows: row.receivedRows,
206
- status: row.status,
386
+ status: state,
387
+ state,
388
+ progress,
389
+ errorCode: row.errorCode,
390
+ errorMessage: row.errorMessage,
391
+ jobId: row.jobId,
392
+ rawUploadCompletedAt: isoOrNull(row.rawUploadCompletedAt),
393
+ queuedAt: isoOrNull(row.queuedAt),
394
+ startedAt: isoOrNull(row.startedAt),
395
+ completedAt: isoOrNull(row.completedAt),
396
+ failedAt: isoOrNull(row.failedAt),
397
+ abortedAt: isoOrNull(row.abortedAt),
207
398
  createdAt: row.createdAt.toISOString(),
208
399
  updatedAt: row.updatedAt.toISOString(),
209
400
  };
@@ -216,6 +407,10 @@ let DatasetImportService = class DatasetImportService {
216
407
  const raw = Number(process.env['DATASET_IMPORT_STALE_TIMEOUT_MS']);
217
408
  return Number.isFinite(raw) && raw >= MIN_TICK_MS ? Math.floor(raw) : DEFAULT_STALE_TIMEOUT_MS;
218
409
  }
410
+ getRawUploadMaxBytes() {
411
+ const raw = Number(process.env['DATASET_RAW_UPLOAD_MAX_BYTES']);
412
+ return Number.isFinite(raw) && raw > 0 ? Math.floor(raw) : DEFAULT_DATASET_RAW_UPLOAD_MAX_BYTES;
413
+ }
219
414
  };
220
415
  exports.DatasetImportService = DatasetImportService;
221
416
  exports.DatasetImportService = DatasetImportService = __decorate([
@@ -223,7 +418,9 @@ exports.DatasetImportService = DatasetImportService = __decorate([
223
418
  __metadata("design:paramtypes", [dataset_import_repository_1.DatasetImportRepository,
224
419
  dataset_service_1.DatasetService,
225
420
  access_control_service_1.AccessControlService,
226
- quota_policy_hook_1.QuotaPolicyHook])
421
+ quota_policy_hook_1.QuotaPolicyHook,
422
+ object_storage_provider_1.ObjectStorageProvider,
423
+ orchestration_1.BullmqService])
227
424
  ], DatasetImportService);
228
425
  function utf8JsonBytes(value) {
229
426
  return node_buffer_1.Buffer.byteLength(JSON.stringify(value ?? null), 'utf8');
@@ -231,4 +428,34 @@ function utf8JsonBytes(value) {
231
428
  function nonnegativeInteger(value) {
232
429
  return Number.isFinite(value) ? Math.max(0, Math.trunc(value ?? 0)) : 0;
233
430
  }
431
+ function isoOrNull(value) {
432
+ return value ? value.toISOString() : null;
433
+ }
434
+ function buildImportProgress(row, state) {
435
+ const totalBytes = nonnegativeInteger(row.fileSizeBytes);
436
+ const uploadedBytes = row.rawObjectRef?.bytes ??
437
+ (['uploaded', 'queued', 'parsing', 'importing', 'completed'].includes(state) ? totalBytes : null);
438
+ const totalRows = row.declaredTotalRows;
439
+ const parsedRows = nonnegativeInteger(row.receivedRows);
440
+ const importedRows = state === 'completed' ? parsedRows : 0;
441
+ let percentage = null;
442
+ if (state === 'completed') {
443
+ percentage = 100;
444
+ }
445
+ else if (totalRows && totalRows > 0) {
446
+ percentage = Math.min(99, Math.round((parsedRows / totalRows) * 100));
447
+ }
448
+ else if (uploadedBytes !== null && totalBytes > 0) {
449
+ percentage = Math.min(75, Math.round((uploadedBytes / totalBytes) * 75));
450
+ }
451
+ return {
452
+ state,
453
+ uploadedBytes,
454
+ parsedRows,
455
+ importedRows,
456
+ totalRows,
457
+ totalBytes,
458
+ percentage,
459
+ };
460
+ }
234
461
  //# sourceMappingURL=dataset-import.service.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"dataset-import.service.js","sourceRoot":"","sources":["../../../../src/server/modules/dataset/dataset-import.service.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"dataset-import.service.js","sourceRoot":"","sources":["../../../../src/server/modules/dataset/dataset-import.service.ts"],"names":[],"mappings":"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"}
@@ -1 +1 @@
1
- {"version":3,"file":"dataset.module.d.ts","sourceRoot":"","sources":["../../../../src/server/modules/dataset/dataset.module.ts"],"names":[],"mappings":"AAWA,qBAaa,aAAa;CAAG"}
1
+ {"version":3,"file":"dataset.module.d.ts","sourceRoot":"","sources":["../../../../src/server/modules/dataset/dataset.module.ts"],"names":[],"mappings":"AAYA,qBAaa,aAAa;CAAG"}
@@ -9,6 +9,7 @@ Object.defineProperty(exports, "__esModule", { value: true });
9
9
  exports.DatasetModule = void 0;
10
10
  const common_1 = require("@nestjs/common");
11
11
  const database_module_1 = require("../../../shared/database/database.module");
12
+ const orchestration_1 = require("../../infrastructure/orchestration");
12
13
  const dataset_sample_payload_1 = require("./dataset-sample-payload");
13
14
  const dataset_deletion_hook_1 = require("./dataset-deletion.hook");
14
15
  const dataset_import_controller_1 = require("./dataset-import.controller");
@@ -22,7 +23,7 @@ let DatasetModule = class DatasetModule {
22
23
  exports.DatasetModule = DatasetModule;
23
24
  exports.DatasetModule = DatasetModule = __decorate([
24
25
  (0, common_1.Module)({
25
- imports: [database_module_1.DatabaseModule],
26
+ imports: [database_module_1.DatabaseModule, orchestration_1.BullmqOrchestrationModule],
26
27
  controllers: [dataset_controller_1.DatasetController, dataset_import_controller_1.DatasetImportController],
27
28
  providers: [
28
29
  dataset_repository_1.DatasetRepository,
@@ -1 +1 @@
1
- {"version":3,"file":"dataset.module.js","sourceRoot":"","sources":["../../../../src/server/modules/dataset/dataset.module.ts"],"names":[],"mappings":";;;;;;;;;AAAA,2CAAwC;AACxC,8EAA0E;AAC1E,qEAAsE;AACtE,mEAAwF;AACxF,2EAAsE;AACtE,2EAAsE;AACtE,qEAAgE;AAChE,6DAAyD;AACzD,6DAAyD;AACzD,uDAAmD;AAe5C,IAAM,aAAa,GAAnB,MAAM,aAAa;CAAG,CAAA;AAAhB,sCAAa;wBAAb,aAAa;IAbzB,IAAA,eAAM,EAAC;QACN,OAAO,EAAE,CAAC,gCAAc,CAAC;QACzB,WAAW,EAAE,CAAC,sCAAiB,EAAE,mDAAuB,CAAC;QACzD,SAAS,EAAE;YACT,sCAAiB;YACjB,mDAA0B;YAC1B,EAAE,OAAO,EAAE,2CAAmB,EAAE,QAAQ,EAAE,gDAAwB,EAAE;YACpE,gCAAc;YACd,mDAAuB;YACvB,6CAAoB;SACrB;QACD,OAAO,EAAE,CAAC,gCAAc,EAAE,6CAAoB,CAAC;KAChD,CAAC;GACW,aAAa,CAAG"}
1
+ {"version":3,"file":"dataset.module.js","sourceRoot":"","sources":["../../../../src/server/modules/dataset/dataset.module.ts"],"names":[],"mappings":";;;;;;;;;AAAA,2CAAwC;AACxC,8EAA0E;AAC1E,sEAA+E;AAC/E,qEAAsE;AACtE,mEAAwF;AACxF,2EAAsE;AACtE,2EAAsE;AACtE,qEAAgE;AAChE,6DAAyD;AACzD,6DAAyD;AACzD,uDAAmD;AAe5C,IAAM,aAAa,GAAnB,MAAM,aAAa;CAAG,CAAA;AAAhB,sCAAa;wBAAb,aAAa;IAbzB,IAAA,eAAM,EAAC;QACN,OAAO,EAAE,CAAC,gCAAc,EAAE,yCAAyB,CAAC;QACpD,WAAW,EAAE,CAAC,sCAAiB,EAAE,mDAAuB,CAAC;QACzD,SAAS,EAAE;YACT,sCAAiB;YACjB,mDAA0B;YAC1B,EAAE,OAAO,EAAE,2CAAmB,EAAE,QAAQ,EAAE,gDAAwB,EAAE;YACpE,gCAAc;YACd,mDAAuB;YACvB,6CAAoB;SACrB;QACD,OAAO,EAAE,CAAC,gCAAc,EAAE,6CAAoB,CAAC;KAChD,CAAC;GACW,aAAa,CAAG"}
@@ -1,6 +1,6 @@
1
1
  import type { DbClient } from '@proofhound/db';
2
2
  import type { CreateDatasetDto, DatasetFieldSchemaDto } from '@proofhound/shared';
3
- import { ObjectStorageProvider } from '../../common/contracts/object-storage.provider';
3
+ import { ObjectStorageProvider, type StoredObjectRef } from '../../common/contracts/object-storage.provider';
4
4
  import { DatasetSamplePayloadReader } from './dataset-sample-payload';
5
5
  export interface DatasetProjectAccessRow {
6
6
  id: string;
@@ -58,6 +58,10 @@ export interface DatasetDeletionImpactRows {
58
58
  experiments: DatasetDeletionImpactRow[];
59
59
  optimizations: DatasetDeletionImpactRow[];
60
60
  }
61
+ export interface HardDeleteRowsResult {
62
+ deleted: number;
63
+ payloadRefs: StoredObjectRef[];
64
+ }
61
65
  export declare class DatasetRepository {
62
66
  private readonly db;
63
67
  private readonly sampleReader;
@@ -84,14 +88,14 @@ export declare class DatasetRepository {
84
88
  label: string;
85
89
  count: number;
86
90
  }>>;
87
- hardDeleteDataset(projectId: string, datasetId: string): Promise<number>;
91
+ hardDeleteDataset(projectId: string, datasetId: string): Promise<HardDeleteRowsResult>;
88
92
  listDeletionImpact(projectId: string, datasetId: string): Promise<DatasetDeletionImpactRows>;
89
93
  updateDatasetMetadata(projectId: string, datasetId: string, args: UpdateDatasetMetadataArgs): Promise<DatasetRow | null>;
90
94
  countDatasetReferences(datasetIds: string[]): Promise<Map<string, {
91
95
  experiments: number;
92
96
  optimizations: number;
93
97
  }>>;
94
- hardDeleteSamples(datasetId: string, sampleIds: string[]): Promise<number>;
98
+ hardDeleteSamples(datasetId: string, sampleIds: string[]): Promise<HardDeleteRowsResult>;
95
99
  decrementDatasetSampleCount(datasetId: string, delta: number): Promise<void>;
96
100
  createDatasetWithSamples(args: CreateDatasetRecordArgs): Promise<DatasetRow>;
97
101
  private getExternalId;
@@ -1 +1 @@
1
- {"version":3,"file":"dataset.repository.d.ts","sourceRoot":"","sources":["../../../../src/server/modules/dataset/dataset.repository.ts"],"names":[],"mappings":"AAEA,OAAO,KAAK,EAAE,QAAQ,EAAE,MAAM,gBAAgB,CAAC;AAE/C,OAAO,KAAK,EAAE,gBAAgB,EAAE,qBAAqB,EAAE,MAAM,oBAAoB,CAAC;AAElF,OAAO,EAAE,qBAAqB,EAAE,MAAM,gDAAgD,CAAC;AAEvF,OAAO,EAAgC,0BAA0B,EAAE,MAAM,0BAA0B,CAAC;AAOpG,MAAM,WAAW,uBAAuB;IACtC,EAAE,EAAE,MAAM,CAAC;CACZ;AAED,MAAM,WAAW,UAAU;IACzB,EAAE,EAAE,MAAM,CAAC;IACX,SAAS,EAAE,MAAM,CAAC;IAClB,IAAI,EAAE,MAAM,CAAC;IACb,MAAM,EAAE,MAAM,CAAC;IACf,WAAW,EAAE,MAAM,GAAG,IAAI,CAAC;IAC3B,WAAW,EAAE,MAAM,CAAC;IACpB,WAAW,EAAE,OAAO,CAAC;IACrB,SAAS,EAAE,OAAO,CAAC;IACnB,aAAa,EAAE,MAAM,GAAG,IAAI,CAAC;IAC7B,SAAS,EAAE,MAAM,CAAC;IAClB,oBAAoB,CAAC,EAAE,MAAM,GAAG,IAAI,CAAC;IACrC,SAAS,EAAE,IAAI,CAAC;IAChB,SAAS,EAAE,IAAI,CAAC;IAChB,UAAU,EAAE,IAAI,GAAG,IAAI,CAAC;IACxB,SAAS,EAAE,IAAI,GAAG,IAAI,CAAC;CACxB;AAED,MAAM,WAAW,gBAAgB;IAC/B,EAAE,EAAE,MAAM,CAAC;IACX,SAAS,EAAE,MAAM,CAAC;IAClB,IAAI,EAAE,OAAO,CAAC;IACd,UAAU,EAAE,MAAM,GAAG,IAAI,CAAC;IAC1B,SAAS,EAAE,IAAI,CAAC;IAChB,SAAS,EAAE,IAAI,CAAC;CACjB;AAED,MAAM,WAAW,uBAAuB;IACtC,SAAS,EAAE,MAAM,CAAC;IAClB,SAAS,EAAE,MAAM,CAAC;IAClB,WAAW,EAAE,MAAM,CAAC;IACpB,GAAG,EAAE,gBAAgB,CAAC;IACtB,WAAW,EAAE,qBAAqB,EAAE,CAAC;IACrC,SAAS,EAAE,OAAO,CAAC;IACnB,aAAa,EAAE,MAAM,CAAC;IACtB,mBAAmB,EAAE,MAAM,GAAG,IAAI,CAAC;CACpC;AAED,MAAM,WAAW,yBAAyB;IACxC,IAAI,EAAE,MAAM,CAAC;IACb,WAAW,EAAE,MAAM,GAAG,IAAI,CAAC;CAC5B;AAED,MAAM,WAAW,wBAAwB;IACvC,EAAE,EAAE,MAAM,CAAC;IACX,IAAI,EAAE,MAAM,GAAG,IAAI,CAAC;IACpB,MAAM,EAAE,MAAM,GAAG,IAAI,CAAC;IACtB,SAAS,EAAE,MAAM,GAAG,IAAI,CAAC;IACzB,QAAQ,EAAE,MAAM,GAAG,IAAI,CAAC;IACxB,eAAe,EAAE,MAAM,GAAG,IAAI,CAAC;IAC/B,mBAAmB,EAAE,MAAM,GAAG,IAAI,CAAC;IACnC,SAAS,EAAE,IAAI,GAAG,IAAI,CAAC;CACxB;AAED,MAAM,WAAW,yBAAyB;IACxC,WAAW,EAAE,wBAAwB,EAAE,CAAC;IACxC,aAAa,EAAE,wBAAwB,EAAE,CAAC;CAC3C;AAED,qBACa,iBAAiB;IAED,OAAO,CAAC,QAAQ,CAAC,EAAE;IAC5C,OAAO,CAAC,QAAQ,CAAC,YAAY;IAC7B,OAAO,CAAC,QAAQ,CAAC,OAAO;gBAFkB,EAAE,EAAE,QAAQ,EACrC,YAAY,EAAE,0BAA0B,EACxC,OAAO,EAAE,qBAAqB;YAKnC,iBAAiB;IAU/B,OAAO,CAAC,mBAAmB,CAgBzB;IAEI,iBAAiB,CACrB,YAAY,EAAE,MAAM,EACpB,SAAS,EAAE,MAAM,EACjB,aAAa,EAAE,OAAO,GACrB,OAAO,CAAC,uBAAuB,GAAG,IAAI,CAAC;IASpC,2BAA2B,CAAC,SAAS,EAAE,MAAM,EAAE,IAAI,EAAE,MAAM,GAAG,OAAO,CAAC,UAAU,GAAG,IAAI,CAAC;IAUxF,YAAY,CAAC,SAAS,EAAE,MAAM,GAAG,OAAO,CAAC,UAAU,EAAE,CAAC;IAQtD,eAAe,CAAC,SAAS,EAAE,MAAM,EAAE,SAAS,EAAE,MAAM,GAAG,OAAO,CAAC,UAAU,GAAG,IAAI,CAAC;IAUjF,cAAc,CAAC,SAAS,EAAE,MAAM,EAAE,SAAS,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC;IAQnE,cAAc,CAAC,SAAS,EAAE,MAAM,EAAE,SAAS,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC;IAQnE,kBAAkB,CAAC,SAAS,EAAE,MAAM,GAAG,OAAO,CAAC,gBAAgB,EAAE,CAAC;IAWlE,sBAAsB,CAC1B,SAAS,EAAE,MAAM,EACjB,OAAO,EAAE;QAAE,KAAK,EAAE,MAAM,CAAC;QAAC,MAAM,EAAE,MAAM,CAAC;QAAC,MAAM,CAAC,EAAE,MAAM,CAAA;KAAE,GAC1D,OAAO,CAAC;QAAE,IAAI,EAAE,gBAAgB,EAAE,CAAC;QAAC,KAAK,EAAE,MAAM,CAAA;KAAE,CAAC;IA6BjD,6BAA6B,CACjC,SAAS,EAAE,MAAM,EACjB,SAAS,EAAE,MAAM,GAChB,OAAO,CAAC,KAAK,CAAC;QAAE,KAAK,EAAE,MAAM,CAAC;QAAC,KAAK,EAAE,MAAM,CAAA;KAAE,CAAC,CAAC;IAsB7C,iBAAiB,CAAC,SAAS,EAAE,MAAM,EAAE,SAAS,EAAE,MAAM,GAAG,OAAO,CAAC,MAAM,CAAC;IAuNxE,kBAAkB,CAAC,SAAS,EAAE,MAAM,EAAE,SAAS,EAAE,MAAM,GAAG,OAAO,CAAC,yBAAyB,CAAC;IA4C5F,qBAAqB,CACzB,SAAS,EAAE,MAAM,EACjB,SAAS,EAAE,MAAM,EACjB,IAAI,EAAE,yBAAyB,GAC9B,OAAO,CAAC,UAAU,GAAG,IAAI,CAAC;IAavB,sBAAsB,CAC1B,UAAU,EAAE,MAAM,EAAE,GACnB,OAAO,CAAC,GAAG,CAAC,MAAM,EAAE;QAAE,WAAW,EAAE,MAAM,CAAC;QAAC,aAAa,EAAE,MAAM,CAAA;KAAE,CAAC,CAAC;IAuCjE,iBAAiB,CAAC,SAAS,EAAE,MAAM,EAAE,SAAS,EAAE,MAAM,EAAE,GAAG,OAAO,CAAC,MAAM,CAAC;IAW1E,2BAA2B,CAAC,SAAS,EAAE,MAAM,EAAE,KAAK,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC;IAW5E,wBAAwB,CAAC,IAAI,EAAE,uBAAuB,GAAG,OAAO,CAAC,UAAU,CAAC;IAiElF,OAAO,CAAC,aAAa;CAMtB"}
1
+ {"version":3,"file":"dataset.repository.d.ts","sourceRoot":"","sources":["../../../../src/server/modules/dataset/dataset.repository.ts"],"names":[],"mappings":"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"}