{"version":3,"file":"TrackingSetProxy.mjs","names":[],"sources":["../../src/trackingProxy/TrackingSetProxy.ts"],"sourcesContent":["import { createNewSetProxy, type SetProxy } from \"@ldo/jsonld-dataset-proxy\";\nimport type { TrackingProxyContext } from \"./TrackingProxyContext\";\nimport type { QuadMatch } from \"@ldo/rdf-utils\";\n\n/**\n * @internal\n *\n * Creates a tracking proxy for a set, a proxy that tracks the fields that have\n * been accessed.\n */\nexport function createTrackingSetProxy(\n  proxyContext: TrackingProxyContext,\n  quadMatch: QuadMatch,\n  isSubjectOriented?: boolean,\n  isLangStringSet?: boolean,\n): SetProxy {\n  const baseSetProxy = createNewSetProxy(\n    quadMatch,\n    isSubjectOriented ?? false,\n    proxyContext,\n    isLangStringSet,\n  );\n\n  return new Proxy(baseSetProxy, {\n    get: (target: SetProxy, key: string | symbol, receiver) => {\n      if (trackingMethods.has(key)) {\n        proxyContext.addListener(quadMatch);\n      } else if (disallowedMethods.has(key)) {\n        console.warn(\n          \"You've attempted to modify 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      }\n      return Reflect.get(target, key, receiver);\n    },\n  });\n}\n\nconst trackingMethods = new Set([\n  \"has\",\n  \"size\",\n  \"entries\",\n  \"keys\",\n  \"values\",\n  Symbol.iterator,\n  \"every\",\n  \"every\",\n  \"some\",\n  \"forEach\",\n  \"map\",\n  \"reduce\",\n  \"toArray\",\n  \"toJSON\",\n  \"difference\",\n  \"intersection\",\n  \"isDisjointFrom\",\n  \"isSubsetOf\",\n  \"isSupersetOf\",\n  \"symmetricDifference\",\n  \"union\",\n]);\n\nconst disallowedMethods = new Set<string | symbol>([\"add\", \"clear\", \"delete\"]);\n"],"mappings":";;;;;;;;AAUA,SAAgB,uBACd,cACA,WACA,mBACA,iBACU;CACV,MAAM,eAAe,kBACnB,WACA,qBAAqB,OACrB,cACA,gBACD;AAED,QAAO,IAAI,MAAM,cAAc,EAC7B,MAAM,QAAkB,KAAsB,aAAa;AACzD,MAAI,gBAAgB,IAAI,IAAI,CAC1B,cAAa,YAAY,UAAU;WAC1B,kBAAkB,IAAI,IAAI,CACnC,SAAQ,KACN,8PACD;AAEH,SAAO,QAAQ,IAAI,QAAQ,KAAK,SAAS;IAE5C,CAAC;;AAGJ,MAAM,kBAAkB,IAAI,IAAI;CAC9B;CACA;CACA;CACA;CACA;CACA,OAAO;CACP;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACD,CAAC;AAEF,MAAM,oBAAoB,IAAI,IAAqB;CAAC;CAAO;CAAS;CAAS,CAAC"}