@osdk/create-app 2.1.0-beta.21 → 2.1.0-beta.23
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 +4 -0
- package/build/browser/{esm-W5HUFJGQ.js → esm-6BUJALDZ.js} +4 -4
- package/build/browser/{esm-W5HUFJGQ.js.map → esm-6BUJALDZ.js.map} +1 -1
- package/build/browser/{esm-J5VI72R3.js → esm-7ZIUG4U6.js} +4 -4
- package/build/browser/esm-7ZIUG4U6.js.map +1 -0
- package/build/browser/{esm-FDYGPX22.js → esm-CYB2O5FN.js} +29 -33
- package/build/browser/esm-CYB2O5FN.js.map +1 -0
- package/build/browser/{esm-BXEUIM4Y.js → esm-EML4JC7D.js} +4 -4
- package/build/browser/{esm-BXEUIM4Y.js.map → esm-EML4JC7D.js.map} +1 -1
- package/build/browser/{esm-VD5SBSTG.js → esm-GC4GGPX6.js} +27 -30
- package/build/browser/esm-GC4GGPX6.js.map +1 -0
- package/build/browser/{esm-G7B67PJ6.js → esm-IV4K65YT.js} +4 -4
- package/build/browser/esm-IV4K65YT.js.map +1 -0
- package/build/{esm/esm-IMPFU4IQ.js → browser/esm-LP2TDDES.js} +4 -4
- package/build/browser/esm-LP2TDDES.js.map +1 -0
- package/build/{esm/esm-7R6OLTJV.js → browser/esm-LYSXBZDO.js} +4 -4
- package/build/browser/esm-LYSXBZDO.js.map +1 -0
- package/build/{esm/esm-F6Y6OKER.js → browser/esm-SE26EE2F.js} +4 -4
- package/build/browser/esm-SE26EE2F.js.map +1 -0
- package/build/{esm/esm-PBRMAZQD.js → browser/esm-TW5CUHSV.js} +4 -4
- package/build/browser/{esm-PBRMAZQD.js.map → esm-TW5CUHSV.js.map} +1 -1
- package/build/browser/{esm-76Q3EKG4.js → esm-XD3R7VUV.js} +4 -4
- package/build/browser/esm-XD3R7VUV.js.map +1 -0
- package/build/browser/index.js +13 -13
- package/build/esm/{esm-W5HUFJGQ.js → esm-6BUJALDZ.js} +4 -4
- package/build/esm/{esm-W5HUFJGQ.js.map → esm-6BUJALDZ.js.map} +1 -1
- package/build/esm/{esm-J5VI72R3.js → esm-7ZIUG4U6.js} +4 -4
- package/build/esm/esm-7ZIUG4U6.js.map +1 -0
- package/build/esm/{esm-FDYGPX22.js → esm-CYB2O5FN.js} +29 -33
- package/build/esm/esm-CYB2O5FN.js.map +1 -0
- package/build/esm/{esm-BXEUIM4Y.js → esm-EML4JC7D.js} +4 -4
- package/build/esm/{esm-BXEUIM4Y.js.map → esm-EML4JC7D.js.map} +1 -1
- package/build/esm/{esm-VD5SBSTG.js → esm-GC4GGPX6.js} +27 -30
- package/build/esm/esm-GC4GGPX6.js.map +1 -0
- package/build/esm/{esm-G7B67PJ6.js → esm-IV4K65YT.js} +4 -4
- package/build/esm/esm-IV4K65YT.js.map +1 -0
- package/build/{browser/esm-IMPFU4IQ.js → esm/esm-LP2TDDES.js} +4 -4
- package/build/esm/esm-LP2TDDES.js.map +1 -0
- package/build/{browser/esm-7R6OLTJV.js → esm/esm-LYSXBZDO.js} +4 -4
- package/build/esm/esm-LYSXBZDO.js.map +1 -0
- package/build/{browser/esm-F6Y6OKER.js → esm/esm-SE26EE2F.js} +4 -4
- package/build/esm/esm-SE26EE2F.js.map +1 -0
- package/build/{browser/esm-PBRMAZQD.js → esm/esm-TW5CUHSV.js} +4 -4
- package/build/esm/{esm-PBRMAZQD.js.map → esm-TW5CUHSV.js.map} +1 -1
- package/build/esm/{esm-76Q3EKG4.js → esm-XD3R7VUV.js} +4 -4
- package/build/esm/esm-XD3R7VUV.js.map +1 -0
- package/build/esm/getPackageFiles.d.ts.map +1 -1
- package/build/esm/index.js +13 -13
- package/package.json +13 -13
- package/build/browser/esm-76Q3EKG4.js.map +0 -1
- package/build/browser/esm-7R6OLTJV.js.map +0 -1
- package/build/browser/esm-F6Y6OKER.js.map +0 -1
- package/build/browser/esm-FDYGPX22.js.map +0 -1
- package/build/browser/esm-G7B67PJ6.js.map +0 -1
- package/build/browser/esm-IMPFU4IQ.js.map +0 -1
- package/build/browser/esm-J5VI72R3.js.map +0 -1
- package/build/browser/esm-VD5SBSTG.js.map +0 -1
- package/build/esm/esm-76Q3EKG4.js.map +0 -1
- package/build/esm/esm-7R6OLTJV.js.map +0 -1
- package/build/esm/esm-F6Y6OKER.js.map +0 -1
- package/build/esm/esm-FDYGPX22.js.map +0 -1
- package/build/esm/esm-G7B67PJ6.js.map +0 -1
- package/build/esm/esm-IMPFU4IQ.js.map +0 -1
- package/build/esm/esm-J5VI72R3.js.map +0 -1
- package/build/esm/esm-VD5SBSTG.js.map +0 -1
package/CHANGELOG.md
CHANGED
|
@@ -120,7 +120,7 @@ module.exports = nextConfig;
|
|
|
120
120
|
"{{osdkPackage}}": "latest",
|
|
121
121
|
"@osdk/client": "{{clientVersion}}",
|
|
122
122
|
"@osdk/oauth": "^1.0.0",
|
|
123
|
-
"next": "^15.
|
|
123
|
+
"next": "^15.1.6",
|
|
124
124
|
"react": "^18",
|
|
125
125
|
"react-dom": "^18"
|
|
126
126
|
},
|
|
@@ -132,7 +132,7 @@ module.exports = nextConfig;
|
|
|
132
132
|
"eslint": "^9.15.0",
|
|
133
133
|
"eslint-config-next": "^15.0.1",
|
|
134
134
|
"typescript": "~5.5.4",
|
|
135
|
-
"vitest": "^
|
|
135
|
+
"vitest": "^3.0.4"
|
|
136
136
|
}
|
|
137
137
|
}`
|
|
138
138
|
}], ["public/next.svg", {
|
|
@@ -417,5 +417,5 @@ export const getClient = () => {
|
|
|
417
417
|
}]]);
|
|
418
418
|
|
|
419
419
|
export { files };
|
|
420
|
-
//# sourceMappingURL=esm-
|
|
421
|
-
//# sourceMappingURL=esm-
|
|
420
|
+
//# sourceMappingURL=esm-6BUJALDZ.js.map
|
|
421
|
+
//# sourceMappingURL=esm-6BUJALDZ.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"sources":["../../../create-app.template.next-static-export.v2/build/esm/generatedNoCheck/index.js"],"names":[],"mappings":"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","file":"esm-W5HUFJGQ.js","sourcesContent":["export const files = new Map([[\".eslintrc.json\", {\n \"type\": \"base64\",\n \"body\": \"ewogICJyb290IjogdHJ1ZSwKICAiZXh0ZW5kcyI6ICJuZXh0L2NvcmUtd2ViLXZpdGFscyIKfQo=\"\n}], [\"README.md.hbs\", {\n type: \"raw\",\n body: `# {{project}}\n\nThis project was generated with [\\`@osdk/create-app\\`](https://www.npmjs.com/package/@osdk/create-app) and demonstrates using the Ontology SDK package \\`{{osdkPackage}}\\` with React on top of Next.js. Check out the [Next.js](https://nextjs.org/docs) docs for further configuration.\n\n## Developing\n\nRun the following command or equivalent with your preferred package manager to start a local development server on \\`http://localhost:8080\\`:\n\n\\`\\`\\`sh\nnpm run dev\n\\`\\`\\`\n\nDevelopment configuration is stored in \\`.env.development\\`.\n\n{{#if corsProxy}}\nIn order to make API requests to Foundry, a CORS proxy has been set up for local development which may be removed if the stack is configured to allow \\`http://localhost:8080\\` to load resources. The configured OAuth client must also allow \\`http://localhost:8080/auth/callback\\` as a redirect URL.\n{{else}}\nIn order to make API requests to Foundry, CORS must be configured for the stack to allow \\`http://localhost:8080\\` to load resources. If this has not been configured and you are unable to request this, you can alternatively generate your project again with \\`--corsProxy true\\` to use a proxy for API requests during local development. The configured OAuth client must also allow \\`http://localhost:8080/auth/callback\\` as a redirect URL.\n{{/if}}\n\n## Deploying\n\nRun the following command or equivalent with your preferred package manager to create a production build of your application:\n\n\\`\\`\\`sh\nnpm run build\n\\`\\`\\`\n\nProduction configuration is stored in \\`.env.production\\`.\n\nIf you did not fill in the URL your production application will be hosted on you will need to fill in the \\`NEXT_PUBLIC_FOUNDRY_REDIRECT_URL\\` in \\`.env.production\\`. A default test is included in \\`env.test.ts\\` to verify your production environment variables which you can enable by removing the skip condition or running tests with the environment variable set \\`VERIFY_ENV_PRODUCTION=true\\`.\n\nIn order to make API requests to Foundry, CORS must be configured for the stack to allow the production origin to load resources. This will be automatically done for you if you are using Foundry website hosting. The configured OAuth client must also allow the production origin auth callback as a redirect URL.\n\nA \\`foundry.config.json\\` file is included in the root of this project to make deploying to Foundry website hosting with [\\`@osdk/cli\\`](https://www.npmjs.com/package/@osdk/cli) easier. If you are not using Foundry website hosting for your application you may delete this file.\n\n### Content Security Policy (CSP)\n\n⚠️ Building this Next.js application will produce .html files that will require \\`'unsafe-inline'\\` in the \\`script-src\\` directive of your Content Security Policy. See https://github.com/vercel/next.js/discussions/54152 for more info.\n`\n}], [\".gitignore\", {\n type: \"raw\",\n body: `# See https://help.github.com/articles/ignoring-files/ for more about ignoring files.\n\n# dependencies\n/node_modules\n/.pnp\n.pnp.js\n.yarn/install-state.gz\n\n# testing\n/coverage\n\n# next.js\n/.next\n/out\n\n# production\n/build\n\n# misc\n.DS_Store\n*.pem\n\n# debug\nnpm-debug.log*\nyarn-debug.log*\nyarn-error.log*\n\n# local env files\n.env*.local\n\n# vercel\n.vercel\n\n# typescript\n*.tsbuildinfo\nnext-env.d.ts\n`\n}], [\"next.config.js.hbs\", {\n type: \"raw\",\n body: `/** @type {import('next').NextConfig} */\nconst nextConfig = {\n reactStrictMode: false,\n output: \"export\",\n {{#if corsProxy}}\n // Rewrites are used to proxy requests during local development only for CORS\n // and will warn when using this feature together with export.\n rewrites: () => [\n {\n source: \"/:prefix(multipass/api|api)/:path*\",\n destination: \"{{foundryUrl}}/:prefix/:path*\",\n },\n ],\n {{/if}}\n};\n\nmodule.exports = nextConfig;\n`\n}], [\"package.json.hbs\", {\n type: \"raw\",\n body: `{\n \"name\": \"{{project}}\",\n \"private\": true,\n \"version\": \"0.0.0\",\n \"scripts\": {\n \"dev\": \"next dev -p 8080\",\n \"build\": \"next build\",\n \"start\": \"next start\",\n \"lint\": \"next lint\",\n \"test\": \"vitest run\"\n },\n \"dependencies\": {\n \"{{osdkPackage}}\": \"latest\",\n \"@osdk/client\": \"{{clientVersion}}\",\n \"@osdk/oauth\": \"^1.0.0\",\n \"next\": \"^15.0.1\",\n \"react\": \"^18\",\n \"react-dom\": \"^18\"\n },\n \"devDependencies\": {\n \"@next/env\": \"^15.0.1\",\n \"@types/node\": \"^20.17.0\",\n \"@types/react\": \"^18.3.12\",\n \"@types/react-dom\": \"^18.3.1\",\n \"eslint\": \"^9.15.0\",\n \"eslint-config-next\": \"^15.0.1\",\n \"typescript\": \"~5.5.4\",\n \"vitest\": \"^2.1.3\"\n }\n}`\n}], [\"public/next.svg\", {\n \"type\": \"base64\",\n \"body\": \"PHN2ZyB3aWR0aD0iMTgwIiBoZWlnaHQ9IjE4MCIgdmlld0JveD0iMCAwIDE4MCAxODAiIGZpbGw9Im5vbmUiIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyI+CjxtYXNrIGlkPSJtYXNrMF80MDhfMTM0IiBzdHlsZT0ibWFzay10eXBlOmFscGhhIiBtYXNrVW5pdHM9InVzZXJTcGFjZU9uVXNlIiB4PSIwIiB5PSIwIiB3aWR0aD0iMTgwIiBoZWlnaHQ9IjE4MCI+CjxjaXJjbGUgY3g9IjkwIiBjeT0iOTAiIHI9IjkwIiBmaWxsPSJibGFjayIvPgo8L21hc2s+CjxnIG1hc2s9InVybCgjbWFzazBfNDA4XzEzNCkiPgo8Y2lyY2xlIGN4PSI5MCIgY3k9IjkwIiByPSI5MCIgZmlsbD0iYmxhY2siLz4KPHBhdGggZD0iTTE0OS41MDggMTU3LjUyTDY5LjE0MiA1NEg1NFYxMjUuOTdINjYuMTEzNlY2OS4zODM2TDEzOS45OTkgMTY0Ljg0NUMxNDMuMzMzIDE2Mi42MTQgMTQ2LjUwOSAxNjAuMTY1IDE0OS41MDggMTU3LjUyWiIgZmlsbD0idXJsKCNwYWludDBfbGluZWFyXzQwOF8xMzQpIi8+CjxyZWN0IHg9IjExNSIgeT0iNTQiIHdpZHRoPSIxMiIgaGVpZ2h0PSI3MiIgZmlsbD0idXJsKCNwYWludDFfbGluZWFyXzQwOF8xMzQpIi8+CjwvZz4KPGRlZnM+CjxsaW5lYXJHcmFkaWVudCBpZD0icGFpbnQwX2xpbmVhcl80MDhfMTM0IiB4MT0iMTA5IiB5MT0iMTE2LjUiIHgyPSIxNDQuNSIgeTI9IjE2MC41IiBncmFkaWVudFVuaXRzPSJ1c2VyU3BhY2VPblVzZSI+CjxzdG9wIHN0b3AtY29sb3I9IndoaXRlIi8+CjxzdG9wIG9mZnNldD0iMSIgc3RvcC1jb2xvcj0id2hpdGUiIHN0b3Atb3BhY2l0eT0iMCIvPgo8L2xpbmVhckdyYWRpZW50Pgo8bGluZWFyR3JhZGllbnQgaWQ9InBhaW50MV9saW5lYXJfNDA4XzEzNCIgeDE9IjEyMSIgeTE9IjU0IiB4Mj0iMTIwLjc5OSIgeTI9IjEwNi44NzUiIGdyYWRpZW50VW5pdHM9InVzZXJTcGFjZU9uVXNlIj4KPHN0b3Agc3RvcC1jb2xvcj0id2hpdGUiLz4KPHN0b3Agb2Zmc2V0PSIxIiBzdG9wLWNvbG9yPSJ3aGl0ZSIgc3RvcC1vcGFjaXR5PSIwIi8+CjwvbGluZWFyR3JhZGllbnQ+CjwvZGVmcz4KPC9zdmc+Cg==\"\n}], [\"public/palantir.svg\", {\n \"type\": \"base64\",\n \"body\": \"PHN2ZyB3aWR0aD0iMTYiIGhlaWdodD0iMTYiIHZpZXdCb3g9IjAgMCAxNiAxNiIgZmlsbD0ibm9uZSIgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIj4KPHBhdGggZmlsbC1ydWxlPSJldmVub2RkIiBjbGlwLXJ1bGU9ImV2ZW5vZGQiIGQ9Ik00LjEwNzY4IDYuMDY0MDFDNC4xMDc2OCA4LjM3NzEgNS45NjcwMiAxMC4yNTI2IDguMjYwNTkgMTAuMjUyNkMxMC41NTQzIDEwLjI1MjYgMTIuNDEzOCA4LjM3NzEgMTIuNDEzOCA2LjA2NDAxQzEyLjQxMzggMy43NTA4IDEwLjU1NDMgMS44NzU1MyA4LjI2MDU5IDEuODc1NTNDNS45NjcwMiAxLjg3NTUzIDQuMTA3NjggMy43NTA4IDQuMTA3NjggNi4wNjQwMVpNOC4yNjA5MyAxMy45MjNMMTMuNjI5OSAxMS41ODQ4TDE0LjUyMTcgMTMuMzA5MUw4LjI2MDkzIDE2TDIgMTMuMzA5MUwyLjg5MjAxIDExLjU4NDhMOC4yNjA5MyAxMy45MjNaTTguMjYxMDEgMEM0Ljk0MzY3IDAgMi4yNTQ0MiAyLjcxMjI4IDIuMjU0NDIgNi4wNTgwM0MyLjI1NDQyIDkuNDAzNzggNC45NDM2NyAxMi4xMTU5IDguMjYxMDEgMTIuMTE1OUMxMS41NzgyIDEyLjExNTkgMTQuMjY3NiA5LjQwMzc4IDE0LjI2NzYgNi4wNTgwM0MxNC4yNjc2IDIuNzEyMjggMTEuNTc4MiAwIDguMjYxMDEgMFoiIGZpbGw9IiMxMTE0MTgiLz4KPC9zdmc+Cg==\"\n}], [\"src/app/auth/callback/page.tsx\", {\n type: \"raw\",\n body: `\"use client\";\nimport { getAuth } from \"@/lib/client\";\nimport { useRouter } from \"next/navigation\";\nimport { useEffect, useState } from \"react\";\n\n/**\n * Component to render at \\`/auth/callback\\`\n * This calls signIn() again to save the token, and then navigates the user back to the home page.\n */\nfunction AuthCallback() {\n const [error, setError] = useState<string | undefined>(undefined);\n const router = useRouter();\n\n // This effect conflicts with React 18 strict mode in development\n // https://react.dev/learn/synchronizing-with-effects#how-to-handle-the-effect-firing-twice-in-development\n useEffect(() => {\n getAuth()\n .signIn()\n .then(() => router.replace(\"/\"))\n .catch((e: unknown) => setError((e as Error).message ?? e));\n }, [router]);\n return <div>{error != null ? error : \"Authenticating…\"}</div>;\n}\n\nexport default AuthCallback;\n`\n}], [\"src/app/globals.css\", {\n \"type\": \"base64\",\n \"body\": \"OnJvb3QgewogIGZvbnQtZmFtaWx5OiBJbnRlciwgc3lzdGVtLXVpLCBBdmVuaXIsIEhlbHZldGljYSwgQXJpYWwsIHNhbnMtc2VyaWY7CiAgbGluZS1oZWlnaHQ6IDEuNTsKICBmb250LXdlaWdodDogNDAwOwoKICBjb2xvci1zY2hlbWU6IGxpZ2h0IGRhcms7CiAgY29sb3I6IHJnYmEoMjU1LCAyNTUsIDI1NSwgMC44Nyk7CiAgYmFja2dyb3VuZC1jb2xvcjogIzI0MjQyNDsKCiAgZm9udC1zeW50aGVzaXM6IG5vbmU7CiAgdGV4dC1yZW5kZXJpbmc6IG9wdGltaXplTGVnaWJpbGl0eTsKICAtd2Via2l0LWZvbnQtc21vb3RoaW5nOiBhbnRpYWxpYXNlZDsKICAtbW96LW9zeC1mb250LXNtb290aGluZzogZ3JheXNjYWxlOwp9Cgojcm9vdC1jb250YWluZXIgewogIGRpc3BsYXk6IGZsZXg7CiAgZmxleDogMTsKICBhbGlnbi1pdGVtczogY2VudGVyOwp9Cgojcm9vdCB7CiAgbWF4LXdpZHRoOiAxMjgwcHg7CiAgbWFyZ2luOiAwIGF1dG87CiAgcGFkZGluZzogMnJlbTsKICB0ZXh0LWFsaWduOiBjZW50ZXI7Cn0KCmEgewogIGZvbnQtd2VpZ2h0OiA1MDA7CiAgY29sb3I6ICM2NDZjZmY7CiAgdGV4dC1kZWNvcmF0aW9uOiBpbmhlcml0Owp9CmE6aG92ZXIgewogIGNvbG9yOiAjNTM1YmYyOwp9Cgpib2R5IHsKICBtYXJnaW46IDA7CiAgZGlzcGxheTogZmxleDsKICBmbGV4LWRpcmVjdGlvbjogY29sdW1uOwogIG1pbi13aWR0aDogMzIwcHg7CiAgbWluLWhlaWdodDogMTAwdmg7Cn0KCmgxIHsKICBmb250LXNpemU6IDMuMmVtOwogIGxpbmUtaGVpZ2h0OiAxLjE7Cn0KCmJ1dHRvbiB7CiAgYm9yZGVyLXJhZGl1czogOHB4OwogIGJvcmRlcjogMXB4IHNvbGlkIHRyYW5zcGFyZW50OwogIHBhZGRpbmc6IDAuNmVtIDEuMmVtOwogIGZvbnQtc2l6ZTogMWVtOwogIGZvbnQtd2VpZ2h0OiA1MDA7CiAgZm9udC1mYW1pbHk6IGluaGVyaXQ7CiAgYmFja2dyb3VuZC1jb2xvcjogIzFhMWExYTsKICBjdXJzb3I6IHBvaW50ZXI7CiAgdHJhbnNpdGlvbjogYm9yZGVyLWNvbG9yIDAuMjVzOwp9CmJ1dHRvbjpob3ZlciB7CiAgYm9yZGVyLWNvbG9yOiAjNjQ2Y2ZmOwp9CmJ1dHRvbjpmb2N1cywKYnV0dG9uOmZvY3VzLXZpc2libGUgewogIG91dGxpbmU6IDRweCBhdXRvIC13ZWJraXQtZm9jdXMtcmluZy1jb2xvcjsKfQoKQG1lZGlhIChwcmVmZXJzLWNvbG9yLXNjaGVtZTogbGlnaHQpIHsKICA6cm9vdCB7CiAgICBjb2xvcjogIzIxMzU0NzsKICAgIGJhY2tncm91bmQtY29sb3I6ICNmZmZmZmY7CiAgfQogIGE6aG92ZXIgewogICAgY29sb3I6ICM3NDdiZmY7CiAgfQogIGJ1dHRvbiB7CiAgICBiYWNrZ3JvdW5kLWNvbG9yOiAjZjlmOWY5OwogIH0KfQo=\"\n}], [\"src/app/icon.svg\", {\n \"type\": \"base64\",\n \"body\": \"PHN2ZyB3aWR0aD0iMTgwIiBoZWlnaHQ9IjE4MCIgdmlld0JveD0iMCAwIDE4MCAxODAiIGZpbGw9Im5vbmUiIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyI+CjxtYXNrIGlkPSJtYXNrMF80MDhfMTM0IiBzdHlsZT0ibWFzay10eXBlOmFscGhhIiBtYXNrVW5pdHM9InVzZXJTcGFjZU9uVXNlIiB4PSIwIiB5PSIwIiB3aWR0aD0iMTgwIiBoZWlnaHQ9IjE4MCI+CjxjaXJjbGUgY3g9IjkwIiBjeT0iOTAiIHI9IjkwIiBmaWxsPSJibGFjayIvPgo8L21hc2s+CjxnIG1hc2s9InVybCgjbWFzazBfNDA4XzEzNCkiPgo8Y2lyY2xlIGN4PSI5MCIgY3k9IjkwIiByPSI5MCIgZmlsbD0iYmxhY2siLz4KPHBhdGggZD0iTTE0OS41MDggMTU3LjUyTDY5LjE0MiA1NEg1NFYxMjUuOTdINjYuMTEzNlY2OS4zODM2TDEzOS45OTkgMTY0Ljg0NUMxNDMuMzMzIDE2Mi42MTQgMTQ2LjUwOSAxNjAuMTY1IDE0OS41MDggMTU3LjUyWiIgZmlsbD0idXJsKCNwYWludDBfbGluZWFyXzQwOF8xMzQpIi8+CjxyZWN0IHg9IjExNSIgeT0iNTQiIHdpZHRoPSIxMiIgaGVpZ2h0PSI3MiIgZmlsbD0idXJsKCNwYWludDFfbGluZWFyXzQwOF8xMzQpIi8+CjwvZz4KPGRlZnM+CjxsaW5lYXJHcmFkaWVudCBpZD0icGFpbnQwX2xpbmVhcl80MDhfMTM0IiB4MT0iMTA5IiB5MT0iMTE2LjUiIHgyPSIxNDQuNSIgeTI9IjE2MC41IiBncmFkaWVudFVuaXRzPSJ1c2VyU3BhY2VPblVzZSI+CjxzdG9wIHN0b3AtY29sb3I9IndoaXRlIi8+CjxzdG9wIG9mZnNldD0iMSIgc3RvcC1jb2xvcj0id2hpdGUiIHN0b3Atb3BhY2l0eT0iMCIvPgo8L2xpbmVhckdyYWRpZW50Pgo8bGluZWFyR3JhZGllbnQgaWQ9InBhaW50MV9saW5lYXJfNDA4XzEzNCIgeDE9IjEyMSIgeTE9IjU0IiB4Mj0iMTIwLjc5OSIgeTI9IjEwNi44NzUiIGdyYWRpZW50VW5pdHM9InVzZXJTcGFjZU9uVXNlIj4KPHN0b3Agc3RvcC1jb2xvcj0id2hpdGUiLz4KPHN0b3Agb2Zmc2V0PSIxIiBzdG9wLWNvbG9yPSJ3aGl0ZSIgc3RvcC1vcGFjaXR5PSIwIi8+CjwvbGluZWFyR3JhZGllbnQ+CjwvZGVmcz4KPC9zdmc+Cg==\"\n}], [\"src/app/layout.module.css\", {\n \"type\": \"base64\",\n \"body\": \"LmxvZ28gewogIGhlaWdodDogNmVtOwogIHdpZHRoOiBhdXRvOwogIHBhZGRpbmc6IDEuNWVtOwogIHdpbGwtY2hhbmdlOiBmaWx0ZXI7CiAgdHJhbnNpdGlvbjogZmlsdGVyIDMwMG1zOwp9CgoubG9nbzpob3ZlciB7CiAgZmlsdGVyOiBkcm9wLXNoYWRvdygwIDAgMmVtICM2NDZjZmZhYSk7Cn0K\"\n}], [\"src/app/layout.tsx\", {\n type: \"raw\",\n body: `import type { Metadata } from \"next\";\nimport { Inter } from \"next/font/google\";\nimport Image from \"next/image\";\nimport css from \"./layout.module.css\";\nimport \"./globals.css\";\n\nconst inter = Inter({ subsets: [\"latin\"] });\n\nexport const metadata: Metadata = {\n title: \"Ontology SDK + Next.js\",\n description: \"Generated by @osdk/create-app\",\n};\n\nfunction RootLayout({ children }: { children: React.ReactNode }) {\n return (\n <html lang=\"en\">\n <body className={inter.className}>\n <div id=\"root-container\">\n <div id=\"root\">\n <a\n href=\"https://www.palantir.com/docs/foundry/ontology-sdk/overview/\"\n target=\"_blank\"\n >\n <Image\n src=\"/palantir.svg\"\n alt=\"Palantir logo\"\n className={css.logo}\n width={16}\n height={16}\n priority\n />\n </a>\n <a href=\"https://nextjs.org/\" target=\"_blank\">\n <Image\n src=\"/next.svg\"\n alt=\"Next logo\"\n className={css.logo}\n width={16}\n height={16}\n priority\n />\n </a>\n {children}\n </div>\n </div>\n </body>\n </html>\n );\n}\n\nexport default RootLayout;\n`\n}], [\"src/app/login/page.tsx\", {\n type: \"raw\",\n body: `\"use client\";\nimport { getAuth } from \"@/lib/client\";\nimport { useRouter } from \"next/navigation\";\nimport { useCallback, useEffect, useState } from \"react\";\n\nfunction Login() {\n const [isLoggingIn, setIsLoggingIn] = useState(false);\n const [error, setError] = useState<string | undefined>(undefined);\n const router = useRouter();\n const [token, setToken] = useState<string | undefined>(undefined);\n useEffect(() => {\n setToken(getAuth().getTokenOrUndefined());\n }, []);\n\n const handleLogin = useCallback(async () => {\n setIsLoggingIn(true);\n try {\n // Initiate the OAuth flow, which will redirect the user to log into Foundry\n // Once the login has completed, the user will be redirected back to the route defined via the\n // FOUNDRY_REDIRECT_URL variable in .env.development\n await getAuth().signIn();\n } catch (e: unknown) {\n console.error(e);\n setError((e as Error).message ?? e);\n } finally {\n setIsLoggingIn(false);\n }\n }, []);\n\n useEffect(() => {\n // If the token exists but a user tries to load /login, redirect to the home page instead\n if (token != null) {\n router.replace(\"/\");\n }\n }, [token, router]);\n\n return (\n <div>\n <h1>Ontology SDK</h1>\n <button onClick={handleLogin}>\n {isLoggingIn ? \"Logging in…\" : \"Log in \"}\n </button>\n {error && <div>Unable to log in: {error}</div>}\n </div>\n );\n}\n\nexport default Login;\n`\n}], [\"src/app/page.module.css\", {\n \"type\": \"base64\",\n \"body\": \"Lm1ldGhvZHMgewogIHBhZGRpbmc6IDJlbTsKICBnYXA6IDJlbTsKICBkaXNwbGF5OiBmbGV4OwogIGZsZXgtZGlyZWN0aW9uOiByb3c7CiAgZmxleC13cmFwOiB3cmFwOwp9Cg==\"\n}], [\"src/app/page.tsx.hbs\", {\n type: \"raw\",\n body: `\"use client\";\nimport { \\$Objects, \\$Actions, \\$Queries } from \"{{osdkPackage}}\";\nimport useAuthenticated from \"@/lib/useAuthenticated\";\nimport css from \"./page.module.css\";\n\nfunction Home() {\n const authenticated = useAuthenticated();\n if (!authenticated) {\n return null;\n }\n\n const objectApiNames = Object.keys(\\$Objects);\n const actionApiNames = Object.keys(\\$Actions);\n const queryApiNames = Object.keys(\\$Queries);\n\n return (\n <div>\n <h1>{{osdkPackage}}</h1>\n <p>\n Welcome to your Ontology SDK! Try using any of the following methods\n now.\n </p>\n <div className={css.methods}>\n <div>\n <h2>Objects ({objectApiNames.length})</h2>\n {objectApiNames.map((objectApiName) => (\n <pre key={objectApiName}>\n \\$Objects.{objectApiName}\n </pre>\n ))}\n </div>\n <div>\n <h2>Actions ({actionApiNames.length})</h2>\n {actionApiNames.map((actionApiName) => (\n <pre key={actionApiName}>\n \\$Actions.{actionApiName}\n </pre>\n ))}\n </div>\n <div>\n <h2>Queries ({queryApiNames.length})</h2>\n {queryApiNames.map((queryApiName) => (\n <pre key={queryApiName}>\n \\$Queries.{queryApiName}\n </pre>\n ))}\n </div>\n </div>\n </div>\n );\n}\n\nexport default Home;\n`\n}], [\"src/env.test.ts\", {\n \"type\": \"base64\",\n \"body\": \"aW1wb3J0IHsgbG9hZEVudkNvbmZpZyB9IGZyb20gIkBuZXh0L2VudiI7CmltcG9ydCB7IGFmdGVyRWFjaCwgYmVmb3JlRWFjaCwgZXhwZWN0LCB0ZXN0LCB2aSB9IGZyb20gInZpdGVzdCI7Cgpjb25zdCBFTlZfVkFSUyA9IFsKICAiTkVYVF9QVUJMSUNfRk9VTkRSWV9BUElfVVJMIiwKICAiTkVYVF9QVUJMSUNfRk9VTkRSWV9DTElFTlRfSUQiLAogICJORVhUX1BVQkxJQ19GT1VORFJZX1JFRElSRUNUX1VSTCIsCl07CgpiZWZvcmVFYWNoKCgpID0+IHsKICB2aS5zdHViRW52KCJOT0RFX0VOViIsICJwcm9kdWN0aW9uIik7Cn0pOwoKYWZ0ZXJFYWNoKCgpID0+IHsKICB2aS51bnN0dWJBbGxFbnZzKCk7Cn0pOwoKZm9yIChjb25zdCBlbnZWYXIgb2YgRU5WX1ZBUlMpIHsKICB0ZXN0LnNraXBJZihwcm9jZXNzLmVudi5WRVJJRllfRU5WX1BST0RVQ1RJT04gIT09ICJ0cnVlIikoCiAgICBgcHJvZHVjdGlvbiBlbnYgc2hvdWxkIGNvbnRhaW4gJHtlbnZWYXJ9YCwKICAgICgpID0+IHsKICAgICAgY29uc3QgZW52ID0gbG9hZEVudkNvbmZpZyhwcm9jZXNzLmN3ZCgpKTsKICAgICAgZXhwZWN0KAogICAgICAgIGVudi5jb21iaW5lZEVudltlbnZWYXJdLAogICAgICAgIGAke2VudlZhcn0gc2hvdWxkIGJlIGRlZmluZWRgLAogICAgICApLnRvQmVEZWZpbmVkKCk7CiAgICAgIGV4cGVjdCgKICAgICAgICBlbnYuY29tYmluZWRFbnZbZW52VmFyXSwKICAgICAgICBgJHtlbnZWYXJ9IHNob3VsZCBub3QgY29udGFpbiBwbGFjZWhvbGRlciB2YWx1ZWAsCiAgICAgICkubm90LnRvTWF0Y2goLzwuKj4vKTsKICAgIH0sCiAgKTsKfQo=\"\n}], [\"src/lib/client.ts.hbs\", {\n type: \"raw\",\n body: `import type { Client } from \"@osdk/client\";\nimport type { PublicOauthClient } from \"@osdk/oauth\";\nimport { createClient } from \"@osdk/client\";\nimport { \\$ontologyRid } from \"{{osdkPackage}}\";\nimport { createPublicOauthClient } from \"@osdk/oauth\";\n\nconst url = process.env.NEXT_PUBLIC_FOUNDRY_API_URL;\nconst clientId = process.env.NEXT_PUBLIC_FOUNDRY_CLIENT_ID;\nconst redirectUrl = process.env.NEXT_PUBLIC_FOUNDRY_REDIRECT_URL;\ncheckEnv(url, \"NEXT_PUBLIC_FOUNDRY_API_URL\");\ncheckEnv(clientId, \"NEXT_PUBLIC_FOUNDRY_CLIENT_ID\");\ncheckEnv(redirectUrl, \"NEXT_PUBLIC_FOUNDRY_REDIRECT_URL\");\n{{#if scopes}}\nconst scopes = [\n {{#each scopes}}\n \"{{this}}\",\n {{/each}}\n];\n{{/if}}\n\nfunction checkEnv(\n value: string | undefined,\n name: string,\n): asserts value is string {\n if (value == null) {\n throw new Error(\\`Missing environment variable: \\${name}\\`);\n }\n}\n\n// Lazily configure the auth and client to prevent them from being used in pre-rendering\nlet auth: PublicOauthClient | null = null;\nlet client: Client | null = null;\n\nexport const getAuth = () => {\n if (auth == null) {\n auth = createPublicOauthClient(\n clientId,\n url,\n redirectUrl,\n {{#if scopes}}\n true,\n undefined,\n window.location.toString(),\n scopes,\n {{/if}}\n );\n }\n return auth;\n}\n\nexport const getClient = () => {\n if (client == null) {\n client = createClient(\n url,\n \\$ontologyRid,\n getAuth(),\n );\n }\n return client;\n}\n`\n}], [\"src/lib/useAuthenticated.ts\", {\n \"type\": \"base64\",\n \"body\": \"aW1wb3J0IHsgdXNlUm91dGVyIH0gZnJvbSAibmV4dC9uYXZpZ2F0aW9uIjsKaW1wb3J0IHsgdXNlRWZmZWN0LCB1c2VTdGF0ZSB9IGZyb20gInJlYWN0IjsKaW1wb3J0IHsgZ2V0QXV0aCB9IGZyb20gIi4vY2xpZW50IjsKCmZ1bmN0aW9uIHVzZUF1dGhlbnRpY2F0ZWQoKSB7CiAgY29uc3Qgcm91dGVyID0gdXNlUm91dGVyKCk7CiAgY29uc3QgW3Rva2VuLCBzZXRUb2tlbl0gPSB1c2VTdGF0ZTxzdHJpbmcgfCB1bmRlZmluZWQ+KHVuZGVmaW5lZCk7CiAgdXNlRWZmZWN0KCgpID0+IHsKICAgIHNldFRva2VuKGdldEF1dGgoKS5nZXRUb2tlbk9yVW5kZWZpbmVkKCkpOwogIH0sIFtdKTsKICB1c2VFZmZlY3QoKCkgPT4gewogICAgY29uc3QgYXV0aCA9IGdldEF1dGgoKTsKICAgIGlmIChhdXRoLmdldFRva2VuT3JVbmRlZmluZWQoKSA9PSBudWxsKSB7CiAgICAgIGF1dGgKICAgICAgICAucmVmcmVzaCgpCiAgICAgICAgLnRoZW4oKCkgPT4gewogICAgICAgICAgc2V0VG9rZW4oYXV0aC5nZXRUb2tlbk9yVW5kZWZpbmVkKCkpOwogICAgICAgIH0pCiAgICAgICAgLmNhdGNoKCgpID0+IHsKICAgICAgICAgIC8vIElmIHdlIGNhbm5vdCByZWZyZXNoIHRoZSB0b2tlbiAoaS5lLiB0aGUgdXNlciBpcyBub3QgbG9nZ2VkIGluKSB3ZSByZWRpcmVjdCB0byB0aGUgbG9naW4gcGFnZQogICAgICAgICAgcm91dGVyLnB1c2goIi9sb2dpbiIpOwogICAgICAgIH0pOwogICAgfQogIH0sIFtyb3V0ZXJdKTsKCiAgcmV0dXJuIHRva2VuICE9IG51bGw7Cn0KCmV4cG9ydCBkZWZhdWx0IHVzZUF1dGhlbnRpY2F0ZWQ7Cg==\"\n}], [\"tsconfig.json\", {\n \"type\": \"base64\",\n \"body\": \"ewogICJjb21waWxlck9wdGlvbnMiOiB7CiAgICAidGFyZ2V0IjogIkVTMjAyMCIsCiAgICAibGliIjogWyJkb20iLCAiZG9tLml0ZXJhYmxlIiwgImVzbmV4dCJdLAogICAgImFsbG93SnMiOiB0cnVlLAogICAgInNraXBMaWJDaGVjayI6IHRydWUsCiAgICAic3RyaWN0IjogdHJ1ZSwKICAgICJub0VtaXQiOiB0cnVlLAogICAgImVzTW9kdWxlSW50ZXJvcCI6IHRydWUsCiAgICAibW9kdWxlIjogImVzbmV4dCIsCiAgICAibW9kdWxlUmVzb2x1dGlvbiI6ICJidW5kbGVyIiwKICAgICJyZXNvbHZlSnNvbk1vZHVsZSI6IHRydWUsCiAgICAiaXNvbGF0ZWRNb2R1bGVzIjogdHJ1ZSwKICAgICJqc3giOiAicHJlc2VydmUiLAogICAgImluY3JlbWVudGFsIjogdHJ1ZSwKICAgICJwbHVnaW5zIjogWwogICAgICB7CiAgICAgICAgIm5hbWUiOiAibmV4dCIKICAgICAgfQogICAgXSwKICAgICJwYXRocyI6IHsKICAgICAgIkAvKiI6IFsiLi9zcmMvKiJdCiAgICB9CiAgfSwKICAiaW5jbHVkZSI6IFsibmV4dC1lbnYuZC50cyIsICIqKi8qLnRzIiwgIioqLyoudHN4IiwgIi5uZXh0L3R5cGVzLyoqLyoudHMiXSwKICAiZXhjbHVkZSI6IFsibm9kZV9tb2R1bGVzIl0KfQo=\"\n}]]);"]}
|
|
1
|
+
{"version":3,"sources":["../../../create-app.template.next-static-export.v2/build/esm/generatedNoCheck/index.js"],"names":[],"mappings":"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","file":"esm-6BUJALDZ.js","sourcesContent":["export const files = new Map([[\".eslintrc.json\", {\n \"type\": \"base64\",\n \"body\": \"ewogICJyb290IjogdHJ1ZSwKICAiZXh0ZW5kcyI6ICJuZXh0L2NvcmUtd2ViLXZpdGFscyIKfQo=\"\n}], [\"README.md.hbs\", {\n type: \"raw\",\n body: `# {{project}}\n\nThis project was generated with [\\`@osdk/create-app\\`](https://www.npmjs.com/package/@osdk/create-app) and demonstrates using the Ontology SDK package \\`{{osdkPackage}}\\` with React on top of Next.js. Check out the [Next.js](https://nextjs.org/docs) docs for further configuration.\n\n## Developing\n\nRun the following command or equivalent with your preferred package manager to start a local development server on \\`http://localhost:8080\\`:\n\n\\`\\`\\`sh\nnpm run dev\n\\`\\`\\`\n\nDevelopment configuration is stored in \\`.env.development\\`.\n\n{{#if corsProxy}}\nIn order to make API requests to Foundry, a CORS proxy has been set up for local development which may be removed if the stack is configured to allow \\`http://localhost:8080\\` to load resources. The configured OAuth client must also allow \\`http://localhost:8080/auth/callback\\` as a redirect URL.\n{{else}}\nIn order to make API requests to Foundry, CORS must be configured for the stack to allow \\`http://localhost:8080\\` to load resources. If this has not been configured and you are unable to request this, you can alternatively generate your project again with \\`--corsProxy true\\` to use a proxy for API requests during local development. The configured OAuth client must also allow \\`http://localhost:8080/auth/callback\\` as a redirect URL.\n{{/if}}\n\n## Deploying\n\nRun the following command or equivalent with your preferred package manager to create a production build of your application:\n\n\\`\\`\\`sh\nnpm run build\n\\`\\`\\`\n\nProduction configuration is stored in \\`.env.production\\`.\n\nIf you did not fill in the URL your production application will be hosted on you will need to fill in the \\`NEXT_PUBLIC_FOUNDRY_REDIRECT_URL\\` in \\`.env.production\\`. A default test is included in \\`env.test.ts\\` to verify your production environment variables which you can enable by removing the skip condition or running tests with the environment variable set \\`VERIFY_ENV_PRODUCTION=true\\`.\n\nIn order to make API requests to Foundry, CORS must be configured for the stack to allow the production origin to load resources. This will be automatically done for you if you are using Foundry website hosting. The configured OAuth client must also allow the production origin auth callback as a redirect URL.\n\nA \\`foundry.config.json\\` file is included in the root of this project to make deploying to Foundry website hosting with [\\`@osdk/cli\\`](https://www.npmjs.com/package/@osdk/cli) easier. If you are not using Foundry website hosting for your application you may delete this file.\n\n### Content Security Policy (CSP)\n\n⚠️ Building this Next.js application will produce .html files that will require \\`'unsafe-inline'\\` in the \\`script-src\\` directive of your Content Security Policy. See https://github.com/vercel/next.js/discussions/54152 for more info.\n`\n}], [\".gitignore\", {\n type: \"raw\",\n body: `# See https://help.github.com/articles/ignoring-files/ for more about ignoring files.\n\n# dependencies\n/node_modules\n/.pnp\n.pnp.js\n.yarn/install-state.gz\n\n# testing\n/coverage\n\n# next.js\n/.next\n/out\n\n# production\n/build\n\n# misc\n.DS_Store\n*.pem\n\n# debug\nnpm-debug.log*\nyarn-debug.log*\nyarn-error.log*\n\n# local env files\n.env*.local\n\n# vercel\n.vercel\n\n# typescript\n*.tsbuildinfo\nnext-env.d.ts\n`\n}], [\"next.config.js.hbs\", {\n type: \"raw\",\n body: `/** @type {import('next').NextConfig} */\nconst nextConfig = {\n reactStrictMode: false,\n output: \"export\",\n {{#if corsProxy}}\n // Rewrites are used to proxy requests during local development only for CORS\n // and will warn when using this feature together with export.\n rewrites: () => [\n {\n source: \"/:prefix(multipass/api|api)/:path*\",\n destination: \"{{foundryUrl}}/:prefix/:path*\",\n },\n ],\n {{/if}}\n};\n\nmodule.exports = nextConfig;\n`\n}], [\"package.json.hbs\", {\n type: \"raw\",\n body: `{\n \"name\": \"{{project}}\",\n \"private\": true,\n \"version\": \"0.0.0\",\n \"scripts\": {\n \"dev\": \"next dev -p 8080\",\n \"build\": \"next build\",\n \"start\": \"next start\",\n \"lint\": \"next lint\",\n \"test\": \"vitest run\"\n },\n \"dependencies\": {\n \"{{osdkPackage}}\": \"latest\",\n \"@osdk/client\": \"{{clientVersion}}\",\n \"@osdk/oauth\": \"^1.0.0\",\n \"next\": \"^15.1.6\",\n \"react\": \"^18\",\n \"react-dom\": \"^18\"\n },\n \"devDependencies\": {\n \"@next/env\": \"^15.0.1\",\n \"@types/node\": \"^20.17.0\",\n \"@types/react\": \"^18.3.12\",\n \"@types/react-dom\": \"^18.3.1\",\n \"eslint\": \"^9.15.0\",\n \"eslint-config-next\": \"^15.0.1\",\n \"typescript\": \"~5.5.4\",\n \"vitest\": \"^3.0.4\"\n }\n}`\n}], [\"public/next.svg\", {\n \"type\": \"base64\",\n \"body\": \"PHN2ZyB3aWR0aD0iMTgwIiBoZWlnaHQ9IjE4MCIgdmlld0JveD0iMCAwIDE4MCAxODAiIGZpbGw9Im5vbmUiIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyI+CjxtYXNrIGlkPSJtYXNrMF80MDhfMTM0IiBzdHlsZT0ibWFzay10eXBlOmFscGhhIiBtYXNrVW5pdHM9InVzZXJTcGFjZU9uVXNlIiB4PSIwIiB5PSIwIiB3aWR0aD0iMTgwIiBoZWlnaHQ9IjE4MCI+CjxjaXJjbGUgY3g9IjkwIiBjeT0iOTAiIHI9IjkwIiBmaWxsPSJibGFjayIvPgo8L21hc2s+CjxnIG1hc2s9InVybCgjbWFzazBfNDA4XzEzNCkiPgo8Y2lyY2xlIGN4PSI5MCIgY3k9IjkwIiByPSI5MCIgZmlsbD0iYmxhY2siLz4KPHBhdGggZD0iTTE0OS41MDggMTU3LjUyTDY5LjE0MiA1NEg1NFYxMjUuOTdINjYuMTEzNlY2OS4zODM2TDEzOS45OTkgMTY0Ljg0NUMxNDMuMzMzIDE2Mi42MTQgMTQ2LjUwOSAxNjAuMTY1IDE0OS41MDggMTU3LjUyWiIgZmlsbD0idXJsKCNwYWludDBfbGluZWFyXzQwOF8xMzQpIi8+CjxyZWN0IHg9IjExNSIgeT0iNTQiIHdpZHRoPSIxMiIgaGVpZ2h0PSI3MiIgZmlsbD0idXJsKCNwYWludDFfbGluZWFyXzQwOF8xMzQpIi8+CjwvZz4KPGRlZnM+CjxsaW5lYXJHcmFkaWVudCBpZD0icGFpbnQwX2xpbmVhcl80MDhfMTM0IiB4MT0iMTA5IiB5MT0iMTE2LjUiIHgyPSIxNDQuNSIgeTI9IjE2MC41IiBncmFkaWVudFVuaXRzPSJ1c2VyU3BhY2VPblVzZSI+CjxzdG9wIHN0b3AtY29sb3I9IndoaXRlIi8+CjxzdG9wIG9mZnNldD0iMSIgc3RvcC1jb2xvcj0id2hpdGUiIHN0b3Atb3BhY2l0eT0iMCIvPgo8L2xpbmVhckdyYWRpZW50Pgo8bGluZWFyR3JhZGllbnQgaWQ9InBhaW50MV9saW5lYXJfNDA4XzEzNCIgeDE9IjEyMSIgeTE9IjU0IiB4Mj0iMTIwLjc5OSIgeTI9IjEwNi44NzUiIGdyYWRpZW50VW5pdHM9InVzZXJTcGFjZU9uVXNlIj4KPHN0b3Agc3RvcC1jb2xvcj0id2hpdGUiLz4KPHN0b3Agb2Zmc2V0PSIxIiBzdG9wLWNvbG9yPSJ3aGl0ZSIgc3RvcC1vcGFjaXR5PSIwIi8+CjwvbGluZWFyR3JhZGllbnQ+CjwvZGVmcz4KPC9zdmc+Cg==\"\n}], [\"public/palantir.svg\", {\n \"type\": \"base64\",\n \"body\": \"PHN2ZyB3aWR0aD0iMTYiIGhlaWdodD0iMTYiIHZpZXdCb3g9IjAgMCAxNiAxNiIgZmlsbD0ibm9uZSIgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIj4KPHBhdGggZmlsbC1ydWxlPSJldmVub2RkIiBjbGlwLXJ1bGU9ImV2ZW5vZGQiIGQ9Ik00LjEwNzY4IDYuMDY0MDFDNC4xMDc2OCA4LjM3NzEgNS45NjcwMiAxMC4yNTI2IDguMjYwNTkgMTAuMjUyNkMxMC41NTQzIDEwLjI1MjYgMTIuNDEzOCA4LjM3NzEgMTIuNDEzOCA2LjA2NDAxQzEyLjQxMzggMy43NTA4IDEwLjU1NDMgMS44NzU1MyA4LjI2MDU5IDEuODc1NTNDNS45NjcwMiAxLjg3NTUzIDQuMTA3NjggMy43NTA4IDQuMTA3NjggNi4wNjQwMVpNOC4yNjA5MyAxMy45MjNMMTMuNjI5OSAxMS41ODQ4TDE0LjUyMTcgMTMuMzA5MUw4LjI2MDkzIDE2TDIgMTMuMzA5MUwyLjg5MjAxIDExLjU4NDhMOC4yNjA5MyAxMy45MjNaTTguMjYxMDEgMEM0Ljk0MzY3IDAgMi4yNTQ0MiAyLjcxMjI4IDIuMjU0NDIgNi4wNTgwM0MyLjI1NDQyIDkuNDAzNzggNC45NDM2NyAxMi4xMTU5IDguMjYxMDEgMTIuMTE1OUMxMS41NzgyIDEyLjExNTkgMTQuMjY3NiA5LjQwMzc4IDE0LjI2NzYgNi4wNTgwM0MxNC4yNjc2IDIuNzEyMjggMTEuNTc4MiAwIDguMjYxMDEgMFoiIGZpbGw9IiMxMTE0MTgiLz4KPC9zdmc+Cg==\"\n}], [\"src/app/auth/callback/page.tsx\", {\n type: \"raw\",\n body: `\"use client\";\nimport { getAuth } from \"@/lib/client\";\nimport { useRouter } from \"next/navigation\";\nimport { useEffect, useState } from \"react\";\n\n/**\n * Component to render at \\`/auth/callback\\`\n * This calls signIn() again to save the token, and then navigates the user back to the home page.\n */\nfunction AuthCallback() {\n const [error, setError] = useState<string | undefined>(undefined);\n const router = useRouter();\n\n // This effect conflicts with React 18 strict mode in development\n // https://react.dev/learn/synchronizing-with-effects#how-to-handle-the-effect-firing-twice-in-development\n useEffect(() => {\n getAuth()\n .signIn()\n .then(() => router.replace(\"/\"))\n .catch((e: unknown) => setError((e as Error).message ?? e));\n }, [router]);\n return <div>{error != null ? error : \"Authenticating…\"}</div>;\n}\n\nexport default AuthCallback;\n`\n}], [\"src/app/globals.css\", {\n \"type\": \"base64\",\n \"body\": \"OnJvb3QgewogIGZvbnQtZmFtaWx5OiBJbnRlciwgc3lzdGVtLXVpLCBBdmVuaXIsIEhlbHZldGljYSwgQXJpYWwsIHNhbnMtc2VyaWY7CiAgbGluZS1oZWlnaHQ6IDEuNTsKICBmb250LXdlaWdodDogNDAwOwoKICBjb2xvci1zY2hlbWU6IGxpZ2h0IGRhcms7CiAgY29sb3I6IHJnYmEoMjU1LCAyNTUsIDI1NSwgMC44Nyk7CiAgYmFja2dyb3VuZC1jb2xvcjogIzI0MjQyNDsKCiAgZm9udC1zeW50aGVzaXM6IG5vbmU7CiAgdGV4dC1yZW5kZXJpbmc6IG9wdGltaXplTGVnaWJpbGl0eTsKICAtd2Via2l0LWZvbnQtc21vb3RoaW5nOiBhbnRpYWxpYXNlZDsKICAtbW96LW9zeC1mb250LXNtb290aGluZzogZ3JheXNjYWxlOwp9Cgojcm9vdC1jb250YWluZXIgewogIGRpc3BsYXk6IGZsZXg7CiAgZmxleDogMTsKICBhbGlnbi1pdGVtczogY2VudGVyOwp9Cgojcm9vdCB7CiAgbWF4LXdpZHRoOiAxMjgwcHg7CiAgbWFyZ2luOiAwIGF1dG87CiAgcGFkZGluZzogMnJlbTsKICB0ZXh0LWFsaWduOiBjZW50ZXI7Cn0KCmEgewogIGZvbnQtd2VpZ2h0OiA1MDA7CiAgY29sb3I6ICM2NDZjZmY7CiAgdGV4dC1kZWNvcmF0aW9uOiBpbmhlcml0Owp9CmE6aG92ZXIgewogIGNvbG9yOiAjNTM1YmYyOwp9Cgpib2R5IHsKICBtYXJnaW46IDA7CiAgZGlzcGxheTogZmxleDsKICBmbGV4LWRpcmVjdGlvbjogY29sdW1uOwogIG1pbi13aWR0aDogMzIwcHg7CiAgbWluLWhlaWdodDogMTAwdmg7Cn0KCmgxIHsKICBmb250LXNpemU6IDMuMmVtOwogIGxpbmUtaGVpZ2h0OiAxLjE7Cn0KCmJ1dHRvbiB7CiAgYm9yZGVyLXJhZGl1czogOHB4OwogIGJvcmRlcjogMXB4IHNvbGlkIHRyYW5zcGFyZW50OwogIHBhZGRpbmc6IDAuNmVtIDEuMmVtOwogIGZvbnQtc2l6ZTogMWVtOwogIGZvbnQtd2VpZ2h0OiA1MDA7CiAgZm9udC1mYW1pbHk6IGluaGVyaXQ7CiAgYmFja2dyb3VuZC1jb2xvcjogIzFhMWExYTsKICBjdXJzb3I6IHBvaW50ZXI7CiAgdHJhbnNpdGlvbjogYm9yZGVyLWNvbG9yIDAuMjVzOwp9CmJ1dHRvbjpob3ZlciB7CiAgYm9yZGVyLWNvbG9yOiAjNjQ2Y2ZmOwp9CmJ1dHRvbjpmb2N1cywKYnV0dG9uOmZvY3VzLXZpc2libGUgewogIG91dGxpbmU6IDRweCBhdXRvIC13ZWJraXQtZm9jdXMtcmluZy1jb2xvcjsKfQoKQG1lZGlhIChwcmVmZXJzLWNvbG9yLXNjaGVtZTogbGlnaHQpIHsKICA6cm9vdCB7CiAgICBjb2xvcjogIzIxMzU0NzsKICAgIGJhY2tncm91bmQtY29sb3I6ICNmZmZmZmY7CiAgfQogIGE6aG92ZXIgewogICAgY29sb3I6ICM3NDdiZmY7CiAgfQogIGJ1dHRvbiB7CiAgICBiYWNrZ3JvdW5kLWNvbG9yOiAjZjlmOWY5OwogIH0KfQo=\"\n}], [\"src/app/icon.svg\", {\n \"type\": \"base64\",\n \"body\": \"PHN2ZyB3aWR0aD0iMTgwIiBoZWlnaHQ9IjE4MCIgdmlld0JveD0iMCAwIDE4MCAxODAiIGZpbGw9Im5vbmUiIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyI+CjxtYXNrIGlkPSJtYXNrMF80MDhfMTM0IiBzdHlsZT0ibWFzay10eXBlOmFscGhhIiBtYXNrVW5pdHM9InVzZXJTcGFjZU9uVXNlIiB4PSIwIiB5PSIwIiB3aWR0aD0iMTgwIiBoZWlnaHQ9IjE4MCI+CjxjaXJjbGUgY3g9IjkwIiBjeT0iOTAiIHI9IjkwIiBmaWxsPSJibGFjayIvPgo8L21hc2s+CjxnIG1hc2s9InVybCgjbWFzazBfNDA4XzEzNCkiPgo8Y2lyY2xlIGN4PSI5MCIgY3k9IjkwIiByPSI5MCIgZmlsbD0iYmxhY2siLz4KPHBhdGggZD0iTTE0OS41MDggMTU3LjUyTDY5LjE0MiA1NEg1NFYxMjUuOTdINjYuMTEzNlY2OS4zODM2TDEzOS45OTkgMTY0Ljg0NUMxNDMuMzMzIDE2Mi42MTQgMTQ2LjUwOSAxNjAuMTY1IDE0OS41MDggMTU3LjUyWiIgZmlsbD0idXJsKCNwYWludDBfbGluZWFyXzQwOF8xMzQpIi8+CjxyZWN0IHg9IjExNSIgeT0iNTQiIHdpZHRoPSIxMiIgaGVpZ2h0PSI3MiIgZmlsbD0idXJsKCNwYWludDFfbGluZWFyXzQwOF8xMzQpIi8+CjwvZz4KPGRlZnM+CjxsaW5lYXJHcmFkaWVudCBpZD0icGFpbnQwX2xpbmVhcl80MDhfMTM0IiB4MT0iMTA5IiB5MT0iMTE2LjUiIHgyPSIxNDQuNSIgeTI9IjE2MC41IiBncmFkaWVudFVuaXRzPSJ1c2VyU3BhY2VPblVzZSI+CjxzdG9wIHN0b3AtY29sb3I9IndoaXRlIi8+CjxzdG9wIG9mZnNldD0iMSIgc3RvcC1jb2xvcj0id2hpdGUiIHN0b3Atb3BhY2l0eT0iMCIvPgo8L2xpbmVhckdyYWRpZW50Pgo8bGluZWFyR3JhZGllbnQgaWQ9InBhaW50MV9saW5lYXJfNDA4XzEzNCIgeDE9IjEyMSIgeTE9IjU0IiB4Mj0iMTIwLjc5OSIgeTI9IjEwNi44NzUiIGdyYWRpZW50VW5pdHM9InVzZXJTcGFjZU9uVXNlIj4KPHN0b3Agc3RvcC1jb2xvcj0id2hpdGUiLz4KPHN0b3Agb2Zmc2V0PSIxIiBzdG9wLWNvbG9yPSJ3aGl0ZSIgc3RvcC1vcGFjaXR5PSIwIi8+CjwvbGluZWFyR3JhZGllbnQ+CjwvZGVmcz4KPC9zdmc+Cg==\"\n}], [\"src/app/layout.module.css\", {\n \"type\": \"base64\",\n \"body\": \"LmxvZ28gewogIGhlaWdodDogNmVtOwogIHdpZHRoOiBhdXRvOwogIHBhZGRpbmc6IDEuNWVtOwogIHdpbGwtY2hhbmdlOiBmaWx0ZXI7CiAgdHJhbnNpdGlvbjogZmlsdGVyIDMwMG1zOwp9CgoubG9nbzpob3ZlciB7CiAgZmlsdGVyOiBkcm9wLXNoYWRvdygwIDAgMmVtICM2NDZjZmZhYSk7Cn0K\"\n}], [\"src/app/layout.tsx\", {\n type: \"raw\",\n body: `import type { Metadata } from \"next\";\nimport { Inter } from \"next/font/google\";\nimport Image from \"next/image\";\nimport css from \"./layout.module.css\";\nimport \"./globals.css\";\n\nconst inter = Inter({ subsets: [\"latin\"] });\n\nexport const metadata: Metadata = {\n title: \"Ontology SDK + Next.js\",\n description: \"Generated by @osdk/create-app\",\n};\n\nfunction RootLayout({ children }: { children: React.ReactNode }) {\n return (\n <html lang=\"en\">\n <body className={inter.className}>\n <div id=\"root-container\">\n <div id=\"root\">\n <a\n href=\"https://www.palantir.com/docs/foundry/ontology-sdk/overview/\"\n target=\"_blank\"\n >\n <Image\n src=\"/palantir.svg\"\n alt=\"Palantir logo\"\n className={css.logo}\n width={16}\n height={16}\n priority\n />\n </a>\n <a href=\"https://nextjs.org/\" target=\"_blank\">\n <Image\n src=\"/next.svg\"\n alt=\"Next logo\"\n className={css.logo}\n width={16}\n height={16}\n priority\n />\n </a>\n {children}\n </div>\n </div>\n </body>\n </html>\n );\n}\n\nexport default RootLayout;\n`\n}], [\"src/app/login/page.tsx\", {\n type: \"raw\",\n body: `\"use client\";\nimport { getAuth } from \"@/lib/client\";\nimport { useRouter } from \"next/navigation\";\nimport { useCallback, useEffect, useState } from \"react\";\n\nfunction Login() {\n const [isLoggingIn, setIsLoggingIn] = useState(false);\n const [error, setError] = useState<string | undefined>(undefined);\n const router = useRouter();\n const [token, setToken] = useState<string | undefined>(undefined);\n useEffect(() => {\n setToken(getAuth().getTokenOrUndefined());\n }, []);\n\n const handleLogin = useCallback(async () => {\n setIsLoggingIn(true);\n try {\n // Initiate the OAuth flow, which will redirect the user to log into Foundry\n // Once the login has completed, the user will be redirected back to the route defined via the\n // FOUNDRY_REDIRECT_URL variable in .env.development\n await getAuth().signIn();\n } catch (e: unknown) {\n console.error(e);\n setError((e as Error).message ?? e);\n } finally {\n setIsLoggingIn(false);\n }\n }, []);\n\n useEffect(() => {\n // If the token exists but a user tries to load /login, redirect to the home page instead\n if (token != null) {\n router.replace(\"/\");\n }\n }, [token, router]);\n\n return (\n <div>\n <h1>Ontology SDK</h1>\n <button onClick={handleLogin}>\n {isLoggingIn ? \"Logging in…\" : \"Log in \"}\n </button>\n {error && <div>Unable to log in: {error}</div>}\n </div>\n );\n}\n\nexport default Login;\n`\n}], [\"src/app/page.module.css\", {\n \"type\": \"base64\",\n \"body\": \"Lm1ldGhvZHMgewogIHBhZGRpbmc6IDJlbTsKICBnYXA6IDJlbTsKICBkaXNwbGF5OiBmbGV4OwogIGZsZXgtZGlyZWN0aW9uOiByb3c7CiAgZmxleC13cmFwOiB3cmFwOwp9Cg==\"\n}], [\"src/app/page.tsx.hbs\", {\n type: \"raw\",\n body: `\"use client\";\nimport { \\$Objects, \\$Actions, \\$Queries } from \"{{osdkPackage}}\";\nimport useAuthenticated from \"@/lib/useAuthenticated\";\nimport css from \"./page.module.css\";\n\nfunction Home() {\n const authenticated = useAuthenticated();\n if (!authenticated) {\n return null;\n }\n\n const objectApiNames = Object.keys(\\$Objects);\n const actionApiNames = Object.keys(\\$Actions);\n const queryApiNames = Object.keys(\\$Queries);\n\n return (\n <div>\n <h1>{{osdkPackage}}</h1>\n <p>\n Welcome to your Ontology SDK! Try using any of the following methods\n now.\n </p>\n <div className={css.methods}>\n <div>\n <h2>Objects ({objectApiNames.length})</h2>\n {objectApiNames.map((objectApiName) => (\n <pre key={objectApiName}>\n \\$Objects.{objectApiName}\n </pre>\n ))}\n </div>\n <div>\n <h2>Actions ({actionApiNames.length})</h2>\n {actionApiNames.map((actionApiName) => (\n <pre key={actionApiName}>\n \\$Actions.{actionApiName}\n </pre>\n ))}\n </div>\n <div>\n <h2>Queries ({queryApiNames.length})</h2>\n {queryApiNames.map((queryApiName) => (\n <pre key={queryApiName}>\n \\$Queries.{queryApiName}\n </pre>\n ))}\n </div>\n </div>\n </div>\n );\n}\n\nexport default Home;\n`\n}], [\"src/env.test.ts\", {\n \"type\": \"base64\",\n \"body\": \"aW1wb3J0IHsgbG9hZEVudkNvbmZpZyB9IGZyb20gIkBuZXh0L2VudiI7CmltcG9ydCB7IGFmdGVyRWFjaCwgYmVmb3JlRWFjaCwgZXhwZWN0LCB0ZXN0LCB2aSB9IGZyb20gInZpdGVzdCI7Cgpjb25zdCBFTlZfVkFSUyA9IFsKICAiTkVYVF9QVUJMSUNfRk9VTkRSWV9BUElfVVJMIiwKICAiTkVYVF9QVUJMSUNfRk9VTkRSWV9DTElFTlRfSUQiLAogICJORVhUX1BVQkxJQ19GT1VORFJZX1JFRElSRUNUX1VSTCIsCl07CgpiZWZvcmVFYWNoKCgpID0+IHsKICB2aS5zdHViRW52KCJOT0RFX0VOViIsICJwcm9kdWN0aW9uIik7Cn0pOwoKYWZ0ZXJFYWNoKCgpID0+IHsKICB2aS51bnN0dWJBbGxFbnZzKCk7Cn0pOwoKZm9yIChjb25zdCBlbnZWYXIgb2YgRU5WX1ZBUlMpIHsKICB0ZXN0LnNraXBJZihwcm9jZXNzLmVudi5WRVJJRllfRU5WX1BST0RVQ1RJT04gIT09ICJ0cnVlIikoCiAgICBgcHJvZHVjdGlvbiBlbnYgc2hvdWxkIGNvbnRhaW4gJHtlbnZWYXJ9YCwKICAgICgpID0+IHsKICAgICAgY29uc3QgZW52ID0gbG9hZEVudkNvbmZpZyhwcm9jZXNzLmN3ZCgpKTsKICAgICAgZXhwZWN0KAogICAgICAgIGVudi5jb21iaW5lZEVudltlbnZWYXJdLAogICAgICAgIGAke2VudlZhcn0gc2hvdWxkIGJlIGRlZmluZWRgLAogICAgICApLnRvQmVEZWZpbmVkKCk7CiAgICAgIGV4cGVjdCgKICAgICAgICBlbnYuY29tYmluZWRFbnZbZW52VmFyXSwKICAgICAgICBgJHtlbnZWYXJ9IHNob3VsZCBub3QgY29udGFpbiBwbGFjZWhvbGRlciB2YWx1ZWAsCiAgICAgICkubm90LnRvTWF0Y2goLzwuKj4vKTsKICAgIH0sCiAgKTsKfQo=\"\n}], [\"src/lib/client.ts.hbs\", {\n type: \"raw\",\n body: `import type { Client } from \"@osdk/client\";\nimport type { PublicOauthClient } from \"@osdk/oauth\";\nimport { createClient } from \"@osdk/client\";\nimport { \\$ontologyRid } from \"{{osdkPackage}}\";\nimport { createPublicOauthClient } from \"@osdk/oauth\";\n\nconst url = process.env.NEXT_PUBLIC_FOUNDRY_API_URL;\nconst clientId = process.env.NEXT_PUBLIC_FOUNDRY_CLIENT_ID;\nconst redirectUrl = process.env.NEXT_PUBLIC_FOUNDRY_REDIRECT_URL;\ncheckEnv(url, \"NEXT_PUBLIC_FOUNDRY_API_URL\");\ncheckEnv(clientId, \"NEXT_PUBLIC_FOUNDRY_CLIENT_ID\");\ncheckEnv(redirectUrl, \"NEXT_PUBLIC_FOUNDRY_REDIRECT_URL\");\n{{#if scopes}}\nconst scopes = [\n {{#each scopes}}\n \"{{this}}\",\n {{/each}}\n];\n{{/if}}\n\nfunction checkEnv(\n value: string | undefined,\n name: string,\n): asserts value is string {\n if (value == null) {\n throw new Error(\\`Missing environment variable: \\${name}\\`);\n }\n}\n\n// Lazily configure the auth and client to prevent them from being used in pre-rendering\nlet auth: PublicOauthClient | null = null;\nlet client: Client | null = null;\n\nexport const getAuth = () => {\n if (auth == null) {\n auth = createPublicOauthClient(\n clientId,\n url,\n redirectUrl,\n {{#if scopes}}\n true,\n undefined,\n window.location.toString(),\n scopes,\n {{/if}}\n );\n }\n return auth;\n}\n\nexport const getClient = () => {\n if (client == null) {\n client = createClient(\n url,\n \\$ontologyRid,\n getAuth(),\n );\n }\n return client;\n}\n`\n}], [\"src/lib/useAuthenticated.ts\", {\n \"type\": \"base64\",\n \"body\": \"aW1wb3J0IHsgdXNlUm91dGVyIH0gZnJvbSAibmV4dC9uYXZpZ2F0aW9uIjsKaW1wb3J0IHsgdXNlRWZmZWN0LCB1c2VTdGF0ZSB9IGZyb20gInJlYWN0IjsKaW1wb3J0IHsgZ2V0QXV0aCB9IGZyb20gIi4vY2xpZW50IjsKCmZ1bmN0aW9uIHVzZUF1dGhlbnRpY2F0ZWQoKSB7CiAgY29uc3Qgcm91dGVyID0gdXNlUm91dGVyKCk7CiAgY29uc3QgW3Rva2VuLCBzZXRUb2tlbl0gPSB1c2VTdGF0ZTxzdHJpbmcgfCB1bmRlZmluZWQ+KHVuZGVmaW5lZCk7CiAgdXNlRWZmZWN0KCgpID0+IHsKICAgIHNldFRva2VuKGdldEF1dGgoKS5nZXRUb2tlbk9yVW5kZWZpbmVkKCkpOwogIH0sIFtdKTsKICB1c2VFZmZlY3QoKCkgPT4gewogICAgY29uc3QgYXV0aCA9IGdldEF1dGgoKTsKICAgIGlmIChhdXRoLmdldFRva2VuT3JVbmRlZmluZWQoKSA9PSBudWxsKSB7CiAgICAgIGF1dGgKICAgICAgICAucmVmcmVzaCgpCiAgICAgICAgLnRoZW4oKCkgPT4gewogICAgICAgICAgc2V0VG9rZW4oYXV0aC5nZXRUb2tlbk9yVW5kZWZpbmVkKCkpOwogICAgICAgIH0pCiAgICAgICAgLmNhdGNoKCgpID0+IHsKICAgICAgICAgIC8vIElmIHdlIGNhbm5vdCByZWZyZXNoIHRoZSB0b2tlbiAoaS5lLiB0aGUgdXNlciBpcyBub3QgbG9nZ2VkIGluKSB3ZSByZWRpcmVjdCB0byB0aGUgbG9naW4gcGFnZQogICAgICAgICAgcm91dGVyLnB1c2goIi9sb2dpbiIpOwogICAgICAgIH0pOwogICAgfQogIH0sIFtyb3V0ZXJdKTsKCiAgcmV0dXJuIHRva2VuICE9IG51bGw7Cn0KCmV4cG9ydCBkZWZhdWx0IHVzZUF1dGhlbnRpY2F0ZWQ7Cg==\"\n}], [\"tsconfig.json\", {\n \"type\": \"base64\",\n \"body\": \"ewogICJjb21waWxlck9wdGlvbnMiOiB7CiAgICAidGFyZ2V0IjogIkVTMjAyMCIsCiAgICAibGliIjogWyJkb20iLCAiZG9tLml0ZXJhYmxlIiwgImVzbmV4dCJdLAogICAgImFsbG93SnMiOiB0cnVlLAogICAgInNraXBMaWJDaGVjayI6IHRydWUsCiAgICAic3RyaWN0IjogdHJ1ZSwKICAgICJub0VtaXQiOiB0cnVlLAogICAgImVzTW9kdWxlSW50ZXJvcCI6IHRydWUsCiAgICAibW9kdWxlIjogImVzbmV4dCIsCiAgICAibW9kdWxlUmVzb2x1dGlvbiI6ICJidW5kbGVyIiwKICAgICJyZXNvbHZlSnNvbk1vZHVsZSI6IHRydWUsCiAgICAiaXNvbGF0ZWRNb2R1bGVzIjogdHJ1ZSwKICAgICJqc3giOiAicHJlc2VydmUiLAogICAgImluY3JlbWVudGFsIjogdHJ1ZSwKICAgICJwbHVnaW5zIjogWwogICAgICB7CiAgICAgICAgIm5hbWUiOiAibmV4dCIKICAgICAgfQogICAgXSwKICAgICJwYXRocyI6IHsKICAgICAgIkAvKiI6IFsiLi9zcmMvKiJdCiAgICB9CiAgfSwKICAiaW5jbHVkZSI6IFsibmV4dC1lbnYuZC50cyIsICIqKi8qLnRzIiwgIioqLyoudHN4IiwgIi5uZXh0L3R5cGVzLyoqLyoudHMiXSwKICAiZXhjbHVkZSI6IFsibm9kZV9tb2R1bGVzIl0KfQo=\"\n}]]);"]}
|
|
@@ -122,8 +122,8 @@ dist-ssr
|
|
|
122
122
|
"globals": "^15.11.0",
|
|
123
123
|
"typescript": "~5.5.4",
|
|
124
124
|
"typescript-eslint": "^8.15.0",
|
|
125
|
-
"vite": "^
|
|
126
|
-
"vitest": "^
|
|
125
|
+
"vite": "^6.0.11",
|
|
126
|
+
"vitest": "^3.0.4"
|
|
127
127
|
}
|
|
128
128
|
}`
|
|
129
129
|
}], ["public/todo-app.svg", {
|
|
@@ -899,5 +899,5 @@ export default defineConfig({
|
|
|
899
899
|
}]]);
|
|
900
900
|
|
|
901
901
|
export { files };
|
|
902
|
-
//# sourceMappingURL=esm-
|
|
903
|
-
//# sourceMappingURL=esm-
|
|
902
|
+
//# sourceMappingURL=esm-7ZIUG4U6.js.map
|
|
903
|
+
//# sourceMappingURL=esm-7ZIUG4U6.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"sources":["../../../create-app.template.tutorial-todo-app/build/esm/generatedNoCheck/index.js"],"names":[],"mappings":"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","file":"esm-7ZIUG4U6.js","sourcesContent":["export const files = new Map([[\"README.md.hbs\", {\n type: \"raw\",\n body: `# {{project}}\n\nThis project was generated with [\\`@osdk/create-app\\`](https://www.npmjs.com/package/@osdk/create-app) and is intended to be used alongside the Developer Console tutorial for creating a To Do App against a reference Ontology.\n\n## Developing\n\nRun the following command or equivalent with your preferred package manager to start a local development server on \\`http://localhost:8080\\`:\n\n\\`\\`\\`sh\nnpm run dev\n\\`\\`\\`\n\nDevelopment configuration is stored in \\`.env.development\\`.\n\n{{#if corsProxy}}\nIn order to make API requests to Foundry, a CORS proxy has been set up for local development which may be removed if the stack is configured to allow \\`http://localhost:8080\\` to load resources. The configured OAuth client must also allow \\`http://localhost:8080/auth/callback\\` as a redirect URL.\n{{else}}\nIn order to make API requests to Foundry, CORS must be configured for the stack to allow \\`http://localhost:8080\\` to load resources. If this has not been configured and you are unable to request this, you can alternatively generate your project again with \\`--corsProxy true\\` to use a proxy for API requests during local development. The configured OAuth client must also allow \\`http://localhost:8080/auth/callback\\` as a redirect URL.\n{{/if}}\n\n## Deploying\n\nRun the following command or equivalent with your preferred package manager to create a production build of your application:\n\n\\`\\`\\`sh\nnpm run build\n\\`\\`\\`\n\nProduction configuration is stored in \\`.env.production\\`.\n\nIf you did not fill in the URL your production application will be hosted on you will need to fill in the \\`VITE_FOUNDRY_REDIRECT_URL\\` in \\`.env.production\\`. A default test is included in \\`env.test.ts\\` to verify your production environment variables which you can enable by removing the skip condition or running tests with the environment variable set \\`VERIFY_ENV_PRODUCTION=true\\`.\n\nIn order to make API requests to Foundry, CORS must be configured for the stack to allow the production origin to load resources. This will be automatically done for you if you are using Foundry website hosting. The configured OAuth client must also allow the production origin auth callback as a redirect URL.\n\nA \\`foundry.config.json\\` file is included in the root of this project to make deploying to Foundry website hosting with [\\`@osdk/cli\\`](https://www.npmjs.com/package/@osdk/cli) easier. If you are not using Foundry website hosting for your application you may delete this file.\n`\n}], [\".gitignore\", {\n type: \"raw\",\n body: `# Logs\nlogs\n*.log\nnpm-debug.log*\nyarn-debug.log*\nyarn-error.log*\npnpm-debug.log*\nlerna-debug.log*\n\nnode_modules\ndist\ndist-ssr\n*.local\n\n# Editor directories and files\n.vscode/*\n!.vscode/extensions.json\n.idea\n.DS_Store\n*.suo\n*.ntvs*\n*.njsproj\n*.sln\n*.sw?\n`\n}], [\"eslint.config.mjs\", {\n \"type\": \"base64\",\n \"body\": \"Ly8gQHRzLWNoZWNrCmltcG9ydCBlc2xpbnQgZnJvbSAiQGVzbGludC9qcyI7CmltcG9ydCB0c1BhcnNlciBmcm9tICJAdHlwZXNjcmlwdC1lc2xpbnQvcGFyc2VyIjsKaW1wb3J0ICogYXMgaW1wb3J0UGx1Z2luIGZyb20gImVzbGludC1wbHVnaW4taW1wb3J0IjsKaW1wb3J0IGpzeEExMXlQbHVnaW4gZnJvbSAiZXNsaW50LXBsdWdpbi1qc3gtYTExeSI7CmltcG9ydCByZWFjdFBsdWdpbiBmcm9tICJlc2xpbnQtcGx1Z2luLXJlYWN0IjsKaW1wb3J0IHJlYWN0SG9va3NQbHVnaW4gZnJvbSAiZXNsaW50LXBsdWdpbi1yZWFjdC1ob29rcyI7CmltcG9ydCByZWFjdFJlZnJlc2ggZnJvbSAiZXNsaW50LXBsdWdpbi1yZWFjdC1yZWZyZXNoIjsKaW1wb3J0IGdsb2JhbHMgZnJvbSAiZ2xvYmFscyI7CmltcG9ydCB0c2VzbGludCBmcm9tICJ0eXBlc2NyaXB0LWVzbGludCI7CgpleHBvcnQgZGVmYXVsdCB0c2VzbGludC5jb25maWcoewogIGZpbGVzOiBbImVzbGludC5jb25maWcubWpzIiwgInNyYy8qKi8qLntqcyxtanMsY2pzLHRzLGpzeCx0c3h9Il0sCiAgc2V0dGluZ3M6IHsKICAgIHJlYWN0OiB7CiAgICAgIHZlcnNpb246ICJkZXRlY3QiLAogICAgfSwKCiAgICAiaW1wb3J0L3Jlc29sdmVyIjogewogICAgICBub2RlOiB7CiAgICAgICAgZXh0ZW5zaW9uczogWyIuanMiLCAiLmpzeCIsICIudHMiLCAiLnRzeCJdLAogICAgICB9LAogICAgfSwKICB9LAogIGxhbmd1YWdlT3B0aW9uczogewogICAgZ2xvYmFsczogewogICAgICAuLi5nbG9iYWxzLmJyb3dzZXIsCiAgICB9LAoKICAgIHBhcnNlcjogdHNQYXJzZXIsCiAgfSwKICBleHRlbmRzOiBbCiAgICBlc2xpbnQuY29uZmlncy5yZWNvbW1lbmRlZCwKICAgIC4uLnRzZXNsaW50LmNvbmZpZ3MucmVjb21tZW5kZWQsCiAgXSwKICBwbHVnaW5zOiB7CiAgICAicmVhY3QiOiAvKiogQHR5cGUgaW1wb3J0KCJlc2xpbnQiKS5FU0xpbnQuUGx1Z2luICovIChyZWFjdFBsdWdpbiksCiAgICAicmVhY3QtcmVmcmVzaCI6IHJlYWN0UmVmcmVzaCwKICAgICJyZWFjdC1ob29rcyI6CiAgICAgIC8qKiBAdHlwZSBpbXBvcnQoImVzbGludCIpLkVTTGludC5QbHVnaW4gKi8gKHJlYWN0SG9va3NQbHVnaW4pLAogICAgImpzeC1hMTF5IjoganN4QTExeVBsdWdpbiwKICAgICJpbXBvcnQiOiBpbXBvcnRQbHVnaW4sCiAgfSwKICBydWxlczogewogICAgLi4uKAogICAgICAvKiogQHR5cGUgaW1wb3J0KCJlc2xpbnQiKS5MaW50ZXIuUnVsZXNSZWNvcmQgKi8KICAgICAgKHJlYWN0UGx1Z2luLmNvbmZpZ3MuZmxhdD8ucmVjb21tZW5kZWQucnVsZXMpCiAgICApLAogICAgInJlYWN0LWhvb2tzL3J1bGVzLW9mLWhvb2tzIjogImVycm9yIiwKICAgICJyZWFjdC1ob29rcy9leGhhdXN0aXZlLWRlcHMiOiAid2FybiIsCiAgICAuLi5qc3hBMTF5UGx1Z2luLmNvbmZpZ3MucmVjb21tZW5kZWQucnVsZXMsCiAgICAicmVhY3QtcmVmcmVzaC9vbmx5LWV4cG9ydC1jb21wb25lbnRzIjogWyJ3YXJuIiwgewogICAgICBhbGxvd0NvbnN0YW50RXhwb3J0OiB0cnVlLAogICAgfV0sCgogICAgImltcG9ydC9uYW1lZCI6ICJlcnJvciIsCiAgICAiaW1wb3J0L2RlZmF1bHQiOiAiZXJyb3IiLAogICAgImltcG9ydC9uYW1lc3BhY2UiOiAiZXJyb3IiLAogICAgImltcG9ydC9uby1kdXBsaWNhdGVzIjogImVycm9yIiwKICAgICJpbXBvcnQvbm8tZXh0cmFuZW91cy1kZXBlbmRlbmNpZXMiOiAiZXJyb3IiLAoKICAgICJyZWFjdC9yZWFjdC1pbi1qc3gtc2NvcGUiOiAib2ZmIiwKICB9LAp9KTsK\"\n}], [\"index.html\", {\n type: \"raw\",\n body: `<!doctype html>\n<html lang=\"en\">\n <head>\n <meta charset=\"UTF-8\" />\n <link rel=\"icon\" type=\"image/svg+xml\" href=\"/todo-app.svg\" />\n <meta name=\"viewport\" content=\"width=device-width, initial-scale=1.0\" />\n <title>Ontology SDK Tutorial - Todo App</title>\n </head>\n <body>\n <div id=\"root-container\">\n <div id=\"root\"></div>\n </div>\n <script type=\"module\" src=\"/src/main.tsx\"></script>\n </body>\n</html>\n`\n}], [\"package.json.hbs\", {\n type: \"raw\",\n body: `{\n \"name\": \"{{project}}\",\n \"private\": true,\n \"version\": \"0.0.0\",\n \"type\": \"module\",\n \"scripts\": {\n \"dev\": \"vite\",\n \"build\": \"tsc && vite build\",\n \"lint\": \"eslint . --report-unused-disable-directives --max-warnings 0\",\n \"test\": \"vitest run\",\n \"preview\": \"vite preview\"\n },\n \"dependencies\": {\n \"{{osdkPackage}}\": \"latest\",\n \"react\": \"^18\",\n \"react-dom\": \"^18\",\n \"react-router-dom\": \"^6.23.1\",\n \"swr\": \"^2.2.5\"\n },\n \"devDependencies\": {\n \"@eslint/js\": \"^9.13.0\",\n \"@types/react\": \"^18\",\n \"@types/react-dom\": \"^18\",\n \"@typescript-eslint/eslint-plugin\": \"^8.15.0\",\n \"@typescript-eslint/parser\": \"^8.15.0\",\n \"@vitejs/plugin-react\": \"^4.2.0\",\n \"eslint\": \"^9.15.0\",\n \"eslint-plugin-import\": \"^2.31.0\",\n \"eslint-plugin-jsx-a11y\": \"^6.10.1\",\n \"eslint-plugin-react\": \"^7.37.2\",\n \"eslint-plugin-react-hooks\": \"^5.0.0\",\n \"eslint-plugin-react-refresh\": \"^0.4.14\",\n \"globals\": \"^15.11.0\",\n \"typescript\": \"~5.5.4\",\n \"typescript-eslint\": \"^8.15.0\",\n \"vite\": \"^6.0.11\",\n \"vitest\": \"^3.0.4\"\n }\n}`\n}], [\"public/todo-app.svg\", {\n \"type\": \"base64\",\n \"body\": \"PHN2ZyB3aWR0aD0iMTI4IiBoZWlnaHQ9IjEyOCIgdmlld0JveD0iMCAwIDEyOCAxMjgiIGZpbGw9Im5vbmUiIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyI+CjxyZWN0IHdpZHRoPSIxMjgiIGhlaWdodD0iMTI4IiByeD0iMTYiIGZpbGw9IiNGQkIzNjAiLz4KPHBhdGggZmlsbC1ydWxlPSJldmVub2RkIiBjbGlwLXJ1bGU9ImV2ZW5vZGQiIGQ9Ik0yOCA4MlY5NEg0MFY4MkgyOFpNMjIgNzBINDZDNDkuMyA3MCA1MiA3Mi43IDUyIDc2VjEwMEM1MiAxMDMuMyA0OS4zIDEwNiA0NiAxMDZIMjJDMTguNyAxMDYgMTYgMTAzLjMgMTYgMTAwVjc2QzE2IDcyLjcgMTguNyA3MCAyMiA3MFpNNzYgMzRIMTA2QzEwOS4zIDM0IDExMiAzNi43IDExMiA0MEMxMTIgNDMuMyAxMDkuMyA0NiAxMDYgNDZINzZDNzIuNyA0NiA3MCA0My4zIDcwIDQwQzcwIDM2LjcgNzIuNyAzNCA3NiAzNFpNNTIgMjJDNTUuMyAyMiA1OCAyNC43IDU4IDI4QzU4IDI5LjY4IDU3LjM0IDMxLjE4IDU2LjI2IDMyLjI2TDM4LjI2IDU2LjI2QzM3LjE4IDU3LjM0IDM1LjY4IDU4IDM0IDU4QzMyLjMyIDU4IDMwLjgyIDU3LjM0IDI5Ljc0IDU2LjI2TDE3Ljc0IDQ0LjI2QzE2LjY2IDQzLjE4IDE2IDQxLjY4IDE2IDQwQzE2IDM2LjcgMTguNyAzNCAyMiAzNEMyMy42OCAzNCAyNS4xOCAzNC42NiAyNi4yNiAzNS43NEwzNCA0My41NEw0Ny43NCAyMy43NEM0OC44MiAyMi42NiA1MC4zMiAyMiA1MiAyMlpNNzYgODJIMTA2QzEwOS4zIDgyIDExMiA4NC43IDExMiA4OEMxMTIgOTEuMyAxMDkuMyA5NCAxMDYgOTRINzZDNzIuNyA5NCA3MCA5MS4zIDcwIDg4QzcwIDg0LjcgNzIuNyA4MiA3NiA4MloiIGZpbGw9IiM3NzQ1MEQiLz4KPC9zdmc+Cg==\"\n}], [\"src/AuthCallback.tsx\", {\n type: \"raw\",\n body: `import { useEffect, useState } from \"react\";\nimport { useNavigate } from \"react-router-dom\";\nimport client from \"./client\";\n\n/**\n * Component to render at \\`/auth/callback\\`\n * This calls signIn() again to save the token, and then navigates the user back to the home page.\n */\nfunction AuthCallback() {\n const [error, setError] = useState<string | undefined>(undefined);\n const navigate = useNavigate();\n\n // This effect conflicts with React 18 strict mode in development\n // https://react.dev/learn/synchronizing-with-effects#how-to-handle-the-effect-firing-twice-in-development\n useEffect(() => {\n client.auth\n .signIn()\n .then(() => navigate(\"/\", { replace: true }))\n .catch((e: unknown) => setError((e as Error).message ?? e));\n }, [navigate]);\n return <div>{error != null ? error : \"Authenticating…\"}</div>;\n}\n\nexport default AuthCallback;\n`\n}], [\"src/AuthenticatedRoute.tsx\", {\n type: \"raw\",\n body: `import { useEffect, useState } from \"react\";\nimport { Outlet, useNavigate } from \"react-router-dom\";\nimport client from \"./client\";\n\n/**\n * A component that can be used to wrap routes that require authentication.\n * Nested routes may assume that a valid token is present.\n */\nfunction AuthenticatedRoute() {\n const navigate = useNavigate();\n const [token, setToken] = useState(client.auth.token);\n useEffect(() => {\n if (client.auth.token == null || client.auth.token.isExpired) {\n client.auth\n .refresh()\n .then(() => {\n setToken(client.auth.token);\n })\n .catch(() => {\n // If we cannot refresh the token (i.e. the user is not logged in) we redirect to the login page\n navigate(\"/login\");\n });\n }\n }, [navigate]);\n\n if (token == null || token.isExpired) {\n return null;\n }\n\n return <Outlet />;\n}\n\nexport default AuthenticatedRoute;\n`\n}], [\"src/CreateProjectButton.tsx\", {\n type: \"raw\",\n body: `import { useCallback, useState } from \"react\";\nimport CreateProjectDialog from \"./CreateProjectDialog\";\nimport useProjects from \"./useProjects\";\n\ninterface CreateProjectButtonProps {\n onProjectCreated?: (projectId: string) => void;\n}\n\nfunction CreateProjectButton({ onProjectCreated }: CreateProjectButtonProps) {\n const { isLoading: isLoadingProjects, isError: isErrorProjects } =\n useProjects();\n\n const [isOpen, setIsOpen] = useState(false);\n const handleOpen = useCallback(() => setIsOpen(true), []);\n const handleClose = useCallback(() => setIsOpen(false), []);\n\n if (isLoadingProjects || isErrorProjects) {\n return null;\n }\n\n return (\n <>\n <button onClick={handleOpen}>Create Project</button>\n <CreateProjectDialog\n isOpen={isOpen}\n onClose={handleClose}\n onProjectCreated={onProjectCreated}\n />\n </>\n );\n}\n\nexport default CreateProjectButton;\n`\n}], [\"src/CreateProjectDialog.tsx\", {\n type: \"raw\",\n body: `import { ChangeEvent, useCallback, useEffect, useState } from \"react\";\nimport Dialog from \"./Dialog\";\nimport useProjects from \"./useProjects\";\n\ninterface CreateProjectDialogProps {\n isOpen: boolean;\n onClose: () => void;\n onProjectCreated?: (projectId: string) => void;\n}\n\nfunction CreateProjectDialog({\n isOpen,\n onClose,\n onProjectCreated,\n}: CreateProjectDialogProps) {\n const { createProject } = useProjects();\n\n const [name, setName] = useState<string>(\"New project\");\n const handleChange = useCallback(\n (e: ChangeEvent<HTMLInputElement>) => setName(e.target.value),\n [],\n );\n\n useEffect(() => setName(\"New project\"), [isOpen]);\n\n const [isCreating, setIsCreating] = useState(false);\n const handleSubmit = useCallback(async () => {\n setIsCreating(true);\n try {\n const projectId = await createProject(name);\n onProjectCreated?.(projectId);\n } finally {\n setIsCreating(false);\n onClose();\n }\n }, [onProjectCreated, onClose, createProject, name]);\n\n return (\n <Dialog\n isOpen={isOpen}\n buttons={[\n <button disabled={isCreating} onClick={onClose} key=\"cancel\">\n Cancel\n </button>,\n <button disabled={isCreating} onClick={handleSubmit} key=\"create\">\n Create project\n </button>,\n ]}\n >\n <label>\n Project name: <input type=\"text\" value={name} onChange={handleChange} />\n </label>\n </Dialog>\n );\n}\nexport default CreateProjectDialog;\n`\n}], [\"src/CreateTaskButton.tsx\", {\n type: \"raw\",\n body: `import { useCallback, useState } from \"react\";\nimport CreateTaskDialog from \"./CreateTaskDialog\";\nimport { MockProject } from \"./mocks\";\nimport { useProjectTasks } from \"./useProjectTasks\";\n\ninterface CreateTaskButtonProps {\n project: MockProject;\n}\n\nfunction CreateTaskButton({ project }: CreateTaskButtonProps) {\n const { isLoading: isLoadingTasks, isError: isErrorTasks } = useProjectTasks(\n project,\n );\n\n const [isOpen, setIsOpen] = useState(false);\n const handleOpen = useCallback(() => setIsOpen(true), []);\n const handleClose = useCallback(() => setIsOpen(false), []);\n\n if (isLoadingTasks || isErrorTasks) {\n return null;\n }\n\n return (\n <>\n <button onClick={handleOpen}>Create Task</button>\n <CreateTaskDialog\n project={project}\n isOpen={isOpen}\n onClose={handleClose}\n />\n </>\n );\n}\n\nexport default CreateTaskButton;\n`\n}], [\"src/CreateTaskDialog.tsx\", {\n type: \"raw\",\n body: `import { ChangeEvent, useCallback, useEffect, useState } from \"react\";\nimport Dialog from \"./Dialog\";\nimport { MockProject } from \"./mocks\";\nimport { useProjectTasks } from \"./useProjectTasks\";\n\ninterface CreateTaskDialogProps {\n project: MockProject;\n isOpen: boolean;\n onClose: () => void;\n}\n\nfunction CreateTaskDialog({ project, isOpen, onClose }: CreateTaskDialogProps) {\n const { createTask } = useProjectTasks(project);\n\n const [name, setName] = useState<string>(\"New task\");\n const handleChange = useCallback(\n (e: ChangeEvent<HTMLInputElement>) => setName(e.target.value),\n [],\n );\n\n useEffect(() => setName(\"New task\"), [isOpen]);\n\n const [isCreating, setIsCreating] = useState(false);\n const handleSubmit = useCallback(async () => {\n setIsCreating(true);\n try {\n await createTask(name);\n } finally {\n setIsCreating(false);\n onClose();\n }\n }, [onClose, createTask, name]);\n\n return (\n <Dialog\n isOpen={isOpen}\n buttons={[\n <button disabled={isCreating} onClick={onClose} key=\"cancel\">\n Cancel\n </button>,\n <button disabled={isCreating} onClick={handleSubmit} key=\"create\">\n Create task\n </button>,\n ]}\n >\n <label>\n Task name: <input type=\"text\" value={name} onChange={handleChange} />\n </label>\n </Dialog>\n );\n}\nexport default CreateTaskDialog;\n`\n}], [\"src/DeleteProjectButton.tsx\", {\n type: \"raw\",\n body: `import { useCallback, useState } from \"react\";\nimport DeleteProjectDialog from \"./DeleteProjectDialog\";\nimport { MockProject } from \"./mocks\";\nimport useProjects from \"./useProjects\";\n\ninterface DeleteProjectButtonProps {\n project: MockProject;\n}\n\nfunction DeleteProjectButton({ project }: DeleteProjectButtonProps) {\n const { isLoading: isLoadingProjects, isError: isErrorProjects } =\n useProjects();\n\n const [isOpen, setIsOpen] = useState(false);\n const handleOpen = useCallback(() => setIsOpen(true), []);\n const handleClose = useCallback(() => setIsOpen(false), []);\n\n if (isLoadingProjects || isErrorProjects) {\n return null;\n }\n\n return (\n <>\n <button onClick={handleOpen}>Delete Project</button>\n <DeleteProjectDialog\n project={project}\n isOpen={isOpen}\n onClose={handleClose}\n />\n </>\n );\n}\n\nexport default DeleteProjectButton;\n`\n}], [\"src/DeleteProjectDialog.tsx\", {\n type: \"raw\",\n body: `import { useCallback, useState } from \"react\";\nimport Dialog from \"./Dialog\";\nimport { MockProject } from \"./mocks\";\nimport useProjects from \"./useProjects\";\n\ninterface DeleteProjectDialogProps {\n project: MockProject;\n isOpen: boolean;\n onClose: () => void;\n}\n\nfunction DeleteProjectDialog({\n project,\n isOpen,\n onClose,\n}: DeleteProjectDialogProps) {\n const { deleteProject } = useProjects();\n\n const [isDeleting, setIsDeleting] = useState(false);\n const handleSubmit = useCallback(async () => {\n setIsDeleting(true);\n try {\n await deleteProject(project);\n } finally {\n setIsDeleting(false);\n onClose();\n }\n }, [deleteProject, onClose, project]);\n\n return (\n <Dialog\n isOpen={isOpen}\n buttons={[\n <button disabled={isDeleting} onClick={onClose} key=\"cancel\">\n Cancel\n </button>,\n <button disabled={isDeleting} onClick={handleSubmit} key=\"delete\">\n Delete\n </button>,\n ]}\n >\n Are you sure you want to delete this project?\n </Dialog>\n );\n}\nexport default DeleteProjectDialog;\n`\n}], [\"src/Dialog.module.css\", {\n \"type\": \"base64\",\n \"body\": \"LmJ1dHRvbnMgewogIGRpc3BsYXk6IGZsZXg7CiAgZ2FwOiAxZW07CiAgbWFyZ2luLXRvcDogMWVtOwp9CgouZGlhbG9nIHsKICBib3JkZXI6IDFweCBzb2xpZCBibGFjazsKICBib3JkZXItcmFkaXVzOiAxMHB4Owp9\"\n}], [\"src/Dialog.tsx\", {\n type: \"raw\",\n body: `import { PropsWithChildren } from \"react\";\nimport css from \"./Dialog.module.css\";\n\ninterface DialogProps {\n isOpen: boolean;\n buttons?: React.ReactElement[];\n}\n\nfunction Dialog({ children, isOpen, buttons }: PropsWithChildren<DialogProps>) {\n return (\n <dialog open={isOpen} className={css.dialog}>\n {children}\n {buttons != null && buttons.length > 0 && (\n <div className={css.buttons}>{buttons}</div>\n )}\n </dialog>\n );\n}\nexport default Dialog;\n`\n}], [\"src/Home.module.css\", {\n \"type\": \"base64\",\n \"body\": \"LnR1dG9yaWFsQmFubmVyV3JhcHBlciB7CiAgZGlzcGxheTogZmxleDsKICBtYXJnaW46IDJlbTsKfQoKLnR1dG9yaWFsQmFubmVyIHsKICBmbGV4OiAxOwogIHdpZHRoOiAwOwogIGJhY2tncm91bmQ6IGhzbCgzNSwgMTAwJSwgNzAlKTsKICBib3JkZXItcmFkaXVzOiAxZW07CiAgcGFkZGluZzogMWVtOwogIGJveC1zaGFkb3c6IDAgMTBweCAxNXB4IC0zcHggcmdiKDAgMCAwIC8gMC4xKSwgMCA0cHggNnB4IC00cHggcmdiKDAgMCAwIC8gMC4xKTsKfQoKLnR1dG9yaWFsQmFubmVyVGl0bGUgewogIG1hcmdpbi10b3A6IDA7CiAgZm9udC13ZWlnaHQ6IDYwMDsKfQoKLnByb2plY3RTZWxlY3QgewogIGRpc3BsYXk6IGZsZXg7CiAgYWxpZ24taXRlbXM6IGNlbnRlcjsKICBnYXA6IDFlbTsKICBtYXJnaW46IDJlbTsKICBmb250LXdlaWdodDogNjAwOwp9CgoucHJvamVjdENhcmQgewogIG1hcmdpbjogMmVtOwp9CgoucHJvamVjdFRpdGxlIHsKICBmb250LXNpemU6IDEuNWVtOwp9Cg==\"\n}], [\"src/Home.tsx\", {\n type: \"raw\",\n body: `import { useCallback, useEffect, useState } from \"react\";\nimport CreateProjectButton from \"./CreateProjectButton\";\nimport CreateTaskButton from \"./CreateTaskButton\";\nimport DeleteProjectButton from \"./DeleteProjectButton\";\nimport css from \"./Home.module.css\";\nimport Layout from \"./Layout\";\nimport { MockProject } from \"./mocks\";\nimport ProjectSelect from \"./ProjectSelect\";\nimport TaskList from \"./TaskList\";\nimport useProjects from \"./useProjects\";\n\nfunction Home() {\n const [projectId, setProjectId] = useState<string | undefined>(undefined);\n const { projects } = useProjects();\n const project = projects?.find((p) => p.id === projectId);\n\n const handleSelectProject = useCallback(\n (p: MockProject) => setProjectId(p.id),\n [],\n );\n\n useEffect(() => {\n if (project == null && projects != null && projects.length > 0) {\n setProjectId(projects[0].id);\n }\n }, [project, projects]);\n\n return (\n <Layout>\n <div className={css.tutorialBannerWrapper}>\n <div className={css.tutorialBanner}>\n <p className={css.tutorialBannerTitle}>\n 💡 Welcome to To Do app tutorial!\n </p>\n <p>\n The To Do App is implemented with mock in-memory data.\n <br />Can you solve how to switch it to use the Ontology SDK\n instead?\n </p>\n </div>\n </div>\n <div className={css.projectSelect}>\n <span>Project:</span>\n <ProjectSelect\n project={project}\n projects={projects ?? []}\n onSelectProject={handleSelectProject}\n />\n <CreateProjectButton onProjectCreated={setProjectId} />\n {project != null && <DeleteProjectButton project={project} />}\n </div>\n {project != null && (\n <div className={css.projectCard} key={project.id}>\n <h1 className={css.projectTitle}>{project.name}</h1>\n <TaskList project={project} />\n <CreateTaskButton project={project} />\n </div>\n )}\n </Layout>\n );\n}\n\nexport default Home;\n`\n}], [\"src/Layout.module.css\", {\n \"type\": \"base64\",\n \"body\": \"LmhlYWRlciB7CiAgZGlzcGxheTogZmxleDsKICBhbGlnbi1pdGVtczogY2VudGVyOwogIG1hcmdpbjogMmVtOwp9CgoubG9nbyB7CiAgaGVpZ2h0OiA0ZW07CiAgYWxpZ24taXRlbXM6IGNlbnRlcjsKICBtYXJnaW4tcmlnaHQ6IDFlbTsKfQoKLnRpdGxlIHsKICBmb250LXdlaWdodDogNjAwOwogIGZvbnQtc2l6ZTogMS41ZW07Cn0K\"\n}], [\"src/Layout.tsx\", {\n type: \"raw\",\n body: `import todoAppLogo from \"/todo-app.svg\";\nimport React from \"react\";\nimport css from \"./Layout.module.css\";\n\ninterface LayoutProps {\n children?: React.ReactNode;\n}\n\nfunction Layout({ children }: LayoutProps) {\n return (\n <>\n <div className={css.header}>\n <img src={todoAppLogo} className={css.logo} alt=\"Todo App logo\" />\n <div className={css.title}>Ontology SDK Tutorial - Todo App</div>\n </div>\n {children}\n </>\n );\n}\n\nexport default Layout;\n`\n}], [\"src/Login.module.css\", {\n \"type\": \"base64\",\n \"body\": \"LmxvZ2luQnV0dG9uIHsKICBkaXNwbGF5OiBmbGV4OwogIGp1c3RpZnktY29udGVudDogY2VudGVyOwogIG1hcmdpbjogMmVtOwp9Cg==\"\n}], [\"src/Login.tsx\", {\n type: \"raw\",\n body: `import { useCallback, useState } from \"react\";\nimport { Navigate } from \"react-router-dom\";\nimport client from \"./client\";\nimport Layout from \"./Layout\";\nimport css from \"./Login.module.css\";\n\nfunction Login() {\n const [isLoggingIn, setIsLoggingIn] = useState(false);\n const [error, setError] = useState<string | undefined>(undefined);\n const token = client.auth.token;\n\n const handleLogin = useCallback(async () => {\n setIsLoggingIn(true);\n try {\n // Initiate the OAuth flow, which will redirect the user to log into Foundry\n // Once the login has completed, the user will be redirected back to the route defined via the\n // FOUNDRY_REDIRECT_URL variable in .env.development\n await client.auth.signIn();\n } catch (e: unknown) {\n console.error(e);\n setError((e as Error).message ?? e);\n } finally {\n setIsLoggingIn(false);\n }\n }, []);\n\n // If the token exists but a user tries to load /login, redirect to the home page instead\n if (token != null) {\n return <Navigate to=\"/\" replace={true} />;\n }\n\n return (\n <Layout>\n <div className={css.loginButton}>\n <button onClick={handleLogin}>\n {isLoggingIn ? \"Logging in…\" : \"Log in \"}\n </button>\n </div>\n {error && <div>Unable to log in: {error}</div>}\n </Layout>\n );\n}\n\nexport default Login;\n`\n}], [\"src/ProjectSelect.tsx\", {\n type: \"raw\",\n body: `import { ChangeEvent, useCallback } from \"react\";\nimport { MockProject } from \"./mocks\";\n\ninterface ProjectSelectProps {\n project: MockProject | undefined;\n projects: MockProject[];\n onSelectProject: (project: MockProject) => void;\n}\n\nfunction ProjectSelect({\n project,\n projects,\n onSelectProject,\n}: ProjectSelectProps) {\n const handleSelect = useCallback(\n (e: ChangeEvent<HTMLSelectElement>) => {\n const nextProject = projects.find((p) => \\`\\${p.id}\\` === e.target.value);\n if (nextProject != null) {\n onSelectProject(nextProject);\n }\n },\n [projects, onSelectProject],\n );\n\n return (\n <select value={project?.id} onChange={handleSelect}>\n <option hidden disabled value=\"\">\n -- select a project --\n </option>\n\n {projects.map((p) => (\n <option key={p.id} value={p.id}>\n {p.name}\n </option>\n ))}\n </select>\n );\n}\n\nexport default ProjectSelect;\n`\n}], [\"src/TaskList.module.css\", {\n \"type\": \"base64\",\n \"body\": \"LnRhc2tMaXN0IHsKICBsaXN0LXN0eWxlOiBub25lOwogIHBhZGRpbmc6IDA7CiAgbWFyZ2luLXRvcDogMWVtOwogIG1hcmdpbi1ib3R0b206IDFlbTsKfQo=\"\n}], [\"src/TaskList.tsx\", {\n type: \"raw\",\n body: `import { MockProject } from \"./mocks\";\nimport css from \"./TaskList.module.css\";\nimport TaskListItem from \"./TaskListItem\";\nimport { useProjectTasks } from \"./useProjectTasks\";\n\ninterface TaskListProps {\n project: MockProject;\n}\n\nfunction TaskList({ project }: TaskListProps) {\n const {\n tasks,\n isLoading: isLoadingTasks,\n isError: isErrorTasks,\n deleteTask,\n } = useProjectTasks(project);\n\n if (isErrorTasks) {\n return <div className={css.taskList}>Error loading tasks!</div>;\n } else if (isLoadingTasks) {\n return null;\n }\n\n const data = tasks ?? [];\n if (data.length === 0) {\n return <div className={css.taskList}>No tasks found</div>;\n }\n\n return (\n <ul className={css.taskList}>\n {data.map((task) => (\n <TaskListItem key={task.id} task={task} deleteTask={deleteTask} />\n ))}\n </ul>\n );\n}\n\nexport default TaskList;\n`\n}], [\"src/TaskListItem.module.css\", {\n \"type\": \"base64\",\n \"body\": \"LmxhYmVsIHsKICBtYXJnaW4tbGVmdDogMC41ZW07Cn0KCi5jaGVja2VkIHsKICB0ZXh0LWRlY29yYXRpb246IGxpbmUtdGhyb3VnaDsKfQoKLmRlbGV0ZSB7CiAgYm9yZGVyOiAxcHggc29saWQgI2NjYzsKICBwYWRkaW5nOiAycHg7Cn0KCg==\"\n}], [\"src/TaskListItem.tsx\", {\n type: \"raw\",\n body: `import { useCallback, useState } from \"react\";\nimport { MockTask } from \"./mocks\";\nimport css from \"./TaskListItem.module.css\";\n\ninterface TaskListItemProps {\n task: MockTask;\n deleteTask: (task: MockTask) => Promise<void>;\n}\n\nfunction TaskListItem({ task, deleteTask }: TaskListItemProps) {\n const [isDeleting, setIsDeleting] = useState(false);\n const handleClick = useCallback(async () => {\n setIsDeleting(true);\n try {\n await deleteTask(task);\n } finally {\n setIsDeleting(false);\n }\n }, [deleteTask, task]);\n\n return (\n <li>\n <label\n className={\\`\\${css.label} \\${isDeleting ? css.checked : \"\"}\\`}\n htmlFor={\\`\\${task.id}\\`}\n >\n <input\n type=\"checkbox\"\n onChange={handleClick}\n checked={isDeleting}\n className={css.delete}\n title=\"Delete task\"\n />\n {task.title}\n </label>\n </li>\n );\n}\n\nexport default TaskListItem;\n`\n}], [\"src/client.ts.hbs\", {\n type: \"raw\",\n body: `import { FoundryClient, PublicClientAuth } from \"{{osdkPackage}}\";\n\nconst url = import.meta.env.VITE_FOUNDRY_API_URL;\nconst clientId = import.meta.env.VITE_FOUNDRY_CLIENT_ID;\nconst redirectUrl = import.meta.env.VITE_FOUNDRY_REDIRECT_URL;\ncheckEnv(url, \"VITE_FOUNDRY_API_URL\");\ncheckEnv(clientId, \"VITE_FOUNDRY_CLIENT_ID\");\ncheckEnv(redirectUrl, \"VITE_FOUNDRY_REDIRECT_URL\");\n\nfunction checkEnv(\n value: string | undefined,\n name: string,\n): asserts value is string {\n if (value == null) {\n throw new Error(\\`Missing environment variable: \\${name}\\`);\n }\n}\n\n/**\n * Initialize the client to interact with the Ontology SDK\n */\nconst client = new FoundryClient({\n url,\n auth: new PublicClientAuth({\n clientId,\n url,\n redirectUrl,\n {{#if scopes}}\n scopes: [\n {{#each scopes}}\n \"{{this}}\",\n {{/each}}\n ],\n {{/if}}\n }),\n});\n\nexport default client;\n`\n}], [\"src/env.test.ts\", {\n \"type\": \"base64\",\n \"body\": \"aW1wb3J0IHsgbG9hZEVudiB9IGZyb20gInZpdGUiOwppbXBvcnQgeyBleHBlY3QsIHRlc3QgfSBmcm9tICJ2aXRlc3QiOwoKY29uc3QgRU5WX1ZBUlMgPSBbCiAgIlZJVEVfRk9VTkRSWV9BUElfVVJMIiwKICAiVklURV9GT1VORFJZX0NMSUVOVF9JRCIsCiAgIlZJVEVfRk9VTkRSWV9SRURJUkVDVF9VUkwiLApdOwoKZm9yIChjb25zdCBlbnZWYXIgb2YgRU5WX1ZBUlMpIHsKICB0ZXN0LnNraXBJZihwcm9jZXNzLmVudi5WRVJJRllfRU5WX1BST0RVQ1RJT04gIT09ICJ0cnVlIikoCiAgICBgcHJvZHVjdGlvbiBlbnYgc2hvdWxkIGNvbnRhaW4gJHtlbnZWYXJ9YCwKICAgICgpID0+IHsKICAgICAgY29uc3QgZW52ID0gbG9hZEVudigicHJvZHVjdGlvbiIsIHByb2Nlc3MuY3dkKCkpOwogICAgICBleHBlY3QoZW52W2VudlZhcl0sIGAke2VudlZhcn0gc2hvdWxkIGJlIGRlZmluZWRgKS50b0JlRGVmaW5lZCgpOwogICAgICBleHBlY3QoCiAgICAgICAgZW52W2VudlZhcl0sCiAgICAgICAgYCR7ZW52VmFyfSBzaG91bGQgbm90IGNvbnRhaW4gcGxhY2Vob2xkZXIgdmFsdWVgLAogICAgICApLm5vdC50b01hdGNoKC88Lio+Lyk7CiAgICB9LAogICk7Cn0K\"\n}], [\"src/index.css\", {\n \"type\": \"base64\",\n \"body\": \"OnJvb3QgewogIGZvbnQtZmFtaWx5OiBJbnRlciwgc3lzdGVtLXVpLCBBdmVuaXIsIEhlbHZldGljYSwgQXJpYWwsIHNhbnMtc2VyaWY7CiAgbGluZS1oZWlnaHQ6IDEuNTsKICBmb250LXdlaWdodDogNDAwOwoKICBmb250LXN5bnRoZXNpczogbm9uZTsKICB0ZXh0LXJlbmRlcmluZzogb3B0aW1pemVMZWdpYmlsaXR5OwogIC13ZWJraXQtZm9udC1zbW9vdGhpbmc6IGFudGlhbGlhc2VkOwogIC1tb3otb3N4LWZvbnQtc21vb3RoaW5nOiBncmF5c2NhbGU7Cn0KCiNyb290LWNvbnRhaW5lciB7CiAgZGlzcGxheTogZmxleDsKICBmbGV4OiAxOwogIGFsaWduLWl0ZW1zOiBjZW50ZXI7Cn0KCiNyb290IHsKICBtYXgtd2lkdGg6IDEyODBweDsKICBtYXJnaW46IDJyZW0gYXV0bzsKICBwYWRkaW5nOiAycmVtOwp9CgphIHsKICBmb250LXdlaWdodDogNTAwOwogIGNvbG9yOiAjNjQ2Y2ZmOwogIHRleHQtZGVjb3JhdGlvbjogaW5oZXJpdDsKfQphOmhvdmVyIHsKICBjb2xvcjogIzUzNWJmMjsKfQoKYm9keSB7CiAgbWFyZ2luOiAwOwogIGRpc3BsYXk6IGZsZXg7CiAgZmxleC1kaXJlY3Rpb246IGNvbHVtbjsKICBtaW4td2lkdGg6IDMyMHB4OwogIG1pbi1oZWlnaHQ6IDEwMHZoOwp9CgpoMSB7CiAgZm9udC1zaXplOiAzLjJlbTsKICBsaW5lLWhlaWdodDogMS4xOwp9CgpidXR0b24gewogIGJvcmRlci1yYWRpdXM6IDhweDsKICBib3JkZXI6IDFweCBzb2xpZCB0cmFuc3BhcmVudDsKICBwYWRkaW5nOiAwLjZlbSAxLjJlbTsKICBmb250LXNpemU6IDFlbTsKICBmb250LXdlaWdodDogNTAwOwogIGZvbnQtZmFtaWx5OiBpbmhlcml0OwogIGN1cnNvcjogcG9pbnRlcjsKICB0cmFuc2l0aW9uOiBib3JkZXItY29sb3IgMC4yNXM7Cn0KYnV0dG9uOmhvdmVyIHsKICBib3JkZXItY29sb3I6ICM2NDZjZmY7Cn0KYnV0dG9uOmZvY3VzLApidXR0b246Zm9jdXMtdmlzaWJsZSB7CiAgb3V0bGluZTogNHB4IGF1dG8gLXdlYmtpdC1mb2N1cy1yaW5nLWNvbG9yOwp9CgpAbWVkaWEgKHByZWZlcnMtY29sb3Itc2NoZW1lOiBsaWdodCkgewogIDpyb290IHsKICAgIGNvbG9yOiAjMjEzNTQ3OwogICAgYmFja2dyb3VuZC1jb2xvcjogI2ZmZmZmZjsKICB9CiAgYTpob3ZlciB7CiAgICBjb2xvcjogIzc0N2JmZjsKICB9CiAgYnV0dG9uIHsKICAgIGJhY2tncm91bmQtY29sb3I6ICNmOWY5Zjk7CiAgfQp9Cg==\"\n}], [\"src/main.tsx\", {\n type: \"raw\",\n body: `import ReactDOM from \"react-dom/client\";\nimport { createBrowserRouter, RouterProvider } from \"react-router-dom\";\nimport AuthCallback from \"./AuthCallback\";\nimport AuthenticatedRoute from \"./AuthenticatedRoute\";\nimport Home from \"./Home\";\nimport Login from \"./Login\";\nimport \"./index.css\";\n\nconst router = createBrowserRouter(\n [\n {\n path: \"/\",\n element: <AuthenticatedRoute />,\n children: [\n {\n path: \"/\",\n element: <Home />,\n },\n ],\n },\n {\n path: \"/login\",\n element: <Login />,\n },\n {\n // This is the route defined in your application's redirect URL\n path: \"/auth/callback\",\n element: <AuthCallback />,\n },\n ],\n { basename: import.meta.env.BASE_URL },\n);\n\nReactDOM.createRoot(document.getElementById(\"root\")!).render(\n <RouterProvider router={router} />,\n);\n`\n}], [\"src/mocks.ts\", {\n \"type\": \"base64\",\n \"body\": \"ZXhwb3J0IGludGVyZmFjZSBNb2NrUHJvamVjdCB7CiAgJGFwaU5hbWU6IHN0cmluZzsKICAkcHJpbWFyeUtleTogc3RyaW5nOwogIGlkOiBzdHJpbmc7CiAgbmFtZTogc3RyaW5nOwogIHRhc2tzOiBNb2NrVGFza1tdOwp9CgpleHBvcnQgaW50ZXJmYWNlIE1vY2tUYXNrIHsKICAkYXBpTmFtZTogc3RyaW5nOwogICRwcmltYXJ5S2V5OiBzdHJpbmc7CiAgaWQ6IHN0cmluZzsKICB0aXRsZTogc3RyaW5nOwp9Cgpjb25zdCBwcm9qZWN0czogTW9ja1Byb2plY3RbXSA9IFsKICB7CiAgICAkYXBpTmFtZTogIk1vY2tQcm9qZWN0IiwKICAgICRwcmltYXJ5S2V5OiAiMSIsCiAgICBpZDogIjEiLAogICAgbmFtZTogIk1vY2sgcHJvamVjdCIsCiAgICB0YXNrczogWwogICAgICB7CiAgICAgICAgJGFwaU5hbWU6ICJNb2NrVGFzayIsCiAgICAgICAgJHByaW1hcnlLZXk6ICIxIiwKICAgICAgICBpZDogIjEiLAogICAgICAgIHRpdGxlOiAiVHJ5IHRvIiwKICAgICAgfSwKICAgICAgewogICAgICAgICRhcGlOYW1lOiAiTW9ja1Rhc2siLAogICAgICAgICRwcmltYXJ5S2V5OiAiMiIsCiAgICAgICAgaWQ6ICIyIiwKICAgICAgICB0aXRsZTogIkltcGxlbWVudCB0aGlzIiwKICAgICAgfSwKICAgICAgewogICAgICAgICRhcGlOYW1lOiAiTW9ja1Rhc2siLAogICAgICAgICRwcmltYXJ5S2V5OiAiMyIsCiAgICAgICAgaWQ6ICIzIiwKICAgICAgICB0aXRsZTogIldpdGggdGhlIE9udG9sb2d5IFNESyEiLAogICAgICB9LAogICAgXSwKICB9LAogIHsKICAgICRhcGlOYW1lOiAiTW9ja1Byb2plY3QiLAogICAgJHByaW1hcnlLZXk6ICIyIiwKICAgIGlkOiAiMiIsCiAgICBuYW1lOiAiWWV0IGFub3RoZXIgbW9jayBwcm9qZWN0IiwKICAgIHRhc2tzOiBbCiAgICAgIHsKICAgICAgICAkYXBpTmFtZTogIk1vY2tUYXNrIiwKICAgICAgICAkcHJpbWFyeUtleTogIjQiLAogICAgICAgIGlkOiAiNCIsCiAgICAgICAgdGl0bGU6ICJNb3JlIHRhc2tzIGhlcmUiLAogICAgICB9LAogICAgXSwKICB9LApdOwoKYXN5bmMgZnVuY3Rpb24gZGVsYXkoKTogUHJvbWlzZTx2b2lkPiB7CiAgcmV0dXJuIG5ldyBQcm9taXNlKChyZXNvbHZlKSA9PgogICAgc2V0VGltZW91dCgoKSA9PiByZXNvbHZlKCksIDUwMCArIE1hdGgucmFuZG9tKCkgKiAxMDAwKQogICk7Cn0KCi8vIEdvb2QgZW5vdWdoIHJhbmRvbSBpZCBmb3IgbW9ja3MKZnVuY3Rpb24gcmFuZG9tSWQoKTogc3RyaW5nIHsKICByZXR1cm4gYCR7TWF0aC5mbG9vcihNYXRoLnJhbmRvbSgpICogMiAqKiAzMSl9YDsKfQoKYXN5bmMgZnVuY3Rpb24gZ2V0UHJvamVjdHMoKTogUHJvbWlzZTxNb2NrUHJvamVjdFtdPiB7CiAgYXdhaXQgZGVsYXkoKTsKICBjb25zdCByZXN1bHQgPSBbLi4ucHJvamVjdHNdOwogIHJlc3VsdC5zb3J0KChwMSwgcDIpID0+IHAxLm5hbWUubG9jYWxlQ29tcGFyZShwMi5uYW1lKSk7CiAgcmV0dXJuIHJlc3VsdDsKfQoKYXN5bmMgZnVuY3Rpb24gY3JlYXRlUHJvamVjdCh7CiAgbmFtZSwKfTogewogIG5hbWU6IHN0cmluZzsKfSk6IFByb21pc2U8TW9ja1Byb2plY3RbIiRwcmltYXJ5S2V5Il0+IHsKICBhd2FpdCBkZWxheSgpOwogIGNvbnN0IGlkID0gcmFuZG9tSWQoKTsKICBwcm9qZWN0cy5wdXNoKHsKICAgICRhcGlOYW1lOiAiTW9ja1Byb2plY3QiLAogICAgJHByaW1hcnlLZXk6IGlkLAogICAgaWQsCiAgICBuYW1lLAogICAgdGFza3M6IFtdLAogIH0pOwogIHJldHVybiBpZDsKfQoKYXN5bmMgZnVuY3Rpb24gZGVsZXRlUHJvamVjdChpZDogc3RyaW5nKTogUHJvbWlzZTx2b2lkPiB7CiAgYXdhaXQgZGVsYXkoKTsKICBjb25zdCBpZHggPSBwcm9qZWN0cy5maW5kSW5kZXgoKHApID0+IHAuaWQgPT09IGlkKTsKICBpZiAoaWR4ICE9PSAtMSkgewogICAgcHJvamVjdHMuc3BsaWNlKGlkeCwgMSk7CiAgfQp9Cgphc3luYyBmdW5jdGlvbiBjcmVhdGVUYXNrKHsKICB0aXRsZSwKICBwcm9qZWN0SWQsCn06IHsKICB0aXRsZTogc3RyaW5nOwogIHByb2plY3RJZDogc3RyaW5nOwp9KTogUHJvbWlzZTxNb2NrVGFza1siJHByaW1hcnlLZXkiXT4gewogIGF3YWl0IGRlbGF5KCk7CiAgY29uc3QgcHJvamVjdCA9IHByb2plY3RzLmZpbmQoKHApID0+IHAuaWQgPT09IHByb2plY3RJZCk7CiAgaWYgKHByb2plY3QgPT0gbnVsbCkgewogICAgdGhyb3cgbmV3IEVycm9yKGBQcm9qZWN0ICR7cHJvamVjdElkfSBub3QgZm91bmQhYCk7CiAgfQogIGNvbnN0IGlkID0gcmFuZG9tSWQoKTsKICBwcm9qZWN0LnRhc2tzLnVuc2hpZnQoeyAkYXBpTmFtZTogIk1vY2tUYXNrIiwgJHByaW1hcnlLZXk6IGlkLCBpZCwgdGl0bGUgfSk7CiAgcmV0dXJuIGlkOwp9Cgphc3luYyBmdW5jdGlvbiBkZWxldGVUYXNrKGlkOiBzdHJpbmcpOiBQcm9taXNlPHZvaWQ+IHsKICBhd2FpdCBkZWxheSgpOwogIGZvciAoY29uc3QgcHJvamVjdCBvZiBwcm9qZWN0cykgewogICAgY29uc3QgaWR4ID0gcHJvamVjdC50YXNrcy5maW5kSW5kZXgoKHQpID0+IHQuaWQgPT09IGlkKTsKICAgIGlmIChpZHggIT09IC0xKSB7CiAgICAgIHByb2plY3QudGFza3Muc3BsaWNlKGlkeCwgMSk7CiAgICB9CiAgfQp9Cgpjb25zdCBNb2NrcyA9IHsKICBnZXRQcm9qZWN0cywKICBjcmVhdGVQcm9qZWN0LAogIGRlbGV0ZVByb2plY3QsCiAgY3JlYXRlVGFzaywKICBkZWxldGVUYXNrLAp9OwoKZXhwb3J0IGRlZmF1bHQgTW9ja3M7Cg==\"\n}], [\"src/useProjectTasks.ts\", {\n \"type\": \"base64\",\n \"body\": \"aW1wb3J0IHsgdXNlQ2FsbGJhY2sgfSBmcm9tICJyZWFjdCI7CmltcG9ydCB1c2VTV1IgZnJvbSAic3dyIjsKaW1wb3J0IE1vY2tzLCB7IE1vY2tQcm9qZWN0LCBNb2NrVGFzayB9IGZyb20gIi4vbW9ja3MiOwoKZXhwb3J0IGZ1bmN0aW9uIHVzZVByb2plY3RUYXNrcyhwcm9qZWN0OiBNb2NrUHJvamVjdCB8IHVuZGVmaW5lZCkgewogIGNvbnN0IHsgZGF0YSwgaXNMb2FkaW5nLCBpc1ZhbGlkYXRpbmcsIGVycm9yLCBtdXRhdGUgfSA9IHVzZVNXUjxNb2NrVGFza1tdPigKICAgIHByb2plY3QgIT0gbnVsbCA\\u002FIGBwcm9qZWN0cy8ke3Byb2plY3QuaWR9L3Rhc2tzYCA6IG51bGwsCiAgICAvLyBUcnkgdG8gaW1wbGVtZW50IHRoaXMgd2l0aCB0aGUgT250b2xvZ3kgU0RLIQogICAgYXN5bmMgKCkgPT4gewogICAgICBpZiAocHJvamVjdCA9PSBudWxsKSB7CiAgICAgICAgcmV0dXJuIFtdOwogICAgICB9CiAgICAgIHJldHVybiBwcm9qZWN0LnRhc2tzOwogICAgfSwKICApOwoKICBjb25zdCBjcmVhdGVUYXNrOiAoCiAgICB0aXRsZTogc3RyaW5nLAogICkgPT4gUHJvbWlzZTxNb2NrVGFza1siJHByaW1hcnlLZXkiXSB8IHVuZGVmaW5lZD4gPSB1c2VDYWxsYmFjaygKICAgIGFzeW5jICh0aXRsZSkgPT4gewogICAgICBpZiAocHJvamVjdCA9PSBudWxsKSB7CiAgICAgICAgcmV0dXJuIHVuZGVmaW5lZDsKICAgICAgfQogICAgICAvLyBUcnkgdG8gaW1wbGVtZW50IHRoaXMgd2l0aCB0aGUgT250b2xvZ3kgU0RLIQogICAgICBjb25zdCBpZCA9IGF3YWl0IE1vY2tzLmNyZWF0ZVRhc2soewogICAgICAgIHRpdGxlLAogICAgICAgIHByb2plY3RJZDogcHJvamVjdC4kcHJpbWFyeUtleSwKICAgICAgfSk7CiAgICAgIGF3YWl0IG11dGF0ZSgpOwogICAgICByZXR1cm4gaWQ7CiAgICB9LAogICAgW3Byb2plY3QsIG11dGF0ZV0sCiAgKTsKCiAgY29uc3QgZGVsZXRlVGFzazogKHRhc2s6IE1vY2tUYXNrKSA9PiBQcm9taXNlPHZvaWQ+ID0gdXNlQ2FsbGJhY2soCiAgICBhc3luYyAodGFzaykgPT4gewogICAgICBpZiAocHJvamVjdCA9PSBudWxsKSB7CiAgICAgICAgcmV0dXJuOwogICAgICB9CiAgICAgIGF3YWl0IHNsZWVwKDEwMDApOwogICAgICAvLyBUcnkgdG8gaW1wbGVtZW50IHRoaXMgd2l0aCB0aGUgT250b2xvZ3kgU0RLIQogICAgICBhd2FpdCBNb2Nrcy5kZWxldGVUYXNrKHRhc2suJHByaW1hcnlLZXkpOwogICAgICBhd2FpdCBtdXRhdGUoKTsKICAgIH0sCiAgICBbcHJvamVjdCwgbXV0YXRlXSwKICApOwoKICByZXR1cm4gewogICAgdGFza3M6IGRhdGEsCiAgICBpc0xvYWRpbmcsCiAgICBpc1ZhbGlkYXRpbmcsCiAgICBpc0Vycm9yOiBlcnJvciwKICAgIGNyZWF0ZVRhc2ssCiAgICBkZWxldGVUYXNrLAogIH07Cn0KCmZ1bmN0aW9uIHNsZWVwKG1zOiBudW1iZXIpIHsKICByZXR1cm4gbmV3IFByb21pc2UocmVzb2x2ZSA9PiBzZXRUaW1lb3V0KHJlc29sdmUsIG1zKSk7Cn0K\"\n}], [\"src/useProjects.ts\", {\n \"type\": \"base64\",\n \"body\": \"aW1wb3J0IHsgdXNlQ2FsbGJhY2sgfSBmcm9tICJyZWFjdCI7CmltcG9ydCB1c2VTV1IgZnJvbSAic3dyIjsKaW1wb3J0IE1vY2tzLCB7IE1vY2tQcm9qZWN0IH0gZnJvbSAiLi9tb2NrcyI7CgpmdW5jdGlvbiB1c2VQcm9qZWN0cygpIHsKICBjb25zdCB7IGRhdGEsIGlzTG9hZGluZywgaXNWYWxpZGF0aW5nLCBlcnJvciwgbXV0YXRlIH0gPSB1c2VTV1I8CiAgICBNb2NrUHJvamVjdFtdCiAgPigicHJvamVjdHMiLCBhc3luYyAoKSA9PiB7CiAgICAvLyBUcnkgdG8gaW1wbGVtZW50IHRoaXMgd2l0aCB0aGUgT250b2xvZ3kgU0RLIQogICAgcmV0dXJuIE1vY2tzLmdldFByb2plY3RzKCk7CiAgfSk7CgogIGNvbnN0IGNyZWF0ZVByb2plY3Q6IChuYW1lOiBzdHJpbmcpID0+IFByb21pc2U8TW9ja1Byb2plY3RbIiRwcmltYXJ5S2V5Il0+ID0KICAgIHVzZUNhbGxiYWNrKAogICAgICBhc3luYyAobmFtZSkgPT4gewogICAgICAgIC8vIFRyeSB0byBpbXBsZW1lbnQgdGhpcyB3aXRoIHRoZSBPbnRvbG9neSBTREshCiAgICAgICAgY29uc3QgaWQgPSBhd2FpdCBNb2Nrcy5jcmVhdGVQcm9qZWN0KHsgbmFtZSB9KTsKICAgICAgICBhd2FpdCBtdXRhdGUoKTsKICAgICAgICByZXR1cm4gaWQ7CiAgICAgIH0sCiAgICAgIFttdXRhdGVdLAogICAgKTsKCiAgY29uc3QgZGVsZXRlUHJvamVjdDogKHByb2plY3Q6IE1vY2tQcm9qZWN0KSA9PiBQcm9taXNlPHZvaWQ+ID0gdXNlQ2FsbGJhY2soCiAgICBhc3luYyAocHJvamVjdCkgPT4gewogICAgICAvLyBUcnkgdG8gaW1wbGVtZW50IHRoaXMgd2l0aCB0aGUgT250b2xvZ3kgU0RLIQogICAgICBhd2FpdCBNb2Nrcy5kZWxldGVQcm9qZWN0KHByb2plY3QuJHByaW1hcnlLZXkpOwogICAgICBhd2FpdCBtdXRhdGUoKTsKICAgIH0sCiAgICBbbXV0YXRlXSwKICApOwoKICByZXR1cm4gewogICAgcHJvamVjdHM6IGRhdGEsCiAgICBpc0xvYWRpbmcsCiAgICBpc1ZhbGlkYXRpbmcsCiAgICBpc0Vycm9yOiBlcnJvciwKICAgIGNyZWF0ZVByb2plY3QsCiAgICBkZWxldGVQcm9qZWN0LAogIH07Cn0KCmV4cG9ydCBkZWZhdWx0IHVzZVByb2plY3RzOwo=\"\n}], [\"src/vite-env.d.ts\", {\n \"type\": \"base64\",\n \"body\": \"Ly8vIDxyZWZlcmVuY2UgdHlwZXM9InZpdGUvY2xpZW50IiAvPgo=\"\n}], [\"tsconfig.json\", {\n \"type\": \"base64\",\n \"body\": \"ewogICJjb21waWxlck9wdGlvbnMiOiB7CiAgICAidGFyZ2V0IjogIkVTMjAyMCIsCiAgICAidXNlRGVmaW5lRm9yQ2xhc3NGaWVsZHMiOiB0cnVlLAogICAgImxpYiI6IFsiRVMyMDIwIiwgIkRPTSIsICJET00uSXRlcmFibGUiXSwKICAgICJtb2R1bGUiOiAiRVNOZXh0IiwKICAgICJza2lwTGliQ2hlY2siOiB0cnVlLAoKICAgIC8qIEJ1bmRsZXIgbW9kZSAqLwogICAgIm1vZHVsZVJlc29sdXRpb24iOiAiYnVuZGxlciIsCiAgICAiYWxsb3dJbXBvcnRpbmdUc0V4dGVuc2lvbnMiOiB0cnVlLAogICAgInJlc29sdmVKc29uTW9kdWxlIjogdHJ1ZSwKICAgICJpc29sYXRlZE1vZHVsZXMiOiB0cnVlLAogICAgIm5vRW1pdCI6IHRydWUsCiAgICAianN4IjogInJlYWN0LWpzeCIsCgogICAgLyogTGludGluZyAqLwogICAgInN0cmljdCI6IHRydWUsCiAgICAibm9VbnVzZWRMb2NhbHMiOiB0cnVlLAogICAgIm5vVW51c2VkUGFyYW1ldGVycyI6IHRydWUsCiAgICAibm9GYWxsdGhyb3VnaENhc2VzSW5Td2l0Y2giOiB0cnVlCiAgfSwKICAiaW5jbHVkZSI6IFsic3JjIl0sCiAgInJlZmVyZW5jZXMiOiBbeyAicGF0aCI6ICIuL3RzY29uZmlnLm5vZGUuanNvbiIgfV0KfQo=\"\n}], [\"tsconfig.node.json\", {\n \"type\": \"base64\",\n \"body\": \"ewogICJjb21waWxlck9wdGlvbnMiOiB7CiAgICAiY29tcG9zaXRlIjogdHJ1ZSwKICAgICJza2lwTGliQ2hlY2siOiB0cnVlLAogICAgIm1vZHVsZSI6ICJFU05leHQiLAogICAgIm1vZHVsZVJlc29sdXRpb24iOiAiYnVuZGxlciIsCiAgICAiYWxsb3dTeW50aGV0aWNEZWZhdWx0SW1wb3J0cyI6IHRydWUKICB9LAogICJpbmNsdWRlIjogWyJ2aXRlLmNvbmZpZy50cyJdCn0K\"\n}], [\"vite.config.ts.hbs\", {\n type: \"raw\",\n body: `import react from \"@vitejs/plugin-react\";\nimport { defineConfig } from \"vite\";\n\n// https://vitejs.dev/config/\nexport default defineConfig({\n plugins: [react()],\n server: {\n port: 8080,\n {{#if corsProxy}}\n proxy: {\n \"^(/multipass/api|/api)\": {\n target: \"{{foundryUrl}}\",\n changeOrigin: true,\n secure: true,\n },\n },\n {{/if}}\n },\n});\n`\n}]]);"]}
|
|
@@ -124,8 +124,8 @@ dist-ssr
|
|
|
124
124
|
"globals": "^15.11.0",
|
|
125
125
|
"typescript": "~5.5.4",
|
|
126
126
|
"typescript-eslint": "^8.15.0",
|
|
127
|
-
"vite": "^
|
|
128
|
-
"vitest": "^
|
|
127
|
+
"vite": "^6.0.11",
|
|
128
|
+
"vitest": "^3.0.4"
|
|
129
129
|
}
|
|
130
130
|
}`
|
|
131
131
|
}], ["public/aip-icon.svg", {
|
|
@@ -327,11 +327,11 @@ export default CreateProjectDialog;
|
|
|
327
327
|
body: `import { useCallback, useState } from "react";
|
|
328
328
|
import css from "./CreateTaskButton.module.css";
|
|
329
329
|
import CreateTaskDialog from "./CreateTaskDialog";
|
|
330
|
-
import
|
|
330
|
+
import { IProject } from "./useProjects";
|
|
331
331
|
import { useProjectTasks } from "./useProjectTasks";
|
|
332
332
|
|
|
333
333
|
interface CreateTaskButtonProps {
|
|
334
|
-
project:
|
|
334
|
+
project: IProject;
|
|
335
335
|
onTaskCreated: (taskId: string) => void;
|
|
336
336
|
}
|
|
337
337
|
|
|
@@ -373,11 +373,11 @@ import type { ChangeEvent } from "react";
|
|
|
373
373
|
import { useCallback, useEffect, useRef, useState } from "react";
|
|
374
374
|
import css from "./CreateTaskDialog.module.css";
|
|
375
375
|
import Dialog from "./Dialog";
|
|
376
|
-
import
|
|
376
|
+
import { IProject } from "./useProjects";
|
|
377
377
|
import { useProjectTasks } from "./useProjectTasks";
|
|
378
378
|
|
|
379
379
|
interface CreateTaskDialogProps {
|
|
380
|
-
project:
|
|
380
|
+
project: IProject;
|
|
381
381
|
isOpen: boolean;
|
|
382
382
|
onClose: () => void;
|
|
383
383
|
onTaskCreated: (taskId: string) => void;
|
|
@@ -517,11 +517,10 @@ export default CreateTaskDialog;
|
|
|
517
517
|
body: `import { useCallback, useState } from "react";
|
|
518
518
|
import css from "./DeleteProjectButton.module.css";
|
|
519
519
|
import DeleteProjectDialog from "./DeleteProjectDialog";
|
|
520
|
-
import
|
|
521
|
-
import useProjects from "./useProjects";
|
|
520
|
+
import useProjects, { IProject } from "./useProjects";
|
|
522
521
|
|
|
523
522
|
interface DeleteProjectButtonProps {
|
|
524
|
-
project:
|
|
523
|
+
project: IProject;
|
|
525
524
|
}
|
|
526
525
|
|
|
527
526
|
function DeleteProjectButton({ project }: DeleteProjectButtonProps) {
|
|
@@ -560,11 +559,10 @@ export default DeleteProjectButton;
|
|
|
560
559
|
body: `import { useCallback, useState } from "react";
|
|
561
560
|
import css from "./DeleteProjectDialog.module.css";
|
|
562
561
|
import Dialog from "./Dialog";
|
|
563
|
-
import
|
|
564
|
-
import useProjects from "./useProjects";
|
|
562
|
+
import useProjects, { IProject } from "./useProjects";
|
|
565
563
|
|
|
566
564
|
interface DeleteProjectDialogProps {
|
|
567
|
-
project:
|
|
565
|
+
project: IProject;
|
|
568
566
|
isOpen: boolean;
|
|
569
567
|
onClose: () => void;
|
|
570
568
|
}
|
|
@@ -650,10 +648,9 @@ import CreateProjectButton from "./CreateProjectButton";
|
|
|
650
648
|
import DeleteProjectButton from "./DeleteProjectButton";
|
|
651
649
|
import css from "./Home.module.css";
|
|
652
650
|
import Layout from "./Layout";
|
|
653
|
-
import type { MockProject } from "./mocks";
|
|
654
651
|
import { ProjectDetails } from "./ProjectDetails";
|
|
655
652
|
import ProjectSelect from "./ProjectSelect";
|
|
656
|
-
import useProjects from "./useProjects";
|
|
653
|
+
import useProjects, { IProject } from "./useProjects";
|
|
657
654
|
|
|
658
655
|
function Home() {
|
|
659
656
|
const [projectId, setProjectId] = useState<string | undefined>(undefined);
|
|
@@ -662,7 +659,7 @@ function Home() {
|
|
|
662
659
|
const project = projects?.find((p) => p.id === projectId);
|
|
663
660
|
|
|
664
661
|
const handleSelectProject = useCallback(
|
|
665
|
-
(p:
|
|
662
|
+
(p: IProject) => setProjectId(p.id),
|
|
666
663
|
[],
|
|
667
664
|
);
|
|
668
665
|
|
|
@@ -797,14 +794,13 @@ export default Login;
|
|
|
797
794
|
body: `import aipLogo from "/aip-icon.svg";
|
|
798
795
|
import { useCallback, useEffect, useRef, useState } from "react";
|
|
799
796
|
import CreateTaskButton from "./CreateTaskButton";
|
|
800
|
-
import type { MockProject } from "./mocks";
|
|
801
797
|
import css from "./ProjectDetails.module.css";
|
|
802
798
|
import TaskList from "./TaskList";
|
|
803
|
-
import useProjects from "./useProjects";
|
|
799
|
+
import useProjects, { IProject } from "./useProjects";
|
|
804
800
|
import { useProjectTasks } from "./useProjectTasks";
|
|
805
801
|
|
|
806
802
|
interface ProjectDetailsProps {
|
|
807
|
-
project:
|
|
803
|
+
project: IProject;
|
|
808
804
|
}
|
|
809
805
|
|
|
810
806
|
export function ProjectDetails({ project }: ProjectDetailsProps) {
|
|
@@ -886,12 +882,12 @@ export function ProjectDetails({ project }: ProjectDetailsProps) {
|
|
|
886
882
|
}], ["src/ProjectSelect.tsx", {
|
|
887
883
|
type: "raw",
|
|
888
884
|
body: `import { ChangeEvent, useCallback } from "react";
|
|
889
|
-
import {
|
|
885
|
+
import { IProject } from "./useProjects";
|
|
890
886
|
|
|
891
887
|
interface ProjectSelectProps {
|
|
892
|
-
project:
|
|
893
|
-
projects:
|
|
894
|
-
onSelectProject: (project:
|
|
888
|
+
project: IProject | undefined;
|
|
889
|
+
projects: IProject[];
|
|
890
|
+
onSelectProject: (project: IProject) => void;
|
|
895
891
|
}
|
|
896
892
|
|
|
897
893
|
function ProjectSelect({
|
|
@@ -931,13 +927,13 @@ export default ProjectSelect;
|
|
|
931
927
|
"body": "LnRhc2tMaXN0IHsKICBsaXN0LXN0eWxlOiBub25lOwogIHBhZGRpbmc6IDA7CiAgbWFyZ2luLXRvcDogMWVtOwogIG1hcmdpbi1ib3R0b206IDFlbTsKICB3aWR0aDogMTAwJTsKfQo="
|
|
932
928
|
}], ["src/TaskList.tsx", {
|
|
933
929
|
type: "raw",
|
|
934
|
-
body: `import
|
|
935
|
-
import css from "./TaskList.module.css";
|
|
930
|
+
body: `import css from "./TaskList.module.css";
|
|
936
931
|
import TaskListItem from "./TaskListItem";
|
|
932
|
+
import { IProject } from "./useProjects";
|
|
937
933
|
import { useProjectTasks } from "./useProjectTasks";
|
|
938
934
|
|
|
939
935
|
interface TaskListProps {
|
|
940
|
-
project:
|
|
936
|
+
project: IProject;
|
|
941
937
|
onTaskDeleted: (taskId: string | undefined) => void;
|
|
942
938
|
}
|
|
943
939
|
|
|
@@ -982,12 +978,12 @@ export default TaskList;
|
|
|
982
978
|
}], ["src/TaskListItem.tsx", {
|
|
983
979
|
type: "raw",
|
|
984
980
|
body: `import { useCallback, useEffect, useRef, useState } from "react";
|
|
985
|
-
import type { MockTask } from "./mocks";
|
|
986
981
|
import css from "./TaskListItem.module.css";
|
|
982
|
+
import { ITask } from "./useProjectTasks";
|
|
987
983
|
|
|
988
984
|
interface TaskListItemProps {
|
|
989
|
-
task:
|
|
990
|
-
deleteTask: (task:
|
|
985
|
+
task: ITask;
|
|
986
|
+
deleteTask: (task: ITask) => Promise<void>;
|
|
991
987
|
onTaskDeleted: (taskId: string | undefined) => void;
|
|
992
988
|
}
|
|
993
989
|
|
|
@@ -1139,13 +1135,13 @@ ReactDOM.createRoot(document.getElementById("root")!).render(
|
|
|
1139
1135
|
`
|
|
1140
1136
|
}], ["src/mocks.ts", {
|
|
1141
1137
|
"type": "base64",
|
|
1142
|
-
"body": "
|
|
1138
|
+
"body": "aW1wb3J0IHsgSVByb2plY3QgfSBmcm9tICIuL3VzZVByb2plY3RzIjsKaW1wb3J0IHsgSVRhc2sgfSBmcm9tICIuL3VzZVByb2plY3RUYXNrcyI7Cgpjb25zdCBwcm9qZWN0czogSVByb2plY3RbXSA9IFsKICB7CiAgICAkYXBpTmFtZTogIk1vY2tQcm9qZWN0IiwKICAgICRwcmltYXJ5S2V5OiAiMSIsCiAgICBpZDogIjEiLAogICAgbmFtZTogIk1vY2sgcHJvamVjdCIsCiAgICBkZXNjcmlwdGlvbjogIlRoaXMgaXMgYSBtb2NrIGRlc2NyaXB0aW9uIiwKICB9LAogIHsKICAgICRhcGlOYW1lOiAiTW9ja1Byb2plY3QiLAogICAgJHByaW1hcnlLZXk6ICIyIiwKICAgIGlkOiAiMiIsCiAgICBuYW1lOiAiWWV0IGFub3RoZXIgbW9jayBwcm9qZWN0IiwKICAgIGRlc2NyaXB0aW9uOiAiVGhpcyBpcyBhbm90aGVyIG1vY2sgZGVzY3JpcHRpb24iLAogIH0sCl07Cgpjb25zdCB0YXNrczogSVRhc2tbXSA9IFsKICB7CiAgICAkYXBpTmFtZTogIk1vY2tUYXNrIiwKICAgICRwcmltYXJ5S2V5OiAiMSIsCiAgICBpZDogIjEiLAogICAgdGl0bGU6ICJUcnkgdG8iLAogICAgZGVzY3JpcHRpb246ICJ0YXNrIGRlc2NyaXB0aW9uIDEiLAogICAgcHJvamVjdElkOiAiMSIsCiAgfSwKICB7CiAgICAkYXBpTmFtZTogIk1vY2tUYXNrIiwKICAgICRwcmltYXJ5S2V5OiAiMiIsCiAgICBpZDogIjIiLAogICAgdGl0bGU6ICJJbXBsZW1lbnQgdGhpcyIsCiAgICBkZXNjcmlwdGlvbjogInRhc2sgZGVzY3JpcHRpb24gMiIsCiAgICBwcm9qZWN0SWQ6ICIxIiwKICB9LAogIHsKICAgICRhcGlOYW1lOiAiTW9ja1Rhc2siLAogICAgJHByaW1hcnlLZXk6ICIzIiwKICAgIGlkOiAiMyIsCiAgICB0aXRsZTogIldpdGggdGhlIE9udG9sb2d5IFNESyEiLAogICAgZGVzY3JpcHRpb246ICJ0YXNrIGRlc2NyaXB0aW9uIDMiLAogICAgcHJvamVjdElkOiAiMSIsCiAgfSwKICB7CiAgICAkYXBpTmFtZTogIk1vY2tUYXNrIiwKICAgICRwcmltYXJ5S2V5OiAiNCIsCiAgICBpZDogIjQiLAogICAgdGl0bGU6ICJNb3JlIHRhc2tzIGhlcmUiLAogICAgZGVzY3JpcHRpb246ICJNb3JlIHRhc2sgZGVzY3JpcHRpb24iLAogICAgcHJvamVjdElkOiAiMiIsCiAgfSwKXTsKYXN5bmMgZnVuY3Rpb24gZGVsYXkoKTogUHJvbWlzZTx2b2lkPiB7CiAgcmV0dXJuIG5ldyBQcm9taXNlKChyZXNvbHZlKSA9PgogICAgc2V0VGltZW91dCgoKSA9PiByZXNvbHZlKCksIDUwMCArIE1hdGgucmFuZG9tKCkgKiAxMDAwKQogICk7Cn0KCi8vIEdvb2QgZW5vdWdoIHJhbmRvbSBpZCBmb3IgbW9ja3MKZnVuY3Rpb24gcmFuZG9tSWQoKTogc3RyaW5nIHsKICByZXR1cm4gYCR7TWF0aC5mbG9vcihNYXRoLnJhbmRvbSgpICogMiAqKiAzMSl9YDsKfQoKYXN5bmMgZnVuY3Rpb24gZ2V0UHJvamVjdHMoKTogUHJvbWlzZTxJUHJvamVjdFtdPiB7CiAgYXdhaXQgZGVsYXkoKTsKICBjb25zdCByZXN1bHQgPSBbLi4ucHJvamVjdHNdOwogIHJlc3VsdC5zb3J0KChwMSwgcDIpID0+IHAxLm5hbWUubG9jYWxlQ29tcGFyZShwMi5uYW1lKSk7CiAgcmV0dXJuIHJlc3VsdDsKfQoKYXN5bmMgZnVuY3Rpb24gY3JlYXRlUHJvamVjdCh7CiAgbmFtZSwKfTogewogIG5hbWU6IHN0cmluZzsKICBkZXNjcmlwdGlvbj86IHN0cmluZzsKfSk6IFByb21pc2U8SVByb2plY3RbIiRwcmltYXJ5S2V5Il0+IHsKICBhd2FpdCBkZWxheSgpOwogIGNvbnN0IGlkID0gcmFuZG9tSWQoKTsKICBwcm9qZWN0cy5wdXNoKHsKICAgICRhcGlOYW1lOiAiTW9ja1Byb2plY3QiLAogICAgJHByaW1hcnlLZXk6IGlkLAogICAgaWQsCiAgICBuYW1lLAogICAgZGVzY3JpcHRpb246ICIiLAogIH0pOwogIHJldHVybiBpZDsKfQoKYXN5bmMgZnVuY3Rpb24gZ2V0UmVjb21tZW5kZWRQcm9qZWN0RGVzY3JpcHRpb24oCiAgcHJvamVjdDogSVByb2plY3QsCik6IFByb21pc2U8c3RyaW5nPiB7CiAgYXdhaXQgZGVsYXkoKTsKICBjb25zdCBwcm9qZWN0VGFza3MgPSB0YXNrcy5maWx0ZXIoKHQpID0+IHQucHJvamVjdElkID09PSBwcm9qZWN0LmlkKTsKICBpZiAocHJvamVjdFRhc2tzLmxlbmd0aCA9PT0gMCkgewogICAgdGhyb3cgbmV3IEVycm9yKCJQcm9qZWN0IGRlc2NyaXB0aW9uIHJlY29tbWVuZGF0aW9uIHJlcXVpcmVzIHRhc2tzIik7CiAgfQogIHJldHVybiBgQUlQIExvZ2ljIG1vY2sgZGVzY3JpcHRpb24gZm9yIHByb2plY3RgOwp9Cgphc3luYyBmdW5jdGlvbiB1cGRhdGVQcm9qZWN0RGVzY3JpcHRpb24oCiAgcHJvamVjdDogSVByb2plY3QsCik6IFByb21pc2U8dm9pZD4gewogIGF3YWl0IGRlbGF5KCk7CiAgcHJvamVjdC5kZXNjcmlwdGlvbiA9IGF3YWl0IGdldFJlY29tbWVuZGVkUHJvamVjdERlc2NyaXB0aW9uKHByb2plY3QpOwp9Cgphc3luYyBmdW5jdGlvbiBkZWxldGVQcm9qZWN0KGlkOiBzdHJpbmcpOiBQcm9taXNlPHZvaWQ+IHsKICBhd2FpdCBkZWxheSgpOwogIGNvbnN0IGlkeCA9IHByb2plY3RzLmZpbmRJbmRleCgocCkgPT4gcC5pZCA9PT0gaWQpOwogIGlmIChpZHggIT09IC0xKSB7CiAgICBwcm9qZWN0cy5zcGxpY2UoaWR4LCAxKTsKICB9Cn0KCmFzeW5jIGZ1bmN0aW9uIGdldFByb2plY3RUYXNrcyhwcm9qZWN0SWQ6IHN0cmluZyk6IFByb21pc2U8SVRhc2tbXT4gewogIGF3YWl0IGRlbGF5KCk7CiAgcmV0dXJuIHRhc2tzLmZpbHRlcigodCkgPT4gdC5wcm9qZWN0SWQgPT09IHByb2plY3RJZCk7Cn0KCmFzeW5jIGZ1bmN0aW9uIGNyZWF0ZVRhc2soewogIHRpdGxlLAogIGRlc2NyaXB0aW9uID0gIiIsCiAgcHJvamVjdElkLAp9OiB7CiAgdGl0bGU6IHN0cmluZzsKICBkZXNjcmlwdGlvbjogc3RyaW5nOwogIHByb2plY3RJZDogc3RyaW5nOwp9KTogUHJvbWlzZTxJVGFza1siJHByaW1hcnlLZXkiXT4gewogIGF3YWl0IGRlbGF5KCk7CiAgY29uc3QgcHJvamVjdCA9IHByb2plY3RzLmZpbmQoKHApID0+IHAuaWQgPT09IHByb2plY3RJZCk7CiAgaWYgKHByb2plY3QgPT0gbnVsbCkgewogICAgdGhyb3cgbmV3IEVycm9yKGBQcm9qZWN0ICR7cHJvamVjdElkfSBub3QgZm91bmQhYCk7CiAgfQogIGNvbnN0IGlkID0gcmFuZG9tSWQoKTsKICB0YXNrcy51bnNoaWZ0KHsKICAgICRhcGlOYW1lOiAiTW9ja1Rhc2siLAogICAgJHByaW1hcnlLZXk6IGlkLAogICAgaWQsCiAgICB0aXRsZSwKICAgIGRlc2NyaXB0aW9uLAogICAgcHJvamVjdElkLAogIH0pOwogIHJldHVybiBpZDsKfQoKYXN5bmMgZnVuY3Rpb24gZ2V0UmVjb21tZW5kZWRUYXNrRGVzY3JpcHRpb24oCiAgdGFza05hbWU6IHN0cmluZywKKTogUHJvbWlzZTxzdHJpbmc+IHsKICBhd2FpdCBkZWxheSgpOwogIGlmICh0YXNrTmFtZS5sZW5ndGggPT09IDApIHsKICAgIHRocm93IG5ldyBFcnJvcigiVGFzayBuYW1lIG11c3Qgbm90IGJlIGVtcHR5Iik7CiAgfQogIHJldHVybiBgTW9jayBBSVAgZGVzY3JpcHRpb24gZm9yIHRhc2tgOwp9Cgphc3luYyBmdW5jdGlvbiBkZWxldGVUYXNrKGlkOiBzdHJpbmcpOiBQcm9taXNlPHZvaWQ+IHsKICBhd2FpdCBkZWxheSgpOwogIGNvbnN0IGlkeCA9IHRhc2tzLmZpbmRJbmRleCgodCkgPT4gdC5pZCA9PT0gaWQpOwogIGlmIChpZHggIT09IC0xKSB7CiAgICB0YXNrcy5zcGxpY2UoaWR4LCAxKTsKICB9Cn0KCmNvbnN0IE1vY2tzID0gewogIGdldFByb2plY3RzLAogIGNyZWF0ZVByb2plY3QsCiAgZ2V0UmVjb21tZW5kZWRQcm9qZWN0RGVzY3JpcHRpb24sCiAgZGVsZXRlUHJvamVjdCwKICBnZXRQcm9qZWN0VGFza3MsCiAgY3JlYXRlVGFzaywKICBkZWxldGVUYXNrLAogIGdldFJlY29tbWVuZGVkVGFza0Rlc2NyaXB0aW9uLAogIHVwZGF0ZVByb2plY3REZXNjcmlwdGlvbiwKfTsKCmV4cG9ydCBkZWZhdWx0IE1vY2tzOwo="
|
|
1143
1139
|
}], ["src/useProjectTasks.ts", {
|
|
1144
1140
|
"type": "base64",
|
|
1145
|
-
"body": "
|
|
1141
|
+
"body": "aW1wb3J0IHsgdXNlQ2FsbGJhY2sgfSBmcm9tICJyZWFjdCI7CmltcG9ydCB1c2VTV1IgZnJvbSAic3dyIjsKaW1wb3J0IE1vY2tzIGZyb20gIi4vbW9ja3MiOwppbXBvcnQgeyBJUHJvamVjdCB9IGZyb20gIi4vdXNlUHJvamVjdHMiOwoKZXhwb3J0IGludGVyZmFjZSBJVGFzayB7CiAgJGFwaU5hbWU6IHN0cmluZzsKICAkcHJpbWFyeUtleTogc3RyaW5nOwogIGlkOiBzdHJpbmc7CiAgdGl0bGU6IHN0cmluZzsKICBkZXNjcmlwdGlvbjogc3RyaW5nOwogIHByb2plY3RJZDogc3RyaW5nOwp9CgpleHBvcnQgZnVuY3Rpb24gdXNlUHJvamVjdFRhc2tzKHByb2plY3Q6IElQcm9qZWN0IHwgdW5kZWZpbmVkKSB7CiAgY29uc3QgeyBkYXRhLCBpc0xvYWRpbmcsIGlzVmFsaWRhdGluZywgZXJyb3IsIG11dGF0ZSB9ID0gdXNlU1dSPElUYXNrW10+KAogICAgcHJvamVjdCAhPSBudWxsID8gYHByb2plY3RzLyR7cHJvamVjdC5pZH0vdGFza3NgIDogbnVsbCwKICAgIC8vIFRyeSB0byBpbXBsZW1lbnQgdGhpcyB3aXRoIHRoZSBPbnRvbG9neSBTREshCiAgICBhc3luYyAoKSA9PiB7CiAgICAgIGlmIChwcm9qZWN0ID09IG51bGwpIHsKICAgICAgICByZXR1cm4gW107CiAgICAgIH0KICAgICAgcmV0dXJuIE1vY2tzLmdldFByb2plY3RUYXNrcyhwcm9qZWN0LiRwcmltYXJ5S2V5KTsKICAgIH0sCiAgKTsKCiAgY29uc3QgY3JlYXRlVGFzazogKAogICAgdGl0bGU6IHN0cmluZywKICAgIGRlc2NyaXB0aW9uOiBzdHJpbmcsCiAgKSA9PiBQcm9taXNlPElUYXNrWyIkcHJpbWFyeUtleSJdIHwgdW5kZWZpbmVkPiA9IHVzZUNhbGxiYWNrKAogICAgYXN5bmMgKHRpdGxlOiBzdHJpbmcsIGRlc2NyaXB0aW9uOiBzdHJpbmcpID0+IHsKICAgICAgaWYgKHByb2plY3QgPT0gbnVsbCkgewogICAgICAgIHJldHVybiB1bmRlZmluZWQ7CiAgICAgIH0KICAgICAgLy8gVHJ5IHRvIGltcGxlbWVudCB0aGlzIHdpdGggdGhlIE9udG9sb2d5IFNESyEKICAgICAgY29uc3QgaWQgPSBhd2FpdCBNb2Nrcy5jcmVhdGVUYXNrKHsKICAgICAgICB0aXRsZSwKICAgICAgICBkZXNjcmlwdGlvbiwKICAgICAgICBwcm9qZWN0SWQ6IHByb2plY3QuJHByaW1hcnlLZXksCiAgICAgIH0pOwogICAgICBhd2FpdCBtdXRhdGUoKTsKICAgICAgcmV0dXJuIGlkOwogICAgfSwKICAgIFtwcm9qZWN0LCBtdXRhdGVdLAogICk7CgogIGNvbnN0IGRlbGV0ZVRhc2s6ICh0YXNrOiBJVGFzaykgPT4gUHJvbWlzZTx2b2lkPiA9IHVzZUNhbGxiYWNrKAogICAgYXN5bmMgKHRhc2spID0+IHsKICAgICAgaWYgKHByb2plY3QgPT0gbnVsbCkgewogICAgICAgIHJldHVybjsKICAgICAgfQogICAgICAvLyBUcnkgdG8gaW1wbGVtZW50IHRoaXMgd2l0aCB0aGUgT250b2xvZ3kgU0RLIQogICAgICBhd2FpdCBNb2Nrcy5kZWxldGVUYXNrKHRhc2suJHByaW1hcnlLZXkpOwogICAgICBhd2FpdCBtdXRhdGUoKTsKICAgIH0sCiAgICBbcHJvamVjdCwgbXV0YXRlXSwKICApOwoKICBjb25zdCBnZXRSZWNvbW1lbmRlZFRhc2tEZXNjcmlwdGlvbjogKHRhc2tOYW1lOiBzdHJpbmcpID0+IFByb21pc2U8c3RyaW5nPiA9CiAgICB1c2VDYWxsYmFjaygKICAgICAgYXN5bmMgKHRhc2tOYW1lOiBzdHJpbmcpID0+IHsKICAgICAgICAvLyBUcnkgdG8gaW1wbGVtZW50IHRoaXMgd2l0aCB0aGUgT250b2xvZ3kgU0RLIQogICAgICAgIGNvbnN0IHJlY29tbWVuZGVkVGFza0Rlc2NyaXB0aW9uID0gYXdhaXQgTW9ja3MKICAgICAgICAgIC5nZXRSZWNvbW1lbmRlZFRhc2tEZXNjcmlwdGlvbih0YXNrTmFtZSk7CiAgICAgICAgYXdhaXQgbXV0YXRlKCk7CiAgICAgICAgcmV0dXJuIHJlY29tbWVuZGVkVGFza0Rlc2NyaXB0aW9uOwogICAgICB9LAogICAgICBbbXV0YXRlXSwKICAgICk7CgogIHJldHVybiB7CiAgICB0YXNrczogZGF0YSwKICAgIGlzTG9hZGluZywKICAgIGlzVmFsaWRhdGluZywKICAgIGlzRXJyb3I6IGVycm9yLAogICAgY3JlYXRlVGFzaywKICAgIGRlbGV0ZVRhc2ssCiAgICBnZXRSZWNvbW1lbmRlZFRhc2tEZXNjcmlwdGlvbiwKICB9Owp9Cg=="
|
|
1146
1142
|
}], ["src/useProjects.ts", {
|
|
1147
1143
|
"type": "base64",
|
|
1148
|
-
"body": "
|
|
1144
|
+
"body": "aW1wb3J0IHsgdXNlQ2FsbGJhY2sgfSBmcm9tICJyZWFjdCI7CmltcG9ydCB1c2VTV1IgZnJvbSAic3dyIjsKaW1wb3J0IE1vY2tzIGZyb20gIi4vbW9ja3MiOwoKZXhwb3J0IGludGVyZmFjZSBJUHJvamVjdCB7CiAgJGFwaU5hbWU6IHN0cmluZzsKICAkcHJpbWFyeUtleTogc3RyaW5nOwogIGlkOiBzdHJpbmc7CiAgbmFtZTogc3RyaW5nOwogIGRlc2NyaXB0aW9uOiBzdHJpbmc7Cn0KCmZ1bmN0aW9uIHVzZVByb2plY3RzKCkgewogIGNvbnN0IHsgZGF0YSwgaXNMb2FkaW5nLCBpc1ZhbGlkYXRpbmcsIGVycm9yLCBtdXRhdGUgfSA9IHVzZVNXUjxJUHJvamVjdFtdPigKICAgICJwcm9qZWN0cyIsCiAgICBhc3luYyAoKSA9PiB7CiAgICAgIC8vIFRyeSB0byBpbXBsZW1lbnQgdGhpcyB3aXRoIHRoZSBPbnRvbG9neSBTREshCiAgICAgIGNvbnN0IHByb2plY3RzTGlzdDogSVByb2plY3RbXSA9IChhd2FpdCBNb2Nrcy5nZXRQcm9qZWN0cygpKS5tYXAoKAogICAgICAgIHByb2plY3QsCiAgICAgICkgPT4gKHsKICAgICAgICAkYXBpTmFtZTogcHJvamVjdC4kYXBpTmFtZSwKICAgICAgICAkcHJpbWFyeUtleTogcHJvamVjdC4kcHJpbWFyeUtleSwKICAgICAgICBpZDogcHJvamVjdC5pZCwKICAgICAgICBuYW1lOiBwcm9qZWN0Lm5hbWUgfHwgIiIsCiAgICAgICAgZGVzY3JpcHRpb246IHByb2plY3QuZGVzY3JpcHRpb24gfHwgIiIsCiAgICAgIH0pKTsKICAgICAgcmV0dXJuIHByb2plY3RzTGlzdDsKICAgIH0sCiAgKTsKCiAgY29uc3QgY3JlYXRlUHJvamVjdDogKAogICAgbmFtZTogc3RyaW5nLAogICkgPT4gUHJvbWlzZTxJUHJvamVjdFsiJHByaW1hcnlLZXkiXT4gPSB1c2VDYWxsYmFjaygKICAgIGFzeW5jIChuYW1lOiBzdHJpbmcpID0+IHsKICAgICAgLy8gVHJ5IHRvIGltcGxlbWVudCB0aGlzIHdpdGggdGhlIE9udG9sb2d5IFNESyEKICAgICAgY29uc3QgaWQgPSBhd2FpdCBNb2Nrcy5jcmVhdGVQcm9qZWN0KHsgbmFtZSB9KTsKICAgICAgYXdhaXQgbXV0YXRlKCk7CiAgICAgIHJldHVybiBpZDsKICAgIH0sCiAgICBbbXV0YXRlXSwKICApOwoKICBjb25zdCB1cGRhdGVQcm9qZWN0RGVzY3JpcHRpb246ICgKICAgIHByb2plY3Q6IElQcm9qZWN0LAogICkgPT4gUHJvbWlzZTx2b2lkPiA9IHVzZUNhbGxiYWNrKAogICAgYXN5bmMgKHByb2plY3QpID0+IHsKICAgICAgLy8gVHJ5IHRvIGltcGxlbWVudCB0aGlzIHdpdGggdGhlIE9udG9sb2d5IFNESyEKICAgICAgYXdhaXQgTW9ja3MudXBkYXRlUHJvamVjdERlc2NyaXB0aW9uKHByb2plY3QpOwogICAgICBhd2FpdCBtdXRhdGUoKTsKICAgIH0sCiAgICBbbXV0YXRlXSwKICApOwoKICBjb25zdCBkZWxldGVQcm9qZWN0OiAocHJvamVjdDogSVByb2plY3QpID0+IFByb21pc2U8dm9pZD4gPSB1c2VDYWxsYmFjaygKICAgIGFzeW5jIChwcm9qZWN0KSA9PiB7CiAgICAgIC8vIFRyeSB0byBpbXBsZW1lbnQgdGhpcyB3aXRoIHRoZSBPbnRvbG9neSBTREshCiAgICAgIGF3YWl0IE1vY2tzLmRlbGV0ZVByb2plY3QocHJvamVjdC4kcHJpbWFyeUtleSk7CiAgICAgIGF3YWl0IG11dGF0ZSgpOwogICAgfSwKICAgIFttdXRhdGVdLAogICk7CgogIHJldHVybiB7CiAgICBwcm9qZWN0czogZGF0YSwKICAgIGlzTG9hZGluZywKICAgIGlzVmFsaWRhdGluZywKICAgIGlzRXJyb3I6IGVycm9yLAogICAgY3JlYXRlUHJvamVjdCwKICAgIGRlbGV0ZVByb2plY3QsCiAgICB1cGRhdGVQcm9qZWN0RGVzY3JpcHRpb24sCiAgfTsKfQoKZXhwb3J0IGRlZmF1bHQgdXNlUHJvamVjdHM7Cg=="
|
|
1149
1145
|
}], ["src/vite-env.d.ts", {
|
|
1150
1146
|
"type": "base64",
|
|
1151
1147
|
"body": "Ly8vIDxyZWZlcmVuY2UgdHlwZXM9InZpdGUvY2xpZW50IiAvPgo="
|
|
@@ -1180,5 +1176,5 @@ export default defineConfig({
|
|
|
1180
1176
|
}]]);
|
|
1181
1177
|
|
|
1182
1178
|
export { files };
|
|
1183
|
-
//# sourceMappingURL=esm-
|
|
1184
|
-
//# sourceMappingURL=esm-
|
|
1179
|
+
//# sourceMappingURL=esm-CYB2O5FN.js.map
|
|
1180
|
+
//# sourceMappingURL=esm-CYB2O5FN.js.map
|