@tiangong-lca/cli 0.0.32 → 0.1.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (101) hide show
  1. package/LICENSE +21 -0
  2. package/README.md +33 -12
  3. package/assets/import-smoke/simapro.csv +20 -0
  4. package/bin/tiangong-lca.js +1 -1
  5. package/dist/src/cli.js +103 -65
  6. package/dist/src/cli.js.map +1 -1
  7. package/dist/src/lib/dataset-bilingual.js.map +1 -1
  8. package/dist/src/lib/dataset-classification.js.map +1 -1
  9. package/dist/src/lib/dataset-contract.js.map +1 -1
  10. package/dist/src/lib/dataset-evidence-search.js.map +1 -1
  11. package/dist/src/lib/dataset-import-lca.js +302 -131
  12. package/dist/src/lib/dataset-import-lca.js.map +1 -1
  13. package/dist/src/lib/dataset-maintenance-apply.js +916 -43
  14. package/dist/src/lib/dataset-maintenance-apply.js.map +1 -1
  15. package/dist/src/lib/dataset-maintenance-clear-account.js +10 -4
  16. package/dist/src/lib/dataset-maintenance-clear-account.js.map +1 -1
  17. package/dist/src/lib/dataset-maintenance-contract.js +1 -6
  18. package/dist/src/lib/dataset-maintenance-contract.js.map +1 -1
  19. package/dist/src/lib/dataset-maintenance-derivatives.js +0 -1
  20. package/dist/src/lib/dataset-maintenance-derivatives.js.map +1 -1
  21. package/dist/src/lib/dataset-maintenance-flow-identity-capture.js +1 -0
  22. package/dist/src/lib/dataset-maintenance-flow-identity-capture.js.map +1 -1
  23. package/dist/src/lib/dataset-maintenance-pagination.js.map +1 -1
  24. package/dist/src/lib/dataset-maintenance-protected-before.js.map +1 -1
  25. package/dist/src/lib/dataset-maintenance-protected-contract.js +0 -1
  26. package/dist/src/lib/dataset-maintenance-protected-contract.js.map +1 -1
  27. package/dist/src/lib/dataset-maintenance-protected-freeze.js.map +1 -1
  28. package/dist/src/lib/dataset-maintenance-protected-preparation.js +0 -2
  29. package/dist/src/lib/dataset-maintenance-protected-preparation.js.map +1 -1
  30. package/dist/src/lib/dataset-maintenance-protected-seal.js.map +1 -1
  31. package/dist/src/lib/dataset-maintenance-protected-verify.js +0 -3
  32. package/dist/src/lib/dataset-maintenance-protected-verify.js.map +1 -1
  33. package/dist/src/lib/dataset-maintenance-remote.js +68 -12
  34. package/dist/src/lib/dataset-maintenance-remote.js.map +1 -1
  35. package/dist/src/lib/dataset-maintenance-verify.js +1 -2
  36. package/dist/src/lib/dataset-maintenance-verify.js.map +1 -1
  37. package/dist/src/lib/dataset-remote-refresh.js.map +1 -1
  38. package/dist/src/lib/dataset-remote-verify.js +2 -0
  39. package/dist/src/lib/dataset-remote-verify.js.map +1 -1
  40. package/dist/src/lib/dataset-save-draft-run.js +2 -0
  41. package/dist/src/lib/dataset-save-draft-run.js.map +1 -1
  42. package/dist/src/lib/flow-build-alias-map.js.map +1 -1
  43. package/dist/src/lib/flow-fetch-rows.js.map +1 -1
  44. package/dist/src/lib/flow-get.js.map +1 -1
  45. package/dist/src/lib/flow-governance.js.map +1 -1
  46. package/dist/src/lib/flow-list.js +1 -0
  47. package/dist/src/lib/flow-list.js.map +1 -1
  48. package/dist/src/lib/flow-payload-validation.js.map +1 -1
  49. package/dist/src/lib/flow-publish-version.js +1 -0
  50. package/dist/src/lib/flow-publish-version.js.map +1 -1
  51. package/dist/src/lib/flow-read.js +1 -0
  52. package/dist/src/lib/flow-read.js.map +1 -1
  53. package/dist/src/lib/flow-regen-product.js.map +1 -1
  54. package/dist/src/lib/flow-remediate.js.map +1 -1
  55. package/dist/src/lib/identity-preflight.js +4 -10
  56. package/dist/src/lib/identity-preflight.js.map +1 -1
  57. package/dist/src/lib/lifecyclemodel-bundle-save.js +1 -0
  58. package/dist/src/lib/lifecyclemodel-bundle-save.js.map +1 -1
  59. package/dist/src/lib/lifecyclemodel-orchestrate.js.map +1 -1
  60. package/dist/src/lib/lifecyclemodel-publish-resulting-process.js.map +1 -1
  61. package/dist/src/lib/lifecyclemodel-resulting-process.js.map +1 -1
  62. package/dist/src/lib/lifecyclemodel-save-draft-run.js.map +1 -1
  63. package/dist/src/lib/lifecyclemodel-validate-build.js.map +1 -1
  64. package/dist/src/lib/package-version.js.map +1 -1
  65. package/dist/src/lib/process-auto-build.js.map +1 -1
  66. package/dist/src/lib/process-dedup-review.js +14 -7
  67. package/dist/src/lib/process-dedup-review.js.map +1 -1
  68. package/dist/src/lib/process-flow-build-plan.js +111 -30
  69. package/dist/src/lib/process-flow-build-plan.js.map +1 -1
  70. package/dist/src/lib/process-get.js +1 -0
  71. package/dist/src/lib/process-get.js.map +1 -1
  72. package/dist/src/lib/process-list.js +1 -0
  73. package/dist/src/lib/process-list.js.map +1 -1
  74. package/dist/src/lib/process-payload-validation.js.map +1 -1
  75. package/dist/src/lib/process-qa.js.map +1 -1
  76. package/dist/src/lib/process-refresh-references.js +15 -10
  77. package/dist/src/lib/process-refresh-references.js.map +1 -1
  78. package/dist/src/lib/process-save-draft.js +9 -3
  79. package/dist/src/lib/process-save-draft.js.map +1 -1
  80. package/dist/src/lib/process-scope-statistics.js +11 -4
  81. package/dist/src/lib/process-scope-statistics.js.map +1 -1
  82. package/dist/src/lib/process-verify-rows.js.map +1 -1
  83. package/dist/src/lib/publish.js.map +1 -1
  84. package/dist/src/lib/run.js.map +1 -1
  85. package/dist/src/lib/supabase-client.js +13 -1
  86. package/dist/src/lib/supabase-client.js.map +1 -1
  87. package/dist/src/lib/supabase-data-api-contract.js +328 -0
  88. package/dist/src/lib/supabase-data-api-contract.js.map +1 -0
  89. package/dist/src/lib/supabase-data-api-replay.js +69 -0
  90. package/dist/src/lib/supabase-data-api-replay.js.map +1 -0
  91. package/dist/src/lib/supabase-json-ordered-write.js +2 -0
  92. package/dist/src/lib/supabase-json-ordered-write.js.map +1 -1
  93. package/dist/src/lib/supabase-rest.js +1 -0
  94. package/dist/src/lib/supabase-rest.js.map +1 -1
  95. package/dist/src/lib/tidas-sdk-package-validator.js +5 -5
  96. package/dist/src/lib/tidas-sdk-package-validator.js.map +1 -1
  97. package/dist/src/lib/validation.js.map +1 -1
  98. package/dist/src/main.js.map +1 -1
  99. package/package.json +40 -40
  100. package/dist/scripts/assert-full-coverage.js +0 -77
  101. package/dist/scripts/assert-full-coverage.js.map +0 -1
@@ -1,3 +1,4 @@
1
+ // data-api-relations: lifecyclemodels
1
2
  import { CliError } from './errors.js';
2
3
  import { buildSupabaseAuthHeaders, createSupabaseDataClient, deriveSupabaseFunctionsBaseUrl, requireSupabaseRestRuntime, runSupabaseArrayQuery, } from './supabase-client.js';
3
4
  import { createSupabaseDataRuntime } from './supabase-session.js';
@@ -1 +1 @@
1
- {"version":3,"file":"lifecyclemodel-bundle-save.js","sourceRoot":"","sources":["../../../src/lib/lifecyclemodel-bundle-save.ts"],"names":[],"mappings":"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","sourcesContent":["import { CliError } from './errors.js';\nimport type { FetchLike } from './http.js';\nimport {\n buildSupabaseAuthHeaders,\n createSupabaseDataClient,\n deriveSupabaseFunctionsBaseUrl,\n requireSupabaseRestRuntime,\n runSupabaseArrayQuery,\n} from './supabase-client.js';\nimport { createSupabaseDataRuntime } from './supabase-session.js';\n\ntype JsonObject = Record<string, unknown>;\n\nconst DEFAULT_TIMEOUT_MS = 10_000;\nconst DEFAULT_NODE_WIDTH = 350;\nconst DEFAULT_NODE_HEIGHT = 120;\nconst DEFAULT_NODE_GAP_X = 420;\nconst DEFAULT_NODE_GAP_Y = 180;\n\nexport type LifecyclemodelPublishMetadata = {\n json_tg?: JsonObject;\n processMutations?: JsonObject[];\n ruleVerification?: boolean;\n};\n\ntype LifecyclemodelVisibleRow = {\n id: string;\n version: string;\n};\n\ntype LifecyclemodelBundlePlan = {\n mode: 'create' | 'update';\n modelId: string;\n version?: string;\n parent: {\n jsonOrdered: JsonObject;\n jsonTg: JsonObject;\n ruleVerification?: boolean;\n };\n processMutations: JsonObject[];\n};\n\nexport type LifecyclemodelBundleWriteResult = {\n status: 'success';\n operation: 'create' | 'update' | 'update_after_create_conflict';\n mode: 'create' | 'update';\n transport: 'save_lifecycle_model_bundle';\n response: JsonObject;\n};\n\nfunction isRecord(value: unknown): value is JsonObject {\n return typeof value === 'object' && value !== null && !Array.isArray(value);\n}\n\nfunction ensureList<T = unknown>(value: unknown): T[] {\n if (value === undefined || value === null) {\n return [];\n }\n return Array.isArray(value) ? (value as T[]) : ([value] as T[]);\n}\n\nfunction cloneJson<T>(value: T): T {\n return JSON.parse(JSON.stringify(value)) as T;\n}\n\nfunction trimToken(value: unknown): string | null {\n if (typeof value !== 'string') {\n return null;\n }\n\n const trimmed = value.trim();\n return trimmed || null;\n}\n\nfunction firstNonEmpty(...values: unknown[]): string | null {\n for (const value of values) {\n const trimmed = trimToken(value);\n if (trimmed) {\n return trimmed;\n }\n }\n return null;\n}\n\nfunction lifecyclemodelRoot(payload: JsonObject): JsonObject {\n return isRecord(payload.lifeCycleModelDataSet) ? payload.lifeCycleModelDataSet : payload;\n}\n\nfunction dataSetInformation(root: JsonObject): JsonObject {\n const info = isRecord(root.lifeCycleModelInformation) ? root.lifeCycleModelInformation : {};\n return isRecord(info.dataSetInformation) ? info.dataSetInformation : {};\n}\n\nfunction technology(root: JsonObject): JsonObject {\n const info = isRecord(root.lifeCycleModelInformation) ? root.lifeCycleModelInformation : {};\n return isRecord(info.technology) ? info.technology : {};\n}\n\nfunction processesBlock(root: JsonObject): JsonObject {\n const tech = technology(root);\n return isRecord(tech.processes) ? tech.processes : {};\n}\n\nfunction extractProcessInstances(payload: JsonObject): JsonObject[] {\n return ensureList<JsonObject>(processesBlock(lifecyclemodelRoot(payload)).processInstance).filter(\n isRecord,\n );\n}\n\nfunction outputConnections(instance: JsonObject): JsonObject[] {\n const connections = isRecord(instance.connections) ? instance.connections : {};\n return ensureList<JsonObject>(connections.outputExchange).filter(isRecord);\n}\n\nfunction matchingResultingProcessType(\n instance: JsonObject,\n payload: JsonObject,\n): 'primary' | 'secondary' {\n const ref = isRecord(instance.referenceToProcess) ? instance.referenceToProcess : {};\n const resulting = isRecord(\n dataSetInformation(lifecyclemodelRoot(payload)).referenceToResultingProcess,\n )\n ? (dataSetInformation(lifecyclemodelRoot(payload)).referenceToResultingProcess as JsonObject)\n : {};\n const processId = trimToken(ref['@refObjectId']);\n const processVersion = trimToken(ref['@version']);\n const resultingId = trimToken(resulting['@refObjectId']);\n const resultingVersion = trimToken(resulting['@version']);\n\n if (\n processId &&\n processId === resultingId &&\n (!resultingVersion || processVersion === resultingVersion)\n ) {\n return 'primary';\n }\n\n return 'secondary';\n}\n\nfunction displayName(reference: JsonObject): unknown {\n if (reference.name !== undefined) {\n return cloneJson(reference.name);\n }\n\n if (reference['common:shortDescription'] !== undefined) {\n return cloneJson(reference['common:shortDescription']);\n }\n\n return undefined;\n}\n\nfunction deriveSubmodels(payload: JsonObject): JsonObject[] {\n const submodels: Array<JsonObject | null> = extractProcessInstances(payload).map(\n (instance, index) => {\n const reference = isRecord(instance.referenceToProcess) ? instance.referenceToProcess : {};\n const id = trimToken(reference['@refObjectId']);\n if (!id) {\n return null;\n }\n\n const version = trimToken(reference['@version']);\n return {\n id,\n ...(version ? { version } : {}),\n type: matchingResultingProcessType(instance, payload),\n ...(displayName(reference) !== undefined ? { name: displayName(reference) } : {}),\n instanceId: firstNonEmpty(instance['@dataSetInternalID'], `instance-${index + 1}`),\n };\n },\n );\n\n return submodels.filter((value): value is JsonObject => value !== null);\n}\n\nfunction buildNodeLabel(reference: JsonObject, fallback: string): unknown {\n return displayName(reference) ?? fallback;\n}\n\nfunction deriveXflowNodes(payload: JsonObject): JsonObject[] {\n const instances = extractProcessInstances(payload);\n const columnCount = Math.max(1, Math.ceil(Math.sqrt(Math.max(instances.length, 1))));\n\n return instances.map((instance, index) => {\n const reference = isRecord(instance.referenceToProcess) ? instance.referenceToProcess : {};\n const internalId = firstNonEmpty(instance['@dataSetInternalID'], `node-${index + 1}`)!;\n const processId = firstNonEmpty(reference['@refObjectId'], `process-${index + 1}`)!;\n const version = trimToken(reference['@version']);\n const x = (index % columnCount) * DEFAULT_NODE_GAP_X;\n const y = Math.floor(index / columnCount) * DEFAULT_NODE_GAP_Y;\n\n return {\n id: internalId,\n x,\n y,\n width: DEFAULT_NODE_WIDTH,\n height: DEFAULT_NODE_HEIGHT,\n data: {\n id: processId,\n ...(version ? { version } : {}),\n label: buildNodeLabel(reference, processId),\n shortDescription: cloneJson(reference['common:shortDescription'] ?? []),\n },\n };\n });\n}\n\nfunction deriveXflowEdges(payload: JsonObject): JsonObject[] {\n const instances = extractProcessInstances(payload);\n const nodeByInternalId = new Map<string, { processId: string; version: string | null }>(\n instances.map((instance, index) => {\n const reference = isRecord(instance.referenceToProcess) ? instance.referenceToProcess : {};\n return [\n firstNonEmpty(instance['@dataSetInternalID'], `node-${index + 1}`)!,\n {\n processId: firstNonEmpty(reference['@refObjectId'], `process-${index + 1}`)!,\n version: trimToken(reference['@version']),\n },\n ];\n }),\n );\n\n let edgeIndex = 0;\n const edges: JsonObject[] = [];\n\n instances.forEach((instance, index) => {\n const sourceCell = firstNonEmpty(instance['@dataSetInternalID'], `node-${index + 1}`)!;\n const sourceNode = nodeByInternalId.get(sourceCell)!;\n\n outputConnections(instance).forEach((outputExchange) => {\n const flowUuid = trimToken(outputExchange['@flowUUID']);\n const downstreamProcesses = ensureList<JsonObject>(outputExchange.downstreamProcess).filter(\n isRecord,\n );\n\n downstreamProcesses.forEach((downstreamProcess) => {\n const targetCell = trimToken(downstreamProcess['@id']);\n if (!targetCell) {\n return;\n }\n\n const targetNode = nodeByInternalId.get(targetCell) ?? { processId: null, version: null };\n edgeIndex += 1;\n edges.push({\n id: [sourceCell, targetCell, flowUuid ?? `edge-${edgeIndex}`].join(':'),\n source: {\n cell: sourceCell,\n },\n target: {\n cell: targetCell,\n },\n labels: [],\n data: {\n connection: {\n outputExchange: {\n ...(flowUuid ? { '@flowUUID': flowUuid } : {}),\n downstreamProcess: cloneJson(downstreamProcess),\n },\n },\n node: {\n sourceNodeID: sourceCell,\n targetNodeID: targetCell,\n sourceProcessId: sourceNode.processId,\n ...(sourceNode.version ? { sourceProcessVersion: sourceNode.version } : {}),\n ...(targetNode.processId ? { targetProcessId: targetNode.processId } : {}),\n ...(targetNode.version ? { targetProcessVersion: targetNode.version } : {}),\n },\n },\n });\n });\n });\n });\n\n return edges;\n}\n\nexport function deriveLifecyclemodelJsonTg(payload: JsonObject): JsonObject {\n return {\n xflow: {\n nodes: deriveXflowNodes(payload),\n edges: deriveXflowEdges(payload),\n },\n submodels: deriveSubmodels(payload),\n };\n}\n\nfunction mergeLifecyclemodelJsonTg(explicit: JsonObject | null, derived: JsonObject): JsonObject {\n if (!explicit) {\n return derived;\n }\n\n const derivedXflow = isRecord(derived.xflow) ? derived.xflow : {};\n const explicitXflow = isRecord(explicit.xflow) ? explicit.xflow : null;\n\n return {\n ...derived,\n ...cloneJson(explicit),\n xflow: explicitXflow\n ? {\n ...cloneJson(derivedXflow),\n ...cloneJson(explicitXflow),\n nodes: Array.isArray(explicitXflow.nodes)\n ? cloneJson(explicitXflow.nodes)\n : derivedXflow.nodes,\n edges: Array.isArray(explicitXflow.edges)\n ? cloneJson(explicitXflow.edges)\n : derivedXflow.edges,\n }\n : derived.xflow,\n submodels: Array.isArray(explicit.submodels)\n ? cloneJson(explicit.submodels)\n : derived.submodels,\n };\n}\n\nfunction normalizeProcessMutations(value: unknown): JsonObject[] {\n if (value === undefined || value === null) {\n return [];\n }\n\n const mutations = ensureList<JsonObject>(value);\n if (!mutations.every(isRecord)) {\n throw new CliError(\n 'Lifecyclemodel publish metadata expected processMutations to contain JSON objects.',\n {\n code: 'LIFECYCLEMODEL_PROCESS_MUTATIONS_INVALID',\n exitCode: 2,\n details: value,\n },\n );\n }\n\n return cloneJson(mutations);\n}\n\nexport function buildLifecyclemodelBundlePlan(options: {\n id: string;\n version: string;\n payload: JsonObject;\n metadata?: LifecyclemodelPublishMetadata | null;\n mode: 'create' | 'update';\n}): LifecyclemodelBundlePlan {\n const explicitJsonTg = isRecord(options.metadata?.json_tg) ? options.metadata?.json_tg : null;\n const derivedJsonTg = deriveLifecyclemodelJsonTg(options.payload);\n\n return {\n mode: options.mode,\n modelId: options.id,\n ...(options.mode === 'update' ? { version: options.version } : {}),\n parent: {\n jsonOrdered: cloneJson(options.payload),\n jsonTg: mergeLifecyclemodelJsonTg(explicitJsonTg, derivedJsonTg),\n ...(typeof options.metadata?.ruleVerification === 'boolean'\n ? { ruleVerification: options.metadata.ruleVerification }\n : {}),\n },\n processMutations: normalizeProcessMutations(options.metadata?.processMutations),\n };\n}\n\nfunction buildVisibleRowsUrl(restBaseUrl: string, id: string, version: string): string {\n const url = new URL(`${restBaseUrl.replace(/\\/+$/u, '')}/lifecyclemodels`);\n url.searchParams.set('select', 'id,version');\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): LifecyclemodelVisibleRow[] {\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\n return {\n id: trimToken(item.id) ?? '',\n version: trimToken(item.version) ?? '',\n };\n });\n}\n\nasync function exactVisibleRows(options: {\n id: string;\n version: string;\n env: NodeJS.ProcessEnv;\n fetchImpl: FetchLike;\n timeoutMs: number;\n}): Promise<LifecyclemodelVisibleRow[]> {\n const runtime = createSupabaseDataRuntime({\n runtime: requireSupabaseRestRuntime(options.env),\n fetchImpl: options.fetchImpl,\n timeoutMs: options.timeoutMs,\n });\n const { client, restBaseUrl } = createSupabaseDataClient(\n runtime,\n options.fetchImpl,\n options.timeoutMs,\n );\n const url = buildVisibleRowsUrl(restBaseUrl, options.id, options.version);\n const payload = await runSupabaseArrayQuery(\n client\n .from('lifecyclemodels')\n .select('id,version')\n .eq('id', options.id)\n .eq('version', options.version),\n url,\n );\n\n return parseVisibleRows(payload, url);\n}\n\nfunction parseLifecyclemodelBundleJson(rawText: string, url: string): unknown {\n try {\n return JSON.parse(rawText);\n } catch (error) {\n throw new CliError(`Remote response was not valid JSON for ${url}`, {\n code: 'REMOTE_INVALID_JSON',\n exitCode: 1,\n details: String(error),\n });\n }\n}\n\nfunction requireLifecyclemodelBundleResponse(payload: unknown, url: string): JsonObject {\n if (!isRecord(payload)) {\n throw new CliError(`Lifecyclemodel bundle endpoint returned an unexpected payload for ${url}`, {\n code: 'REMOTE_RESPONSE_INVALID',\n exitCode: 1,\n details: payload,\n });\n }\n\n if (payload.ok === false) {\n const code = trimToken(payload.code) ?? 'REMOTE_APPLICATION_ERROR';\n const message =\n trimToken(payload.message) ?? `Remote application response returned ok:false for ${url}`;\n throw new CliError(message, {\n code,\n exitCode: 1,\n details: payload.details ?? payload,\n });\n }\n\n return payload;\n}\n\nfunction throwLifecyclemodelBundleHttpError(\n status: number,\n payload: unknown,\n rawText: string,\n url: string,\n): never {\n if (isRecord(payload)) {\n const code = trimToken(payload.code);\n const message = trimToken(payload.message);\n if (code && message) {\n throw new CliError(message, {\n code,\n exitCode: 1,\n details: payload.details ?? payload,\n });\n }\n }\n\n throw new CliError(`HTTP ${status} returned from ${url}`, {\n code: 'REMOTE_REQUEST_FAILED',\n exitCode: 1,\n details: rawText,\n });\n}\n\nasync function invokeSaveLifecyclemodelBundle(options: {\n plan: LifecyclemodelBundlePlan;\n env: NodeJS.ProcessEnv;\n fetchImpl: FetchLike;\n timeoutMs: number;\n}): Promise<JsonObject> {\n const runtime = createSupabaseDataRuntime({\n runtime: requireSupabaseRestRuntime(options.env),\n fetchImpl: options.fetchImpl,\n timeoutMs: options.timeoutMs,\n });\n const accessToken = await runtime.getAccessToken();\n const url = `${deriveSupabaseFunctionsBaseUrl(runtime.apiBaseUrl)}/save_lifecycle_model_bundle`;\n const response = await options.fetchImpl(url, {\n method: 'POST',\n headers: {\n ...buildSupabaseAuthHeaders(runtime.publishableKey, accessToken),\n 'Content-Type': 'application/json',\n },\n body: JSON.stringify(options.plan),\n signal: AbortSignal.timeout(options.timeoutMs),\n });\n const rawText = await response.text();\n const contentType = response.headers.get('content-type') ?? '';\n const payload =\n contentType.includes('application/json') && rawText.length > 0\n ? parseLifecyclemodelBundleJson(rawText, url)\n : rawText;\n\n if (!response.ok) {\n throwLifecyclemodelBundleHttpError(response.status, payload, rawText, url);\n }\n\n return requireLifecyclemodelBundleResponse(payload, url);\n}\n\nexport async function syncLifecyclemodelBundleRecord(options: {\n id: string;\n version: string;\n payload: JsonObject;\n metadata?: LifecyclemodelPublishMetadata | null;\n env: NodeJS.ProcessEnv;\n fetchImpl: FetchLike;\n timeoutMs?: number;\n}): Promise<LifecyclemodelBundleWriteResult> {\n const timeoutMs = options.timeoutMs ?? DEFAULT_TIMEOUT_MS;\n const visibleRows = await exactVisibleRows({\n id: options.id,\n version: options.version,\n env: options.env,\n fetchImpl: options.fetchImpl,\n timeoutMs,\n });\n\n if (visibleRows.length > 0) {\n return {\n status: 'success',\n operation: 'update',\n mode: 'update',\n transport: 'save_lifecycle_model_bundle',\n response: await invokeSaveLifecyclemodelBundle({\n plan: buildLifecyclemodelBundlePlan({\n id: options.id,\n version: options.version,\n payload: options.payload,\n metadata: options.metadata,\n mode: 'update',\n }),\n env: options.env,\n fetchImpl: options.fetchImpl,\n timeoutMs,\n }),\n };\n }\n\n try {\n return {\n status: 'success',\n operation: 'create',\n mode: 'create',\n transport: 'save_lifecycle_model_bundle',\n response: await invokeSaveLifecyclemodelBundle({\n plan: buildLifecyclemodelBundlePlan({\n id: options.id,\n version: options.version,\n payload: options.payload,\n metadata: options.metadata,\n mode: 'create',\n }),\n env: options.env,\n fetchImpl: options.fetchImpl,\n timeoutMs,\n }),\n };\n } catch (error) {\n if (!(error instanceof CliError) || error.code !== 'VERSION_CONFLICT') {\n throw error;\n }\n\n const visibleAfterConflict = await exactVisibleRows({\n id: options.id,\n version: options.version,\n env: options.env,\n fetchImpl: options.fetchImpl,\n timeoutMs,\n });\n if (visibleAfterConflict.length === 0) {\n throw error;\n }\n\n return {\n status: 'success',\n operation: 'update_after_create_conflict',\n mode: 'update',\n transport: 'save_lifecycle_model_bundle',\n response: await invokeSaveLifecyclemodelBundle({\n plan: buildLifecyclemodelBundlePlan({\n id: options.id,\n version: options.version,\n payload: options.payload,\n metadata: options.metadata,\n mode: 'update',\n }),\n env: options.env,\n fetchImpl: options.fetchImpl,\n timeoutMs,\n }),\n };\n }\n}\n\nexport const __testInternals = {\n buildLifecyclemodelBundlePlan,\n deriveLifecyclemodelJsonTg,\n exactVisibleRows,\n firstNonEmpty,\n matchingResultingProcessType,\n mergeLifecyclemodelJsonTg,\n parseVisibleRows,\n requireLifecyclemodelBundleResponse,\n trimToken,\n};\n"]}
1
+ {"version":3,"file":"lifecyclemodel-bundle-save.js","sourceRoot":"","sources":["../../../src/lib/lifecyclemodel-bundle-save.ts"],"names":[],"mappings":"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","sourcesContent":["// data-api-relations: lifecyclemodels\nimport { CliError } from './errors.js';\nimport type { FetchLike } from './http.js';\nimport {\n buildSupabaseAuthHeaders,\n createSupabaseDataClient,\n deriveSupabaseFunctionsBaseUrl,\n requireSupabaseRestRuntime,\n runSupabaseArrayQuery,\n} from './supabase-client.js';\nimport { createSupabaseDataRuntime } from './supabase-session.js';\n\ntype JsonObject = Record<string, unknown>;\n\nconst DEFAULT_TIMEOUT_MS = 10_000;\nconst DEFAULT_NODE_WIDTH = 350;\nconst DEFAULT_NODE_HEIGHT = 120;\nconst DEFAULT_NODE_GAP_X = 420;\nconst DEFAULT_NODE_GAP_Y = 180;\n\nexport type LifecyclemodelPublishMetadata = {\n json_tg?: JsonObject;\n processMutations?: JsonObject[];\n ruleVerification?: boolean;\n};\n\ntype LifecyclemodelVisibleRow = {\n id: string;\n version: string;\n};\n\ntype LifecyclemodelBundlePlan = {\n mode: 'create' | 'update';\n modelId: string;\n version?: string;\n parent: {\n jsonOrdered: JsonObject;\n jsonTg: JsonObject;\n ruleVerification?: boolean;\n };\n processMutations: JsonObject[];\n};\n\nexport type LifecyclemodelBundleWriteResult = {\n status: 'success';\n operation: 'create' | 'update' | 'update_after_create_conflict';\n mode: 'create' | 'update';\n transport: 'save_lifecycle_model_bundle';\n response: JsonObject;\n};\n\nfunction isRecord(value: unknown): value is JsonObject {\n return typeof value === 'object' && value !== null && !Array.isArray(value);\n}\n\nfunction ensureList<T = unknown>(value: unknown): T[] {\n if (value === undefined || value === null) {\n return [];\n }\n return Array.isArray(value) ? (value as T[]) : ([value] as T[]);\n}\n\nfunction cloneJson<T>(value: T): T {\n return JSON.parse(JSON.stringify(value)) as T;\n}\n\nfunction trimToken(value: unknown): string | null {\n if (typeof value !== 'string') {\n return null;\n }\n\n const trimmed = value.trim();\n return trimmed || null;\n}\n\nfunction firstNonEmpty(...values: unknown[]): string | null {\n for (const value of values) {\n const trimmed = trimToken(value);\n if (trimmed) {\n return trimmed;\n }\n }\n return null;\n}\n\nfunction lifecyclemodelRoot(payload: JsonObject): JsonObject {\n return isRecord(payload.lifeCycleModelDataSet) ? payload.lifeCycleModelDataSet : payload;\n}\n\nfunction dataSetInformation(root: JsonObject): JsonObject {\n const info = isRecord(root.lifeCycleModelInformation) ? root.lifeCycleModelInformation : {};\n return isRecord(info.dataSetInformation) ? info.dataSetInformation : {};\n}\n\nfunction technology(root: JsonObject): JsonObject {\n const info = isRecord(root.lifeCycleModelInformation) ? root.lifeCycleModelInformation : {};\n return isRecord(info.technology) ? info.technology : {};\n}\n\nfunction processesBlock(root: JsonObject): JsonObject {\n const tech = technology(root);\n return isRecord(tech.processes) ? tech.processes : {};\n}\n\nfunction extractProcessInstances(payload: JsonObject): JsonObject[] {\n return ensureList<JsonObject>(processesBlock(lifecyclemodelRoot(payload)).processInstance).filter(\n isRecord,\n );\n}\n\nfunction outputConnections(instance: JsonObject): JsonObject[] {\n const connections = isRecord(instance.connections) ? instance.connections : {};\n return ensureList<JsonObject>(connections.outputExchange).filter(isRecord);\n}\n\nfunction matchingResultingProcessType(\n instance: JsonObject,\n payload: JsonObject,\n): 'primary' | 'secondary' {\n const ref = isRecord(instance.referenceToProcess) ? instance.referenceToProcess : {};\n const resulting = isRecord(\n dataSetInformation(lifecyclemodelRoot(payload)).referenceToResultingProcess,\n )\n ? (dataSetInformation(lifecyclemodelRoot(payload)).referenceToResultingProcess as JsonObject)\n : {};\n const processId = trimToken(ref['@refObjectId']);\n const processVersion = trimToken(ref['@version']);\n const resultingId = trimToken(resulting['@refObjectId']);\n const resultingVersion = trimToken(resulting['@version']);\n\n if (\n processId &&\n processId === resultingId &&\n (!resultingVersion || processVersion === resultingVersion)\n ) {\n return 'primary';\n }\n\n return 'secondary';\n}\n\nfunction displayName(reference: JsonObject): unknown {\n if (reference.name !== undefined) {\n return cloneJson(reference.name);\n }\n\n if (reference['common:shortDescription'] !== undefined) {\n return cloneJson(reference['common:shortDescription']);\n }\n\n return undefined;\n}\n\nfunction deriveSubmodels(payload: JsonObject): JsonObject[] {\n const submodels: Array<JsonObject | null> = extractProcessInstances(payload).map(\n (instance, index) => {\n const reference = isRecord(instance.referenceToProcess) ? instance.referenceToProcess : {};\n const id = trimToken(reference['@refObjectId']);\n if (!id) {\n return null;\n }\n\n const version = trimToken(reference['@version']);\n return {\n id,\n ...(version ? { version } : {}),\n type: matchingResultingProcessType(instance, payload),\n ...(displayName(reference) !== undefined ? { name: displayName(reference) } : {}),\n instanceId: firstNonEmpty(instance['@dataSetInternalID'], `instance-${index + 1}`),\n };\n },\n );\n\n return submodels.filter((value): value is JsonObject => value !== null);\n}\n\nfunction buildNodeLabel(reference: JsonObject, fallback: string): unknown {\n return displayName(reference) ?? fallback;\n}\n\nfunction deriveXflowNodes(payload: JsonObject): JsonObject[] {\n const instances = extractProcessInstances(payload);\n const columnCount = Math.max(1, Math.ceil(Math.sqrt(Math.max(instances.length, 1))));\n\n return instances.map((instance, index) => {\n const reference = isRecord(instance.referenceToProcess) ? instance.referenceToProcess : {};\n const internalId = firstNonEmpty(instance['@dataSetInternalID'], `node-${index + 1}`)!;\n const processId = firstNonEmpty(reference['@refObjectId'], `process-${index + 1}`)!;\n const version = trimToken(reference['@version']);\n const x = (index % columnCount) * DEFAULT_NODE_GAP_X;\n const y = Math.floor(index / columnCount) * DEFAULT_NODE_GAP_Y;\n\n return {\n id: internalId,\n x,\n y,\n width: DEFAULT_NODE_WIDTH,\n height: DEFAULT_NODE_HEIGHT,\n data: {\n id: processId,\n ...(version ? { version } : {}),\n label: buildNodeLabel(reference, processId),\n shortDescription: cloneJson(reference['common:shortDescription'] ?? []),\n },\n };\n });\n}\n\nfunction deriveXflowEdges(payload: JsonObject): JsonObject[] {\n const instances = extractProcessInstances(payload);\n const nodeByInternalId = new Map<string, { processId: string; version: string | null }>(\n instances.map((instance, index) => {\n const reference = isRecord(instance.referenceToProcess) ? instance.referenceToProcess : {};\n return [\n firstNonEmpty(instance['@dataSetInternalID'], `node-${index + 1}`)!,\n {\n processId: firstNonEmpty(reference['@refObjectId'], `process-${index + 1}`)!,\n version: trimToken(reference['@version']),\n },\n ];\n }),\n );\n\n let edgeIndex = 0;\n const edges: JsonObject[] = [];\n\n instances.forEach((instance, index) => {\n const sourceCell = firstNonEmpty(instance['@dataSetInternalID'], `node-${index + 1}`)!;\n const sourceNode = nodeByInternalId.get(sourceCell)!;\n\n outputConnections(instance).forEach((outputExchange) => {\n const flowUuid = trimToken(outputExchange['@flowUUID']);\n const downstreamProcesses = ensureList<JsonObject>(outputExchange.downstreamProcess).filter(\n isRecord,\n );\n\n downstreamProcesses.forEach((downstreamProcess) => {\n const targetCell = trimToken(downstreamProcess['@id']);\n if (!targetCell) {\n return;\n }\n\n const targetNode = nodeByInternalId.get(targetCell) ?? { processId: null, version: null };\n edgeIndex += 1;\n edges.push({\n id: [sourceCell, targetCell, flowUuid ?? `edge-${edgeIndex}`].join(':'),\n source: {\n cell: sourceCell,\n },\n target: {\n cell: targetCell,\n },\n labels: [],\n data: {\n connection: {\n outputExchange: {\n ...(flowUuid ? { '@flowUUID': flowUuid } : {}),\n downstreamProcess: cloneJson(downstreamProcess),\n },\n },\n node: {\n sourceNodeID: sourceCell,\n targetNodeID: targetCell,\n sourceProcessId: sourceNode.processId,\n ...(sourceNode.version ? { sourceProcessVersion: sourceNode.version } : {}),\n ...(targetNode.processId ? { targetProcessId: targetNode.processId } : {}),\n ...(targetNode.version ? { targetProcessVersion: targetNode.version } : {}),\n },\n },\n });\n });\n });\n });\n\n return edges;\n}\n\nexport function deriveLifecyclemodelJsonTg(payload: JsonObject): JsonObject {\n return {\n xflow: {\n nodes: deriveXflowNodes(payload),\n edges: deriveXflowEdges(payload),\n },\n submodels: deriveSubmodels(payload),\n };\n}\n\nfunction mergeLifecyclemodelJsonTg(explicit: JsonObject | null, derived: JsonObject): JsonObject {\n if (!explicit) {\n return derived;\n }\n\n const derivedXflow = isRecord(derived.xflow) ? derived.xflow : {};\n const explicitXflow = isRecord(explicit.xflow) ? explicit.xflow : null;\n\n return {\n ...derived,\n ...cloneJson(explicit),\n xflow: explicitXflow\n ? {\n ...cloneJson(derivedXflow),\n ...cloneJson(explicitXflow),\n nodes: Array.isArray(explicitXflow.nodes)\n ? cloneJson(explicitXflow.nodes)\n : derivedXflow.nodes,\n edges: Array.isArray(explicitXflow.edges)\n ? cloneJson(explicitXflow.edges)\n : derivedXflow.edges,\n }\n : derived.xflow,\n submodels: Array.isArray(explicit.submodels)\n ? cloneJson(explicit.submodels)\n : derived.submodels,\n };\n}\n\nfunction normalizeProcessMutations(value: unknown): JsonObject[] {\n if (value === undefined || value === null) {\n return [];\n }\n\n const mutations = ensureList<JsonObject>(value);\n if (!mutations.every(isRecord)) {\n throw new CliError(\n 'Lifecyclemodel publish metadata expected processMutations to contain JSON objects.',\n {\n code: 'LIFECYCLEMODEL_PROCESS_MUTATIONS_INVALID',\n exitCode: 2,\n details: value,\n },\n );\n }\n\n return cloneJson(mutations);\n}\n\nexport function buildLifecyclemodelBundlePlan(options: {\n id: string;\n version: string;\n payload: JsonObject;\n metadata?: LifecyclemodelPublishMetadata | null;\n mode: 'create' | 'update';\n}): LifecyclemodelBundlePlan {\n const explicitJsonTg = isRecord(options.metadata?.json_tg) ? options.metadata?.json_tg : null;\n const derivedJsonTg = deriveLifecyclemodelJsonTg(options.payload);\n\n return {\n mode: options.mode,\n modelId: options.id,\n ...(options.mode === 'update' ? { version: options.version } : {}),\n parent: {\n jsonOrdered: cloneJson(options.payload),\n jsonTg: mergeLifecyclemodelJsonTg(explicitJsonTg, derivedJsonTg),\n ...(typeof options.metadata?.ruleVerification === 'boolean'\n ? { ruleVerification: options.metadata.ruleVerification }\n : {}),\n },\n processMutations: normalizeProcessMutations(options.metadata?.processMutations),\n };\n}\n\nfunction buildVisibleRowsUrl(restBaseUrl: string, id: string, version: string): string {\n const url = new URL(`${restBaseUrl.replace(/\\/+$/u, '')}/lifecyclemodels`);\n url.searchParams.set('select', 'id,version');\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): LifecyclemodelVisibleRow[] {\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\n return {\n id: trimToken(item.id) ?? '',\n version: trimToken(item.version) ?? '',\n };\n });\n}\n\nasync function exactVisibleRows(options: {\n id: string;\n version: string;\n env: NodeJS.ProcessEnv;\n fetchImpl: FetchLike;\n timeoutMs: number;\n}): Promise<LifecyclemodelVisibleRow[]> {\n const runtime = createSupabaseDataRuntime({\n runtime: requireSupabaseRestRuntime(options.env),\n fetchImpl: options.fetchImpl,\n timeoutMs: options.timeoutMs,\n });\n const { client, restBaseUrl } = createSupabaseDataClient(\n runtime,\n options.fetchImpl,\n options.timeoutMs,\n );\n const url = buildVisibleRowsUrl(restBaseUrl, options.id, options.version);\n const payload = await runSupabaseArrayQuery(\n client\n .from('lifecyclemodels')\n .select('id,version')\n .eq('id', options.id)\n .eq('version', options.version),\n url,\n );\n\n return parseVisibleRows(payload, url);\n}\n\nfunction parseLifecyclemodelBundleJson(rawText: string, url: string): unknown {\n try {\n return JSON.parse(rawText);\n } catch (error) {\n throw new CliError(`Remote response was not valid JSON for ${url}`, {\n code: 'REMOTE_INVALID_JSON',\n exitCode: 1,\n details: String(error),\n });\n }\n}\n\nfunction requireLifecyclemodelBundleResponse(payload: unknown, url: string): JsonObject {\n if (!isRecord(payload)) {\n throw new CliError(`Lifecyclemodel bundle endpoint returned an unexpected payload for ${url}`, {\n code: 'REMOTE_RESPONSE_INVALID',\n exitCode: 1,\n details: payload,\n });\n }\n\n if (payload.ok === false) {\n const code = trimToken(payload.code) ?? 'REMOTE_APPLICATION_ERROR';\n const message =\n trimToken(payload.message) ?? `Remote application response returned ok:false for ${url}`;\n throw new CliError(message, {\n code,\n exitCode: 1,\n details: payload.details ?? payload,\n });\n }\n\n return payload;\n}\n\nfunction throwLifecyclemodelBundleHttpError(\n status: number,\n payload: unknown,\n rawText: string,\n url: string,\n): never {\n if (isRecord(payload)) {\n const code = trimToken(payload.code);\n const message = trimToken(payload.message);\n if (code && message) {\n throw new CliError(message, {\n code,\n exitCode: 1,\n details: payload.details ?? payload,\n });\n }\n }\n\n throw new CliError(`HTTP ${status} returned from ${url}`, {\n code: 'REMOTE_REQUEST_FAILED',\n exitCode: 1,\n details: rawText,\n });\n}\n\nasync function invokeSaveLifecyclemodelBundle(options: {\n plan: LifecyclemodelBundlePlan;\n env: NodeJS.ProcessEnv;\n fetchImpl: FetchLike;\n timeoutMs: number;\n}): Promise<JsonObject> {\n const runtime = createSupabaseDataRuntime({\n runtime: requireSupabaseRestRuntime(options.env),\n fetchImpl: options.fetchImpl,\n timeoutMs: options.timeoutMs,\n });\n const accessToken = await runtime.getAccessToken();\n const url = `${deriveSupabaseFunctionsBaseUrl(runtime.apiBaseUrl)}/save_lifecycle_model_bundle`;\n const response = await options.fetchImpl(url, {\n method: 'POST',\n headers: {\n ...buildSupabaseAuthHeaders(runtime.publishableKey, accessToken),\n 'Content-Type': 'application/json',\n },\n body: JSON.stringify(options.plan),\n signal: AbortSignal.timeout(options.timeoutMs),\n });\n const rawText = await response.text();\n const contentType = response.headers.get('content-type') ?? '';\n const payload =\n contentType.includes('application/json') && rawText.length > 0\n ? parseLifecyclemodelBundleJson(rawText, url)\n : rawText;\n\n if (!response.ok) {\n throwLifecyclemodelBundleHttpError(response.status, payload, rawText, url);\n }\n\n return requireLifecyclemodelBundleResponse(payload, url);\n}\n\nexport async function syncLifecyclemodelBundleRecord(options: {\n id: string;\n version: string;\n payload: JsonObject;\n metadata?: LifecyclemodelPublishMetadata | null;\n env: NodeJS.ProcessEnv;\n fetchImpl: FetchLike;\n timeoutMs?: number;\n}): Promise<LifecyclemodelBundleWriteResult> {\n const timeoutMs = options.timeoutMs ?? DEFAULT_TIMEOUT_MS;\n const visibleRows = await exactVisibleRows({\n id: options.id,\n version: options.version,\n env: options.env,\n fetchImpl: options.fetchImpl,\n timeoutMs,\n });\n\n if (visibleRows.length > 0) {\n return {\n status: 'success',\n operation: 'update',\n mode: 'update',\n transport: 'save_lifecycle_model_bundle',\n response: await invokeSaveLifecyclemodelBundle({\n plan: buildLifecyclemodelBundlePlan({\n id: options.id,\n version: options.version,\n payload: options.payload,\n metadata: options.metadata,\n mode: 'update',\n }),\n env: options.env,\n fetchImpl: options.fetchImpl,\n timeoutMs,\n }),\n };\n }\n\n try {\n return {\n status: 'success',\n operation: 'create',\n mode: 'create',\n transport: 'save_lifecycle_model_bundle',\n response: await invokeSaveLifecyclemodelBundle({\n plan: buildLifecyclemodelBundlePlan({\n id: options.id,\n version: options.version,\n payload: options.payload,\n metadata: options.metadata,\n mode: 'create',\n }),\n env: options.env,\n fetchImpl: options.fetchImpl,\n timeoutMs,\n }),\n };\n } catch (error) {\n if (!(error instanceof CliError) || error.code !== 'VERSION_CONFLICT') {\n throw error;\n }\n\n const visibleAfterConflict = await exactVisibleRows({\n id: options.id,\n version: options.version,\n env: options.env,\n fetchImpl: options.fetchImpl,\n timeoutMs,\n });\n if (visibleAfterConflict.length === 0) {\n throw error;\n }\n\n return {\n status: 'success',\n operation: 'update_after_create_conflict',\n mode: 'update',\n transport: 'save_lifecycle_model_bundle',\n response: await invokeSaveLifecyclemodelBundle({\n plan: buildLifecyclemodelBundlePlan({\n id: options.id,\n version: options.version,\n payload: options.payload,\n metadata: options.metadata,\n mode: 'update',\n }),\n env: options.env,\n fetchImpl: options.fetchImpl,\n timeoutMs,\n }),\n };\n }\n}\n\nexport const __testInternals = {\n buildLifecyclemodelBundlePlan,\n deriveLifecyclemodelJsonTg,\n exactVisibleRows,\n firstNonEmpty,\n matchingResultingProcessType,\n mergeLifecyclemodelJsonTg,\n parseVisibleRows,\n requireLifecyclemodelBundleResponse,\n trimToken,\n};\n"]}