solidstep 0.3.5 → 0.4.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/README.md CHANGED
@@ -37,6 +37,7 @@ cd my-app
37
37
  - `not-found.tsx` - 404 page (root only - optional)
38
38
  - `route.ts` - API route handler
39
39
  - `middleware.ts` - Request middleware
40
+ - `instrumentation.ts` - Server instrumentation hooks (optional)
40
41
 
41
42
  **A route is defined by either the presence of a `page.tsx` or `route.ts` file in a directory.**
42
43
 
@@ -274,6 +275,111 @@ function CreatePostForm() {
274
275
  }
275
276
  ```
276
277
 
278
+ ### Form Actions
279
+
280
+ Use the `<Form>` component to submit forms via server actions — similar to Next.js form handling:
281
+
282
+ ```tsx
283
+ // app/invoices/actions.ts
284
+ 'use server';
285
+
286
+ export async function createInvoice(formData: FormData) {
287
+ const rawFormData = {
288
+ customerId: formData.get('customerId'),
289
+ amount: formData.get('amount'),
290
+ status: formData.get('status'),
291
+ };
292
+ // mutate data, revalidate cache
293
+ }
294
+ ```
295
+
296
+ ```tsx
297
+ // app/invoices/page.tsx
298
+ import { Form } from 'solidstep/form';
299
+ import { createInvoice } from './actions';
300
+
301
+ export default function Page() {
302
+ return (
303
+ <Form action={createInvoice}>
304
+ <input name="customerId" />
305
+ <input name="amount" type="number" />
306
+ <select name="status">
307
+ <option value="pending">Pending</option>
308
+ <option value="paid">Paid</option>
309
+ </select>
310
+ <button type="submit">Create Invoice</button>
311
+ </Form>
312
+ );
313
+ }
314
+ ```
315
+
316
+ **Passing additional arguments with `bind`:**
317
+
318
+ ```tsx
319
+ import { Form } from 'solidstep/form';
320
+ import { updateUser } from './actions';
321
+
322
+ export function UserProfile(props: { userId: string }) {
323
+ const updateUserWithId = updateUser.bind(null, props.userId);
324
+
325
+ return (
326
+ <Form action={updateUserWithId}>
327
+ <input type="text" name="name" />
328
+ <button type="submit">Update User Name</button>
329
+ </Form>
330
+ );
331
+ }
332
+ ```
333
+
334
+ **Form validation with `useActionState`:**
335
+
336
+ ```tsx
337
+ import { useActionState } from 'solidstep/hooks/action-state';
338
+ import { Form } from 'solidstep/form';
339
+ import { signup } from './actions';
340
+
341
+ export function SignupForm() {
342
+ const [state, formAction, pending, error] = useActionState(signup, {
343
+ errors: {} as Record<string, string[]>,
344
+ message: '',
345
+ });
346
+
347
+ return (
348
+ <Form action={formAction}>
349
+ <label for="email">Email</label>
350
+ <input type="email" id="email" name="email" required />
351
+ {state().errors.email && <span>{state().errors.email[0]}</span>}
352
+ <p aria-live="polite">{state().message}</p>
353
+ {error() && <p role="alert" style="color:red">{error()!.message}</p>}
354
+ <button disabled={pending()}>
355
+ {pending() ? 'Signing up...' : 'Sign up'}
356
+ </button>
357
+ </Form>
358
+ );
359
+ }
360
+ ```
361
+
362
+ **Pending state with `useFormStatus`:**
363
+
364
+ ```tsx
365
+ import { useFormStatus } from 'solidstep/hooks/form-status';
366
+
367
+ export function SubmitButton() {
368
+ const { pending } = useFormStatus();
369
+
370
+ return (
371
+ <button disabled={pending()} type="submit">
372
+ {pending() ? 'Submitting...' : 'Submit'}
373
+ </button>
374
+ );
375
+ }
376
+ ```
377
+
378
+ > **Good to know:**
379
+ > - `<Form>` supports progressive enhancement — when JS is disabled, forms submit natively to the server action endpoint.
380
+ > - `useActionState` returns SolidJS accessors: call `state()`, `pending()`, and `error()` to read values. `error()` is `null` until the action throws, and resets to `null` on the next submission.
381
+ > - `useFormStatus` must be used in a component nested inside `<Form>`.
382
+
277
383
  ### Metadata
278
384
 
279
385
  Define metadata for SEO:
@@ -341,16 +447,138 @@ export const generateMeta = meta(() => {
341
447
 
342
448
  ### Middleware
343
449
 
344
- Intercept and modify requests:
450
+ Intercept and modify requests. SolidStep's `defineMiddleware` composes an ordered array of middleware units into a single handler, so you can keep concerns (auth, CORS, CSRF, logging) in separate, reusable pieces:
451
+
452
+ ```tsx
453
+ // app/middleware.ts
454
+ import { defineMiddleware, type Middleware } from 'solidstep/utils/middleware';
455
+
456
+ const logger: Middleware = {
457
+ onRequest: (event) => {
458
+ console.log('Incoming request:', event.path);
459
+ },
460
+ };
461
+
462
+ const auth: Middleware = {
463
+ onRequest: (event) => {
464
+ if (!event.headers.get('authorization')) {
465
+ // Return a Response to short-circuit — later middleware and the
466
+ // route handler are skipped.
467
+ return new Response('Unauthorized', { status: 401 });
468
+ }
469
+ },
470
+ };
471
+
472
+ export default defineMiddleware([logger, auth]);
473
+ ```
474
+
475
+ - `onRequest` hooks run in array order and stop as soon as one returns a `Response` (or calls `event.respondWith(...)`).
476
+ - `onBeforeResponse` hooks always all run, in array order, and receive the resolved response so it can be inspected or mutated.
477
+
478
+ You can still use Vinxi's own single-object form from `vinxi/http` if you prefer:
345
479
 
346
480
  ```tsx
347
481
  import { defineMiddleware } from 'vinxi/http';
348
482
 
349
483
  export default defineMiddleware({
350
- onRequest: async (request) => {
351
- console.log('Incoming request:', request.url);
352
- // Modify request if needed
353
- return request;
484
+ onRequest: (event) => {
485
+ console.log('Incoming request:', event.path);
486
+ },
487
+ });
488
+ ```
489
+
490
+ ### Instrumentation
491
+
492
+ SolidStep provides a server-side instrumentation API for observability, telemetry, and error tracking. Create an `app/instrumentation.ts` file to hook into the request lifecycle — no configuration required.
493
+
494
+ ```tsx
495
+ // app/instrumentation.ts
496
+ import { defineInstrumentation } from 'solidstep/utils/instrumentation';
497
+
498
+ export default defineInstrumentation({
499
+ async register() {
500
+ // Called once at server startup.
501
+ // Initialize your telemetry SDK here (e.g., OpenTelemetry, Sentry).
502
+ console.log('[instrumentation] Server starting...');
503
+ },
504
+
505
+ async onRequest(request, context) {
506
+ // Called before each request is processed.
507
+ context.metadata.requestId = crypto.randomUUID();
508
+ console.log(`[instrumentation] ${request.method} ${context.pathname} (${context.routeType})`);
509
+ },
510
+
511
+ async onResponseEnd(request, context) {
512
+ // Called after the response is complete.
513
+ console.log(`[instrumentation] ${context.statusCode} ${context.pathname} ${context.duration.toFixed(1)}ms`);
514
+ },
515
+
516
+ async onRequestError(error, request, context) {
517
+ // Called when an unhandled error occurs during request processing.
518
+ console.error(`[instrumentation] Error in ${context.pathname}:`, error.message);
519
+ },
520
+ });
521
+ ```
522
+
523
+ **Available Hooks:**
524
+
525
+ | Hook | When it fires | Arguments |
526
+ |------|--------------|-----------|
527
+ | `register` | Once at server startup | None |
528
+ | `onRequest` | Before each request | `(request: Request, context: RequestContext)` |
529
+ | `onResponseStart` | When response is ready, before streaming | `(request: Request, response: Response, context: ResponseContext)` |
530
+ | `onResponseEnd` | After response stream is complete | `(request: Request, context: ResponseContext)` |
531
+ | `onRequestError` | When an unhandled error occurs | `(error: Error, context: RequestContext)` |
532
+
533
+ **Context Objects:**
534
+
535
+ - `RequestContext` — includes `routePath`, `pathname`, `routeType` (`'page'` | `'api'` | `'server-action'` | `'not-found'`), `params`, `searchParams`, `startTime`, `startTimeEpoch`, and `metadata`
536
+ - `ResponseContext` — extends `RequestContext` with `statusCode` and `duration` (ms)
537
+ - `metadata` — a mutable `Record<string, unknown>` shared across all hooks for the same request. Use it to pass data between hooks (e.g., OpenTelemetry spans, request IDs).
538
+
539
+ **Key Behaviors:**
540
+ - Zero-config: if `app/instrumentation.ts` doesn't exist, the framework silently uses a no-op fallback
541
+ - `register()` completes before the first request is handled
542
+ - Errors in hooks are caught and logged — they never crash user requests
543
+ - Works with page routes, API routes, and server actions
544
+ - Compatible with OpenTelemetry, Sentry, Datadog, and any Node.js telemetry SDK
545
+
546
+ **OpenTelemetry Example:**
547
+
548
+ ```tsx
549
+ // app/instrumentation.ts
550
+ import { defineInstrumentation } from 'solidstep/utils/instrumentation';
551
+ import { NodeSDK } from '@opentelemetry/sdk-node';
552
+ import { OTLPTraceExporter } from '@opentelemetry/exporter-trace-otlp-http';
553
+ import { trace } from '@opentelemetry/api';
554
+
555
+ let sdk: NodeSDK;
556
+
557
+ export default defineInstrumentation({
558
+ async register() {
559
+ sdk = new NodeSDK({
560
+ traceExporter: new OTLPTraceExporter(),
561
+ serviceName: 'my-solidstep-app',
562
+ });
563
+ sdk.start();
564
+ },
565
+
566
+ async onRequest(request, context) {
567
+ const tracer = trace.getTracer('solidstep');
568
+ const span = tracer.startSpan(`${request.method} ${context.routePath}`);
569
+ context.metadata.span = span;
570
+ },
571
+
572
+ async onResponseEnd(request, context) {
573
+ const span = context.metadata.span as any;
574
+ span?.setAttribute('http.status_code', context.statusCode);
575
+ span?.end();
576
+ },
577
+
578
+ async onRequestError(error, request, context) {
579
+ const span = context.metadata.span as any;
580
+ span?.recordException(error);
581
+ span?.end();
354
582
  },
355
583
  });
356
584
  ```
@@ -833,8 +1061,10 @@ const MyComponent: Component = () => {
833
1061
  As SolidStep is built using Vite, it follows the same guide as stated in [Vite docs](https://vite.dev/guide/env-and-mode) regarding environment variables.
834
1062
 
835
1063
  ## Future Plans
1064
+ - Pre-rendering static pages at build time and partial pre-rendering for dynamic pages
836
1065
  - Support for dynamic site.webmanifest, robots.txt, sitemap.xml, manifest.json, and llms.txt
837
1066
  - Support loading and error pages for parallel routes
1067
+ - Support caching loaders
838
1068
  - Support deferring loaders
839
1069
  - Possible SSG, ISR, and PPR
840
1070
  - Advanced caching strategies
package/index.d.ts.map CHANGED
@@ -1 +1 @@
1
- {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../index.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,UAAU,EAAE,MAAM,OAAO,CAAC;AAUxC,OAAO,KAAK,EAAE,aAAa,EAAE,MAAM,MAAM,CAAC;AAC1C,OAAO,KAAK,EAAE,kBAAkB,EAAE,MAAM,+BAA+B,CAAC;AAExE,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,MAAM,CAAC;AAGzC,KAAK,sBAAsB,GAAG,IAAI,CAC9B,YAAY,CAAC,QAAQ,CAAC,EACtB,MAAM,GAAG,YAAY,GAAG,MAAM,GAAG,gBAAgB,GAAG,MAAM,CAC7D,CAAC;AAEF,KAAK,sBAAsB,GAAG,kBAAkB,GAAG;IAC/C,MAAM,CAAC,EAAE,sBAAsB,CAAC;CACnC,CAAC;AAEF,KAAK,MAAM,GAAG;IACV,MAAM,CAAC,EAAE,IAAI,CAAC,UAAU,CAAC,QAAQ,CAAC,EAAE,cAAc,CAAC,CAAC;IACpD,OAAO,CAAC,EAAE;QACN,IAAI,EAAE,QAAQ,GAAG,QAAQ,GAAG,MAAM,CAAC;QACnC,MAAM,EAAE,GAAG,CAAC;KACf,EAAE,CAAC;IACJ,MAAM,CAAC,EAAE,IAAI,GAAG,aAAa,CAAC;IAC9B,IAAI,CAAC,EACC,sBAAsB,GACtB,CAAC,CAAC,OAAO,EAAE;QACT,MAAM,EAAE,QAAQ,GAAG,QAAQ,CAAC;KAC/B,KAAK,sBAAsB,CAAC,CAAC;CACrC,CAAC;AAEF,eAAO,MAAM,YAAY,GAAI,SAAQ,MAIpC,wBAsHA,CAAC"}
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../index.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,UAAU,EAAE,MAAM,OAAO,CAAC;AAUxC,OAAO,KAAK,EAAE,aAAa,EAAE,MAAM,MAAM,CAAC;AAC1C,OAAO,KAAK,EAAE,kBAAkB,EAAE,MAAM,+BAA+B,CAAC;AAExE,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,MAAM,CAAC;AAGzC,KAAK,sBAAsB,GAAG,IAAI,CAC9B,YAAY,CAAC,QAAQ,CAAC,EACtB,MAAM,GAAG,YAAY,GAAG,MAAM,GAAG,gBAAgB,GAAG,MAAM,CAC7D,CAAC;AAEF,KAAK,sBAAsB,GAAG,kBAAkB,GAAG;IAC/C,MAAM,CAAC,EAAE,sBAAsB,CAAC;CACnC,CAAC;AAEF,KAAK,MAAM,GAAG;IACV,MAAM,CAAC,EAAE,IAAI,CAAC,UAAU,CAAC,QAAQ,CAAC,EAAE,cAAc,CAAC,CAAC;IACpD,OAAO,CAAC,EAAE;QACN,IAAI,EAAE,QAAQ,GAAG,QAAQ,GAAG,MAAM,CAAC;QACnC,MAAM,EAAE,GAAG,CAAC;KACf,EAAE,CAAC;IACJ,MAAM,CAAC,EAAE,IAAI,GAAG,aAAa,CAAC;IAC9B,IAAI,CAAC,EACC,sBAAsB,GACtB,CAAC,CAAC,OAAO,EAAE;QACT,MAAM,EAAE,QAAQ,GAAG,QAAQ,CAAC;KAC/B,KAAK,sBAAsB,CAAC,CAAC;CACrC,CAAC;AAEF,eAAO,MAAM,YAAY,GAAI,SAAQ,MAIpC,wBAqIA,CAAC"}
package/index.js CHANGED
@@ -22,9 +22,9 @@ export const defineConfig = (config = {
22
22
  };
23
23
  // @ts-ignore
24
24
  globalThis.__SOLIDSTEP_CONFIG__ = sharedConfig;
25
- const viteConfig = typeof config.vite === 'function'
25
+ const viteConfig = (typeof config.vite === 'function'
26
26
  ? config.vite
27
- : () => config.vite || {};
27
+ : () => config.vite || {});
28
28
  const app = createApp({
29
29
  server: {
30
30
  ...config.server,
@@ -77,7 +77,24 @@ export const defineConfig = (config = {
77
77
  serverFunctions.server(),
78
78
  solid({ ssr: true }),
79
79
  viteConfigPlugin('app-server', {
80
- ...(viteConfig({ router: 'server' }) || {}),
80
+ resolve: {
81
+ alias: {
82
+ instrumentation: (() => {
83
+ const userInstrumentationTs = join(process.cwd(), 'app', 'instrumentation.ts');
84
+ const userInstrumentationJs = join(process.cwd(), 'app', 'instrumentation.js');
85
+ if (existsSync(userInstrumentationTs)) {
86
+ return userInstrumentationTs;
87
+ }
88
+ else if (existsSync(userInstrumentationJs)) {
89
+ return userInstrumentationJs;
90
+ }
91
+ else {
92
+ return normalize(fileURLToPath(new URL('./utils/instrumentation-noop.js', import.meta.url)));
93
+ }
94
+ })(),
95
+ ...(viteConfig({ router: 'server' })?.resolve?.alias || {}),
96
+ },
97
+ },
81
98
  }),
82
99
  ],
83
100
  middleware: './app/middleware.ts',
package/package.json CHANGED
@@ -1,72 +1,143 @@
1
- {
2
- "name": "solidstep",
3
- "version": "0.3.5",
4
- "description": "Next Step SolidJS Framework for building web applications.",
5
- "type": "module",
6
- "author": "HamzaKV <hamzakv333@gmail.com>",
7
- "repository": {
8
- "type": "git",
9
- "url": "https://github.com/HamzaKV/solidstep.git"
10
- },
11
- "license": "MIT",
12
- "exports": {
13
- ".": "./index.js",
14
- "./hooks/action-state": "./utils/hooks/action-state.js",
15
- "./utils/cache": "./utils/cache.js",
16
- "./utils/client-only": "./utils/client-only.js",
17
- "./utils/cookies": "./utils/cookies.js",
18
- "./utils/cors": "./utils/cors.js",
19
- "./utils/csp": "./utils/csp.js",
20
- "./utils/csrf": "./utils/csrf.js",
21
- "./utils/error-handler": "./utils/error-handler.js",
22
- "./utils/fetch.client": "./utils/fetch.client.js",
23
- "./utils/fetch.server": "./utils/fetch.server.js",
24
- "./utils/loader": "./utils/loader.js",
25
- "./utils/logger": "./utils/logger.js",
26
- "./utils/meta": "./utils/meta.js",
27
- "./utils/options": "./utils/options.js",
28
- "./utils/redirect": "./utils/redirect.js",
29
- "./utils/server-only": "./utils/server-only.js"
30
- },
31
- "scripts": {
32
- "clean": "rimraf ./dist",
33
- "copy-files:root": "copyfiles -u 0 README.md package.json generate/**/* LICENSE ./dist",
34
- "build": "pnpm clean && tsc && pnpm copy-files:root",
35
- "test:local": "pnpm build && cd ./dist && pnpm link --global",
36
- "test:local:clean": "pnpm unlink && pnpm clean",
37
- "roll": "pnpm build && cd dist && npm publish"
38
- },
39
- "keywords": [
40
- "solidjs",
41
- "web-development",
42
- "typescript",
43
- "npm",
44
- "solidstep",
45
- "framework"
46
- ],
47
- "dependencies": {
48
- "@vinxi/server-functions": "0.5.1",
49
- "pino": "^10.1.0",
50
- "seroval": "^1.3.2",
51
- "seroval-plugins": "^1.3.2",
52
- "undici": "^7.15.0",
53
- "vite-plugin-solid": "^2.11.7"
54
- },
55
- "devDependencies": {
56
- "copyfiles": "^2.4.1",
57
- "rimraf": "^6.0.1",
58
- "solid-js": "^1.9.7",
59
- "typescript": "^5.8.3",
60
- "vinxi": "^0.5.8"
61
- },
62
- "peerDependencies": {
63
- "solid-js": "^1.9.7",
64
- "vinxi": "^0.5.8"
65
- },
66
- "engines": {
67
- "node": ">=20"
68
- },
69
- "publishConfig": {
70
- "access": "public"
71
- }
72
- }
1
+ {
2
+ "name": "solidstep",
3
+ "version": "0.4.0",
4
+ "description": "Next Step SolidJS Framework for building web applications.",
5
+ "type": "module",
6
+ "author": "HamzaKV <hamzakv333@gmail.com>",
7
+ "repository": {
8
+ "type": "git",
9
+ "url": "https://github.com/HamzaKV/solidstep.git"
10
+ },
11
+ "license": "MIT",
12
+ "exports": {
13
+ ".": {
14
+ "types": "./index.d.ts",
15
+ "default": "./index.js"
16
+ },
17
+ "./hooks/action-state": {
18
+ "types": "./utils/hooks/action-state.d.ts",
19
+ "default": "./utils/hooks/action-state.js"
20
+ },
21
+ "./form": {
22
+ "types": "./utils/components/form.d.ts",
23
+ "default": "./utils/components/form.js"
24
+ },
25
+ "./hooks/form-status": {
26
+ "types": "./utils/hooks/form-status.d.ts",
27
+ "default": "./utils/hooks/form-status.js"
28
+ },
29
+ "./utils/cache": {
30
+ "types": "./utils/cache.d.ts",
31
+ "default": "./utils/cache.js"
32
+ },
33
+ "./utils/client-only": {
34
+ "types": "./utils/client-only.d.ts",
35
+ "default": "./utils/client-only.js"
36
+ },
37
+ "./utils/cookies": {
38
+ "types": "./utils/cookies.d.ts",
39
+ "default": "./utils/cookies.js"
40
+ },
41
+ "./utils/cors": {
42
+ "types": "./utils/cors.d.ts",
43
+ "default": "./utils/cors.js"
44
+ },
45
+ "./utils/csp": {
46
+ "types": "./utils/csp.d.ts",
47
+ "default": "./utils/csp.js"
48
+ },
49
+ "./utils/csrf": {
50
+ "types": "./utils/csrf.d.ts",
51
+ "default": "./utils/csrf.js"
52
+ },
53
+ "./utils/error-handler": {
54
+ "types": "./utils/error-handler.d.ts",
55
+ "default": "./utils/error-handler.js"
56
+ },
57
+ "./utils/fetch.client": {
58
+ "types": "./utils/fetch.client.d.ts",
59
+ "default": "./utils/fetch.client.js"
60
+ },
61
+ "./utils/fetch.server": {
62
+ "types": "./utils/fetch.server.d.ts",
63
+ "default": "./utils/fetch.server.js"
64
+ },
65
+ "./utils/instrumentation": {
66
+ "types": "./utils/instrumentation.d.ts",
67
+ "default": "./utils/instrumentation.js"
68
+ },
69
+ "./utils/loader": {
70
+ "types": "./utils/loader.d.ts",
71
+ "default": "./utils/loader.js"
72
+ },
73
+ "./utils/logger": {
74
+ "types": "./utils/logger.d.ts",
75
+ "default": "./utils/logger.js"
76
+ },
77
+ "./utils/meta": {
78
+ "types": "./utils/meta.d.ts",
79
+ "default": "./utils/meta.js"
80
+ },
81
+ "./utils/middleware": {
82
+ "types": "./utils/middleware.d.ts",
83
+ "default": "./utils/middleware.js"
84
+ },
85
+ "./utils/options": {
86
+ "types": "./utils/options.d.ts",
87
+ "default": "./utils/options.js"
88
+ },
89
+ "./utils/redirect": {
90
+ "types": "./utils/redirect.d.ts",
91
+ "default": "./utils/redirect.js"
92
+ },
93
+ "./utils/server-only": {
94
+ "types": "./utils/server-only.d.ts",
95
+ "default": "./utils/server-only.js"
96
+ }
97
+ },
98
+ "scripts": {
99
+ "clean": "rimraf ./dist",
100
+ "copy-files:root": "copyfiles -u 0 README.md package.json generate/**/* LICENSE ./dist",
101
+ "build": "pnpm clean && tsc && pnpm copy-files:root",
102
+ "test": "vitest run",
103
+ "test:watch": "vitest",
104
+ "test:local": "pnpm build && cd ./dist && pnpm link --global",
105
+ "test:local:clean": "pnpm unlink && pnpm clean",
106
+ "roll": "pnpm build && cd dist && npm publish"
107
+ },
108
+ "keywords": [
109
+ "solidjs",
110
+ "web-development",
111
+ "typescript",
112
+ "npm",
113
+ "solidstep",
114
+ "framework"
115
+ ],
116
+ "dependencies": {
117
+ "@vinxi/server-functions": "0.5.1",
118
+ "pino": "^10.1.0",
119
+ "seroval": "^1.3.2",
120
+ "seroval-plugins": "^1.3.2",
121
+ "undici": "^7.15.0",
122
+ "vite-plugin-solid": "^2.11.7"
123
+ },
124
+ "devDependencies": {
125
+ "@vitest/coverage-v8": "^4.1.8",
126
+ "copyfiles": "^2.4.1",
127
+ "rimraf": "^6.0.1",
128
+ "solid-js": "^1.9.7",
129
+ "typescript": "^5.8.3",
130
+ "vinxi": "^0.5.8",
131
+ "vitest": "^4.1.8"
132
+ },
133
+ "peerDependencies": {
134
+ "solid-js": "^1.9.7",
135
+ "vinxi": "^0.5.8"
136
+ },
137
+ "engines": {
138
+ "node": ">=20"
139
+ },
140
+ "publishConfig": {
141
+ "access": "public"
142
+ }
143
+ }
package/server.d.ts.map CHANGED
@@ -1 +1 @@
1
- {"version":3,"file":"server.d.ts","sourceRoot":"","sources":["../server.ts"],"names":[],"mappings":"AAkfA,QAAA,MAAM,OAAO,2FAqYX,CAAC;AAEH,eAAe,OAAO,CAAC"}
1
+ {"version":3,"file":"server.d.ts","sourceRoot":"","sources":["../server.ts"],"names":[],"mappings":"AA2iBA,QAAA,MAAM,OAAO,2FAmdX,CAAC;AAEH,eAAe,OAAO,CAAC"}