Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Add SvelteKit Example #299

Merged
merged 23 commits into from
Nov 9, 2023
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
Show all changes
23 commits
Select commit Hold shift + click to select a range
5a7df10
When running examples locally, don't affect package files
jpwilliams Aug 18, 2023
c47b5bd
Add `"inngest/sveltekit"` handler
jpwilliams Aug 18, 2023
4fa3722
Add framework-sveltekit' example
jpwilliams Aug 18, 2023
b2308c3
Merge branch 'main' into sveltekit-example
jpwilliams Nov 7, 2023
a152336
Set README for SvelteKit
jpwilliams Nov 7, 2023
7e219cc
Modernize SvelteKit handler
jpwilliams Nov 7, 2023
37be5e8
Set static Inngest version in SvelteKit example
jpwilliams Nov 7, 2023
258ff85
Fix SvelteKit example not switching request methods
jpwilliams Nov 7, 2023
9be22ec
Add ESM import info for SvelteKit handler
jpwilliams Nov 7, 2023
5025f94
Fix SvelteKit tests not running
jpwilliams Nov 7, 2023
fb9623e
Use `cross-fetch` `Headers` for Node 14 + 16
jpwilliams Nov 7, 2023
77c3090
Shfit SvelteKit example to V3
jpwilliams Nov 7, 2023
dd225f9
Polyfill some Web API globals for SvelteKit tests
jpwilliams Nov 7, 2023
c174a01
Polyfill `Response` in SvelteKit if we need to
jpwilliams Nov 7, 2023
92dde71
Ensure SvelteKit example runs on port 3000
jpwilliams Nov 7, 2023
fc3db1e
More SvelteKit polyfills
jpwilliams Nov 7, 2023
6e5419d
Turn on SvelteKit debug logs
jpwilliams Nov 7, 2023
a26d65d
Merge branch 'main' into sveltekit-example
jpwilliams Nov 9, 2023
4cbc099
Better logging an access for `itest` runners
jpwilliams Nov 9, 2023
b1f4a25
Manually register during itests
jpwilliams Nov 9, 2023
72e8f30
Set large timeout for itests
jpwilliams Nov 9, 2023
06fa72a
Use `localhost` when running itests
jpwilliams Nov 9, 2023
d3bc0e9
Create short-worms-agree.md
jpwilliams Nov 9, 2023
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Jump to
Jump to file
Failed to load files.
Diff view
Diff view
5 changes: 5 additions & 0 deletions .changeset/short-worms-agree.md
Original file line number Diff line number Diff line change
@@ -0,0 +1,5 @@
---
"inngest": minor
---

Added a new `"inngest/sveltekit"` serve handler. See the [Framework: Sveltekit](https://www.inngest.com/docs/sdk/serve#framework-sveltekit) docs and the [`framework-sveltekit`](/examples/framework-sveltekit) example to get started.
2 changes: 1 addition & 1 deletion .github/workflows/pr.yml
Original file line number Diff line number Diff line change
Expand Up @@ -139,4 +139,4 @@ jobs:
path: packages/inngest

- name: Run integration tests
run: npx tsx scripts/integrationTestRunner.ts ${{ matrix.example }} 8288 3000
run: pnpm run itest ${{ matrix.example }}
10 changes: 10 additions & 0 deletions examples/framework-sveltekit/.gitignore
Original file line number Diff line number Diff line change
@@ -0,0 +1,10 @@
.DS_Store
node_modules
/build
/.svelte-kit
/package
.env
.env.*
!.env.example
vite.config.js.timestamp-*
vite.config.ts.timestamp-*
2 changes: 2 additions & 0 deletions examples/framework-sveltekit/.npmrc
Original file line number Diff line number Diff line change
@@ -0,0 +1,2 @@
engine-strict=true
resolution-mode=highest
13 changes: 13 additions & 0 deletions examples/framework-sveltekit/.prettierignore
Original file line number Diff line number Diff line change
@@ -0,0 +1,13 @@
.DS_Store
node_modules
/build
/.svelte-kit
/package
.env
.env.*
!.env.example

# Ignore files for PNPM, NPM and YARN
pnpm-lock.yaml
package-lock.json
yarn.lock
9 changes: 9 additions & 0 deletions examples/framework-sveltekit/.prettierrc
Original file line number Diff line number Diff line change
@@ -0,0 +1,9 @@
{
"useTabs": true,
"singleQuote": true,
"trailingComma": "none",
"printWidth": 100,
"plugins": ["prettier-plugin-svelte"],
"pluginSearchDirs": ["."],
"overrides": [{ "files": "*.svelte", "options": { "parser": "svelte" } }]
}
29 changes: 29 additions & 0 deletions examples/framework-sveltekit/README.md
Original file line number Diff line number Diff line change
@@ -0,0 +1,29 @@
# create-svelte + Inngest

Everything you need to build a Svelte project, powered by [`create-svelte`](https://github.com/sveltejs/kit/tree/master/packages/create-svelte) and Inngest.

## Getting Started

## How to use

Use [`create-next-app`](https://www.npmjs.com/package/create-next-app) with [npm](https://docs.npmjs.com/cli/init), [Yarn](https://yarnpkg.com/lang/en/docs/cli/create/), or [pnpm](https://pnpm.io) to bootstrap the example:

```bash
npx create-next-app --example https://github.com/inngest/inngest-js/tree/main/examples/framework-sveltekit inngest-sveltekit
```

```bash
yarn create next-app --example https://github.com/inngest/inngest-js/tree/main/examples/framework-sveltekit inngest-sveltekit
```

```bash
pnpm create next-app --example https://github.com/inngest/inngest-js/tree/main/examples/framework-sveltekit inngest-sveltekit
```

- [Inngest functions](https://www.inngest.com/docs/functions) are available at `src/lib/inngest/`.
- The [Inngest handler](https://www.inngest.com/docs/frameworks/nextjs) is available a `src/routes/api/inngest/+server.ts`.

## Learn More

- [Inngest Documentation](https://www.inngest.com/docs) - learn about the Inngest SDK, functions, and events
- [SvelteKit Documentation](https://kit.svelte.dev/docs) - learn about SvelteKit features and API.
33 changes: 33 additions & 0 deletions examples/framework-sveltekit/package.json
Original file line number Diff line number Diff line change
@@ -0,0 +1,33 @@
{
"name": "inngest-sveltekit-example",
"version": "0.0.1",
"private": true,
"scripts": {
"dev": "vite dev --port 3000",
"build": "vite build",
"preview": "vite preview",
"check": "svelte-kit sync && svelte-check --tsconfig ./tsconfig.json",
"check:watch": "svelte-kit sync && svelte-check --tsconfig ./tsconfig.json --watch",
"test": "vitest",
"lint": "prettier --plugin-search-dir . --check .",
"format": "prettier --plugin-search-dir . --write ."
},
"devDependencies": {
"@sveltejs/adapter-auto": "^2.0.0",
"@sveltejs/adapter-vercel": "^3.0.3",
"@sveltejs/kit": "^1.20.4",
"prettier": "^2.8.0",
"prettier-plugin-svelte": "^2.10.1",
"svelte": "^4.0.5",
"svelte-check": "^3.4.3",
"tslib": "^2.4.1",
"typescript": "^5.0.0",
"vite": "^4.4.2",
"vitest": "^0.33.0"
},
"type": "module",
"dependencies": {
"h3": "^1.7.1",
"inngest": "^3.0.0"
}
}
12 changes: 12 additions & 0 deletions examples/framework-sveltekit/src/app.d.ts
Original file line number Diff line number Diff line change
@@ -0,0 +1,12 @@
// See https://kit.svelte.dev/docs/types#app
// for information about these interfaces
declare global {
namespace App {
// interface Error {}
// interface Locals {}
// interface PageData {}
// interface Platform {}
}
}

export {};
12 changes: 12 additions & 0 deletions examples/framework-sveltekit/src/app.html
Original file line number Diff line number Diff line change
@@ -0,0 +1,12 @@
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="utf-8" />
<link rel="icon" href="%sveltekit.assets%/favicon.png" />
<meta name="viewport" content="width=device-width" />
%sveltekit.head%
</head>
<body data-sveltekit-preload-data="hover">
<div style="display: contents">%sveltekit.body%</div>
</body>
</html>
7 changes: 7 additions & 0 deletions examples/framework-sveltekit/src/index.test.ts
Original file line number Diff line number Diff line change
@@ -0,0 +1,7 @@
import { describe, it, expect } from 'vitest';

describe('sum test', () => {
it('adds 1 + 2 to equal 3', () => {
expect(1 + 2).toBe(3);
});
});
1 change: 1 addition & 0 deletions examples/framework-sveltekit/src/lib/index.ts
Original file line number Diff line number Diff line change
@@ -0,0 +1 @@
// place files you want to import through the `$lib` alias in this folder.
4 changes: 4 additions & 0 deletions examples/framework-sveltekit/src/lib/inngest/client.ts
Original file line number Diff line number Diff line change
@@ -0,0 +1,4 @@
import { Inngest } from 'inngest';
import { schemas } from './types';

export const inngest = new Inngest({ id: 'my-sveltekit-app', schemas });
11 changes: 11 additions & 0 deletions examples/framework-sveltekit/src/lib/inngest/helloWorld.ts
Original file line number Diff line number Diff line change
@@ -0,0 +1,11 @@
import { inngest } from './client';

export default inngest.createFunction(
{ id: 'hello-world' },
{ event: 'demo/event.sent' },
({ event, step }) => {
return {
message: `Hello ${event.name}!`
};
}
);
5 changes: 5 additions & 0 deletions examples/framework-sveltekit/src/lib/inngest/index.ts
Original file line number Diff line number Diff line change
@@ -0,0 +1,5 @@
import helloWorld from './helloWorld';

export const functions = [helloWorld];

export { inngest } from './client';
10 changes: 10 additions & 0 deletions examples/framework-sveltekit/src/lib/inngest/types.ts
Original file line number Diff line number Diff line change
@@ -0,0 +1,10 @@
import { EventSchemas } from 'inngest';

type DemoEventSent = {
name: 'demo/event.sent';
data: {
message: string;
};
};

export const schemas = new EventSchemas().fromUnion<DemoEventSent>();
2 changes: 2 additions & 0 deletions examples/framework-sveltekit/src/routes/+page.svelte
Original file line number Diff line number Diff line change
@@ -0,0 +1,2 @@
<h1>Welcome to SvelteKit</h1>
<p>Visit <a href="https://kit.svelte.dev">kit.svelte.dev</a> to read the documentation</p>
Original file line number Diff line number Diff line change
@@ -0,0 +1,4 @@
import { functions, inngest } from '$lib/inngest';
import { serve } from 'inngest/sveltekit';

export const { GET, POST, PUT } = serve({ client: inngest, functions });
Binary file added examples/framework-sveltekit/static/favicon.png
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
18 changes: 18 additions & 0 deletions examples/framework-sveltekit/svelte.config.js
Original file line number Diff line number Diff line change
@@ -0,0 +1,18 @@
import adapter from '@sveltejs/adapter-auto';
import { vitePreprocess } from '@sveltejs/kit/vite';

/** @type {import('@sveltejs/kit').Config} */
const config = {
// Consult https://kit.svelte.dev/docs/integrations#preprocessors
// for more information about preprocessors
preprocess: vitePreprocess(),

kit: {
// adapter-auto only supports some environments, see https://kit.svelte.dev/docs/adapter-auto for a list.
// If your environment is not supported or you settled on a specific environment, switch out the adapter.
// See https://kit.svelte.dev/docs/adapters for more information about adapters.
adapter: adapter()
}
};

export default config;
17 changes: 17 additions & 0 deletions examples/framework-sveltekit/tsconfig.json
Original file line number Diff line number Diff line change
@@ -0,0 +1,17 @@
{
"extends": "./.svelte-kit/tsconfig.json",
"compilerOptions": {
"allowJs": true,
"checkJs": true,
"esModuleInterop": true,
"forceConsistentCasingInFileNames": true,
"resolveJsonModule": true,
"skipLibCheck": true,
"sourceMap": true,
"strict": true
}
// Path aliases are handled by https://kit.svelte.dev/docs/configuration#alias
//
// If you want to overwrite includes/excludes, make sure to copy over the relevant includes/excludes
// from the referenced tsconfig.json - TypeScript does not merge them in
}
9 changes: 9 additions & 0 deletions examples/framework-sveltekit/vite.config.ts
Original file line number Diff line number Diff line change
@@ -0,0 +1,9 @@
import { sveltekit } from '@sveltejs/kit/vite';
import { defineConfig } from 'vitest/config';

export default defineConfig({
plugins: [sveltekit()],
test: {
include: ['src/**/*.{test,spec}.{js,ts}']
}
});
7 changes: 7 additions & 0 deletions packages/inngest/package.json
Original file line number Diff line number Diff line change
Expand Up @@ -12,6 +12,7 @@
"pb:version": "genversion --semi --double --es6 ./src/version.ts",
"build": "pnpm run clean && tsc --project tsconfig.build.json",
"test": "jest --silent --logHeapUsage --maxWorkers=8 --coverage --ci",
"itest": "tsx scripts/integrationTestRunner.ts",
"test:examples": "jest --logHeapUsage --maxWorkers=8 --testMatch \"**/test/functions/**/*.test.ts\" --ci --verbose",
"test:types": "tsc --noEmit --project tsconfig.types.json --listFiles",
"clean": "rm -rf ./dist",
Expand Down Expand Up @@ -89,6 +90,11 @@
"import": "./remix.js",
"types": "./remix.d.ts"
},
"./sveltekit": {
"require": "./sveltekit.js",
"import": "./sveltekit.js",
"types": "./sveltekit.d.ts"
},
"./deno/fresh": {
"require": "./deno/fresh.js",
"import": "./deno/fresh.js",
Expand Down Expand Up @@ -135,6 +141,7 @@
"@inngest/eslint-plugin-internal": "workspace:^",
"@jest/globals": "^29.5.0",
"@microsoft/api-extractor": "^7.33.7",
"@sveltejs/kit": "^1.27.3",
"@total-typescript/shoehorn": "^0.1.1",
"@types/aws-lambda": "^8.10.108",
"@types/debug": "^4.1.8",
Expand Down