create-feathersdev 0.11.4 → 0.13.1
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/CHANGELOG.md +42 -83
- package/esm/actions/app.js +3 -3
- package/esm/actions/integrate.js +7 -5
- package/esm/actions/server.js +3 -3
- package/esm/base.js +5 -6
- package/esm/flows/check-login.js +4 -4
- package/esm/flows/with-application.js +8 -9
- package/esm/flows/with-organization.js +4 -4
- package/esm/index.js +3 -3
- package/package.json +13 -15
- package/examples/frontend/auth.ts +0 -39
- package/examples/frontend/react/.eslintrc.cjs +0 -18
- package/examples/frontend/react/README.md +0 -30
- package/examples/frontend/react/index.html +0 -18
- package/examples/frontend/react/package.json +0 -31
- package/examples/frontend/react/public/vite.svg +0 -1
- package/examples/frontend/react/src/App.css +0 -30
- package/examples/frontend/react/src/App.tsx +0 -33
- package/examples/frontend/react/src/Counter.tsx +0 -29
- package/examples/frontend/react/src/assets/feathers.svg +0 -24
- package/examples/frontend/react/src/auth.ts +0 -39
- package/examples/frontend/react/src/automerge.ts +0 -27
- package/examples/frontend/react/src/main.tsx +0 -9
- package/examples/frontend/react/src/vite-env.d.ts +0 -1
- package/examples/frontend/react/tsconfig.app.json +0 -27
- package/examples/frontend/react/tsconfig.json +0 -11
- package/examples/frontend/react/tsconfig.node.json +0 -13
- package/examples/frontend/react/vite.config.ts +0 -8
- package/examples/frontend/svelte/.vscode/extensions.json +0 -3
- package/examples/frontend/svelte/README.md +0 -47
- package/examples/frontend/svelte/index.html +0 -18
- package/examples/frontend/svelte/package.json +0 -25
- package/examples/frontend/svelte/public/vite.svg +0 -1
- package/examples/frontend/svelte/src/App.svelte +0 -30
- package/examples/frontend/svelte/src/Counter.svelte +0 -33
- package/examples/frontend/svelte/src/app.css +0 -30
- package/examples/frontend/svelte/src/assets/feathers.svg +0 -24
- package/examples/frontend/svelte/src/auth.ts +0 -39
- package/examples/frontend/svelte/src/automerge.ts +0 -27
- package/examples/frontend/svelte/src/main.ts +0 -9
- package/examples/frontend/svelte/src/vite-env.d.ts +0 -2
- package/examples/frontend/svelte/svelte.config.js +0 -7
- package/examples/frontend/svelte/tsconfig.json +0 -21
- package/examples/frontend/svelte/tsconfig.node.json +0 -12
- package/examples/frontend/svelte/vite.config.ts +0 -8
- package/examples/frontend/vanilla/index.html +0 -21
- package/examples/frontend/vanilla/package.json +0 -20
- package/examples/frontend/vanilla/public/feathers.svg +0 -24
- package/examples/frontend/vanilla/src/auth.ts +0 -39
- package/examples/frontend/vanilla/src/automerge.ts +0 -27
- package/examples/frontend/vanilla/src/main.ts +0 -35
- package/examples/frontend/vanilla/src/style.css +0 -30
- package/examples/frontend/vanilla/src/vite-env.d.ts +0 -1
- package/examples/frontend/vanilla/tsconfig.json +0 -23
- package/examples/frontend/vanilla/vite.config.ts +0 -8
- package/examples/frontend/vue/.vscode/extensions.json +0 -3
- package/examples/frontend/vue/README.md +0 -33
- package/examples/frontend/vue/env.d.ts +0 -1
- package/examples/frontend/vue/index.html +0 -18
- package/examples/frontend/vue/package.json +0 -29
- package/examples/frontend/vue/public/favicon.ico +0 -0
- package/examples/frontend/vue/src/App.vue +0 -34
- package/examples/frontend/vue/src/Counter.vue +0 -37
- package/examples/frontend/vue/src/assets/base.css +0 -30
- package/examples/frontend/vue/src/assets/feathers.svg +0 -24
- package/examples/frontend/vue/src/assets/main.css +0 -1
- package/examples/frontend/vue/src/auth.ts +0 -39
- package/examples/frontend/vue/src/automerge.ts +0 -27
- package/examples/frontend/vue/src/main.ts +0 -6
- package/examples/frontend/vue/tsconfig.app.json +0 -14
- package/examples/frontend/vue/tsconfig.json +0 -11
- package/examples/frontend/vue/tsconfig.node.json +0 -19
- package/examples/frontend/vue/vite.config.ts +0 -18
- package/examples/server/bun/README.md +0 -15
- package/examples/server/bun/bun.lockb +0 -0
- package/examples/server/bun/package.json +0 -17
- package/examples/server/bun/src/authenticate.ts +0 -17
- package/examples/server/bun/src/index.ts +0 -54
- package/examples/server/bun/tsconfig.json +0 -27
- package/examples/server/cloudflare/.editorconfig +0 -12
- package/examples/server/cloudflare/.prettierrc +0 -6
- package/examples/server/cloudflare/package.json +0 -22
- package/examples/server/cloudflare/src/authenticate.ts +0 -17
- package/examples/server/cloudflare/src/index.ts +0 -50
- package/examples/server/cloudflare/test/index.spec.ts +0 -25
- package/examples/server/cloudflare/test/tsconfig.json +0 -8
- package/examples/server/cloudflare/tsconfig.json +0 -105
- package/examples/server/cloudflare/vitest.config.mts +0 -11
- package/examples/server/cloudflare/worker-configuration.d.ts +0 -4
- package/examples/server/cloudflare/wrangler.toml +0 -108
- package/examples/server/deno/deno.lock +0 -79
- package/examples/server/deno/package.json +0 -13
- package/examples/server/deno/src/authenticate.ts +0 -17
- package/examples/server/deno/src/server.ts +0 -51
- package/examples/server/express/package.json +0 -24
- package/examples/server/express/src/app.ts +0 -26
- package/examples/server/express/src/authenticate.ts +0 -51
- package/examples/server/express/tsconfig.json +0 -108
- package/examples/server/nodejs/package.json +0 -20
- package/examples/server/nodejs/src/authenticate.ts +0 -28
- package/examples/server/nodejs/src/server.ts +0 -38
- package/examples/server/nodejs/tsconfig.json +0 -108
|
@@ -1,21 +0,0 @@
|
|
|
1
|
-
{
|
|
2
|
-
"extends": "@tsconfig/svelte/tsconfig.json",
|
|
3
|
-
"compilerOptions": {
|
|
4
|
-
"target": "ESNext",
|
|
5
|
-
"moduleDetection": "force",
|
|
6
|
-
"useDefineForClassFields": true,
|
|
7
|
-
"module": "ESNext",
|
|
8
|
-
"resolveJsonModule": true,
|
|
9
|
-
/**
|
|
10
|
-
* Typecheck JS in `.svelte` and `.js` files by default.
|
|
11
|
-
* Disable checkJs if you'd like to use dynamic types in JS.
|
|
12
|
-
* Note that setting allowJs false does not prevent the use
|
|
13
|
-
* of JS in `.svelte` files.
|
|
14
|
-
*/
|
|
15
|
-
"allowJs": true,
|
|
16
|
-
"checkJs": true,
|
|
17
|
-
"isolatedModules": true
|
|
18
|
-
},
|
|
19
|
-
"references": [{ "path": "./tsconfig.node.json" }],
|
|
20
|
-
"include": ["src/**/*.ts", "src/**/*.js", "src/**/*.svelte"]
|
|
21
|
-
}
|
|
@@ -1,12 +0,0 @@
|
|
|
1
|
-
{
|
|
2
|
-
"compilerOptions": {
|
|
3
|
-
"composite": true,
|
|
4
|
-
"tsBuildInfoFile": "./node_modules/.tmp/tsconfig.node.tsbuildinfo",
|
|
5
|
-
"module": "ESNext",
|
|
6
|
-
"moduleResolution": "bundler",
|
|
7
|
-
"strict": true,
|
|
8
|
-
"noEmit": true,
|
|
9
|
-
"skipLibCheck": true
|
|
10
|
-
},
|
|
11
|
-
"include": ["vite.config.ts"]
|
|
12
|
-
}
|
|
@@ -1,21 +0,0 @@
|
|
|
1
|
-
<!doctype html>
|
|
2
|
-
<html lang="en">
|
|
3
|
-
|
|
4
|
-
<head>
|
|
5
|
-
<meta charset="UTF-8" />
|
|
6
|
-
<link rel="icon" type="image/svg+xml" href="/vite.svg" />
|
|
7
|
-
<meta name="viewport" content="width=device-width, initial-scale=1.0" />
|
|
8
|
-
<link href="https://cdn.jsdelivr.net/npm/daisyui@5" rel="stylesheet" type="text/css" />
|
|
9
|
-
<script src="https://cdn.jsdelivr.net/npm/@tailwindcss/browser@4"></script>
|
|
10
|
-
<title>feathers.dev TypeScript App</title>
|
|
11
|
-
</head>
|
|
12
|
-
|
|
13
|
-
<body>
|
|
14
|
-
<main class="w-96 mx-auto flex flex-col gap-4 text-center pt-10">
|
|
15
|
-
<img src="/feathers.svg" alt="feathers.dev Logo" />
|
|
16
|
-
<div id="app" class="flex flex-col gap-4"> Loading... </div>
|
|
17
|
-
</main>
|
|
18
|
-
<script type="module" src="/src/main.ts"></script>
|
|
19
|
-
</body>
|
|
20
|
-
|
|
21
|
-
</html>
|
|
@@ -1,20 +0,0 @@
|
|
|
1
|
-
{
|
|
2
|
-
"name": "feathersdev-vanilla",
|
|
3
|
-
"type": "module",
|
|
4
|
-
"version": "0.0.0",
|
|
5
|
-
"private": true,
|
|
6
|
-
"scripts": {
|
|
7
|
-
"dev": "vite --port 4040",
|
|
8
|
-
"build": "tsc && vite build",
|
|
9
|
-
"preview": "vite preview"
|
|
10
|
-
},
|
|
11
|
-
"dependencies": {
|
|
12
|
-
"@feathersdev/auth": "^0.11.0",
|
|
13
|
-
"@feathersdev/automerge": "^0.11.0"
|
|
14
|
-
},
|
|
15
|
-
"devDependencies": {
|
|
16
|
-
"typescript": "^5.6.3",
|
|
17
|
-
"vite": "^5.4.11",
|
|
18
|
-
"vite-plugin-wasm": "^3.4.1"
|
|
19
|
-
}
|
|
20
|
-
}
|
|
@@ -1,24 +0,0 @@
|
|
|
1
|
-
<svg width="607" height="99" viewBox="0 0 607 99" fill="none" xmlns="http://www.w3.org/2000/svg">
|
|
2
|
-
<g clip-path="url(#clip0_3_192)">
|
|
3
|
-
<path d="M63.3 0C59.1 0 55 1.7 52 4.7L50.9 5.8C50.4 13.8 47.7 21.1 43.5 27.8C45 21.4 45.7 15.7 44.6 12.1L35.2 21.5C34.7 29.5 32 36.7 27.8 43.3C29.5 36.9 30 31.7 29.3 27.3L19.5 37.1C15.9 40.6 13.9 45.5 13.9 50.5V79.1L3.9 88.9C1.4 91.2 0 94.5 0 97.9V98.7L73.4 25.9C80.3 19.1 84.1 9.8 84.2 0.1H63.4L63.3 0Z" fill="white"/>
|
|
4
|
-
<path d="M57.6 61.4L77.8 41.3C81.8 37.4 84 32 84 26.4V14.2C83.3 16.9 82.4 19.4 81 21.4C78.3 25.1 75.4 28.5 72.1 31.8L37.4 66.3L50.8 64.7C53.3 64.4 55.7 63.3 57.4 61.5L57.6 61.4Z" fill="white"/>
|
|
5
|
-
<path d="M33.7 70L17.4 86.2L26.6 86.4C30.3 86.4 33.8 85 36.4 82.5L52.1 66.9C51 67.6 50.1 67.9 49 68.2L33.7 70Z" fill="white"/>
|
|
6
|
-
<path d="M189.7 64.6H153.8C154 67.8 155.1 70.3 156.9 72C158.7 73.7 161 74.5 163.6 74.5C167.6 74.5 170.3 72.8 171.8 69.5H188.7C187.8 72.9 186.3 76 184 78.7C181.7 81.4 178.9 83.5 175.5 85.1C172.1 86.6 168.3 87.4 164.1 87.4C159.9 87.4 154.5 86.3 150.6 84.2C146.6 82 143.6 79 141.3 74.9C139.1 70.9 138 66.2 138 60.8C138 55.4 139.1 50.7 141.3 46.7C143.5 42.7 146.6 39.6 150.5 37.4C154.5 35.2 159 34.2 164.1 34.2C169.2 34.2 173.6 35.3 177.4 37.4C181.3 39.5 184.3 42.5 186.5 46.4C188.7 50.3 189.8 54.8 189.8 60C189.8 65.2 189.8 63 189.5 64.6H189.7ZM173.8 55.8C173.8 53.1 172.9 50.9 171 49.3C169.1 47.7 166.8 46.9 164.1 46.9C161.4 46.9 159.2 47.7 157.4 49.2C155.6 50.7 154.4 52.9 154 55.8H173.8Z" fill="white"/>
|
|
7
|
-
<path d="M198.2 46.7C200.2 42.7 202.9 39.6 206.4 37.4C209.9 35.2 213.7 34.2 218 34.2C222.3 34.2 224.8 34.9 227.6 36.4C230.3 37.9 232.5 39.8 233.9 42.2V34.9H249.7V86.6H233.9V79.3C232.4 81.7 230.2 83.7 227.5 85.1C224.8 86.6 221.6 87.3 217.9 87.3C214.2 87.3 209.9 86.2 206.4 84C202.9 81.8 200.2 78.7 198.2 74.6C196.2 70.6 195.2 65.9 195.2 60.6C195.2 55.3 196.2 50.6 198.2 46.6V46.7ZM230.6 51.4C228.4 49.1 225.7 48 222.6 48C219.5 48 216.8 49.1 214.6 51.4C212.4 53.7 211.3 56.8 211.3 60.7C211.3 64.6 212.4 67.8 214.6 70.1C216.8 72.4 219.5 73.6 222.6 73.6C225.7 73.6 228.4 72.5 230.6 70.2C232.8 67.9 233.9 64.8 233.9 60.8C233.9 56.8 232.8 53.7 230.6 51.4Z" fill="white"/>
|
|
8
|
-
<path d="M290.1 73.2V86.6H282C276.3 86.6 271.8 85.2 268.6 82.4C265.4 79.6 263.8 75 263.8 68.6V48H257.5V34.8H263.8V22.2H279.6V34.8H290V48H279.6V68.8C279.6 70.3 280 71.5 280.7 72.1C281.4 72.8 282.7 73.1 284.4 73.1H290.1V73.2Z" fill="white"/>
|
|
9
|
-
<path d="M409.8 64.6H373.9C374.1 67.8 375.2 70.3 377 72C378.8 73.7 381.1 74.5 383.7 74.5C387.7 74.5 390.4 72.8 391.9 69.5H408.8C407.9 72.9 406.4 76 404.1 78.7C401.8 81.4 399 83.5 395.6 85.1C392.2 86.6 388.4 87.4 384.2 87.4C380 87.4 374.6 86.3 370.7 84.2C366.7 82 363.7 79 361.4 74.9C359.2 70.9 358.1 66.2 358.1 60.8C358.1 55.4 359.2 50.7 361.4 46.7C363.6 42.7 366.7 39.6 370.6 37.4C374.6 35.2 379.1 34.2 384.2 34.2C389.3 34.2 393.7 35.3 397.5 37.4C401.4 39.5 404.4 42.5 406.6 46.4C408.8 50.3 409.9 54.8 409.9 60C409.9 65.2 409.9 63 409.6 64.6H409.8ZM393.8 55.8C393.8 53.1 392.9 50.9 391 49.3C389.1 47.7 386.8 46.9 384.1 46.9C381.4 46.9 379.2 47.7 377.4 49.2C375.6 50.7 374.4 52.9 374 55.8H393.8Z" fill="white"/>
|
|
10
|
-
<path d="M467 85C463.5 83.5 460.7 81.3 458.7 78.7C456.7 76 455.5 73 455.3 69.7H471C471.2 71.5 472 72.9 473.5 74.1C475 75.2 476.8 75.8 479 75.8C481.2 75.8 482.5 75.4 483.6 74.6C484.7 73.8 485.2 72.8 485.2 71.6C485.2 70.4 484.4 69 482.9 68.3C481.4 67.6 478.9 66.8 475.4 65.9C471.7 65 468.6 64.1 466.1 63.2C463.6 62.2 461.5 60.7 459.7 58.7C457.9 56.6 457 53.8 457 50.3C457 46.8 457.8 44.6 459.5 42.2C461.1 39.8 463.5 37.8 466.7 36.4C469.9 35 473.7 34.3 478 34.3C484.5 34.3 489.6 35.9 493.3 39.1C497 42.3 499.2 46.6 499.7 51.9H485.1C484.9 50.1 484.1 48.7 482.7 47.6C481.4 46.6 479.6 46 477.5 46C475.4 46 474.2 46.4 473.2 47.1C472.2 47.8 471.7 48.8 471.7 50C471.7 51.2 472.5 52.6 474.1 53.3C475.7 54 478.1 54.8 481.5 55.5C485.3 56.5 488.4 57.5 490.9 58.4C493.3 59.4 495.4 60.9 497.2 63C499 65.1 500 68 500 71.6C500 74.6 499.2 77.3 497.5 79.7C495.8 82.1 493.4 83.9 490.2 85.3C487 86.7 483.3 87.3 479.1 87.3C474.9 87.3 470.6 86.5 467.1 85H467Z" fill="white"/>
|
|
11
|
-
<path d="M344.9 40.3C341.3 36.4 336.6 34.4 330.6 34.4C324.6 34.4 324 35.1 321.2 36.4C318.4 37.8 316.2 39.6 314.6 41.9V18.1H298.8V86.7H314.6V65.5C314.6 65.5 314.6 56.7 315 55.1C315.4 53.5 315.3 54.1 315.5 53.6C315.9 52.5 316.5 51.5 317.3 50.7C319.1 48.8 321.5 47.8 324.5 47.8C327.5 47.8 329.9 48.8 331.7 50.7C333.5 52.6 334.4 55.3 334.4 58.8V86.9H350.2V56.7C350.2 49.8 348.4 44.5 344.8 40.5L344.9 40.3Z" fill="white"/>
|
|
12
|
-
<path d="M113 75.8C118.7 72.3 125.1 66.9 125.3 60C125.3 58 125.3 55.8 125.3 53.5V48.2H133.8V35H125.3V34.5C125.3 31.8 125.9 29.9 127.2 28.8C128.4 27.8 130.6 27.3 133.6 27.5V14.1C133 14.1 132.2 14.1 131 14.1C124 14.1 118.6 15.8 115 19.1C111.4 22.4 109.5 27.2 109.5 33.6V35.1H103.8V48.3H109.5V86.8H125.3V74.5C121.1 76.2 116.7 76.9 113 75.9V75.8Z" fill="white"/>
|
|
13
|
-
<path d="M441.2 36.8C438.4 38.4 436.1 40.7 434.3 43.5V34.9H418.5V39.2C419.4 46.1 426.9 52.8 431.7 57.1C427.8 57.5 423 56.2 418.5 53.9V86.6H434.3V62.6C434.3 58.3 435.3 55.4 437.3 53.7C439.3 52 442.2 51.2 446.2 51.2H450.6V34.4C447.2 34.4 444.1 35.2 441.3 36.9L441.2 36.8Z" fill="white"/>
|
|
14
|
-
<path d="M509.4 84.2C508.8 83.6 508.4 82.8 508.4 81.8C508.4 80.8 508.7 80.1 509.4 79.4C510.1 78.7 510.8 78.4 511.8 78.4C512.8 78.4 513.5 78.7 514.1 79.4C514.7 80 515.1 80.8 515.1 81.8C515.1 82.8 514.8 83.5 514.1 84.2C513.5 84.8 512.7 85.2 511.8 85.2C510.9 85.2 510.1 84.9 509.4 84.2Z" fill="white"/>
|
|
15
|
-
<path d="M522 65.3C523.1 63.3 524.5 61.8 526.3 60.7C528.1 59.6 530.2 59.1 532.4 59.1C534.6 59.1 535.7 59.5 537.3 60.2C538.9 60.9 540.2 61.9 541.1 63.1V50.9H546.4V84.9H541.1V81.1C540.2 82.3 539.1 83.3 537.5 84.1C535.9 84.9 534.2 85.3 532.3 85.3C530.4 85.3 528.1 84.7 526.3 83.6C524.5 82.5 523 80.9 522 78.9C520.9 76.9 520.4 74.6 520.4 72.1C520.4 69.6 520.9 67.3 522 65.3ZM540 67.6C539.3 66.3 538.3 65.3 537.2 64.7C536 64 534.8 63.7 533.4 63.7C532 63.7 530.8 64 529.6 64.7C528.4 65.4 527.5 66.3 526.8 67.6C526.1 68.9 525.7 70.4 525.7 72.1C525.7 73.8 526.1 75.4 526.8 76.7C527.5 78 528.5 79 529.7 79.7C530.9 80.4 532.1 80.7 533.4 80.7C534.7 80.7 536 80.4 537.2 79.7C538.4 79 539.3 78 540 76.7C540.7 75.4 541.1 73.9 541.1 72.1C541.1 70.3 540.7 68.8 540 67.5V67.6Z" fill="white"/>
|
|
16
|
-
<path d="M577.7 74.1H558.3C558.5 76.1 559.2 77.7 560.6 79C561.9 80.2 563.6 80.8 565.6 80.8C568.4 80.8 570.4 79.6 571.6 77.3H577.3C576.5 79.6 575.1 81.5 573.1 83C571.1 84.5 568.6 85.2 565.6 85.2C562.6 85.2 561 84.7 559.1 83.6C557.2 82.5 555.7 81 554.6 79C553.5 77 553 74.7 553 72.1C553 69.5 553.5 67.2 554.6 65.2C555.7 63.2 557.1 61.7 559.1 60.6C561 59.5 563.2 59 565.7 59C568.2 59 570.2 59.5 572.1 60.6C574 61.6 575.4 63.1 576.5 65C577.5 66.9 578.1 69.1 578.1 71.5C578.1 73.9 578.1 73.3 577.9 74.1H577.7ZM572.4 69.9C572.4 68 571.7 66.4 570.3 65.3C568.9 64.1 567.3 63.6 565.3 63.6C563.3 63.6 561.9 64.2 560.7 65.3C559.4 66.5 558.6 68 558.4 70H572.4V69.9Z" fill="white"/>
|
|
17
|
-
<path d="M594.2 80.2L601.4 59.5H607L597.3 84.8H591L581.4 59.5H587L594.2 80.2Z" fill="white"/>
|
|
18
|
-
</g>
|
|
19
|
-
<defs>
|
|
20
|
-
<clipPath id="clip0_3_192">
|
|
21
|
-
<rect width="607" height="98.7" fill="white"/>
|
|
22
|
-
</clipPath>
|
|
23
|
-
</defs>
|
|
24
|
-
</svg>
|
|
@@ -1,39 +0,0 @@
|
|
|
1
|
-
import { createClient } from '@feathersdev/auth'
|
|
2
|
-
|
|
3
|
-
/**
|
|
4
|
-
* This is your public application id
|
|
5
|
-
*/
|
|
6
|
-
export const appId = '<your-app-id>'
|
|
7
|
-
|
|
8
|
-
/**
|
|
9
|
-
* The Feathers auth client instance. You can use it to get a token,
|
|
10
|
-
* retrieve the current user and to log in and out.
|
|
11
|
-
*/
|
|
12
|
-
export const auth = createClient({
|
|
13
|
-
appId,
|
|
14
|
-
onLoginRequired: async (error) => {
|
|
15
|
-
// Redirect to login page if a login is required
|
|
16
|
-
// You can also do other things here like show a modal before redirecting
|
|
17
|
-
window.location.href = await auth.getLoginUrl(error)
|
|
18
|
-
},
|
|
19
|
-
})
|
|
20
|
-
|
|
21
|
-
/**
|
|
22
|
-
* Make an authenticated request to a server using the standard fetch API.
|
|
23
|
-
* Will redirect to the login page instead if the user needs to log in.
|
|
24
|
-
*
|
|
25
|
-
* @param url The URL for the request
|
|
26
|
-
* @param options Additional request options.
|
|
27
|
-
* @returns The fetch response
|
|
28
|
-
*/
|
|
29
|
-
export async function authFetch(url: string, options?: RequestInit) {
|
|
30
|
-
const headers = new Headers(options?.headers)
|
|
31
|
-
|
|
32
|
-
// Set the authorization header with the Feathers Auth token
|
|
33
|
-
headers.set('Authorization', await auth.getHeader())
|
|
34
|
-
|
|
35
|
-
return fetch(url, {
|
|
36
|
-
...options,
|
|
37
|
-
headers,
|
|
38
|
-
})
|
|
39
|
-
}
|
|
@@ -1,27 +0,0 @@
|
|
|
1
|
-
import { createAutomerge, DocHandle } from '@feathersdev/automerge'
|
|
2
|
-
import { auth } from './auth.js'
|
|
3
|
-
|
|
4
|
-
/**
|
|
5
|
-
* The Feathers Automerge client. Use it to retrieve the document
|
|
6
|
-
* for your application with `automerge.find()`.
|
|
7
|
-
*/
|
|
8
|
-
export const automerge = createAutomerge(auth)
|
|
9
|
-
|
|
10
|
-
/**
|
|
11
|
-
* Add types for any data you want to store for your application
|
|
12
|
-
*/
|
|
13
|
-
export interface AppData {
|
|
14
|
-
counter: number
|
|
15
|
-
}
|
|
16
|
-
|
|
17
|
-
/**
|
|
18
|
-
* The document handle type for the application
|
|
19
|
-
*/
|
|
20
|
-
export type AppDocumentHandle = DocHandle<AppData>
|
|
21
|
-
|
|
22
|
-
/**
|
|
23
|
-
* Load the document for the application
|
|
24
|
-
*/
|
|
25
|
-
export async function loadAppDocument(): Promise<AppDocumentHandle> {
|
|
26
|
-
return automerge.find<AppData>()
|
|
27
|
-
}
|
|
@@ -1,35 +0,0 @@
|
|
|
1
|
-
import { auth } from './auth.js'
|
|
2
|
-
import { loadAppDocument } from './automerge.js'
|
|
3
|
-
import './style.css'
|
|
4
|
-
|
|
5
|
-
async function main () {
|
|
6
|
-
const handle = await loadAppDocument()
|
|
7
|
-
const user = await auth.getUser()
|
|
8
|
-
|
|
9
|
-
document.querySelector<HTMLDivElement>('#app')!.innerHTML = `
|
|
10
|
-
<h2 class="text-2xl">Hello <strong>${user?.email}</strong></h2>
|
|
11
|
-
<div class="card bg-base-300 mx-auto rounded-4xl">
|
|
12
|
-
<div class="card-body">
|
|
13
|
-
<h2 class="text-2xl">Community Counter</h2>
|
|
14
|
-
<p class="text-sm">Number of times clicked by everybody</p>
|
|
15
|
-
<strong id="counter" class="text-3xl pt-2 pb-3">0</strong>
|
|
16
|
-
<button id="increment" class="btn btn-primary">
|
|
17
|
-
Increment
|
|
18
|
-
</button>
|
|
19
|
-
</div>
|
|
20
|
-
</div>
|
|
21
|
-
`
|
|
22
|
-
|
|
23
|
-
handle.on('change', ({ doc }) => {
|
|
24
|
-
document.getElementById('counter')!.textContent = doc.counter.toString()
|
|
25
|
-
})
|
|
26
|
-
|
|
27
|
-
// Handle #increment button click
|
|
28
|
-
document.getElementById('increment')!.addEventListener('click', () => {
|
|
29
|
-
handle.change((doc) => {
|
|
30
|
-
doc.counter = (doc.counter || 0) + 1
|
|
31
|
-
})
|
|
32
|
-
})
|
|
33
|
-
}
|
|
34
|
-
|
|
35
|
-
main()
|
|
@@ -1,30 +0,0 @@
|
|
|
1
|
-
:root {
|
|
2
|
-
--color-base-100: oklch(3.6% 0.01 270);
|
|
3
|
-
--color-base-200: oklch(15% 19% 307);
|
|
4
|
-
--color-base-300: oklch(35% 44% 287);
|
|
5
|
-
--color-base-300-old: oklch(17.6% 0.04 270);
|
|
6
|
-
--color-base-content: oklch(93.3% 0.01 260);
|
|
7
|
-
--color-primary: oklch(48% 39% 348);
|
|
8
|
-
--color-primary-content: oklch(100% 0 0);
|
|
9
|
-
--color-secondary: oklch(91.9% 0.13 99.9);
|
|
10
|
-
--color-secondary-content: oklch(0% 0 0);
|
|
11
|
-
--color-accent: oklch(34.1% 0.13 297.4);
|
|
12
|
-
--color-accent-content: oklch(100% 0 0);
|
|
13
|
-
--color-neutral: oklch(20.1% 0.05 260.7);
|
|
14
|
-
--color-neutral-content: oklch(100% 0 0);
|
|
15
|
-
--color-info: oklch(56.8% 0.14 255.1);
|
|
16
|
-
--color-info-content: oklch(94.5% 0.01 230);
|
|
17
|
-
--color-success: oklch(77.1% 0.13 149.9);
|
|
18
|
-
--color-warning-content: oklch(94.5% 0.01 230);
|
|
19
|
-
--color-error: oklch(64.1% 0.21 29.3);
|
|
20
|
-
--color-error-content: oklch(94.5% 0.01 230);
|
|
21
|
-
--radius-selector: 1rem;
|
|
22
|
-
--radius-field: 1rem;
|
|
23
|
-
--radius-box: 0.5rem;
|
|
24
|
-
--size-selector: 0.25rem;
|
|
25
|
-
--size-field: 0.25rem;
|
|
26
|
-
--border: 1px;
|
|
27
|
-
--depth: 1;
|
|
28
|
-
--noise: 0;
|
|
29
|
-
--invert-logo: 0;
|
|
30
|
-
}
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
/// <reference types="vite/client" />
|
|
@@ -1,23 +0,0 @@
|
|
|
1
|
-
{
|
|
2
|
-
"compilerOptions": {
|
|
3
|
-
"target": "ES2020",
|
|
4
|
-
"useDefineForClassFields": true,
|
|
5
|
-
"module": "ESNext",
|
|
6
|
-
"lib": ["ES2020", "DOM", "DOM.Iterable"],
|
|
7
|
-
"skipLibCheck": true,
|
|
8
|
-
|
|
9
|
-
/* Bundler mode */
|
|
10
|
-
"moduleResolution": "bundler",
|
|
11
|
-
"allowImportingTsExtensions": true,
|
|
12
|
-
"resolveJsonModule": true,
|
|
13
|
-
"isolatedModules": true,
|
|
14
|
-
"noEmit": true,
|
|
15
|
-
|
|
16
|
-
/* Linting */
|
|
17
|
-
"strict": true,
|
|
18
|
-
"noUnusedLocals": true,
|
|
19
|
-
"noUnusedParameters": true,
|
|
20
|
-
"noFallthroughCasesInSwitch": true
|
|
21
|
-
},
|
|
22
|
-
"include": ["src"]
|
|
23
|
-
}
|
|
@@ -1,33 +0,0 @@
|
|
|
1
|
-
# vue-app
|
|
2
|
-
|
|
3
|
-
This template should help get you started developing with Vue 3 in Vite.
|
|
4
|
-
|
|
5
|
-
## Recommended IDE Setup
|
|
6
|
-
|
|
7
|
-
[VSCode](https://code.visualstudio.com/) + [Volar](https://marketplace.visualstudio.com/items?itemName=Vue.volar) (and disable Vetur).
|
|
8
|
-
|
|
9
|
-
## Type Support for `.vue` Imports in TS
|
|
10
|
-
|
|
11
|
-
TypeScript cannot handle type information for `.vue` imports by default, so we replace the `tsc` CLI with `vue-tsc` for type checking. In editors, we need [Volar](https://marketplace.visualstudio.com/items?itemName=Vue.volar) to make the TypeScript language service aware of `.vue` types.
|
|
12
|
-
|
|
13
|
-
## Customize configuration
|
|
14
|
-
|
|
15
|
-
See [Vite Configuration Reference](https://vitejs.dev/config/).
|
|
16
|
-
|
|
17
|
-
## Project Setup
|
|
18
|
-
|
|
19
|
-
```sh
|
|
20
|
-
npm install
|
|
21
|
-
```
|
|
22
|
-
|
|
23
|
-
### Compile and Hot-Reload for Development
|
|
24
|
-
|
|
25
|
-
```sh
|
|
26
|
-
npm run dev
|
|
27
|
-
```
|
|
28
|
-
|
|
29
|
-
### Type-Check, Compile and Minify for Production
|
|
30
|
-
|
|
31
|
-
```sh
|
|
32
|
-
npm run build
|
|
33
|
-
```
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
/// <reference types="vite/client" />
|
|
@@ -1,18 +0,0 @@
|
|
|
1
|
-
<!DOCTYPE html>
|
|
2
|
-
<html lang="en">
|
|
3
|
-
|
|
4
|
-
<head>
|
|
5
|
-
<meta charset="UTF-8">
|
|
6
|
-
<link rel="icon" href="/favicon.ico">
|
|
7
|
-
<meta name="viewport" content="width=device-width, initial-scale=1.0">
|
|
8
|
-
<link href="https://cdn.jsdelivr.net/npm/daisyui@5" rel="stylesheet" type="text/css" />
|
|
9
|
-
<script src="https://cdn.jsdelivr.net/npm/@tailwindcss/browser@4"></script>
|
|
10
|
-
<title>feathers.dev Vue App</title>
|
|
11
|
-
</head>
|
|
12
|
-
|
|
13
|
-
<body>
|
|
14
|
-
<div id="app"></div>
|
|
15
|
-
<script type="module" src="/src/main.ts"></script>
|
|
16
|
-
</body>
|
|
17
|
-
|
|
18
|
-
</html>
|
|
@@ -1,29 +0,0 @@
|
|
|
1
|
-
{
|
|
2
|
-
"name": "feathersdev-vue",
|
|
3
|
-
"type": "module",
|
|
4
|
-
"version": "0.0.0",
|
|
5
|
-
"private": true,
|
|
6
|
-
"scripts": {
|
|
7
|
-
"dev": "vite --port 4040",
|
|
8
|
-
"build": "run-p type-check \"build-only {@}\" --",
|
|
9
|
-
"preview": "vite preview",
|
|
10
|
-
"build-only": "vite build",
|
|
11
|
-
"type-check": "vue-tsc --build --force"
|
|
12
|
-
},
|
|
13
|
-
"dependencies": {
|
|
14
|
-
"@feathersdev/auth": "^0.11.0",
|
|
15
|
-
"@feathersdev/automerge": "^0.11.0",
|
|
16
|
-
"vue": "^3.5.12"
|
|
17
|
-
},
|
|
18
|
-
"devDependencies": {
|
|
19
|
-
"@tsconfig/node20": "^20.1.4",
|
|
20
|
-
"@types/node": "^22.9.0",
|
|
21
|
-
"@vitejs/plugin-vue": "^5.2.0",
|
|
22
|
-
"@vue/tsconfig": "^0.6.0",
|
|
23
|
-
"npm-run-all2": "^7.0.1",
|
|
24
|
-
"typescript": "~5.6.3",
|
|
25
|
-
"vite": "^5.4.11",
|
|
26
|
-
"vite-plugin-wasm": "^3.4.1",
|
|
27
|
-
"vue-tsc": "^2.1.10"
|
|
28
|
-
}
|
|
29
|
-
}
|
|
Binary file
|
|
@@ -1,34 +0,0 @@
|
|
|
1
|
-
<script setup lang="ts">
|
|
2
|
-
import { ref, shallowRef } from 'vue'
|
|
3
|
-
import { auth } from './auth.js'
|
|
4
|
-
import { loadAppDocument, type AppDocumentHandle } from './automerge.js'
|
|
5
|
-
import Counter from './Counter.vue'
|
|
6
|
-
import type { FeathersAuthUser } from '@feathersdev/auth'
|
|
7
|
-
import feathersLogo from './assets/feathers.svg'
|
|
8
|
-
|
|
9
|
-
// State for the handle and user
|
|
10
|
-
const handle = shallowRef<AppDocumentHandle | null>(null)
|
|
11
|
-
const user = ref<FeathersAuthUser | null>(null)
|
|
12
|
-
|
|
13
|
-
// Initialize the application
|
|
14
|
-
async function init() {
|
|
15
|
-
// Get the document handle
|
|
16
|
-
handle.value = await loadAppDocument()
|
|
17
|
-
// Get the current user
|
|
18
|
-
user.value = await auth.getUser()
|
|
19
|
-
}
|
|
20
|
-
|
|
21
|
-
// Run initialization
|
|
22
|
-
init()
|
|
23
|
-
</script>
|
|
24
|
-
|
|
25
|
-
<template>
|
|
26
|
-
<main class="w-96 mx-auto flex flex-col gap-4 text-center pt-10">
|
|
27
|
-
<img :src="feathersLogo" alt="feathers.dev Logo" />
|
|
28
|
-
<div v-if="handle" class="flex flex-col gap-4">
|
|
29
|
-
<h2 class="text-2xl">Hello <strong>{{ user?.email }}</strong></h2>
|
|
30
|
-
<Counter :handle="handle" />
|
|
31
|
-
</div>
|
|
32
|
-
<p v-else>Loading...</p>
|
|
33
|
-
</main>
|
|
34
|
-
</template>
|
|
@@ -1,37 +0,0 @@
|
|
|
1
|
-
<script setup lang="ts">
|
|
2
|
-
import { ref, onMounted, defineProps } from 'vue'
|
|
3
|
-
import type { AppDocumentHandle } from './automerge.js'
|
|
4
|
-
|
|
5
|
-
// Define props for the component
|
|
6
|
-
const props = defineProps<{
|
|
7
|
-
handle: AppDocumentHandle
|
|
8
|
-
}>()
|
|
9
|
-
|
|
10
|
-
// Initialize counter state
|
|
11
|
-
const counter = ref<number>(0)
|
|
12
|
-
|
|
13
|
-
// Set up listener for document changes
|
|
14
|
-
onMounted(() => {
|
|
15
|
-
props.handle.on('change', ({ doc }: { doc: { counter?: number } }) => {
|
|
16
|
-
counter.value = doc.counter || 0
|
|
17
|
-
})
|
|
18
|
-
})
|
|
19
|
-
|
|
20
|
-
// Function to increment the counter
|
|
21
|
-
function incrementCounter() {
|
|
22
|
-
props.handle.change((doc: { counter?: number }) => {
|
|
23
|
-
doc.counter = (doc.counter || 0) + 1
|
|
24
|
-
})
|
|
25
|
-
}
|
|
26
|
-
</script>
|
|
27
|
-
|
|
28
|
-
<template>
|
|
29
|
-
<div class="card bg-base-300 mx-auto rounded-4xl">
|
|
30
|
-
<div class="card-body">
|
|
31
|
-
<h2 class="text-2xl">Community Counter</h2>
|
|
32
|
-
<p class="text-sm">Number of times clicked by everybody</p>
|
|
33
|
-
<strong class="text-3xl pt-2 pb-3">{{ counter }}</strong>
|
|
34
|
-
<button class="btn btn-primary" @click="incrementCounter">Increment</button>
|
|
35
|
-
</div>
|
|
36
|
-
</div>
|
|
37
|
-
</template>
|
|
@@ -1,30 +0,0 @@
|
|
|
1
|
-
:root {
|
|
2
|
-
--color-base-100: oklch(3.6% 0.01 270);
|
|
3
|
-
--color-base-200: oklch(15% 19% 307);
|
|
4
|
-
--color-base-300: oklch(35% 44% 287);
|
|
5
|
-
--color-base-300-old: oklch(17.6% 0.04 270);
|
|
6
|
-
--color-base-content: oklch(93.3% 0.01 260);
|
|
7
|
-
--color-primary: oklch(48% 39% 348);
|
|
8
|
-
--color-primary-content: oklch(100% 0 0);
|
|
9
|
-
--color-secondary: oklch(91.9% 0.13 99.9);
|
|
10
|
-
--color-secondary-content: oklch(0% 0 0);
|
|
11
|
-
--color-accent: oklch(34.1% 0.13 297.4);
|
|
12
|
-
--color-accent-content: oklch(100% 0 0);
|
|
13
|
-
--color-neutral: oklch(20.1% 0.05 260.7);
|
|
14
|
-
--color-neutral-content: oklch(100% 0 0);
|
|
15
|
-
--color-info: oklch(56.8% 0.14 255.1);
|
|
16
|
-
--color-info-content: oklch(94.5% 0.01 230);
|
|
17
|
-
--color-success: oklch(77.1% 0.13 149.9);
|
|
18
|
-
--color-warning-content: oklch(94.5% 0.01 230);
|
|
19
|
-
--color-error: oklch(64.1% 0.21 29.3);
|
|
20
|
-
--color-error-content: oklch(94.5% 0.01 230);
|
|
21
|
-
--radius-selector: 1rem;
|
|
22
|
-
--radius-field: 1rem;
|
|
23
|
-
--radius-box: 0.5rem;
|
|
24
|
-
--size-selector: 0.25rem;
|
|
25
|
-
--size-field: 0.25rem;
|
|
26
|
-
--border: 1px;
|
|
27
|
-
--depth: 1;
|
|
28
|
-
--noise: 0;
|
|
29
|
-
--invert-logo: 0;
|
|
30
|
-
}
|
|
@@ -1,24 +0,0 @@
|
|
|
1
|
-
<svg width="607" height="99" viewBox="0 0 607 99" fill="none" xmlns="http://www.w3.org/2000/svg">
|
|
2
|
-
<g clip-path="url(#clip0_3_192)">
|
|
3
|
-
<path d="M63.3 0C59.1 0 55 1.7 52 4.7L50.9 5.8C50.4 13.8 47.7 21.1 43.5 27.8C45 21.4 45.7 15.7 44.6 12.1L35.2 21.5C34.7 29.5 32 36.7 27.8 43.3C29.5 36.9 30 31.7 29.3 27.3L19.5 37.1C15.9 40.6 13.9 45.5 13.9 50.5V79.1L3.9 88.9C1.4 91.2 0 94.5 0 97.9V98.7L73.4 25.9C80.3 19.1 84.1 9.8 84.2 0.1H63.4L63.3 0Z" fill="white"/>
|
|
4
|
-
<path d="M57.6 61.4L77.8 41.3C81.8 37.4 84 32 84 26.4V14.2C83.3 16.9 82.4 19.4 81 21.4C78.3 25.1 75.4 28.5 72.1 31.8L37.4 66.3L50.8 64.7C53.3 64.4 55.7 63.3 57.4 61.5L57.6 61.4Z" fill="white"/>
|
|
5
|
-
<path d="M33.7 70L17.4 86.2L26.6 86.4C30.3 86.4 33.8 85 36.4 82.5L52.1 66.9C51 67.6 50.1 67.9 49 68.2L33.7 70Z" fill="white"/>
|
|
6
|
-
<path d="M189.7 64.6H153.8C154 67.8 155.1 70.3 156.9 72C158.7 73.7 161 74.5 163.6 74.5C167.6 74.5 170.3 72.8 171.8 69.5H188.7C187.8 72.9 186.3 76 184 78.7C181.7 81.4 178.9 83.5 175.5 85.1C172.1 86.6 168.3 87.4 164.1 87.4C159.9 87.4 154.5 86.3 150.6 84.2C146.6 82 143.6 79 141.3 74.9C139.1 70.9 138 66.2 138 60.8C138 55.4 139.1 50.7 141.3 46.7C143.5 42.7 146.6 39.6 150.5 37.4C154.5 35.2 159 34.2 164.1 34.2C169.2 34.2 173.6 35.3 177.4 37.4C181.3 39.5 184.3 42.5 186.5 46.4C188.7 50.3 189.8 54.8 189.8 60C189.8 65.2 189.8 63 189.5 64.6H189.7ZM173.8 55.8C173.8 53.1 172.9 50.9 171 49.3C169.1 47.7 166.8 46.9 164.1 46.9C161.4 46.9 159.2 47.7 157.4 49.2C155.6 50.7 154.4 52.9 154 55.8H173.8Z" fill="white"/>
|
|
7
|
-
<path d="M198.2 46.7C200.2 42.7 202.9 39.6 206.4 37.4C209.9 35.2 213.7 34.2 218 34.2C222.3 34.2 224.8 34.9 227.6 36.4C230.3 37.9 232.5 39.8 233.9 42.2V34.9H249.7V86.6H233.9V79.3C232.4 81.7 230.2 83.7 227.5 85.1C224.8 86.6 221.6 87.3 217.9 87.3C214.2 87.3 209.9 86.2 206.4 84C202.9 81.8 200.2 78.7 198.2 74.6C196.2 70.6 195.2 65.9 195.2 60.6C195.2 55.3 196.2 50.6 198.2 46.6V46.7ZM230.6 51.4C228.4 49.1 225.7 48 222.6 48C219.5 48 216.8 49.1 214.6 51.4C212.4 53.7 211.3 56.8 211.3 60.7C211.3 64.6 212.4 67.8 214.6 70.1C216.8 72.4 219.5 73.6 222.6 73.6C225.7 73.6 228.4 72.5 230.6 70.2C232.8 67.9 233.9 64.8 233.9 60.8C233.9 56.8 232.8 53.7 230.6 51.4Z" fill="white"/>
|
|
8
|
-
<path d="M290.1 73.2V86.6H282C276.3 86.6 271.8 85.2 268.6 82.4C265.4 79.6 263.8 75 263.8 68.6V48H257.5V34.8H263.8V22.2H279.6V34.8H290V48H279.6V68.8C279.6 70.3 280 71.5 280.7 72.1C281.4 72.8 282.7 73.1 284.4 73.1H290.1V73.2Z" fill="white"/>
|
|
9
|
-
<path d="M409.8 64.6H373.9C374.1 67.8 375.2 70.3 377 72C378.8 73.7 381.1 74.5 383.7 74.5C387.7 74.5 390.4 72.8 391.9 69.5H408.8C407.9 72.9 406.4 76 404.1 78.7C401.8 81.4 399 83.5 395.6 85.1C392.2 86.6 388.4 87.4 384.2 87.4C380 87.4 374.6 86.3 370.7 84.2C366.7 82 363.7 79 361.4 74.9C359.2 70.9 358.1 66.2 358.1 60.8C358.1 55.4 359.2 50.7 361.4 46.7C363.6 42.7 366.7 39.6 370.6 37.4C374.6 35.2 379.1 34.2 384.2 34.2C389.3 34.2 393.7 35.3 397.5 37.4C401.4 39.5 404.4 42.5 406.6 46.4C408.8 50.3 409.9 54.8 409.9 60C409.9 65.2 409.9 63 409.6 64.6H409.8ZM393.8 55.8C393.8 53.1 392.9 50.9 391 49.3C389.1 47.7 386.8 46.9 384.1 46.9C381.4 46.9 379.2 47.7 377.4 49.2C375.6 50.7 374.4 52.9 374 55.8H393.8Z" fill="white"/>
|
|
10
|
-
<path d="M467 85C463.5 83.5 460.7 81.3 458.7 78.7C456.7 76 455.5 73 455.3 69.7H471C471.2 71.5 472 72.9 473.5 74.1C475 75.2 476.8 75.8 479 75.8C481.2 75.8 482.5 75.4 483.6 74.6C484.7 73.8 485.2 72.8 485.2 71.6C485.2 70.4 484.4 69 482.9 68.3C481.4 67.6 478.9 66.8 475.4 65.9C471.7 65 468.6 64.1 466.1 63.2C463.6 62.2 461.5 60.7 459.7 58.7C457.9 56.6 457 53.8 457 50.3C457 46.8 457.8 44.6 459.5 42.2C461.1 39.8 463.5 37.8 466.7 36.4C469.9 35 473.7 34.3 478 34.3C484.5 34.3 489.6 35.9 493.3 39.1C497 42.3 499.2 46.6 499.7 51.9H485.1C484.9 50.1 484.1 48.7 482.7 47.6C481.4 46.6 479.6 46 477.5 46C475.4 46 474.2 46.4 473.2 47.1C472.2 47.8 471.7 48.8 471.7 50C471.7 51.2 472.5 52.6 474.1 53.3C475.7 54 478.1 54.8 481.5 55.5C485.3 56.5 488.4 57.5 490.9 58.4C493.3 59.4 495.4 60.9 497.2 63C499 65.1 500 68 500 71.6C500 74.6 499.2 77.3 497.5 79.7C495.8 82.1 493.4 83.9 490.2 85.3C487 86.7 483.3 87.3 479.1 87.3C474.9 87.3 470.6 86.5 467.1 85H467Z" fill="white"/>
|
|
11
|
-
<path d="M344.9 40.3C341.3 36.4 336.6 34.4 330.6 34.4C324.6 34.4 324 35.1 321.2 36.4C318.4 37.8 316.2 39.6 314.6 41.9V18.1H298.8V86.7H314.6V65.5C314.6 65.5 314.6 56.7 315 55.1C315.4 53.5 315.3 54.1 315.5 53.6C315.9 52.5 316.5 51.5 317.3 50.7C319.1 48.8 321.5 47.8 324.5 47.8C327.5 47.8 329.9 48.8 331.7 50.7C333.5 52.6 334.4 55.3 334.4 58.8V86.9H350.2V56.7C350.2 49.8 348.4 44.5 344.8 40.5L344.9 40.3Z" fill="white"/>
|
|
12
|
-
<path d="M113 75.8C118.7 72.3 125.1 66.9 125.3 60C125.3 58 125.3 55.8 125.3 53.5V48.2H133.8V35H125.3V34.5C125.3 31.8 125.9 29.9 127.2 28.8C128.4 27.8 130.6 27.3 133.6 27.5V14.1C133 14.1 132.2 14.1 131 14.1C124 14.1 118.6 15.8 115 19.1C111.4 22.4 109.5 27.2 109.5 33.6V35.1H103.8V48.3H109.5V86.8H125.3V74.5C121.1 76.2 116.7 76.9 113 75.9V75.8Z" fill="white"/>
|
|
13
|
-
<path d="M441.2 36.8C438.4 38.4 436.1 40.7 434.3 43.5V34.9H418.5V39.2C419.4 46.1 426.9 52.8 431.7 57.1C427.8 57.5 423 56.2 418.5 53.9V86.6H434.3V62.6C434.3 58.3 435.3 55.4 437.3 53.7C439.3 52 442.2 51.2 446.2 51.2H450.6V34.4C447.2 34.4 444.1 35.2 441.3 36.9L441.2 36.8Z" fill="white"/>
|
|
14
|
-
<path d="M509.4 84.2C508.8 83.6 508.4 82.8 508.4 81.8C508.4 80.8 508.7 80.1 509.4 79.4C510.1 78.7 510.8 78.4 511.8 78.4C512.8 78.4 513.5 78.7 514.1 79.4C514.7 80 515.1 80.8 515.1 81.8C515.1 82.8 514.8 83.5 514.1 84.2C513.5 84.8 512.7 85.2 511.8 85.2C510.9 85.2 510.1 84.9 509.4 84.2Z" fill="white"/>
|
|
15
|
-
<path d="M522 65.3C523.1 63.3 524.5 61.8 526.3 60.7C528.1 59.6 530.2 59.1 532.4 59.1C534.6 59.1 535.7 59.5 537.3 60.2C538.9 60.9 540.2 61.9 541.1 63.1V50.9H546.4V84.9H541.1V81.1C540.2 82.3 539.1 83.3 537.5 84.1C535.9 84.9 534.2 85.3 532.3 85.3C530.4 85.3 528.1 84.7 526.3 83.6C524.5 82.5 523 80.9 522 78.9C520.9 76.9 520.4 74.6 520.4 72.1C520.4 69.6 520.9 67.3 522 65.3ZM540 67.6C539.3 66.3 538.3 65.3 537.2 64.7C536 64 534.8 63.7 533.4 63.7C532 63.7 530.8 64 529.6 64.7C528.4 65.4 527.5 66.3 526.8 67.6C526.1 68.9 525.7 70.4 525.7 72.1C525.7 73.8 526.1 75.4 526.8 76.7C527.5 78 528.5 79 529.7 79.7C530.9 80.4 532.1 80.7 533.4 80.7C534.7 80.7 536 80.4 537.2 79.7C538.4 79 539.3 78 540 76.7C540.7 75.4 541.1 73.9 541.1 72.1C541.1 70.3 540.7 68.8 540 67.5V67.6Z" fill="white"/>
|
|
16
|
-
<path d="M577.7 74.1H558.3C558.5 76.1 559.2 77.7 560.6 79C561.9 80.2 563.6 80.8 565.6 80.8C568.4 80.8 570.4 79.6 571.6 77.3H577.3C576.5 79.6 575.1 81.5 573.1 83C571.1 84.5 568.6 85.2 565.6 85.2C562.6 85.2 561 84.7 559.1 83.6C557.2 82.5 555.7 81 554.6 79C553.5 77 553 74.7 553 72.1C553 69.5 553.5 67.2 554.6 65.2C555.7 63.2 557.1 61.7 559.1 60.6C561 59.5 563.2 59 565.7 59C568.2 59 570.2 59.5 572.1 60.6C574 61.6 575.4 63.1 576.5 65C577.5 66.9 578.1 69.1 578.1 71.5C578.1 73.9 578.1 73.3 577.9 74.1H577.7ZM572.4 69.9C572.4 68 571.7 66.4 570.3 65.3C568.9 64.1 567.3 63.6 565.3 63.6C563.3 63.6 561.9 64.2 560.7 65.3C559.4 66.5 558.6 68 558.4 70H572.4V69.9Z" fill="white"/>
|
|
17
|
-
<path d="M594.2 80.2L601.4 59.5H607L597.3 84.8H591L581.4 59.5H587L594.2 80.2Z" fill="white"/>
|
|
18
|
-
</g>
|
|
19
|
-
<defs>
|
|
20
|
-
<clipPath id="clip0_3_192">
|
|
21
|
-
<rect width="607" height="98.7" fill="white"/>
|
|
22
|
-
</clipPath>
|
|
23
|
-
</defs>
|
|
24
|
-
</svg>
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
@import './base.css';
|
|
@@ -1,39 +0,0 @@
|
|
|
1
|
-
import { createClient } from '@feathersdev/auth'
|
|
2
|
-
|
|
3
|
-
/**
|
|
4
|
-
* This is your public application id
|
|
5
|
-
*/
|
|
6
|
-
export const appId = 'did:key:z6MkjJRXzXWPRHtSRc4NRWXZmJTbYBaWoUKK6Ros1975w6eo'
|
|
7
|
-
|
|
8
|
-
/**
|
|
9
|
-
* The Feathers auth client instance. You can use it to get a token,
|
|
10
|
-
* retrieve the current user and to log in and out.
|
|
11
|
-
*/
|
|
12
|
-
export const auth = createClient({
|
|
13
|
-
appId,
|
|
14
|
-
onLoginRequired: async (error) => {
|
|
15
|
-
// Redirect to login page whenever a login is required
|
|
16
|
-
// You can also do other things here like show a modal before redirecting
|
|
17
|
-
window.location.href = await auth.getLoginUrl(error)
|
|
18
|
-
},
|
|
19
|
-
})
|
|
20
|
-
|
|
21
|
-
/**
|
|
22
|
-
* Make an authenticated request to a server using the standard fetch API.
|
|
23
|
-
* Will redirect to the login page instead if the user needs to log in.
|
|
24
|
-
*
|
|
25
|
-
* @param url The URL for the request
|
|
26
|
-
* @param options Additional request options.
|
|
27
|
-
* @returns The fetch response
|
|
28
|
-
*/
|
|
29
|
-
export async function authFetch(url: string, options?: RequestInit) {
|
|
30
|
-
const headers = new Headers(options?.headers)
|
|
31
|
-
|
|
32
|
-
// Set the authorization header with the Feathers Auth token
|
|
33
|
-
headers.set('Authorization', await auth.getHeader())
|
|
34
|
-
|
|
35
|
-
return fetch(url, {
|
|
36
|
-
...options,
|
|
37
|
-
headers,
|
|
38
|
-
})
|
|
39
|
-
}
|
|
@@ -1,27 +0,0 @@
|
|
|
1
|
-
import { createAutomerge, DocHandle } from '@feathersdev/automerge'
|
|
2
|
-
import { auth } from './auth.js'
|
|
3
|
-
|
|
4
|
-
/**
|
|
5
|
-
* The Feathers Automerge client. Use it to retrieve the document
|
|
6
|
-
* for your application with `automerge.find()`.
|
|
7
|
-
*/
|
|
8
|
-
export const automerge = createAutomerge(auth)
|
|
9
|
-
|
|
10
|
-
/**
|
|
11
|
-
* Add types for any data you want to store for your application
|
|
12
|
-
*/
|
|
13
|
-
export interface AppData {
|
|
14
|
-
counter: number
|
|
15
|
-
}
|
|
16
|
-
|
|
17
|
-
/**
|
|
18
|
-
* The document handle type for the application
|
|
19
|
-
*/
|
|
20
|
-
export type AppDocumentHandle = DocHandle<AppData>
|
|
21
|
-
|
|
22
|
-
/**
|
|
23
|
-
* Load the document for the application
|
|
24
|
-
*/
|
|
25
|
-
export async function loadAppDocument(): Promise<AppDocumentHandle> {
|
|
26
|
-
return automerge.find<AppData>()
|
|
27
|
-
}
|
|
@@ -1,14 +0,0 @@
|
|
|
1
|
-
{
|
|
2
|
-
"extends": "@vue/tsconfig/tsconfig.dom.json",
|
|
3
|
-
"compilerOptions": {
|
|
4
|
-
"composite": true,
|
|
5
|
-
"tsBuildInfoFile": "./node_modules/.tmp/tsconfig.app.tsbuildinfo",
|
|
6
|
-
|
|
7
|
-
"baseUrl": ".",
|
|
8
|
-
"paths": {
|
|
9
|
-
"@/*": ["./src/*"]
|
|
10
|
-
}
|
|
11
|
-
},
|
|
12
|
-
"include": ["env.d.ts", "src/**/*", "src/**/*.vue"],
|
|
13
|
-
"exclude": ["src/**/__tests__/*"]
|
|
14
|
-
}
|