] {
+ let result!: T;
+ const app = createApp({
+ setup() {
+ result = composable();
+ // suppress missing template warning
+ return () => {};
+ },
+ });
+ app.mount(document.createElement("div"));
+ // return the result and the app instance
+ // for testing provide/unmount
+ return [result, app];
+}
+
+/**
+ * modified test setup for composables in parent/child relationship (e.g. provide/inject)
+ */
+export function withParentChildSetup(
+ parentComposable: () => P,
+ childComposable: () => C,
+): [P, C, App] {
+ let parentResult!: P;
+ let childResult!: C;
+
+ const app = createApp({
+ setup() {
+ parentResult = parentComposable();
+ return () =>
+ h({
+ setup() {
+ childResult = childComposable();
+ return () => {};
+ },
+ });
+ },
+ });
+
+ app.mount(document.createElement("div"));
+ return [parentResult, childResult, app];
+}
+
+export class MockSharedWorker implements SharedWorker {
+ port: MessagePort;
+ onerror = null;
+
+ constructor(_url, _options) {
+ this.port = {
+ onmessage: null,
+ } as MessagePort;
+ }
+ addEventListener(
+ _type: unknown,
+ _listener: unknown,
+ _options?: unknown,
+ ): void {
+ throw new Error("Method not implemented.");
+ }
+ removeEventListener(
+ _type: unknown,
+ _listener: unknown,
+ _options?: unknown,
+ ): void {
+ throw new Error("Method not implemented.");
+ }
+ dispatchEvent(_event: Event): boolean {
+ throw new Error("Method not implemented.");
+ }
+}
diff --git a/packages/solid-vue/tsconfig.esm.json b/packages/solid-vue/tsconfig.esm.json
new file mode 100644
index 00000000..77952ca6
--- /dev/null
+++ b/packages/solid-vue/tsconfig.esm.json
@@ -0,0 +1,9 @@
+{
+ "extends": "../../tsconfig.esm.json",
+ "compilerOptions": {
+ "outDir": "./dist/esm",
+ "rootDir": "./src",
+ "declarationDir": "./dist/types"
+ },
+ "include": ["src"]
+}
diff --git a/packages/solid-vue/tsdown.config.ts b/packages/solid-vue/tsdown.config.ts
new file mode 100644
index 00000000..7f0dfbd9
--- /dev/null
+++ b/packages/solid-vue/tsdown.config.ts
@@ -0,0 +1,13 @@
+import { defineConfig } from "tsdown";
+
+export default defineConfig({
+ entry: ["src/index.ts"],
+ format: ["esm", "cjs"],
+ target: "es2021",
+ unbundle: true,
+ dts: true,
+ clean: true,
+ outDir: "dist",
+ tsconfig: "tsconfig.esm.json",
+ skipNodeModulesBundle: true,
+});
diff --git a/packages/solid-vue/vitest.config.js b/packages/solid-vue/vitest.config.js
new file mode 100644
index 00000000..cc93abb3
--- /dev/null
+++ b/packages/solid-vue/vitest.config.js
@@ -0,0 +1,29 @@
+import { defineConfig } from "vitest/config";
+import path from "node:path";
+import { fileURLToPath } from "node:url";
+
+const __dirname = path.dirname(fileURLToPath(import.meta.url));
+
+export default defineConfig({
+ plugins: [],
+ resolve: {
+ alias: [
+ {
+ find: /^@ldo\/([^/]+)$/,
+ replacement: path.resolve(__dirname, "../$1/src/index.ts"),
+ },
+ {
+ find: /^@ldo\/([^/]+)\/(.*)$/,
+ replacement: path.resolve(__dirname, "../$1/$2"),
+ },
+ ],
+ },
+ test: {
+ globals: true,
+ setupFiles: ["../../vitest.jest-compat.ts"],
+ coverage: {
+ provider: "istanbul",
+ },
+ environment: "jsdom",
+ },
+});
diff --git a/packages/vue/src/createLdoVueComposables.ts b/packages/vue/src/createLdoVueComposables.ts
index 7ebeba2b..4050bb49 100644
--- a/packages/vue/src/createLdoVueComposables.ts
+++ b/packages/vue/src/createLdoVueComposables.ts
@@ -15,6 +15,7 @@ import { createUseLinkQuery } from "./methods/useLinkQuery";
import { createUseChangeDataset } from "./methods/change/useChangeDataset";
import { createUseChangeMatchObject } from "./methods/change/useChangeMatchObject";
import { createUseChangeMatchSubject } from "./methods/change/useChangeMatchSubject";
+import { createUseChangeSubject } from "./methods/change/useChangeSubject";
/**
* Create ldo composables for Vue, where the dataset is isolated and provided/injected.
@@ -50,50 +51,44 @@ export function createLdoVueComposables(
return {
datasetInjectionKey,
provideDataset,
- useDataset: createComposable(
- datasetInjectionKey,
- createUseDataset,
- ),
- useLdo: createComposable(datasetInjectionKey, createUseLdo),
+ useDataset: createComposable(datasetInjectionKey, createUseDataset),
+ useLdo: createComposable(datasetInjectionKey, createUseLdo),
useResource: createComposable(
datasetInjectionKey,
- createUseResource,
- ),
- useSubject: createComposable(
- datasetInjectionKey,
- createUseSubject,
+ createUseResource,
),
+ useSubject: createComposable(datasetInjectionKey, createUseSubject),
useMatchObject: createComposable(
datasetInjectionKey,
- createUseMatchObject,
+ createUseMatchObject,
),
useMatchSubject: createComposable(
datasetInjectionKey,
- createUseMatchSubject,
+ createUseMatchSubject,
),
useSubscribeToResource: createComposable(
datasetInjectionKey,
- createUseSubscribeToResource,
+ createUseSubscribeToResource,
),
useLinkQuery: createComposable(
datasetInjectionKey,
- createUseLinkQuery,
+ createUseLinkQuery,
),
useChangeDataset: createComposable(
datasetInjectionKey,
- createUseChangeDataset,
+ createUseChangeDataset,
),
useChangeSubject: createComposable(
datasetInjectionKey,
- createUseSubject,
+ createUseChangeSubject,
),
useChangeMatchObject: createComposable(
datasetInjectionKey,
- createUseChangeMatchObject,
+ createUseChangeMatchObject,
),
useChangeMatchSubject: createComposable(
datasetInjectionKey,
- createUseChangeMatchSubject,
+ createUseChangeMatchSubject,
),
};
}
diff --git a/packages/vue/src/createLdoVueMethods.ts b/packages/vue/src/createLdoVueMethods.ts
index 2cdba671..ce3ce429 100644
--- a/packages/vue/src/createLdoVueMethods.ts
+++ b/packages/vue/src/createLdoVueMethods.ts
@@ -18,6 +18,9 @@ import { createUseDataset } from "./methods/useDataset";
/**
* A function that creates all common vue functions given specific plugin.
*
+ * It keeps a global module-level dataset variable.
+ * To keep injected dataset, use `createLdoVueComposables` instead.
+ *
* @example
* `methods.ts`
* ```tsx
diff --git a/packages/vue/src/index.ts b/packages/vue/src/index.ts
index 9ed3d07e..8925e34e 100644
--- a/packages/vue/src/index.ts
+++ b/packages/vue/src/index.ts
@@ -10,10 +10,7 @@ export * from "./methods/useSubject";
export * from "./methods/useSubscribeToResource";
export * from "./methods/useLinkQuery";
-// export * from "./methods/change/types";
export * from "./methods/change/useChangeDataset";
export * from "./methods/change/useChangeSubject";
export * from "./methods/change/useChangeMatchObject";
export * from "./methods/change/useChangeMatchSubject";
-
-export * from "./util/useTrackingProxy";
diff --git a/packages/vue/src/methods/change/useChangeDataset.ts b/packages/vue/src/methods/change/useChangeDataset.ts
index b08590b5..4392ccca 100644
--- a/packages/vue/src/methods/change/useChangeDataset.ts
+++ b/packages/vue/src/methods/change/useChangeDataset.ts
@@ -11,14 +11,30 @@ import {
type Ref,
} from "vue";
+export interface UseChangeDatasetComposable {
+ (
+ specificDataset?: MaybeRefOrGetter<
+ IConnectedLdoDataset | undefined
+ >,
+ ): {
+ transactionDataset: Ref>;
+ setData: (
+ changer: (toChange: ConnectedLdoTransactionDataset) => void,
+ ) => void;
+ commitData: () => ReturnType<
+ ConnectedLdoTransactionDataset["commitToRemote"]
+ >;
+ };
+}
+
/**
* @internal
*
* Creates a useChangeDataset composable
*/
-export function createUseChangeDataset(
- dataset: IConnectedLdoDataset,
-) {
+export function createUseChangeDataset(
+ dataset: IConnectedLdoDataset,
+): UseChangeDatasetComposable {
/**
* Returns a transaction on the dataset that can be modified and committed.
*
@@ -44,12 +60,12 @@ export function createUseChangeDataset(
*/
return function useChangeDataset(
specificDataset?: MaybeRefOrGetter<
- IConnectedLdoDataset | undefined
+ IConnectedLdoDataset | undefined
>,
) {
const transactionDataset = shallowRef<
- ConnectedLdoTransactionDataset
- >() as Ref>;
+ ConnectedLdoTransactionDataset
+ >() as Ref>;
watch(
() => toValue(specificDataset),
@@ -60,7 +76,7 @@ export function createUseChangeDataset(
);
const setData = (
- changer: (toChange: ConnectedLdoTransactionDataset) => void,
+ changer: (toChange: ConnectedLdoTransactionDataset) => void,
) => {
const subTransaction = transactionDataset.value.startTransaction();
changer(subTransaction);
diff --git a/packages/vue/src/methods/change/useChangeMatchObject.ts b/packages/vue/src/methods/change/useChangeMatchObject.ts
index 0eec2a15..4074097a 100644
--- a/packages/vue/src/methods/change/useChangeMatchObject.ts
+++ b/packages/vue/src/methods/change/useChangeMatchObject.ts
@@ -1,6 +1,10 @@
-import type { IConnectedLdoDataset, ConnectedPlugin } from "@ldo/connected";
+import type {
+ IConnectedLdoDataset,
+ ConnectedPlugin,
+ ConnectedLdoTransactionDataset,
+} from "@ldo/connected";
import { type LdSet, write, type LdoBase, type ShapeType } from "@ldo/ldo";
-import { computed, toValue, type MaybeRefOrGetter } from "vue";
+import { computed, type Ref, toValue, type MaybeRefOrGetter } from "vue";
import { createUseChangeDataset } from "./useChangeDataset";
import type { QuadMatch } from "@ldo/rdf-utils";
import { createProxyInteractOptions } from "@ldo/jsonld-dataset-proxy";
@@ -9,14 +13,41 @@ import {
type UseMatchObjectOptions,
} from "../useMatchObject";
+export interface UseChangeMatchObjectComposable<
+ Plugin extends ConnectedPlugin,
+> {
+ (
+ shapeType: MaybeRefOrGetter>,
+ subject?: MaybeRefOrGetter,
+ predicate?: MaybeRefOrGetter,
+ graph?: MaybeRefOrGetter,
+ options?: MaybeRefOrGetter>,
+ ): {
+ ldo: Ref>;
+ transactionDataset: Ref>;
+ setData: <
+ OtherType extends LdoBase | LdSet | undefined = undefined,
+ >(
+ writeResource: Plugin["types"]["resource"],
+ changer: (
+ toChange: OtherType extends undefined ? LdSet : OtherType,
+ ) => void,
+ otherType?: OtherType,
+ ) => void;
+ commitData: () => ReturnType<
+ ConnectedLdoTransactionDataset["commitToRemote"]
+ >;
+ };
+}
+
/**
* @internal
*
* Creates a useChangeMatchObject composable
*/
-export function createUseChangeMatchObject(
- dataset: IConnectedLdoDataset,
-) {
+export function createUseChangeMatchObject(
+ dataset: IConnectedLdoDataset,
+): UseChangeMatchObjectComposable {
const useChangeDataset = createUseChangeDataset(dataset);
const useMatchObject = createUseMatchObject(dataset);
@@ -28,7 +59,7 @@ export function createUseChangeMatchObject(
subject?: MaybeRefOrGetter,
predicate?: MaybeRefOrGetter,
graph?: MaybeRefOrGetter,
- options?: MaybeRefOrGetter>,
+ options?: MaybeRefOrGetter>,
) {
const resolvedDataset = computed(() => toValue(options)?.dataset);
@@ -53,7 +84,7 @@ export function createUseChangeMatchObject(
const setData = <
OtherType extends LdoBase | LdSet | undefined = undefined,
>(
- writeResource: Plugins[number]["types"]["resource"],
+ writeResource: Plugin["types"]["resource"],
changer: (
toChange: OtherType extends undefined ? LdSet : OtherType,
) => void,
diff --git a/packages/vue/src/methods/change/useChangeMatchSubject.ts b/packages/vue/src/methods/change/useChangeMatchSubject.ts
index 89267ca9..848a68a7 100644
--- a/packages/vue/src/methods/change/useChangeMatchSubject.ts
+++ b/packages/vue/src/methods/change/useChangeMatchSubject.ts
@@ -1,6 +1,10 @@
-import type { IConnectedLdoDataset, ConnectedPlugin } from "@ldo/connected";
+import type {
+ IConnectedLdoDataset,
+ ConnectedPlugin,
+ ConnectedLdoTransactionDataset,
+} from "@ldo/connected";
import { type LdSet, write, type LdoBase, type ShapeType } from "@ldo/ldo";
-import { computed, toValue, type MaybeRefOrGetter } from "vue";
+import { computed, type Ref, toValue, type MaybeRefOrGetter } from "vue";
import { createUseChangeDataset } from "./useChangeDataset";
import type { QuadMatch } from "@ldo/rdf-utils";
import { createProxyInteractOptions } from "@ldo/jsonld-dataset-proxy";
@@ -9,14 +13,41 @@ import {
type UseMatchSubjectOptions,
} from "../useMatchSubject";
+export interface UseChangeMatchSubjectComposable<
+ Plugin extends ConnectedPlugin,
+> {
+ (
+ shapeType: MaybeRefOrGetter>,
+ predicate?: MaybeRefOrGetter,
+ object?: MaybeRefOrGetter,
+ graph?: MaybeRefOrGetter,
+ options?: MaybeRefOrGetter>,
+ ): {
+ ldo: Ref>;
+ transactionDataset: Ref>;
+ setData: <
+ OtherType extends LdoBase | LdSet | undefined = undefined,
+ >(
+ writeResource: Plugin["types"]["resource"],
+ changer: (
+ toChange: OtherType extends undefined ? LdSet : OtherType,
+ ) => void,
+ otherType?: OtherType,
+ ) => void;
+ commitData: () => ReturnType<
+ ConnectedLdoTransactionDataset["commitToRemote"]
+ >;
+ };
+}
+
/**
* @internal
*
* Creates a useChangeMatchSubject composable
*/
-export function createUseChangeMatchSubject(
- dataset: IConnectedLdoDataset,
-) {
+export function createUseChangeMatchSubject(
+ dataset: IConnectedLdoDataset,
+): UseChangeMatchSubjectComposable {
const useChangeDataset = createUseChangeDataset(dataset);
const useMatchSubject = createUseMatchSubject(dataset);
@@ -28,7 +59,7 @@ export function createUseChangeMatchSubject(
predicate?: MaybeRefOrGetter,
object?: MaybeRefOrGetter,
graph?: MaybeRefOrGetter,
- options?: MaybeRefOrGetter>,
+ options?: MaybeRefOrGetter>,
) {
const resolvedDataset = computed(() => toValue(options)?.dataset);
@@ -53,7 +84,7 @@ export function createUseChangeMatchSubject(
const setData = <
OtherType extends LdoBase | LdSet | undefined = undefined,
>(
- writeResource: Plugins[number]["types"]["resource"],
+ writeResource: Plugin["types"]["resource"],
changer: (
toChange: OtherType extends undefined ? LdSet : OtherType,
) => void,
diff --git a/packages/vue/src/methods/change/useChangeSubject.ts b/packages/vue/src/methods/change/useChangeSubject.ts
index d42b9f7a..72264ba7 100644
--- a/packages/vue/src/methods/change/useChangeSubject.ts
+++ b/packages/vue/src/methods/change/useChangeSubject.ts
@@ -1,19 +1,46 @@
-import type { IConnectedLdoDataset, ConnectedPlugin } from "@ldo/connected";
+import type {
+ IConnectedLdoDataset,
+ ConnectedPlugin,
+ ConnectedLdoTransactionDataset,
+} from "@ldo/connected";
import { type LdSet, write, type LdoBase, type ShapeType } from "@ldo/ldo";
-import { computed, toValue, type MaybeRefOrGetter } from "vue";
+import { computed, type Ref, toValue, type MaybeRefOrGetter } from "vue";
import { createUseChangeDataset } from "./useChangeDataset";
import type { SubjectNode } from "@ldo/rdf-utils";
import { createUseSubject, type UseSubjectOptions } from "../useSubject";
import { createProxyInteractOptions } from "@ldo/jsonld-dataset-proxy";
+export interface UseChangeSubjectComposable {
+ (
+ shapeType: MaybeRefOrGetter>,
+ subject: MaybeRefOrGetter,
+ options?: MaybeRefOrGetter>,
+ ): {
+ ldo: Ref;
+ transactionDataset: Ref>;
+ setData: <
+ OtherType extends LdoBase | LdSet | undefined = undefined,
+ >(
+ writeResource: Plugin["types"]["resource"],
+ changer: (
+ toChange: OtherType extends undefined ? Type : OtherType,
+ ) => void,
+ otherType?: OtherType,
+ ) => void;
+ commitData: () => ReturnType<
+ ConnectedLdoTransactionDataset["commitToRemote"]
+ >;
+ };
+}
+
/**
* @internal
*
* Creates a useChangeSubject composable.
*/
-export function createUseChangeSubject(
- dataset: IConnectedLdoDataset,
-) {
+export function createUseChangeSubject(
+ dataset: IConnectedLdoDataset,
+): UseChangeSubjectComposable {
const useChangeDataset = createUseChangeDataset(dataset);
const useSubject = createUseSubject(dataset);
@@ -23,7 +50,7 @@ export function createUseChangeSubject(
return function useChangeSubject(
shapeType: MaybeRefOrGetter>,
subject: MaybeRefOrGetter,
- options?: MaybeRefOrGetter>,
+ options?: MaybeRefOrGetter>,
) {
const resolvedDataset = computed(() => toValue(options)?.dataset);
@@ -42,7 +69,7 @@ export function createUseChangeSubject(
const setData = <
OtherType extends LdoBase | LdSet | undefined = undefined,
>(
- writeResource: Plugins[number]["types"]["resource"],
+ writeResource: Plugin["types"]["resource"],
changer: (
toChange: OtherType extends undefined ? Type : OtherType,
) => void,
diff --git a/packages/vue/src/methods/useDataset.ts b/packages/vue/src/methods/useDataset.ts
index b643dfad..d5fba5de 100644
--- a/packages/vue/src/methods/useDataset.ts
+++ b/packages/vue/src/methods/useDataset.ts
@@ -1,13 +1,17 @@
import type { IConnectedLdoDataset, ConnectedPlugin } from "@ldo/connected";
+export interface UseDatasetComposable {
+ (): IConnectedLdoDataset;
+}
+
/**
* @internal
*
* Creates a useDataset function
*/
-export function createUseDataset(
- dataset: IConnectedLdoDataset,
-) {
+export function createUseDataset(
+ dataset: IConnectedLdoDataset,
+): UseDatasetComposable {
/**
* Returns the global dataset for the application
*/
diff --git a/packages/vue/src/methods/useLdo.ts b/packages/vue/src/methods/useLdo.ts
index 81821ee8..a7948020 100644
--- a/packages/vue/src/methods/useLdo.ts
+++ b/packages/vue/src/methods/useLdo.ts
@@ -16,11 +16,11 @@ import type { SubjectNode } from "@ldo/rdf-utils";
/**
* The methods returned by useLdo
*/
-export interface UseLdoMethods {
+export interface UseLdoMethods {
/**
* A ConnectedLdoDataset
*/
- dataset: ConnectedLdoDataset;
+ dataset: ConnectedLdoDataset;
/**
* Retrieves a representation of a Resource at the given URI. This resource
* represents the current state of the resource: whether it is currently
@@ -32,14 +32,14 @@ export interface UseLdoMethods {
*
* @returns a Resource
*/
- getResource: ConnectedLdoDataset["getResource"];
+ getResource: ConnectedLdoDataset["getResource"];
/**
* Sets context for a specific plugin
*
* @param pluginName - the name of the plugin
* @param context - the context for this specific plugin
*/
- setContext: ConnectedLdoDataset["setContext"];
+ setContext: ConnectedLdoDataset["setContext"];
/**
* Gets a linked data object based on the subject
*/
@@ -59,32 +59,36 @@ export interface UseLdoMethods {
createData(
shapeType: ShapeType,
subject: string | SubjectNode,
- resource: Plugins[number]["types"]["resource"],
- ...additionalResources: Plugins[number]["types"]["resource"][]
+ resource: Plugin["types"]["resource"],
+ ...additionalResources: Plugin["types"]["resource"][]
): Type;
/**
* Returns a writable LinkedDataObject given a linked data object
*/
changeData(
input: Type,
- resource: Plugins[number]["types"]["resource"],
- ...additionalResources: Plugins[number]["types"]["resource"][]
+ resource: Plugin["types"]["resource"],
+ ...additionalResources: Plugin["types"]["resource"][]
): Type;
/**
* Commits the data of a writable Linked Data Object back to the remote.
*/
commitData(
input: LdoBase,
- ): ReturnType["commitToRemote"]>;
+ ): ReturnType["commitToRemote"]>;
+}
+
+export interface UseLdoComposable {
+ (): UseLdoMethods;
}
/**
* @internal
* Creates a useLdo composable
*/
-export function createUseLdo(
- dataset: ConnectedLdoDataset,
-) {
+export function createUseLdo(
+ dataset: ConnectedLdoDataset,
+): UseLdoComposable {
const toReturn = {
dataset,
/**
@@ -117,8 +121,8 @@ export function createUseLdo(
createData(
shapeType: ShapeType,
subject: string | SubjectNode,
- resource: Plugins[number]["types"]["resource"],
- ...additionalResources: Plugins[number]["types"]["resource"][]
+ resource: Plugin["types"]["resource"],
+ ...additionalResources: Plugin["types"]["resource"][]
): Type {
return dataset.createData(
shapeType,
@@ -139,14 +143,14 @@ export function createUseLdo(
*/
commitData(
input: LdoBase,
- ): ReturnType["commitToRemote"]> {
- const inputDataset = getDataset(
- input,
- ) as ConnectedLdoTransactionDataset;
+ ): ReturnType["commitToRemote"]> {
+ const inputDataset = getDataset(input) as ConnectedLdoTransactionDataset<
+ Plugin[]
+ >;
return inputDataset.commitToRemote();
},
};
- return function useLdo(): UseLdoMethods {
+ return function useLdo(): UseLdoMethods {
return toReturn;
};
}
diff --git a/packages/vue/src/methods/useLinkQuery.ts b/packages/vue/src/methods/useLinkQuery.ts
index d024adb3..8483b879 100644
--- a/packages/vue/src/methods/useLinkQuery.ts
+++ b/packages/vue/src/methods/useLinkQuery.ts
@@ -6,16 +6,25 @@ import type {
import type { LdoBase, ShapeType } from "@ldo/ldo";
import type { SubjectNode } from "@ldo/rdf-utils";
import { createUseSubject } from "./useSubject";
-import { type MaybeRefOrGetter, toValue, watch } from "vue";
+import { type MaybeRefOrGetter, type Ref, toValue, watch } from "vue";
+
+export interface UseLinkQueryComposable {
+ >(
+ shapeType: MaybeRefOrGetter>,
+ startingResource: MaybeRefOrGetter,
+ startingSubject: MaybeRefOrGetter,
+ linkQuery: MaybeRefOrGetter,
+ ): Ref;
+}
/**
* @internal
*
* Creates a useLinkQuery composable.
*/
-export function createUseLinkQuery(
- dataset: IConnectedLdoDataset,
-) {
+export function createUseLinkQuery(
+ dataset: IConnectedLdoDataset,
+): UseLinkQueryComposable {
/**
* Runs a LDO link query.
* Subscribes to related changes.
@@ -48,16 +57,17 @@ export function createUseLinkQuery(
.usingType(shapeType)
.startLinkQuery(resource, startingSubjectUri, linkQuery);
+ // register cleanup before first await
+ onCleanup(async () => {
+ finished = true;
+ await resourceLinkQuery.unsubscribeAll();
+ });
+
await resourceLinkQuery.subscribe();
// if already cleaned up, unsubscribe immediately
if (finished) {
await resourceLinkQuery.unsubscribeAll();
}
-
- onCleanup(async () => {
- finished = true;
- await resourceLinkQuery.unsubscribeAll();
- });
},
{ immediate: true },
);
diff --git a/packages/vue/src/methods/useMatchObject.ts b/packages/vue/src/methods/useMatchObject.ts
index aecd7e79..fa4faccf 100644
--- a/packages/vue/src/methods/useMatchObject.ts
+++ b/packages/vue/src/methods/useMatchObject.ts
@@ -4,17 +4,17 @@ import { useTrackingProxy } from "../util/useTrackingProxy";
import type { ConnectedPlugin, IConnectedLdoDataset } from "@ldo/connected";
import { computed, toValue, type MaybeRefOrGetter, type Ref } from "vue";
-export interface UseMatchObjectOptions {
- dataset?: IConnectedLdoDataset;
+export interface UseMatchObjectOptions {
+ dataset?: IConnectedLdoDataset;
}
-export interface UseMatchObjectComposable {
- (
+export interface UseMatchObjectComposable {
+ (
shapeType: MaybeRefOrGetter>,
subject?: MaybeRefOrGetter,
predicate?: MaybeRefOrGetter,
graph?: MaybeRefOrGetter,
- options?: MaybeRefOrGetter>,
+ options?: MaybeRefOrGetter>,
): Ref>;
}
@@ -23,22 +23,22 @@ export interface UseMatchObjectComposable {
*
* Creates a useMatchObject composable.
*/
-export function createUseMatchObject(
- dataset: IConnectedLdoDataset,
-): UseMatchObjectComposable {
+export function createUseMatchObject(
+ dataset: IConnectedLdoDataset,
+): UseMatchObjectComposable {
/**
* Returns a reactive LDO set of matching items.
* Triggers a rerender if that data are updated.
*/
return function useMatchObject<
Type extends LdoBase,
- CustomPlugins extends ConnectedPlugin[] = Plugins,
+ CustomPlugin extends ConnectedPlugin = Plugin,
>(
shapeType: MaybeRefOrGetter>,
subject?: MaybeRefOrGetter,
predicate?: MaybeRefOrGetter,
graph?: MaybeRefOrGetter,
- options?: MaybeRefOrGetter>,
+ options?: MaybeRefOrGetter>,
): Ref> {
const createLdo = computed(() => {
const subjectValue = toValue(subject);
diff --git a/packages/vue/src/methods/useMatchSubject.ts b/packages/vue/src/methods/useMatchSubject.ts
index 556eb295..a1cfafec 100644
--- a/packages/vue/src/methods/useMatchSubject.ts
+++ b/packages/vue/src/methods/useMatchSubject.ts
@@ -4,8 +4,18 @@ import { useTrackingProxy } from "../util/useTrackingProxy";
import type { ConnectedPlugin, IConnectedLdoDataset } from "@ldo/connected";
import { computed, toValue, type MaybeRefOrGetter, type Ref } from "vue";
-export interface UseMatchSubjectOptions {
- dataset?: IConnectedLdoDataset;
+export interface UseMatchSubjectOptions {
+ dataset?: IConnectedLdoDataset;
+}
+
+export interface UseMatchSubjectComposable {
+ (
+ shapeType: MaybeRefOrGetter>,
+ predicate?: MaybeRefOrGetter,
+ object?: MaybeRefOrGetter,
+ graph?: MaybeRefOrGetter,
+ options?: MaybeRefOrGetter>,
+ ): Ref>;
}
/**
@@ -13,9 +23,9 @@ export interface UseMatchSubjectOptions {
*
* Creates a useMatchSubject composable.
*/
-export function createUseMatchSubject(
- dataset: IConnectedLdoDataset,
-) {
+export function createUseMatchSubject(
+ dataset: IConnectedLdoDataset,
+): UseMatchSubjectComposable {
/**
* Returns a reactive LDO set of matching linked data objects.
* Triggers a rerender if the data are updated.
@@ -25,7 +35,7 @@ export function createUseMatchSubject(
predicate?: MaybeRefOrGetter,
object?: MaybeRefOrGetter,
graph?: MaybeRefOrGetter,
- options?: MaybeRefOrGetter>,
+ options?: MaybeRefOrGetter>,
): Ref> {
const createLdo = computed(() => {
const predicateValue = toValue(predicate);
diff --git a/packages/vue/src/methods/useResource.ts b/packages/vue/src/methods/useResource.ts
index 3e9d894e..8ebb6390 100644
--- a/packages/vue/src/methods/useResource.ts
+++ b/packages/vue/src/methods/useResource.ts
@@ -21,18 +21,18 @@ export interface UseResourceOptions {
subscribe?: boolean;
}
-export type useResourceType = {
+export type UseResourceComposable