{"version":3,"file":"TrackingSubjectProxy.mjs","names":[],"sources":["../../src/trackingProxy/TrackingSubjectProxy.ts"],"sourcesContent":["import type { SubjectProxyTarget } from \"@ldo/jsonld-dataset-proxy\";\nimport {\n  createSubjectHandler,\n  type SubjectProxy,\n} from \"@ldo/jsonld-dataset-proxy\";\nimport type { BlankNode, NamedNode } from \"@rdfjs/types\";\nimport type { TrackingProxyContext } from \"./TrackingProxyContext\";\nimport { namedNode } from \"@ldo/rdf-utils\";\n\n/**\n * @internal\n *\n * Creates a tracking proxy for a single value, a proxy that tracks the fields\n * that have been accessed.\n */\nexport function createTrackingSubjectProxy(\n  proxyContext: TrackingProxyContext,\n  node: NamedNode | BlankNode,\n): SubjectProxy {\n  const baseHandler = createSubjectHandler(proxyContext);\n  const oldGetFunction = baseHandler.get;\n  const trackingProxyGetFunction: ProxyHandler<SubjectProxyTarget>[\"get\"] = (\n    target: SubjectProxyTarget,\n    key: string | symbol,\n    receiver,\n  ) => {\n    const subject = target[\"@id\"];\n    const rdfTypes = proxyContext.getRdfType(subject);\n    if (typeof key === \"symbol\") {\n      // Do Nothing\n    } else if (key === \"@id\") {\n      proxyContext.addListener([subject, null, null, null]);\n    } else if (!proxyContext.contextUtil.isSet(key, rdfTypes)) {\n      const predicate = namedNode(\n        proxyContext.contextUtil.keyToIri(key, rdfTypes),\n      );\n      proxyContext.addListener([subject, predicate, null, null]);\n    }\n    return oldGetFunction && oldGetFunction(target, key, receiver);\n  };\n  baseHandler.get = trackingProxyGetFunction;\n  baseHandler.set = () => {\n    console.warn(\n      \"You've attempted to set a value on a Linked Data Object from the useSubject, useMatchingSubject, or useMatchingObject hooks. These linked data objects should only be used to render data, not modify it. To modify data, use the `changeData` function.\",\n    );\n    return true;\n  };\n  return new Proxy({ \"@id\": node }, baseHandler) as unknown as SubjectProxy;\n}\n"],"mappings":";;;;;;;;;AAeA,SAAgB,2BACd,cACA,MACc;CACd,MAAM,cAAc,qBAAqB,aAAa;CACtD,MAAM,iBAAiB,YAAY;CACnC,MAAM,4BACJ,QACA,KACA,aACG;EACH,MAAM,UAAU,OAAO;EACvB,MAAM,WAAW,aAAa,WAAW,QAAQ;AACjD,MAAI,OAAO,QAAQ,UAAU,YAElB,QAAQ,MACjB,cAAa,YAAY;GAAC;GAAS;GAAM;GAAM;GAAK,CAAC;WAC5C,CAAC,aAAa,YAAY,MAAM,KAAK,SAAS,EAAE;GACzD,MAAM,YAAY,UAChB,aAAa,YAAY,SAAS,KAAK,SAAS,CACjD;AACD,gBAAa,YAAY;IAAC;IAAS;IAAW;IAAM;IAAK,CAAC;;AAE5D,SAAO,kBAAkB,eAAe,QAAQ,KAAK,SAAS;;AAEhE,aAAY,MAAM;AAClB,aAAY,YAAY;AACtB,UAAQ,KACN,2PACD;AACD,SAAO;;AAET,QAAO,IAAI,MAAM,EAAE,OAAO,MAAM,EAAE,YAAY"}