@tiangong-lca/cli 0.0.17 → 0.0.19

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.
@@ -1 +1 @@
1
- {"version":3,"file":"dataset-save-draft-run.js","sourceRoot":"","sources":["../../../src/lib/dataset-save-draft-run.ts"],"names":[],"mappings":"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","sourcesContent":["import path from 'node:path';\nimport * as tidasSdk from '@tiangong-lca/tidas-sdk';\nimport { writeJsonArtifact, writeJsonLinesArtifact } from './artifacts.js';\nimport { collectImportContentIssues } from './dataset-validate.js';\nimport {\n createDatasetRecord,\n saveDraftDatasetRecord,\n type DatasetCommandTable,\n} from './dataset-command.js';\nimport { readDatasetRowsInput } from './dataset-local.js';\nimport { CliError } from './errors.js';\nimport type { FetchLike } from './http.js';\nimport {\n normalizeIssuePath,\n type SafeParseSchema,\n type SdkValidationFactory,\n validateSchemaWithDeepFallback,\n} from './tidas-sdk-validation.js';\nimport {\n collectProcessPlaceholderIssues,\n collectProcessRequiredFieldIssues,\n} from './process-required-fields.js';\nimport { buildDatasetCommandTransport } from './dataset-command.js';\nimport {\n createSupabaseDataClient,\n requireSupabaseRestRuntime,\n runSupabaseArrayQuery,\n type SupabaseDataRuntime,\n} from './supabase-client.js';\nimport { createSupabaseDataRuntime } from './supabase-session.js';\nimport {\n collectRemoteReferences,\n lookupRemoteDataset,\n type RemoteDatasetLookup,\n type RemoteDatasetReference,\n type RemoteDatasetTable,\n} from './dataset-remote-verify.js';\n\ntype JsonObject = Record<string, unknown>;\n\nconst DEFAULT_TIMEOUT_MS = 10_000;\n\nexport type DatasetSaveDraftType =\n | 'auto'\n | 'contact'\n | 'source'\n | 'unitgroup'\n | 'flowproperty'\n | 'flow'\n | 'process';\n\ntype ConcreteDatasetSaveDraftType = Exclude<DatasetSaveDraftType, 'auto'>;\n\ntype DatasetTypeConfig = {\n table: DatasetCommandTable;\n rootKey: string;\n informationKey: string;\n schemaName: keyof typeof tidasSdk;\n factoryName: keyof typeof tidasSdk;\n};\n\ntype DatasetSaveDraftValidationIssue = {\n path: string;\n message: string;\n code: string;\n};\n\ntype DatasetSaveDraftValidationResult =\n | {\n ok: true;\n validator: string;\n issue_count: 0;\n issues: [];\n }\n | {\n ok: false;\n validator: string;\n issue_count: number;\n issues: DatasetSaveDraftValidationIssue[];\n };\n\nfunction normalizeValidationIssue(issue: {\n path?: Array<string | number>;\n message?: string;\n code?: string;\n}): DatasetSaveDraftValidationIssue {\n return {\n path: normalizeIssuePath(issue.path ?? []),\n message: issue.message ?? 'Validation failed',\n code: issue.code ?? 'custom',\n };\n}\n\nexport type DatasetSaveDraftRowReport = {\n index: number;\n id: string | null;\n version: string | null;\n type: ConcreteDatasetSaveDraftType | null;\n table: DatasetCommandTable | null;\n status: 'prepared' | 'executed' | 'failed';\n operation:\n | 'would_sync'\n | 'insert'\n | 'save_draft'\n | 'skipped_invalid'\n | 'reference_only_type'\n | 'type_unknown'\n | 'identity_missing'\n | 'elementary_flow_insert_blocked'\n | 'remote_reference_unresolved'\n | null;\n validation: DatasetSaveDraftValidationResult | null;\n visible_row?: VisibleDatasetRow | null;\n error?: { message: string; details?: unknown };\n};\n\nexport type DatasetSaveDraftReport = {\n schema_version: 1;\n generated_at_utc: string;\n input_path: string;\n requested_type: DatasetSaveDraftType;\n out_dir: string;\n commit: boolean;\n mode: 'dry_run' | 'commit';\n status: 'completed' | 'completed_with_failures';\n counts: {\n selected: number;\n prepared: number;\n executed: number;\n failed: number;\n by_table: Partial<Record<DatasetCommandTable, number>>;\n operations: Record<string, number>;\n };\n files: {\n selected_rows: string;\n progress_jsonl: string;\n failures_jsonl: string;\n summary_json: string;\n };\n rows: DatasetSaveDraftRowReport[];\n};\n\nexport type RunDatasetSaveDraftOptions = {\n inputPath: string;\n type?: string | null;\n outDir?: string | null;\n commit?: boolean | null;\n rawInput?: unknown;\n env?: NodeJS.ProcessEnv;\n fetchImpl?: FetchLike;\n timeoutMs?: number;\n now?: Date;\n};\n\ntype PreparedDatasetRow = {\n index: number;\n row: JsonObject;\n payload: JsonObject;\n type: ConcreteDatasetSaveDraftType | null;\n config: DatasetTypeConfig | null;\n id: string | null;\n version: string | null;\n validation: DatasetSaveDraftValidationResult | null;\n};\n\ntype VisibleDatasetRow = {\n id: string;\n version: string;\n user_id: string | null;\n state_code: number | null;\n};\n\ntype SupabaseDataClient = ReturnType<typeof createSupabaseDataClient>['client'];\n\ntype MissingFlowRemoteReference = {\n table: RemoteDatasetTable | null;\n id: string | null;\n version: string | null;\n path: string;\n short_description: string | null;\n status:\n | 'missing_dataset'\n | 'missing_version'\n | 'unsupported_type'\n | 'version_missing'\n | 'version_outdated';\n latest_version: string | null;\n};\n\nconst DATASET_CONFIGS: Record<ConcreteDatasetSaveDraftType, DatasetTypeConfig> = {\n contact: {\n table: 'contacts',\n rootKey: 'contactDataSet',\n informationKey: 'contactInformation',\n schemaName: 'ContactSchema',\n factoryName: 'createContact',\n },\n source: {\n table: 'sources',\n rootKey: 'sourceDataSet',\n informationKey: 'sourceInformation',\n schemaName: 'SourceSchema',\n factoryName: 'createSource',\n },\n unitgroup: {\n table: 'unitgroups',\n rootKey: 'unitGroupDataSet',\n informationKey: 'unitGroupInformation',\n schemaName: 'UnitGroupSchema',\n factoryName: 'createUnitGroup',\n },\n flowproperty: {\n table: 'flowproperties',\n rootKey: 'flowPropertyDataSet',\n informationKey: 'flowPropertiesInformation',\n schemaName: 'FlowPropertySchema',\n factoryName: 'createFlowProperty',\n },\n flow: {\n table: 'flows',\n rootKey: 'flowDataSet',\n informationKey: 'flowInformation',\n schemaName: 'FlowSchema',\n factoryName: 'createFlow',\n },\n process: {\n table: 'processes',\n rootKey: 'processDataSet',\n informationKey: 'processInformation',\n schemaName: 'ProcessSchema',\n factoryName: 'createProcess',\n },\n};\n\nconst REFERENCE_ONLY_SAVE_DRAFT_TYPES = new Set<ConcreteDatasetSaveDraftType>([\n 'unitgroup',\n 'flowproperty',\n]);\n\nfunction isRecord(value: unknown): value is JsonObject {\n return typeof value === 'object' && value !== null && !Array.isArray(value);\n}\n\nfunction trimToken(value: unknown): string | null {\n if (typeof value !== 'string') {\n return null;\n }\n const trimmed = value.trim();\n return trimmed || null;\n}\n\nfunction serializeError(error: unknown): { message: string; details?: unknown } {\n if (error instanceof CliError) {\n return { message: error.message, details: error.details };\n }\n if (error instanceof Error) {\n return { message: error.message };\n }\n return { message: String(error) };\n}\n\nfunction normalizeType(value: string | null | undefined): DatasetSaveDraftType {\n const normalized = value?.trim().toLowerCase();\n if (!normalized || normalized === 'auto') {\n return 'auto';\n }\n if (normalized === 'contact' || normalized === 'contacts') {\n return 'contact';\n }\n if (normalized === 'source' || normalized === 'sources') {\n return 'source';\n }\n if (\n normalized === 'unitgroup' ||\n normalized === 'unitgroups' ||\n normalized === 'unit-group' ||\n normalized === 'unit-groups'\n ) {\n throw new CliError(\n 'Unit groups are reference-only support data for dataset save-draft. Select an existing database row instead of creating a custom My Data unit group.',\n {\n code: 'DATASET_SAVE_DRAFT_REFERENCE_ONLY_TYPE',\n exitCode: 2,\n details: { type: normalized },\n },\n );\n }\n if (\n normalized === 'flowproperty' ||\n normalized === 'flowproperties' ||\n normalized === 'flow-property' ||\n normalized === 'flow-properties'\n ) {\n throw new CliError(\n 'Flow properties are reference-only support data for dataset save-draft. Select an existing database row instead of creating a custom My Data flow property.',\n {\n code: 'DATASET_SAVE_DRAFT_REFERENCE_ONLY_TYPE',\n exitCode: 2,\n details: { type: normalized },\n },\n );\n }\n if (normalized === 'flow' || normalized === 'flows') {\n return 'flow';\n }\n if (normalized === 'process' || normalized === 'processes') {\n return 'process';\n }\n\n throw new CliError('Expected --type to be auto, contact, source, flow, or process.', {\n code: 'DATASET_SAVE_DRAFT_TYPE_INVALID',\n exitCode: 2,\n details: value,\n });\n}\n\nfunction unwrapPayload(row: JsonObject): JsonObject {\n for (const key of ['json_ordered', 'jsonOrdered', 'payload', 'json'] as const) {\n if (isRecord(row[key])) {\n return row[key];\n }\n }\n return row;\n}\n\nfunction detectType(payload: JsonObject): ConcreteDatasetSaveDraftType | null {\n for (const [type, config] of Object.entries(DATASET_CONFIGS)) {\n if (isRecord(payload[config.rootKey])) {\n return type as ConcreteDatasetSaveDraftType;\n }\n }\n return null;\n}\n\nfunction schemaForConfig(config: DatasetTypeConfig): {\n schema: SafeParseSchema;\n createEntity: SdkValidationFactory | null;\n} {\n const schema = (tidasSdk as Record<string, unknown>)[config.schemaName];\n if (\n !schema ||\n typeof schema !== 'object' ||\n typeof (schema as SafeParseSchema).safeParse !== 'function'\n ) {\n throw new CliError(`${String(config.schemaName)} is unavailable in @tiangong-lca/tidas-sdk.`, {\n code: 'DATASET_SAVE_DRAFT_SCHEMA_UNAVAILABLE',\n exitCode: 2,\n details: { table: config.table },\n });\n }\n const createEntity = (tidasSdk as Record<string, unknown>)[config.factoryName];\n return {\n schema: schema as SafeParseSchema,\n createEntity:\n typeof createEntity === 'function' ? (createEntity as SdkValidationFactory) : null,\n };\n}\n\nfunction validatePayload(\n payload: JsonObject,\n type: ConcreteDatasetSaveDraftType,\n config: DatasetTypeConfig,\n): DatasetSaveDraftValidationResult {\n const { schema, createEntity } = schemaForConfig(config);\n const outcome = validateSchemaWithDeepFallback(schema, payload, createEntity);\n const processIssues =\n type === 'process'\n ? [...collectProcessRequiredFieldIssues(payload), ...collectProcessPlaceholderIssues(payload)]\n : [];\n const importIssues = type === 'process' ? [] : collectImportContentIssues(payload);\n const issues: DatasetSaveDraftValidationIssue[] = [\n ...outcome.issues.map(normalizeValidationIssue),\n ...processIssues,\n ...importIssues,\n ];\n\n if (outcome.success && issues.length === 0) {\n return {\n ok: true,\n validator: `@tiangong-lca/tidas-sdk/${String(config.schemaName)}+tiangong/import-content`,\n issue_count: 0,\n issues: [],\n };\n }\n\n return {\n ok: false,\n validator: `@tiangong-lca/tidas-sdk/${String(config.schemaName)}+tiangong/import-content`,\n issue_count: issues.length,\n issues,\n };\n}\n\nfunction extractIdentity(\n payload: JsonObject,\n row: JsonObject,\n config: DatasetTypeConfig,\n): {\n id: string | null;\n version: string | null;\n} {\n const rootCandidate = payload[config.rootKey];\n const root: JsonObject = isRecord(rootCandidate) ? rootCandidate : payload;\n const informationCandidate = root[config.informationKey];\n const information: JsonObject = isRecord(informationCandidate) ? informationCandidate : {};\n const dataSetInformationCandidate = information.dataSetInformation;\n const dataSetInformation = isRecord(dataSetInformationCandidate)\n ? dataSetInformationCandidate\n : {};\n const administrativeInformation = isRecord(root.administrativeInformation)\n ? root.administrativeInformation\n : {};\n const publicationAndOwnership = isRecord(administrativeInformation.publicationAndOwnership)\n ? administrativeInformation.publicationAndOwnership\n : {};\n\n return {\n id: trimToken(row.id) ?? trimToken(dataSetInformation['common:UUID']),\n version:\n trimToken(row.version) ?? trimToken(publicationAndOwnership['common:dataSetVersion']) ?? null,\n };\n}\n\nfunction flowType(payload: JsonObject): string | null {\n const rootCandidate = payload.flowDataSet;\n const root = isRecord(rootCandidate) ? rootCandidate : payload;\n const modellingCandidate = root.modellingAndValidation;\n const modelling = isRecord(modellingCandidate) ? modellingCandidate : {};\n const lciMethodCandidate = modelling.LCIMethod;\n const lciMethod = isRecord(lciMethodCandidate) ? lciMethodCandidate : {};\n return trimToken(lciMethod.typeOfDataSet);\n}\n\nfunction isElementaryFlowPayload(payload: JsonObject): boolean {\n return flowType(payload)?.trim().toLowerCase() === 'elementary flow';\n}\n\nfunction compareVersions(left: string | null, right: string | null): number {\n if (!left && !right) {\n return 0;\n }\n if (!left) {\n return -1;\n }\n if (!right) {\n return 1;\n }\n const leftParts = left.split(/[._-]/u);\n const rightParts = right.split(/[._-]/u);\n const length = Math.max(leftParts.length, rightParts.length);\n for (let index = 0; index < length; index += 1) {\n const leftPart = leftParts[index] ?? '0';\n const rightPart = rightParts[index] ?? '0';\n const leftNumber = Number(leftPart);\n const rightNumber = Number(rightPart);\n if (Number.isFinite(leftNumber) && Number.isFinite(rightNumber)) {\n if (leftNumber !== rightNumber) {\n return leftNumber > rightNumber ? 1 : -1;\n }\n } else {\n const compared = leftPart.localeCompare(rightPart);\n if (compared !== 0) {\n return compared > 0 ? 1 : -1;\n }\n }\n }\n return 0;\n}\n\nfunction supportLookupKey(reference: {\n table: RemoteDatasetTable;\n id: string;\n version: string | null;\n}): string {\n return `${reference.table}:${reference.id}:${reference.version ?? ''}`;\n}\n\nfunction isLookupableRemoteReference(\n reference: RemoteDatasetReference,\n): reference is RemoteDatasetReference & { table: RemoteDatasetTable; id: string } {\n return Boolean(reference.table && reference.id);\n}\n\nfunction uniqueFlowRemoteReferences(payload: JsonObject): RemoteDatasetReference[] {\n const references = new Map<string, RemoteDatasetReference>();\n for (const reference of collectRemoteReferences([payload])) {\n if (reference.role !== 'reference') {\n continue;\n }\n if (reference.table && reference.id) {\n references.set(\n supportLookupKey({\n table: reference.table,\n id: reference.id,\n version: reference.version,\n }),\n reference,\n );\n } else {\n references.set(remoteReferenceFallbackKey(reference), reference);\n }\n }\n return [...references.values()];\n}\n\nfunction remoteReferenceFallbackKey(\n reference: Pick<RemoteDatasetReference, 'path' | 'type'>,\n): string {\n return `${reference.path}:${reference.type ?? 'unknown'}`;\n}\n\nasync function lookupCachedReferenceOnlySupport(options: {\n runtime: SupabaseDataRuntime;\n fetchImpl: FetchLike;\n timeoutMs: number;\n cache: Map<string, Promise<RemoteDatasetLookup>>;\n reference: RemoteDatasetReference & { table: RemoteDatasetTable; id: string };\n}): Promise<RemoteDatasetLookup> {\n const key = supportLookupKey(options.reference);\n if (!options.cache.has(key)) {\n options.cache.set(\n key,\n lookupRemoteDataset({\n runtime: options.runtime,\n fetchImpl: options.fetchImpl,\n timeoutMs: options.timeoutMs,\n request: {\n table: options.reference.table,\n id: options.reference.id,\n version: options.reference.version,\n },\n }),\n );\n }\n return options.cache.get(key) as Promise<RemoteDatasetLookup>;\n}\n\nasync function missingFlowRemoteReferences(options: {\n runtime: SupabaseDataRuntime;\n fetchImpl: FetchLike;\n timeoutMs: number;\n cache: Map<string, Promise<RemoteDatasetLookup>>;\n payload: JsonObject;\n}): Promise<MissingFlowRemoteReference[]> {\n const missing: MissingFlowRemoteReference[] = [];\n for (const reference of uniqueFlowRemoteReferences(options.payload)) {\n if (!isLookupableRemoteReference(reference)) {\n missing.push({\n table: reference.table,\n id: reference.id,\n version: reference.version,\n path: reference.path,\n short_description: reference.short_description,\n status: 'unsupported_type',\n latest_version: null,\n });\n continue;\n }\n if (!reference.version) {\n missing.push({\n table: reference.table,\n id: reference.id,\n version: null,\n path: reference.path,\n short_description: reference.short_description,\n status: 'version_missing',\n latest_version: null,\n });\n continue;\n }\n const lookup = await lookupCachedReferenceOnlySupport({ ...options, reference });\n if (!lookup.latest) {\n missing.push({\n table: reference.table,\n id: reference.id,\n version: reference.version,\n path: reference.path,\n short_description: reference.short_description,\n status: 'missing_dataset',\n latest_version: null,\n });\n } else if (!lookup.exact) {\n missing.push({\n table: reference.table,\n id: reference.id,\n version: reference.version,\n path: reference.path,\n short_description: reference.short_description,\n status: 'missing_version',\n latest_version: lookup.latest.version,\n });\n } else if (compareVersions(lookup.latest.version, reference.version) > 0) {\n missing.push({\n table: reference.table,\n id: reference.id,\n version: reference.version,\n path: reference.path,\n short_description: reference.short_description,\n status: 'version_outdated',\n latest_version: lookup.latest.version,\n });\n }\n }\n return missing;\n}\n\nfunction prepareRows(\n inputPath: string,\n rawInput: unknown | undefined,\n requestedType: DatasetSaveDraftType,\n): PreparedDatasetRow[] {\n const rows = readDatasetRowsInput(inputPath, rawInput);\n return rows.map((row, index) => {\n const payload = unwrapPayload(row);\n const type = requestedType === 'auto' ? detectType(payload) : requestedType;\n const config = type ? DATASET_CONFIGS[type] : null;\n const identity = config ? extractIdentity(payload, row, config) : { id: null, version: null };\n return {\n index,\n row,\n payload,\n type,\n config,\n id: identity.id,\n version: identity.version,\n validation: config && type ? validatePayload(payload, type, config) : null,\n };\n });\n}\n\nfunction buildFiles(outDir: string): DatasetSaveDraftReport['files'] {\n const outputDir = path.join(outDir, 'outputs', 'dataset-save-draft');\n return {\n selected_rows: path.join(outputDir, 'selected-rows.jsonl'),\n progress_jsonl: path.join(outputDir, 'progress.jsonl'),\n failures_jsonl: path.join(outputDir, 'failures.jsonl'),\n summary_json: path.join(outputDir, 'summary.json'),\n };\n}\n\nfunction defaultOutDir(inputPath: string, commit: boolean, now: Date): string {\n const mode = commit ? 'commit' : 'dry-run';\n const timestamp = now.toISOString().replace(/[:.]/gu, '').replace(/Z$/u, 'Z');\n return path.join(\n path.dirname(inputPath),\n 'artifacts',\n 'dataset-save-draft',\n `${mode}-${timestamp}`,\n );\n}\n\nfunction operationCount(rows: DatasetSaveDraftRowReport[]): Record<string, number> {\n const counts: Record<string, number> = {};\n for (const row of rows) {\n const key = row.operation ?? 'none';\n counts[key] = (counts[key] ?? 0) + 1;\n }\n return counts;\n}\n\nfunction byTable(rows: PreparedDatasetRow[]): Partial<Record<DatasetCommandTable, number>> {\n const counts: Partial<Record<DatasetCommandTable, number>> = {};\n for (const row of rows) {\n if (row.config) {\n counts[row.config.table] = (counts[row.config.table] ?? 0) + 1;\n }\n }\n return counts;\n}\n\nfunction selectedRow(row: PreparedDatasetRow): JsonObject {\n return {\n index: row.index,\n type: row.type,\n table: row.config?.table ?? null,\n id: row.id,\n version: row.version,\n validation: row.validation,\n payload: row.payload,\n };\n}\n\nfunction buildPreparedFailure(row: PreparedDatasetRow): DatasetSaveDraftRowReport | null {\n if (!row.type || !row.config) {\n return {\n index: row.index,\n id: row.id,\n version: row.version,\n type: row.type,\n table: null,\n status: 'failed',\n operation: 'type_unknown',\n validation: null,\n error: {\n message: 'Could not detect dataset type. Use --type or provide a supported TIDAS wrapper.',\n },\n };\n }\n\n if (REFERENCE_ONLY_SAVE_DRAFT_TYPES.has(row.type)) {\n return {\n index: row.index,\n id: row.id,\n version: row.version,\n type: row.type,\n table: row.config.table,\n status: 'failed',\n operation: 'reference_only_type',\n validation: row.validation,\n error: {\n message:\n 'Unit Groups and Flow Properties are reference-only support data. Rewrite references to existing database rows instead of writing these rows through dataset save-draft.',\n },\n };\n }\n\n if (!row.id || !row.version) {\n return {\n index: row.index,\n id: row.id,\n version: row.version,\n type: row.type,\n table: row.config.table,\n status: 'failed',\n operation: 'identity_missing',\n validation: row.validation,\n error: {\n message:\n 'Dataset row is missing common:UUID or common:dataSetVersion required for save-draft.',\n },\n };\n }\n\n if (!row.validation?.ok) {\n return {\n index: row.index,\n id: row.id,\n version: row.version,\n type: row.type,\n table: row.config.table,\n status: 'failed',\n operation: 'skipped_invalid',\n validation: row.validation,\n error: {\n message: `Local dataset validation failed with ${row.validation?.issue_count ?? 0} issue(s).`,\n },\n };\n }\n\n return null;\n}\n\nfunction buildVisibleRowsUrl(\n restBaseUrl: string,\n table: DatasetCommandTable,\n id: string,\n version: string,\n): string {\n const url = new URL(`${restBaseUrl.replace(/\\/+$/u, '')}/${table}`);\n url.searchParams.set('select', 'id,version,user_id,state_code');\n url.searchParams.set('id', `eq.${id}`);\n url.searchParams.set('version', `eq.${version}`);\n return url.toString();\n}\n\nfunction parseVisibleRows(payload: unknown, url: string): VisibleDatasetRow[] {\n if (!Array.isArray(payload)) {\n throw new CliError(`Supabase REST response was not a JSON array for ${url}`, {\n code: 'SUPABASE_REST_RESPONSE_INVALID',\n exitCode: 1,\n details: payload,\n });\n }\n\n return payload.map((item, index) => {\n if (!isRecord(item)) {\n throw new CliError(`Supabase REST row ${index} was not a JSON object for ${url}`, {\n code: 'SUPABASE_REST_RESPONSE_INVALID',\n exitCode: 1,\n details: item,\n });\n }\n return {\n id: trimToken(item.id) ?? '',\n version: trimToken(item.version) ?? '',\n user_id: trimToken(item.user_id),\n state_code: typeof item.state_code === 'number' ? item.state_code : null,\n };\n });\n}\n\nasync function exactVisibleRows(options: {\n client: SupabaseDataClient;\n restBaseUrl: string;\n table: DatasetCommandTable;\n id: string;\n version: string;\n}): Promise<VisibleDatasetRow[]> {\n const url = buildVisibleRowsUrl(options.restBaseUrl, options.table, options.id, options.version);\n const payload = await runSupabaseArrayQuery(\n options.client\n .from(options.table)\n .select('id,version,user_id,state_code')\n .eq('id', options.id)\n .eq('version', options.version),\n url,\n );\n return parseVisibleRows(payload, url);\n}\n\nexport async function runDatasetSaveDraft(\n options: RunDatasetSaveDraftOptions,\n): Promise<DatasetSaveDraftReport> {\n const now = options.now ?? new Date();\n const inputPath = path.resolve(options.inputPath);\n const commit = options.commit === true;\n const requestedType = normalizeType(options.type);\n const outDir = path.resolve(options.outDir ?? defaultOutDir(inputPath, commit, now));\n const files = buildFiles(outDir);\n const preparedRows = prepareRows(inputPath, options.rawInput, requestedType);\n const timeoutMs = options.timeoutMs ?? DEFAULT_TIMEOUT_MS;\n\n if (commit && (!options.env || !options.fetchImpl)) {\n throw new CliError('Dataset save-draft commit requires env and fetch runtime bindings.', {\n code: 'DATASET_SAVE_DRAFT_RUNTIME_REQUIRED',\n exitCode: 2,\n });\n }\n\n writeJsonLinesArtifact(files.selected_rows, preparedRows.map(selectedRow));\n\n const runtime =\n commit && options.env && options.fetchImpl\n ? createSupabaseDataRuntime({\n runtime: requireSupabaseRestRuntime(options.env),\n fetchImpl: options.fetchImpl,\n timeoutMs,\n })\n : null;\n const commandTransport =\n runtime && options.fetchImpl\n ? await buildDatasetCommandTransport({\n runtime,\n fetchImpl: options.fetchImpl,\n timeoutMs,\n })\n : null;\n const dataClient =\n runtime && options.fetchImpl\n ? createSupabaseDataClient(runtime, options.fetchImpl, timeoutMs)\n : null;\n const referenceOnlySupportCache = new Map<string, Promise<RemoteDatasetLookup>>();\n\n const reports: DatasetSaveDraftRowReport[] = [];\n for (const row of preparedRows) {\n const preparedFailure = buildPreparedFailure(row);\n if (preparedFailure) {\n reports.push(preparedFailure);\n continue;\n }\n\n const baseReport: DatasetSaveDraftRowReport = {\n index: row.index,\n id: row.id,\n version: row.version,\n type: row.type,\n table: row.config!.table,\n status: 'prepared',\n operation: 'would_sync',\n validation: row.validation,\n };\n\n if (!commit) {\n reports.push(baseReport);\n continue;\n }\n\n try {\n const visibleRows = await exactVisibleRows({\n client: dataClient!.client,\n restBaseUrl: dataClient!.restBaseUrl,\n table: row.config!.table,\n id: row.id!,\n version: row.version!,\n });\n const visibleRow = visibleRows[0] ?? null;\n if (row.type === 'flow') {\n if (!visibleRow && isElementaryFlowPayload(row.payload)) {\n reports.push({\n ...baseReport,\n status: 'failed',\n operation: 'elementary_flow_insert_blocked',\n visible_row: null,\n error: {\n message:\n 'Elementary flows are reference-only for dataset save-draft. Resolve the flow with remote hybrid search and reference the existing database row instead of creating a My Data flow.',\n details: {\n code: 'DATASET_SAVE_DRAFT_ELEMENTARY_FLOW_INSERT_BLOCKED',\n },\n },\n });\n continue;\n }\n\n const unresolvedReferences = await missingFlowRemoteReferences({\n runtime: runtime!,\n fetchImpl: options.fetchImpl!,\n timeoutMs,\n cache: referenceOnlySupportCache,\n payload: row.payload,\n });\n if (unresolvedReferences.length > 0) {\n reports.push({\n ...baseReport,\n status: 'failed',\n operation: 'remote_reference_unresolved',\n visible_row: visibleRow,\n error: {\n message:\n 'Flow save-draft commit requires all referenced datasets to already resolve in the remote database.',\n details: {\n code: 'DATASET_SAVE_DRAFT_REMOTE_REFERENCE_UNRESOLVED',\n references: unresolvedReferences,\n },\n },\n });\n continue;\n }\n }\n if (visibleRow) {\n await saveDraftDatasetRecord({\n transport: commandTransport!,\n table: row.config!.table,\n id: row.id!,\n version: row.version!,\n payload: row.payload,\n extraData: { ruleVerification: true },\n });\n reports.push({\n ...baseReport,\n status: 'executed',\n operation: 'save_draft',\n visible_row: visibleRow,\n });\n } else {\n await createDatasetRecord({\n transport: commandTransport!,\n table: row.config!.table,\n id: row.id!,\n payload: row.payload,\n extraData: { ruleVerification: true },\n });\n reports.push({\n ...baseReport,\n status: 'executed',\n operation: 'insert',\n visible_row: null,\n });\n }\n } catch (error) {\n reports.push({\n ...baseReport,\n status: 'failed',\n error: serializeError(error),\n });\n }\n }\n\n const failures = reports.filter((row) => row.status === 'failed');\n writeJsonLinesArtifact(files.progress_jsonl, reports);\n writeJsonLinesArtifact(files.failures_jsonl, failures);\n\n const report: DatasetSaveDraftReport = {\n schema_version: 1,\n generated_at_utc: now.toISOString(),\n input_path: inputPath,\n requested_type: requestedType,\n out_dir: outDir,\n commit,\n mode: commit ? 'commit' : 'dry_run',\n status: failures.length > 0 ? 'completed_with_failures' : 'completed',\n counts: {\n selected: preparedRows.length,\n prepared: reports.filter((row) => row.status === 'prepared').length,\n executed: reports.filter((row) => row.status === 'executed').length,\n failed: failures.length,\n by_table: byTable(preparedRows),\n operations: operationCount(reports),\n },\n files,\n rows: reports,\n };\n\n writeJsonArtifact(files.summary_json, report);\n return report;\n}\n\nexport const __testInternals = {\n DATASET_CONFIGS,\n buildFiles,\n buildPreparedFailure,\n buildVisibleRowsUrl,\n byTable,\n compareVersions,\n defaultOutDir,\n detectType,\n extractIdentity,\n flowType,\n isElementaryFlowPayload,\n isLookupableRemoteReference,\n missingFlowRemoteReferences,\n normalizeValidationIssue,\n normalizeType,\n operationCount,\n parseVisibleRows,\n prepareRows,\n remoteReferenceFallbackKey,\n selectedRow,\n serializeError,\n supportLookupKey,\n unwrapPayload,\n uniqueFlowRemoteReferences,\n validatePayload,\n};\n"]}
1
+ {"version":3,"file":"dataset-save-draft-run.js","sourceRoot":"","sources":["../../../src/lib/dataset-save-draft-run.ts"],"names":[],"mappings":"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","sourcesContent":["import path from 'node:path';\nimport * as tidasSdk from '@tiangong-lca/tidas-sdk';\nimport { writeJsonArtifact, writeJsonLinesArtifact } from './artifacts.js';\nimport { collectImportContentIssues } from './dataset-validate.js';\nimport {\n createDatasetRecord,\n saveDraftDatasetRecord,\n type DatasetCommandTable,\n} from './dataset-command.js';\nimport { readDatasetRowsInput } from './dataset-local.js';\nimport { CliError } from './errors.js';\nimport type { FetchLike } from './http.js';\nimport {\n normalizeIssuePath,\n type SafeParseSchema,\n type SdkValidationFactory,\n validateSchemaWithDeepFallback,\n} from './tidas-sdk-validation.js';\nimport {\n collectProcessPlaceholderIssues,\n collectProcessRequiredFieldIssues,\n} from './process-required-fields.js';\nimport { buildDatasetCommandTransport } from './dataset-command.js';\nimport {\n createSupabaseDataClient,\n requireSupabaseRestRuntime,\n runSupabaseArrayQuery,\n type SupabaseDataRuntime,\n} from './supabase-client.js';\nimport { createSupabaseDataRuntime } from './supabase-session.js';\nimport {\n collectRemoteReferences,\n lookupRemoteDataset,\n type RemoteDatasetLookup,\n type RemoteDatasetReference,\n type RemoteDatasetTable,\n} from './dataset-remote-verify.js';\n\ntype JsonObject = Record<string, unknown>;\n\nconst DEFAULT_TIMEOUT_MS = 10_000;\n\nexport type DatasetSaveDraftType =\n | 'auto'\n | 'contact'\n | 'source'\n | 'unitgroup'\n | 'flowproperty'\n | 'flow'\n | 'process';\n\ntype ConcreteDatasetSaveDraftType = Exclude<DatasetSaveDraftType, 'auto'>;\n\ntype DatasetTypeConfig = {\n table: DatasetCommandTable;\n rootKey: string;\n informationKey: string;\n schemaName: keyof typeof tidasSdk;\n factoryName: keyof typeof tidasSdk;\n};\n\ntype DatasetSaveDraftValidationIssue = {\n path: string;\n message: string;\n code: string;\n};\n\ntype DatasetSaveDraftValidationResult =\n | {\n ok: true;\n validator: string;\n issue_count: 0;\n issues: [];\n }\n | {\n ok: false;\n validator: string;\n issue_count: number;\n issues: DatasetSaveDraftValidationIssue[];\n };\n\nfunction normalizeValidationIssue(issue: {\n path?: Array<string | number>;\n message?: string;\n code?: string;\n}): DatasetSaveDraftValidationIssue {\n return {\n path: normalizeIssuePath(issue.path ?? []),\n message: issue.message ?? 'Validation failed',\n code: issue.code ?? 'custom',\n };\n}\n\nexport type DatasetSaveDraftRowReport = {\n index: number;\n id: string | null;\n version: string | null;\n type: ConcreteDatasetSaveDraftType | null;\n table: DatasetCommandTable | null;\n status: 'prepared' | 'executed' | 'failed';\n operation:\n | 'would_sync'\n | 'insert'\n | 'save_draft'\n | 'skipped_invalid'\n | 'reference_only_type'\n | 'type_unknown'\n | 'identity_missing'\n | 'elementary_flow_insert_blocked'\n | 'remote_reference_unresolved'\n | null;\n validation: DatasetSaveDraftValidationResult | null;\n visible_row?: VisibleDatasetRow | null;\n error?: { message: string; details?: unknown };\n};\n\nexport type DatasetSaveDraftReport = {\n schema_version: 1;\n generated_at_utc: string;\n input_path: string;\n requested_type: DatasetSaveDraftType;\n out_dir: string;\n commit: boolean;\n mode: 'dry_run' | 'commit';\n status: 'completed' | 'completed_with_failures';\n counts: {\n selected: number;\n prepared: number;\n executed: number;\n failed: number;\n by_table: Partial<Record<DatasetCommandTable, number>>;\n operations: Record<string, number>;\n };\n files: {\n selected_rows: string;\n progress_jsonl: string;\n failures_jsonl: string;\n summary_json: string;\n };\n rows: DatasetSaveDraftRowReport[];\n};\n\nexport type RunDatasetSaveDraftOptions = {\n inputPath: string;\n type?: string | null;\n outDir?: string | null;\n commit?: boolean | null;\n rawInput?: unknown;\n env?: NodeJS.ProcessEnv;\n fetchImpl?: FetchLike;\n timeoutMs?: number;\n now?: Date;\n /**\n * Explicit opt-in to write account-local (My Data, state_code=0) Unit Group and\n * Flow Property support rows that are otherwise reference-only. Default false keeps\n * the CLI safe-by-default for interactive operators.\n */\n allowReferenceOnlySupport?: boolean | null;\n};\n\ntype PreparedDatasetRow = {\n index: number;\n row: JsonObject;\n payload: JsonObject;\n type: ConcreteDatasetSaveDraftType | null;\n config: DatasetTypeConfig | null;\n id: string | null;\n version: string | null;\n validation: DatasetSaveDraftValidationResult | null;\n};\n\ntype VisibleDatasetRow = {\n id: string;\n version: string;\n user_id: string | null;\n state_code: number | null;\n};\n\ntype SupabaseDataClient = ReturnType<typeof createSupabaseDataClient>['client'];\n\ntype MissingFlowRemoteReference = {\n table: RemoteDatasetTable | null;\n id: string | null;\n version: string | null;\n path: string;\n short_description: string | null;\n status:\n | 'missing_dataset'\n | 'missing_version'\n | 'unsupported_type'\n | 'version_missing'\n | 'version_outdated';\n latest_version: string | null;\n};\n\nconst DATASET_CONFIGS: Record<ConcreteDatasetSaveDraftType, DatasetTypeConfig> = {\n contact: {\n table: 'contacts',\n rootKey: 'contactDataSet',\n informationKey: 'contactInformation',\n schemaName: 'ContactSchema',\n factoryName: 'createContact',\n },\n source: {\n table: 'sources',\n rootKey: 'sourceDataSet',\n informationKey: 'sourceInformation',\n schemaName: 'SourceSchema',\n factoryName: 'createSource',\n },\n unitgroup: {\n table: 'unitgroups',\n rootKey: 'unitGroupDataSet',\n informationKey: 'unitGroupInformation',\n schemaName: 'UnitGroupSchema',\n factoryName: 'createUnitGroup',\n },\n flowproperty: {\n table: 'flowproperties',\n rootKey: 'flowPropertyDataSet',\n informationKey: 'flowPropertiesInformation',\n schemaName: 'FlowPropertySchema',\n factoryName: 'createFlowProperty',\n },\n flow: {\n table: 'flows',\n rootKey: 'flowDataSet',\n informationKey: 'flowInformation',\n schemaName: 'FlowSchema',\n factoryName: 'createFlow',\n },\n process: {\n table: 'processes',\n rootKey: 'processDataSet',\n informationKey: 'processInformation',\n schemaName: 'ProcessSchema',\n factoryName: 'createProcess',\n },\n};\n\nconst REFERENCE_ONLY_SAVE_DRAFT_TYPES = new Set<ConcreteDatasetSaveDraftType>([\n 'unitgroup',\n 'flowproperty',\n]);\n\nfunction isRecord(value: unknown): value is JsonObject {\n return typeof value === 'object' && value !== null && !Array.isArray(value);\n}\n\nfunction trimToken(value: unknown): string | null {\n if (typeof value !== 'string') {\n return null;\n }\n const trimmed = value.trim();\n return trimmed || null;\n}\n\nfunction serializeError(error: unknown): { message: string; details?: unknown } {\n if (error instanceof CliError) {\n return { message: error.message, details: error.details };\n }\n if (error instanceof Error) {\n return { message: error.message };\n }\n return { message: String(error) };\n}\n\nfunction normalizeType(\n value: string | null | undefined,\n allowReferenceOnlySupport = false,\n): DatasetSaveDraftType {\n const normalized = value?.trim().toLowerCase();\n if (!normalized || normalized === 'auto') {\n return 'auto';\n }\n if (normalized === 'contact' || normalized === 'contacts') {\n return 'contact';\n }\n if (normalized === 'source' || normalized === 'sources') {\n return 'source';\n }\n if (\n normalized === 'unitgroup' ||\n normalized === 'unitgroups' ||\n normalized === 'unit-group' ||\n normalized === 'unit-groups'\n ) {\n if (allowReferenceOnlySupport) {\n return 'unitgroup';\n }\n throw new CliError(\n 'Unit groups are reference-only support data for dataset save-draft. Select an existing database row instead of creating a custom My Data unit group.',\n {\n code: 'DATASET_SAVE_DRAFT_REFERENCE_ONLY_TYPE',\n exitCode: 2,\n details: { type: normalized },\n },\n );\n }\n if (\n normalized === 'flowproperty' ||\n normalized === 'flowproperties' ||\n normalized === 'flow-property' ||\n normalized === 'flow-properties'\n ) {\n if (allowReferenceOnlySupport) {\n return 'flowproperty';\n }\n throw new CliError(\n 'Flow properties are reference-only support data for dataset save-draft. Select an existing database row instead of creating a custom My Data flow property.',\n {\n code: 'DATASET_SAVE_DRAFT_REFERENCE_ONLY_TYPE',\n exitCode: 2,\n details: { type: normalized },\n },\n );\n }\n if (normalized === 'flow' || normalized === 'flows') {\n return 'flow';\n }\n if (normalized === 'process' || normalized === 'processes') {\n return 'process';\n }\n\n throw new CliError('Expected --type to be auto, contact, source, flow, or process.', {\n code: 'DATASET_SAVE_DRAFT_TYPE_INVALID',\n exitCode: 2,\n details: value,\n });\n}\n\nfunction unwrapPayload(row: JsonObject): JsonObject {\n for (const key of ['json_ordered', 'jsonOrdered', 'payload', 'json'] as const) {\n if (isRecord(row[key])) {\n return row[key];\n }\n }\n return row;\n}\n\nfunction detectType(payload: JsonObject): ConcreteDatasetSaveDraftType | null {\n for (const [type, config] of Object.entries(DATASET_CONFIGS)) {\n if (isRecord(payload[config.rootKey])) {\n return type as ConcreteDatasetSaveDraftType;\n }\n }\n return null;\n}\n\nfunction schemaForConfig(config: DatasetTypeConfig): {\n schema: SafeParseSchema;\n createEntity: SdkValidationFactory | null;\n} {\n const schema = (tidasSdk as Record<string, unknown>)[config.schemaName];\n if (\n !schema ||\n typeof schema !== 'object' ||\n typeof (schema as SafeParseSchema).safeParse !== 'function'\n ) {\n throw new CliError(`${String(config.schemaName)} is unavailable in @tiangong-lca/tidas-sdk.`, {\n code: 'DATASET_SAVE_DRAFT_SCHEMA_UNAVAILABLE',\n exitCode: 2,\n details: { table: config.table },\n });\n }\n const createEntity = (tidasSdk as Record<string, unknown>)[config.factoryName];\n return {\n schema: schema as SafeParseSchema,\n createEntity:\n typeof createEntity === 'function' ? (createEntity as SdkValidationFactory) : null,\n };\n}\n\nfunction validatePayload(\n payload: JsonObject,\n type: ConcreteDatasetSaveDraftType,\n config: DatasetTypeConfig,\n): DatasetSaveDraftValidationResult {\n const { schema, createEntity } = schemaForConfig(config);\n const outcome = validateSchemaWithDeepFallback(schema, payload, createEntity);\n const processIssues =\n type === 'process'\n ? [...collectProcessRequiredFieldIssues(payload), ...collectProcessPlaceholderIssues(payload)]\n : [];\n const importIssues = type === 'process' ? [] : collectImportContentIssues(payload);\n const issues: DatasetSaveDraftValidationIssue[] = [\n ...outcome.issues.map(normalizeValidationIssue),\n ...processIssues,\n ...importIssues,\n ];\n\n if (outcome.success && issues.length === 0) {\n return {\n ok: true,\n validator: `@tiangong-lca/tidas-sdk/${String(config.schemaName)}+tiangong/import-content`,\n issue_count: 0,\n issues: [],\n };\n }\n\n return {\n ok: false,\n validator: `@tiangong-lca/tidas-sdk/${String(config.schemaName)}+tiangong/import-content`,\n issue_count: issues.length,\n issues,\n };\n}\n\nfunction extractIdentity(\n payload: JsonObject,\n row: JsonObject,\n config: DatasetTypeConfig,\n): {\n id: string | null;\n version: string | null;\n} {\n const rootCandidate = payload[config.rootKey];\n const root: JsonObject = isRecord(rootCandidate) ? rootCandidate : payload;\n const informationCandidate = root[config.informationKey];\n const information: JsonObject = isRecord(informationCandidate) ? informationCandidate : {};\n const dataSetInformationCandidate = information.dataSetInformation;\n const dataSetInformation = isRecord(dataSetInformationCandidate)\n ? dataSetInformationCandidate\n : {};\n const administrativeInformation = isRecord(root.administrativeInformation)\n ? root.administrativeInformation\n : {};\n const publicationAndOwnership = isRecord(administrativeInformation.publicationAndOwnership)\n ? administrativeInformation.publicationAndOwnership\n : {};\n\n return {\n id: trimToken(row.id) ?? trimToken(dataSetInformation['common:UUID']),\n version:\n trimToken(row.version) ?? trimToken(publicationAndOwnership['common:dataSetVersion']) ?? null,\n };\n}\n\nfunction flowType(payload: JsonObject): string | null {\n const rootCandidate = payload.flowDataSet;\n const root = isRecord(rootCandidate) ? rootCandidate : payload;\n const modellingCandidate = root.modellingAndValidation;\n const modelling = isRecord(modellingCandidate) ? modellingCandidate : {};\n const lciMethodCandidate = modelling.LCIMethod;\n const lciMethod = isRecord(lciMethodCandidate) ? lciMethodCandidate : {};\n return trimToken(lciMethod.typeOfDataSet);\n}\n\nfunction isElementaryFlowPayload(payload: JsonObject): boolean {\n return flowType(payload)?.trim().toLowerCase() === 'elementary flow';\n}\n\nfunction compareVersions(left: string | null, right: string | null): number {\n if (!left && !right) {\n return 0;\n }\n if (!left) {\n return -1;\n }\n if (!right) {\n return 1;\n }\n const leftParts = left.split(/[._-]/u);\n const rightParts = right.split(/[._-]/u);\n const length = Math.max(leftParts.length, rightParts.length);\n for (let index = 0; index < length; index += 1) {\n const leftPart = leftParts[index] ?? '0';\n const rightPart = rightParts[index] ?? '0';\n const leftNumber = Number(leftPart);\n const rightNumber = Number(rightPart);\n if (Number.isFinite(leftNumber) && Number.isFinite(rightNumber)) {\n if (leftNumber !== rightNumber) {\n return leftNumber > rightNumber ? 1 : -1;\n }\n } else {\n const compared = leftPart.localeCompare(rightPart);\n if (compared !== 0) {\n return compared > 0 ? 1 : -1;\n }\n }\n }\n return 0;\n}\n\nfunction supportLookupKey(reference: {\n table: RemoteDatasetTable;\n id: string;\n version: string | null;\n}): string {\n return `${reference.table}:${reference.id}:${reference.version ?? ''}`;\n}\n\nfunction isLookupableRemoteReference(\n reference: RemoteDatasetReference,\n): reference is RemoteDatasetReference & { table: RemoteDatasetTable; id: string } {\n return Boolean(reference.table && reference.id);\n}\n\nfunction uniqueFlowRemoteReferences(payload: JsonObject): RemoteDatasetReference[] {\n const references = new Map<string, RemoteDatasetReference>();\n for (const reference of collectRemoteReferences([payload])) {\n if (reference.role !== 'reference') {\n continue;\n }\n if (reference.table && reference.id) {\n references.set(\n supportLookupKey({\n table: reference.table,\n id: reference.id,\n version: reference.version,\n }),\n reference,\n );\n } else {\n references.set(remoteReferenceFallbackKey(reference), reference);\n }\n }\n return [...references.values()];\n}\n\nfunction remoteReferenceFallbackKey(\n reference: Pick<RemoteDatasetReference, 'path' | 'type'>,\n): string {\n return `${reference.path}:${reference.type ?? 'unknown'}`;\n}\n\nasync function lookupCachedReferenceOnlySupport(options: {\n runtime: SupabaseDataRuntime;\n fetchImpl: FetchLike;\n timeoutMs: number;\n cache: Map<string, Promise<RemoteDatasetLookup>>;\n reference: RemoteDatasetReference & { table: RemoteDatasetTable; id: string };\n}): Promise<RemoteDatasetLookup> {\n const key = supportLookupKey(options.reference);\n if (!options.cache.has(key)) {\n options.cache.set(\n key,\n lookupRemoteDataset({\n runtime: options.runtime,\n fetchImpl: options.fetchImpl,\n timeoutMs: options.timeoutMs,\n request: {\n table: options.reference.table,\n id: options.reference.id,\n version: options.reference.version,\n },\n }),\n );\n }\n return options.cache.get(key) as Promise<RemoteDatasetLookup>;\n}\n\nasync function missingFlowRemoteReferences(options: {\n runtime: SupabaseDataRuntime;\n fetchImpl: FetchLike;\n timeoutMs: number;\n cache: Map<string, Promise<RemoteDatasetLookup>>;\n payload: JsonObject;\n}): Promise<MissingFlowRemoteReference[]> {\n const missing: MissingFlowRemoteReference[] = [];\n for (const reference of uniqueFlowRemoteReferences(options.payload)) {\n if (!isLookupableRemoteReference(reference)) {\n missing.push({\n table: reference.table,\n id: reference.id,\n version: reference.version,\n path: reference.path,\n short_description: reference.short_description,\n status: 'unsupported_type',\n latest_version: null,\n });\n continue;\n }\n if (!reference.version) {\n missing.push({\n table: reference.table,\n id: reference.id,\n version: null,\n path: reference.path,\n short_description: reference.short_description,\n status: 'version_missing',\n latest_version: null,\n });\n continue;\n }\n const lookup = await lookupCachedReferenceOnlySupport({ ...options, reference });\n if (!lookup.latest) {\n missing.push({\n table: reference.table,\n id: reference.id,\n version: reference.version,\n path: reference.path,\n short_description: reference.short_description,\n status: 'missing_dataset',\n latest_version: null,\n });\n } else if (!lookup.exact) {\n missing.push({\n table: reference.table,\n id: reference.id,\n version: reference.version,\n path: reference.path,\n short_description: reference.short_description,\n status: 'missing_version',\n latest_version: lookup.latest.version,\n });\n } else if (compareVersions(lookup.latest.version, reference.version) > 0) {\n missing.push({\n table: reference.table,\n id: reference.id,\n version: reference.version,\n path: reference.path,\n short_description: reference.short_description,\n status: 'version_outdated',\n latest_version: lookup.latest.version,\n });\n }\n }\n return missing;\n}\n\nfunction prepareRows(\n inputPath: string,\n rawInput: unknown | undefined,\n requestedType: DatasetSaveDraftType,\n): PreparedDatasetRow[] {\n const rows = readDatasetRowsInput(inputPath, rawInput);\n return rows.map((row, index) => {\n const payload = unwrapPayload(row);\n const type = requestedType === 'auto' ? detectType(payload) : requestedType;\n const config = type ? DATASET_CONFIGS[type] : null;\n const identity = config ? extractIdentity(payload, row, config) : { id: null, version: null };\n return {\n index,\n row,\n payload,\n type,\n config,\n id: identity.id,\n version: identity.version,\n validation: config && type ? validatePayload(payload, type, config) : null,\n };\n });\n}\n\nfunction buildFiles(outDir: string): DatasetSaveDraftReport['files'] {\n const outputDir = path.join(outDir, 'outputs', 'dataset-save-draft');\n return {\n selected_rows: path.join(outputDir, 'selected-rows.jsonl'),\n progress_jsonl: path.join(outputDir, 'progress.jsonl'),\n failures_jsonl: path.join(outputDir, 'failures.jsonl'),\n summary_json: path.join(outputDir, 'summary.json'),\n };\n}\n\nfunction defaultOutDir(inputPath: string, commit: boolean, now: Date): string {\n const mode = commit ? 'commit' : 'dry-run';\n const timestamp = now.toISOString().replace(/[:.]/gu, '').replace(/Z$/u, 'Z');\n return path.join(\n path.dirname(inputPath),\n 'artifacts',\n 'dataset-save-draft',\n `${mode}-${timestamp}`,\n );\n}\n\nfunction operationCount(rows: DatasetSaveDraftRowReport[]): Record<string, number> {\n const counts: Record<string, number> = {};\n for (const row of rows) {\n const key = row.operation ?? 'none';\n counts[key] = (counts[key] ?? 0) + 1;\n }\n return counts;\n}\n\nfunction byTable(rows: PreparedDatasetRow[]): Partial<Record<DatasetCommandTable, number>> {\n const counts: Partial<Record<DatasetCommandTable, number>> = {};\n for (const row of rows) {\n if (row.config) {\n counts[row.config.table] = (counts[row.config.table] ?? 0) + 1;\n }\n }\n return counts;\n}\n\nfunction selectedRow(row: PreparedDatasetRow): JsonObject {\n return {\n index: row.index,\n type: row.type,\n table: row.config?.table ?? null,\n id: row.id,\n version: row.version,\n validation: row.validation,\n payload: row.payload,\n };\n}\n\nfunction buildPreparedFailure(\n row: PreparedDatasetRow,\n allowReferenceOnlySupport = false,\n): DatasetSaveDraftRowReport | null {\n if (!row.type || !row.config) {\n return {\n index: row.index,\n id: row.id,\n version: row.version,\n type: row.type,\n table: null,\n status: 'failed',\n operation: 'type_unknown',\n validation: null,\n error: {\n message: 'Could not detect dataset type. Use --type or provide a supported TIDAS wrapper.',\n },\n };\n }\n\n if (REFERENCE_ONLY_SAVE_DRAFT_TYPES.has(row.type) && !allowReferenceOnlySupport) {\n return {\n index: row.index,\n id: row.id,\n version: row.version,\n type: row.type,\n table: row.config.table,\n status: 'failed',\n operation: 'reference_only_type',\n validation: row.validation,\n error: {\n message:\n 'Unit Groups and Flow Properties are reference-only support data. Rewrite references to existing database rows instead of writing these rows through dataset save-draft.',\n },\n };\n }\n\n if (!row.id || !row.version) {\n return {\n index: row.index,\n id: row.id,\n version: row.version,\n type: row.type,\n table: row.config.table,\n status: 'failed',\n operation: 'identity_missing',\n validation: row.validation,\n error: {\n message:\n 'Dataset row is missing common:UUID or common:dataSetVersion required for save-draft.',\n },\n };\n }\n\n if (!row.validation?.ok) {\n return {\n index: row.index,\n id: row.id,\n version: row.version,\n type: row.type,\n table: row.config.table,\n status: 'failed',\n operation: 'skipped_invalid',\n validation: row.validation,\n error: {\n message: `Local dataset validation failed with ${row.validation?.issue_count ?? 0} issue(s).`,\n },\n };\n }\n\n return null;\n}\n\nfunction buildVisibleRowsUrl(\n restBaseUrl: string,\n table: DatasetCommandTable,\n id: string,\n version: string,\n): string {\n const url = new URL(`${restBaseUrl.replace(/\\/+$/u, '')}/${table}`);\n url.searchParams.set('select', 'id,version,user_id,state_code');\n url.searchParams.set('id', `eq.${id}`);\n url.searchParams.set('version', `eq.${version}`);\n return url.toString();\n}\n\nfunction parseVisibleRows(payload: unknown, url: string): VisibleDatasetRow[] {\n if (!Array.isArray(payload)) {\n throw new CliError(`Supabase REST response was not a JSON array for ${url}`, {\n code: 'SUPABASE_REST_RESPONSE_INVALID',\n exitCode: 1,\n details: payload,\n });\n }\n\n return payload.map((item, index) => {\n if (!isRecord(item)) {\n throw new CliError(`Supabase REST row ${index} was not a JSON object for ${url}`, {\n code: 'SUPABASE_REST_RESPONSE_INVALID',\n exitCode: 1,\n details: item,\n });\n }\n return {\n id: trimToken(item.id) ?? '',\n version: trimToken(item.version) ?? '',\n user_id: trimToken(item.user_id),\n state_code: typeof item.state_code === 'number' ? item.state_code : null,\n };\n });\n}\n\nasync function exactVisibleRows(options: {\n client: SupabaseDataClient;\n restBaseUrl: string;\n table: DatasetCommandTable;\n id: string;\n version: string;\n}): Promise<VisibleDatasetRow[]> {\n const url = buildVisibleRowsUrl(options.restBaseUrl, options.table, options.id, options.version);\n const payload = await runSupabaseArrayQuery(\n options.client\n .from(options.table)\n .select('id,version,user_id,state_code')\n .eq('id', options.id)\n .eq('version', options.version),\n url,\n );\n return parseVisibleRows(payload, url);\n}\n\nexport async function runDatasetSaveDraft(\n options: RunDatasetSaveDraftOptions,\n): Promise<DatasetSaveDraftReport> {\n const now = options.now ?? new Date();\n const inputPath = path.resolve(options.inputPath);\n const commit = options.commit === true;\n const allowReferenceOnlySupport =\n options.allowReferenceOnlySupport === true ||\n (options.env?.TIANGONG_ALLOW_ACCOUNT_LOCAL_SUPPORT ?? '') === '1';\n const requestedType = normalizeType(options.type, allowReferenceOnlySupport);\n const outDir = path.resolve(options.outDir ?? defaultOutDir(inputPath, commit, now));\n const files = buildFiles(outDir);\n const preparedRows = prepareRows(inputPath, options.rawInput, requestedType);\n const timeoutMs = options.timeoutMs ?? DEFAULT_TIMEOUT_MS;\n\n if (commit && (!options.env || !options.fetchImpl)) {\n throw new CliError('Dataset save-draft commit requires env and fetch runtime bindings.', {\n code: 'DATASET_SAVE_DRAFT_RUNTIME_REQUIRED',\n exitCode: 2,\n });\n }\n\n writeJsonLinesArtifact(files.selected_rows, preparedRows.map(selectedRow));\n\n const runtime =\n commit && options.env && options.fetchImpl\n ? createSupabaseDataRuntime({\n runtime: requireSupabaseRestRuntime(options.env),\n fetchImpl: options.fetchImpl,\n timeoutMs,\n })\n : null;\n const commandTransport =\n runtime && options.fetchImpl\n ? await buildDatasetCommandTransport({\n runtime,\n fetchImpl: options.fetchImpl,\n timeoutMs,\n })\n : null;\n const dataClient =\n runtime && options.fetchImpl\n ? createSupabaseDataClient(runtime, options.fetchImpl, timeoutMs)\n : null;\n const referenceOnlySupportCache = new Map<string, Promise<RemoteDatasetLookup>>();\n\n const reports: DatasetSaveDraftRowReport[] = [];\n for (const row of preparedRows) {\n const preparedFailure = buildPreparedFailure(row, allowReferenceOnlySupport);\n if (preparedFailure) {\n reports.push(preparedFailure);\n continue;\n }\n\n const baseReport: DatasetSaveDraftRowReport = {\n index: row.index,\n id: row.id,\n version: row.version,\n type: row.type,\n table: row.config!.table,\n status: 'prepared',\n operation: 'would_sync',\n validation: row.validation,\n };\n\n if (!commit) {\n reports.push(baseReport);\n continue;\n }\n\n try {\n const visibleRows = await exactVisibleRows({\n client: dataClient!.client,\n restBaseUrl: dataClient!.restBaseUrl,\n table: row.config!.table,\n id: row.id!,\n version: row.version!,\n });\n const visibleRow = visibleRows[0] ?? null;\n if (row.type === 'flow') {\n if (!visibleRow && isElementaryFlowPayload(row.payload) && !allowReferenceOnlySupport) {\n reports.push({\n ...baseReport,\n status: 'failed',\n operation: 'elementary_flow_insert_blocked',\n visible_row: null,\n error: {\n message:\n 'Elementary flows are reference-only for dataset save-draft. Resolve the flow with remote hybrid search and reference the existing database row instead of creating a My Data flow.',\n details: {\n code: 'DATASET_SAVE_DRAFT_ELEMENTARY_FLOW_INSERT_BLOCKED',\n },\n },\n });\n continue;\n }\n\n const unresolvedReferences = await missingFlowRemoteReferences({\n runtime: runtime!,\n fetchImpl: options.fetchImpl!,\n timeoutMs,\n cache: referenceOnlySupportCache,\n payload: row.payload,\n });\n if (unresolvedReferences.length > 0) {\n reports.push({\n ...baseReport,\n status: 'failed',\n operation: 'remote_reference_unresolved',\n visible_row: visibleRow,\n error: {\n message:\n 'Flow save-draft commit requires all referenced datasets to already resolve in the remote database.',\n details: {\n code: 'DATASET_SAVE_DRAFT_REMOTE_REFERENCE_UNRESOLVED',\n references: unresolvedReferences,\n },\n },\n });\n continue;\n }\n }\n if (visibleRow) {\n await saveDraftDatasetRecord({\n transport: commandTransport!,\n table: row.config!.table,\n id: row.id!,\n version: row.version!,\n payload: row.payload,\n extraData: { ruleVerification: true },\n });\n reports.push({\n ...baseReport,\n status: 'executed',\n operation: 'save_draft',\n visible_row: visibleRow,\n });\n } else {\n await createDatasetRecord({\n transport: commandTransport!,\n table: row.config!.table,\n id: row.id!,\n payload: row.payload,\n extraData: { ruleVerification: true },\n });\n reports.push({\n ...baseReport,\n status: 'executed',\n operation: 'insert',\n visible_row: null,\n });\n }\n } catch (error) {\n reports.push({\n ...baseReport,\n status: 'failed',\n error: serializeError(error),\n });\n }\n }\n\n const failures = reports.filter((row) => row.status === 'failed');\n writeJsonLinesArtifact(files.progress_jsonl, reports);\n writeJsonLinesArtifact(files.failures_jsonl, failures);\n\n const report: DatasetSaveDraftReport = {\n schema_version: 1,\n generated_at_utc: now.toISOString(),\n input_path: inputPath,\n requested_type: requestedType,\n out_dir: outDir,\n commit,\n mode: commit ? 'commit' : 'dry_run',\n status: failures.length > 0 ? 'completed_with_failures' : 'completed',\n counts: {\n selected: preparedRows.length,\n prepared: reports.filter((row) => row.status === 'prepared').length,\n executed: reports.filter((row) => row.status === 'executed').length,\n failed: failures.length,\n by_table: byTable(preparedRows),\n operations: operationCount(reports),\n },\n files,\n rows: reports,\n };\n\n writeJsonArtifact(files.summary_json, report);\n return report;\n}\n\nexport const __testInternals = {\n DATASET_CONFIGS,\n buildFiles,\n buildPreparedFailure,\n buildVisibleRowsUrl,\n byTable,\n compareVersions,\n defaultOutDir,\n detectType,\n extractIdentity,\n flowType,\n isElementaryFlowPayload,\n isLookupableRemoteReference,\n missingFlowRemoteReferences,\n normalizeValidationIssue,\n normalizeType,\n operationCount,\n parseVisibleRows,\n prepareRows,\n remoteReferenceFallbackKey,\n selectedRow,\n serializeError,\n supportLookupKey,\n unwrapPayload,\n uniqueFlowRemoteReferences,\n validatePayload,\n};\n"]}
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@tiangong-lca/cli",
3
- "version": "0.0.17",
3
+ "version": "0.0.19",
4
4
  "description": "Unified TianGong LCA CLI with direct REST adapters and low-entropy command surface.",
5
5
  "repository": {
6
6
  "type": "git",
@@ -77,6 +77,6 @@
77
77
  },
78
78
  "dependencies": {
79
79
  "@supabase/supabase-js": "^2.101.1",
80
- "@tiangong-lca/tidas-sdk": "^0.1.41"
80
+ "@tiangong-lca/tidas-sdk": "^0.1.45"
81
81
  }
82
82
  }