@proofhound/core 0.1.14 → 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.
- package/dist/server/channels/mcp/dataset-import.tools.d.ts.map +1 -1
- package/dist/server/channels/mcp/dataset-import.tools.js +22 -6
- package/dist/server/channels/mcp/dataset-import.tools.js.map +1 -1
- package/dist/server/common/contracts/quota-policy.hook.d.ts +1 -1
- package/dist/server/common/contracts/quota-policy.hook.d.ts.map +1 -1
- package/dist/server/common/contracts/quota-policy.hook.js.map +1 -1
- package/dist/server/infrastructure/orchestration/bullmq.module.js +1 -1
- package/dist/server/infrastructure/orchestration/bullmq.module.js.map +1 -1
- package/dist/server/infrastructure/orchestration/bullmq.service.d.ts +4 -2
- package/dist/server/infrastructure/orchestration/bullmq.service.d.ts.map +1 -1
- package/dist/server/infrastructure/orchestration/bullmq.service.js +9 -2
- package/dist/server/infrastructure/orchestration/bullmq.service.js.map +1 -1
- package/dist/server/modules/dataset/dataset-import-raw-parser.d.ts +3 -1
- package/dist/server/modules/dataset/dataset-import-raw-parser.d.ts.map +1 -1
- package/dist/server/modules/dataset/dataset-import-raw-parser.js +241 -1
- package/dist/server/modules/dataset/dataset-import-raw-parser.js.map +1 -1
- package/dist/server/modules/dataset/dataset-import.controller.d.ts +111 -39
- package/dist/server/modules/dataset/dataset-import.controller.d.ts.map +1 -1
- package/dist/server/modules/dataset/dataset-import.controller.js +12 -0
- package/dist/server/modules/dataset/dataset-import.controller.js.map +1 -1
- package/dist/server/modules/dataset/dataset-import.repository.d.ts +16 -0
- package/dist/server/modules/dataset/dataset-import.repository.d.ts.map +1 -1
- package/dist/server/modules/dataset/dataset-import.repository.js +73 -3
- package/dist/server/modules/dataset/dataset-import.repository.js.map +1 -1
- package/dist/server/modules/dataset/dataset-import.service.d.ts +10 -8
- package/dist/server/modules/dataset/dataset-import.service.d.ts.map +1 -1
- package/dist/server/modules/dataset/dataset-import.service.js +163 -123
- package/dist/server/modules/dataset/dataset-import.service.js.map +1 -1
- package/dist/server/modules/dataset/dataset.module.d.ts.map +1 -1
- package/dist/server/modules/dataset/dataset.module.js +2 -1
- package/dist/server/modules/dataset/dataset.module.js.map +1 -1
- package/dist/server/modules/dataset/dataset.repository.d.ts +7 -3
- package/dist/server/modules/dataset/dataset.repository.d.ts.map +1 -1
- package/dist/server/modules/dataset/dataset.repository.js +127 -8
- package/dist/server/modules/dataset/dataset.repository.js.map +1 -1
- package/dist/server/modules/dataset/dataset.service.d.ts +1 -0
- package/dist/server/modules/dataset/dataset.service.d.ts.map +1 -1
- package/dist/server/modules/dataset/dataset.service.js +19 -7
- package/dist/server/modules/dataset/dataset.service.js.map +1 -1
- package/dist/worker/consumers/dataset-raw-import.consumer.d.ts +18 -0
- package/dist/worker/consumers/dataset-raw-import.consumer.d.ts.map +1 -0
- package/dist/worker/consumers/dataset-raw-import.consumer.js +52 -0
- package/dist/worker/consumers/dataset-raw-import.consumer.js.map +1 -0
- package/dist/worker/proofhound-worker.module.d.ts.map +1 -1
- package/dist/worker/proofhound-worker.module.js +10 -2
- package/dist/worker/proofhound-worker.module.js.map +1 -1
- package/dist/worker/runners/dataset-raw-import-runner.d.ts +25 -0
- package/dist/worker/runners/dataset-raw-import-runner.d.ts.map +1 -0
- package/dist/worker/runners/dataset-raw-import-runner.js +238 -0
- package/dist/worker/runners/dataset-raw-import-runner.js.map +1 -0
- package/package.json +12 -12
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"dataset-import.tools.d.ts","sourceRoot":"","sources":["../../../../src/server/channels/mcp/dataset-import.tools.ts"],"names":[],"mappings":"AAYA,OAAO,KAAK,EAAE,oBAAoB,EAAE,MAAM,8CAA8C,CAAC;AACzF,OAAO,KAAK,EAAE,iBAAiB,EAAE,MAAM,aAAa,CAAC;AAErD,wBAAgB,wBAAwB,CAAC,oBAAoB,EAAE,oBAAoB,GAAG,iBAAiB,EAAE,
|
|
1
|
+
{"version":3,"file":"dataset-import.tools.d.ts","sourceRoot":"","sources":["../../../../src/server/channels/mcp/dataset-import.tools.ts"],"names":[],"mappings":"AAYA,OAAO,KAAK,EAAE,oBAAoB,EAAE,MAAM,8CAA8C,CAAC;AACzF,OAAO,KAAK,EAAE,iBAAiB,EAAE,MAAM,aAAa,CAAC;AAErD,wBAAgB,wBAAwB,CAAC,oBAAoB,EAAE,oBAAoB,GAAG,iBAAiB,EAAE,CAgJxG"}
|
|
@@ -2,9 +2,9 @@
|
|
|
2
2
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
3
|
exports.createDatasetImportTools = createDatasetImportTools;
|
|
4
4
|
/**
|
|
5
|
-
* MCP tool definitions for
|
|
5
|
+
* MCP tool definitions for dataset import (raw upload plus legacy streaming batch ingestion).
|
|
6
6
|
* Delegates to DatasetImportService, matching the REST surface 1:1.
|
|
7
|
-
* See docs/specs/22-datasets.md §3.1
|
|
7
|
+
* See docs/specs/22-datasets.md §3.1 and docs/specs/00-overview.md §5 (three-channel parity).
|
|
8
8
|
*/
|
|
9
9
|
const shared_1 = require("@proofhound/shared");
|
|
10
10
|
const mcp_context_1 = require("./mcp-context");
|
|
@@ -21,7 +21,7 @@ function createDatasetImportTools(datasetImportService) {
|
|
|
21
21
|
description: { type: 'string' },
|
|
22
22
|
fieldMappings: { type: 'array' },
|
|
23
23
|
sourceFile: { type: 'object' },
|
|
24
|
-
sourceFormat: { type: 'string', enum: ['jsonl', 'csv', 'tsv'] },
|
|
24
|
+
sourceFormat: { type: 'string', enum: ['jsonl', 'csv', 'tsv', 'json', 'zip'] },
|
|
25
25
|
declaredTotalRows: { type: 'integer' },
|
|
26
26
|
},
|
|
27
27
|
},
|
|
@@ -54,7 +54,7 @@ function createDatasetImportTools(datasetImportService) {
|
|
|
54
54
|
description: { type: 'string' },
|
|
55
55
|
fieldMappings: { type: 'array' },
|
|
56
56
|
sourceFile: { type: 'object' },
|
|
57
|
-
sourceFormat: { type: 'string', enum: ['jsonl', 'csv', 'tsv'] },
|
|
57
|
+
sourceFormat: { type: 'string', enum: ['jsonl', 'csv', 'tsv', 'json', 'zip'] },
|
|
58
58
|
declaredTotalRows: { type: 'integer' },
|
|
59
59
|
},
|
|
60
60
|
},
|
|
@@ -104,7 +104,7 @@ function createDatasetImportTools(datasetImportService) {
|
|
|
104
104
|
},
|
|
105
105
|
{
|
|
106
106
|
name: 'dataset_import_complete',
|
|
107
|
-
description: '
|
|
107
|
+
description: '完成导入:raw import 入队后台解析,batch import 提升暂存样本为正式数据集',
|
|
108
108
|
inputSchema: {
|
|
109
109
|
type: 'object',
|
|
110
110
|
required: ['importId'],
|
|
@@ -118,9 +118,25 @@ function createDatasetImportTools(datasetImportService) {
|
|
|
118
118
|
return datasetImportService.complete(projectId, importId, (0, mcp_context_1.getMcpActor)(ctx));
|
|
119
119
|
},
|
|
120
120
|
},
|
|
121
|
+
{
|
|
122
|
+
name: 'dataset_import_upload_complete',
|
|
123
|
+
description: '完成 raw upload 校验并把会话推进到 uploaded 状态',
|
|
124
|
+
inputSchema: {
|
|
125
|
+
type: 'object',
|
|
126
|
+
required: ['importId'],
|
|
127
|
+
properties: {
|
|
128
|
+
importId: { type: 'string', format: 'uuid' },
|
|
129
|
+
},
|
|
130
|
+
},
|
|
131
|
+
handler: async (input, ctx) => {
|
|
132
|
+
const { projectId } = (0, mcp_context_1.resolveMcpProjectContext)(ctx);
|
|
133
|
+
const importId = shared_1.datasetIdParamSchema.parse(input.importId);
|
|
134
|
+
return datasetImportService.completeRawUpload(projectId, importId, (0, mcp_context_1.getMcpActor)(ctx));
|
|
135
|
+
},
|
|
136
|
+
},
|
|
121
137
|
{
|
|
122
138
|
name: 'dataset_import_abort',
|
|
123
|
-
description: '
|
|
139
|
+
description: '取消导入会话并清除已暂存样本和临时 raw object',
|
|
124
140
|
inputSchema: {
|
|
125
141
|
type: 'object',
|
|
126
142
|
required: ['importId'],
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"dataset-import.tools.js","sourceRoot":"","sources":["../../../../src/server/channels/mcp/dataset-import.tools.ts"],"names":[],"mappings":";;AAeA,
|
|
1
|
+
{"version":3,"file":"dataset-import.tools.js","sourceRoot":"","sources":["../../../../src/server/channels/mcp/dataset-import.tools.ts"],"names":[],"mappings":"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"}
|
|
@@ -1,5 +1,5 @@
|
|
|
1
1
|
import type { ActorContext, ProjectContext } from '../actor-context';
|
|
2
|
-
export type StorageQuotaSource = 'dataset_upload' | 'dataset_import' | 'dataset_import_batch' | 'dataset_raw_import' | 'dataset_raw_import_batch' | 'run_result';
|
|
2
|
+
export type StorageQuotaSource = 'dataset_upload' | 'dataset_import' | 'dataset_import_batch' | 'dataset_raw_import' | 'dataset_raw_import_batch' | 'dataset_import_complete' | 'run_result';
|
|
3
3
|
export interface StorageQuotaInput {
|
|
4
4
|
project: ProjectContext;
|
|
5
5
|
source: StorageQuotaSource;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"quota-policy.hook.d.ts","sourceRoot":"","sources":["../../../../src/server/common/contracts/quota-policy.hook.ts"],"names":[],"mappings":"AAOA,OAAO,KAAK,EAAE,YAAY,EAAE,cAAc,EAAE,MAAM,kBAAkB,CAAC;AAErE,MAAM,MAAM,kBAAkB,GAC1B,gBAAgB,GAChB,gBAAgB,GAChB,sBAAsB,GACtB,oBAAoB,GACpB,0BAA0B,GAC1B,YAAY,CAAC;AAEjB,MAAM,WAAW,iBAAiB;IAChC,OAAO,EAAE,cAAc,CAAC;IACxB,MAAM,EAAE,kBAAkB,CAAC;IAC3B,KAAK,CAAC,EAAE,YAAY,CAAC;IACrB,yDAAyD;IACzD,KAAK,CAAC,EAAE,MAAM,CAAC;CAChB;AAED,MAAM,WAAW,kBAAkB;IACjC,OAAO,EAAE,cAAc,CAAC;IACxB,MAAM,EAAE,MAAM,CAAC;IACf,OAAO,CAAC,EAAE,MAAM,CAAC;IACjB,SAAS,CAAC,EAAE,MAAM,CAAC;CACpB;AAED,8BAAsB,eAAe;IACnC,QAAQ,CAAC,cAAc,CAAC,KAAK,EAAE,iBAAiB,GAAG,OAAO,CAAC,IAAI,CAAC;IAChE,QAAQ,CAAC,iBAAiB,CAAC,CAAC,EAAE,KAAK,EAAE,kBAAkB,EAAE,GAAG,EAAE,MAAM,OAAO,CAAC,CAAC,CAAC,GAAG,OAAO,CAAC,CAAC,CAAC;CAC5F;AAED,qBAAa,oBAAqB,SAAQ,eAAe;IACjD,cAAc,CAAC,MAAM,EAAE,iBAAiB,GAAG,OAAO,CAAC,IAAI,CAAC;IAIxD,iBAAiB,CAAC,CAAC,EAAE,MAAM,EAAE,kBAAkB,EAAE,GAAG,EAAE,MAAM,OAAO,CAAC,CAAC,CAAC,GAAG,OAAO,CAAC,CAAC,CAAC;CAG1F"}
|
|
1
|
+
{"version":3,"file":"quota-policy.hook.d.ts","sourceRoot":"","sources":["../../../../src/server/common/contracts/quota-policy.hook.ts"],"names":[],"mappings":"AAOA,OAAO,KAAK,EAAE,YAAY,EAAE,cAAc,EAAE,MAAM,kBAAkB,CAAC;AAErE,MAAM,MAAM,kBAAkB,GAC1B,gBAAgB,GAChB,gBAAgB,GAChB,sBAAsB,GACtB,oBAAoB,GACpB,0BAA0B,GAC1B,yBAAyB,GACzB,YAAY,CAAC;AAEjB,MAAM,WAAW,iBAAiB;IAChC,OAAO,EAAE,cAAc,CAAC;IACxB,MAAM,EAAE,kBAAkB,CAAC;IAC3B,KAAK,CAAC,EAAE,YAAY,CAAC;IACrB,yDAAyD;IACzD,KAAK,CAAC,EAAE,MAAM,CAAC;CAChB;AAED,MAAM,WAAW,kBAAkB;IACjC,OAAO,EAAE,cAAc,CAAC;IACxB,MAAM,EAAE,MAAM,CAAC;IACf,OAAO,CAAC,EAAE,MAAM,CAAC;IACjB,SAAS,CAAC,EAAE,MAAM,CAAC;CACpB;AAED,8BAAsB,eAAe;IACnC,QAAQ,CAAC,cAAc,CAAC,KAAK,EAAE,iBAAiB,GAAG,OAAO,CAAC,IAAI,CAAC;IAChE,QAAQ,CAAC,iBAAiB,CAAC,CAAC,EAAE,KAAK,EAAE,kBAAkB,EAAE,GAAG,EAAE,MAAM,OAAO,CAAC,CAAC,CAAC,GAAG,OAAO,CAAC,CAAC,CAAC;CAC5F;AAED,qBAAa,oBAAqB,SAAQ,eAAe;IACjD,cAAc,CAAC,MAAM,EAAE,iBAAiB,GAAG,OAAO,CAAC,IAAI,CAAC;IAIxD,iBAAiB,CAAC,CAAC,EAAE,MAAM,EAAE,kBAAkB,EAAE,GAAG,EAAE,MAAM,OAAO,CAAC,CAAC,CAAC,GAAG,OAAO,CAAC,CAAC,CAAC;CAG1F"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"quota-policy.hook.js","sourceRoot":"","sources":["../../../../src/server/common/contracts/quota-policy.hook.ts"],"names":[],"mappings":";AAAA,4CAA4C;AAC5C,mDAAmD;AACnD,EAAE;AACF,2EAA2E;AAC3E,8EAA8E;AAC9E,8EAA8E;;;
|
|
1
|
+
{"version":3,"file":"quota-policy.hook.js","sourceRoot":"","sources":["../../../../src/server/common/contracts/quota-policy.hook.ts"],"names":[],"mappings":";AAAA,4CAA4C;AAC5C,mDAAmD;AACnD,EAAE;AACF,2EAA2E;AAC3E,8EAA8E;AAC9E,8EAA8E;;;AA4B9E,MAAsB,eAAe;CAGpC;AAHD,0CAGC;AAED,MAAa,oBAAqB,SAAQ,eAAe;IACvD,KAAK,CAAC,cAAc,CAAC,MAAyB;QAC5C,0CAA0C;IAC5C,CAAC;IAED,KAAK,CAAC,iBAAiB,CAAI,MAA0B,EAAE,GAAqB;QAC1E,OAAO,GAAG,EAAE,CAAC;IACf,CAAC;CACF;AARD,oDAQC"}
|
|
@@ -27,7 +27,7 @@ exports.BullmqOrchestrationModule = BullmqOrchestrationModule = __decorate([
|
|
|
27
27
|
},
|
|
28
28
|
}),
|
|
29
29
|
}),
|
|
30
|
-
bullmq_1.BullModule.registerQueue({ name: 'llm' }, { name: 'probe' }),
|
|
30
|
+
bullmq_1.BullModule.registerQueue({ name: 'llm' }, { name: 'probe' }, { name: 'dataset-import' }),
|
|
31
31
|
],
|
|
32
32
|
providers: [bullmq_service_1.BullmqService],
|
|
33
33
|
exports: [bullmq_service_1.BullmqService],
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"bullmq.module.js","sourceRoot":"","sources":["../../../../src/server/infrastructure/orchestration/bullmq.module.ts"],"names":[],"mappings":";;;;;;;;;AAAA,2CAAwC;AACxC,2CAA4C;AAC5C,qDAAiD;AAoB1C,IAAM,yBAAyB,GAA/B,MAAM,yBAAyB;CAAG,CAAA;AAA5B,8DAAyB;oCAAzB,yBAAyB;IAlBrC,IAAA,eAAM,EAAC;QACN,OAAO,EAAE;YACP,mBAAU,CAAC,YAAY,CAAC;gBACtB,UAAU,EAAE,GAAG,EAAE,CAAC,CAAC;oBACjB,UAAU,EAAE,EAAE,GAAG,EAAE,OAAO,CAAC,GAAG,CAAC,WAAW,CAAC,IAAI,wBAAwB,EAAE;oBACzE,0GAA0G;oBAC1G,kJAAkJ;oBAClJ,iBAAiB,EAAE;wBACjB,QAAQ,EAAE,CAAC;wBACX,OAAO,EAAE,EAAE,IAAI,EAAE,aAAa,EAAE,KAAK,EAAE,KAAK,EAAE;qBAC/C;iBACF,CAAC;aACH,CAAC;YACF,mBAAU,CAAC,aAAa,CAAC,EAAE,IAAI,EAAE,KAAK,EAAE,EAAE,EAAE,IAAI,EAAE,OAAO,EAAE,CAAC;
|
|
1
|
+
{"version":3,"file":"bullmq.module.js","sourceRoot":"","sources":["../../../../src/server/infrastructure/orchestration/bullmq.module.ts"],"names":[],"mappings":";;;;;;;;;AAAA,2CAAwC;AACxC,2CAA4C;AAC5C,qDAAiD;AAoB1C,IAAM,yBAAyB,GAA/B,MAAM,yBAAyB;CAAG,CAAA;AAA5B,8DAAyB;oCAAzB,yBAAyB;IAlBrC,IAAA,eAAM,EAAC;QACN,OAAO,EAAE;YACP,mBAAU,CAAC,YAAY,CAAC;gBACtB,UAAU,EAAE,GAAG,EAAE,CAAC,CAAC;oBACjB,UAAU,EAAE,EAAE,GAAG,EAAE,OAAO,CAAC,GAAG,CAAC,WAAW,CAAC,IAAI,wBAAwB,EAAE;oBACzE,0GAA0G;oBAC1G,kJAAkJ;oBAClJ,iBAAiB,EAAE;wBACjB,QAAQ,EAAE,CAAC;wBACX,OAAO,EAAE,EAAE,IAAI,EAAE,aAAa,EAAE,KAAK,EAAE,KAAK,EAAE;qBAC/C;iBACF,CAAC;aACH,CAAC;YACF,mBAAU,CAAC,aAAa,CAAC,EAAE,IAAI,EAAE,KAAK,EAAE,EAAE,EAAE,IAAI,EAAE,OAAO,EAAE,EAAE,EAAE,IAAI,EAAE,gBAAgB,EAAE,CAAC;SACzF;QACD,SAAS,EAAE,CAAC,8BAAa,CAAC;QAC1B,OAAO,EAAE,CAAC,8BAAa,CAAC;KACzB,CAAC;GACW,yBAAyB,CAAG"}
|
|
@@ -1,10 +1,12 @@
|
|
|
1
|
-
import { type LlmJobPayload, type ProbeJobPayload } from '@proofhound/orchestration-shared';
|
|
1
|
+
import { type DatasetRawImportJobPayload, type LlmJobPayload, type ProbeJobPayload } from '@proofhound/orchestration-shared';
|
|
2
2
|
import type { Queue } from 'bullmq';
|
|
3
3
|
export declare class BullmqService {
|
|
4
4
|
private readonly llmQueue;
|
|
5
5
|
private readonly probeQueue;
|
|
6
|
-
|
|
6
|
+
private readonly datasetImportQueue;
|
|
7
|
+
constructor(llmQueue: Queue<LlmJobPayload>, probeQueue: Queue<ProbeJobPayload>, datasetImportQueue: Queue<DatasetRawImportJobPayload>);
|
|
7
8
|
enqueueLlmJob(payload: LlmJobPayload, jobId?: string): Promise<string>;
|
|
8
9
|
enqueueProbeJob(payload: ProbeJobPayload, jobId?: string): Promise<string>;
|
|
10
|
+
enqueueDatasetRawImportJob(payload: DatasetRawImportJobPayload, jobId?: string): Promise<string>;
|
|
9
11
|
}
|
|
10
12
|
//# sourceMappingURL=bullmq.service.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"bullmq.service.d.ts","sourceRoot":"","sources":["../../../../src/server/infrastructure/orchestration/bullmq.service.ts"],"names":[],"mappings":"AAEA,OAAO,
|
|
1
|
+
{"version":3,"file":"bullmq.service.d.ts","sourceRoot":"","sources":["../../../../src/server/infrastructure/orchestration/bullmq.service.ts"],"names":[],"mappings":"AAEA,OAAO,EAIL,KAAK,0BAA0B,EAC/B,KAAK,aAAa,EAClB,KAAK,eAAe,EACrB,MAAM,kCAAkC,CAAC;AAC1C,OAAO,KAAK,EAAE,KAAK,EAAE,MAAM,QAAQ,CAAC;AAIpC,qBACa,aAAa;IAEF,OAAO,CAAC,QAAQ,CAAC,QAAQ;IACvB,OAAO,CAAC,QAAQ,CAAC,UAAU;IAClB,OAAO,CAAC,QAAQ,CAAC,kBAAkB;gBAF7B,QAAQ,EAAE,KAAK,CAAC,aAAa,CAAC,EAC5B,UAAU,EAAE,KAAK,CAAC,eAAe,CAAC,EACzB,kBAAkB,EAAE,KAAK,CAAC,0BAA0B,CAAC;IAGjG,aAAa,CAAC,OAAO,EAAE,aAAa,EAAE,KAAK,CAAC,EAAE,MAAM,GAAG,OAAO,CAAC,MAAM,CAAC;IAMtE,eAAe,CAAC,OAAO,EAAE,eAAe,EAAE,KAAK,CAAC,EAAE,MAAM,GAAG,OAAO,CAAC,MAAM,CAAC;IAM1E,0BAA0B,CAAC,OAAO,EAAE,0BAA0B,EAAE,KAAK,CAAC,EAAE,MAAM,GAAG,OAAO,CAAC,MAAM,CAAC;CAKvG"}
|
|
@@ -19,9 +19,10 @@ const orchestration_shared_1 = require("@proofhound/orchestration-shared");
|
|
|
19
19
|
// BullMQ producer: business Services dispatch tasks through this service
|
|
20
20
|
// See docs/specs/03-orchestration.md §2
|
|
21
21
|
let BullmqService = class BullmqService {
|
|
22
|
-
constructor(llmQueue, probeQueue) {
|
|
22
|
+
constructor(llmQueue, probeQueue, datasetImportQueue) {
|
|
23
23
|
this.llmQueue = llmQueue;
|
|
24
24
|
this.probeQueue = probeQueue;
|
|
25
|
+
this.datasetImportQueue = datasetImportQueue;
|
|
25
26
|
}
|
|
26
27
|
async enqueueLlmJob(payload, jobId) {
|
|
27
28
|
const parsed = orchestration_shared_1.llmJobPayloadSchema.parse(payload);
|
|
@@ -33,12 +34,18 @@ let BullmqService = class BullmqService {
|
|
|
33
34
|
const job = await this.probeQueue.add('probe-model', parsed, jobId ? { jobId } : undefined);
|
|
34
35
|
return String(job.id);
|
|
35
36
|
}
|
|
37
|
+
async enqueueDatasetRawImportJob(payload, jobId) {
|
|
38
|
+
const parsed = orchestration_shared_1.datasetRawImportJobPayloadSchema.parse(payload);
|
|
39
|
+
const job = await this.datasetImportQueue.add('dataset-raw-import', parsed, jobId ? { jobId } : undefined);
|
|
40
|
+
return String(job.id);
|
|
41
|
+
}
|
|
36
42
|
};
|
|
37
43
|
exports.BullmqService = BullmqService;
|
|
38
44
|
exports.BullmqService = BullmqService = __decorate([
|
|
39
45
|
(0, common_1.Injectable)(),
|
|
40
46
|
__param(0, (0, bullmq_1.InjectQueue)('llm')),
|
|
41
47
|
__param(1, (0, bullmq_1.InjectQueue)('probe')),
|
|
42
|
-
|
|
48
|
+
__param(2, (0, bullmq_1.InjectQueue)('dataset-import')),
|
|
49
|
+
__metadata("design:paramtypes", [Function, Function, Function])
|
|
43
50
|
], BullmqService);
|
|
44
51
|
//# sourceMappingURL=bullmq.service.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"bullmq.service.js","sourceRoot":"","sources":["../../../../src/server/infrastructure/orchestration/bullmq.service.ts"],"names":[],"mappings":";;;;;;;;;;;;;;;AAAA,2CAA4C;AAC5C,2CAA6C;AAC7C,
|
|
1
|
+
{"version":3,"file":"bullmq.service.js","sourceRoot":"","sources":["../../../../src/server/infrastructure/orchestration/bullmq.service.ts"],"names":[],"mappings":";;;;;;;;;;;;;;;AAAA,2CAA4C;AAC5C,2CAA6C;AAC7C,2EAO0C;AAG1C,yEAAyE;AACzE,wCAAwC;AAEjC,IAAM,aAAa,GAAnB,MAAM,aAAa;IACxB,YACuC,QAA8B,EAC5B,UAAkC,EACzB,kBAAqD;QAFhE,aAAQ,GAAR,QAAQ,CAAsB;QAC5B,eAAU,GAAV,UAAU,CAAwB;QACzB,uBAAkB,GAAlB,kBAAkB,CAAmC;IACpG,CAAC;IAEJ,KAAK,CAAC,aAAa,CAAC,OAAsB,EAAE,KAAc;QACxD,MAAM,MAAM,GAAG,0CAAmB,CAAC,KAAK,CAAC,OAAO,CAAC,CAAC;QAClD,MAAM,GAAG,GAAG,MAAM,IAAI,CAAC,QAAQ,CAAC,GAAG,CAAC,YAAY,EAAE,MAAM,EAAE,KAAK,CAAC,CAAC,CAAC,EAAE,KAAK,EAAE,CAAC,CAAC,CAAC,SAAS,CAAC,CAAC;QACzF,OAAO,MAAM,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC;IACxB,CAAC;IAED,KAAK,CAAC,eAAe,CAAC,OAAwB,EAAE,KAAc;QAC5D,MAAM,MAAM,GAAG,4CAAqB,CAAC,KAAK,CAAC,OAAO,CAAC,CAAC;QACpD,MAAM,GAAG,GAAG,MAAM,IAAI,CAAC,UAAU,CAAC,GAAG,CAAC,aAAa,EAAE,MAAM,EAAE,KAAK,CAAC,CAAC,CAAC,EAAE,KAAK,EAAE,CAAC,CAAC,CAAC,SAAS,CAAC,CAAC;QAC5F,OAAO,MAAM,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC;IACxB,CAAC;IAED,KAAK,CAAC,0BAA0B,CAAC,OAAmC,EAAE,KAAc;QAClF,MAAM,MAAM,GAAG,uDAAgC,CAAC,KAAK,CAAC,OAAO,CAAC,CAAC;QAC/D,MAAM,GAAG,GAAG,MAAM,IAAI,CAAC,kBAAkB,CAAC,GAAG,CAAC,oBAAoB,EAAE,MAAM,EAAE,KAAK,CAAC,CAAC,CAAC,EAAE,KAAK,EAAE,CAAC,CAAC,CAAC,SAAS,CAAC,CAAC;QAC3G,OAAO,MAAM,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC;IACxB,CAAC;CACF,CAAA;AAxBY,sCAAa;wBAAb,aAAa;IADzB,IAAA,mBAAU,GAAE;IAGR,WAAA,IAAA,oBAAW,EAAC,KAAK,CAAC,CAAA;IAClB,WAAA,IAAA,oBAAW,EAAC,OAAO,CAAC,CAAA;IACpB,WAAA,IAAA,oBAAW,EAAC,gBAAgB,CAAC,CAAA;;GAJrB,aAAa,CAwBzB"}
|
|
@@ -1,7 +1,9 @@
|
|
|
1
|
-
import {
|
|
1
|
+
import { Readable } from 'node:stream';
|
|
2
2
|
import type { DatasetImportSourceFormat } from '@proofhound/shared';
|
|
3
3
|
export declare const DEFAULT_RAW_IMPORT_MAX_LINE_BYTES: number;
|
|
4
|
+
export declare const DEFAULT_RAW_IMPORT_MAX_BUFFERED_BYTES: number;
|
|
4
5
|
export declare function parseRawDatasetRows(stream: Readable, sourceFormat: DatasetImportSourceFormat, options?: {
|
|
5
6
|
maxLineBytes?: number;
|
|
7
|
+
maxBufferedBytes?: number;
|
|
6
8
|
}): AsyncGenerator<Record<string, unknown>>;
|
|
7
9
|
//# sourceMappingURL=dataset-import-raw-parser.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"dataset-import-raw-parser.d.ts","sourceRoot":"","sources":["../../../../src/server/modules/dataset/dataset-import-raw-parser.ts"],"names":[],"mappings":"AACA,OAAO,
|
|
1
|
+
{"version":3,"file":"dataset-import-raw-parser.d.ts","sourceRoot":"","sources":["../../../../src/server/modules/dataset/dataset-import-raw-parser.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,QAAQ,EAAa,MAAM,aAAa,CAAC;AAIlD,OAAO,KAAK,EAAE,yBAAyB,EAAE,MAAM,oBAAoB,CAAC;AAEpE,eAAO,MAAM,iCAAiC,QAAmB,CAAC;AAClE,eAAO,MAAM,qCAAqC,QAAmB,CAAC;AAItE,wBAAuB,mBAAmB,CACxC,MAAM,EAAE,QAAQ,EAChB,YAAY,EAAE,yBAAyB,EACvC,OAAO,GAAE;IAAE,YAAY,CAAC,EAAE,MAAM,CAAC;IAAC,gBAAgB,CAAC,EAAE,MAAM,CAAA;CAAO,GACjE,cAAc,CAAC,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC,CAsBzC"}
|
|
@@ -3,12 +3,16 @@ var __importDefault = (this && this.__importDefault) || function (mod) {
|
|
|
3
3
|
return (mod && mod.__esModule) ? mod : { "default": mod };
|
|
4
4
|
};
|
|
5
5
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
6
|
-
exports.DEFAULT_RAW_IMPORT_MAX_LINE_BYTES = void 0;
|
|
6
|
+
exports.DEFAULT_RAW_IMPORT_MAX_BUFFERED_BYTES = exports.DEFAULT_RAW_IMPORT_MAX_LINE_BYTES = void 0;
|
|
7
7
|
exports.parseRawDatasetRows = parseRawDatasetRows;
|
|
8
8
|
const node_string_decoder_1 = require("node:string_decoder");
|
|
9
9
|
const node_stream_1 = require("node:stream");
|
|
10
|
+
const node_util_1 = require("node:util");
|
|
11
|
+
const node_zlib_1 = require("node:zlib");
|
|
10
12
|
const papaparse_1 = __importDefault(require("papaparse"));
|
|
11
13
|
exports.DEFAULT_RAW_IMPORT_MAX_LINE_BYTES = 16 * 1024 * 1024;
|
|
14
|
+
exports.DEFAULT_RAW_IMPORT_MAX_BUFFERED_BYTES = 64 * 1024 * 1024;
|
|
15
|
+
const inflateRawAsync = (0, node_util_1.promisify)(node_zlib_1.inflateRaw);
|
|
12
16
|
async function* parseRawDatasetRows(stream, sourceFormat, options = {}) {
|
|
13
17
|
if (sourceFormat === 'jsonl') {
|
|
14
18
|
yield* parseJsonlRows(stream, options.maxLineBytes ?? exports.DEFAULT_RAW_IMPORT_MAX_LINE_BYTES);
|
|
@@ -18,6 +22,14 @@ async function* parseRawDatasetRows(stream, sourceFormat, options = {}) {
|
|
|
18
22
|
yield* parseDelimitedRows(stream, sourceFormat === 'csv' ? ',' : '\t', options.maxLineBytes ?? exports.DEFAULT_RAW_IMPORT_MAX_LINE_BYTES);
|
|
19
23
|
return;
|
|
20
24
|
}
|
|
25
|
+
if (sourceFormat === 'json') {
|
|
26
|
+
yield* parseJsonArrayRows(stream, options.maxBufferedBytes ?? exports.DEFAULT_RAW_IMPORT_MAX_BUFFERED_BYTES);
|
|
27
|
+
return;
|
|
28
|
+
}
|
|
29
|
+
if (sourceFormat === 'zip') {
|
|
30
|
+
yield* parseZipRows(stream, options.maxBufferedBytes ?? exports.DEFAULT_RAW_IMPORT_MAX_BUFFERED_BYTES);
|
|
31
|
+
return;
|
|
32
|
+
}
|
|
21
33
|
throw new Error('unsupported_file_type');
|
|
22
34
|
}
|
|
23
35
|
async function* parseJsonlRows(stream, maxLineBytes) {
|
|
@@ -101,4 +113,232 @@ function parseDelimitedCell(value) {
|
|
|
101
113
|
return trimmed;
|
|
102
114
|
}
|
|
103
115
|
}
|
|
116
|
+
async function* parseJsonArrayRows(stream, maxBytes) {
|
|
117
|
+
const buffer = await readStreamBuffer(stream, maxBytes);
|
|
118
|
+
const parsed = JSON.parse(buffer.toString('utf8'));
|
|
119
|
+
if (!Array.isArray(parsed))
|
|
120
|
+
throw new Error('json_array_required');
|
|
121
|
+
for (const row of parsed) {
|
|
122
|
+
if (row && typeof row === 'object' && !Array.isArray(row)) {
|
|
123
|
+
yield row;
|
|
124
|
+
}
|
|
125
|
+
}
|
|
126
|
+
}
|
|
127
|
+
async function* parseZipRows(stream, maxBytes) {
|
|
128
|
+
const buffer = await readStreamBuffer(stream, maxBytes);
|
|
129
|
+
const entries = readZipEntries(buffer);
|
|
130
|
+
const dataEntry = await chooseZipDataEntry(buffer, entries);
|
|
131
|
+
const dataBytes = await readZipEntryBytes(buffer, dataEntry);
|
|
132
|
+
const dataStream = node_stream_1.Readable.from([dataBytes]);
|
|
133
|
+
const rows = [];
|
|
134
|
+
for await (const row of parseRawDatasetRows(dataStream, extensionToSourceFormat(dataEntry.name), {
|
|
135
|
+
maxLineBytes: maxBytes,
|
|
136
|
+
})) {
|
|
137
|
+
rows.push(row);
|
|
138
|
+
}
|
|
139
|
+
for (const row of await inlineZipImages(rows, dataEntry, buffer, entries)) {
|
|
140
|
+
yield row;
|
|
141
|
+
}
|
|
142
|
+
}
|
|
143
|
+
async function readStreamBuffer(stream, maxBytes) {
|
|
144
|
+
const chunks = [];
|
|
145
|
+
let total = 0;
|
|
146
|
+
for await (const chunk of stream) {
|
|
147
|
+
const buffer = Buffer.isBuffer(chunk) ? chunk : Buffer.from(chunk);
|
|
148
|
+
total += buffer.byteLength;
|
|
149
|
+
if (total > maxBytes)
|
|
150
|
+
throw new Error('dataset_import_file_too_large_for_buffered_parser');
|
|
151
|
+
chunks.push(buffer);
|
|
152
|
+
}
|
|
153
|
+
return Buffer.concat(chunks, total);
|
|
154
|
+
}
|
|
155
|
+
function readUint16(buffer, offset) {
|
|
156
|
+
return buffer.readUInt16LE(offset);
|
|
157
|
+
}
|
|
158
|
+
function readUint32(buffer, offset) {
|
|
159
|
+
return buffer.readUInt32LE(offset);
|
|
160
|
+
}
|
|
161
|
+
function findEndOfCentralDirectory(buffer) {
|
|
162
|
+
const minOffset = Math.max(0, buffer.byteLength - 65_557);
|
|
163
|
+
for (let offset = buffer.byteLength - 22; offset >= minOffset; offset -= 1) {
|
|
164
|
+
if (readUint32(buffer, offset) === 0x06054b50)
|
|
165
|
+
return offset;
|
|
166
|
+
}
|
|
167
|
+
return -1;
|
|
168
|
+
}
|
|
169
|
+
function readZipEntries(buffer) {
|
|
170
|
+
const eocdOffset = findEndOfCentralDirectory(buffer);
|
|
171
|
+
if (eocdOffset < 0)
|
|
172
|
+
throw new Error('zip_invalid');
|
|
173
|
+
const entryCount = readUint16(buffer, eocdOffset + 10);
|
|
174
|
+
const centralDirectoryOffset = readUint32(buffer, eocdOffset + 16);
|
|
175
|
+
const entries = [];
|
|
176
|
+
let offset = centralDirectoryOffset;
|
|
177
|
+
for (let index = 0; index < entryCount; index += 1) {
|
|
178
|
+
if (readUint32(buffer, offset) !== 0x02014b50)
|
|
179
|
+
throw new Error('zip_invalid');
|
|
180
|
+
const compressionMethod = readUint16(buffer, offset + 10);
|
|
181
|
+
const compressedSize = readUint32(buffer, offset + 20);
|
|
182
|
+
const uncompressedSize = readUint32(buffer, offset + 24);
|
|
183
|
+
const fileNameLength = readUint16(buffer, offset + 28);
|
|
184
|
+
const extraLength = readUint16(buffer, offset + 30);
|
|
185
|
+
const commentLength = readUint16(buffer, offset + 32);
|
|
186
|
+
const localHeaderOffset = readUint32(buffer, offset + 42);
|
|
187
|
+
const path = normalizePath(buffer.subarray(offset + 46, offset + 46 + fileNameLength).toString('utf8'));
|
|
188
|
+
if (path && !path.endsWith('/')) {
|
|
189
|
+
if (readUint32(buffer, localHeaderOffset) !== 0x04034b50)
|
|
190
|
+
throw new Error('zip_invalid');
|
|
191
|
+
const localNameLength = readUint16(buffer, localHeaderOffset + 26);
|
|
192
|
+
const localExtraLength = readUint16(buffer, localHeaderOffset + 28);
|
|
193
|
+
entries.push({
|
|
194
|
+
path,
|
|
195
|
+
name: path.split('/').at(-1) ?? path,
|
|
196
|
+
compressionMethod,
|
|
197
|
+
compressedSize,
|
|
198
|
+
uncompressedSize,
|
|
199
|
+
dataStart: localHeaderOffset + 30 + localNameLength + localExtraLength,
|
|
200
|
+
});
|
|
201
|
+
}
|
|
202
|
+
offset += 46 + fileNameLength + extraLength + commentLength;
|
|
203
|
+
}
|
|
204
|
+
return entries;
|
|
205
|
+
}
|
|
206
|
+
async function readZipEntryBytes(buffer, entry) {
|
|
207
|
+
const compressed = buffer.subarray(entry.dataStart, entry.dataStart + entry.compressedSize);
|
|
208
|
+
if (entry.compressionMethod === 0)
|
|
209
|
+
return compressed;
|
|
210
|
+
if (entry.compressionMethod === 8)
|
|
211
|
+
return inflateRawAsync(compressed);
|
|
212
|
+
throw new Error('zip_compression_unsupported');
|
|
213
|
+
}
|
|
214
|
+
async function chooseZipDataEntry(buffer, entries) {
|
|
215
|
+
const entryByPath = new Map(entries.map((entry) => [entry.path, entry]));
|
|
216
|
+
const manifestEntries = entries
|
|
217
|
+
.filter((entry) => entry.name.toLowerCase() === 'manifest.json')
|
|
218
|
+
.sort((a, b) => compareDatasetPaths(a.path, b.path));
|
|
219
|
+
for (const manifestEntry of manifestEntries) {
|
|
220
|
+
try {
|
|
221
|
+
const manifestText = (await readZipEntryBytes(buffer, manifestEntry)).toString('utf8');
|
|
222
|
+
const manifest = JSON.parse(manifestText);
|
|
223
|
+
if (typeof manifest.file !== 'string')
|
|
224
|
+
continue;
|
|
225
|
+
const targetPath = joinPath(getDirectory(manifestEntry.path), manifest.file);
|
|
226
|
+
const matchedEntry = entryByPath.get(targetPath);
|
|
227
|
+
if (matchedEntry && isStructuredDatasetExtension(getExtension(matchedEntry.name)))
|
|
228
|
+
return matchedEntry;
|
|
229
|
+
}
|
|
230
|
+
catch {
|
|
231
|
+
// Ignore invalid metadata files; data file candidates remain authoritative.
|
|
232
|
+
}
|
|
233
|
+
}
|
|
234
|
+
const datasetEntries = entries
|
|
235
|
+
.filter((entry) => isStructuredDatasetExtension(getExtension(entry.name)) && entry.name.toLowerCase() !== 'manifest.json')
|
|
236
|
+
.sort((a, b) => compareDatasetPaths(a.path, b.path));
|
|
237
|
+
const first = datasetEntries[0];
|
|
238
|
+
if (!first)
|
|
239
|
+
throw new Error('unsupported_file_type');
|
|
240
|
+
return first;
|
|
241
|
+
}
|
|
242
|
+
async function inlineZipImages(samples, dataEntry, buffer, entries) {
|
|
243
|
+
const imageEntries = new Map(entries.filter((entry) => extensionToImageMimeType(entry.path)).map((entry) => [entry.path, entry]));
|
|
244
|
+
if (imageEntries.size === 0)
|
|
245
|
+
return samples;
|
|
246
|
+
const dataDirectory = getDirectory(dataEntry.path);
|
|
247
|
+
const dataUrlCache = new Map();
|
|
248
|
+
const toDataUrl = async (value) => {
|
|
249
|
+
if (Array.isArray(value))
|
|
250
|
+
return Promise.all(value.map((item) => toDataUrl(item)));
|
|
251
|
+
if (typeof value !== 'string')
|
|
252
|
+
return value;
|
|
253
|
+
const imagePath = resolveZipImagePath(value, dataDirectory, imageEntries);
|
|
254
|
+
if (!imagePath)
|
|
255
|
+
return value;
|
|
256
|
+
const cached = dataUrlCache.get(imagePath);
|
|
257
|
+
if (cached)
|
|
258
|
+
return cached;
|
|
259
|
+
const entry = imageEntries.get(imagePath);
|
|
260
|
+
const mimeType = entry ? extensionToImageMimeType(entry.path) : null;
|
|
261
|
+
if (!entry || !mimeType)
|
|
262
|
+
return value;
|
|
263
|
+
const bytes = await readZipEntryBytes(buffer, entry);
|
|
264
|
+
if (entry.uncompressedSize > 0 && bytes.byteLength !== entry.uncompressedSize)
|
|
265
|
+
throw new Error('zip_invalid');
|
|
266
|
+
const dataUrl = `data:${mimeType};base64,${bytes.toString('base64')}`;
|
|
267
|
+
dataUrlCache.set(imagePath, dataUrl);
|
|
268
|
+
return dataUrl;
|
|
269
|
+
};
|
|
270
|
+
return Promise.all(samples.map(async (sample) => Object.fromEntries(await Promise.all(Object.entries(sample).map(async ([key, value]) => [key, await toDataUrl(value)])))));
|
|
271
|
+
}
|
|
272
|
+
function extensionToSourceFormat(path) {
|
|
273
|
+
const extension = getExtension(path);
|
|
274
|
+
if (extension === '.csv')
|
|
275
|
+
return 'csv';
|
|
276
|
+
if (extension === '.tsv')
|
|
277
|
+
return 'tsv';
|
|
278
|
+
if (extension === '.jsonl')
|
|
279
|
+
return 'jsonl';
|
|
280
|
+
if (extension === '.json')
|
|
281
|
+
return 'json';
|
|
282
|
+
throw new Error('unsupported_file_type');
|
|
283
|
+
}
|
|
284
|
+
function isStructuredDatasetExtension(extension) {
|
|
285
|
+
return extension === '.csv' || extension === '.tsv' || extension === '.jsonl' || extension === '.json';
|
|
286
|
+
}
|
|
287
|
+
function extensionToImageMimeType(path) {
|
|
288
|
+
const extension = getExtension(path);
|
|
289
|
+
if (extension === '.jpg' || extension === '.jpeg')
|
|
290
|
+
return 'image/jpeg';
|
|
291
|
+
if (extension === '.png')
|
|
292
|
+
return 'image/png';
|
|
293
|
+
if (extension === '.webp')
|
|
294
|
+
return 'image/webp';
|
|
295
|
+
if (extension === '.gif')
|
|
296
|
+
return 'image/gif';
|
|
297
|
+
if (extension === '.bmp')
|
|
298
|
+
return 'image/bmp';
|
|
299
|
+
if (extension === '.avif')
|
|
300
|
+
return 'image/avif';
|
|
301
|
+
if (extension === '.svg')
|
|
302
|
+
return 'image/svg+xml';
|
|
303
|
+
return null;
|
|
304
|
+
}
|
|
305
|
+
function resolveZipImagePath(value, dataDirectory, imageEntries) {
|
|
306
|
+
const trimmed = value.trim();
|
|
307
|
+
if (!trimmed || /^https?:\/\//iu.test(trimmed) || /^data:image\//iu.test(trimmed))
|
|
308
|
+
return null;
|
|
309
|
+
const candidates = [joinPath(dataDirectory, trimmed), normalizePath(trimmed.replace(/^\/+/u, ''))];
|
|
310
|
+
return candidates.find((candidate) => imageEntries.has(candidate)) ?? null;
|
|
311
|
+
}
|
|
312
|
+
function getExtension(fileName) {
|
|
313
|
+
const dotIndex = fileName.lastIndexOf('.');
|
|
314
|
+
return dotIndex >= 0 ? fileName.slice(dotIndex).toLowerCase() : '';
|
|
315
|
+
}
|
|
316
|
+
function normalizePath(path) {
|
|
317
|
+
const parts = [];
|
|
318
|
+
for (const part of path.split('/')) {
|
|
319
|
+
if (!part || part === '.')
|
|
320
|
+
continue;
|
|
321
|
+
if (part === '..') {
|
|
322
|
+
parts.pop();
|
|
323
|
+
continue;
|
|
324
|
+
}
|
|
325
|
+
parts.push(part);
|
|
326
|
+
}
|
|
327
|
+
return parts.join('/');
|
|
328
|
+
}
|
|
329
|
+
function getDirectory(path) {
|
|
330
|
+
const normalizedPath = normalizePath(path);
|
|
331
|
+
const lastSlash = normalizedPath.lastIndexOf('/');
|
|
332
|
+
return lastSlash >= 0 ? normalizedPath.slice(0, lastSlash) : '';
|
|
333
|
+
}
|
|
334
|
+
function joinPath(directory, fileName) {
|
|
335
|
+
return normalizePath(directory ? `${directory}/${fileName}` : fileName);
|
|
336
|
+
}
|
|
337
|
+
function compareDatasetPaths(left, right) {
|
|
338
|
+
const leftDepth = normalizePath(left).split('/').length;
|
|
339
|
+
const rightDepth = normalizePath(right).split('/').length;
|
|
340
|
+
if (leftDepth !== rightDepth)
|
|
341
|
+
return leftDepth - rightDepth;
|
|
342
|
+
return left.localeCompare(right);
|
|
343
|
+
}
|
|
104
344
|
//# sourceMappingURL=dataset-import-raw-parser.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"dataset-import-raw-parser.js","sourceRoot":"","sources":["../../../../src/server/modules/dataset/dataset-import-raw-parser.ts"],"names":[],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"dataset-import-raw-parser.js","sourceRoot":"","sources":["../../../../src/server/modules/dataset/dataset-import-raw-parser.ts"],"names":[],"mappings":"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"}
|