create-manifest 1.3.4 → 2.0.0

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 (57) hide show
  1. package/README.md +40 -21
  2. package/index.js +51 -0
  3. package/package.json +11 -89
  4. package/starter/.claude/settings.local.json +21 -0
  5. package/starter/.env.example +1 -0
  6. package/starter/@/components/table.tsx +478 -0
  7. package/starter/@/components/ui/button.tsx +62 -0
  8. package/starter/@/components/ui/checkbox.tsx +30 -0
  9. package/starter/README-DEV.md +167 -0
  10. package/starter/components.json +24 -0
  11. package/starter/package.json +42 -0
  12. package/starter/src/flows/list-pokemons.flow.ts +131 -0
  13. package/starter/src/server.ts +165 -0
  14. package/starter/src/web/PokemonList.tsx +125 -0
  15. package/starter/src/web/components/blog-post-card.tsx +286 -0
  16. package/starter/src/web/components/blog-post-list.tsx +291 -0
  17. package/starter/src/web/components/ui/.gitkeep +0 -0
  18. package/starter/src/web/components/ui/button.tsx +62 -0
  19. package/starter/src/web/globals.css +98 -0
  20. package/starter/src/web/hooks/.gitkeep +0 -0
  21. package/starter/src/web/lib/utils.ts +6 -0
  22. package/starter/src/web/root.tsx +36 -0
  23. package/starter/src/web/tsconfig.json +3 -0
  24. package/starter/tsconfig.json +21 -0
  25. package/starter/tsconfig.web.json +24 -0
  26. package/starter/vite.config.ts +36 -0
  27. package/assets/monorepo/README.md +0 -52
  28. package/assets/monorepo/api-package.json +0 -9
  29. package/assets/monorepo/api-readme.md +0 -50
  30. package/assets/monorepo/manifest.yml +0 -34
  31. package/assets/monorepo/root-package.json +0 -15
  32. package/assets/monorepo/web-package.json +0 -10
  33. package/assets/monorepo/web-readme.md +0 -9
  34. package/assets/standalone/README.md +0 -50
  35. package/assets/standalone/api-package.json +0 -9
  36. package/assets/standalone/manifest.yml +0 -34
  37. package/bin/dev.cmd +0 -3
  38. package/bin/dev.js +0 -5
  39. package/bin/run.cmd +0 -3
  40. package/bin/run.js +0 -5
  41. package/dist/commands/index.d.ts +0 -65
  42. package/dist/commands/index.js +0 -480
  43. package/dist/index.d.ts +0 -1
  44. package/dist/index.js +0 -1
  45. package/dist/utils/GetBackendFileContent.d.ts +0 -1
  46. package/dist/utils/GetBackendFileContent.js +0 -21
  47. package/dist/utils/GetLatestPackageVersion.d.ts +0 -1
  48. package/dist/utils/GetLatestPackageVersion.js +0 -5
  49. package/dist/utils/UpdateExtensionJsonFile.d.ts +0 -6
  50. package/dist/utils/UpdateExtensionJsonFile.js +0 -8
  51. package/dist/utils/UpdatePackageJsonFile.d.ts +0 -18
  52. package/dist/utils/UpdatePackageJsonFile.js +0 -21
  53. package/dist/utils/UpdateSettingsJsonFile.d.ts +0 -4
  54. package/dist/utils/UpdateSettingsJsonFile.js +0 -6
  55. package/dist/utils/helpers.d.ts +0 -1
  56. package/dist/utils/helpers.js +0 -11
  57. package/oclif.manifest.json +0 -47
@@ -0,0 +1,98 @@
1
+ @import "tailwindcss";
2
+
3
+ @custom-variant dark (&:is(.dark *));
4
+
5
+ @theme inline {
6
+ --color-background: var(--background);
7
+ --color-foreground: var(--foreground);
8
+ --color-card: var(--card);
9
+ --color-card-foreground: var(--card-foreground);
10
+ --color-popover: var(--popover);
11
+ --color-popover-foreground: var(--popover-foreground);
12
+ --color-primary: var(--primary);
13
+ --color-primary-foreground: var(--primary-foreground);
14
+ --color-secondary: var(--secondary);
15
+ --color-secondary-foreground: var(--secondary-foreground);
16
+ --color-muted: var(--muted);
17
+ --color-muted-foreground: var(--muted-foreground);
18
+ --color-accent: var(--accent);
19
+ --color-accent-foreground: var(--accent-foreground);
20
+ --color-destructive: var(--destructive);
21
+ --color-destructive-foreground: var(--destructive-foreground);
22
+ --color-border: var(--border);
23
+ --color-input: var(--input);
24
+ --color-ring: var(--ring);
25
+ --color-chart-1: var(--chart-1);
26
+ --color-chart-2: var(--chart-2);
27
+ --color-chart-3: var(--chart-3);
28
+ --color-chart-4: var(--chart-4);
29
+ --color-chart-5: var(--chart-5);
30
+ --radius-sm: calc(var(--radius) - 4px);
31
+ --radius-md: calc(var(--radius) - 2px);
32
+ --radius-lg: var(--radius);
33
+ --radius-xl: calc(var(--radius) + 4px);
34
+ }
35
+
36
+ :root {
37
+ --background: oklch(1 0 0);
38
+ --foreground: oklch(0.145 0 0);
39
+ --card: oklch(1 0 0);
40
+ --card-foreground: oklch(0.145 0 0);
41
+ --popover: oklch(1 0 0);
42
+ --popover-foreground: oklch(0.145 0 0);
43
+ --primary: oklch(0.205 0 0);
44
+ --primary-foreground: oklch(0.985 0 0);
45
+ --secondary: oklch(0.97 0 0);
46
+ --secondary-foreground: oklch(0.205 0 0);
47
+ --muted: oklch(0.97 0 0);
48
+ --muted-foreground: oklch(0.556 0 0);
49
+ --accent: oklch(0.97 0 0);
50
+ --accent-foreground: oklch(0.205 0 0);
51
+ --destructive: oklch(0.577 0.245 27.325);
52
+ --destructive-foreground: oklch(0.577 0.245 27.325);
53
+ --border: oklch(0.922 0 0);
54
+ --input: oklch(0.922 0 0);
55
+ --ring: oklch(0.708 0 0);
56
+ --chart-1: oklch(0.646 0.222 41.116);
57
+ --chart-2: oklch(0.6 0.118 184.704);
58
+ --chart-3: oklch(0.398 0.07 227.392);
59
+ --chart-4: oklch(0.828 0.189 84.429);
60
+ --chart-5: oklch(0.769 0.188 70.08);
61
+ --radius: 0.625rem;
62
+ }
63
+
64
+ .dark {
65
+ --background: oklch(0.145 0 0);
66
+ --foreground: oklch(0.985 0 0);
67
+ --card: oklch(0.145 0 0);
68
+ --card-foreground: oklch(0.985 0 0);
69
+ --popover: oklch(0.145 0 0);
70
+ --popover-foreground: oklch(0.985 0 0);
71
+ --primary: oklch(0.985 0 0);
72
+ --primary-foreground: oklch(0.205 0 0);
73
+ --secondary: oklch(0.269 0 0);
74
+ --secondary-foreground: oklch(0.985 0 0);
75
+ --muted: oklch(0.269 0 0);
76
+ --muted-foreground: oklch(0.708 0 0);
77
+ --accent: oklch(0.269 0 0);
78
+ --accent-foreground: oklch(0.985 0 0);
79
+ --destructive: oklch(0.396 0.141 25.723);
80
+ --destructive-foreground: oklch(0.637 0.237 25.331);
81
+ --border: oklch(0.269 0 0);
82
+ --input: oklch(0.269 0 0);
83
+ --ring: oklch(0.439 0 0);
84
+ --chart-1: oklch(0.488 0.243 264.376);
85
+ --chart-2: oklch(0.696 0.17 162.48);
86
+ --chart-3: oklch(0.769 0.188 70.08);
87
+ --chart-4: oklch(0.627 0.265 303.9);
88
+ --chart-5: oklch(0.645 0.246 16.439);
89
+ }
90
+
91
+ @layer base {
92
+ * {
93
+ @apply border-border;
94
+ }
95
+ body {
96
+ @apply bg-background text-foreground;
97
+ }
98
+ }
File without changes
@@ -0,0 +1,6 @@
1
+ import { type ClassValue, clsx } from "clsx"
2
+ import { twMerge } from "tailwind-merge"
3
+
4
+ export function cn(...inputs: ClassValue[]) {
5
+ return twMerge(clsx(inputs))
6
+ }
@@ -0,0 +1,36 @@
1
+ import { useEffect, useState, type ReactNode } from 'react'
2
+ import '@/globals.css'
3
+
4
+ export default function RootLayout({ children }: { children: ReactNode }) {
5
+ const [theme, setTheme] = useState<'light' | 'dark'>('light')
6
+
7
+ useEffect(() => {
8
+ if (window.openai?.theme) {
9
+ setTheme(window.openai.theme)
10
+ }
11
+ }, [])
12
+
13
+ return (
14
+ <div className={theme === 'dark' ? 'dark' : ''}>
15
+ {children}
16
+ </div>
17
+ )
18
+ }
19
+
20
+ // Type declarations for OpenAI host
21
+ declare global {
22
+ interface Window {
23
+ openai?: {
24
+ theme?: 'light' | 'dark'
25
+ content?: {
26
+ structuredContent?: unknown
27
+ }
28
+ sendFollowUpMessage?: (message: string) => void
29
+ callTool?: (name: string, args: Record<string, unknown>) => Promise<unknown>
30
+ openExternal?: (url: string) => void
31
+ requestDisplayMode?: (mode: 'inline' | 'fullscreen' | 'pip') => void
32
+ requestClose?: () => void
33
+ setWidgetState?: (state: Record<string, unknown>) => void
34
+ }
35
+ }
36
+ }
@@ -0,0 +1,3 @@
1
+ {
2
+ "extends": "../../tsconfig.web.json"
3
+ }
@@ -0,0 +1,21 @@
1
+ {
2
+ "include": ["src/**/*"],
3
+ "exclude": ["vite.config.ts", "src/web"],
4
+ "compilerOptions": {
5
+ "rootDir": "./src",
6
+ "outDir": "./dist",
7
+ "module": "nodenext",
8
+ "target": "esnext",
9
+ "types": [],
10
+ "sourceMap": true,
11
+ "declaration": true,
12
+ "declarationMap": true,
13
+ "noUncheckedIndexedAccess": true,
14
+ "exactOptionalPropertyTypes": true,
15
+ "strict": true,
16
+ "verbatimModuleSyntax": true,
17
+ "isolatedModules": true,
18
+ "moduleDetection": "force",
19
+ "skipLibCheck": true
20
+ }
21
+ }
@@ -0,0 +1,24 @@
1
+ {
2
+ "compilerOptions": {
3
+ "target": "ES2020",
4
+ "useDefineForClassFields": true,
5
+ "lib": ["ES2020", "DOM", "DOM.Iterable"],
6
+ "module": "ESNext",
7
+ "skipLibCheck": true,
8
+ "moduleResolution": "bundler",
9
+ "allowImportingTsExtensions": true,
10
+ "resolveJsonModule": true,
11
+ "isolatedModules": true,
12
+ "noEmit": true,
13
+ "jsx": "react-jsx",
14
+ "strict": true,
15
+ "noUnusedLocals": true,
16
+ "noUnusedParameters": true,
17
+ "noFallthroughCasesInSwitch": true,
18
+ "baseUrl": ".",
19
+ "paths": {
20
+ "@/*": ["./src/web/*"]
21
+ }
22
+ },
23
+ "include": ["src/web"]
24
+ }
@@ -0,0 +1,36 @@
1
+ import { defineConfig } from 'vite'
2
+ import react from '@vitejs/plugin-react'
3
+ import tailwindcss from '@tailwindcss/vite'
4
+ import { chatGPTWidgetPlugin } from 'vite-plugin-chatgpt-widgets'
5
+ import { resolve } from 'path'
6
+
7
+ const port = Number(process.env.PORT) || 3000
8
+
9
+ export default defineConfig({
10
+ plugins: [
11
+ react(),
12
+ tailwindcss(),
13
+ chatGPTWidgetPlugin({
14
+ widgetsDir: 'src/web',
15
+ baseUrl: `http://localhost:${port}`
16
+ })
17
+ ],
18
+ resolve: {
19
+ alias: {
20
+ '@': resolve(import.meta.dirname, 'src/web')
21
+ }
22
+ },
23
+ build: {
24
+ manifest: true,
25
+ outDir: 'dist/web',
26
+ rollupOptions: {
27
+ // Don't look for default index.html - the plugin adds widget entries
28
+ input: {}
29
+ }
30
+ },
31
+ server: {
32
+ cors: {
33
+ origin: true
34
+ }
35
+ }
36
+ })
@@ -1,52 +0,0 @@
1
- <br>
2
- <p align="center">
3
- <a href="https://manifest.build/#gh-light-mode-only">
4
- <img alt="manifest" src="https://manifest.build/assets/images/logo-transparent.svg" height="55px" alt="Manifest logo" title="Manifest - A backend so simple that it fits in a YAML file" />
5
- </a>
6
- <a href="https://manifest.build/#gh-dark-mode-only">
7
- <img alt="manifest" src="https://manifest.build/assets/images/logo-light.svg" height="55px" alt="Manifest logo" title="Manifest - A backend so simple that it fits in a YAML file" />
8
- </a>
9
- </p>
10
-
11
- <p align='center'>
12
- <strong>1-file backend to ship fast</strong> <br> <span>Manifest is an open source, portable backend with data, storage, logic, auth and admin UI to ship Prototypes and MVPs.
13
- </span>
14
-
15
- ## Description
16
-
17
- Welcome to your [Manifest](https://github.com/mnfst/manifest) project ! Feel free to replace this README by your own.
18
-
19
- This application is a **monorepo** composed by a [Manifest backend](https://github.com/mnfst/manifest) in the "/api" folder and a frontend of your choice that you can add in the "/web" folder.
20
-
21
- ## Installation
22
-
23
- ```bash
24
- $ npm install
25
- ```
26
-
27
- ## Running the app
28
-
29
- To run the app in the development mode:
30
-
31
- ```bash
32
- npm run start
33
- ```
34
-
35
- - Open [http://localhost:1111](http://localhost:1111) to open your admin UI it in your browser
36
- - Open [http://localhost:1111/api](http://localhost:111/api) to view your REST API documentation
37
-
38
- The page will reload when you make changes.
39
-
40
- ## Seed dummy data
41
-
42
- Seeds some dummy data for your entities:
43
-
44
- ```bash
45
- npm run seed
46
- ```
47
-
48
- ## Community & Resources
49
-
50
- - [Docs](https://manifest.build/docs) - Get started with Manifest
51
- - [Discord](https://discord.gg/FepAked3W7) - Come chat with the community
52
- - [Github](https://github.com/mnfst/manifest/issues) - Report bugs and share ideas to improve the product.
@@ -1,9 +0,0 @@
1
- {
2
- "name": "@PROJECT_NAME/api",
3
- "version": "0.1.0",
4
- "description": "A backend made with Manifest: https://manifest.build",
5
- "private": true,
6
- "license": "UNLICENSED",
7
- "scripts": {},
8
- "dependencies": {}
9
- }
@@ -1,50 +0,0 @@
1
- <br>
2
- <p align="center">
3
- <a href="https://manifest.build/#gh-light-mode-only">
4
- <img alt="manifest" src="https://manifest.build/assets/images/logo-transparent.svg" height="55px" alt="Manifest logo" title="Manifest - A backend so simple that it fits in a YAML file" />
5
- </a>
6
- <a href="https://manifest.build/#gh-dark-mode-only">
7
- <img alt="manifest" src="https://manifest.build/assets/images/logo-light.svg" height="55px" alt="Manifest logo" title="Manifest - A backend so simple that it fits in a YAML file" />
8
- </a>
9
- </p>
10
-
11
- <p align='center'>
12
- <strong>1-file backend to ship fast</strong> <br> <span>Manifest is an open source, portable backend with data, storage, logic, auth and admin UI to ship Prototypes and MVPs.
13
- </span>
14
-
15
- ## Description
16
-
17
- Welcome to your [Manifest](https://github.com/mnfst/manifest) backend ! Feel free to replace this README by your own.
18
-
19
- ## Installation
20
-
21
- ```bash
22
- $ npm install
23
- ```
24
-
25
- ## Running the app
26
-
27
- To run the app in the development mode:
28
-
29
- ```bash
30
- npm run start
31
- ```
32
-
33
- - Open [http://localhost:1111](http://localhost:1111) to open your admin UI it in your browser
34
- - Open [http://localhost:1111/api](http://localhost:111/api) to view your REST API documentation
35
-
36
- The page will reload when you make changes.
37
-
38
- ## Seed dummy data
39
-
40
- Seeds some dummy data for your entities:
41
-
42
- ```bash
43
- npm run seed
44
- ```
45
-
46
- ## Community & Resources
47
-
48
- - [Docs](https://manifest.build/docs) - Get started with Manifest
49
- - [Discord](https://discord.gg/FepAked3W7) - Come chat with the community
50
- - [Github](https://github.com/mnfst/manifest/issues) - Report bugs and share ideas to improve the product.
@@ -1,34 +0,0 @@
1
- # This is a sample file for a manifest.yml manifest backend.
2
- # Read more about the manifest format here: https:/manifest.build/docs
3
-
4
- name: My pet app 🐾
5
- entities:
6
- Owner:
7
- properties:
8
- - name
9
- - { name: birthdate, type: date }
10
- policies:
11
- read:
12
- - access: public
13
-
14
- Cat:
15
- properties:
16
- - name
17
- - { name: age, type: number }
18
- - { name: birthdate, type: date }
19
- belongsTo:
20
- - Owner
21
- policies:
22
- read:
23
- - access: public
24
-
25
- Homepage:
26
- nameSingular: Home content
27
- single: true
28
- properties:
29
- - title
30
- - { name: description, type: richText }
31
- - { name: cover, type: image }
32
- policies:
33
- read:
34
- - access: public
@@ -1,15 +0,0 @@
1
- {
2
- "name": "PROJECT_NAME",
3
- "private": true,
4
- "workspaces": ["api", "web"],
5
- "description": "A full-stack app made with Manifest: https://manifest.build",
6
- "scripts": {
7
- "start": "concurrently \"npm run start:api\" \"npm run start:web\"",
8
- "start:api": "npm run start --workspace=api",
9
- "start:web": "npm run start --workspace=web",
10
- "seed": "npm run seed --workspace=api"
11
- },
12
- "devDependencies": {
13
- "concurrently": "^8.0.0"
14
- }
15
- }
@@ -1,10 +0,0 @@
1
- {
2
- "name": "@PROJECT_NAME/web",
3
- "version": "0.1.0",
4
- "private": true,
5
- "license": "UNLICENSED",
6
- "scripts": {
7
- "start": "echo 'Add your frontend framework here'",
8
- "build": "echo 'Add your build command here'"
9
- }
10
- }
@@ -1,9 +0,0 @@
1
- # Frontend Application
2
-
3
- This folder is ready for your frontend framework of choice:
4
-
5
- - Next.js: `npx create-next-app@latest . --typescript --tailwind`
6
- - Vite React: `npm create vite@latest . -- --template react-ts`
7
- - SvelteKit: `npm create svelte@latest .`
8
-
9
- After setting up your frontend, update the dev script in package.json.
@@ -1,50 +0,0 @@
1
- <br>
2
- <p align="center">
3
- <a href="https://manifest.build/#gh-light-mode-only">
4
- <img alt="manifest" src="https://manifest.build/assets/images/logo-transparent.svg" height="55px" alt="Manifest logo" title="Manifest - A backend so simple that it fits in a YAML file" />
5
- </a>
6
- <a href="https://manifest.build/#gh-dark-mode-only">
7
- <img alt="manifest" src="https://manifest.build/assets/images/logo-light.svg" height="55px" alt="Manifest logo" title="Manifest - A backend so simple that it fits in a YAML file" />
8
- </a>
9
- </p>
10
-
11
- <p align='center'>
12
- <strong>1-file backend to ship fast</strong> <br> <span>Manifest is an open source, portable backend with data, storage, logic, auth and admin UI to ship Prototypes and MVPs.
13
- </span>
14
-
15
- ## Description
16
-
17
- Welcome to your [Manifest](https://github.com/mnfst/manifest) project ! Feel free to replace this README by your own.
18
-
19
- ## Installation
20
-
21
- ```bash
22
- $ npm install
23
- ```
24
-
25
- ## Running the app
26
-
27
- To run the app in the development mode:
28
-
29
- ```bash
30
- npm run start
31
- ```
32
-
33
- - Open [http://localhost:1111](http://localhost:1111) to open your admin UI it in your browser
34
- - Open [http://localhost:1111/api](http://localhost:111/api) to view your REST API documentation
35
-
36
- The page will reload when you make changes.
37
-
38
- ## Seed dummy data
39
-
40
- Seeds some dummy data for your entities:
41
-
42
- ```bash
43
- npm run seed
44
- ```
45
-
46
- ## Community & Resources
47
-
48
- - [Docs](https://manifest.build/docs) - Get started with Manifest
49
- - [Discord](https://discord.gg/FepAked3W7) - Come chat with the community
50
- - [Github](https://github.com/mnfst/manifest/issues) - Report bugs and share ideas to improve the product.
@@ -1,9 +0,0 @@
1
- {
2
- "name": "PROJECT_NAME",
3
- "version": "0.1.0",
4
- "description": "A backend made with Manifest: https://manifest.build",
5
- "private": true,
6
- "license": "UNLICENSED",
7
- "scripts": {},
8
- "dependencies": {}
9
- }
@@ -1,34 +0,0 @@
1
- # This is a sample file for a manifest.yml manifest backend.
2
- # Read more about the manifest format here: https:/manifest.build/docs
3
-
4
- name: My pet app 🐾
5
- entities:
6
- Owner:
7
- properties:
8
- - name
9
- - { name: birthdate, type: date }
10
- policies:
11
- read:
12
- - access: public
13
-
14
- Cat:
15
- properties:
16
- - name
17
- - { name: age, type: number }
18
- - { name: birthdate, type: date }
19
- belongsTo:
20
- - Owner
21
- policies:
22
- read:
23
- - access: public
24
-
25
- Homepage:
26
- nameSingular: Home content
27
- single: true
28
- properties:
29
- - title
30
- - { name: description, type: richText }
31
- - { name: cover, type: image }
32
- policies:
33
- read:
34
- - access: public
package/bin/dev.cmd DELETED
@@ -1,3 +0,0 @@
1
- @echo off
2
-
3
- node --loader ts-node/esm --no-warnings=ExperimentalWarning "%~dp0\dev" %*
package/bin/dev.js DELETED
@@ -1,5 +0,0 @@
1
- #!/usr/bin/env -S node --loader ts-node/esm --no-warnings=ExperimentalWarning
2
-
3
- import {execute} from '@oclif/core'
4
-
5
- await execute({development: true, dir: import.meta.url})
package/bin/run.cmd DELETED
@@ -1,3 +0,0 @@
1
- @echo off
2
-
3
- node "%~dp0\run" %*
package/bin/run.js DELETED
@@ -1,5 +0,0 @@
1
- #!/usr/bin/env node
2
-
3
- import {execute} from '@oclif/core'
4
-
5
- await execute({dir: import.meta.url})
@@ -1,65 +0,0 @@
1
- import { Command } from '@oclif/core';
2
- export default class CreateManifest extends Command {
3
- static description: string;
4
- static args: {
5
- firstArg: import("@oclif/core/interfaces").Arg<string | undefined, Record<string, unknown>>;
6
- };
7
- static flags: {
8
- backendFile: import("@oclif/core/interfaces").OptionFlag<string | undefined, import("@oclif/core/interfaces").CustomOptions>;
9
- cursor: import("@oclif/core/interfaces").BooleanFlag<boolean>;
10
- copilot: import("@oclif/core/interfaces").BooleanFlag<boolean>;
11
- windsurf: import("@oclif/core/interfaces").BooleanFlag<boolean>;
12
- };
13
- /**
14
- * The run method is called when the command is run.
15
- *
16
- * Steps:
17
- * 1. Create a folder named after the first arg or ask for it
18
- * 2. Create a folder with the name `manifest`.
19
- * 3. Create a file inside the folder with the name `manifest.yml`.
20
- * 4. Update the `package.json` file with the new packages and scripts.
21
- * 5. Update the .vscode/extensions.json file with the recommended extensions.
22
- * 6. Update the .vscode/settings.json file with the recommended settings.
23
- * 7. Update the .gitignore file with the recommended settings.
24
- * 8. Update the .env file with the environment variables.
25
- * 9. If no README.md file exists, create one.
26
- * 10. Add optional files based on flags
27
- * 11. Install the new packages.
28
- * 12. Serve the new app.
29
- * 13. Wait for the server to start.
30
- * 14. Seed the database.
31
- * 15. Open the browser.
32
- */
33
- run(): Promise<void>;
34
- /**
35
- * Check if the server is ready.
36
- *
37
- * @returns {Promise<boolean>} - Returns a promise that resolves to a boolean.
38
- *
39
- **/
40
- isServerReady(): Promise<boolean>;
41
- /**
42
- * Wait for the server to be ready.
43
- *
44
- * @returns a promise that resolves to void when the server is ready.
45
- *
46
- **/
47
- waitForServerToBeReady(): Promise<void>;
48
- /**
49
- * Transform a JSON with comments to a JSON without comments.
50
- *
51
- * @param jsonString - The JSON with comments.
52
- *
53
- * @returns the JSON without comments.
54
- *
55
- **/
56
- removeComments(jsonString: string): string;
57
- /**
58
- * Kill a process without logging an error if it fails.
59
- *
60
- * @param {number} pid - The process ID.
61
- * @returns {Promise<void>} - A promise that resolves when the process is killed.
62
- *
63
- */
64
- silentKill(pid: number): Promise<void>;
65
- }