@mantajs/adapter-nextjs 0.2.0-beta.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.
- package/dist/bootstrap.d.ts +11 -0
- package/dist/bootstrap.d.ts.map +1 -0
- package/dist/bootstrap.js +60 -0
- package/dist/bootstrap.js.map +1 -0
- package/dist/handler.d.ts +10 -0
- package/dist/handler.d.ts.map +1 -0
- package/dist/handler.js +22 -0
- package/dist/handler.js.map +1 -0
- package/dist/index.d.ts +3 -0
- package/dist/index.d.ts.map +1 -0
- package/dist/index.js +13 -0
- package/dist/index.js.map +1 -0
- package/dist/with-manta.d.ts +4 -0
- package/dist/with-manta.d.ts.map +1 -0
- package/dist/with-manta.js +42 -0
- package/dist/with-manta.js.map +1 -0
- package/package.json +34 -0
|
@@ -0,0 +1,11 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Get the Manta HTTP adapter. All route handlers registered at boot are reachable
|
|
3
|
+
* via `adapter.handleRequest(req)`.
|
|
4
|
+
*/
|
|
5
|
+
export declare function getMantaAdapter(): Promise<import("@mantajs/adapter-h3").H3Adapter>;
|
|
6
|
+
/**
|
|
7
|
+
* Get the fully initialised Manta app (services, query graph, event bus, etc.).
|
|
8
|
+
* Useful for React Server Components that want to bypass HTTP and call services directly.
|
|
9
|
+
*/
|
|
10
|
+
export declare function getMantaApp(): Promise<import("@mantajs/core").MantaApp<import("@mantajs/core").MantaAppModules, Record<string, (...args: unknown[]) => Promise<unknown>>, Record<string, (input: unknown) => Promise<unknown>>>>;
|
|
11
|
+
//# sourceMappingURL=bootstrap.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"bootstrap.d.ts","sourceRoot":"","sources":["../src/bootstrap.ts"],"names":[],"mappings":"AAsDA;;;GAGG;AACH,wBAAsB,eAAe,qDAGpC;AAED;;;GAGG;AACH,wBAAsB,WAAW,uMAGhC"}
|
|
@@ -0,0 +1,60 @@
|
|
|
1
|
+
// Lazy singleton bootstrap for Manta inside a Next.js process.
|
|
2
|
+
//
|
|
3
|
+
// Mirrors packages/host-nitro/templates/server/manta-bootstrap.ts, but:
|
|
4
|
+
// - runs in-process inside Next.js route handlers (no template copy to .manta/server)
|
|
5
|
+
// - skips jiti: loadConfig() from @mantajs/cli already handles TS config loading via native dynamic import()
|
|
6
|
+
// - honours MANTA_CWD for cases where Next runs handlers from a different working dir
|
|
7
|
+
// (e.g. .next/server/...) and filesystem scans would otherwise break
|
|
8
|
+
// - imports from @mantajs/cli SUBPATHS (/bootstrap, /config, /env) rather than the barrel,
|
|
9
|
+
// so webpack never traverses the CLI command files that pull in host-nitro → nitro → rollup → fsevents
|
|
10
|
+
//
|
|
11
|
+
// The bootstrap runs ONCE per Node process. All route handlers share the same app + adapter.
|
|
12
|
+
// This is the exact same pattern host-nitro uses in serverless mode.
|
|
13
|
+
let _bootstrapped = null;
|
|
14
|
+
async function bootstrap() {
|
|
15
|
+
const cwd = process.env.MANTA_CWD ?? process.cwd();
|
|
16
|
+
// Defer @mantajs/cli imports until first request so Next's module graph doesn't
|
|
17
|
+
// try to bundle CLI-only code into the client. We import specific subpaths
|
|
18
|
+
// to avoid the main barrel (which pulls in dev/build commands → host-nitro).
|
|
19
|
+
const [{ bootstrapApp }, { loadConfig }, { loadEnv }, jitiModule] = await Promise.all([
|
|
20
|
+
import('@mantajs/cli/bootstrap'),
|
|
21
|
+
import('@mantajs/cli/config'),
|
|
22
|
+
import('@mantajs/cli/env'),
|
|
23
|
+
import('jiti'),
|
|
24
|
+
]);
|
|
25
|
+
loadEnv(cwd);
|
|
26
|
+
// Next's webpack server compilation cannot runtime-load arbitrary .ts files
|
|
27
|
+
// (manta.config.ts, src/modules/**, etc.) — it only compiles files in its
|
|
28
|
+
// own module graph. We sidestep this by using jiti, which transpiles + caches
|
|
29
|
+
// TS on the fly. Both loadConfig and bootstrapApp accept a custom importer.
|
|
30
|
+
const createJiti = jitiModule.createJiti ?? jitiModule.default;
|
|
31
|
+
const jiti = createJiti(cwd, { interopDefault: true });
|
|
32
|
+
// biome-ignore lint/suspicious/noExplicitAny: jiti.import returns unknown module shape
|
|
33
|
+
const importFn = (path) => jiti.import(path);
|
|
34
|
+
const config = await loadConfig(cwd, { importFn });
|
|
35
|
+
const mode = process.env.NODE_ENV === 'production' ? 'prod' : 'dev';
|
|
36
|
+
return bootstrapApp({ config, cwd, mode, importFn });
|
|
37
|
+
}
|
|
38
|
+
function ensureBootstrap() {
|
|
39
|
+
if (!_bootstrapped) {
|
|
40
|
+
_bootstrapped = bootstrap();
|
|
41
|
+
}
|
|
42
|
+
return _bootstrapped;
|
|
43
|
+
}
|
|
44
|
+
/**
|
|
45
|
+
* Get the Manta HTTP adapter. All route handlers registered at boot are reachable
|
|
46
|
+
* via `adapter.handleRequest(req)`.
|
|
47
|
+
*/
|
|
48
|
+
export async function getMantaAdapter() {
|
|
49
|
+
const { adapter } = await ensureBootstrap();
|
|
50
|
+
return adapter;
|
|
51
|
+
}
|
|
52
|
+
/**
|
|
53
|
+
* Get the fully initialised Manta app (services, query graph, event bus, etc.).
|
|
54
|
+
* Useful for React Server Components that want to bypass HTTP and call services directly.
|
|
55
|
+
*/
|
|
56
|
+
export async function getMantaApp() {
|
|
57
|
+
const { app } = await ensureBootstrap();
|
|
58
|
+
return app;
|
|
59
|
+
}
|
|
60
|
+
//# sourceMappingURL=bootstrap.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"bootstrap.js","sourceRoot":"","sources":["../src/bootstrap.ts"],"names":[],"mappings":"AAAA,+DAA+D;AAC/D,EAAE;AACF,wEAAwE;AACxE,uFAAuF;AACvF,8GAA8G;AAC9G,uFAAuF;AACvF,wEAAwE;AACxE,4FAA4F;AAC5F,0GAA0G;AAC1G,EAAE;AACF,6FAA6F;AAC7F,qEAAqE;AAIrE,IAAI,aAAa,GAAoC,IAAI,CAAA;AAEzD,KAAK,UAAU,SAAS;IACtB,MAAM,GAAG,GAAG,OAAO,CAAC,GAAG,CAAC,SAAS,IAAI,OAAO,CAAC,GAAG,EAAE,CAAA;IAElD,gFAAgF;IAChF,2EAA2E;IAC3E,6EAA6E;IAC7E,MAAM,CAAC,EAAE,YAAY,EAAE,EAAE,EAAE,UAAU,EAAE,EAAE,EAAE,OAAO,EAAE,EAAE,UAAU,CAAC,GAAG,MAAM,OAAO,CAAC,GAAG,CAAC;QACpF,MAAM,CAAC,wBAAwB,CAAC;QAChC,MAAM,CAAC,qBAAqB,CAAC;QAC7B,MAAM,CAAC,kBAAkB,CAAC;QAC1B,MAAM,CAAC,MAAM,CAAC;KACf,CAAC,CAAA;IAEF,OAAO,CAAC,GAAG,CAAC,CAAA;IAEZ,4EAA4E;IAC5E,0EAA0E;IAC1E,8EAA8E;IAC9E,4EAA4E;IAC5E,MAAM,UAAU,GAAG,UAAU,CAAC,UAAU,IAAI,UAAU,CAAC,OAAO,CAAA;IAC9D,MAAM,IAAI,GAAG,UAAU,CAAC,GAAG,EAAE,EAAE,cAAc,EAAE,IAAI,EAAE,CAAC,CAAA;IACtD,uFAAuF;IACvF,MAAM,QAAQ,GAAG,CAAC,IAAY,EAAE,EAAE,CAAC,IAAI,CAAC,MAAM,CAAC,IAAI,CAAiB,CAAA;IAEpE,MAAM,MAAM,GAAG,MAAM,UAAU,CAAC,GAAG,EAAE,EAAE,QAAQ,EAAE,CAAC,CAAA;IAElD,MAAM,IAAI,GAAG,OAAO,CAAC,GAAG,CAAC,QAAQ,KAAK,YAAY,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,KAAK,CAAA;IACnE,OAAO,YAAY,CAAC,EAAE,MAAM,EAAE,GAAG,EAAE,IAAI,EAAE,QAAQ,EAAE,CAAC,CAAA;AACtD,CAAC;AAED,SAAS,eAAe;IACtB,IAAI,CAAC,aAAa,EAAE,CAAC;QACnB,aAAa,GAAG,SAAS,EAAE,CAAA;IAC7B,CAAC;IACD,OAAO,aAAa,CAAA;AACtB,CAAC;AAED;;;GAGG;AACH,MAAM,CAAC,KAAK,UAAU,eAAe;IACnC,MAAM,EAAE,OAAO,EAAE,GAAG,MAAM,eAAe,EAAE,CAAA;IAC3C,OAAO,OAAO,CAAA;AAChB,CAAC;AAED;;;GAGG;AACH,MAAM,CAAC,KAAK,UAAU,WAAW;IAC/B,MAAM,EAAE,GAAG,EAAE,GAAG,MAAM,eAAe,EAAE,CAAA;IACvC,OAAO,GAAG,CAAA;AACZ,CAAC"}
|
|
@@ -0,0 +1,10 @@
|
|
|
1
|
+
declare function handler(req: Request): Promise<Response>;
|
|
2
|
+
export declare const GET: typeof handler;
|
|
3
|
+
export declare const POST: typeof handler;
|
|
4
|
+
export declare const PUT: typeof handler;
|
|
5
|
+
export declare const DELETE: typeof handler;
|
|
6
|
+
export declare const PATCH: typeof handler;
|
|
7
|
+
export declare const OPTIONS: typeof handler;
|
|
8
|
+
export declare const HEAD: typeof handler;
|
|
9
|
+
export {};
|
|
10
|
+
//# sourceMappingURL=handler.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"handler.d.ts","sourceRoot":"","sources":["../src/handler.ts"],"names":[],"mappings":"AAYA,iBAAe,OAAO,CAAC,GAAG,EAAE,OAAO,GAAG,OAAO,CAAC,QAAQ,CAAC,CAGtD;AAED,eAAO,MAAM,GAAG,gBAAU,CAAA;AAC1B,eAAO,MAAM,IAAI,gBAAU,CAAA;AAC3B,eAAO,MAAM,GAAG,gBAAU,CAAA;AAC1B,eAAO,MAAM,MAAM,gBAAU,CAAA;AAC7B,eAAO,MAAM,KAAK,gBAAU,CAAA;AAC5B,eAAO,MAAM,OAAO,gBAAU,CAAA;AAC9B,eAAO,MAAM,IAAI,gBAAU,CAAA"}
|
package/dist/handler.js
ADDED
|
@@ -0,0 +1,22 @@
|
|
|
1
|
+
// Next.js App Router route handler that forwards every request to Manta.
|
|
2
|
+
//
|
|
3
|
+
// Usage (in a consumer project):
|
|
4
|
+
//
|
|
5
|
+
// // app/api/[...manta]/route.ts
|
|
6
|
+
// export { GET, POST, PUT, DELETE, PATCH, OPTIONS } from '@mantajs/adapter-nextjs/handler'
|
|
7
|
+
//
|
|
8
|
+
// The Manta core speaks Web Fetch (IHttpPort.handleRequest(Request): Promise<Response>),
|
|
9
|
+
// which is exactly what Next App Router route handlers expect. Zero translation layer.
|
|
10
|
+
import { getMantaAdapter } from './bootstrap.js';
|
|
11
|
+
async function handler(req) {
|
|
12
|
+
const adapter = await getMantaAdapter();
|
|
13
|
+
return adapter.handleRequest(req);
|
|
14
|
+
}
|
|
15
|
+
export const GET = handler;
|
|
16
|
+
export const POST = handler;
|
|
17
|
+
export const PUT = handler;
|
|
18
|
+
export const DELETE = handler;
|
|
19
|
+
export const PATCH = handler;
|
|
20
|
+
export const OPTIONS = handler;
|
|
21
|
+
export const HEAD = handler;
|
|
22
|
+
//# sourceMappingURL=handler.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"handler.js","sourceRoot":"","sources":["../src/handler.ts"],"names":[],"mappings":"AAAA,yEAAyE;AACzE,EAAE;AACF,iCAAiC;AACjC,EAAE;AACF,mCAAmC;AACnC,6FAA6F;AAC7F,EAAE;AACF,yFAAyF;AACzF,uFAAuF;AAEvF,OAAO,EAAE,eAAe,EAAE,MAAM,gBAAgB,CAAA;AAEhD,KAAK,UAAU,OAAO,CAAC,GAAY;IACjC,MAAM,OAAO,GAAG,MAAM,eAAe,EAAE,CAAA;IACvC,OAAO,OAAO,CAAC,aAAa,CAAC,GAAG,CAAC,CAAA;AACnC,CAAC;AAED,MAAM,CAAC,MAAM,GAAG,GAAG,OAAO,CAAA;AAC1B,MAAM,CAAC,MAAM,IAAI,GAAG,OAAO,CAAA;AAC3B,MAAM,CAAC,MAAM,GAAG,GAAG,OAAO,CAAA;AAC1B,MAAM,CAAC,MAAM,MAAM,GAAG,OAAO,CAAA;AAC7B,MAAM,CAAC,MAAM,KAAK,GAAG,OAAO,CAAA;AAC5B,MAAM,CAAC,MAAM,OAAO,GAAG,OAAO,CAAA;AAC9B,MAAM,CAAC,MAAM,IAAI,GAAG,OAAO,CAAA"}
|
package/dist/index.d.ts
ADDED
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAWA,OAAO,EAAE,eAAe,EAAE,WAAW,EAAE,MAAM,gBAAgB,CAAA;AAC7D,OAAO,EAAE,SAAS,EAAE,MAAM,iBAAiB,CAAA"}
|
package/dist/index.js
ADDED
|
@@ -0,0 +1,13 @@
|
|
|
1
|
+
// @mantajs/adapter-nextjs — Mount Manta inside a Next.js App Router project.
|
|
2
|
+
//
|
|
3
|
+
// Public surface:
|
|
4
|
+
// import { withManta } from '@mantajs/adapter-nextjs' // next.config wrapper
|
|
5
|
+
// import { GET, POST, ... } from '@mantajs/adapter-nextjs/handler' // catch-all route handler
|
|
6
|
+
//
|
|
7
|
+
// The admin dashboard mount is NOT exposed as a package export — instead, `manta init --preset next`
|
|
8
|
+
// scaffolds `app/admin/[[...slug]]/page.tsx` with an inline `dynamic(() => import('@mantajs/dashboard'))`
|
|
9
|
+
// so webpack resolves @mantajs/dashboard from the consumer project's node_modules. Pushing the import
|
|
10
|
+
// through a subpath of this package breaks pnpm workspace resolution in Next 15.
|
|
11
|
+
export { getMantaAdapter, getMantaApp } from './bootstrap.js';
|
|
12
|
+
export { withManta } from './with-manta.js';
|
|
13
|
+
//# sourceMappingURL=index.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA,6EAA6E;AAC7E,EAAE;AACF,kBAAkB;AAClB,2FAA2F;AAC3F,gGAAgG;AAChG,EAAE;AACF,qGAAqG;AACrG,0GAA0G;AAC1G,sGAAsG;AACtG,iFAAiF;AAEjF,OAAO,EAAE,eAAe,EAAE,WAAW,EAAE,MAAM,gBAAgB,CAAA;AAC7D,OAAO,EAAE,SAAS,EAAE,MAAM,iBAAiB,CAAA"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"with-manta.d.ts","sourceRoot":"","sources":["../src/with-manta.ts"],"names":[],"mappings":"AAmBA,KAAK,UAAU,GAAG,GAAG,CAAA;AAiBrB,wBAAgB,SAAS,CAAC,UAAU,GAAE,UAAe,GAAG,UAAU,CAWjE"}
|
|
@@ -0,0 +1,42 @@
|
|
|
1
|
+
// next.config wrapper for Manta-powered Next.js projects.
|
|
2
|
+
//
|
|
3
|
+
// Usage:
|
|
4
|
+
// // next.config.ts
|
|
5
|
+
// import { withManta } from '@mantajs/adapter-nextjs'
|
|
6
|
+
// export default withManta({})
|
|
7
|
+
//
|
|
8
|
+
// Responsibilities:
|
|
9
|
+
// - transpilePackages: all @mantajs/* workspace packages (they ship as raw TS)
|
|
10
|
+
// - serverExternalPackages: native/CJS deps that Next shouldn't try to bundle
|
|
11
|
+
//
|
|
12
|
+
// Unlike host-nitro, we do NOT need to proxy /admin/* to a separate Vite dev server.
|
|
13
|
+
// The admin dashboard is a React component (MantaDashboard from @mantajs/dashboard) that
|
|
14
|
+
// Next bundles and serves directly via the /admin page. HMR in dev comes from Next's
|
|
15
|
+
// own Fast Refresh. Prod builds bundle it into the main app. One less moving part.
|
|
16
|
+
//
|
|
17
|
+
// We merge with any user-provided config rather than replace it.
|
|
18
|
+
const MANTA_WORKSPACE_PACKAGES = [
|
|
19
|
+
'@mantajs/core',
|
|
20
|
+
'@mantajs/cli',
|
|
21
|
+
'@mantajs/sdk',
|
|
22
|
+
'@mantajs/ui',
|
|
23
|
+
'@mantajs/dashboard',
|
|
24
|
+
'@mantajs/adapter-nextjs',
|
|
25
|
+
'@mantajs/adapter-h3',
|
|
26
|
+
'@mantajs/adapter-database-pg',
|
|
27
|
+
'@mantajs/adapter-database-neon',
|
|
28
|
+
'@mantajs/adapter-logger-pino',
|
|
29
|
+
];
|
|
30
|
+
const SERVER_EXTERNAL_PACKAGES = ['postgres', 'pino', 'pino-pretty', 'drizzle-orm', '@neondatabase/serverless', 'jiti'];
|
|
31
|
+
export function withManta(nextConfig = {}) {
|
|
32
|
+
const userTranspile = Array.isArray(nextConfig.transpilePackages) ? nextConfig.transpilePackages : [];
|
|
33
|
+
const userExternals = Array.isArray(nextConfig.serverExternalPackages)
|
|
34
|
+
? nextConfig.serverExternalPackages
|
|
35
|
+
: [];
|
|
36
|
+
return {
|
|
37
|
+
...nextConfig,
|
|
38
|
+
transpilePackages: Array.from(new Set([...userTranspile, ...MANTA_WORKSPACE_PACKAGES])),
|
|
39
|
+
serverExternalPackages: Array.from(new Set([...userExternals, ...SERVER_EXTERNAL_PACKAGES])),
|
|
40
|
+
};
|
|
41
|
+
}
|
|
42
|
+
//# sourceMappingURL=with-manta.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"with-manta.js","sourceRoot":"","sources":["../src/with-manta.ts"],"names":[],"mappings":"AAAA,0DAA0D;AAC1D,EAAE;AACF,SAAS;AACT,sBAAsB;AACtB,wDAAwD;AACxD,iCAAiC;AACjC,EAAE;AACF,oBAAoB;AACpB,gFAAgF;AAChF,+EAA+E;AAC/E,EAAE;AACF,qFAAqF;AACrF,yFAAyF;AACzF,qFAAqF;AACrF,mFAAmF;AACnF,EAAE;AACF,iEAAiE;AAKjE,MAAM,wBAAwB,GAAG;IAC/B,eAAe;IACf,cAAc;IACd,cAAc;IACd,aAAa;IACb,oBAAoB;IACpB,yBAAyB;IACzB,qBAAqB;IACrB,8BAA8B;IAC9B,gCAAgC;IAChC,8BAA8B;CAC/B,CAAA;AAED,MAAM,wBAAwB,GAAG,CAAC,UAAU,EAAE,MAAM,EAAE,aAAa,EAAE,aAAa,EAAE,0BAA0B,EAAE,MAAM,CAAC,CAAA;AAEvH,MAAM,UAAU,SAAS,CAAC,aAAyB,EAAE;IACnD,MAAM,aAAa,GAAa,KAAK,CAAC,OAAO,CAAC,UAAU,CAAC,iBAAiB,CAAC,CAAC,CAAC,CAAC,UAAU,CAAC,iBAAiB,CAAC,CAAC,CAAC,EAAE,CAAA;IAC/G,MAAM,aAAa,GAAa,KAAK,CAAC,OAAO,CAAC,UAAU,CAAC,sBAAsB,CAAC;QAC9E,CAAC,CAAC,UAAU,CAAC,sBAAsB;QACnC,CAAC,CAAC,EAAE,CAAA;IAEN,OAAO;QACL,GAAG,UAAU;QACb,iBAAiB,EAAE,KAAK,CAAC,IAAI,CAAC,IAAI,GAAG,CAAC,CAAC,GAAG,aAAa,EAAE,GAAG,wBAAwB,CAAC,CAAC,CAAC;QACvF,sBAAsB,EAAE,KAAK,CAAC,IAAI,CAAC,IAAI,GAAG,CAAC,CAAC,GAAG,aAAa,EAAE,GAAG,wBAAwB,CAAC,CAAC,CAAC;KAC7F,CAAA;AACH,CAAC"}
|
package/package.json
ADDED
|
@@ -0,0 +1,34 @@
|
|
|
1
|
+
{
|
|
2
|
+
"name": "@mantajs/adapter-nextjs",
|
|
3
|
+
"version": "0.2.0-beta.0",
|
|
4
|
+
"type": "module",
|
|
5
|
+
"main": "./dist/index.js",
|
|
6
|
+
"types": "./dist/index.d.ts",
|
|
7
|
+
"exports": {
|
|
8
|
+
".": {
|
|
9
|
+
"types": "./dist/index.d.ts",
|
|
10
|
+
"import": "./dist/index.js",
|
|
11
|
+
"default": "./dist/index.js"
|
|
12
|
+
},
|
|
13
|
+
"./handler": {
|
|
14
|
+
"types": "./dist/handler.d.ts",
|
|
15
|
+
"import": "./dist/handler.js",
|
|
16
|
+
"default": "./dist/handler.js"
|
|
17
|
+
},
|
|
18
|
+
"./package.json": "./package.json"
|
|
19
|
+
},
|
|
20
|
+
"dependencies": {
|
|
21
|
+
"jiti": "^2.6.0",
|
|
22
|
+
"@mantajs/cli": "0.2.0-beta.0",
|
|
23
|
+
"@mantajs/core": "0.2.0-beta.0",
|
|
24
|
+
"@mantajs/dashboard": "0.2.0-beta.0"
|
|
25
|
+
},
|
|
26
|
+
"peerDependencies": {
|
|
27
|
+
"next": "^15.0.0",
|
|
28
|
+
"react": "^19.0.0",
|
|
29
|
+
"react-dom": "^19.0.0"
|
|
30
|
+
},
|
|
31
|
+
"files": [
|
|
32
|
+
"dist"
|
|
33
|
+
]
|
|
34
|
+
}
|