@kabyeon/nexusjs 0.6.5 → 0.6.6
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 +92 -91
- package/dist/cli/commands/db-seed.d.ts +1 -1
- package/dist/cli/index.js +43 -43
- package/dist/cli/index.js.map +22 -22
- package/dist/package.json +2 -2
- package/package.json +1 -1
package/README.md
CHANGED
|
@@ -2,9 +2,9 @@
|
|
|
2
2
|
|
|
3
3
|
**Bun Native Fullstack Framework** — NestJS structure × Adonis productivity × Hono edge performance.
|
|
4
4
|
|
|
5
|
-
> **v0.6.
|
|
5
|
+
> **v0.6.6 — env-aware config + db:generate.** All 27 modules ship. Tier 1 and
|
|
6
6
|
> Tier 2 gaps from the NestJS / AdonisJS gap analyses are now fully
|
|
7
|
-
> closed. The view engine has moved to
|
|
7
|
+
> closed. The view engine has moved to `@kabyeon/nexusjs/view` as its own bundle
|
|
8
8
|
> entry point, with Rendu (default), Edge, and Eta adapters. See
|
|
9
9
|
> [CHANGELOG.md](./CHANGELOG.md) for the full v0.6 release notes.
|
|
10
10
|
|
|
@@ -19,35 +19,35 @@ fully closed.
|
|
|
19
19
|
|
|
20
20
|
| Module | Purpose |
|
|
21
21
|
| ------ | ------- |
|
|
22
|
-
|
|
|
23
|
-
|
|
|
24
|
-
|
|
|
25
|
-
|
|
|
26
|
-
|
|
|
27
|
-
|
|
|
28
|
-
|
|
|
29
|
-
|
|
|
30
|
-
|
|
|
31
|
-
|
|
|
32
|
-
|
|
|
33
|
-
|
|
|
34
|
-
|
|
|
35
|
-
|
|
|
36
|
-
|
|
|
37
|
-
|
|
|
38
|
-
|
|
|
39
|
-
|
|
|
40
|
-
|
|
|
41
|
-
|
|
|
42
|
-
|
|
|
43
|
-
|
|
|
22
|
+
| `@kabyeon/nexusjs` (core) | MVC + DI + validation + 3 routing styles + view engines + Inertia.js |
|
|
23
|
+
| `@kabyeon/nexusjs/cli` (`nx`) | Adonis ACE-style command runner — `new`, `init`, `make:*`, `migrate`, `info` |
|
|
24
|
+
| `@kabyeon/nexusjs/auth` | better-auth integration with `@CurrentUser` and `authMiddleware` |
|
|
25
|
+
| `@kabyeon/nexusjs/queue` | BullMQ + Cloudflare Queues + memory backends. `@OnQueueReady` decorator |
|
|
26
|
+
| `@kabyeon/nexusjs/schedule` | Custom cron parser. `@Cron` / `@Interval` / `@Timeout` decorators |
|
|
27
|
+
| `@kabyeon/nexusjs/events` | `NexusEventEmitter` with wildcards, priorities, guards. `@OnEvent` decorator |
|
|
28
|
+
| `@kabyeon/nexusjs/session` | Cookie (HMAC) + memory + **Drizzle** backends. Sliding expiry, rotation |
|
|
29
|
+
| `@kabyeon/nexusjs/health` | `/health/live` · `/health/ready` · `/health/startup`. Built-in indicators |
|
|
30
|
+
| `@kabyeon/nexusjs/config` | Zod-validated configuration. Layered loading from env, `.env`, `load()` |
|
|
31
|
+
| `@kabyeon/nexusjs/logger` | Pino-backed structured logging. Pretty-print in dev, JSON in prod |
|
|
32
|
+
| `@kabyeon/nexusjs/static` | Static file serving with ETag, Range, path-traversal protection |
|
|
33
|
+
| `@kabyeon/nexusjs/limiter` | Rate limiting. 3 strategies × memory / **Drizzle** storage |
|
|
34
|
+
| `@kabyeon/nexusjs/shield` | Security suite: CSRF + HSTS + CSP + X-Frame-Options + Referrer-Policy |
|
|
35
|
+
| `@kabyeon/nexusjs/cache` | Application cache. Memory (LRU) / **Drizzle** backends. Tag invalidation |
|
|
36
|
+
| `@kabyeon/nexusjs/drive` | File storage abstraction. Memory / Local / S3 / R2 drivers |
|
|
37
|
+
| `@kabyeon/nexusjs/mail` | Outbound email. Null / File / SMTP transports. MJML rendering |
|
|
38
|
+
| `@kabyeon/nexusjs/drizzle` | **Default ORM.** 5 dialects, `DrizzleModel`, `DrizzleRepository`, migrations, raw SQL (injection-safe) |
|
|
39
|
+
| `@kabyeon/nexusjs/openapi` | OpenAPI 3.1 spec generation + Scalar UI. Auto-derives from Zod validation schemas |
|
|
40
|
+
| `@kabyeon/nexusjs/upload` | Multipart file upload. `@Upload()` / `@UploadedFile()` decorators. Size, MIME, count validation |
|
|
41
|
+
| `@kabyeon/nexusjs/sse` | Server-Sent Events. `SseStream` with pending-write tracking. `sse(c, handler)` helper |
|
|
42
|
+
| `@kabyeon/nexusjs/tracing` | OpenTelemetry distributed tracing. Lazy SDK loading. `@Trace()` decorator. W3C + B3 propagation |
|
|
43
|
+
| `@kabyeon/nexusjs/metrics` | Prometheus / OpenMetrics. Counter / Gauge / Histogram / Summary. `@Counted()` / `@Timed()` decorators |
|
|
44
44
|
| **Request-scoped DI** *(core)* | `@Injectable({ scope: 'request' })` for per-request provider lifetime via `AsyncLocalStorage` |
|
|
45
|
-
|
|
|
46
|
-
|
|
|
47
|
-
|
|
|
48
|
-
|
|
|
49
|
-
|
|
|
50
|
-
|
|
|
45
|
+
| `@kabyeon/nexusjs/ws` | WebSockets on Bun (primary) and Node (via `ws`). `@WebSocketGateway()`, `@OnWebSocketMessage()`, rooms, broadcast |
|
|
46
|
+
| `@kabyeon/nexusjs/crypto` | AES-256-GCM encryption + HMAC + scrypt/argon2 password hashing. Single APP_KEY for sessions, CSRF, encrypted data |
|
|
47
|
+
| `@kabyeon/nexusjs/i18n` | Locale-aware translations + date/number/currency formatters via `Intl`. `I18nService`, `@CurrentLocale()`, JSON message catalogs |
|
|
48
|
+
| `@kabyeon/nexusjs/redis` | Runtime-aware Redis client (Bun / Node / Workers KV). Powers `redis` / `cloudflare-kv` session & cache backends |
|
|
49
|
+
| `@kabyeon/nexusjs/grpc` | Reflection-based gRPC server + typed client. Loads `.proto` files at runtime via `@grpc/proto-loader`. Unary methods (streaming deferred to v2) |
|
|
50
|
+
| **`@kabyeon/nexusjs/view`** *(extracted in v0.6.3)* | View engine with 3 adapters: Rendu (default, every runtime), Edge (Adonis-style `.edge`), Eta (EJS-style `.eta`). Auto-detects adapter by file extension. `setViewPaths()` for file-based templates |
|
|
51
51
|
|
|
52
52
|
See [docs/user-guide/drizzle.md](./docs/user-guide/drizzle.md) for the
|
|
53
53
|
Drizzle integration guide, [docs/user-guide/tracing.md](./docs/user-guide/tracing.md)
|
|
@@ -55,7 +55,7 @@ for OpenTelemetry, [docs/user-guide/metrics.md](./docs/user-guide/metrics.md)
|
|
|
55
55
|
for Prometheus, and [CHANGELOG.md](./CHANGELOG.md) for the detailed
|
|
56
56
|
v0.4 release notes.
|
|
57
57
|
|
|
58
|
-
> The module table now includes
|
|
58
|
+
> The module table now includes `@kabyeon/nexusjs/grpc` and `@kabyeon/nexusjs/view`,
|
|
59
59
|
|
|
60
60
|
---
|
|
61
61
|
|
|
@@ -88,20 +88,21 @@ bun install
|
|
|
88
88
|
bun run dev
|
|
89
89
|
```
|
|
90
90
|
|
|
91
|
-
Or
|
|
91
|
+
Or install it in an existing project:
|
|
92
92
|
|
|
93
93
|
```bash
|
|
94
|
-
bun add
|
|
94
|
+
bun add @kabyeon/nexusjs reflect-metadata zod hono
|
|
95
95
|
# Add the modules you need:
|
|
96
|
-
bun add
|
|
96
|
+
bun add @kabyeon/nexusjs/drizzle # the default ORM
|
|
97
|
+
bun add @kabyeon/nexusjs/auth # authentication
|
|
98
|
+
bun add @kabyeon/nexusjs/queue # background jobs
|
|
99
|
+
bun add @kabyeon/nexusjs/openapi # OpenAPI docs
|
|
100
|
+
# ... see the module table above for all 27 modules
|
|
97
101
|
```
|
|
98
102
|
|
|
99
103
|
Every module is its own bundle entry point — install only what you
|
|
100
|
-
use. The CLI (`nx`) is
|
|
101
|
-
import:
|
|
104
|
+
use. The CLI (`nx`) is included with `@kabyeon/nexusjs`:
|
|
102
105
|
|
|
103
|
-
```bash
|
|
104
|
-
bun add nexus/cli # optional — for the `nx` command runner
|
|
105
106
|
```
|
|
106
107
|
|
|
107
108
|
---
|
|
@@ -124,22 +125,22 @@ export const users = pgTable('users', {
|
|
|
124
125
|
|
|
125
126
|
```ts
|
|
126
127
|
// app/app.module.ts
|
|
127
|
-
import { Module } from 'nexusjs';
|
|
128
|
-
import { DrizzleModule } from 'nexusjs/drizzle';
|
|
129
|
-
import { ConfigModule } from 'nexusjs/config';
|
|
130
|
-
import { LoggerModule } from 'nexusjs/logger';
|
|
131
|
-
import { HealthModule } from 'nexusjs/health';
|
|
132
|
-
import { LimiterModule } from 'nexusjs/limiter';
|
|
133
|
-
import { SessionModule } from 'nexusjs/session';
|
|
134
|
-
import { CacheModule } from 'nexusjs/cache';
|
|
135
|
-
import { DriveModule } from 'nexusjs/drive';
|
|
136
|
-
import { MailModule } from 'nexusjs/mail';
|
|
137
|
-
import { ShieldModule } from 'nexusjs/shield';
|
|
138
|
-
import { AuthModule } from 'nexusjs/auth';
|
|
139
|
-
import { OpenAPIModule } from 'nexusjs/openapi';
|
|
140
|
-
import { UploadModule } from 'nexusjs/upload';
|
|
141
|
-
import { TracingModule } from 'nexusjs/tracing';
|
|
142
|
-
import { MetricsModule } from 'nexusjs/metrics';
|
|
128
|
+
import { Module } from '@kabyeon/nexusjs';
|
|
129
|
+
import { DrizzleModule } from '@kabyeon/nexusjs/drizzle';
|
|
130
|
+
import { ConfigModule } from '@kabyeon/nexusjs/config';
|
|
131
|
+
import { LoggerModule } from '@kabyeon/nexusjs/logger';
|
|
132
|
+
import { HealthModule } from '@kabyeon/nexusjs/health';
|
|
133
|
+
import { LimiterModule } from '@kabyeon/nexusjs/limiter';
|
|
134
|
+
import { SessionModule } from '@kabyeon/nexusjs/session';
|
|
135
|
+
import { CacheModule } from '@kabyeon/nexusjs/cache';
|
|
136
|
+
import { DriveModule } from '@kabyeon/nexusjs/drive';
|
|
137
|
+
import { MailModule } from '@kabyeon/nexusjs/mail';
|
|
138
|
+
import { ShieldModule } from '@kabyeon/nexusjs/shield';
|
|
139
|
+
import { AuthModule } from '@kabyeon/nexusjs/auth';
|
|
140
|
+
import { OpenAPIModule } from '@kabyeon/nexusjs/openapi';
|
|
141
|
+
import { UploadModule } from '@kabyeon/nexusjs/upload';
|
|
142
|
+
import { TracingModule } from '@kabyeon/nexusjs/tracing';
|
|
143
|
+
import { MetricsModule } from '@kabyeon/nexusjs/metrics';
|
|
143
144
|
import { UserModule } from './modules/user.module.js';
|
|
144
145
|
import { configSchema } from './config/schema.js';
|
|
145
146
|
|
|
@@ -172,7 +173,7 @@ export class AppModule {}
|
|
|
172
173
|
```ts
|
|
173
174
|
// app/main.ts
|
|
174
175
|
import 'reflect-metadata';
|
|
175
|
-
import { Application } from 'nexusjs';
|
|
176
|
+
import { Application } from '@kabyeon/nexusjs';
|
|
176
177
|
import { AppModule } from './app.module.js';
|
|
177
178
|
|
|
178
179
|
const app = new Application(AppModule);
|
|
@@ -181,7 +182,7 @@ await app.listen(3000);
|
|
|
181
182
|
|
|
182
183
|
```ts
|
|
183
184
|
// app/modules/user/user.module.ts
|
|
184
|
-
import { Module } from 'nexusjs';
|
|
185
|
+
import { Module } from '@kabyeon/nexusjs';
|
|
185
186
|
import { UserController } from './user.controller.js';
|
|
186
187
|
import { UserService } from './user.service.js';
|
|
187
188
|
import { UserRepository } from './user.repository.js';
|
|
@@ -195,8 +196,8 @@ export class UserModule {}
|
|
|
195
196
|
|
|
196
197
|
```ts
|
|
197
198
|
// app/modules/user/user.service.ts
|
|
198
|
-
import { Inject, Injectable } from 'nexusjs';
|
|
199
|
-
import { DrizzleService } from 'nexusjs/drizzle';
|
|
199
|
+
import { Inject, Injectable } from '@kabyeon/nexusjs';
|
|
200
|
+
import { DrizzleService } from '@kabyeon/nexusjs/drizzle';
|
|
200
201
|
import { eq } from 'drizzle-orm';
|
|
201
202
|
import { users } from '../../db/schema.js';
|
|
202
203
|
|
|
@@ -215,7 +216,7 @@ export class UserService {
|
|
|
215
216
|
```ts
|
|
216
217
|
// app/modules/user/user.controller.ts
|
|
217
218
|
import { z } from 'zod';
|
|
218
|
-
import { Body, Controller, Delete, Get, Inject, Param, Post, Query, Validate } from 'nexusjs';
|
|
219
|
+
import { Body, Controller, Delete, Get, Inject, Param, Post, Query, Validate } from '@kabyeon/nexusjs';
|
|
219
220
|
import { UserService } from './user.service.js';
|
|
220
221
|
|
|
221
222
|
const CreateUserSchema = z.object({
|
|
@@ -552,8 +553,8 @@ is the classic **Post/Redirect/Get**:
|
|
|
552
553
|
|
|
553
554
|
```ts
|
|
554
555
|
import { z } from 'zod';
|
|
555
|
-
import { Body, Controller, Post } from 'nexusjs';
|
|
556
|
-
import { Inertia } from 'nexusjs/view/inertia';
|
|
556
|
+
import { Body, Controller, Post } from '@kabyeon/nexusjs';
|
|
557
|
+
import { Inertia } from '@kabyeon/nexusjs/view/inertia';
|
|
557
558
|
|
|
558
559
|
const UserSchema = z.object({
|
|
559
560
|
name: z.string().min(2),
|
|
@@ -620,7 +621,7 @@ and Solid. Each lazy-imports its engine — install only what you
|
|
|
620
621
|
use:
|
|
621
622
|
|
|
622
623
|
```ts
|
|
623
|
-
import { createReactAdapter, ComponentRegistry } from 'nexusjs/view/inertia/ssr';
|
|
624
|
+
import { createReactAdapter, ComponentRegistry } from '@kabyeon/nexusjs/view/inertia/ssr';
|
|
624
625
|
|
|
625
626
|
const components = new ComponentRegistry()
|
|
626
627
|
.register('Home', HomePage)
|
|
@@ -639,7 +640,7 @@ app.inertia.setSsrAdapter(createReactAdapter({ components }));
|
|
|
639
640
|
### Form middleware (CSRF)
|
|
640
641
|
|
|
641
642
|
```ts
|
|
642
|
-
import { inertiaFormMiddleware } from 'nexusjs/view/inertia';
|
|
643
|
+
import { inertiaFormMiddleware } from '@kabyeon/nexusjs/view/inertia';
|
|
643
644
|
|
|
644
645
|
app.server.app.use('*', inertiaFormMiddleware({
|
|
645
646
|
validateCsrf: true,
|
|
@@ -656,9 +657,9 @@ the per-field validation flow; this is the upstream CSRF gate.
|
|
|
656
657
|
|
|
657
658
|
---
|
|
658
659
|
|
|
659
|
-
## View engine —
|
|
660
|
+
## View engine — `@kabyeon/nexusjs/view`
|
|
660
661
|
|
|
661
|
-
The view engine is available as
|
|
662
|
+
The view engine is available as `@kabyeon/nexusjs/view` — its own bundle entry
|
|
662
663
|
point. It ships three adapters:
|
|
663
664
|
|
|
664
665
|
| Adapter | Extension | Style | Runtime support |
|
|
@@ -710,7 +711,7 @@ app.setViewAdapter(new EdgeAdapter());
|
|
|
710
711
|
Or implement the `ViewAdapter` interface for a custom engine:
|
|
711
712
|
|
|
712
713
|
```ts
|
|
713
|
-
import type { ViewAdapter } from 'nexusjs/view';
|
|
714
|
+
import type { ViewAdapter } from '@kabyeon/nexusjs/view';
|
|
714
715
|
|
|
715
716
|
class MyEngine implements ViewAdapter {
|
|
716
717
|
readonly name = 'my-engine';
|
|
@@ -774,21 +775,21 @@ src/
|
|
|
774
775
|
│ ├── commands/ # new, init, make:*, migrate, info
|
|
775
776
|
│ ├── templates/ # mustache-lite scaffolds
|
|
776
777
|
│ └── core/ # arg parser, prompts, fs helpers
|
|
777
|
-
├── auth/ #
|
|
778
|
-
├── queue/ #
|
|
779
|
-
├── schedule/ #
|
|
780
|
-
├── events/ #
|
|
781
|
-
├── session/ #
|
|
782
|
-
├── health/ #
|
|
783
|
-
├── config/ #
|
|
784
|
-
├── logger/ #
|
|
785
|
-
├── static/ #
|
|
786
|
-
├── limiter/ #
|
|
787
|
-
├── shield/ #
|
|
788
|
-
├── cache/ #
|
|
789
|
-
├── drive/ #
|
|
790
|
-
├── mail/ #
|
|
791
|
-
└── drizzle/ #
|
|
778
|
+
├── auth/ # `@kabyeon/nexusjs/auth` (better-auth wrapper)
|
|
779
|
+
├── queue/ # `@kabyeon/nexusjs/queue` (BullMQ / Cloudflare / memory)
|
|
780
|
+
├── schedule/ # `@kabyeon/nexusjs/schedule` (custom cron parser)
|
|
781
|
+
├── events/ # `@kabyeon/nexusjs/events` (typed emitter)
|
|
782
|
+
├── session/ # `@kabyeon/nexusjs/session` (cookie / memory / drizzle backends)
|
|
783
|
+
├── health/ # `@kabyeon/nexusjs/health` (live/ready/startup + indicators)
|
|
784
|
+
├── config/ # `@kabyeon/nexusjs/config` (Zod-validated env config)
|
|
785
|
+
├── logger/ # `@kabyeon/nexusjs/logger` (Pino transports)
|
|
786
|
+
├── static/ # `@kabyeon/nexusjs/static` (file serving)
|
|
787
|
+
├── limiter/ # `@kabyeon/nexusjs/limiter` (rate limiting)
|
|
788
|
+
├── shield/ # `@kabyeon/nexusjs/shield` (CSRF + security headers)
|
|
789
|
+
├── cache/ # `@kabyeon/nexusjs/cache` (LRU + drizzle)
|
|
790
|
+
├── drive/ # `@kabyeon/nexusjs/drive` (storage abstraction)
|
|
791
|
+
├── mail/ # `@kabyeon/nexusjs/mail` (SMTP / File / Null)
|
|
792
|
+
└── drizzle/ # `@kabyeon/nexusjs/drizzle` (default ORM)
|
|
792
793
|
├── drivers/ # postgres / mysql / sqlite / bun-sqlite / d1
|
|
793
794
|
├── repository/ # DrizzleRepository (Lucid-style)
|
|
794
795
|
├── decorators/ # @Table / @Column / @PrimaryKey
|
|
@@ -809,20 +810,20 @@ v1.0, only major bumps will.
|
|
|
809
810
|
### Shipped
|
|
810
811
|
|
|
811
812
|
- **v0.1** (2026-04-30) — MVC core, DI, validation, Rendu / Edge / Inertia adapters, CLI bootstrap.
|
|
812
|
-
- **v0.2** (2026-05-15) —
|
|
813
|
-
- **v0.3** (2026-06-21) — production basics, cross-cutting features,
|
|
814
|
-
- **v0.4** (2026-06-22) — observability + DX:
|
|
815
|
-
- **v0.5** (2026-06-23) — realtime + crypto + i18n + redis:
|
|
816
|
-
- **v0.6** (2026-06-24) — gRPC + tooling:
|
|
817
|
-
- **v0.6.1** (2026-06-25) — patch: `nexus` →
|
|
818
|
-
- **v0.6.3** (2026-06-26) — view engine extracted to
|
|
813
|
+
- **v0.2** (2026-05-15) — `@kabyeon/nexusjs/auth`, `@kabyeon/nexusjs/queue`, `@kabyeon/nexusjs/schedule`, `@kabyeon/nexusjs/events`, `@kabyeon/nexusjs/session`, full `nx` CLI.
|
|
814
|
+
- **v0.3** (2026-06-21) — production basics, cross-cutting features, `@kabyeon/nexusjs/drizzle` as the default ORM.
|
|
815
|
+
- **v0.4** (2026-06-22) — observability + DX: `@kabyeon/nexusjs/openapi`, `@kabyeon/nexusjs/upload`, `@kabyeon/nexusjs/sse`, `@kabyeon/nexusjs/tracing`, `@kabyeon/nexusjs/metrics`, request-scoped DI in core.
|
|
816
|
+
- **v0.5** (2026-06-23) — realtime + crypto + i18n + redis: `@kabyeon/nexusjs/ws`, `@kabyeon/nexusjs/crypto`, `@kabyeon/nexusjs/i18n`, `@kabyeon/nexusjs/redis`.
|
|
817
|
+
- **v0.6** (2026-06-24) — gRPC + tooling: `@kabyeon/nexusjs/grpc` (reflection-based server + typed client) and a publishable `dist/` pipeline (`bin` field, `dist/src/*` flatten).
|
|
818
|
+
- **v0.6.1** (2026-06-25) — patch: `nexus` → `@kabyeon/nexusjs` rename across all sources (191 files), `bin` field fix, `dist/src/*` flatten, docs in sync with the published name. No new features.
|
|
819
|
+
- **v0.6.3** (2026-06-26) — view engine extracted to `@kabyeon/nexusjs/view`, Eta adapter, file-based view paths, auto-detection by extension.
|
|
819
820
|
- **v0.6.4** (2026-06-22) — default view engine to Rendu, CLI view options include eta, Application auto-loads viewPaths from nx.config.ts, static file path fix, scaffold deduplication.
|
|
820
|
-
- **v0.6.
|
|
821
|
+
- **v0.6.6** (2026-06-22) — env-aware config, `nx db:generate`, built-in `sessionMiddleware()`, scaffold generates `.env`/`.env.local`/`.gitignore`, drizzle model import fix, `make:crud` repository fix.
|
|
821
822
|
|
|
822
823
|
### Planned
|
|
823
824
|
|
|
824
|
-
- **v0.7** —
|
|
825
|
-
- **v0.8** —
|
|
825
|
+
- **v0.7** — `@kabyeon/nexusjs/graphql` (code-first schema) and `@kabyeon/nexusjs/resilience` (circuit breaker, retry, bulkhead).
|
|
826
|
+
- **v0.8** — `@kabyeon/nexusjs/feature-flag` (canary / A/B testing), runtime parity test suite, performance benchmarks across Bun / Node / Workers.
|
|
826
827
|
- **v1.0** — stable public API surface with semver guarantees, removal of all v0.1 deprecated aliases, long-term LTS support plan.
|
|
827
828
|
|
|
828
829
|
Detailed release notes for every version live in
|
|
@@ -23,7 +23,7 @@
|
|
|
23
23
|
* Seed file example:
|
|
24
24
|
*
|
|
25
25
|
* // db/seeds/01_users.ts
|
|
26
|
-
* import type { SeedContext } from "nexusjs/cli";
|
|
26
|
+
* import type { SeedContext } from "@kabyeon/nexusjs/cli";
|
|
27
27
|
*
|
|
28
28
|
* export default async function seed(ctx: SeedContext) {
|
|
29
29
|
* await ctx.db.insert(users).values([
|
package/dist/cli/index.js
CHANGED
|
@@ -2441,7 +2441,7 @@ export const {{ camel }}Routes = {
|
|
|
2441
2441
|
|
|
2442
2442
|
// src/cli/templates/controller/nest.ts
|
|
2443
2443
|
var nest_default = `
|
|
2444
|
-
import { Body, Controller, Delete, Get, Inject, Param, Post, Put } from 'nexusjs';
|
|
2444
|
+
import { Body, Controller, Delete, Get, Inject, Param, Post, Put } from '@kabyeon/nexusjs';
|
|
2445
2445
|
import { {{ service }} } from '../services/{{ kebab }}.service.js';
|
|
2446
2446
|
|
|
2447
2447
|
@Controller('/{{ kebab }}s')
|
|
@@ -2477,11 +2477,11 @@ export class {{ name }}Controller {
|
|
|
2477
2477
|
|
|
2478
2478
|
// src/cli/templates/crud/controller.ts
|
|
2479
2479
|
var controller_default = `
|
|
2480
|
-
import { Body, Controller, Delete, Get, Inject, Param, Post, Put } from 'nexusjs';
|
|
2480
|
+
import { Body, Controller, Delete, Get, Inject, Param, Post, Put } from '@kabyeon/nexusjs';
|
|
2481
2481
|
import { z } from 'zod';
|
|
2482
|
-
import { Validate } from 'nexusjs';
|
|
2482
|
+
import { Validate } from '@kabyeon/nexusjs';
|
|
2483
2483
|
import { {{ service }} } from '../services/{{ kebab }}.service.js';
|
|
2484
|
-
{{#hasInertia}}import { Inertia } from 'nexusjs/view/inertia';{{/hasInertia}}
|
|
2484
|
+
{{#hasInertia}}import { Inertia } from '@kabyeon/nexusjs/view/inertia';{{/hasInertia}}
|
|
2485
2485
|
|
|
2486
2486
|
const Create{{ name }}Schema = z.object({
|
|
2487
2487
|
// TODO: define fields
|
|
@@ -2557,7 +2557,7 @@ export type Update{{ name }} = z.infer<typeof Update{{ name }}Dto>;
|
|
|
2557
2557
|
|
|
2558
2558
|
// src/cli/templates/crud/module.ts
|
|
2559
2559
|
var module_default = `
|
|
2560
|
-
import { Module } from 'nexusjs';
|
|
2560
|
+
import { Module } from '@kabyeon/nexusjs';
|
|
2561
2561
|
import { {{ controller }} } from '../controllers/{{ kebab }}.controller.js';
|
|
2562
2562
|
import { {{ service }} } from '../services/{{ kebab }}.service.js';
|
|
2563
2563
|
{{#hasRepo}}import { {{ repository }} } from '../repositories/{{ kebab }}.repository.js';{{/hasRepo}}
|
|
@@ -2576,7 +2576,7 @@ export class {{ name }}Module {}
|
|
|
2576
2576
|
// src/cli/templates/crud/test.ts
|
|
2577
2577
|
var test_default = `
|
|
2578
2578
|
import { describe, it, expect, beforeEach } from 'vitest';
|
|
2579
|
-
import { Application } from 'nexusjs';
|
|
2579
|
+
import { Application } from '@kabyeon/nexusjs';
|
|
2580
2580
|
import { {{ name }}Module } from '../{{ kebab }}.module.js';
|
|
2581
2581
|
|
|
2582
2582
|
describe('{{ controller }}', () => {
|
|
@@ -2606,7 +2606,7 @@ describe('{{ controller }}', () => {
|
|
|
2606
2606
|
|
|
2607
2607
|
// src/cli/templates/middleware/middleware.ts
|
|
2608
2608
|
var middleware_default = `
|
|
2609
|
-
import { Injectable } from 'nexusjs';
|
|
2609
|
+
import { Injectable } from '@kabyeon/nexusjs';
|
|
2610
2610
|
import type { Context, Next } from 'hono';
|
|
2611
2611
|
|
|
2612
2612
|
/**
|
|
@@ -2674,7 +2674,7 @@ export type New{{ name }} = typeof {{ snake }}.$inferInsert;
|
|
|
2674
2674
|
var kysely_default = `
|
|
2675
2675
|
import type { Generated, Insertable, Selectable, Updateable } from 'kysely';
|
|
2676
2676
|
import { Kysely } from 'kysely';
|
|
2677
|
-
import { Inject, Injectable } from 'nexusjs';
|
|
2677
|
+
import { Inject, Injectable } from '@kabyeon/nexusjs';
|
|
2678
2678
|
|
|
2679
2679
|
export interface {{ name }}Table {
|
|
2680
2680
|
id: Generated<number>;
|
|
@@ -2733,7 +2733,7 @@ var prisma_default = `
|
|
|
2733
2733
|
*/
|
|
2734
2734
|
|
|
2735
2735
|
import { PrismaClient } from '@prisma/client';
|
|
2736
|
-
import { Inject, Injectable } from 'nexusjs';
|
|
2736
|
+
import { Inject, Injectable } from '@kabyeon/nexusjs';
|
|
2737
2737
|
|
|
2738
2738
|
@Injectable()
|
|
2739
2739
|
export class {{ name }}Repository {
|
|
@@ -2763,7 +2763,7 @@ export class {{ name }}Repository {
|
|
|
2763
2763
|
|
|
2764
2764
|
// src/cli/templates/module/module.ts
|
|
2765
2765
|
var module_default2 = `
|
|
2766
|
-
import { Module } from 'nexusjs';
|
|
2766
|
+
import { Module } from '@kabyeon/nexusjs';
|
|
2767
2767
|
import { {{ controller }} } from '../controllers/{{ kebab }}.controller.js';
|
|
2768
2768
|
{{#hasService}}import { {{ service }} } from '../services/{{ kebab }}.service.js';{{/hasService}}
|
|
2769
2769
|
{{#hasRepo}}import { {{ repository }} } from '../repositories/{{ kebab }}.repository.js';{{/hasRepo}}
|
|
@@ -2864,8 +2864,8 @@ export default defineConfig({
|
|
|
2864
2864
|
|
|
2865
2865
|
// src/cli/templates/repository/repository.ts
|
|
2866
2866
|
var repository_default = `
|
|
2867
|
-
import { Injectable } from 'nexusjs';
|
|
2868
|
-
import { DrizzleRepository } from 'nexusjs/drizzle';
|
|
2867
|
+
import { Injectable } from '@kabyeon/nexusjs';
|
|
2868
|
+
import { DrizzleRepository } from '@kabyeon/nexusjs/drizzle';
|
|
2869
2869
|
import { {{ tableName }} } from '../models/{{ kebab }}.model.js';
|
|
2870
2870
|
import type { {{ name }}, New{{ name }} } from '../models/{{ kebab }}.model.js';
|
|
2871
2871
|
|
|
@@ -2879,7 +2879,7 @@ export class {{ repository }} extends DrizzleRepository<typeof {{ tableName }},
|
|
|
2879
2879
|
|
|
2880
2880
|
// src/cli/templates/service/service.ts
|
|
2881
2881
|
var service_default = `
|
|
2882
|
-
import { Inject, Injectable } from 'nexusjs';
|
|
2882
|
+
import { Inject, Injectable } from '@kabyeon/nexusjs';
|
|
2883
2883
|
{{#hasRepo}}import { {{ repository }} } from '../repositories/{{ kebab }}.repository.js';{{/hasRepo}}
|
|
2884
2884
|
|
|
2885
2885
|
@Injectable()
|
|
@@ -3053,7 +3053,7 @@ var initCommand = {
|
|
|
3053
3053
|
if (entry.mode === "merge-pkg") {
|
|
3054
3054
|
if (exists) {
|
|
3055
3055
|
mergePackageJson(abs, {
|
|
3056
|
-
nexusjs: "*",
|
|
3056
|
+
"@kabyeon/nexusjs": "*",
|
|
3057
3057
|
"reflect-metadata": "^0.2.2",
|
|
3058
3058
|
hono: "^4.6.0",
|
|
3059
3059
|
zod: "^3.23.8"
|
|
@@ -3073,7 +3073,7 @@ var initCommand = {
|
|
|
3073
3073
|
nx: "nx"
|
|
3074
3074
|
},
|
|
3075
3075
|
dependencies: {
|
|
3076
|
-
nexusjs: "*",
|
|
3076
|
+
"@kabyeon/nexusjs": "*",
|
|
3077
3077
|
"reflect-metadata": "^0.2.2",
|
|
3078
3078
|
hono: "^4.6.0",
|
|
3079
3079
|
zod: "^3.23.8"
|
|
@@ -3206,8 +3206,8 @@ DATABASE_URL=app.db
|
|
|
3206
3206
|
`;
|
|
3207
3207
|
case "app/main.ts":
|
|
3208
3208
|
return `import 'reflect-metadata';
|
|
3209
|
-
import { Application } from 'nexusjs';
|
|
3210
|
-
import { StaticModule } from 'nexusjs/static';
|
|
3209
|
+
import { Application } from '@kabyeon/nexusjs';
|
|
3210
|
+
import { StaticModule } from '@kabyeon/nexusjs/static';
|
|
3211
3211
|
import { AppModule } from './app.module.js';
|
|
3212
3212
|
|
|
3213
3213
|
const app = new Application(AppModule);
|
|
@@ -3219,7 +3219,7 @@ await app.listen(port);
|
|
|
3219
3219
|
console.log("[nexusjs] Listening on http://localhost:" + port);
|
|
3220
3220
|
`;
|
|
3221
3221
|
case "app/app.module.ts":
|
|
3222
|
-
return `import { Module } from 'nexusjs';
|
|
3222
|
+
return `import { Module } from '@kabyeon/nexusjs';
|
|
3223
3223
|
import { HomeController } from './controllers/home.controller.js';
|
|
3224
3224
|
|
|
3225
3225
|
@Module({
|
|
@@ -3229,7 +3229,7 @@ import { HomeController } from './controllers/home.controller.js';
|
|
|
3229
3229
|
export class AppModule {}
|
|
3230
3230
|
`;
|
|
3231
3231
|
case "app/controllers/home.controller.ts":
|
|
3232
|
-
return `import { Controller, Get } from 'nexusjs';
|
|
3232
|
+
return `import { Controller, Get } from '@kabyeon/nexusjs';
|
|
3233
3233
|
|
|
3234
3234
|
@Controller('/')
|
|
3235
3235
|
export class HomeController {
|
|
@@ -3360,7 +3360,7 @@ var AUTH_INSTANCE_TEMPLATE = `/**
|
|
|
3360
3360
|
* Edit \`nx.config.ts\` (\`auth\` section) instead of this file when possible.
|
|
3361
3361
|
*/
|
|
3362
3362
|
import 'reflect-metadata';
|
|
3363
|
-
import { createAuth } from 'nexusjs/auth';
|
|
3363
|
+
import { createAuth } from '@kabyeon/nexusjs/auth';
|
|
3364
3364
|
|
|
3365
3365
|
export const auth = createAuth({
|
|
3366
3366
|
{{^jwt}}
|
|
@@ -3400,7 +3400,7 @@ BETTER_AUTH_URL=http://localhost:3000
|
|
|
3400
3400
|
{{/entries}}
|
|
3401
3401
|
{{/providers}}
|
|
3402
3402
|
`;
|
|
3403
|
-
var MODULE_UPDATE_HINT = `import { AuthModule } from 'nexusjs/auth';
|
|
3403
|
+
var MODULE_UPDATE_HINT = `import { AuthModule } from '@kabyeon/nexusjs/auth';
|
|
3404
3404
|
// In your AppModule.imports:
|
|
3405
3405
|
imports: [AuthModule.forRoot({ /* ... */ })],
|
|
3406
3406
|
`;
|
|
@@ -3883,8 +3883,8 @@ var make_crud_default = makeCrudCommand;
|
|
|
3883
3883
|
// src/cli/commands/make-listener.ts
|
|
3884
3884
|
import { resolve as resolve8 } from "path";
|
|
3885
3885
|
var LISTENER_TEMPLATE = `
|
|
3886
|
-
import { Inject, Injectable } from 'nexusjs';
|
|
3887
|
-
import { EventService, OnEvent } from 'nexusjs/events';
|
|
3886
|
+
import { Inject, Injectable } from '@kabyeon/nexusjs';
|
|
3887
|
+
import { EventService, OnEvent } from '@kabyeon/nexusjs/events';
|
|
3888
3888
|
|
|
3889
3889
|
/**
|
|
3890
3890
|
* {{ name }} listener \u2014 generated by \`nx make:listener {{ name }}\`.
|
|
@@ -3904,7 +3904,7 @@ export class {{ name }}Listener {
|
|
|
3904
3904
|
// }
|
|
3905
3905
|
}
|
|
3906
3906
|
|
|
3907
|
-
import { scanForListeners } from 'nexusjs/events';
|
|
3907
|
+
import { scanForListeners } from '@kabyeon/nexusjs/events';
|
|
3908
3908
|
|
|
3909
3909
|
/**
|
|
3910
3910
|
* Bootstrap helper \u2014 call this from your main.ts (or wherever you
|
|
@@ -4316,8 +4316,8 @@ var make_module_default = makeModuleCommand;
|
|
|
4316
4316
|
// src/cli/commands/make-queue.ts
|
|
4317
4317
|
import { resolve as resolve13 } from "path";
|
|
4318
4318
|
var WORKER_TEMPLATE = `
|
|
4319
|
-
import { Inject, Injectable } from 'nexusjs';
|
|
4320
|
-
import { QueueService, OnQueueReady } from 'nexusjs/queue';
|
|
4319
|
+
import { Inject, Injectable } from '@kabyeon/nexusjs';
|
|
4320
|
+
import { QueueService, OnQueueReady } from '@kabyeon/nexusjs/queue';
|
|
4321
4321
|
|
|
4322
4322
|
/**
|
|
4323
4323
|
* {{ name }} worker \u2014 generated by \`nx make:queue {{ name }}\`.
|
|
@@ -4362,8 +4362,8 @@ export interface {{ name }}Data {
|
|
|
4362
4362
|
}
|
|
4363
4363
|
`.trimStart();
|
|
4364
4364
|
var JOB_HELPER_TEMPLATE = `
|
|
4365
|
-
import { Inject, Injectable } from 'nexusjs';
|
|
4366
|
-
import { QueueService } from 'nexusjs/queue';
|
|
4365
|
+
import { Inject, Injectable } from '@kabyeon/nexusjs';
|
|
4366
|
+
import { QueueService } from '@kabyeon/nexusjs/queue';
|
|
4367
4367
|
import type { {{ name }}Data } from './{{ kebab }}.worker.js';
|
|
4368
4368
|
|
|
4369
4369
|
/**
|
|
@@ -4391,7 +4391,7 @@ export class {{ name }}Job {
|
|
|
4391
4391
|
}
|
|
4392
4392
|
`.trimStart();
|
|
4393
4393
|
var WIRE_HINT = `
|
|
4394
|
-
import { QueueService } from 'nexusjs/queue';
|
|
4394
|
+
import { QueueService } from '@kabyeon/nexusjs/queue';
|
|
4395
4395
|
import { %%NAME%%Job } from './queue/jobs/%%KEBAB%%.job.js';
|
|
4396
4396
|
import { %%NAME%%Worker } from './queue/workers/%%KEBAB%%.worker.js';
|
|
4397
4397
|
|
|
@@ -4479,8 +4479,8 @@ var make_queue_default = makeQueueCommand;
|
|
|
4479
4479
|
// src/cli/commands/make-schedule.ts
|
|
4480
4480
|
import { resolve as resolve14 } from "path";
|
|
4481
4481
|
var TASK_TEMPLATE = `
|
|
4482
|
-
import { Inject, Injectable } from 'nexusjs';
|
|
4483
|
-
import { Cron, Interval, Timeout, ScheduleService } from 'nexusjs/schedule';
|
|
4482
|
+
import { Inject, Injectable } from '@kabyeon/nexusjs';
|
|
4483
|
+
import { Cron, Interval, Timeout, ScheduleService } from '@kabyeon/nexusjs/schedule';
|
|
4484
4484
|
|
|
4485
4485
|
/**
|
|
4486
4486
|
* {{ name }} task \u2014 generated by \`nx make:schedule {{ name }}\`.
|
|
@@ -4506,7 +4506,7 @@ export class {{ name }}Task {
|
|
|
4506
4506
|
// async startup() { /* ... */ }
|
|
4507
4507
|
}
|
|
4508
4508
|
|
|
4509
|
-
import { scanForSchedulers } from 'nexusjs/schedule';
|
|
4509
|
+
import { scanForSchedulers } from '@kabyeon/nexusjs/schedule';
|
|
4510
4510
|
|
|
4511
4511
|
/**
|
|
4512
4512
|
* Bootstrap helper \u2014 call from main.ts to register every @Cron /
|
|
@@ -4594,9 +4594,9 @@ var make_service_default = makeServiceCommand;
|
|
|
4594
4594
|
// src/cli/commands/make-session.ts
|
|
4595
4595
|
import { resolve as resolve16 } from "path";
|
|
4596
4596
|
var SESSION_TEMPLATE = `
|
|
4597
|
-
import { Inject, Injectable } from 'nexusjs';
|
|
4598
|
-
import { SessionService } from 'nexusjs/session';
|
|
4599
|
-
import type { SessionRecord } from 'nexusjs/session';
|
|
4597
|
+
import { Inject, Injectable } from '@kabyeon/nexusjs';
|
|
4598
|
+
import { SessionService } from '@kabyeon/nexusjs/session';
|
|
4599
|
+
import type { SessionRecord } from '@kabyeon/nexusjs/session';
|
|
4600
4600
|
|
|
4601
4601
|
/**
|
|
4602
4602
|
* {{ name }} session helper \u2014 generated by \`nx make:session {{ name }}\`.
|
|
@@ -4785,7 +4785,7 @@ async function runStatus(cwd, folder, dialect, configUrl = "") {
|
|
|
4785
4785
|
}
|
|
4786
4786
|
const script = `
|
|
4787
4787
|
import 'reflect-metadata';
|
|
4788
|
-
import { DrizzleService } from 'nexusjs/drizzle';
|
|
4788
|
+
import { DrizzleService } from '@kabyeon/nexusjs/drizzle';
|
|
4789
4789
|
|
|
4790
4790
|
const url = ${JSON.stringify(url)};
|
|
4791
4791
|
const dialect = ${JSON.stringify(dialect)};
|
|
@@ -4906,7 +4906,7 @@ var SEED_TEMPLATE = `/**
|
|
|
4906
4906
|
* Use ctx.db.insert(table).values([...]) etc. for inserts.
|
|
4907
4907
|
*/
|
|
4908
4908
|
|
|
4909
|
-
import type { SeedContext } from "nexusjs/cli";
|
|
4909
|
+
import type { SeedContext } from "@kabyeon/nexusjs/cli";
|
|
4910
4910
|
|
|
4911
4911
|
export default async function seed(ctx: SeedContext): Promise<void> {
|
|
4912
4912
|
ctx.logger.info("Running seed: {name}");
|
|
@@ -5187,7 +5187,7 @@ var newCommand = {
|
|
|
5187
5187
|
nx: "nx"
|
|
5188
5188
|
},
|
|
5189
5189
|
dependencies: {
|
|
5190
|
-
nexusjs: "*",
|
|
5190
|
+
"@kabyeon/nexusjs": "*",
|
|
5191
5191
|
"reflect-metadata": "^0.2.2",
|
|
5192
5192
|
hono: "^4.6.0",
|
|
5193
5193
|
zod: "^3.23.8"
|
|
@@ -5209,8 +5209,8 @@ var newCommand = {
|
|
|
5209
5209
|
}
|
|
5210
5210
|
`);
|
|
5211
5211
|
writeFileSync3(resolve21(target, "app/main.ts"), `import 'reflect-metadata';
|
|
5212
|
-
import { Application } from 'nexusjs';
|
|
5213
|
-
import { StaticModule } from 'nexusjs/static';
|
|
5212
|
+
import { Application } from '@kabyeon/nexusjs';
|
|
5213
|
+
import { StaticModule } from '@kabyeon/nexusjs/static';
|
|
5214
5214
|
import { AppModule } from './app.module.js';
|
|
5215
5215
|
|
|
5216
5216
|
const app = new Application(AppModule);
|
|
@@ -5221,7 +5221,7 @@ const port = Number(process.env["PORT"] ?? 3000);
|
|
|
5221
5221
|
await app.listen(port);
|
|
5222
5222
|
console.log("[nexusjs] Listening on http://localhost:" + port);
|
|
5223
5223
|
`);
|
|
5224
|
-
writeFileSync3(resolve21(target, "app/app.module.ts"), `import { Module } from 'nexusjs';
|
|
5224
|
+
writeFileSync3(resolve21(target, "app/app.module.ts"), `import { Module } from '@kabyeon/nexusjs';
|
|
5225
5225
|
import { HomeController } from './controllers/home.controller.js';
|
|
5226
5226
|
|
|
5227
5227
|
@Module({
|
|
@@ -5231,7 +5231,7 @@ import { HomeController } from './controllers/home.controller.js';
|
|
|
5231
5231
|
export class AppModule {}
|
|
5232
5232
|
`);
|
|
5233
5233
|
mkdirSync4(resolve21(target, "app/controllers"), { recursive: true });
|
|
5234
|
-
writeFileSync3(resolve21(target, "app/controllers/home.controller.ts"), `import { Controller, Get } from 'nexusjs';
|
|
5234
|
+
writeFileSync3(resolve21(target, "app/controllers/home.controller.ts"), `import { Controller, Get } from '@kabyeon/nexusjs';
|
|
5235
5235
|
|
|
5236
5236
|
@Controller('/')
|
|
5237
5237
|
export class HomeController {
|
|
@@ -6132,5 +6132,5 @@ main().then((code) => process.exit(code)).catch((err) => {
|
|
|
6132
6132
|
process.exit(1);
|
|
6133
6133
|
});
|
|
6134
6134
|
|
|
6135
|
-
//# debugId=
|
|
6135
|
+
//# debugId=00B12A131A811EBF64756E2164756E21
|
|
6136
6136
|
//# sourceMappingURL=index.js.map
|