From 546185f3718944dd6a0416ef769e3ce80fe12476 Mon Sep 17 00:00:00 2001 From: mrkvon Date: Thu, 1 Oct 2026 13:52:07 +0200 Subject: [PATCH 01/15] Initialize the package --- package-lock.json | 19 +++++++ packages/solid-vue/README.md | 1 + packages/solid-vue/package.json | 53 +++++++++++++++++++ .../src/createBrowserSolidVueMethods.ts | 10 ++++ packages/solid-vue/src/defaultInstance.ts | 21 ++++++++ packages/solid-vue/src/index.ts | 2 + packages/solid-vue/test/SolidAuth.test.ts | 5 ++ packages/solid-vue/tsconfig.esm.json | 9 ++++ packages/solid-vue/tsdown.config.ts | 13 +++++ packages/solid-vue/vitest.config.js | 29 ++++++++++ 10 files changed, 162 insertions(+) create mode 100644 packages/solid-vue/README.md create mode 100644 packages/solid-vue/package.json create mode 100644 packages/solid-vue/src/createBrowserSolidVueMethods.ts create mode 100644 packages/solid-vue/src/defaultInstance.ts create mode 100644 packages/solid-vue/src/index.ts create mode 100644 packages/solid-vue/test/SolidAuth.test.ts create mode 100644 packages/solid-vue/tsconfig.esm.json create mode 100644 packages/solid-vue/tsdown.config.ts create mode 100644 packages/solid-vue/vitest.config.js diff --git a/package-lock.json b/package-lock.json index ae1ebce1..3aceeee2 100644 --- a/package-lock.json +++ b/package-lock.json @@ -18346,6 +18346,10 @@ "resolved": "packages/solid-type-index", "link": true }, + "node_modules/@ldo/solid-vue": { + "resolved": "packages/solid-vue", + "link": true + }, "node_modules/@ldo/subscribable-dataset": { "resolved": "packages/subscribable-dataset", "link": true @@ -41806,6 +41810,21 @@ "loose-envify": "^1.1.0" } }, + "packages/solid-vue": { + "name": "@ldo/solid-vue", + "version": "1.0.0-alpha.50", + "license": "MIT", + "dependencies": { + "@ldo/connected-solid": "^1.0.0-alpha.50", + "@ldo/vue": "^1.0.0-alpha.50" + }, + "devDependencies": { + "vue": "^3.5.43" + }, + "peerDependencies": { + "vue": "^3.3.0" + } + }, "packages/subscribable-dataset": { "name": "@ldo/subscribable-dataset", "version": "1.0.0-alpha.50", diff --git a/packages/solid-vue/README.md b/packages/solid-vue/README.md new file mode 100644 index 00000000..e5719571 --- /dev/null +++ b/packages/solid-vue/README.md @@ -0,0 +1 @@ +# @ldo/solid-vue diff --git a/packages/solid-vue/package.json b/packages/solid-vue/package.json new file mode 100644 index 00000000..83c140e5 --- /dev/null +++ b/packages/solid-vue/package.json @@ -0,0 +1,53 @@ +{ + "name": "@ldo/solid-vue", + "version": "1.0.0-alpha.50", + "description": "A Vue library for LDO and Solid", + "type": "module", + "main": "./dist/index.cjs", + "module": "./dist/index.mjs", + "types": "./dist/index.d.mts", + "exports": { + ".": { + "import": { + "types": "./dist/index.d.mts", + "default": "./dist/index.mjs" + }, + "require": { + "types": "./dist/index.d.cts", + "default": "./dist/index.cjs" + } + }, + "./package.json": "./package.json" + }, + "scripts": { + "build": "rimraf dist && NODE_OPTIONS=--max-old-space-size=8192 tsdown", + "test": "vitest run --coverage" + }, + "keywords": [ + "ldo", + "linked-data-objects", + "rdf", + "solid-project", + "vuejs" + ], + "repository": { + "type": "git", + "url": "git+https://github.com/o-development/ldo.git" + }, + "author": "Jackson Morgan", + "license": "MIT", + "bugs": { + "url": "https://github.com/o-development/ldo/issues" + }, + "homepage": "https://github.com/o-development/ldo/tree/main/packages/solid-vue#readme", + "dependencies": { + "@ldo/connected-solid": "^1.0.0-alpha.50", + "@ldo/vue": "^1.0.0-alpha.50" + }, + "peerDependencies": { + "vue": "^3.3.0" + }, + "devDependencies": { + "vue": "^3.5.43" + } +} diff --git a/packages/solid-vue/src/createBrowserSolidVueMethods.ts b/packages/solid-vue/src/createBrowserSolidVueMethods.ts new file mode 100644 index 00000000..215b43cd --- /dev/null +++ b/packages/solid-vue/src/createBrowserSolidVueMethods.ts @@ -0,0 +1,10 @@ +import type { ConnectedLdoDataset, ConnectedPlugin } from "@ldo/connected"; +import type { SolidConnectedPlugin } from "@ldo/connected-solid"; + +export function createBrowserSolidVueMethods( + dataset: ConnectedLdoDataset<(SolidConnectedPlugin | ConnectedPlugin)[]>, +) { + return { + useSolidAuth: undefined, + }; +} diff --git a/packages/solid-vue/src/defaultInstance.ts b/packages/solid-vue/src/defaultInstance.ts new file mode 100644 index 00000000..6bb514ae --- /dev/null +++ b/packages/solid-vue/src/defaultInstance.ts @@ -0,0 +1,21 @@ +import { solidConnectedPlugin } from "@ldo/connected-solid"; +import { createLdoVueMethods } from "@ldo/vue"; +import { createBrowserSolidVueMethods } from "./createBrowserSolidVueMethods"; + +export const { + dataset, + useDataset, + useLdo, + useResource, + useSubject, + useMatchObject, + useMatchSubject, + useSubscribeToResource, + useLinkQuery, + useChangeDataset, + useChangeSubject, + useChangeMatchObject, + useChangeMatchSubject, +} = createLdoVueMethods([solidConnectedPlugin]); + +export const { useSolidAuth } = createBrowserSolidVueMethods(dataset); diff --git a/packages/solid-vue/src/index.ts b/packages/solid-vue/src/index.ts new file mode 100644 index 00000000..07aca416 --- /dev/null +++ b/packages/solid-vue/src/index.ts @@ -0,0 +1,2 @@ +export * from "./createBrowserSolidVueMethods"; +export * from "./defaultInstance"; diff --git a/packages/solid-vue/test/SolidAuth.test.ts b/packages/solid-vue/test/SolidAuth.test.ts new file mode 100644 index 00000000..2702fa46 --- /dev/null +++ b/packages/solid-vue/test/SolidAuth.test.ts @@ -0,0 +1,5 @@ +import { describe, it } from "vitest"; + +describe("Solid Auth in Vue + Solid", () => { + it.todo("should ..."); +}); 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", + }, +}); From 4198732d0e1faa888fe9818ff8489144d2457f7b Mon Sep 17 00:00:00 2001 From: mrkvon Date: Sat, 10 Oct 2026 01:19:04 +0200 Subject: [PATCH 02/15] Implement provideSolidAuth and useSolidAuth and test it on the Vue dev app. --- dev/solid-vue-vite-app/package.json | 4 +- dev/solid-vue-vite-app/src/App.vue | 74 +-- dev/solid-vue-vite-app/src/Main.vue | 56 +++ ...eMatchSubjectTest.vue => MatchSubject.vue} | 35 +- dev/solid-vue-vite-app/src/SolidAuth.vue | 55 +++ dev/solid-vue-vite-app/src/main.ts | 3 +- dev/solid-vue-vite-app/src/router.ts | 36 ++ package-lock.json | 422 ++++++++++++++++-- packages/solid-react/README.md | 2 +- packages/solid-vue/README.md | 24 + .../src/createBrowserSolidVueMethods.ts | 4 +- packages/solid-vue/src/defaultInstance.ts | 3 +- packages/solid-vue/src/useSolidAuth.ts | 141 ++++++ packages/solid-vue/test/test-utils.ts | 19 + 14 files changed, 796 insertions(+), 82 deletions(-) create mode 100644 dev/solid-vue-vite-app/src/Main.vue rename dev/solid-vue-vite-app/src/{useMatchSubjectTest.vue => MatchSubject.vue} (61%) create mode 100644 dev/solid-vue-vite-app/src/SolidAuth.vue create mode 100644 dev/solid-vue-vite-app/src/router.ts create mode 100644 packages/solid-vue/src/useSolidAuth.ts create mode 100644 packages/solid-vue/test/test-utils.ts diff --git a/dev/solid-vue-vite-app/package.json b/dev/solid-vue-vite-app/package.json index 61d255fe..55b3af6c 100644 --- a/dev/solid-vue-vite-app/package.json +++ b/dev/solid-vue-vite-app/package.json @@ -14,8 +14,10 @@ "dependencies": { "@ldo/connected-solid": "^1.0.0-alpha.50", "@ldo/ldo": "^1.0.0-alpha.50", + "@ldo/solid-vue": "^1.0.0-alpha.50", "@ldo/vue": "^1.0.0-alpha.50", - "vue": "^3.5.40" + "vue": "^3.5.40", + "vue-router": "^5.4.0" }, "devDependencies": { "@ldo/cli": "^1.0.0-alpha.50", diff --git a/dev/solid-vue-vite-app/src/App.vue b/dev/solid-vue-vite-app/src/App.vue index 6a95f755..b2b49efb 100644 --- a/dev/solid-vue-vite-app/src/App.vue +++ b/dev/solid-vue-vite-app/src/App.vue @@ -2,8 +2,9 @@ import { computed, ref } from "vue"; import { FoafProfileShapeType } from "./_ldo/foafProfile.shapeTypes.js"; import { useSubject, useResource } from "./ldo.js"; -import UseMatchSubjectTest from "./useMatchSubjectTest.vue"; -import VueReadmeTest from "./vueReadmeTest.vue"; +import { provideSolidAuth } from "@ldo/solid-vue"; +import { RouterView, RouterLink } from "vue-router"; +import { router } from "./router.js"; const isValidUrl = (str: string) => { try { @@ -22,40 +23,45 @@ const validUri = computed(() => const subject = useSubject(FoafProfileShapeType, inputUri); console.log(subject); useResource(validUri); + +provideSolidAuth(); - + diff --git a/dev/solid-vue-vite-app/src/Main.vue b/dev/solid-vue-vite-app/src/Main.vue new file mode 100644 index 00000000..5463f885 --- /dev/null +++ b/dev/solid-vue-vite-app/src/Main.vue @@ -0,0 +1,56 @@ + + + diff --git a/dev/solid-vue-vite-app/src/useMatchSubjectTest.vue b/dev/solid-vue-vite-app/src/MatchSubject.vue similarity index 61% rename from dev/solid-vue-vite-app/src/useMatchSubjectTest.vue rename to dev/solid-vue-vite-app/src/MatchSubject.vue index a77ee401..0cf637e1 100644 --- a/dev/solid-vue-vite-app/src/useMatchSubjectTest.vue +++ b/dev/solid-vue-vite-app/src/MatchSubject.vue @@ -2,7 +2,6 @@ import { computed, ref } from "vue"; import { FoafProfileShapeType } from "./_ldo/foafProfile.shapeTypes.js"; import { useResource, useMatchSubject } from "./ldo.js"; -import type { FoafProfile } from "./_ldo/foafProfile.typings.js"; const isValidUrl = (str: string) => { try { @@ -19,7 +18,7 @@ const graphInput = ref(""); const predicate = computed(() => predicateInput.value || undefined); const object = computed(() => objectInput.value || undefined); -const graph = computed(() => graphInput.value || resource.value); +const graph = computed(() => graphInput.value || undefined); //|| resource.value); const validResource = computed(() => isValidUrl(resource.value) ? resource.value : "", @@ -32,29 +31,35 @@ const subjectsSet = useMatchSubject( graph, ); -// const subjects = computed(() => { -// return subjectsSet.value.toArray(); -// }); - useResource(validResource);