@fluojs/cli 2.0.1 → 3.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 (118) hide show
  1. package/README.ko.md +169 -21
  2. package/README.md +172 -21
  3. package/dist/cli.d.ts +5 -4
  4. package/dist/cli.d.ts.map +1 -1
  5. package/dist/cli.js +127 -35
  6. package/dist/commands/diagnostics.d.ts +35 -0
  7. package/dist/commands/diagnostics.d.ts.map +1 -1
  8. package/dist/commands/diagnostics.js +60 -0
  9. package/dist/commands/inspect.d.ts +5 -1
  10. package/dist/commands/inspect.d.ts.map +1 -1
  11. package/dist/commands/inspect.js +84 -17
  12. package/dist/commands/migrate.d.ts.map +1 -1
  13. package/dist/commands/migrate.js +27 -15
  14. package/dist/commands/migration-transform-tokens.d.ts +15 -0
  15. package/dist/commands/migration-transform-tokens.d.ts.map +1 -0
  16. package/dist/commands/migration-transform-tokens.js +41 -0
  17. package/dist/commands/new.d.ts.map +1 -1
  18. package/dist/commands/new.js +29 -9
  19. package/dist/commands/output-path-safety.d.ts +14 -0
  20. package/dist/commands/output-path-safety.d.ts.map +1 -0
  21. package/dist/commands/output-path-safety.js +34 -0
  22. package/dist/commands/scripts.js +2 -2
  23. package/dist/commands/typegen-artifact.d.ts +54 -0
  24. package/dist/commands/typegen-artifact.d.ts.map +1 -0
  25. package/dist/commands/typegen-artifact.js +117 -0
  26. package/dist/commands/typegen-generation-child.d.ts +2 -0
  27. package/dist/commands/typegen-generation-child.d.ts.map +1 -0
  28. package/dist/commands/typegen-generation-child.js +59 -0
  29. package/dist/commands/typegen-generation-process.d.ts +46 -0
  30. package/dist/commands/typegen-generation-process.d.ts.map +1 -0
  31. package/dist/commands/typegen-generation-process.js +131 -0
  32. package/dist/commands/typegen-generation-protocol.d.ts +16 -0
  33. package/dist/commands/typegen-generation-protocol.d.ts.map +1 -0
  34. package/dist/commands/typegen-generation-protocol.js +35 -0
  35. package/dist/commands/typegen-isolated-source.d.ts +10 -0
  36. package/dist/commands/typegen-isolated-source.d.ts.map +1 -0
  37. package/dist/commands/typegen-isolated-source.js +75 -0
  38. package/dist/commands/typegen-options.d.ts +20 -0
  39. package/dist/commands/typegen-options.d.ts.map +1 -0
  40. package/dist/commands/typegen-options.js +71 -0
  41. package/dist/commands/typegen-source.d.ts +59 -0
  42. package/dist/commands/typegen-source.d.ts.map +1 -0
  43. package/dist/commands/typegen-source.js +183 -0
  44. package/dist/commands/typegen-watch.d.ts +46 -0
  45. package/dist/commands/typegen-watch.d.ts.map +1 -0
  46. package/dist/commands/typegen-watch.js +212 -0
  47. package/dist/commands/typegen.d.ts +29 -0
  48. package/dist/commands/typegen.d.ts.map +1 -0
  49. package/dist/commands/typegen.js +119 -0
  50. package/dist/dev-runner/node-restart-runner.d.ts.map +1 -1
  51. package/dist/dev-runner/node-restart-runner.js +54 -7
  52. package/dist/fixtures/inspect-react-app.module.d.ts +4 -0
  53. package/dist/fixtures/inspect-react-app.module.d.ts.map +1 -0
  54. package/dist/fixtures/inspect-react-app.module.js +32 -0
  55. package/dist/fixtures/typegen-react-app.module.d.ts +4 -0
  56. package/dist/fixtures/typegen-react-app.module.d.ts.map +1 -0
  57. package/dist/fixtures/typegen-react-app.module.js +33 -0
  58. package/dist/index.d.ts +6 -5
  59. package/dist/index.d.ts.map +1 -1
  60. package/dist/index.js +3 -2
  61. package/dist/new/install.js +1 -1
  62. package/dist/new/package-spec-resolver.d.ts.map +1 -1
  63. package/dist/new/package-spec-resolver.js +50 -59
  64. package/dist/new/prompt.d.ts +1 -0
  65. package/dist/new/prompt.d.ts.map +1 -1
  66. package/dist/new/prompt.js +40 -12
  67. package/dist/new/published-internal-dependencies.d.ts +20 -0
  68. package/dist/new/published-internal-dependencies.d.ts.map +1 -0
  69. package/dist/new/published-internal-dependencies.js +20 -0
  70. package/dist/new/react-vite-ssr-scaffold.d.ts +19 -0
  71. package/dist/new/react-vite-ssr-scaffold.d.ts.map +1 -0
  72. package/dist/new/react-vite-ssr-scaffold.js +108 -0
  73. package/dist/new/resolver.d.ts +2 -2
  74. package/dist/new/resolver.d.ts.map +1 -1
  75. package/dist/new/resolver.js +5 -1
  76. package/dist/new/scaffold.d.ts.map +1 -1
  77. package/dist/new/scaffold.js +62 -31
  78. package/dist/new/starter-profiles.d.ts +8 -4
  79. package/dist/new/starter-profiles.d.ts.map +1 -1
  80. package/dist/new/starter-profiles.js +52 -18
  81. package/dist/new/templates/react-vite-ssr/README.md.ejs +74 -0
  82. package/dist/new/templates/react-vite-ssr/playwright.config.ts.ejs +26 -0
  83. package/dist/new/templates/react-vite-ssr/src/app.test.ts.ejs +82 -0
  84. package/dist/new/templates/react-vite-ssr/src/app.ts.ejs +91 -0
  85. package/dist/new/templates/react-vite-ssr/src/entry-client.tsx.ejs +29 -0
  86. package/dist/new/templates/react-vite-ssr/src/entry-server.tsx.ejs +52 -0
  87. package/dist/new/templates/react-vite-ssr/src/load-manifest.test.ts.ejs +55 -0
  88. package/dist/new/templates/react-vite-ssr/src/load-manifest.ts.ejs +53 -0
  89. package/dist/new/templates/react-vite-ssr/src/main.ts.ejs +18 -0
  90. package/dist/new/templates/react-vite-ssr/src/page.tsx.ejs +43 -0
  91. package/dist/new/templates/react-vite-ssr/src/react-app.test.tsx.ejs +67 -0
  92. package/dist/new/templates/react-vite-ssr/src/react-app.tsx.ejs +46 -0
  93. package/dist/new/templates/react-vite-ssr/src/styles.css.ejs +25 -0
  94. package/dist/new/templates/react-vite-ssr/src/styles.d.ts.ejs +1 -0
  95. package/dist/new/templates/react-vite-ssr/tests/production-hydration.spec.ts.ejs +54 -0
  96. package/dist/new/templates/react-vite-ssr/tsconfig.json.ejs +16 -0
  97. package/dist/new/templates/react-vite-ssr/vite.client.config.ts.ejs +24 -0
  98. package/dist/new/templates/react-vite-ssr/vite.server.config.ts.ejs +17 -0
  99. package/dist/new/templates/react-vite-ssr/vitest.config.ts.ejs +10 -0
  100. package/dist/new/types.d.ts +4 -0
  101. package/dist/new/types.d.ts.map +1 -1
  102. package/dist/public-typegen.d.ts +14 -0
  103. package/dist/public-typegen.d.ts.map +1 -0
  104. package/dist/public-typegen.js +17 -0
  105. package/dist/run-cli.d.ts +2 -1
  106. package/dist/run-cli.d.ts.map +1 -1
  107. package/dist/studio/sidecar.d.ts.map +1 -1
  108. package/dist/studio/sidecar.js +35 -9
  109. package/dist/transforms/nestjs-migrate.d.ts +4 -1
  110. package/dist/transforms/nestjs-migrate.d.ts.map +1 -1
  111. package/dist/transforms/nestjs-migrate.js +625 -65
  112. package/dist/typegen-contract.d.ts +10 -0
  113. package/dist/typegen-contract.d.ts.map +1 -0
  114. package/dist/typegen-contract.js +9 -0
  115. package/dist/usage.d.ts +6 -0
  116. package/dist/usage.d.ts.map +1 -1
  117. package/dist/usage.js +47 -0
  118. package/package.json +19 -10
@@ -0,0 +1,18 @@
1
+ import { createFastifyAdapter } from '@fluojs/platform-fastify';
2
+ import { FluoFactory } from '@fluojs/runtime';
3
+
4
+ import { createAppModule } from './app';
5
+ import { createReactPageRenderer } from './entry-server';
6
+ import { loadReactViteManifest } from './load-manifest';
7
+
8
+ const manifest = await loadReactViteManifest(new URL('../client/.vite/manifest.json', import.meta.url));
9
+ const AppModule = createAppModule({
10
+ clientDirectory: new URL('../client/', import.meta.url),
11
+ renderPage: createReactPageRenderer(manifest),
12
+ });
13
+ const port = Number(process.env.PORT ?? '3000');
14
+ const app = await FluoFactory.create(AppModule, {
15
+ adapter: createFastifyAdapter({ host: '127.0.0.1', port }),
16
+ });
17
+
18
+ await app.listen();
@@ -0,0 +1,43 @@
1
+ import {
2
+ Link,
3
+ useParams,
4
+ useRouter,
5
+ useSearchParams,
6
+ } from '@fluojs/react/client';
7
+ import { type ReactElement, useId, useState } from 'react';
8
+
9
+ export function HydratedCounter(): ReactElement {
10
+ const [count, setCount] = useState(0);
11
+ return <button onClick={() => setCount((value) => value + 1)} type='button'>Count: {count}</button>;
12
+ }
13
+
14
+ function ProductNavigation(): ReactElement {
15
+ const router = useRouter();
16
+
17
+ return (
18
+ <nav aria-label='Product navigation'>
19
+ <Link href='/products/sku-84?preview=false'>Open sku-84</Link>
20
+ <button onClick={() => router.push('/products/sku-126?preview=true')} type='button'>
21
+ Push sku-126
22
+ </button>
23
+ </nav>
24
+ );
25
+ }
26
+
27
+ export function ProductPage(): ReactElement {
28
+ const identifier = useId();
29
+ const params = useParams();
30
+ const searchParams = useSearchParams();
31
+ const sku = params['sku'] ?? 'unknown';
32
+ const preview = searchParams.get('preview') === 'true';
33
+
34
+ return (
35
+ <main>
36
+ <h1>{`Catalog item ${sku}`}</h1>
37
+ <p>{preview ? 'Preview mode' : 'Published mode'}</p>
38
+ <p data-react-identifier id={identifier}>Shared hydration identifier</p>
39
+ <HydratedCounter />
40
+ <ProductNavigation />
41
+ </main>
42
+ );
43
+ }
@@ -0,0 +1,67 @@
1
+ // @vitest-environment happy-dom
2
+
3
+ import { ReactClientRouterProvider, createReactRouteSnapshot } from '@fluojs/react/client';
4
+ import { hydrateRoot } from 'react-dom/client';
5
+ import { renderToString } from 'react-dom/server';
6
+ import { afterEach, describe, expect, it, vi } from 'vitest';
7
+
8
+ import { HydratedCounter, ProductPage } from './page';
9
+ import { ReactAppDocument, reportReactHydrationMismatch } from './react-app';
10
+
11
+ describe('React Vite SSR app composition', () => {
12
+ afterEach(() => {
13
+ document.body.replaceChildren();
14
+ vi.restoreAllMocks();
15
+ });
16
+
17
+ it('renders the HTTP-owned route snapshot through the shared document', () => {
18
+ const html = renderToString(
19
+ <ReactAppDocument
20
+ page={<ProductPage />}
21
+ route={{ params: { sku: 'sku-42' }, url: '/products/sku-42?preview=true' }}
22
+ stylesheets={['/assets/styles.css']}
23
+ />,
24
+ );
25
+
26
+ expect(html).toContain('Catalog item sku-42');
27
+ expect(html).toContain('Preview mode');
28
+ expect(html).toContain('href="/assets/styles.css"');
29
+ expect(html).toContain('data-route-sku="sku-42"');
30
+ });
31
+
32
+ it('reports actionable application files when hydration mismatches', () => {
33
+ const consoleError = vi.spyOn(console, 'error').mockImplementation(() => undefined);
34
+ const mismatch = new Error('Hydration mismatch');
35
+
36
+ reportReactHydrationMismatch(mismatch);
37
+
38
+ expect(consoleError).toHaveBeenCalledWith(expect.stringContaining('src/entry-client.tsx'), mismatch);
39
+ expect(consoleError).toHaveBeenCalledWith(expect.stringContaining('src/entry-server.tsx'), mismatch);
40
+ expect(consoleError).toHaveBeenCalledWith(expect.stringContaining('src/react-app.tsx'), mismatch);
41
+ expect(consoleError).toHaveBeenCalledWith(expect.stringContaining('vite.client.config.ts'), mismatch);
42
+ expect(consoleError).toHaveBeenCalledWith(expect.stringContaining('generated build script'), mismatch);
43
+ });
44
+
45
+ it('attaches interaction without hydration warnings', async () => {
46
+ const consoleError = vi.spyOn(console, 'error').mockImplementation(() => undefined);
47
+ const container = document.createElement('div');
48
+ const initialSnapshot = createReactRouteSnapshot({ url: '/products/sku-42' });
49
+ const counter = (
50
+ <ReactClientRouterProvider initialSnapshot={initialSnapshot}>
51
+ <HydratedCounter />
52
+ </ReactClientRouterProvider>
53
+ );
54
+ container.innerHTML = renderToString(counter);
55
+ document.body.append(container);
56
+
57
+ const root = hydrateRoot(container, counter);
58
+ await new Promise<void>((resolve) => queueMicrotask(resolve));
59
+ const button = document.querySelector('button');
60
+ button?.click();
61
+ await new Promise<void>((resolve) => queueMicrotask(resolve));
62
+
63
+ expect(button?.textContent).toBe('Count: 1');
64
+ expect(consoleError).not.toHaveBeenCalled();
65
+ root.unmount();
66
+ });
67
+ });
@@ -0,0 +1,46 @@
1
+ import {
2
+ ReactClientRouterProvider,
3
+ createReactRouteSnapshot,
4
+ type ReactRouteSnapshotInput,
5
+ } from '@fluojs/react/client';
6
+ import type { ReactElement } from 'react';
7
+
8
+ export const REACT_IDENTIFIER_PREFIX = 'fluo-react-vite-' as const;
9
+
10
+ export type ReactAppDocumentProps = {
11
+ readonly page: ReactElement;
12
+ readonly route: ReactRouteSnapshotInput;
13
+ readonly stylesheets: readonly string[];
14
+ };
15
+
16
+ export function reportReactHydrationMismatch(error: unknown): void {
17
+ console.error(
18
+ 'React hydration did not match. Compare src/entry-client.tsx, src/entry-server.tsx, and src/react-app.tsx; check vite.client.config.ts, then run the generated build script again.',
19
+ error,
20
+ );
21
+ }
22
+
23
+ export function ReactAppDocument({
24
+ page,
25
+ route,
26
+ stylesheets,
27
+ }: ReactAppDocumentProps): ReactElement {
28
+ const initialSnapshot = createReactRouteSnapshot(route);
29
+
30
+ return (
31
+ <ReactClientRouterProvider initialSnapshot={initialSnapshot}>
32
+ <html data-route-sku={initialSnapshot.params['sku'] ?? ''} lang='en'>
33
+ <head>
34
+ <meta charSet='utf-8' />
35
+ <meta content='width=device-width, initial-scale=1' name='viewport' />
36
+ <link href='data:image/svg+xml,<svg xmlns="http://www.w3.org/2000/svg"/>' rel='icon' />
37
+ <title>Fluo React starter</title>
38
+ {stylesheets.map((href) => (
39
+ <link data-vite-style href={href} key={href} rel='stylesheet' />
40
+ ))}
41
+ </head>
42
+ <body>{page}</body>
43
+ </html>
44
+ </ReactClientRouterProvider>
45
+ );
46
+ }
@@ -0,0 +1,25 @@
1
+ :root {
2
+ color: #172033;
3
+ font-family: system-ui, sans-serif;
4
+ }
5
+
6
+ body {
7
+ margin: 0;
8
+ }
9
+
10
+ main {
11
+ margin: 0 auto;
12
+ max-width: 48rem;
13
+ padding: 4rem 1.5rem;
14
+ }
15
+
16
+ nav {
17
+ display: grid;
18
+ gap: 0.75rem;
19
+ margin-top: 2rem;
20
+ }
21
+
22
+ button,
23
+ a {
24
+ font: inherit;
25
+ }
@@ -0,0 +1 @@
1
+ declare module '*.css';
@@ -0,0 +1,54 @@
1
+ import { expect, test } from '@playwright/test';
2
+
3
+ test('hydrates production HTML and preserves HTTP-first navigation', async ({ page }) => {
4
+ const browserDiagnostics: string[] = [];
5
+ const assetResponses = new Map<string, number>();
6
+
7
+ page.on('console', (message) => {
8
+ if (message.type() === 'error' || message.type() === 'warning') {
9
+ browserDiagnostics.push(`${message.type()}: ${message.text()}`);
10
+ }
11
+ });
12
+ page.on('pageerror', (error) => browserDiagnostics.push(`pageerror: ${error.message}`));
13
+ page.on('response', (response) => {
14
+ const pathname = new URL(response.url()).pathname;
15
+ if (pathname.startsWith('/assets/')) {
16
+ assetResponses.set(pathname, response.status());
17
+ }
18
+ });
19
+
20
+ const response = await page.goto('/products/sku-42?preview=true', { waitUntil: 'load' });
21
+ if (response === null) {
22
+ throw new TypeError('The production page did not return a navigation response.');
23
+ }
24
+
25
+ const bootstrapPaths = await page.locator('script[type="module"][src]').evaluateAll((scripts) =>
26
+ scripts.map((script) => new URL(script.getAttribute('src') ?? '', document.baseURI).pathname),
27
+ );
28
+ const stylesheetPaths = await page.locator('link[data-vite-style][href]').evaluateAll((links) =>
29
+ links.map((link) => new URL(link.getAttribute('href') ?? '', document.baseURI).pathname),
30
+ );
31
+
32
+ expect(response.status()).toBe(200);
33
+ expect(response.headers()['content-type']).toContain('text/html');
34
+ expect(bootstrapPaths).toContain('/assets/entry-client.js');
35
+ expect(stylesheetPaths).toHaveLength(1);
36
+ for (const pathname of [...bootstrapPaths, ...stylesheetPaths]) {
37
+ expect(assetResponses.get(pathname)).toBe(200);
38
+ }
39
+
40
+ await expect(page.getByRole('heading', { name: 'Catalog item sku-42' })).toBeVisible();
41
+ await page.getByRole('button', { name: 'Count: 0' }).click();
42
+ await expect(page.getByRole('button', { name: 'Count: 1' })).toBeVisible();
43
+
44
+ const link = page.getByRole('link', { name: 'Open sku-84' });
45
+ await expect(link).toHaveAttribute('href', '/products/sku-84?preview=false');
46
+ await link.click();
47
+ await expect(page).toHaveURL(/\/products\/sku-84\?preview=false$/u);
48
+ await expect(page.getByRole('heading', { name: 'Catalog item sku-84' })).toBeVisible();
49
+
50
+ await page.getByRole('button', { name: 'Push sku-126' }).click();
51
+ await expect(page).toHaveURL(/\/products\/sku-126\?preview=true$/u);
52
+ await expect(page.getByRole('heading', { name: 'Catalog item sku-126' })).toBeVisible();
53
+ expect(browserDiagnostics).toEqual([]);
54
+ });
@@ -0,0 +1,16 @@
1
+ {
2
+ "compilerOptions": {
3
+ "target": "ES2022",
4
+ "module": "ESNext",
5
+ "moduleResolution": "Bundler",
6
+ "strict": true,
7
+ "noEmit": true,
8
+ "skipLibCheck": true,
9
+ "esModuleInterop": true,
10
+ "forceConsistentCasingInFileNames": true,
11
+ "jsx": "react-jsx",
12
+ "resolveJsonModule": true,
13
+ "types": ["node"]
14
+ },
15
+ "include": ["src/**/*.ts", "src/**/*.tsx", "tests/**/*.ts", "*.config.ts"]
16
+ }
@@ -0,0 +1,24 @@
1
+ import { fileURLToPath } from 'node:url';
2
+
3
+ import { defineConfig } from 'vite';
4
+
5
+ export default defineConfig({
6
+ base: '/assets/',
7
+ build: {
8
+ emptyOutDir: true,
9
+ manifest: true,
10
+ outDir: 'dist/client',
11
+ rolldownOptions: {
12
+ input: {
13
+ 'entry-client': fileURLToPath(new URL('./src/entry-client.tsx', import.meta.url)),
14
+ 'entry-server': fileURLToPath(new URL('./src/entry-server.tsx', import.meta.url)),
15
+ },
16
+ output: {
17
+ assetFileNames: '[name]-[hash][extname]',
18
+ chunkFileNames: '[name]-[hash].js',
19
+ entryFileNames: '[name].js',
20
+ },
21
+ },
22
+ target: 'es2022',
23
+ },
24
+ });
@@ -0,0 +1,17 @@
1
+ import { fluoDecoratorsPlugin } from '@fluojs/vite';
2
+ import { defineConfig } from 'vite';
3
+
4
+ export default defineConfig({
5
+ build: {
6
+ emptyOutDir: false,
7
+ outDir: 'dist/server',
8
+ rolldownOptions: {
9
+ output: {
10
+ entryFileNames: 'main.js',
11
+ },
12
+ },
13
+ ssr: 'src/main.ts',
14
+ target: 'node24',
15
+ },
16
+ plugins: [fluoDecoratorsPlugin()],
17
+ });
@@ -0,0 +1,10 @@
1
+ import { fluoBabelDecoratorsPlugin } from '@fluojs/testing/vitest';
2
+ import { defineConfig } from 'vitest/config';
3
+
4
+ export default defineConfig({
5
+ plugins: [fluoBabelDecoratorsPlugin()],
6
+ test: {
7
+ environment: 'node',
8
+ include: ['src/**/*.test.ts', 'src/**/*.test.tsx'],
9
+ },
10
+ });
@@ -4,6 +4,8 @@ export type PackageManager = 'bun' | 'npm' | 'pnpm' | 'yarn';
4
4
  export type DependencySource = 'local' | 'published';
5
5
  /** Supported starter shapes for `fluo new`. */
6
6
  export type BootstrapShape = 'application' | 'microservice' | 'mixed';
7
+ /** Named starter variants exposed by `fluo new`. */
8
+ export type BootstrapStarter = 'react-vite-ssr' | 'standard';
7
9
  /** Supported runtime families for the current starter matrix. */
8
10
  export type BootstrapRuntime = 'bun' | 'cloudflare-workers' | 'deno' | 'node';
9
11
  /** Supported platform adapters for the current starter matrix. */
@@ -36,6 +38,7 @@ export interface BootstrapOptions extends BootstrapSchema {
36
38
  projectName: string;
37
39
  repoRoot?: string;
38
40
  skipInstall?: boolean;
41
+ starter?: BootstrapStarter;
39
42
  targetDirectory: string;
40
43
  }
41
44
  /** Prompt descriptor for bootstrap answer collection. */
@@ -49,6 +52,7 @@ export interface BootstrapAnswers extends BootstrapSchema {
49
52
  installDependencies: boolean;
50
53
  packageManager: PackageManager;
51
54
  projectName: string;
55
+ starter: BootstrapStarter;
52
56
  targetDirectory: string;
53
57
  }
54
58
  /** Programmatic overrides for `runNewCommand(...)`. */
@@ -1 +1 @@
1
- {"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../../src/new/types.ts"],"names":[],"mappings":"AAAA,yDAAyD;AACzD,MAAM,MAAM,cAAc,GAAG,KAAK,GAAG,KAAK,GAAG,MAAM,GAAG,MAAM,CAAC;AAC7D,yDAAyD;AACzD,MAAM,MAAM,gBAAgB,GAAG,OAAO,GAAG,WAAW,CAAC;AACrD,+CAA+C;AAC/C,MAAM,MAAM,cAAc,GAAG,aAAa,GAAG,cAAc,GAAG,OAAO,CAAC;AACtE,iEAAiE;AACjE,MAAM,MAAM,gBAAgB,GAAG,KAAK,GAAG,oBAAoB,GAAG,MAAM,GAAG,MAAM,CAAC;AAC9E,kEAAkE;AAClE,MAAM,MAAM,iBAAiB,GAAG,KAAK,GAAG,oBAAoB,GAAG,MAAM,GAAG,SAAS,GAAG,SAAS,GAAG,QAAQ,GAAG,MAAM,CAAC;AAClH,mEAAmE;AACnE,MAAM,MAAM,kBAAkB,GAAG,MAAM,GAAG,MAAM,GAAG,OAAO,GAAG,MAAM,GAAG,MAAM,GAAG,UAAU,GAAG,eAAe,GAAG,KAAK,CAAC;AACpH,gEAAgE;AAChE,MAAM,MAAM,sBAAsB,GAAG,UAAU,CAAC;AAEhD,0DAA0D;AAC1D,MAAM,WAAW,iBAAiB;IAChC,QAAQ,EAAE,OAAO,CAAC;IAClB,IAAI,EAAE,gBAAgB,CAAC;CACxB;AAED,mEAAmE;AACnE,MAAM,WAAW,eAAe;IAC9B,QAAQ,EAAE,iBAAiB,CAAC;IAC5B,OAAO,EAAE,gBAAgB,CAAC;IAC1B,KAAK,EAAE,cAAc,CAAC;IACtB,OAAO,EAAE,sBAAsB,CAAC;IAChC,QAAQ,EAAE,iBAAiB,CAAC;IAC5B,SAAS,EAAE,kBAAkB,CAAC;CAC/B;AAED,2EAA2E;AAC3E,MAAM,WAAW,gBAAiB,SAAQ,eAAe;IACvD,gBAAgB,CAAC,EAAE,gBAAgB,CAAC;IACpC,KAAK,CAAC,EAAE,OAAO,CAAC;IAChB,aAAa,CAAC,EAAE,OAAO,CAAC;IACxB,mBAAmB,CAAC,EAAE,OAAO,CAAC;IAC9B,cAAc,EAAE,cAAc,CAAC;IAC/B,WAAW,EAAE,MAAM,CAAC;IACpB,QAAQ,CAAC,EAAE,MAAM,CAAC;IAClB,WAAW,CAAC,EAAE,OAAO,CAAC;IACtB,eAAe,EAAE,MAAM,CAAC;CACzB;AAED,yDAAyD;AACzD,MAAM,WAAW,eAAe;IAC9B,GAAG,EAAE,MAAM,gBAAgB,CAAC;IAC5B,KAAK,EAAE,MAAM,CAAC;CACf;AAED,mFAAmF;AACnF,MAAM,WAAW,gBAAiB,SAAQ,eAAe;IACvD,aAAa,EAAE,OAAO,CAAC;IACvB,mBAAmB,EAAE,OAAO,CAAC;IAC7B,cAAc,EAAE,cAAc,CAAC;IAC/B,WAAW,EAAE,MAAM,CAAC;IACpB,eAAe,EAAE,MAAM,CAAC;CACzB;AAED,uDAAuD;AACvD,MAAM,WAAW,iBAAiB;IAChC,KAAK,CAAC,EAAE,OAAO,CAAC;IAChB,aAAa,CAAC,EAAE,OAAO,CAAC;IACxB,mBAAmB,CAAC,EAAE,OAAO,CAAC;IAC9B,WAAW,CAAC,EAAE,OAAO,CAAC;CACvB"}
1
+ {"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../../src/new/types.ts"],"names":[],"mappings":"AAAA,yDAAyD;AACzD,MAAM,MAAM,cAAc,GAAG,KAAK,GAAG,KAAK,GAAG,MAAM,GAAG,MAAM,CAAC;AAC7D,yDAAyD;AACzD,MAAM,MAAM,gBAAgB,GAAG,OAAO,GAAG,WAAW,CAAC;AACrD,+CAA+C;AAC/C,MAAM,MAAM,cAAc,GAAG,aAAa,GAAG,cAAc,GAAG,OAAO,CAAC;AACtE,oDAAoD;AACpD,MAAM,MAAM,gBAAgB,GAAG,gBAAgB,GAAG,UAAU,CAAC;AAC7D,iEAAiE;AACjE,MAAM,MAAM,gBAAgB,GAAG,KAAK,GAAG,oBAAoB,GAAG,MAAM,GAAG,MAAM,CAAC;AAC9E,kEAAkE;AAClE,MAAM,MAAM,iBAAiB,GAAG,KAAK,GAAG,oBAAoB,GAAG,MAAM,GAAG,SAAS,GAAG,SAAS,GAAG,QAAQ,GAAG,MAAM,CAAC;AAClH,mEAAmE;AACnE,MAAM,MAAM,kBAAkB,GAAG,MAAM,GAAG,MAAM,GAAG,OAAO,GAAG,MAAM,GAAG,MAAM,GAAG,UAAU,GAAG,eAAe,GAAG,KAAK,CAAC;AACpH,gEAAgE;AAChE,MAAM,MAAM,sBAAsB,GAAG,UAAU,CAAC;AAEhD,0DAA0D;AAC1D,MAAM,WAAW,iBAAiB;IAChC,QAAQ,EAAE,OAAO,CAAC;IAClB,IAAI,EAAE,gBAAgB,CAAC;CACxB;AAED,mEAAmE;AACnE,MAAM,WAAW,eAAe;IAC9B,QAAQ,EAAE,iBAAiB,CAAC;IAC5B,OAAO,EAAE,gBAAgB,CAAC;IAC1B,KAAK,EAAE,cAAc,CAAC;IACtB,OAAO,EAAE,sBAAsB,CAAC;IAChC,QAAQ,EAAE,iBAAiB,CAAC;IAC5B,SAAS,EAAE,kBAAkB,CAAC;CAC/B;AAED,2EAA2E;AAC3E,MAAM,WAAW,gBAAiB,SAAQ,eAAe;IACvD,gBAAgB,CAAC,EAAE,gBAAgB,CAAC;IACpC,KAAK,CAAC,EAAE,OAAO,CAAC;IAChB,aAAa,CAAC,EAAE,OAAO,CAAC;IACxB,mBAAmB,CAAC,EAAE,OAAO,CAAC;IAC9B,cAAc,EAAE,cAAc,CAAC;IAC/B,WAAW,EAAE,MAAM,CAAC;IACpB,QAAQ,CAAC,EAAE,MAAM,CAAC;IAClB,WAAW,CAAC,EAAE,OAAO,CAAC;IACtB,OAAO,CAAC,EAAE,gBAAgB,CAAC;IAC3B,eAAe,EAAE,MAAM,CAAC;CACzB;AAED,yDAAyD;AACzD,MAAM,WAAW,eAAe;IAC9B,GAAG,EAAE,MAAM,gBAAgB,CAAC;IAC5B,KAAK,EAAE,MAAM,CAAC;CACf;AAED,mFAAmF;AACnF,MAAM,WAAW,gBAAiB,SAAQ,eAAe;IACvD,aAAa,EAAE,OAAO,CAAC;IACvB,mBAAmB,EAAE,OAAO,CAAC;IAC7B,cAAc,EAAE,cAAc,CAAC;IAC/B,WAAW,EAAE,MAAM,CAAC;IACpB,OAAO,EAAE,gBAAgB,CAAC;IAC1B,eAAe,EAAE,MAAM,CAAC;CACzB;AAED,uDAAuD;AACvD,MAAM,WAAW,iBAAiB;IAChC,KAAK,CAAC,EAAE,OAAO,CAAC;IAChB,aAAa,CAAC,EAAE,OAAO,CAAC;IACxB,mBAAmB,CAAC,EAAE,OAAO,CAAC;IAC9B,WAAW,CAAC,EAAE,OAAO,CAAC;CACvB"}
@@ -0,0 +1,14 @@
1
+ import type { TypegenCommandRuntimeOptions } from './commands/typegen.js';
2
+ import { TYPEGEN_EXIT_CODES } from './typegen-contract.js';
3
+ import { typegenUsage } from './usage.js';
4
+ export type { TypegenCommandRuntimeOptions } from './commands/typegen.js';
5
+ export { TYPEGEN_EXIT_CODES, typegenUsage };
6
+ /**
7
+ * Runs React page generation, checking, or watch mode through a lazy implementation import.
8
+ *
9
+ * @param argv Command arguments after `typegen`.
10
+ * @param runtime Runtime overrides for programmatic callers.
11
+ * @returns Process-style exit code from the typegen command.
12
+ */
13
+ export declare function runTypegenCommand(argv: readonly string[], runtime?: TypegenCommandRuntimeOptions): Promise<number>;
14
+ //# sourceMappingURL=public-typegen.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"public-typegen.d.ts","sourceRoot":"","sources":["../src/public-typegen.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,4BAA4B,EAAE,MAAM,uBAAuB,CAAC;AAC1E,OAAO,EAAE,kBAAkB,EAAE,MAAM,uBAAuB,CAAC;AAC3D,OAAO,EAAE,YAAY,EAAE,MAAM,YAAY,CAAC;AAE1C,YAAY,EAAE,4BAA4B,EAAE,MAAM,uBAAuB,CAAC;AAC1E,OAAO,EAAE,kBAAkB,EAAE,YAAY,EAAE,CAAC;AAE5C;;;;;;GAMG;AACH,wBAAsB,iBAAiB,CACrC,IAAI,EAAE,SAAS,MAAM,EAAE,EACvB,OAAO,GAAE,4BAAiC,GACzC,OAAO,CAAC,MAAM,CAAC,CAGjB"}
@@ -0,0 +1,17 @@
1
+ import { TYPEGEN_EXIT_CODES } from './typegen-contract.js';
2
+ import { typegenUsage } from './usage.js';
3
+ export { TYPEGEN_EXIT_CODES, typegenUsage };
4
+
5
+ /**
6
+ * Runs React page generation, checking, or watch mode through a lazy implementation import.
7
+ *
8
+ * @param argv Command arguments after `typegen`.
9
+ * @param runtime Runtime overrides for programmatic callers.
10
+ * @returns Process-style exit code from the typegen command.
11
+ */
12
+ export async function runTypegenCommand(argv, runtime = {}) {
13
+ const {
14
+ runTypegenCommand: runTypegenCommandImplementation
15
+ } = await import('./commands/typegen.js');
16
+ return runTypegenCommandImplementation(argv, runtime);
17
+ }
package/dist/run-cli.d.ts CHANGED
@@ -1,6 +1,7 @@
1
1
  import type { CliRuntimeOptions } from './cli.js';
2
2
  import type { InspectCommandRuntimeOptions } from './commands/inspect.js';
3
3
  import type { NewCommandRuntimeOptions } from './commands/new.js';
4
+ import type { TypegenCommandRuntimeOptions } from './commands/typegen.js';
4
5
  export type { CliRuntimeOptions } from './cli.js';
5
6
  /**
6
7
  * Runs the top-level CLI command dispatcher through a lazy implementation import.
@@ -12,5 +13,5 @@ export type { CliRuntimeOptions } from './cli.js';
12
13
  * @param runtime Optional runtime overrides shared by the top-level dispatcher and delegated commands.
13
14
  * @returns `0` when the command completes successfully, otherwise the delegated command exit code.
14
15
  */
15
- export declare function runCli(argv?: string[], runtime?: CliRuntimeOptions & NewCommandRuntimeOptions & InspectCommandRuntimeOptions): Promise<number>;
16
+ export declare function runCli(argv?: string[], runtime?: CliRuntimeOptions & NewCommandRuntimeOptions & InspectCommandRuntimeOptions & TypegenCommandRuntimeOptions): Promise<number>;
16
17
  //# sourceMappingURL=run-cli.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"run-cli.d.ts","sourceRoot":"","sources":["../src/run-cli.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,iBAAiB,EAAE,MAAM,UAAU,CAAC;AAClD,OAAO,KAAK,EAAE,4BAA4B,EAAE,MAAM,uBAAuB,CAAC;AAC1E,OAAO,KAAK,EAAE,wBAAwB,EAAE,MAAM,mBAAmB,CAAC;AAElE,YAAY,EAAE,iBAAiB,EAAE,MAAM,UAAU,CAAC;AAElD;;;;;;;;;GASG;AACH,wBAAsB,MAAM,CAC1B,IAAI,CAAC,EAAE,MAAM,EAAE,EACf,OAAO,GAAE,iBAAiB,GAAG,wBAAwB,GAAG,4BAAiC,GACxF,OAAO,CAAC,MAAM,CAAC,CAGjB"}
1
+ {"version":3,"file":"run-cli.d.ts","sourceRoot":"","sources":["../src/run-cli.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,iBAAiB,EAAE,MAAM,UAAU,CAAC;AAClD,OAAO,KAAK,EAAE,4BAA4B,EAAE,MAAM,uBAAuB,CAAC;AAC1E,OAAO,KAAK,EAAE,wBAAwB,EAAE,MAAM,mBAAmB,CAAC;AAClE,OAAO,KAAK,EAAE,4BAA4B,EAAE,MAAM,uBAAuB,CAAC;AAE1E,YAAY,EAAE,iBAAiB,EAAE,MAAM,UAAU,CAAC;AAElD;;;;;;;;;GASG;AACH,wBAAsB,MAAM,CAC1B,IAAI,CAAC,EAAE,MAAM,EAAE,EACf,OAAO,GAAE,iBAAiB,GAAG,wBAAwB,GAAG,4BAA4B,GAAG,4BAAiC,GACvH,OAAO,CAAC,MAAM,CAAC,CAGjB"}
@@ -1 +1 @@
1
- {"version":3,"file":"sidecar.d.ts","sourceRoot":"","sources":["../../src/studio/sidecar.ts"],"names":[],"mappings":"AAOA;;GAEG;AACH,MAAM,MAAM,oBAAoB,GAAG,KAAK,GAAG,MAAM,GAAG,MAAM,GAAG,SAAS,CAAC;AAEvE;;GAEG;AACH,MAAM,WAAW,oBAAoB;IACnC,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,WAAW,CAAC,EAAE,MAAM,CAAC;IACrB,IAAI,CAAC,EAAE,MAAM,CAAC;IACd,IAAI,CAAC,EAAE,MAAM,CAAC;IACd,OAAO,CAAC,EAAE,oBAAoB,CAAC;CAChC;AAED;;GAEG;AACH,MAAM,WAAW,aAAa;IAC5B,QAAQ,CAAC,KAAK,EAAE,MAAM,CAAC;IACvB,QAAQ,CAAC,KAAK,EAAE,MAAM,CAAC;IACvB,QAAQ,CAAC,GAAG,EAAE,MAAM,CAAC,UAAU,CAAC;IAChC,QAAQ,CAAC,IAAI,EAAE,MAAM,CAAC;IACtB,QAAQ,CAAC,IAAI,EAAE,MAAM,CAAC;IACtB,QAAQ,CAAC,KAAK,EAAE,MAAM,CAAC;IACvB,QAAQ,CAAC,GAAG,EAAE,MAAM,CAAC;IACrB,KAAK,IAAI,OAAO,CAAC,IAAI,CAAC,CAAC;CACxB;AA4UD;;;;;GAKG;AACH,wBAAsB,kBAAkB,CAAC,OAAO,GAAE,oBAAyB,GAAG,OAAO,CAAC,aAAa,CAAC,CAyLnG"}
1
+ {"version":3,"file":"sidecar.d.ts","sourceRoot":"","sources":["../../src/studio/sidecar.ts"],"names":[],"mappings":"AAOA;;GAEG;AACH,MAAM,MAAM,oBAAoB,GAAG,KAAK,GAAG,MAAM,GAAG,MAAM,GAAG,SAAS,CAAC;AAEvE;;GAEG;AACH,MAAM,WAAW,oBAAoB;IACnC,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,WAAW,CAAC,EAAE,MAAM,CAAC;IACrB,IAAI,CAAC,EAAE,MAAM,CAAC;IACd,IAAI,CAAC,EAAE,MAAM,CAAC;IACd,OAAO,CAAC,EAAE,oBAAoB,CAAC;CAChC;AAED;;GAEG;AACH,MAAM,WAAW,aAAa;IAC5B,QAAQ,CAAC,KAAK,EAAE,MAAM,CAAC;IACvB,QAAQ,CAAC,KAAK,EAAE,MAAM,CAAC;IACvB,QAAQ,CAAC,GAAG,EAAE,MAAM,CAAC,UAAU,CAAC;IAChC,QAAQ,CAAC,IAAI,EAAE,MAAM,CAAC;IACtB,QAAQ,CAAC,IAAI,EAAE,MAAM,CAAC;IACtB,QAAQ,CAAC,KAAK,EAAE,MAAM,CAAC;IACvB,QAAQ,CAAC,GAAG,EAAE,MAAM,CAAC;IACrB,KAAK,IAAI,OAAO,CAAC,IAAI,CAAC,CAAC;CACxB;AAkVD;;;;;GAKG;AACH,wBAAsB,kBAAkB,CAAC,OAAO,GAAE,oBAAyB,GAAG,OAAO,CAAC,aAAa,CAAC,CAwMnG"}
@@ -296,6 +296,8 @@ export async function startStudioSidecar(options = {}) {
296
296
  const token = createToken();
297
297
  const events = [];
298
298
  const clients = new Set();
299
+ const ingestionRequests = new Set();
300
+ let acceptingIngestion = true;
299
301
  let sequence = 0;
300
302
  const startedAt = performance.now();
301
303
  const publish = incoming => {
@@ -385,6 +387,11 @@ export async function startStudioSidecar(options = {}) {
385
387
  return;
386
388
  }
387
389
  if (request.method === 'POST' && requestUrl.pathname === '/api/runtime/events') {
390
+ if (!acceptingIngestion) {
391
+ request.socket.destroy();
392
+ return;
393
+ }
394
+ ingestionRequests.add(request);
388
395
  try {
389
396
  const body = await readBody(request);
390
397
  const parsed = body ? JSON.parse(body) : {};
@@ -411,6 +418,8 @@ export async function startStudioSidecar(options = {}) {
411
418
  writeJson(response, 400, {
412
419
  error: error instanceof Error ? error.message : String(error)
413
420
  });
421
+ } finally {
422
+ ingestionRequests.delete(request);
414
423
  }
415
424
  return;
416
425
  }
@@ -427,7 +436,11 @@ export async function startStudioSidecar(options = {}) {
427
436
  });
428
437
  const address = server.address();
429
438
  if (!address || typeof address === 'string') {
430
- await closeServer(server, clients, undefined);
439
+ await closeServer(server, {
440
+ clients,
441
+ heartbeat: undefined,
442
+ ingestionRequests
443
+ });
431
444
  throw new Error('Failed to resolve Studio sidecar address.');
432
445
  }
433
446
  const url = `http://${host}:${String(address.port)}`;
@@ -444,6 +457,7 @@ export async function startStudioSidecar(options = {}) {
444
457
  });
445
458
  }, options.heartbeatMs ?? DEFAULT_HEARTBEAT_MS);
446
459
  heartbeat?.unref();
460
+ let closePromise;
447
461
  return {
448
462
  appId,
449
463
  get epoch() {
@@ -462,20 +476,28 @@ export async function startStudioSidecar(options = {}) {
462
476
  port: address.port,
463
477
  token,
464
478
  url,
465
- async close() {
466
- await closeServer(server, clients, heartbeat);
479
+ close() {
480
+ if (!closePromise) {
481
+ acceptingIngestion = false;
482
+ closePromise = closeServer(server, {
483
+ clients,
484
+ heartbeat,
485
+ ingestionRequests
486
+ });
487
+ }
488
+ return closePromise;
467
489
  }
468
490
  };
469
491
  }
470
- async function closeServer(server, clients, heartbeat) {
471
- if (heartbeat) {
472
- clearInterval(heartbeat);
492
+ async function closeServer(server, resources) {
493
+ if (resources.heartbeat) {
494
+ clearInterval(resources.heartbeat);
473
495
  }
474
- for (const client of clients) {
496
+ for (const client of resources.clients) {
475
497
  client.response.end();
476
498
  }
477
- clients.clear();
478
- await new Promise((resolve, reject) => {
499
+ resources.clients.clear();
500
+ const serverClosed = new Promise((resolve, reject) => {
479
501
  server.close(error => {
480
502
  if (error) {
481
503
  reject(error);
@@ -484,4 +506,8 @@ async function closeServer(server, clients, heartbeat) {
484
506
  resolve();
485
507
  });
486
508
  });
509
+ for (const request of resources.ingestionRequests) {
510
+ request.socket.destroy();
511
+ }
512
+ await serverClosed;
487
513
  }
@@ -6,10 +6,11 @@ export declare const MIGRATION_TRANSFORMS: readonly ["imports", "injectable", "s
6
6
  * Defines the migration transform kind type.
7
7
  */
8
8
  export type MigrationTransformKind = typeof MIGRATION_TRANSFORMS[number];
9
+ type BootstrapPlatform = 'express';
9
10
  /**
10
11
  * Provides the warning categories value.
11
12
  */
12
- export declare const WARNING_CATEGORIES: readonly ["inject-token", "request-dto", "pipe-converter", "bootstrap-unsupported", "testing-unsupported", "import-unsupported", "injectable-options", "tsconfig-parse", "bootstrap-port"];
13
+ export declare const WARNING_CATEGORIES: readonly ["inject-token", "inject-token-unsupported", "request-dto", "pipe-converter", "bootstrap-unsupported", "testing-unsupported", "import-unsupported", "injectable-options", "tsconfig-parse", "bootstrap-port"];
13
14
  /**
14
15
  * Defines the warning category type.
15
16
  */
@@ -61,6 +62,7 @@ export type MigrationReport = {
61
62
  */
62
63
  export type RunNestJsMigrationOptions = {
63
64
  apply: boolean;
65
+ bootstrapPlatform?: BootstrapPlatform;
64
66
  enabledTransforms: ReadonlySet<MigrationTransformKind>;
65
67
  targetPath: string;
66
68
  };
@@ -78,4 +80,5 @@ export declare function runNestJsMigration(options: RunNestJsMigrationOptions):
78
80
  * @returns The render transform list result.
79
81
  */
80
82
  export declare function renderTransformList(kinds: readonly MigrationTransformKind[]): string;
83
+ export {};
81
84
  //# sourceMappingURL=nestjs-migrate.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"nestjs-migrate.d.ts","sourceRoot":"","sources":["../../src/transforms/nestjs-migrate.ts"],"names":[],"mappings":"AAKA;;GAEG;AACH,eAAO,MAAM,oBAAoB,iFAAkF,CAAC;AAEpH;;GAEG;AACH,MAAM,MAAM,sBAAsB,GAAG,OAAO,oBAAoB,CAAC,MAAM,CAAC,CAAC;AAOzE;;GAEG;AACH,eAAO,MAAM,kBAAkB,4LAUrB,CAAC;AAEX;;GAEG;AACH,MAAM,MAAM,eAAe,GAAG,OAAO,kBAAkB,CAAC,MAAM,CAAC,CAAC;AAEhE;;GAEG;AACH,MAAM,MAAM,gBAAgB,GAAG;IAC7B,QAAQ,EAAE,eAAe,CAAC;IAC1B,QAAQ,EAAE,MAAM,CAAC;IACjB,IAAI,EAAE,MAAM,CAAC;IACb,OAAO,EAAE,MAAM,CAAC;CACjB,CAAC;AAcF;;;;;GAKG;AACH,wBAAgB,uBAAuB,CAAC,QAAQ,EAAE,eAAe,GAAG,MAAM,CAEzE;AAED;;;;;GAKG;AACH,wBAAgB,uBAAuB,CAAC,QAAQ,EAAE,gBAAgB,EAAE,GAAG,GAAG,CAAC,eAAe,EAAE,gBAAgB,EAAE,CAAC,CAS9G;AAED;;GAEG;AACH,MAAM,MAAM,mBAAmB,GAAG;IAChC,iBAAiB,EAAE,sBAAsB,EAAE,CAAC;IAC5C,OAAO,EAAE,OAAO,CAAC;IACjB,QAAQ,EAAE,MAAM,CAAC;IACjB,QAAQ,EAAE,gBAAgB,EAAE,CAAC;CAC9B,CAAC;AAEF;;GAEG;AACH,MAAM,MAAM,eAAe,GAAG;IAC5B,KAAK,EAAE,OAAO,CAAC;IACf,YAAY,EAAE,MAAM,CAAC;IACrB,YAAY,EAAE,MAAM,CAAC;IACrB,YAAY,EAAE,MAAM,CAAC;IACrB,WAAW,EAAE,mBAAmB,EAAE,CAAC;CACpC,CAAC;AAEF;;GAEG;AACH,MAAM,MAAM,yBAAyB,GAAG;IACtC,KAAK,EAAE,OAAO,CAAC;IACf,iBAAiB,EAAE,WAAW,CAAC,sBAAsB,CAAC,CAAC;IACvD,UAAU,EAAE,MAAM,CAAC;CACpB,CAAC;AA6kCF;;;;;GAKG;AACH,wBAAgB,kBAAkB,CAAC,OAAO,EAAE,yBAAyB,GAAG,eAAe,CAqDtF;AAED;;;;;GAKG;AACH,wBAAgB,mBAAmB,CAAC,KAAK,EAAE,SAAS,sBAAsB,EAAE,GAAG,MAAM,CAEpF"}
1
+ {"version":3,"file":"nestjs-migrate.d.ts","sourceRoot":"","sources":["../../src/transforms/nestjs-migrate.ts"],"names":[],"mappings":"AAKA;;GAEG;AACH,eAAO,MAAM,oBAAoB,iFAAkF,CAAC;AAEpH;;GAEG;AACH,MAAM,MAAM,sBAAsB,GAAG,OAAO,oBAAoB,CAAC,MAAM,CAAC,CAAC;AAEzE,KAAK,iBAAiB,GAAG,SAAS,CAAC;AAQnC;;GAEG;AACH,eAAO,MAAM,kBAAkB,wNAWrB,CAAC;AAEX;;GAEG;AACH,MAAM,MAAM,eAAe,GAAG,OAAO,kBAAkB,CAAC,MAAM,CAAC,CAAC;AAEhE;;GAEG;AACH,MAAM,MAAM,gBAAgB,GAAG;IAC7B,QAAQ,EAAE,eAAe,CAAC;IAC1B,QAAQ,EAAE,MAAM,CAAC;IACjB,IAAI,EAAE,MAAM,CAAC;IACb,OAAO,EAAE,MAAM,CAAC;CACjB,CAAC;AAeF;;;;;GAKG;AACH,wBAAgB,uBAAuB,CAAC,QAAQ,EAAE,eAAe,GAAG,MAAM,CAEzE;AAED;;;;;GAKG;AACH,wBAAgB,uBAAuB,CAAC,QAAQ,EAAE,gBAAgB,EAAE,GAAG,GAAG,CAAC,eAAe,EAAE,gBAAgB,EAAE,CAAC,CAS9G;AAED;;GAEG;AACH,MAAM,MAAM,mBAAmB,GAAG;IAChC,iBAAiB,EAAE,sBAAsB,EAAE,CAAC;IAC5C,OAAO,EAAE,OAAO,CAAC;IACjB,QAAQ,EAAE,MAAM,CAAC;IACjB,QAAQ,EAAE,gBAAgB,EAAE,CAAC;CAC9B,CAAC;AAEF;;GAEG;AACH,MAAM,MAAM,eAAe,GAAG;IAC5B,KAAK,EAAE,OAAO,CAAC;IACf,YAAY,EAAE,MAAM,CAAC;IACrB,YAAY,EAAE,MAAM,CAAC;IACrB,YAAY,EAAE,MAAM,CAAC;IACrB,WAAW,EAAE,mBAAmB,EAAE,CAAC;CACpC,CAAC;AAEF;;GAEG;AACH,MAAM,MAAM,yBAAyB,GAAG;IACtC,KAAK,EAAE,OAAO,CAAC;IACf,iBAAiB,CAAC,EAAE,iBAAiB,CAAC;IACtC,iBAAiB,EAAE,WAAW,CAAC,sBAAsB,CAAC,CAAC;IACvD,UAAU,EAAE,MAAM,CAAC;CACpB,CAAC;AAs4DF;;;;;GAKG;AACH,wBAAgB,kBAAkB,CAAC,OAAO,EAAE,yBAAyB,GAAG,eAAe,CAqDtF;AAED;;;;;GAKG;AACH,wBAAgB,mBAAmB,CAAC,KAAK,EAAE,SAAS,sBAAsB,EAAE,GAAG,MAAM,CAEpF"}