{"version":3,"file":"mergeDatasetChanges.mjs","names":[],"sources":["../src/mergeDatasetChanges.ts"],"sourcesContent":["import type { DatasetChanges } from \"@ldo/rdf-utils\";\nimport type { BaseQuad } from \"@rdfjs/types\";\n\n/**\n * Merges a new change into an original change\n * @param originalChange\n * @param newChange\n */\nexport function mergeDatasetChanges<InAndOutQuad extends BaseQuad>(\n  originalChange: DatasetChanges<InAndOutQuad>,\n  newChange: DatasetChanges<InAndOutQuad>,\n): void {\n  // Add added\n  if (newChange.added) {\n    if (originalChange.added) {\n      originalChange.added.addAll(newChange.added);\n    } else {\n      originalChange.added = newChange.added;\n    }\n    // Delete from removed if present\n    const changesIntersection = originalChange.removed?.intersection(\n      newChange.added,\n    );\n    if (changesIntersection && changesIntersection.size > 0) {\n      originalChange.removed =\n        originalChange.removed?.difference(changesIntersection);\n    }\n  }\n  // Add removed\n  if (newChange.removed) {\n    if (originalChange.removed) {\n      originalChange.removed.addAll(newChange.removed);\n    } else {\n      originalChange.removed = newChange.removed;\n    }\n    // Delete from added if present\n    const changesIntersection = originalChange.added?.intersection(\n      newChange.removed,\n    );\n    if (changesIntersection && changesIntersection.size > 0) {\n      originalChange.added =\n        originalChange.added?.difference(changesIntersection);\n    }\n  }\n\n  // Make undefined if size is zero\n  if (originalChange.added && originalChange.added.size === 0) {\n    originalChange.added = undefined;\n  }\n  if (originalChange.removed && originalChange.removed.size === 0) {\n    originalChange.removed = undefined;\n  }\n}\n"],"mappings":";;;;;;AAQA,SAAgB,oBACd,gBACA,WACM;AAEN,KAAI,UAAU,OAAO;AACnB,MAAI,eAAe,MACjB,gBAAe,MAAM,OAAO,UAAU,MAAM;MAE5C,gBAAe,QAAQ,UAAU;EAGnC,MAAM,sBAAsB,eAAe,SAAS,aAClD,UAAU,MACX;AACD,MAAI,uBAAuB,oBAAoB,OAAO,EACpD,gBAAe,UACb,eAAe,SAAS,WAAW,oBAAoB;;AAI7D,KAAI,UAAU,SAAS;AACrB,MAAI,eAAe,QACjB,gBAAe,QAAQ,OAAO,UAAU,QAAQ;MAEhD,gBAAe,UAAU,UAAU;EAGrC,MAAM,sBAAsB,eAAe,OAAO,aAChD,UAAU,QACX;AACD,MAAI,uBAAuB,oBAAoB,OAAO,EACpD,gBAAe,QACb,eAAe,OAAO,WAAW,oBAAoB;;AAK3D,KAAI,eAAe,SAAS,eAAe,MAAM,SAAS,EACxD,gBAAe,QAAQ,KAAA;AAEzB,KAAI,eAAe,WAAW,eAAe,QAAQ,SAAS,EAC5D,gBAAe,UAAU,KAAA"}