create-houdini 1.2.57 → 1.2.59

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.
Files changed (42) hide show
  1. package/bin.js +0 -47
  2. package/fragments/localSchema/react/src/api/+schema.js +2 -2
  3. package/fragments/localSchema/react/src/routes/+page.gql +3 -0
  4. package/fragments/localSchema/react/src/routes/+page.jsx +9 -0
  5. package/fragments/localSchema/react-typescript/src/api/+schema.ts +2 -2
  6. package/fragments/localSchema/react-typescript/src/routes/+page.gql +3 -0
  7. package/fragments/localSchema/react-typescript/src/routes/+page.tsx +11 -0
  8. package/package.json +1 -1
  9. package/templates/react/src/routes/+page.jsx +1 -1
  10. package/templates/react-typescript/src/+index.tsx +1 -1
  11. package/templates/react-typescript/src/routes/+page.tsx +1 -1
  12. package/templates/sveltekit-demo/.env.local +0 -1
  13. package/templates/sveltekit-demo/.eslintignore +0 -13
  14. package/templates/sveltekit-demo/.graphqlrc.yaml +0 -9
  15. package/templates/sveltekit-demo/.meta.gitignore +0 -11
  16. package/templates/sveltekit-demo/.meta.json +0 -5
  17. package/templates/sveltekit-demo/.prettierignore +0 -15
  18. package/templates/sveltekit-demo/.prettierrc +0 -9
  19. package/templates/sveltekit-demo/README.md +0 -14
  20. package/templates/sveltekit-demo/houdini.config.js +0 -13
  21. package/templates/sveltekit-demo/package.json +0 -38
  22. package/templates/sveltekit-demo/playwright.config.ts +0 -12
  23. package/templates/sveltekit-demo/schema.graphql +0 -23
  24. package/templates/sveltekit-demo/src/app.d.ts +0 -12
  25. package/templates/sveltekit-demo/src/app.html +0 -12
  26. package/templates/sveltekit-demo/src/client.ts +0 -16
  27. package/templates/sveltekit-demo/src/index.test.ts +0 -7
  28. package/templates/sveltekit-demo/src/lib/index.ts +0 -1
  29. package/templates/sveltekit-demo/src/routes/+layout.gql +0 -3
  30. package/templates/sveltekit-demo/src/routes/+layout.svelte +0 -23
  31. package/templates/sveltekit-demo/src/routes/+page.svelte +0 -26
  32. package/templates/sveltekit-demo/src/routes/links/+page.gql +0 -8
  33. package/templates/sveltekit-demo/src/routes/links/+page.svelte +0 -17
  34. package/templates/sveltekit-demo/src/routes/links/Link.svelte +0 -39
  35. package/templates/sveltekit-demo/src/routes/sponsors/+page.gql +0 -6
  36. package/templates/sveltekit-demo/src/routes/sponsors/+page.svelte +0 -47
  37. package/templates/sveltekit-demo/src/routes/sponsors/Sponsors.svelte +0 -34
  38. package/templates/sveltekit-demo/static/favicon.png +0 -0
  39. package/templates/sveltekit-demo/svelte.config.js +0 -18
  40. package/templates/sveltekit-demo/tests/test.ts +0 -6
  41. package/templates/sveltekit-demo/tsconfig.json +0 -14
  42. package/templates/sveltekit-demo/vite.config.ts +0 -7
package/bin.js CHANGED
@@ -184,13 +184,6 @@ if (localSchema) {
184
184
  copy(sourcePath('./fragments/localSchema/' + template))
185
185
  }
186
186
 
187
- // If anything goes wrong, we don't want to block the user
188
- let sponsor_msg = ''
189
- try {
190
- const selected = await getSponsors()
191
- sponsor_msg = `🙏 Special thanks to the ${bold(white(selected))} for supporting Houdini!`
192
- } catch (error) {}
193
-
194
187
  p.outro(`🎉 Everything is ready!
195
188
 
196
189
  👉 Next Steps
@@ -381,43 +374,3 @@ function pCancel(cancelText = 'Operation cancelled.') {
381
374
  p.cancel(cancelText)
382
375
  process.exit(1)
383
376
  }
384
-
385
- async function getSponsors() {
386
- const res = await fetch(
387
- 'https://raw.githubusercontent.com/HoudiniGraphql/sponsors/main/generated/sponsors.json'
388
- )
389
- const /**@type {any[]} */ jsonData = await res.json()
390
-
391
- /** @returns {[number, string]} */
392
- function getTier(/**@type {number}*/ value) {
393
- if (value >= 1500) {
394
- return [10, 'Wizard']
395
- }
396
- if (value >= 500) {
397
- return [5, 'Mage']
398
- }
399
- if (value >= 25) {
400
- return [2, "Magician's Apprentice"]
401
- }
402
- if (value >= 10) {
403
- return [1, 'Supportive Muggle']
404
- }
405
- // don't display the past sponsors
406
- return [0, 'Past Sponsors']
407
- }
408
-
409
- const list = jsonData.flatMap(
410
- (/** @type {{sponsor: {name: string}, monthlyDollars: number}} */ c) => {
411
- const [coef, title] = getTier(c.monthlyDollars)
412
- const names = []
413
- for (let i = 0; i < coef; i++) {
414
- names.push(`${title}, ${c.sponsor.name}`)
415
- }
416
- return names
417
- }
418
- )
419
-
420
- const selected_to_display = list[Math.floor(Math.random() * list.length)]
421
-
422
- return selected_to_display
423
- }
@@ -3,12 +3,12 @@ import { createSchema } from 'graphql-yoga'
3
3
  export default createSchema({
4
4
  typeDefs: /* GraphQL */ `
5
5
  type Query {
6
- hello: String
6
+ message: String
7
7
  }
8
8
  `,
9
9
  resolvers: {
10
10
  Query: {
11
- hello: () => 'world',
11
+ message: () => 'Greetings from your local api 👋',
12
12
  },
13
13
  },
14
14
  })
@@ -0,0 +1,3 @@
1
+ query HelloHoudini {
2
+ hello
3
+ }
@@ -0,0 +1,9 @@
1
+ export default function ({ HelloHoudini }) {
2
+ return (
3
+ <div className="flex flex-col gap-8">
4
+ <h2>Home</h2>
5
+
6
+ <p>{HelloHoudini.message}</p>
7
+ </div>
8
+ )
9
+ }
@@ -3,12 +3,12 @@ import { createSchema } from 'graphql-yoga'
3
3
  export default createSchema({
4
4
  typeDefs: /* GraphQL */ `
5
5
  type Query {
6
- hello: String
6
+ message: String
7
7
  }
8
8
  `,
9
9
  resolvers: {
10
10
  Query: {
11
- hello: () => 'world',
11
+ message: () => 'Greetings from your local api 👋',
12
12
  },
13
13
  },
14
14
  })
@@ -0,0 +1,3 @@
1
+ query HelloHoudini {
2
+ hello
3
+ }
@@ -0,0 +1,11 @@
1
+ import { PageProps } from './$types'
2
+
3
+ export default function ({ HelloHoudini }: PageProps) {
4
+ return (
5
+ <div className="flex flex-col gap-8">
6
+ <h2>Home</h2>
7
+
8
+ <p>{HelloHoudini.message}</p>
9
+ </div>
10
+ )
11
+ }
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "create-houdini",
3
- "version": "1.2.57",
3
+ "version": "1.2.59",
4
4
  "description": "A CLI for creating new Houdini projects",
5
5
  "repository": {
6
6
  "type": "git",
@@ -1,6 +1,6 @@
1
1
  export default function () {
2
2
  return (
3
- <div>
3
+ <div className="flex flex-col gap-8">
4
4
  <h2>Home</h2>
5
5
 
6
6
  <p>
@@ -1,6 +1,6 @@
1
1
  import React from 'react'
2
2
 
3
- export default function App({ children }) {
3
+ export default function App({ children }: { children: React.ReactNode }) {
4
4
  return (
5
5
  <html>
6
6
  <head>
@@ -2,7 +2,7 @@ import type { PageProps } from './$types'
2
2
 
3
3
  export default function ({}: PageProps) {
4
4
  return (
5
- <div>
5
+ <div className="flex flex-col gap-8">
6
6
  <h2>Home</h2>
7
7
 
8
8
  <p>
@@ -1 +0,0 @@
1
- PUBLIC_GRAPHQL_ENDPOINT = 'API_URL'
@@ -1,13 +0,0 @@
1
- .DS_Store
2
- node_modules
3
- /build
4
- /.svelte-kit
5
- /package
6
- .env
7
- .env.*
8
- !.env.example
9
-
10
- # Ignore files for PNPM, NPM and YARN
11
- pnpm-lock.yaml
12
- package-lock.json
13
- yarn.lock
@@ -1,9 +0,0 @@
1
- projects:
2
- default:
3
- schema:
4
- - ./schema.graphql
5
- - ./$houdini/graphql/schema.graphql
6
- documents:
7
- - '**/*.gql'
8
- - '**/*.svelte'
9
- - ./$houdini/graphql/documents.gql
@@ -1,11 +0,0 @@
1
- .DS_Store
2
- node_modules
3
- /build
4
- /.svelte-kit
5
- /package
6
- .env
7
- !.env.example
8
- vite.config.js.timestamp-*
9
- vite.config.ts.timestamp-*
10
-
11
- $houdini
@@ -1,5 +0,0 @@
1
- {
2
- "label": "SvelteKit - Demo",
3
- "hint": "Light demo with a few pages, layout, queries. TypeScript",
4
- "apiUrl": "https://houdinigraphql.com/graphql"
5
- }
@@ -1,15 +0,0 @@
1
- .DS_Store
2
- node_modules
3
- /build
4
- /.svelte-kit
5
- /package
6
- .env
7
- .env.*
8
- !.env.example
9
-
10
- # Ignore files for PNPM, NPM and YARN
11
- pnpm-lock.yaml
12
- package-lock.json
13
- yarn.lock
14
-
15
- $houdini
@@ -1,9 +0,0 @@
1
- {
2
- "useTabs": true,
3
- "singleQuote": true,
4
- "trailingComma": "none",
5
- "printWidth": 100,
6
- "plugins": ["prettier-plugin-svelte"],
7
- "pluginSearchDirs": ["."],
8
- "overrides": [{ "files": "*.svelte", "options": { "parser": "svelte" } }]
9
- }
@@ -1,14 +0,0 @@
1
- # create-houdini
2
-
3
- Once you've created a project and installed dependencies with `npm install` (or `pnpm install` or `yarn`), start a development server:
4
-
5
- ```bash
6
- npm run dev
7
-
8
- # or start the server and open the app in a new browser tab
9
- npm run dev -- --open
10
- ```
11
-
12
- You will lean the rest on the Home page of the demo app.
13
-
14
- More info on: https://github.com/HoudiniGraphql/houdini
@@ -1,13 +0,0 @@
1
- /// <references types="houdini-svelte">
2
-
3
- /** @type {import('houdini').ConfigFile} */
4
- const config = {
5
- watchSchema: {
6
- url: 'env:PUBLIC_GRAPHQL_ENDPOINT'
7
- },
8
- plugins: {
9
- 'houdini-svelte': {}
10
- }
11
- };
12
-
13
- export default config;
@@ -1,38 +0,0 @@
1
- {
2
- "name": "PROJECT_NAME",
3
- "version": "0.0.1",
4
- "private": true,
5
- "scripts": {
6
- "dev": "vite dev",
7
- "build": "vite build",
8
- "preview": "vite preview",
9
- "test": "npm run test:integration && npm run test:unit",
10
- "check": "svelte-kit sync && svelte-check --tsconfig ./tsconfig.json",
11
- "check:watch": "svelte-kit sync && svelte-check --tsconfig ./tsconfig.json --watch",
12
- "lint": "prettier --plugin-search-dir . --check . && eslint .",
13
- "format": "prettier --plugin-search-dir . --write .",
14
- "test:integration": "playwright test",
15
- "test:unit": "vitest"
16
- },
17
- "devDependencies": {
18
- "@playwright/test": "1.30.0",
19
- "@sveltejs/adapter-auto": "^2.0.0",
20
- "@sveltejs/kit": "^1.20.4",
21
- "@typescript-eslint/eslint-plugin": "^5.45.0",
22
- "@typescript-eslint/parser": "^5.45.0",
23
- "eslint": "^8.28.0",
24
- "eslint-config-prettier": "^8.5.0",
25
- "eslint-plugin-svelte": "^2.30.0",
26
- "houdini": "HOUDINI_VERSION",
27
- "houdini-svelte": "HOUDINI_VERSION",
28
- "prettier": "^2.8.0",
29
- "prettier-plugin-svelte": "^2.10.1",
30
- "svelte": "^4.0.5",
31
- "svelte-check": "^3.4.3",
32
- "tslib": "^2.4.1",
33
- "typescript": "^5.0.0",
34
- "vite": "^4.4.2",
35
- "vitest": "^1.6.0"
36
- },
37
- "type": "module"
38
- }
@@ -1,12 +0,0 @@
1
- import type { PlaywrightTestConfig } from '@playwright/test';
2
-
3
- const config: PlaywrightTestConfig = {
4
- webServer: {
5
- command: 'npm run build && npm run preview',
6
- port: 4173
7
- },
8
- testDir: 'tests',
9
- testMatch: /(.+\.)?(test|spec)\.[jt]s/
10
- };
11
-
12
- export default config;
@@ -1,23 +0,0 @@
1
- type Link {
2
- name: String
3
- url: String
4
- }
5
-
6
- type Mutation {
7
- hello(name: String!): String!
8
- }
9
-
10
- type Query {
11
- giveMeAnError: String
12
- links(delai: Int): [Link!]!
13
- sponsors: [Sponsor!]!
14
- welcome: String!
15
- }
16
-
17
- type Sponsor {
18
- avatarUrl: String!
19
- login: String!
20
- name: String!
21
- tiersTitle: String!
22
- websiteUrl: String
23
- }
@@ -1,12 +0,0 @@
1
- // See https://kit.svelte.dev/docs/types#app
2
- // for information about these interfaces
3
- declare global {
4
- namespace App {
5
- // interface Error {}
6
- // interface Locals {}
7
- // interface PageData {}
8
- // interface Platform {}
9
- }
10
- }
11
-
12
- export {};
@@ -1,12 +0,0 @@
1
- <!DOCTYPE html>
2
- <html lang="en">
3
- <head>
4
- <meta charset="utf-8" />
5
- <link rel="icon" href="%sveltekit.assets%/favicon.png" />
6
- <meta name="viewport" content="width=device-width" />
7
- %sveltekit.head%
8
- </head>
9
- <body data-sveltekit-preload-data="hover">
10
- <div style="display: contents">%sveltekit.body%</div>
11
- </body>
12
- </html>
@@ -1,16 +0,0 @@
1
- import { PUBLIC_GRAPHQL_ENDPOINT } from '$env/static/public';
2
- import { HoudiniClient } from '$houdini';
3
-
4
- export default new HoudiniClient({
5
- url: PUBLIC_GRAPHQL_ENDPOINT
6
-
7
- // uncomment this to configure the network call (for things like authentication)
8
- // for more information, please visit here: https://www.houdinigraphql.com/guides/authentication
9
- // fetchParams({ session }) {
10
- // return {
11
- // headers: {
12
- // Authentication: `Bearer ${session.token}`,
13
- // }
14
- // }
15
- // }
16
- });
@@ -1,7 +0,0 @@
1
- import { describe, it, expect } from 'vitest';
2
-
3
- describe('sum test', () => {
4
- it('adds 1 + 2 to equal 3', () => {
5
- expect(1 + 2).toBe(3);
6
- });
7
- });
@@ -1 +0,0 @@
1
- // place files you want to import through the `$lib` alias in this folder.
@@ -1,3 +0,0 @@
1
- query Layout {
2
- welcome
3
- }
@@ -1,23 +0,0 @@
1
- <script lang="ts">
2
- import type { PageData } from './$houdini';
3
-
4
- export let data: PageData;
5
-
6
- $: ({ Layout } = data);
7
- </script>
8
-
9
- <svelte:head>
10
- <title>Houdini • demo</title>
11
- <link rel="icon" type="image/png" href="https://houdinigraphql.com/images/logo.png" />
12
- <link rel="stylesheet" href="https://cdn.jsdelivr.net/npm/water.css@2/out/dark.css" />
13
- </svelte:head>
14
-
15
- <h1>{$Layout.data?.welcome}</h1>
16
-
17
- <a href="/">Home</a> |
18
- <a href="/links">Links</a> |
19
- <a href="/sponsors">Sponsors</a>
20
-
21
- <hr />
22
-
23
- <slot />
@@ -1,26 +0,0 @@
1
- <p>First of all, thank you for using Houdini 🎉!</p>
2
- <p>
3
- You will find here a very small app to show you a few featues like
4
- <span class="code">+page.gql</span>, <span class="code">+layout.gql</span>,
5
- <span class="code">fragment</span>, <span class="code">data masking</span>,
6
- <span class="code">@loading</span>
7
- </p>
8
- <p>To reset this demo and make it yours:</p>
9
- <ol>
10
- <li>Remove all files in <span class="code">routes</span> folder.</li>
11
- <li>
12
- Update <span class="code">.env.local</span> so that
13
- <span class="code">PUBLIC_GRAPHQL_ENDPOINT</span> targets your endpoint.
14
- </li>
15
- <li>Restart the app.</li>
16
- </ol>
17
-
18
- <p><i>//Enjoy 🥳🥳🥳</i></p>
19
-
20
- <style>
21
- .code {
22
- background-color: black;
23
- padding: 0.25rem;
24
- margin: 0.15rem;
25
- }
26
- </style>
@@ -1,8 +0,0 @@
1
- query PageHome {
2
- links(
3
- # The delai here is just to simulate a slow response from the server
4
- delai: 3000
5
- ) @loading(count: 5) {
6
- ...LinkInfo
7
- }
8
- }
@@ -1,17 +0,0 @@
1
- <script lang="ts">
2
- import type { PageData } from './$houdini';
3
- import Link from './Link.svelte';
4
-
5
- export let data: PageData;
6
-
7
- $: ({ PageHome } = data);
8
- </script>
9
-
10
- <h2>Links</h2>
11
- <ul>
12
- {#each $PageHome.data?.links ?? [] as link}
13
- <li>
14
- <Link {link} />
15
- </li>
16
- {/each}
17
- </ul>
@@ -1,39 +0,0 @@
1
- <script lang="ts">
2
- import { PendingValue, fragment, graphql } from '$houdini';
3
- import type { LinkInfo } from '$houdini';
4
-
5
- export let link: LinkInfo;
6
- $: data = fragment(
7
- link,
8
- graphql(`
9
- fragment LinkInfo on Link {
10
- name @loading
11
- url
12
- }
13
- `)
14
- );
15
- </script>
16
-
17
- {#if $data.name === PendingValue}
18
- <div class="skeleton" />
19
- {:else}
20
- <a href={$data.url} target="_blank">{$data.name}</a>
21
- {/if}
22
-
23
- <style>
24
- .skeleton {
25
- animation: skeleton-loading 0.5s linear infinite alternate;
26
- width: 10rem;
27
- height: 1rem;
28
- border-radius: 0.25rem;
29
- }
30
-
31
- @keyframes skeleton-loading {
32
- 0% {
33
- background-color: hsl(200, 20%, 80%);
34
- }
35
- 100% {
36
- background-color: hsl(200, 20%, 95%);
37
- }
38
- }
39
- </style>
@@ -1,6 +0,0 @@
1
- query PageSponsors {
2
- sponsors {
3
- ...SponsorInfo
4
- tiersTitle
5
- }
6
- }
@@ -1,47 +0,0 @@
1
- <script lang="ts">
2
- import type { SponsorInfo } from '$houdini';
3
- import type { PageData } from './$houdini';
4
- import Sponsors from './Sponsors.svelte';
5
-
6
- export let data: PageData;
7
-
8
- $: ({ PageSponsors } = data);
9
-
10
- $: grouped =
11
- $PageSponsors.data?.sponsors.reduce((acc: Record<string, SponsorInfo[]>, sponsor) => {
12
- acc[sponsor.tiersTitle] = acc[sponsor.tiersTitle] || [];
13
- acc[sponsor.tiersTitle].push(sponsor);
14
- return acc;
15
- }, {}) ?? {};
16
- </script>
17
-
18
- <h2>Sponsors</h2>
19
- <center>
20
- {#if $PageSponsors.fetching}
21
- Loading...
22
- {:else if $PageSponsors.errors}
23
- {#each $PageSponsors.errors as error}
24
- {error.message}
25
- {/each}
26
- {:else}
27
- {#each Object.entries(grouped) as [key, sponsors], i}
28
- {@const size = 0.8 + (Object.entries(grouped).length - i) / 5}
29
- <h3 style="font-size: {size}rem;">{key}</h3>
30
- <div class="list">
31
- {#each sponsors as sponsor}
32
- <Sponsors {sponsor} {size} />
33
- {/each}
34
- </div>
35
- {/each}
36
- {/if}
37
- </center>
38
-
39
- <style>
40
- .list {
41
- display: flex;
42
- flex-wrap: wrap;
43
- justify-content: space-evenly;
44
- gap: 1rem;
45
- margin-bottom: 3rem;
46
- }
47
- </style>
@@ -1,34 +0,0 @@
1
- <script lang="ts">
2
- import { fragment, graphql } from '$houdini';
3
- import type { SponsorInfo } from '$houdini';
4
-
5
- export let sponsor: SponsorInfo;
6
- export let size: number = 1;
7
- $: data = fragment(
8
- sponsor,
9
- graphql(`
10
- fragment SponsorInfo on Sponsor {
11
- login
12
- name
13
- avatarUrl
14
- }
15
- `)
16
- );
17
- </script>
18
-
19
- <a href="https://github.com/{$data.login}" target="_blank" style="font-size: {size}rem;">
20
- <img src={$data.avatarUrl} alt={$data.name} width={size * 50} />
21
- <span>{$data.name}</span>
22
- </a>
23
-
24
- <style>
25
- img {
26
- border-radius: 30%;
27
- }
28
-
29
- a {
30
- display: flex;
31
- flex-direction: column;
32
- align-items: center;
33
- }
34
- </style>
@@ -1,18 +0,0 @@
1
- import adapter from '@sveltejs/adapter-auto';
2
- import { vitePreprocess } from '@sveltejs/kit/vite';
3
-
4
- /** @type {import('@sveltejs/kit').Config} */
5
- const config = {
6
- // Consult https://kit.svelte.dev/docs/integrations#preprocessors
7
- // for more information about preprocessors
8
- preprocess: vitePreprocess(),
9
-
10
- kit: {
11
- adapter: adapter(),
12
- alias: {
13
- $houdini: './$houdini'
14
- }
15
- }
16
- };
17
-
18
- export default config;
@@ -1,6 +0,0 @@
1
- import { expect, test } from '@playwright/test';
2
-
3
- test('index page has expected h1', async ({ page }) => {
4
- await page.goto('/');
5
- await expect(page.getByRole('heading', { name: 'Welcome to Houdini 🎩' })).toBeVisible();
6
- });
@@ -1,14 +0,0 @@
1
- {
2
- "extends": "./.svelte-kit/tsconfig.json",
3
- "compilerOptions": {
4
- "allowJs": true,
5
- "checkJs": true,
6
- "esModuleInterop": true,
7
- "forceConsistentCasingInFileNames": true,
8
- "resolveJsonModule": true,
9
- "skipLibCheck": true,
10
- "sourceMap": true,
11
- "strict": true,
12
- "rootDirs": [".", "./.svelte-kit/types", "./$houdini/types"]
13
- }
14
- }
@@ -1,7 +0,0 @@
1
- import { sveltekit } from '@sveltejs/kit/vite';
2
- import houdini from 'houdini/vite';
3
- import { defineConfig } from 'vite';
4
-
5
- export default defineConfig({
6
- plugins: [houdini(), sveltekit()]
7
- });