init cypher queries

This commit is contained in:
2025-02-24 22:45:51 +01:00
parent 0161931cb4
commit a8c4aa9351
12 changed files with 288 additions and 193 deletions

388
app/package-lock.json generated
View File

@@ -207,9 +207,9 @@
}
},
"node_modules/@cloudflare/workerd-darwin-64": {
"version": "1.20250204.0",
"resolved": "https://registry.npmjs.org/@cloudflare/workerd-darwin-64/-/workerd-darwin-64-1.20250204.0.tgz",
"integrity": "sha512-HpsgbWEfvdcwuZ8WAZhi1TlSCyyHC3tbghpKsOqGDaQNltyAFAWqa278TPNfcitYf/FmV4961v3eqUE+RFdHNQ==",
"version": "1.20250214.0",
"resolved": "https://registry.npmjs.org/@cloudflare/workerd-darwin-64/-/workerd-darwin-64-1.20250214.0.tgz",
"integrity": "sha512-cDvvedWDc5zrgDnuXe2qYcz/TwBvzmweO55C7XpPuAWJ9Oqxv81PkdekYxD8mH989aQ/GI5YD0Fe6fDYlM+T3Q==",
"cpu": [
"x64"
],
@@ -224,9 +224,9 @@
}
},
"node_modules/@cloudflare/workerd-darwin-arm64": {
"version": "1.20250204.0",
"resolved": "https://registry.npmjs.org/@cloudflare/workerd-darwin-arm64/-/workerd-darwin-arm64-1.20250204.0.tgz",
"integrity": "sha512-AJ8Tk7KMJqePlch3SH8oL41ROtsrb07hKRHD6M+FvGC3tLtf26rpteAAMNYKMDYKzFNFUIKZNijYDFZjBFndXQ==",
"version": "1.20250214.0",
"resolved": "https://registry.npmjs.org/@cloudflare/workerd-darwin-arm64/-/workerd-darwin-arm64-1.20250214.0.tgz",
"integrity": "sha512-NytCvRveVzu0mRKo+tvZo3d/gCUway3B2ZVqSi/TS6NXDGBYIJo7g6s3BnTLS74kgyzeDOjhu9j/RBJBS809qw==",
"cpu": [
"arm64"
],
@@ -241,9 +241,9 @@
}
},
"node_modules/@cloudflare/workerd-linux-64": {
"version": "1.20250204.0",
"resolved": "https://registry.npmjs.org/@cloudflare/workerd-linux-64/-/workerd-linux-64-1.20250204.0.tgz",
"integrity": "sha512-RIUfUSnDC8h73zAa+u1K2Frc7nc+eeQoBBP7SaqsRe6JdX8jfIv/GtWjQWCoj8xQFgLvhpJKZ4sTTTV+AilQbw==",
"version": "1.20250214.0",
"resolved": "https://registry.npmjs.org/@cloudflare/workerd-linux-64/-/workerd-linux-64-1.20250214.0.tgz",
"integrity": "sha512-pQ7+aHNHj8SiYEs4d/6cNoimE5xGeCMfgU1yfDFtA9YGN9Aj2BITZgOWPec+HW7ZkOy9oWlNrO6EvVjGgB4tbQ==",
"cpu": [
"x64"
],
@@ -258,9 +258,9 @@
}
},
"node_modules/@cloudflare/workerd-linux-arm64": {
"version": "1.20250204.0",
"resolved": "https://registry.npmjs.org/@cloudflare/workerd-linux-arm64/-/workerd-linux-arm64-1.20250204.0.tgz",
"integrity": "sha512-8Ql8jDjoIgr2J7oBD01kd9kduUz60njofrBpAOkjCPed15He8e8XHkYaYow3g0xpae4S2ryrPOeoD3M64sRxeg==",
"version": "1.20250214.0",
"resolved": "https://registry.npmjs.org/@cloudflare/workerd-linux-arm64/-/workerd-linux-arm64-1.20250214.0.tgz",
"integrity": "sha512-Vhlfah6Yd9ny1npNQjNgElLIjR6OFdEbuR3LCfbLDCwzWEBFhIf7yC+Tpp/a0Hq7kLz3sLdktaP7xl3PJhyOjA==",
"cpu": [
"arm64"
],
@@ -275,9 +275,9 @@
}
},
"node_modules/@cloudflare/workerd-windows-64": {
"version": "1.20250204.0",
"resolved": "https://registry.npmjs.org/@cloudflare/workerd-windows-64/-/workerd-windows-64-1.20250204.0.tgz",
"integrity": "sha512-RpDJO3+to+e17X3EWfRCagboZYwBz2fowc+jL53+fd7uD19v3F59H48lw2BDpHJMRyhg6ouWcpM94OhsHv8ecA==",
"version": "1.20250214.0",
"resolved": "https://registry.npmjs.org/@cloudflare/workerd-windows-64/-/workerd-windows-64-1.20250214.0.tgz",
"integrity": "sha512-GMwMyFbkjBKjYJoKDhGX8nuL4Gqe3IbVnVWf2Q6086CValyIknupk5J6uQWGw2EBU3RGO3x4trDXT5WphQJZDQ==",
"cpu": [
"x64"
],
@@ -2116,12 +2116,12 @@
}
},
"node_modules/@octokit/graphql": {
"version": "7.1.0",
"resolved": "https://registry.npmjs.org/@octokit/graphql/-/graphql-7.1.0.tgz",
"integrity": "sha512-r+oZUH7aMFui1ypZnAvZmn0KSqAUgE1/tUXIWaqUCa1758ts/Jio84GZuzsvUkme98kv0WFY8//n0J1Z+vsIsQ==",
"version": "7.1.1",
"resolved": "https://registry.npmjs.org/@octokit/graphql/-/graphql-7.1.1.tgz",
"integrity": "sha512-3mkDltSfcDUoa176nlGoA32RGjeWjl3K7F/BwHwRMJUW/IteSa4bnSV8p2ThNkcIcZU2umkZWxwETSSCJf2Q7g==",
"license": "MIT",
"dependencies": {
"@octokit/request": "^8.3.0",
"@octokit/request": "^8.4.1",
"@octokit/types": "^13.0.0",
"universal-user-agent": "^6.0.0"
},
@@ -3011,13 +3011,13 @@
}
},
"node_modules/@storybook/builder-vite": {
"version": "8.5.6",
"resolved": "https://registry.npmjs.org/@storybook/builder-vite/-/builder-vite-8.5.6.tgz",
"integrity": "sha512-uvNo8wAULW2+IOlsFCrszvH6juBDoOEYZIn0WLGzRKbMvLGt3j6CB6d2QjRrLs9p62ayia51fTpJfhIISM9new==",
"version": "8.5.8",
"resolved": "https://registry.npmjs.org/@storybook/builder-vite/-/builder-vite-8.5.8.tgz",
"integrity": "sha512-nm07wXP4MN7HlWqLRomSFHibwrwiY7V4kTohgsXSjTUod0J+xY+XvmkM4YRK2QYcUgVesG+Q2q3Q5NHof07sfg==",
"dev": true,
"license": "MIT",
"dependencies": {
"@storybook/csf-plugin": "8.5.6",
"@storybook/csf-plugin": "8.5.8",
"browser-assert": "^1.2.1",
"ts-dedent": "^2.0.0"
},
@@ -3026,14 +3026,31 @@
"url": "https://opencollective.com/storybook"
},
"peerDependencies": {
"storybook": "^8.5.6",
"storybook": "^8.5.8",
"vite": "^4.0.0 || ^5.0.0 || ^6.0.0"
}
},
"node_modules/@storybook/builder-vite/node_modules/@storybook/csf-plugin": {
"version": "8.5.8",
"resolved": "https://registry.npmjs.org/@storybook/csf-plugin/-/csf-plugin-8.5.8.tgz",
"integrity": "sha512-9p+TFutbvtPYEmg14UsvqBDWKP/p/+OkIdi+gkwCMw0yiJF/+7ErMHDB0vr5SpJpU7SFQmfpY2c/LaglEtaniw==",
"dev": true,
"license": "MIT",
"dependencies": {
"unplugin": "^1.3.1"
},
"funding": {
"type": "opencollective",
"url": "https://opencollective.com/storybook"
},
"peerDependencies": {
"storybook": "^8.5.8"
}
},
"node_modules/@storybook/components": {
"version": "8.5.6",
"resolved": "https://registry.npmjs.org/@storybook/components/-/components-8.5.6.tgz",
"integrity": "sha512-d2mhnnce2C03lRhBEtVR9lS78YueQGBS949R3QXPsEXmrkfDMpcnFI3DIOByjnea6ZeS0+i4lYjnfiAJb0oiMQ==",
"version": "8.5.8",
"resolved": "https://registry.npmjs.org/@storybook/components/-/components-8.5.8.tgz",
"integrity": "sha512-PPEMqWPXn7rX+qISaOOv9CDSuuvG538f0+4M5Ppq2LwpjXecgOG5ktqJF0ZqxmTytT+RpEaJmgjGW0dMAKZswA==",
"dev": true,
"license": "MIT",
"funding": {
@@ -3045,16 +3062,16 @@
}
},
"node_modules/@storybook/core": {
"version": "8.5.6",
"resolved": "https://registry.npmjs.org/@storybook/core/-/core-8.5.6.tgz",
"integrity": "sha512-ibgTGI3mcSsADABIQuhHWL8rxqF6CvooKIWpkZsB9kwNActS3OJzfCSAZDcgtvRkwaarPVjYX/sAOBzjqQNkXg==",
"version": "8.5.8",
"resolved": "https://registry.npmjs.org/@storybook/core/-/core-8.5.8.tgz",
"integrity": "sha512-OT02DQhkGpBgn5P+nZOZmbzxqubC4liVqbhpjp/HOGi5cOA3+fCJzDJeSDTu+pPh7dZnopC4XnR+5dWjtOJHdA==",
"dev": true,
"license": "MIT",
"dependencies": {
"@storybook/csf": "0.1.12",
"better-opn": "^3.0.2",
"browser-assert": "^1.2.1",
"esbuild": "^0.18.0 || ^0.19.0 || ^0.20.0 || ^0.21.0 || ^0.22.0 || ^0.23.0 || ^0.24.0",
"esbuild": "^0.18.0 || ^0.19.0 || ^0.20.0 || ^0.21.0 || ^0.22.0 || ^0.23.0 || ^0.24.0 || ^0.25.0",
"esbuild-register": "^3.5.0",
"jsdoc-type-pratt-parser": "^4.0.0",
"process": "^0.11.10",
@@ -3167,9 +3184,9 @@
}
},
"node_modules/@storybook/manager-api": {
"version": "8.5.6",
"resolved": "https://registry.npmjs.org/@storybook/manager-api/-/manager-api-8.5.6.tgz",
"integrity": "sha512-24Fm1LnRs1uCTMDid1Mmii0mQvmyM//IfzdtuVvzh0OSvatEKKLX+o3vdG/3/QCN1FVyq1hI9uHnkOaz6EuH4Q==",
"version": "8.5.8",
"resolved": "https://registry.npmjs.org/@storybook/manager-api/-/manager-api-8.5.8.tgz",
"integrity": "sha512-ik3yikvYxAJMDFg0s3Pm7hZWucAlkFaaO7e2RlfOctaJFdaEi3evR4RS7GdmS38uKBEk31RC7x+nnIJkqEC59A==",
"dev": true,
"license": "MIT",
"funding": {
@@ -3181,9 +3198,9 @@
}
},
"node_modules/@storybook/preview-api": {
"version": "8.5.6",
"resolved": "https://registry.npmjs.org/@storybook/preview-api/-/preview-api-8.5.6.tgz",
"integrity": "sha512-brT8jvw+QYoAyddOtPTqMc6tHDKye24oYkL5Bvp96nQi5AcNhkpL1eYfS7dtcQFV7j010Ox6RlzHPt+Ln8XB+Q==",
"version": "8.5.8",
"resolved": "https://registry.npmjs.org/@storybook/preview-api/-/preview-api-8.5.8.tgz",
"integrity": "sha512-HJoz2o28VVprnU5OG6JO6CHrD3ah6qVPWixbnmyUKd0hOYF5dayK5ptmeLyUpYX56Eb2KoYcuVaeQqAby4RkNw==",
"dev": true,
"license": "MIT",
"funding": {
@@ -3211,17 +3228,17 @@
}
},
"node_modules/@storybook/svelte": {
"version": "8.5.6",
"resolved": "https://registry.npmjs.org/@storybook/svelte/-/svelte-8.5.6.tgz",
"integrity": "sha512-NOF8mHJE+l9fpqSwpRdGxyIN4bqELTA9KnZkWJbbA13W5Yx0mNsPsPNaj+8HWsf41LewU82y6wLysxbb1bagpQ==",
"version": "8.5.8",
"resolved": "https://registry.npmjs.org/@storybook/svelte/-/svelte-8.5.8.tgz",
"integrity": "sha512-5K297CRMvsbDwrkIwSzyrDqfz6WigeO1OEvQeYVsyxGMK0OTZKeuouuRPIgXQvNIVf76Rm1hkGkhpUmtjwIKRA==",
"dev": true,
"license": "MIT",
"dependencies": {
"@storybook/components": "8.5.6",
"@storybook/components": "8.5.8",
"@storybook/global": "^5.0.0",
"@storybook/manager-api": "8.5.6",
"@storybook/preview-api": "8.5.6",
"@storybook/theming": "8.5.6",
"@storybook/manager-api": "8.5.8",
"@storybook/preview-api": "8.5.8",
"@storybook/theming": "8.5.8",
"sveltedoc-parser": "^4.2.1",
"ts-dedent": "^2.0.0",
"type-fest": "~2.19"
@@ -3234,19 +3251,19 @@
"url": "https://opencollective.com/storybook"
},
"peerDependencies": {
"storybook": "^8.5.6",
"storybook": "^8.5.8",
"svelte": "^4.0.0 || ^5.0.0"
}
},
"node_modules/@storybook/svelte-vite": {
"version": "8.5.6",
"resolved": "https://registry.npmjs.org/@storybook/svelte-vite/-/svelte-vite-8.5.6.tgz",
"integrity": "sha512-v7rY5f9hHuUDIaN62901L7Z92CoTFf30DJYI1A7ZnQ57BVtsv+ZhgUFAEr7d8fAQh3JHR4bhib7JR9TgcAySrw==",
"version": "8.5.8",
"resolved": "https://registry.npmjs.org/@storybook/svelte-vite/-/svelte-vite-8.5.8.tgz",
"integrity": "sha512-O/vo2FSaXKgBxwm5LRXdnzZASkQCeLGPh3dHKXmKVJMLqSn2qFozGvX5k1sw9XbB5eaKtJDbTT2IUxEocCVn/w==",
"dev": true,
"license": "MIT",
"dependencies": {
"@storybook/builder-vite": "8.5.6",
"@storybook/svelte": "8.5.6",
"@storybook/builder-vite": "8.5.8",
"@storybook/svelte": "8.5.8",
"magic-string": "^0.30.0",
"svelte-preprocess": "^5.1.1",
"svelte2tsx": "^0.7.13",
@@ -3263,22 +3280,22 @@
},
"peerDependencies": {
"@sveltejs/vite-plugin-svelte": "^2.0.0 || ^3.0.0 || ^4.0.0 || ^5.0.0",
"storybook": "^8.5.6",
"storybook": "^8.5.8",
"svelte": "^4.0.0 || ^5.0.0",
"vite": "^4.0.0 || ^5.0.0 || ^6.0.0"
}
},
"node_modules/@storybook/sveltekit": {
"version": "8.5.6",
"resolved": "https://registry.npmjs.org/@storybook/sveltekit/-/sveltekit-8.5.6.tgz",
"integrity": "sha512-XGQCuCkPdns6f//9ZxLgSg/8tsE+9coiTf4zk3XZzdvTbB2sQlH2FRq9p/gkOCgHrm9E5oqEOFJEEPm/6e/VHA==",
"version": "8.5.8",
"resolved": "https://registry.npmjs.org/@storybook/sveltekit/-/sveltekit-8.5.8.tgz",
"integrity": "sha512-JRbZwAXXdSxHlmrBHwdSYe2hv/ulOFsrZN7yV7zrnO7/2dE9gIeRh4lJuCvcNm8NNhxZiRyfBn4F6omw7D2/qg==",
"dev": true,
"license": "MIT",
"dependencies": {
"@storybook/addon-actions": "8.5.6",
"@storybook/builder-vite": "8.5.6",
"@storybook/svelte": "8.5.6",
"@storybook/svelte-vite": "8.5.6"
"@storybook/addon-actions": "8.5.8",
"@storybook/builder-vite": "8.5.8",
"@storybook/svelte": "8.5.8",
"@storybook/svelte-vite": "8.5.8"
},
"engines": {
"node": ">=18.0.0"
@@ -3288,11 +3305,32 @@
"url": "https://opencollective.com/storybook"
},
"peerDependencies": {
"storybook": "^8.5.6",
"storybook": "^8.5.8",
"svelte": "^4.0.0 || ^5.0.0",
"vite": "^4.0.0 || ^5.0.0 || ^6.0.0"
}
},
"node_modules/@storybook/sveltekit/node_modules/@storybook/addon-actions": {
"version": "8.5.8",
"resolved": "https://registry.npmjs.org/@storybook/addon-actions/-/addon-actions-8.5.8.tgz",
"integrity": "sha512-7J0NAz+WDw1NmvmKIh0Qr5cxgVRDPFC5fmngbDNxedk147TkwrgmqOypgEi/SAksHbTWxJclbimoqdcsNtWffA==",
"dev": true,
"license": "MIT",
"dependencies": {
"@storybook/global": "^5.0.0",
"@types/uuid": "^9.0.1",
"dequal": "^2.0.2",
"polished": "^4.2.2",
"uuid": "^9.0.0"
},
"funding": {
"type": "opencollective",
"url": "https://opencollective.com/storybook"
},
"peerDependencies": {
"storybook": "^8.5.8"
}
},
"node_modules/@storybook/test": {
"version": "8.5.6",
"resolved": "https://registry.npmjs.org/@storybook/test/-/test-8.5.6.tgz",
@@ -3328,9 +3366,9 @@
}
},
"node_modules/@storybook/theming": {
"version": "8.5.6",
"resolved": "https://registry.npmjs.org/@storybook/theming/-/theming-8.5.6.tgz",
"integrity": "sha512-WX0NjPn6sao56OCSm3NVPqBjFhLhMLPjjDwC4fHCW25HZgI+u7oByNk/7YHcxpBYtoHSWMKMiCjOSJuW6731+A==",
"version": "8.5.8",
"resolved": "https://registry.npmjs.org/@storybook/theming/-/theming-8.5.8.tgz",
"integrity": "sha512-/Rm6BV778sCT+3Ok861VYmw9BlEV5zcCq2zg5TOVuk8HqZw7H7VHtubVsjukEuhveYCs+oF+i2tv/II6jh6jdg==",
"dev": true,
"license": "MIT",
"funding": {
@@ -3894,9 +3932,9 @@
}
},
"node_modules/@vitest/coverage-v8": {
"version": "3.0.5",
"resolved": "https://registry.npmjs.org/@vitest/coverage-v8/-/coverage-v8-3.0.5.tgz",
"integrity": "sha512-zOOWIsj5fHh3jjGwQg+P+J1FW3s4jBu1Zqga0qW60yutsBtqEqNEJKWYh7cYn1yGD+1bdPsPdC/eL4eVK56xMg==",
"version": "3.0.6",
"resolved": "https://registry.npmjs.org/@vitest/coverage-v8/-/coverage-v8-3.0.6.tgz",
"integrity": "sha512-JRTlR8Bw+4BcmVTICa7tJsxqphAktakiLsAmibVLAWbu1lauFddY/tXeM6sAyl1cgkPuXtpnUgaCPhTdz1Qapg==",
"dev": true,
"license": "MIT",
"dependencies": {
@@ -3917,8 +3955,8 @@
"url": "https://opencollective.com/vitest"
},
"peerDependencies": {
"@vitest/browser": "3.0.5",
"vitest": "3.0.5"
"@vitest/browser": "3.0.6",
"vitest": "3.0.6"
},
"peerDependenciesMeta": {
"@vitest/browser": {
@@ -3982,13 +4020,13 @@
}
},
"node_modules/@vitest/mocker": {
"version": "3.0.5",
"resolved": "https://registry.npmjs.org/@vitest/mocker/-/mocker-3.0.5.tgz",
"integrity": "sha512-CLPNBFBIE7x6aEGbIjaQAX03ZZlBMaWwAjBdMkIf/cAn6xzLTiM3zYqO/WAbieEjsAZir6tO71mzeHZoodThvw==",
"version": "3.0.6",
"resolved": "https://registry.npmjs.org/@vitest/mocker/-/mocker-3.0.6.tgz",
"integrity": "sha512-KPztr4/tn7qDGZfqlSPQoF2VgJcKxnDNhmfR3VgZ6Fy1bO8T9Fc1stUiTXtqz0yG24VpD00pZP5f8EOFknjNuQ==",
"dev": true,
"license": "MIT",
"dependencies": {
"@vitest/spy": "3.0.5",
"@vitest/spy": "3.0.6",
"estree-walker": "^3.0.3",
"magic-string": "^0.30.17"
},
@@ -4009,9 +4047,9 @@
}
},
"node_modules/@vitest/mocker/node_modules/@vitest/spy": {
"version": "3.0.5",
"resolved": "https://registry.npmjs.org/@vitest/spy/-/spy-3.0.5.tgz",
"integrity": "sha512-5fOzHj0WbUNqPK6blI/8VzZdkBlQLnT25knX0r4dbZI9qoZDf3qAdjoMmDcLG5A83W6oUUFJgUd0EYBc2P5xqg==",
"version": "3.0.6",
"resolved": "https://registry.npmjs.org/@vitest/spy/-/spy-3.0.6.tgz",
"integrity": "sha512-HfOGx/bXtjy24fDlTOpgiAEJbRfFxoX3zIGagCqACkFKKZ/TTOE6gYMKXlqecvxEndKFuNHcHqP081ggZ2yM0Q==",
"dev": true,
"license": "MIT",
"dependencies": {
@@ -4035,23 +4073,23 @@
}
},
"node_modules/@vitest/runner": {
"version": "3.0.5",
"resolved": "https://registry.npmjs.org/@vitest/runner/-/runner-3.0.5.tgz",
"integrity": "sha512-BAiZFityFexZQi2yN4OX3OkJC6scwRo8EhRB0Z5HIGGgd2q+Nq29LgHU/+ovCtd0fOfXj5ZI6pwdlUmC5bpi8A==",
"version": "3.0.6",
"resolved": "https://registry.npmjs.org/@vitest/runner/-/runner-3.0.6.tgz",
"integrity": "sha512-JopP4m/jGoaG1+CBqubV/5VMbi7L+NQCJTu1J1Pf6YaUbk7bZtaq5CX7p+8sY64Sjn1UQ1XJparHfcvTTdu9cA==",
"dev": true,
"license": "MIT",
"dependencies": {
"@vitest/utils": "3.0.5",
"pathe": "^2.0.2"
"@vitest/utils": "3.0.6",
"pathe": "^2.0.3"
},
"funding": {
"url": "https://opencollective.com/vitest"
}
},
"node_modules/@vitest/runner/node_modules/@vitest/pretty-format": {
"version": "3.0.5",
"resolved": "https://registry.npmjs.org/@vitest/pretty-format/-/pretty-format-3.0.5.tgz",
"integrity": "sha512-CjUtdmpOcm4RVtB+up8r2vVDLR16Mgm/bYdkGFe3Yj/scRfCpbSi2W/BDSDcFK7ohw8UXvjMbOp9H4fByd/cOA==",
"version": "3.0.6",
"resolved": "https://registry.npmjs.org/@vitest/pretty-format/-/pretty-format-3.0.6.tgz",
"integrity": "sha512-Zyctv3dbNL+67qtHfRnUE/k8qxduOamRfAL1BurEIQSyOEFffoMvx2pnDSSbKAAVxY0Ej2J/GH2dQKI0W2JyVg==",
"dev": true,
"license": "MIT",
"dependencies": {
@@ -4062,14 +4100,14 @@
}
},
"node_modules/@vitest/runner/node_modules/@vitest/utils": {
"version": "3.0.5",
"resolved": "https://registry.npmjs.org/@vitest/utils/-/utils-3.0.5.tgz",
"integrity": "sha512-N9AX0NUoUtVwKwy21JtwzaqR5L5R5A99GAbrHfCCXK1lp593i/3AZAXhSP43wRQuxYsflrdzEfXZFo1reR1Nkg==",
"version": "3.0.6",
"resolved": "https://registry.npmjs.org/@vitest/utils/-/utils-3.0.6.tgz",
"integrity": "sha512-18ktZpf4GQFTbf9jK543uspU03Q2qya7ZGya5yiZ0Gx0nnnalBvd5ZBislbl2EhLjM8A8rt4OilqKG7QwcGkvQ==",
"dev": true,
"license": "MIT",
"dependencies": {
"@vitest/pretty-format": "3.0.5",
"loupe": "^3.1.2",
"@vitest/pretty-format": "3.0.6",
"loupe": "^3.1.3",
"tinyrainbow": "^2.0.0"
},
"funding": {
@@ -4087,24 +4125,24 @@
}
},
"node_modules/@vitest/snapshot": {
"version": "3.0.5",
"resolved": "https://registry.npmjs.org/@vitest/snapshot/-/snapshot-3.0.5.tgz",
"integrity": "sha512-GJPZYcd7v8QNUJ7vRvLDmRwl+a1fGg4T/54lZXe+UOGy47F9yUfE18hRCtXL5aHN/AONu29NGzIXSVFh9K0feA==",
"version": "3.0.6",
"resolved": "https://registry.npmjs.org/@vitest/snapshot/-/snapshot-3.0.6.tgz",
"integrity": "sha512-qKSmxNQwT60kNwwJHMVwavvZsMGXWmngD023OHSgn873pV0lylK7dwBTfYP7e4URy5NiBCHHiQGA9DHkYkqRqg==",
"dev": true,
"license": "MIT",
"dependencies": {
"@vitest/pretty-format": "3.0.5",
"@vitest/pretty-format": "3.0.6",
"magic-string": "^0.30.17",
"pathe": "^2.0.2"
"pathe": "^2.0.3"
},
"funding": {
"url": "https://opencollective.com/vitest"
}
},
"node_modules/@vitest/snapshot/node_modules/@vitest/pretty-format": {
"version": "3.0.5",
"resolved": "https://registry.npmjs.org/@vitest/pretty-format/-/pretty-format-3.0.5.tgz",
"integrity": "sha512-CjUtdmpOcm4RVtB+up8r2vVDLR16Mgm/bYdkGFe3Yj/scRfCpbSi2W/BDSDcFK7ohw8UXvjMbOp9H4fByd/cOA==",
"version": "3.0.6",
"resolved": "https://registry.npmjs.org/@vitest/pretty-format/-/pretty-format-3.0.6.tgz",
"integrity": "sha512-Zyctv3dbNL+67qtHfRnUE/k8qxduOamRfAL1BurEIQSyOEFffoMvx2pnDSSbKAAVxY0Ej2J/GH2dQKI0W2JyVg==",
"dev": true,
"license": "MIT",
"dependencies": {
@@ -7339,9 +7377,9 @@
}
},
"node_modules/miniflare": {
"version": "3.20250204.1",
"resolved": "https://registry.npmjs.org/miniflare/-/miniflare-3.20250204.1.tgz",
"integrity": "sha512-B4PQi/Ai4d0ZTWahQwsFe5WAfr1j8ISMYxJZTc56g2/btgbX+Go099LmojAZY/fMRLhIYsglcStW8SeW3f/afA==",
"version": "3.20250214.0",
"resolved": "https://registry.npmjs.org/miniflare/-/miniflare-3.20250214.0.tgz",
"integrity": "sha512-XKwn+X/V2CEpbRhoeaIcJHpV/Duz5Md5rxVT8I6S1oqd3aLZkn8cUX1tuxHpUvfQSPuXwWH+2ESLNnTf9PKEWg==",
"dev": true,
"license": "MIT",
"dependencies": {
@@ -7351,8 +7389,8 @@
"exit-hook": "2.2.1",
"glob-to-regexp": "0.4.1",
"stoppable": "1.1.0",
"undici": "^5.28.4",
"workerd": "1.20250204.0",
"undici": "^5.28.5",
"workerd": "1.20250214.0",
"ws": "8.18.0",
"youch": "3.2.3",
"zod": "3.22.3"
@@ -7364,6 +7402,28 @@
"node": ">=16.13"
}
},
"node_modules/miniflare/node_modules/ws": {
"version": "8.18.0",
"resolved": "https://registry.npmjs.org/ws/-/ws-8.18.0.tgz",
"integrity": "sha512-8VbfWfHLbbwu3+N6OKsOMpBdT4kXPDDB9cJk2bJ6mh9ucxdlnNvH1e+roYkKmN9Nxw2yjz7VzeO9oOz2zJ04Pw==",
"dev": true,
"license": "MIT",
"engines": {
"node": ">=10.0.0"
},
"peerDependencies": {
"bufferutil": "^4.0.1",
"utf-8-validate": ">=5.0.2"
},
"peerDependenciesMeta": {
"bufferutil": {
"optional": true
},
"utf-8-validate": {
"optional": true
}
}
},
"node_modules/minimatch": {
"version": "3.1.2",
"resolved": "https://registry.npmjs.org/minimatch/-/minimatch-3.1.2.tgz",
@@ -8962,13 +9022,13 @@
}
},
"node_modules/storybook": {
"version": "8.5.6",
"resolved": "https://registry.npmjs.org/storybook/-/storybook-8.5.6.tgz",
"integrity": "sha512-mrcYAA5CP6QBrq5O9grz2eqBoEfJNsK3b+Iz+PdGYqpr04oMC7rg1h80murV2pRwsbHxIWBFpLpXAVX8tMK01w==",
"version": "8.5.8",
"resolved": "https://registry.npmjs.org/storybook/-/storybook-8.5.8.tgz",
"integrity": "sha512-k3QDa7z4a656oO3Mx929KNm+xIdEI2nIDCKatVl1mA6vt+ge+uwoiG+ro182J9LOEppR5XXD2mQQi4u1xNsy6A==",
"dev": true,
"license": "MIT",
"dependencies": {
"@storybook/core": "8.5.6"
"@storybook/core": "8.5.8"
},
"bin": {
"getstorybook": "bin/index.cjs",
@@ -10332,13 +10392,13 @@
"license": "MIT"
},
"node_modules/vite": {
"version": "6.1.0",
"resolved": "https://registry.npmjs.org/vite/-/vite-6.1.0.tgz",
"integrity": "sha512-RjjMipCKVoR4hVfPY6GQTgveinjNuyLw+qruksLDvA5ktI1150VmcMBKmQaEWJhg/j6Uaf6dNCNA0AfdzUb/hQ==",
"version": "6.1.1",
"resolved": "https://registry.npmjs.org/vite/-/vite-6.1.1.tgz",
"integrity": "sha512-4GgM54XrwRfrOp297aIYspIti66k56v16ZnqHvrIM7mG+HjDlAwS7p+Srr7J6fGvEdOJ5JcQ/D9T7HhtdXDTzA==",
"license": "MIT",
"dependencies": {
"esbuild": "^0.24.2",
"postcss": "^8.5.1",
"postcss": "^8.5.2",
"rollup": "^4.30.1"
},
"bin": {
@@ -10403,16 +10463,16 @@
}
},
"node_modules/vite-node": {
"version": "3.0.5",
"resolved": "https://registry.npmjs.org/vite-node/-/vite-node-3.0.5.tgz",
"integrity": "sha512-02JEJl7SbtwSDJdYS537nU6l+ktdvcREfLksk/NDAqtdKWGqHl+joXzEubHROmS3E6pip+Xgu2tFezMu75jH7A==",
"version": "3.0.6",
"resolved": "https://registry.npmjs.org/vite-node/-/vite-node-3.0.6.tgz",
"integrity": "sha512-s51RzrTkXKJrhNbUzQRsarjmAae7VmMPAsRT7lppVpIg6mK3zGthP9Hgz0YQQKuNcF+Ii7DfYk3Fxz40jRmePw==",
"dev": true,
"license": "MIT",
"dependencies": {
"cac": "^6.7.14",
"debug": "^4.4.0",
"es-module-lexer": "^1.6.0",
"pathe": "^2.0.2",
"pathe": "^2.0.3",
"vite": "^5.0.0 || ^6.0.0"
},
"bin": {
@@ -10426,9 +10486,9 @@
}
},
"node_modules/vitefu": {
"version": "1.0.5",
"resolved": "https://registry.npmjs.org/vitefu/-/vitefu-1.0.5.tgz",
"integrity": "sha512-h4Vflt9gxODPFNGPwp4zAMZRpZR7eslzwH2c5hn5kNZ5rhnKyRJ50U+yGCdc2IRaBs8O4haIgLNGrV5CrpMsCA==",
"version": "1.0.6",
"resolved": "https://registry.npmjs.org/vitefu/-/vitefu-1.0.6.tgz",
"integrity": "sha512-+Rex1GlappUyNN6UfwbVZne/9cYC4+R2XDk9xkNXBKMw6HQagdX9PgZ8V2v1WUSK1wfBLp7qbI1+XSNIlB1xmA==",
"license": "MIT",
"workspaces": [
"tests/deps/*",
@@ -10444,31 +10504,31 @@
}
},
"node_modules/vitest": {
"version": "3.0.5",
"resolved": "https://registry.npmjs.org/vitest/-/vitest-3.0.5.tgz",
"integrity": "sha512-4dof+HvqONw9bvsYxtkfUp2uHsTN9bV2CZIi1pWgoFpL1Lld8LA1ka9q/ONSsoScAKG7NVGf2stJTI7XRkXb2Q==",
"version": "3.0.6",
"resolved": "https://registry.npmjs.org/vitest/-/vitest-3.0.6.tgz",
"integrity": "sha512-/iL1Sc5VeDZKPDe58oGK4HUFLhw6b5XdY1MYawjuSaDA4sEfYlY9HnS6aCEG26fX+MgUi7MwlduTBHHAI/OvMA==",
"dev": true,
"license": "MIT",
"dependencies": {
"@vitest/expect": "3.0.5",
"@vitest/mocker": "3.0.5",
"@vitest/pretty-format": "^3.0.5",
"@vitest/runner": "3.0.5",
"@vitest/snapshot": "3.0.5",
"@vitest/spy": "3.0.5",
"@vitest/utils": "3.0.5",
"chai": "^5.1.2",
"@vitest/expect": "3.0.6",
"@vitest/mocker": "3.0.6",
"@vitest/pretty-format": "^3.0.6",
"@vitest/runner": "3.0.6",
"@vitest/snapshot": "3.0.6",
"@vitest/spy": "3.0.6",
"@vitest/utils": "3.0.6",
"chai": "^5.2.0",
"debug": "^4.4.0",
"expect-type": "^1.1.0",
"magic-string": "^0.30.17",
"pathe": "^2.0.2",
"pathe": "^2.0.3",
"std-env": "^3.8.0",
"tinybench": "^2.9.0",
"tinyexec": "^0.3.2",
"tinypool": "^1.0.2",
"tinyrainbow": "^2.0.0",
"vite": "^5.0.0 || ^6.0.0",
"vite-node": "3.0.5",
"vite-node": "3.0.6",
"why-is-node-running": "^2.3.0"
},
"bin": {
@@ -10484,8 +10544,8 @@
"@edge-runtime/vm": "*",
"@types/debug": "^4.1.12",
"@types/node": "^18.0.0 || ^20.0.0 || >=22.0.0",
"@vitest/browser": "3.0.5",
"@vitest/ui": "3.0.5",
"@vitest/browser": "3.0.6",
"@vitest/ui": "3.0.6",
"happy-dom": "*",
"jsdom": "*"
},
@@ -10514,15 +10574,15 @@
}
},
"node_modules/vitest/node_modules/@vitest/expect": {
"version": "3.0.5",
"resolved": "https://registry.npmjs.org/@vitest/expect/-/expect-3.0.5.tgz",
"integrity": "sha512-nNIOqupgZ4v5jWuQx2DSlHLEs7Q4Oh/7AYwNyE+k0UQzG7tSmjPXShUikn1mpNGzYEN2jJbTvLejwShMitovBA==",
"version": "3.0.6",
"resolved": "https://registry.npmjs.org/@vitest/expect/-/expect-3.0.6.tgz",
"integrity": "sha512-zBduHf/ja7/QRX4HdP1DSq5XrPgdN+jzLOwaTq/0qZjYfgETNFCKf9nOAp2j3hmom3oTbczuUzrzg9Hafh7hNg==",
"dev": true,
"license": "MIT",
"dependencies": {
"@vitest/spy": "3.0.5",
"@vitest/utils": "3.0.5",
"chai": "^5.1.2",
"@vitest/spy": "3.0.6",
"@vitest/utils": "3.0.6",
"chai": "^5.2.0",
"tinyrainbow": "^2.0.0"
},
"funding": {
@@ -10530,9 +10590,9 @@
}
},
"node_modules/vitest/node_modules/@vitest/pretty-format": {
"version": "3.0.5",
"resolved": "https://registry.npmjs.org/@vitest/pretty-format/-/pretty-format-3.0.5.tgz",
"integrity": "sha512-CjUtdmpOcm4RVtB+up8r2vVDLR16Mgm/bYdkGFe3Yj/scRfCpbSi2W/BDSDcFK7ohw8UXvjMbOp9H4fByd/cOA==",
"version": "3.0.6",
"resolved": "https://registry.npmjs.org/@vitest/pretty-format/-/pretty-format-3.0.6.tgz",
"integrity": "sha512-Zyctv3dbNL+67qtHfRnUE/k8qxduOamRfAL1BurEIQSyOEFffoMvx2pnDSSbKAAVxY0Ej2J/GH2dQKI0W2JyVg==",
"dev": true,
"license": "MIT",
"dependencies": {
@@ -10543,9 +10603,9 @@
}
},
"node_modules/vitest/node_modules/@vitest/spy": {
"version": "3.0.5",
"resolved": "https://registry.npmjs.org/@vitest/spy/-/spy-3.0.5.tgz",
"integrity": "sha512-5fOzHj0WbUNqPK6blI/8VzZdkBlQLnT25knX0r4dbZI9qoZDf3qAdjoMmDcLG5A83W6oUUFJgUd0EYBc2P5xqg==",
"version": "3.0.6",
"resolved": "https://registry.npmjs.org/@vitest/spy/-/spy-3.0.6.tgz",
"integrity": "sha512-HfOGx/bXtjy24fDlTOpgiAEJbRfFxoX3zIGagCqACkFKKZ/TTOE6gYMKXlqecvxEndKFuNHcHqP081ggZ2yM0Q==",
"dev": true,
"license": "MIT",
"dependencies": {
@@ -10556,14 +10616,14 @@
}
},
"node_modules/vitest/node_modules/@vitest/utils": {
"version": "3.0.5",
"resolved": "https://registry.npmjs.org/@vitest/utils/-/utils-3.0.5.tgz",
"integrity": "sha512-N9AX0NUoUtVwKwy21JtwzaqR5L5R5A99GAbrHfCCXK1lp593i/3AZAXhSP43wRQuxYsflrdzEfXZFo1reR1Nkg==",
"version": "3.0.6",
"resolved": "https://registry.npmjs.org/@vitest/utils/-/utils-3.0.6.tgz",
"integrity": "sha512-18ktZpf4GQFTbf9jK543uspU03Q2qya7ZGya5yiZ0Gx0nnnalBvd5ZBislbl2EhLjM8A8rt4OilqKG7QwcGkvQ==",
"dev": true,
"license": "MIT",
"dependencies": {
"@vitest/pretty-format": "3.0.5",
"loupe": "^3.1.2",
"@vitest/pretty-format": "3.0.6",
"loupe": "^3.1.3",
"tinyrainbow": "^2.0.0"
},
"funding": {
@@ -10651,9 +10711,9 @@
}
},
"node_modules/workerd": {
"version": "1.20250204.0",
"resolved": "https://registry.npmjs.org/workerd/-/workerd-1.20250204.0.tgz",
"integrity": "sha512-zcKufjVFsQMiD3/acg1Ix00HIMCkXCrDxQXYRDn/1AIz3QQGkmbVDwcUk1Ki2jBUoXmBCMsJdycRucgMVEypWg==",
"version": "1.20250214.0",
"resolved": "https://registry.npmjs.org/workerd/-/workerd-1.20250214.0.tgz",
"integrity": "sha512-QWcqXZLiMpV12wiaVnb3nLmfs/g4ZsFQq2mX85z546r3AX4CTIkXl0VP50W3CwqLADej3PGYiRDOTelDOwVG1g==",
"dev": true,
"hasInstallScript": true,
"license": "Apache-2.0",
@@ -10664,11 +10724,11 @@
"node": ">=16"
},
"optionalDependencies": {
"@cloudflare/workerd-darwin-64": "1.20250204.0",
"@cloudflare/workerd-darwin-arm64": "1.20250204.0",
"@cloudflare/workerd-linux-64": "1.20250204.0",
"@cloudflare/workerd-linux-arm64": "1.20250204.0",
"@cloudflare/workerd-windows-64": "1.20250204.0"
"@cloudflare/workerd-darwin-64": "1.20250214.0",
"@cloudflare/workerd-darwin-arm64": "1.20250214.0",
"@cloudflare/workerd-linux-64": "1.20250214.0",
"@cloudflare/workerd-linux-arm64": "1.20250214.0",
"@cloudflare/workerd-windows-64": "1.20250214.0"
}
},
"node_modules/worktop": {
@@ -10686,9 +10746,9 @@
}
},
"node_modules/wrangler": {
"version": "3.109.1",
"resolved": "https://registry.npmjs.org/wrangler/-/wrangler-3.109.1.tgz",
"integrity": "sha512-1Jx+nZ6eCXPQ2rsGdrV6Qy/LGvhpqudeuTl4AYHl9P8Zugp44Uzxnj5w11qF4v/rv1dOZoA5TydSt9xMFfhpKg==",
"version": "3.109.3",
"resolved": "https://registry.npmjs.org/wrangler/-/wrangler-3.109.3.tgz",
"integrity": "sha512-T+SfFYEbkWDzf8WRR1JzaVKPH7wAzyciRIua8qszT+UqPqFNb6M5beCHHK/de7Zk5z6W5lvLly9SHToC11maDQ==",
"dev": true,
"license": "MIT OR Apache-2.0",
"dependencies": {
@@ -10697,10 +10757,10 @@
"@esbuild-plugins/node-modules-polyfill": "0.2.2",
"blake3-wasm": "2.1.5",
"esbuild": "0.17.19",
"miniflare": "3.20250204.1",
"miniflare": "3.20250214.0",
"path-to-regexp": "6.3.0",
"unenv": "2.0.0-rc.1",
"workerd": "1.20250204.0"
"workerd": "1.20250214.0"
},
"bin": {
"wrangler": "bin/wrangler.js",
@@ -10714,7 +10774,7 @@
"sharp": "^0.33.5"
},
"peerDependencies": {
"@cloudflare/workers-types": "^4.20250204.0"
"@cloudflare/workers-types": "^4.20250214.0"
},
"peerDependenciesMeta": {
"@cloudflare/workers-types": {
@@ -11226,9 +11286,9 @@
"license": "ISC"
},
"node_modules/ws": {
"version": "8.18.0",
"resolved": "https://registry.npmjs.org/ws/-/ws-8.18.0.tgz",
"integrity": "sha512-8VbfWfHLbbwu3+N6OKsOMpBdT4kXPDDB9cJk2bJ6mh9ucxdlnNvH1e+roYkKmN9Nxw2yjz7VzeO9oOz2zJ04Pw==",
"version": "8.18.1",
"resolved": "https://registry.npmjs.org/ws/-/ws-8.18.1.tgz",
"integrity": "sha512-RKW2aJZMXeMxVpnZ6bck+RswznaxmzdULiBr6KY7XkTnW8uvt0iT9H5DkHUChXrc+uurzwa0rVI16n/Xzjdz1w==",
"dev": true,
"license": "MIT",
"engines": {

View File

@@ -1,7 +1,8 @@
import { Node, Relationship, Date } from 'neo4j-driver';
import { Integer } from 'neo4j-driver';
interface PersonProperties {
export interface PersonProperties {
allow_admin_access: boolean;
id: string;
google_id: string;
first_name: string;
@@ -65,7 +66,7 @@ export type FamilyRelationship = Relationship<Integer, {
}>;
interface RecipeProperties {
export interface RecipeProperties {
id: string;
name: string;
origin: string;
@@ -79,11 +80,19 @@ interface RecipeProperties {
}
export type Recipe = Node<Integer, RecipeProperties>;
export type RecipeRelationship = Relationship<Integer, {
export type Likes = Relationship<Integer, {
favourite: boolean;
like_it: boolean;
could_make_it: boolean;
}>;
export interface FamilyTree {
ancestors: Person;
prel1: FamilyRelationship;
children: Person;
prel2: FamilyRelationship;
spouses: Person;
srel: FamilyRelationship;
user: Person;
}

View File

@@ -0,0 +1 @@
CREATE (p:Person $Person) RETURN p

View File

@@ -0,0 +1,7 @@
MATCH (n:Person { id: $person_id })-[p:Parent*1..]->(family:Person)
OPTIONAL MATCH (family)-[c:Child]->(children:Person)
WITH family, p, children, c, n
OPTIONAL MATCH (children)<-[p2:Parent]-(OtherParents:Person)
WITH family, p, children, c, OtherParents, p2, n
OPTIONAL MATCH (family)-[s:Spouse]-(spouse:Person)
RETURN family, p, children, c, OtherParents, p2, spouse, s, n;

View File

@@ -0,0 +1 @@
MATCH (n:Person) WHERE n.id = $id RETURN n AS people

View File

@@ -0,0 +1 @@
MATCH (n:Person) WHERE n.google_id = $google_id RETURN n as person

View File

@@ -0,0 +1 @@
MATCH (n:Person) WHERE n.id = $id RETURN n as person

View File

@@ -0,0 +1,17 @@
CREATE CONSTRAINT ON (n:Person) ASSERT EXISTS (n.id);
CREATE CONSTRAINT ON (n:Person) ASSERT EXISTS (n.last_name);
CREATE CONSTRAINT ON (n:Person) ASSERT EXISTS (n.first_name);
CREATE CONSTRAINT ON (n:Person) ASSERT EXISTS (n.born);
CREATE CONSTRAINT ON (n:Person) ASSERT EXISTS (n.mothers_first_name);
CREATE CONSTRAINT ON (n:Person) ASSERT EXISTS (n.mothers_last_name);
CREATE CONSTRAINT ON (n:Person) ASSERT n.id IS UNIQUE;
CREATE CONSTRAINT ON (n:Person) ASSERT n.google_id IS UNIQUE;
CREATE CONSTRAINT ON (n:Person) ASSERT n.last_name, n.first_name, n.born, n.mothers_first_name, n.mothers_last_name IS UNIQUE;
CREATE INDEX ON :Person(id);
CREATE INDEX ON :Person(google_id);
CREATE INDEX ON :Person(last_name);
CREATE INDEX ON :Person(first_name);
CREATE INDEX ON :Person(born);
CREATE INDEX ON :Person(mothers_first_name);
CREATE INDEX ON :Person(mothers_last_name);

View File

@@ -0,0 +1,4 @@
MATCH (n:Person {id: $id})
SET n:DeletedPerson
REMOVE n:Person
RETURN labels(n) AS labels, n AS person

View File

@@ -0,0 +1,3 @@
MATCH (n:Person $props)
SET n += $props
RETURN n AS person

View File

@@ -1,31 +1,22 @@
import type { Session } from 'neo4j-driver';
import type { Session, QueryResult, Transaction} from 'neo4j-driver';
import type{ Person,PersonProperties, FamilyTree } from '$lib/model';
import CreatePersonQuery from '$lib/server/queries/createPerson.cypher?raw';
import UpdatePersonQuery from '$lib/server/queries/updatePerson.cypher?raw';
export function createUser(db: Session, googleId: string, email: string, first_name: string, family_name: string, middle_name: string): User {
const row = db.run
if (row === null) {
throw new Error("Unexpected error");
}
const user: User = {
id: row.number(0),
googleId,
email,
};
return user;
export function createUser(db: Session, Person: PersonProperties): Promise<QueryResult<Person>> {
return db.executeWrite(tx => tx.run<Person>(
CreatePersonQuery, {Person})
);
}
export function getUserFromGoogleId(googleId: string): User | null {
const row = db.queryOne("SELECT id, google_id, email, name, picture FROM user WHERE google_id = ?", [googleId]);
if (row === null) {
return null;
}
const user: User = {
id: row.number(0),
googleId: row.string(1),
email: row.string(2),
name: row.string(3),
picture: row.string(4)
};
return user;
export function updateUser(db: Session, Person: PersonProperties): Promise<QueryResult<Person>> {
return db.executeWrite(tx => tx.run<Person>(
CreatePersonQuery, {Person})
);
}
export function getUserFromGoogleId(db: Session,googleId: string): Promise<QueryResult<Person>> {
return db.executeRead(tx => tx.run<Person>(""))
}
export interface User {