this repo has no description
0
fork

Configure Feed

Select the types of activity you want to include in your feed.

stuff

+157 -25
+14
.env.schema
··· 1 + # This env file uses @env-spec - see https://varlock.dev/env-spec for more info 2 + # 3 + # @defaultRequired=infer @defaultSensitive=false 4 + # @generateTypes(lang=ts, path=env.d.ts) 5 + # 6 + # @plugin(@varlock/1password-plugin) 7 + # @initOp(allowAppAuth=true) 8 + # 9 + # ---------- 10 + 11 + # @required @type=url 12 + TURSO_DATABASE_URL="libsql://pokemon-with-types-dogpawhat.aws-eu-west-1.turso.io" 13 + # @required @sensitive 14 + TURSO_AUTH_TOKEN=op("op://Private/Turso Pokemon With Types/token")
+3 -2
drizzle.config.ts
··· 1 1 import { config } from "dotenv"; 2 2 import { defineConfig } from "drizzle-kit"; 3 + import { ENV } from "varlock/env"; 3 4 4 5 config({ path: ".env.local" }); 5 6 ··· 8 9 schema: "./src/data/schema.ts", 9 10 dialect: "turso", 10 11 dbCredentials: { 11 - url: process.env.TURSO_DATABASE_URL!, 12 - authToken: process.env.TURSO_AUTH_TOKEN, 12 + url: ENV.TURSO_DATABASE_URL, 13 + authToken: ENV.TURSO_AUTH_TOKEN, 13 14 }, 14 15 });
+47
env.d.ts
··· 1 + // 🛑 🛑 🛑 🛑 🛑 🛑 🛑 🛑 🛑 🛑 🛑 🛑 🛑 🛑 🛑 🛑 🛑 🛑 🛑 🛑 🛑 🛑 2 + // 🛑 THIS IS AN AUTOGENERATED FILE - DO NOT EDIT DIRECTLY 🛑 3 + // 🛑 🛑 🛑 🛑 🛑 🛑 🛑 🛑 🛑 🛑 🛑 🛑 🛑 🛑 🛑 🛑 🛑 🛑 🛑 🛑 🛑 🛑 4 + 5 + // @ts-nocheck 6 + /* eslint-disable */ 7 + export type CoercedEnvSchema = { 8 + /** 9 + * **TURSO_DATABASE_URL** 10 + * ![icon](data:image/svg+xml;utf-8,%3Csvg%20xmlns%3D%22http%3A%2F%2Fwww.w3.org%2F2000%2Fsvg%22%20width%3D%2220%22%20height%3D%2220%22%20viewBox%3D%220%200%2032%2032%22%3E%3Cpath%20fill%3D%22%23808080%22%20d%3D%22M24%2021V9h-2v14h8v-2zm-4-6v-4c0-1.103-.897-2-2-2h-6v14h2v-6h1.48l2.335%206h2.145l-2.333-6H18c1.103%200%202-.897%202-2m-6-4h4v4h-4zM8%2023H4c-1.103%200-2-.897-2-2V9h2v12h4V9h2v12c0%201.103-.897%202-2%202%22%2F%3E%3C%2Fsvg%3E) 11 + */ 12 + TURSO_DATABASE_URL: string; 13 + 14 + /** 15 + * **TURSO_AUTH_TOKEN** 🔐 _sensitive_ 16 + * ![icon](data:image/svg+xml;utf-8,%3Csvg%20xmlns%3D%22http%3A%2F%2Fwww.w3.org%2F2000%2Fsvg%22%20width%3D%2220%22%20height%3D%2220%22%20viewBox%3D%220%200%2032%2032%22%3E%3Cpath%20fill%3D%22%23808080%22%20d%3D%22M29%2022h-5a2.003%202.003%200%200%201-2-2v-6a2%202%200%200%201%202-2h5v2h-5v6h5ZM18%2012h-4V8h-2v14h6a2.003%202.003%200%200%200%202-2v-6a2%202%200%200%200-2-2m-4%208v-6h4v6Zm-6-8H3v2h5v2H4a2%202%200%200%200-2%202v2a2%202%200%200%200%202%202h6v-8a2%202%200%200%200-2-2m0%208H4v-2h4Z%22%2F%3E%3C%2Fsvg%3E) 17 + */ 18 + TURSO_AUTH_TOKEN: string; 19 + }; 20 + 21 + declare module "varlock/env" { 22 + export interface TypedEnvSchema extends Readonly<CoercedEnvSchema> {} 23 + export interface PublicTypedEnvSchema extends Readonly< 24 + Pick<CoercedEnvSchema, "TURSO_DATABASE_URL"> 25 + > {} 26 + } 27 + 28 + export type EnvSchemaAsStrings = { 29 + [Property in keyof CoercedEnvSchema]: CoercedEnvSchema[Property] extends string 30 + ? CoercedEnvSchema[Property] 31 + : CoercedEnvSchema[Property] extends boolean 32 + ? "true" | "false" 33 + : string; 34 + }; 35 + 36 + declare global { 37 + // add types for global import.meta.env 38 + interface ImportMetaEnv extends EnvSchemaAsStrings {} 39 + interface ImportMeta { 40 + readonly env: ImportMetaEnv; 41 + } 42 + 43 + // add types for global process.env 44 + namespace NodeJS { 45 + interface ProcessEnv extends EnvSchemaAsStrings {} 46 + } 47 + }
+7 -1
package.json
··· 22 22 "@tanstack/react-router-devtools": "1.166.11", 23 23 "@tanstack/react-router-with-query": "1.130.17", 24 24 "@tanstack/react-start": "1.167.16", 25 + "@varlock/1password-plugin": "^0.3.2", 26 + "@varlock/vite-integration": "^0.2.8", 25 27 "class-variance-authority": "^0.7.1", 26 28 "clsx": "^2.1.1", 27 29 "drizzle-orm": "^0.45.2", ··· 30 32 "tailwind-merge": "^3.5.0", 31 33 "tailwindcss": "^4.2.2", 32 34 "tailwindcss-animate": "^1.0.7", 33 - "valibot": "^1.3.1" 35 + "valibot": "^1.3.1", 36 + "varlock": "^0.7.0" 34 37 }, 35 38 "devDependencies": { 39 + "1password-cli": "^0.2.1", 36 40 "@types/node": "^25.5.0", 37 41 "@types/react": "^19.2.14", 38 42 "@types/react-dom": "^19.2.3", 39 43 "@vitejs/plugin-react": "^6.0.1", 44 + "brew": "^0.0.8", 40 45 "dotenv": "^17.4.0", 41 46 "drizzle-kit": "^0.31.10", 47 + "install": "^0.13.0", 42 48 "knip": "^6.2.0", 43 49 "typescript": "^6.0.2", 44 50 "vite": "npm:@voidzero-dev/vite-plus-core@^0.1.15",
+63
pnpm-lock.yaml
··· 45 45 '@tanstack/react-start': 46 46 specifier: 1.167.16 47 47 version: 1.167.16(@voidzero-dev/vite-plus-core@0.1.15(@types/node@25.5.0)(esbuild@0.27.5)(jiti@2.6.1)(tsx@4.21.0)(typescript@6.0.2)(yaml@2.8.3))(react-dom@19.2.4(react@19.2.4))(react@19.2.4) 48 + '@varlock/1password-plugin': 49 + specifier: ^0.3.2 50 + version: 0.3.2(varlock@0.7.0) 51 + '@varlock/vite-integration': 52 + specifier: ^0.2.8 53 + version: 0.2.8(@voidzero-dev/vite-plus-core@0.1.15(@types/node@25.5.0)(esbuild@0.27.5)(jiti@2.6.1)(tsx@4.21.0)(typescript@6.0.2)(yaml@2.8.3))(varlock@0.7.0) 48 54 class-variance-authority: 49 55 specifier: ^0.7.1 50 56 version: 0.7.1 ··· 72 78 valibot: 73 79 specifier: ^1.3.1 74 80 version: 1.3.1(typescript@6.0.2) 81 + varlock: 82 + specifier: ^0.7.0 83 + version: 0.7.0 75 84 devDependencies: 85 + 1password-cli: 86 + specifier: ^0.2.1 87 + version: 0.2.1 76 88 '@types/node': 77 89 specifier: ^25.5.0 78 90 version: 25.5.0 ··· 85 97 '@vitejs/plugin-react': 86 98 specifier: ^6.0.1 87 99 version: 6.0.1(@voidzero-dev/vite-plus-core@0.1.15(@types/node@25.5.0)(esbuild@0.27.5)(jiti@2.6.1)(tsx@4.21.0)(typescript@6.0.2)(yaml@2.8.3)) 100 + brew: 101 + specifier: ^0.0.8 102 + version: 0.0.8 88 103 dotenv: 89 104 specifier: ^17.4.0 90 105 version: 17.4.0 91 106 drizzle-kit: 92 107 specifier: ^0.31.10 93 108 version: 0.31.10 109 + install: 110 + specifier: ^0.13.0 111 + version: 0.13.0 94 112 knip: 95 113 specifier: ^6.2.0 96 114 version: 6.2.0(@emnapi/core@1.9.1)(@emnapi/runtime@1.9.1) ··· 105 123 version: 0.1.15(@types/node@25.5.0)(@voidzero-dev/vite-plus-core@0.1.15(@types/node@25.5.0)(esbuild@0.27.5)(jiti@2.6.1)(tsx@4.21.0)(typescript@6.0.2)(yaml@2.8.3))(esbuild@0.27.5)(jiti@2.6.1)(tsx@4.21.0)(typescript@6.0.2)(yaml@2.8.3) 106 124 107 125 packages: 126 + 127 + 1password-cli@0.2.1: 128 + resolution: {integrity: sha512-QbMOSwST2iAi5zfzCfYy3aBIaiGREyGfEb8MMqUNwWsdBfoRaxYE4Fz38MoKkwLCIXkAqR5ldcoKAzHzDvllVQ==} 108 129 109 130 '@babel/code-frame@7.27.1': 110 131 resolution: {integrity: sha512-cjQ7ZlQ0Mv3b47hABuTevyTuYN4i+loJKGeV9flcCgIK37cCXRh+L1bd3iBHlynerhQ7BhCkn2BPbQUL+rGqFg==} ··· 1631 1652 '@types/ws@8.18.1': 1632 1653 resolution: {integrity: sha512-ThVF6DCVhA8kUGy+aazFQ4kXQ7E1Ty7A3ypFOe0IcJV8O/M511G99AW24irKrW56Wt44yG9+ij8FaqoBGkuBXg==} 1633 1654 1655 + '@varlock/1password-plugin@0.3.2': 1656 + resolution: {integrity: sha512-moOC4gYgi36BTqUHoi6OySF5Q46WxjS4hb38Yl6c8sbX8JeDdkodL34GfCOfo6rRI1o2yb8E6BsCpjfp9TQOJw==} 1657 + engines: {node: '>=22'} 1658 + peerDependencies: 1659 + varlock: ^0.7.0 1660 + 1661 + '@varlock/vite-integration@0.2.8': 1662 + resolution: {integrity: sha512-thWLJuOTwH17hkF+hQ2SfWT7kiiEtlZacnpI/f4JJ+wRQsYqycO+6OYKhhHqE0uMj8YGc8lXIaEVCW3ICXKPHw==} 1663 + engines: {node: '>=22'} 1664 + peerDependencies: 1665 + varlock: ^0.7.0 1666 + vite: '>=5' 1667 + 1634 1668 '@vitejs/plugin-react@6.0.1': 1635 1669 resolution: {integrity: sha512-l9X/E3cDb+xY3SWzlG1MOGt2usfEHGMNIaegaUGFsLkb3RCn/k8/TOXBcab+OndDI4TBtktT8/9BwwW8Vi9KUQ==} 1636 1670 engines: {node: ^20.19.0 || >=22.12.0} ··· 1823 1857 braces@3.0.3: 1824 1858 resolution: {integrity: sha512-yQbXgO/OSZVD2IsiLlro+7Hf6Q18EJrKSEsdoMzKePKXct3gvD8oLcOQdIzGupr5Fj+EDe8gO/lxc1BzfMpxvA==} 1825 1859 engines: {node: '>=8'} 1860 + 1861 + brew@0.0.8: 1862 + resolution: {integrity: sha512-BSTwOi8fIk8+7SbNmqhleUdjVZTewhYOqRb7zeSOk45sEx1ak6v1btoFl0WiaIbl1dsg4DFHQ4qefXpqXztMXA==} 1826 1863 1827 1864 browserslist@4.28.2: 1828 1865 resolution: {integrity: sha512-48xSriZYYg+8qXna9kwqjIVzuQxi+KYWp2+5nCYnYKPTr0LvD89Jqk2Or5ogxz0NUMfIjhh2lIUX/LyX9B4oIg==} ··· 2147 2184 resolution: {integrity: sha512-4fCk79wshMdzMp2rH06qWrJE4iolqLhCUH+OiuIgU++RB0+94NlDL81atO7GX55uUKueo0txHNtvEyI6D7WdMw==} 2148 2185 engines: {node: '>=0.10.0'} 2149 2186 2187 + install@0.13.0: 2188 + resolution: {integrity: sha512-zDml/jzr2PKU9I8J/xyZBQn8rPCAY//UOYNmR01XwNwyfhEWObo2SWfSl1+0tm1u6PhxLwDnfsT/6jB7OUxqFA==} 2189 + engines: {node: '>= 0.10'} 2190 + 2150 2191 is-binary-path@2.1.0: 2151 2192 resolution: {integrity: sha512-ZMERYes6pDydyuGidse7OsHxtbI7WVeUEozgR/g7rd0xUimYNlvZRE/K2MgZTjWy725IfelLeVcEM97mmtRGXw==} 2152 2193 engines: {node: '>=8'} ··· 2604 2645 typescript: 2605 2646 optional: true 2606 2647 2648 + varlock@0.7.0: 2649 + resolution: {integrity: sha512-jxJIATMakPT1SyTJTPOZiT4zbQS/NhNHF5bvEnE5KR8dnUpUL4N1bGEpdxICkw8xNrkTY7P3GojxLsgN2KeVOA==} 2650 + engines: {bun: '>=1.3.3', node: '>=22'} 2651 + hasBin: true 2652 + 2607 2653 vite-plus@0.1.15: 2608 2654 resolution: {integrity: sha512-PBUvTq4D4BJcuusCA3mrSQmXcGVdPX9CIPpS7Y6+T+LbDsrmAZ+ITl9FzuE6zXvpT6Nht9cpHtwOLJw7m3adog==} 2609 2655 engines: {node: ^20.19.0 || >=22.12.0} ··· 2679 2725 resolution: {integrity: sha512-rftlrkhHZOcjDwkGlnUtZZkvaPHCsDATp4pGpuOOMDaTdDDXF91wuVDJoWoPsKX/3YPQ5fHuF3STjcYyKr+Qhg==} 2680 2726 2681 2727 snapshots: 2728 + 2729 + 1password-cli@0.2.1: {} 2682 2730 2683 2731 '@babel/code-frame@7.27.1': 2684 2732 dependencies: ··· 3799 3847 dependencies: 3800 3848 '@types/node': 25.5.0 3801 3849 3850 + '@varlock/1password-plugin@0.3.2(varlock@0.7.0)': 3851 + dependencies: 3852 + varlock: 0.7.0 3853 + 3854 + '@varlock/vite-integration@0.2.8(@voidzero-dev/vite-plus-core@0.1.15(@types/node@25.5.0)(esbuild@0.27.5)(jiti@2.6.1)(tsx@4.21.0)(typescript@6.0.2)(yaml@2.8.3))(varlock@0.7.0)': 3855 + dependencies: 3856 + varlock: 0.7.0 3857 + vite: '@voidzero-dev/vite-plus-core@0.1.15(@types/node@25.5.0)(esbuild@0.27.5)(jiti@2.6.1)(tsx@4.21.0)(typescript@6.0.2)(yaml@2.8.3)' 3858 + 3802 3859 '@vitejs/plugin-react@6.0.1(@voidzero-dev/vite-plus-core@0.1.15(@types/node@25.5.0)(esbuild@0.27.5)(jiti@2.6.1)(tsx@4.21.0)(typescript@6.0.2)(yaml@2.8.3))': 3803 3860 dependencies: 3804 3861 '@rolldown/pluginutils': 1.0.0-rc.7 ··· 3917 3974 braces@3.0.3: 3918 3975 dependencies: 3919 3976 fill-range: 7.1.1 3977 + 3978 + brew@0.0.8: {} 3920 3979 3921 3980 browserslist@4.28.2: 3922 3981 dependencies: ··· 4224 4283 iconv-lite@0.6.3: 4225 4284 dependencies: 4226 4285 safer-buffer: 2.1.2 4286 + 4287 + install@0.13.0: {} 4227 4288 4228 4289 is-binary-path@2.1.0: 4229 4290 dependencies: ··· 4680 4741 valibot@1.3.1(typescript@6.0.2): 4681 4742 optionalDependencies: 4682 4743 typescript: 6.0.2 4744 + 4745 + varlock@0.7.0: {} 4683 4746 4684 4747 vite-plus@0.1.15(@types/node@25.5.0)(@voidzero-dev/vite-plus-core@0.1.15(@types/node@25.5.0)(esbuild@0.27.5)(jiti@2.6.1)(tsx@4.21.0)(typescript@6.0.2)(yaml@2.8.3))(esbuild@0.27.5)(jiti@2.6.1)(tsx@4.21.0)(typescript@6.0.2)(yaml@2.8.3): 4685 4748 dependencies:
+21 -21
src/data/seed.ts
··· 35 35 const client = createClient({ url: `file:${dbPath}` }); 36 36 const db = drizzle({ client, schema }); 37 37 38 - const schemaStatements = [ 39 - `CREATE TABLE "pokemon" ( 40 - "id" integer PRIMARY KEY NOT NULL, 41 - "name" text NOT NULL, 42 - "dex_id" integer NOT NULL 43 - )`, 44 - `CREATE TABLE "types" ( 45 - "id" integer PRIMARY KEY NOT NULL, 46 - "name" text NOT NULL 47 - )`, 48 - `CREATE TABLE "pokemon_types" ( 49 - "id" integer PRIMARY KEY NOT NULL, 50 - "pokemon_id" integer NOT NULL REFERENCES "pokemon"("id"), 51 - "type_id" integer NOT NULL REFERENCES "types"("id") 52 - )`, 53 - `CREATE INDEX "idx_pt_pokemon" ON "pokemon_types" ("pokemon_id")`, 54 - `CREATE INDEX "idx_pt_type" ON "pokemon_types" ("type_id")`, 55 - ]; 38 + // const schemaStatements = [ 39 + // `CREATE TABLE "pokemon" ( 40 + // "id" integer PRIMARY KEY NOT NULL, 41 + // "name" text NOT NULL, 42 + // "dex_id" integer NOT NULL 43 + // )`, 44 + // `CREATE TABLE "types" ( 45 + // "id" integer PRIMARY KEY NOT NULL, 46 + // "name" text NOT NULL 47 + // )`, 48 + // `CREATE TABLE "pokemon_types" ( 49 + // "id" integer PRIMARY KEY NOT NULL, 50 + // "pokemon_id" integer NOT NULL REFERENCES "pokemon"("id"), 51 + // "type_id" integer NOT NULL REFERENCES "types"("id") 52 + // )`, 53 + // `CREATE INDEX "idx_pt_pokemon" ON "pokemon_types" ("pokemon_id")`, 54 + // `CREATE INDEX "idx_pt_type" ON "pokemon_types" ("type_id")`, 55 + // ]; 56 56 57 - for (const statement of schemaStatements) { 58 - await client.execute(statement); 59 - } 57 + // for (const statement of schemaStatements) { 58 + // await client.execute(statement); 59 + // } 60 60 61 61 const BATCH_SIZE = 500; 62 62
+2 -1
vite.config.ts
··· 2 2 import { defineConfig } from "vite-plus"; 3 3 import react from "@vitejs/plugin-react"; 4 4 import { tanstackStart } from "@tanstack/react-start/plugin/vite"; 5 + import { varlockVitePlugin } from "@varlock/vite-integration"; 5 6 6 7 export default defineConfig({ 7 8 staged: { ··· 17 18 server: { 18 19 port: 3000, 19 20 }, 20 - plugins: [tanstackStart({}), react(), tailwindcss()], 21 + plugins: [varlockVitePlugin(), tanstackStart({}), react(), tailwindcss()], 21 22 });