@graffiti-garden/wrapper-vue 0.0.1 → 0.0.3

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.
package/README.md ADDED
@@ -0,0 +1,5 @@
1
+ # Graffiti Wrapper for Vue.js
2
+
3
+ ## TODO
4
+
5
+ - When repolling use `lastModified`.
@@ -1 +1 @@
1
- {"version":3,"file":"plugin.js","sources":["../src/injections.ts","../src/composables.ts","../src/Discover.vue","../src/plugin.ts"],"sourcesContent":["import { inject } from \"vue\";\nimport type { InjectionKey, Ref } from \"vue\";\nimport type { Graffiti, GraffitiSession } from \"@graffiti-garden/api\";\n\nexport const graffitiInjectKey = Symbol() as InjectionKey<Graffiti>;\nexport const graffitiSessionInjectKey = Symbol() as InjectionKey<\n Ref<GraffitiSession | undefined>\n>;\n\nexport function useGraffiti() {\n const graffiti = inject(graffitiInjectKey);\n if (!graffiti) {\n throw new Error(\"No Graffiti instance provided\");\n }\n return graffiti;\n}\n\nexport function useGraffitiSession() {\n const session = inject(graffitiSessionInjectKey);\n if (!session) {\n throw new Error(\"No Graffiti session provided\");\n }\n return session;\n}\n","import {\n onScopeDispose,\n ref,\n toValue,\n watch,\n type MaybeRefOrGetter,\n} from \"vue\";\nimport type {\n GraffitiObject,\n GraffitiSession,\n JSONSchema4,\n} from \"@graffiti-garden/api\";\nimport { useGraffiti, useGraffitiSession } from \"./injections\";\n\n/**\n * A reactive version of the [`Graffiti.discover`](https://api.graffiti.garden/classes/Graffiti.html#discover)\n * method.\n *\n * @returns An object containing\n * - `results`: a reactive array of Graffiti objects\n * - `poll`: a method to poll for new results\n * - `isPolling`: a boolean ref indicating if the poll is currently running\n */\nexport function useGraffitiDiscover<Schema extends JSONSchema4>(\n /**\n * A list of channels to discover objects from.\n * It may be a Vue ref or getter.\n */\n channels: MaybeRefOrGetter<string[]>,\n /**\n * A [JSON Schema](https://json-schema.org/) object describing the schema\n * of the objects to discover. All other objects will be filtered out\n * and the output will be typed as `GraffitiObject<Schema>`.\n */\n schema: MaybeRefOrGetter<Schema>,\n /**\n * A Graffiti session object. If not provided, the\n * global plugin session will be used.\n */\n session?: MaybeRefOrGetter<GraffitiSession>,\n) {\n const graffiti = useGraffiti();\n const sessionInjected = useGraffitiSession();\n\n const results = ref<(GraffitiObject<Schema> & { tombstone: false })[]>([]);\n const resultsRaw = new Map<string, GraffitiObject<Schema>>();\n function flattenResults() {\n results.value = Array.from(resultsRaw.values()).reduce<\n (GraffitiObject<Schema> & { tombstone: false })[]\n >((acc, o) => {\n const { tombstone, value } = o;\n if (!tombstone) {\n acc.push({ ...o, tombstone, value });\n }\n return acc;\n }, []);\n }\n\n function onValue(value: GraffitiObject<Schema>) {\n const url = graffiti.objectToUri(value);\n const existing = resultsRaw.get(url);\n if (\n existing &&\n (existing.lastModified > value.lastModified ||\n (existing.lastModified === value.lastModified && !existing.tombstone))\n ) {\n return;\n }\n resultsRaw.set(url, value);\n }\n\n const channelsGetter = () => toValue(channels);\n const schemaGetter = () => toValue(schema);\n const sessionGetter = () => toValue(session) ?? sessionInjected?.value;\n\n let localIterator:\n | ReturnType<typeof graffiti.synchronize<Schema>>\n | undefined = undefined;\n async function pollLocalModifications() {\n localIterator?.return();\n localIterator = graffiti.synchronize(\n channelsGetter(),\n schemaGetter(),\n sessionGetter(),\n );\n for await (const value of localIterator) {\n if (value.error) {\n console.error(value.error);\n continue;\n }\n onValue(value.value);\n flattenResults();\n }\n }\n\n const isPolling = ref(false);\n let iterator: ReturnType<typeof graffiti.discover<Schema>> | undefined =\n undefined;\n async function poll() {\n iterator?.return();\n isPolling.value = true;\n\n try {\n iterator = graffiti.discover(\n channelsGetter(),\n schemaGetter(),\n sessionGetter(),\n );\n } catch (e) {\n console.error(e);\n flattenResults();\n isPolling.value = false;\n return;\n }\n\n for await (const result of iterator) {\n if (result.error) {\n console.error(result.error);\n continue;\n }\n onValue(result.value);\n flattenResults();\n }\n\n isPolling.value = false;\n }\n\n watch(\n [channelsGetter, schemaGetter, sessionGetter],\n () => {\n resultsRaw.clear();\n flattenResults();\n poll();\n pollLocalModifications();\n },\n\n {\n immediate: true,\n },\n );\n onScopeDispose(() => localIterator?.return());\n\n return {\n results,\n poll,\n isPolling,\n };\n}\n","<script setup lang=\"ts\" generic=\"Schema extends JSONSchema4\">\nimport { toRef } from \"vue\";\nimport type { GraffitiSession, JSONSchema4 } from \"@graffiti-garden/api\";\nimport { useGraffitiDiscover } from \"./composables\";\n\nconst props = defineProps<{\n channels: string[];\n schema: Schema;\n session?: GraffitiSession;\n}>();\n\nconst { results, poll, isPolling } = useGraffitiDiscover<Schema>(\n toRef(props, \"channels\"),\n toRef(props, \"schema\"),\n toRef(props, \"session\"),\n);\n</script>\n\n<template>\n <slot :results=\"results\" :poll=\"poll\" :isPolling=\"isPolling\"></slot>\n</template>\n","import type { App, Plugin, Ref } from \"vue\";\nimport { ref } from \"vue\";\nimport Discover from \"./Discover.vue\";\nimport type {\n GraffitiFactory,\n Graffiti,\n GraffitiSession,\n GraffitiLoginEvent,\n GraffitiLogoutEvent,\n} from \"@graffiti-garden/api\";\nimport { graffitiInjectKey, graffitiSessionInjectKey } from \"./injections\";\n\ndeclare module \"vue\" {\n export interface ComponentCustomProperties {\n $graffiti: Graffiti;\n $graffitiSession: Ref<GraffitiSession | undefined>;\n }\n\n export interface GlobalComponents {\n GraffitiDiscover: typeof Discover;\n }\n}\n\nexport interface GraffitiPluginOptions {\n useGraffiti: GraffitiFactory;\n}\n\nexport const GraffitiPlugin: Plugin<GraffitiPluginOptions> = {\n install(app: App, options: GraffitiPluginOptions) {\n const graffiti = options.useGraffiti();\n const graffitiSession = ref<GraffitiSession | undefined>(undefined);\n graffiti.sessionEvents.addEventListener(\"login\", (evt) => {\n const detail = (evt as GraffitiLoginEvent).detail;\n if (detail.error) {\n console.error(\"Error logging in:\");\n console.error(detail.error);\n return;\n } else {\n graffitiSession.value = detail.session;\n }\n });\n graffiti.sessionEvents.addEventListener(\"logout\", (evt) => {\n const detail = (evt as GraffitiLogoutEvent).detail;\n if (detail.error) {\n console.error(\"Error logging out:\");\n console.error(detail.error);\n } else {\n graffitiSession.value = undefined;\n }\n });\n\n app.provide(graffitiInjectKey, graffiti);\n app.provide(graffitiSessionInjectKey, graffitiSession);\n\n app.component(\"GraffitiDiscover\", Discover);\n app.config.globalProperties.$graffiti = graffiti;\n app.config.globalProperties.$graffitiSession = graffitiSession;\n },\n};\n\nexport * from \"./composables\";\nexport * from \"./injections\";\nexport { Discover as GraffitiDiscover };\n"],"names":["graffitiInjectKey","graffitiSessionInjectKey","useGraffiti","graffiti","inject","useGraffitiSession","session","useGraffitiDiscover","channels","schema","sessionInjected","results","ref","resultsRaw","flattenResults","acc","o","tombstone","value","onValue","url","existing","channelsGetter","toValue","schemaGetter","sessionGetter","localIterator","pollLocalModifications","isPolling","iterator","poll","result","watch","onScopeDispose","props","__props","toRef","GraffitiPlugin","app","options","graffitiSession","evt","detail","Discover"],"mappings":"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"}
1
+ {"version":3,"file":"plugin.js","sources":["../src/injections.ts","../src/composables.ts","../src/Discover.vue","../src/plugin.ts"],"sourcesContent":["import { inject } from \"vue\";\nimport type { InjectionKey, Ref } from \"vue\";\nimport type { Graffiti, GraffitiSession } from \"@graffiti-garden/api\";\n\nexport const graffitiInjectKey = Symbol() as InjectionKey<Graffiti>;\nexport const graffitiSessionInjectKey = Symbol() as InjectionKey<\n Ref<GraffitiSession | undefined>\n>;\n\nexport function useGraffiti() {\n const graffiti = inject(graffitiInjectKey);\n if (!graffiti) {\n throw new Error(\"No Graffiti instance provided\");\n }\n return graffiti;\n}\n\nexport function useGraffitiSession() {\n const session = inject(graffitiSessionInjectKey);\n if (!session) {\n throw new Error(\"No Graffiti session provided\");\n }\n return session;\n}\n","import {\n onScopeDispose,\n ref,\n toValue,\n watch,\n type MaybeRefOrGetter,\n} from \"vue\";\nimport type {\n GraffitiObject,\n GraffitiSession,\n JSONSchema4,\n} from \"@graffiti-garden/api\";\nimport { useGraffiti, useGraffitiSession } from \"./injections\";\n\n/**\n * A reactive version of the [`Graffiti.discover`](https://api.graffiti.garden/classes/Graffiti.html#discover)\n * method.\n *\n * @returns An object containing\n * - `results`: a reactive array of Graffiti objects\n * - `poll`: a method to poll for new results\n * - `isPolling`: a boolean ref indicating if the poll is currently running\n */\nexport function useGraffitiDiscover<Schema extends JSONSchema4>(\n /**\n * A list of channels to discover objects from.\n * It may be a Vue ref or getter.\n */\n channels: MaybeRefOrGetter<string[]>,\n /**\n * A [JSON Schema](https://json-schema.org/) object describing the schema\n * of the objects to discover. All other objects will be filtered out\n * and the output will be typed as `GraffitiObject<Schema>`.\n */\n schema: MaybeRefOrGetter<Schema>,\n /**\n * A Graffiti session object. If not provided, the\n * global plugin session will be used.\n */\n session?: MaybeRefOrGetter<GraffitiSession | undefined>,\n) {\n const graffiti = useGraffiti();\n const sessionInjected = useGraffitiSession();\n\n const results = ref<(GraffitiObject<Schema> & { tombstone: false })[]>([]);\n const resultsRaw = new Map<string, GraffitiObject<Schema>>();\n function flattenResults() {\n results.value = Array.from(resultsRaw.values()).reduce<\n (GraffitiObject<Schema> & { tombstone: false })[]\n >((acc, o) => {\n const { tombstone, value } = o;\n if (!tombstone) {\n acc.push({ ...o, tombstone, value });\n }\n return acc;\n }, []);\n }\n\n function onValue(value: GraffitiObject<Schema>) {\n const url = graffiti.objectToUri(value);\n const existing = resultsRaw.get(url);\n if (\n existing &&\n (existing.lastModified > value.lastModified ||\n (existing.lastModified === value.lastModified && !existing.tombstone))\n ) {\n return;\n }\n resultsRaw.set(url, value);\n }\n\n const channelsGetter = () => toValue(channels);\n const schemaGetter = () => toValue(schema);\n const sessionGetter = () => toValue(session) ?? sessionInjected?.value;\n\n let localIterator:\n | ReturnType<typeof graffiti.synchronize<Schema>>\n | undefined = undefined;\n async function pollLocalModifications() {\n localIterator?.return();\n localIterator = graffiti.synchronize(\n channelsGetter(),\n schemaGetter(),\n sessionGetter(),\n );\n for await (const value of localIterator) {\n if (value.error) {\n console.error(value.error);\n continue;\n }\n onValue(value.value);\n flattenResults();\n }\n }\n\n const isPolling = ref(false);\n let iterator: ReturnType<typeof graffiti.discover<Schema>> | undefined =\n undefined;\n async function poll() {\n iterator?.return();\n isPolling.value = true;\n\n try {\n iterator = graffiti.discover(\n channelsGetter(),\n schemaGetter(),\n sessionGetter(),\n );\n } catch (e) {\n console.error(e);\n flattenResults();\n isPolling.value = false;\n return;\n }\n\n for await (const result of iterator) {\n if (result.error) {\n console.error(result.error);\n continue;\n }\n onValue(result.value);\n flattenResults();\n }\n\n isPolling.value = false;\n }\n\n watch(\n [channelsGetter, schemaGetter, sessionGetter],\n () => {\n resultsRaw.clear();\n flattenResults();\n poll();\n pollLocalModifications();\n },\n\n {\n immediate: true,\n },\n );\n onScopeDispose(() => localIterator?.return());\n\n return {\n results,\n poll,\n isPolling,\n };\n}\n","<script setup lang=\"ts\" generic=\"Schema extends JSONSchema4\">\nimport { toRef } from \"vue\";\nimport type { GraffitiSession, JSONSchema4 } from \"@graffiti-garden/api\";\nimport { useGraffitiDiscover } from \"./composables\";\n\nconst props = defineProps<{\n channels: string[];\n schema: Schema;\n session?: GraffitiSession;\n}>();\n\nconst { results, poll, isPolling } = useGraffitiDiscover<Schema>(\n toRef(props, \"channels\"),\n toRef(props, \"schema\"),\n toRef(props, \"session\"),\n);\n</script>\n\n<template>\n <slot :results=\"results\" :poll=\"poll\" :isPolling=\"isPolling\"></slot>\n</template>\n","import type { App, Plugin, Ref } from \"vue\";\nimport { ref } from \"vue\";\nimport Discover from \"./Discover.vue\";\nimport type {\n GraffitiFactory,\n Graffiti,\n GraffitiSession,\n GraffitiLoginEvent,\n GraffitiLogoutEvent,\n} from \"@graffiti-garden/api\";\nimport { graffitiInjectKey, graffitiSessionInjectKey } from \"./injections\";\n\ndeclare module \"vue\" {\n export interface ComponentCustomProperties {\n $graffiti: Graffiti;\n $graffitiSession: Ref<GraffitiSession | undefined>;\n }\n\n export interface GlobalComponents {\n GraffitiDiscover: typeof Discover;\n }\n}\n\nexport interface GraffitiPluginOptions {\n useGraffiti: GraffitiFactory;\n}\n\nexport const GraffitiPlugin: Plugin<GraffitiPluginOptions> = {\n install(app: App, options: GraffitiPluginOptions) {\n const graffiti = options.useGraffiti();\n const graffitiSession = ref<GraffitiSession | undefined>(undefined);\n graffiti.sessionEvents.addEventListener(\"login\", (evt) => {\n const detail = (evt as GraffitiLoginEvent).detail;\n if (detail.error) {\n console.error(\"Error logging in:\");\n console.error(detail.error);\n return;\n } else {\n graffitiSession.value = detail.session;\n }\n });\n graffiti.sessionEvents.addEventListener(\"logout\", (evt) => {\n const detail = (evt as GraffitiLogoutEvent).detail;\n if (detail.error) {\n console.error(\"Error logging out:\");\n console.error(detail.error);\n } else {\n graffitiSession.value = undefined;\n }\n });\n\n app.provide(graffitiInjectKey, graffiti);\n app.provide(graffitiSessionInjectKey, graffitiSession);\n\n app.component(\"GraffitiDiscover\", Discover);\n app.config.globalProperties.$graffiti = graffiti;\n app.config.globalProperties.$graffitiSession = graffitiSession;\n },\n};\n\nexport * from \"./composables\";\nexport * from \"./injections\";\nexport { Discover as GraffitiDiscover };\n"],"names":["graffitiInjectKey","graffitiSessionInjectKey","useGraffiti","graffiti","inject","useGraffitiSession","session","useGraffitiDiscover","channels","schema","sessionInjected","results","ref","resultsRaw","flattenResults","acc","o","tombstone","value","onValue","url","existing","channelsGetter","toValue","schemaGetter","sessionGetter","localIterator","pollLocalModifications","isPolling","iterator","poll","result","watch","onScopeDispose","props","__props","toRef","GraffitiPlugin","app","options","graffitiSession","evt","detail","Discover"],"mappings":";AAIO,MAAMA,IAAoB,OAAO,GAC3BC,IAA2B,OAAO;AAIxC,SAASC,IAAc;AACtB,QAAAC,IAAWC,EAAOJ,CAAiB;AACzC,MAAI,CAACG;AACG,UAAA,IAAI,MAAM,+BAA+B;AAE1C,SAAAA;AACT;AAEO,SAASE,IAAqB;AAC7B,QAAAC,IAAUF,EAAOH,CAAwB;AAC/C,MAAI,CAACK;AACG,UAAA,IAAI,MAAM,8BAA8B;AAEzC,SAAAA;AACT;ACAgB,SAAAC,EAKdC,GAMAC,GAKAH,GACA;AACA,QAAMH,IAAWD,KACXQ,IAAkBL,KAElBM,IAAUC,EAAuD,CAAA,CAAE,GACnEC,wBAAiB;AACvB,WAASC,IAAiB;AAChB,IAAAH,EAAA,QAAQ,MAAM,KAAKE,EAAW,OAAQ,CAAA,EAAE,OAE9C,CAACE,GAAKC,MAAM;AACN,YAAA,EAAE,WAAAC,GAAW,OAAAC,EAAU,IAAAF;AAC7B,aAAKC,KACHF,EAAI,KAAK,EAAE,GAAGC,GAAG,WAAAC,GAAW,OAAAC,GAAO,GAE9BH;AAAA,IACT,GAAG,CAAE,CAAA;AAAA,EACP;AAEA,WAASI,EAAQD,GAA+B;AACxC,UAAAE,IAAMjB,EAAS,YAAYe,CAAK,GAChCG,IAAWR,EAAW,IAAIO,CAAG;AAEjC,IAAAC,MACCA,EAAS,eAAeH,EAAM,gBAC5BG,EAAS,iBAAiBH,EAAM,gBAAgB,CAACG,EAAS,cAIpDR,EAAA,IAAIO,GAAKF,CAAK;AAAA,EAC3B;AAEM,QAAAI,IAAiB,MAAMC,EAAQf,CAAQ,GACvCgB,IAAe,MAAMD,EAAQd,CAAM,GACnCgB,IAAgB,MAAMF,EAAQjB,CAAO,MAAKI,KAAA,gBAAAA,EAAiB;AAEjE,MAAIgB;AAGJ,iBAAeC,IAAyB;AACtC,IAAAD,KAAA,QAAAA,EAAe,UACfA,IAAgBvB,EAAS;AAAA,MACvBmB,EAAe;AAAA,MACfE,EAAa;AAAA,MACbC,EAAc;AAAA,IAAA;AAEhB,qBAAiBP,KAASQ,GAAe;AACvC,UAAIR,EAAM,OAAO;AACP,gBAAA,MAAMA,EAAM,KAAK;AACzB;AAAA,MACF;AACA,MAAAC,EAAQD,EAAM,KAAK,GACJJ;IACjB;AAAA,EACF;AAEM,QAAAc,IAAYhB,EAAI,EAAK;AAC3B,MAAIiB;AAEJ,iBAAeC,IAAO;AACpB,IAAAD,KAAA,QAAAA,EAAU,UACVD,EAAU,QAAQ;AAEd,QAAA;AACF,MAAAC,IAAW1B,EAAS;AAAA,QAClBmB,EAAe;AAAA,QACfE,EAAa;AAAA,QACbC,EAAc;AAAA,MAAA;AAAA,aAET,GAAG;AACV,cAAQ,MAAM,CAAC,GACAX,KACfc,EAAU,QAAQ;AAClB;AAAA,IACF;AAEA,qBAAiBG,KAAUF,GAAU;AACnC,UAAIE,EAAO,OAAO;AACR,gBAAA,MAAMA,EAAO,KAAK;AAC1B;AAAA,MACF;AACA,MAAAZ,EAAQY,EAAO,KAAK,GACLjB;IACjB;AAEA,IAAAc,EAAU,QAAQ;AAAA,EACpB;AAEA,SAAAI;AAAA,IACE,CAACV,GAAgBE,GAAcC,CAAa;AAAA,IAC5C,MAAM;AACJ,MAAAZ,EAAW,MAAM,GACFC,KACVgB,KACkBH;IACzB;AAAA,IAEA;AAAA,MACE,WAAW;AAAA,IACb;AAAA,EAAA,GAEaM,EAAA,MAAMP,KAAA,gBAAAA,EAAe,QAAQ,GAErC;AAAA,IACL,SAAAf;AAAA,IACA,MAAAmB;AAAA,IACA,WAAAF;AAAA,EAAA;AAEJ;;;;;;;;;AC9IA,UAAMM,IAAQC,GAMR,EAAE,SAAAxB,GAAS,MAAAmB,GAAM,WAAAF,EAAc,IAAArB;AAAA,MACjC6B,EAAMF,GAAO,UAAU;AAAA,MACvBE,EAAMF,GAAO,QAAQ;AAAA,MACrBE,EAAMF,GAAO,SAAS;AAAA,IAAA;;;;;;;ICabG,IAAgD;AAAA,EAC3D,QAAQC,GAAUC,GAAgC;AAC1C,UAAApC,IAAWoC,EAAQ,eACnBC,IAAkB5B,EAAiC,MAAS;AAClE,IAAAT,EAAS,cAAc,iBAAiB,SAAS,CAACsC,MAAQ;AACxD,YAAMC,IAAUD,EAA2B;AAC3C,UAAIC,EAAO,OAAO;AAChB,gBAAQ,MAAM,mBAAmB,GACzB,QAAA,MAAMA,EAAO,KAAK;AAC1B;AAAA,MAAA;AAEA,QAAAF,EAAgB,QAAQE,EAAO;AAAA,IACjC,CACD,GACDvC,EAAS,cAAc,iBAAiB,UAAU,CAACsC,MAAQ;AACzD,YAAMC,IAAUD,EAA4B;AAC5C,MAAIC,EAAO,SACT,QAAQ,MAAM,oBAAoB,GAC1B,QAAA,MAAMA,EAAO,KAAK,KAE1BF,EAAgB,QAAQ;AAAA,IAC1B,CACD,GAEGF,EAAA,QAAQtC,GAAmBG,CAAQ,GACnCmC,EAAA,QAAQrC,GAA0BuC,CAAe,GAEjDF,EAAA,UAAU,oBAAoBK,CAAQ,GACtCL,EAAA,OAAO,iBAAiB,YAAYnC,GACpCmC,EAAA,OAAO,iBAAiB,mBAAmBE;AAAA,EACjD;AACF;"}
package/package.json CHANGED
@@ -1,13 +1,13 @@
1
1
  {
2
2
  "name": "@graffiti-garden/wrapper-vue",
3
- "version": "0.0.1",
3
+ "version": "0.0.3",
4
4
  "description": "Vue.js wrapper for the Graffiti API",
5
5
  "type": "module",
6
- "main": "src/plugin.js",
6
+ "main": "dist/plugin.js",
7
7
  "browser": "dist/plugin.js",
8
8
  "exports": {
9
9
  ".": {
10
- "types": "./dist/plugin.ts",
10
+ "types": "./src/plugin.ts",
11
11
  "default": "./dist/plugin.js"
12
12
  }
13
13
  },
@@ -37,7 +37,7 @@ export function useGraffitiDiscover<Schema extends JSONSchema4>(
37
37
  * A Graffiti session object. If not provided, the
38
38
  * global plugin session will be used.
39
39
  */
40
- session?: MaybeRefOrGetter<GraffitiSession>,
40
+ session?: MaybeRefOrGetter<GraffitiSession | undefined>,
41
41
  ) {
42
42
  const graffiti = useGraffiti();
43
43
  const sessionInjected = useGraffitiSession();