@bluelibs/runner-dev 4.5.0 → 5.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.
- package/README.md +45 -167
- package/dist/cli/entryLoader.js +17 -9
- package/dist/cli/entryLoader.js.map +1 -1
- package/dist/cli/format.js +1 -0
- package/dist/cli/format.js.map +1 -1
- package/dist/cli/generators/initUtils.js +4 -3
- package/dist/cli/generators/initUtils.js.map +1 -1
- package/dist/cli/generators/printNewHelp.js +0 -1
- package/dist/cli/generators/printNewHelp.js.map +1 -1
- package/dist/cli/generators/scaffold/templates/package.json.d.ts +2 -2
- package/dist/cli/generators/scaffold/templates/package.json.js +2 -2
- package/dist/cli/generators/scaffold/templates/package.json.js.map +1 -1
- package/dist/cli/generators/scaffold.js +9 -8
- package/dist/cli/generators/scaffold.js.map +1 -1
- package/dist/cli/init.js +6 -14
- package/dist/cli/init.js.map +1 -1
- package/dist/cli/overview.js +8 -9
- package/dist/cli/overview.js.map +1 -1
- package/dist/cli/ping.js +6 -6
- package/dist/cli/ping.js.map +1 -1
- package/dist/cli/query.js +13 -14
- package/dist/cli/query.js.map +1 -1
- package/dist/cli/schema.js +9 -10
- package/dist/cli/schema.js.map +1 -1
- package/dist/cli.js +17 -9
- package/dist/cli.js.map +1 -1
- package/dist/code.js +1 -3
- package/dist/code.js.map +1 -1
- package/dist/generated/resolvers-types.d.ts +171 -3
- package/dist/index.d.ts +15 -7
- package/dist/index.js +20 -1
- package/dist/index.js.map +1 -1
- package/dist/mcp/env.js +0 -1
- package/dist/mcp/env.js.map +1 -1
- package/dist/resources/cli.config.resource.js.map +1 -1
- package/dist/resources/coverage.resource.js +5 -3
- package/dist/resources/coverage.resource.js.map +1 -1
- package/dist/resources/dev.resource.d.ts +2 -0
- package/dist/resources/dev.resource.js +2 -0
- package/dist/resources/dev.resource.js.map +1 -1
- package/dist/resources/docs.generator.resource.js.map +1 -1
- package/dist/resources/graphql-accumulator.resource.js.map +1 -1
- package/dist/resources/graphql.cli.resource.js.map +1 -1
- package/dist/resources/graphql.query.cli.task.d.ts +5 -3
- package/dist/resources/graphql.query.task.d.ts +5 -3
- package/dist/resources/introspector.cli.resource.js.map +1 -1
- package/dist/resources/introspector.resource.js.map +1 -1
- package/dist/resources/live.resource.d.ts +6 -1
- package/dist/resources/live.resource.js +8 -1
- package/dist/resources/live.resource.js.map +1 -1
- package/dist/resources/models/Introspector.d.ts +25 -2
- package/dist/resources/models/Introspector.js +98 -29
- package/dist/resources/models/Introspector.js.map +1 -1
- package/dist/resources/models/durable.runtime.d.ts +8 -0
- package/dist/resources/models/durable.runtime.js +60 -0
- package/dist/resources/models/durable.runtime.js.map +1 -0
- package/dist/resources/models/durable.tools.d.ts +1 -0
- package/dist/resources/models/durable.tools.js +7 -0
- package/dist/resources/models/durable.tools.js.map +1 -0
- package/dist/resources/models/extractTunnelInfo.d.ts +8 -0
- package/dist/resources/models/extractTunnelInfo.js +85 -0
- package/dist/resources/models/extractTunnelInfo.js.map +1 -0
- package/dist/resources/models/initializeFromStore.js +5 -0
- package/dist/resources/models/initializeFromStore.js.map +1 -1
- package/dist/resources/models/initializeFromStore.utils.d.ts +1 -1
- package/dist/resources/models/initializeFromStore.utils.js +24 -13
- package/dist/resources/models/initializeFromStore.utils.js.map +1 -1
- package/dist/resources/models/introspector.tools.js +1 -1
- package/dist/resources/models/introspector.tools.js.map +1 -1
- package/dist/resources/routeHandlers/createDocsServeHandler.js +7 -5
- package/dist/resources/routeHandlers/createDocsServeHandler.js.map +1 -1
- package/dist/resources/routeHandlers/getDocsData.js +14 -6
- package/dist/resources/routeHandlers/getDocsData.js.map +1 -1
- package/dist/resources/routeHandlers/registerHttpRoutes.hook.d.ts +6 -8
- package/dist/resources/routeHandlers/registerHttpRoutes.hook.js.map +1 -1
- package/dist/resources/server.resource.d.ts +15 -8
- package/dist/resources/server.resource.js +41 -13
- package/dist/resources/server.resource.js.map +1 -1
- package/dist/resources/swap.cli.resource.d.ts +1 -1
- package/dist/resources/swap.cli.resource.js.map +1 -1
- package/dist/resources/swap.resource.d.ts +1 -2
- package/dist/resources/swap.resource.js.map +1 -1
- package/dist/resources/swap.tools.d.ts +1 -1
- package/dist/resources/swap.tools.js +1 -1
- package/dist/resources/swap.tools.js.map +1 -1
- package/dist/resources/telemetry.resource.js.map +1 -1
- package/dist/resources/templates/voyager.html.js +2 -2
- package/dist/resources/ui.static.d.ts +2 -1
- package/dist/resources/ui.static.js +31 -6
- package/dist/resources/ui.static.js.map +1 -1
- package/dist/schema/index.d.ts +1 -1
- package/dist/schema/index.js +1 -1
- package/dist/schema/index.js.map +1 -1
- package/dist/schema/model.d.ts +1 -0
- package/dist/schema/model.js.map +1 -1
- package/dist/schema/mutation.js +6 -1
- package/dist/schema/mutation.js.map +1 -1
- package/dist/schema/query.js.map +1 -1
- package/dist/schema/types/AllType.js.map +1 -1
- package/dist/schema/types/AsyncContextType.js +3 -1
- package/dist/schema/types/AsyncContextType.js.map +1 -1
- package/dist/schema/types/BaseElementCommon.js.map +1 -1
- package/dist/schema/types/DurableFlowTypes.d.ts +9 -0
- package/dist/schema/types/DurableFlowTypes.js +160 -0
- package/dist/schema/types/DurableFlowTypes.js.map +1 -0
- package/dist/schema/types/ErrorType.js +3 -1
- package/dist/schema/types/ErrorType.js.map +1 -1
- package/dist/schema/types/LiveType.js.map +1 -1
- package/dist/schema/types/MiddlewareType.js.map +1 -1
- package/dist/schema/types/ResourceType.js +1 -0
- package/dist/schema/types/ResourceType.js.map +1 -1
- package/dist/schema/types/SwapType.js.map +1 -1
- package/dist/schema/types/TaskLikeCommon.js.map +1 -1
- package/dist/schema/types/TaskType.d.ts +1 -1
- package/dist/schema/types/TaskType.js +20 -1
- package/dist/schema/types/TaskType.js.map +1 -1
- package/dist/schema/types/TunnelInfoType.d.ts +1 -0
- package/dist/schema/types/TunnelInfoType.js +15 -1
- package/dist/schema/types/TunnelInfoType.js.map +1 -1
- package/dist/schema/types/index.d.ts +2 -1
- package/dist/schema/types/index.js +11 -1
- package/dist/schema/types/index.js.map +1 -1
- package/dist/schema/types/middleware/common.js +1 -0
- package/dist/schema/types/middleware/common.js.map +1 -1
- package/dist/schema/utils.js +2 -2
- package/dist/schema/utils.js.map +1 -1
- package/dist/ui/.vite/manifest.json +2 -2
- package/dist/ui/assets/docs-CLK_iFXw.css +1 -0
- package/dist/ui/assets/docs-DnmhGz-y.js +378 -0
- package/dist/ui/assets/docs-DnmhGz-y.js.map +1 -0
- package/dist/utils/json-schema-to-readable.js.map +1 -1
- package/dist/version.d.ts +1 -1
- package/dist/version.js +1 -1
- package/package.json +42 -15
- package/dist/ui/assets/docs-BEJbZEmV.js +0 -417
- package/dist/ui/assets/docs-BEJbZEmV.js.map +0 -1
- package/dist/ui/assets/docs-SCJTS9VT.css +0 -1
package/README.md
CHANGED
|
@@ -1,3 +1,10 @@
|
|
|
1
|
+
# @bluelibs/runner-dev
|
|
2
|
+
|
|
3
|
+
[](https://www.npmjs.com/package/@bluelibs/runner-dev)
|
|
4
|
+
[](https://opensource.org/licenses/MIT)
|
|
5
|
+
|
|
6
|
+
> DevTools for [@bluelibs/runner](https://runner.bluelibs.com) — introspection, live telemetry, hot-swapping, and a GraphQL API for your running app.
|
|
7
|
+
|
|
1
8
|
## Welcome
|
|
2
9
|
|
|
3
10
|
Runner Dev Tools provide introspection, live telemetry, and a GraphQL API to explore and query your running Runner app.
|
|
@@ -39,6 +46,17 @@ const app = resource({
|
|
|
39
46
|
- CLI with scaffolding, query-ing capabilities on a live endpoint or via dry-run mode.
|
|
40
47
|
- MCP server: allow your AI to do introspection for you.
|
|
41
48
|
|
|
49
|
+
## Table of Contents
|
|
50
|
+
|
|
51
|
+
- [Quickstart Guide](#quickstart)
|
|
52
|
+
- [Model Context Protocol (MCP) Server](#cli-usage-mcp-server)
|
|
53
|
+
- [CLI Tooling & Scaffolding](#cli-usage-direct)
|
|
54
|
+
- [Live Telemetry & Correlation](#live-telemetry)
|
|
55
|
+
- [Hot-Swapping Debugging System](#-hot-swapping-debugging-system)
|
|
56
|
+
- [GraphQL API Examples](#example-queries)
|
|
57
|
+
- [API Reference](API_REFERENCE.md)
|
|
58
|
+
- [Contributing & Local Dev](CONTRIBUTING.md)
|
|
59
|
+
|
|
42
60
|
## Quickstart
|
|
43
61
|
|
|
44
62
|
Register the Dev resources in your Runner root:
|
|
@@ -60,6 +78,18 @@ export const app = resource({
|
|
|
60
78
|
});
|
|
61
79
|
```
|
|
62
80
|
|
|
81
|
+
### Accessing the UI
|
|
82
|
+
|
|
83
|
+
Once your application is running with the `dev` resource, you can access the visual DevTools UI:
|
|
84
|
+
|
|
85
|
+
🚀 **Open [http://localhost:1337](http://localhost:1337) in your browser.**
|
|
86
|
+
|
|
87
|
+
Inside the UI, you can:
|
|
88
|
+
- Explore the resource graph.
|
|
89
|
+
- Manually invoke tasks with custom inputs.
|
|
90
|
+
- Inspect live logs and event emissions in real-time.
|
|
91
|
+
- View and edit files directly via the browser.
|
|
92
|
+
|
|
63
93
|
Add it as an Model Context Protocol Server (for AIs) via normal socket:
|
|
64
94
|
|
|
65
95
|
```json
|
|
@@ -285,153 +315,23 @@ Precedence:
|
|
|
285
315
|
- If `--entry-file` is present, dry‑run mode is used.
|
|
286
316
|
- Otherwise, remote mode via `--endpoint`/`ENDPOINT` is used.
|
|
287
317
|
|
|
288
|
-
###
|
|
318
|
+
### CLI Summary
|
|
289
319
|
|
|
290
|
-
|
|
320
|
+
| Category | Description |
|
|
321
|
+
| --- | --- |
|
|
322
|
+
| **New Project** | `runner-dev new <project-name>` |
|
|
323
|
+
| **Scaffolding** | `runner-dev new <resource\|task\|event\|tag\|middleware>` |
|
|
324
|
+
| **Queries** | `runner-dev query 'query { ... }'` |
|
|
325
|
+
| **Overview** | `runner-dev overview --details 10` |
|
|
326
|
+
| **Schema** | `runner-dev schema sdl` |
|
|
291
327
|
|
|
292
|
-
|
|
328
|
+
---
|
|
293
329
|
|
|
294
|
-
|
|
295
|
-
npm run play
|
|
296
|
-
```
|
|
297
|
-
|
|
298
|
-
This starts:
|
|
299
|
-
|
|
300
|
-
- UI watcher (`vite build --watch`)
|
|
301
|
-
- Dummy GraphQL server with Dev resources on port 31337
|
|
330
|
+
## GraphQL API Examples
|
|
302
331
|
|
|
303
|
-
|
|
332
|
+
For a full list of types and fields, see the [API Reference](API_REFERENCE.md).
|
|
304
333
|
|
|
305
|
-
|
|
306
|
-
npm run build
|
|
307
|
-
npm run demo:ping
|
|
308
|
-
npm run demo:query
|
|
309
|
-
npm run demo:overview
|
|
310
|
-
```
|
|
311
|
-
|
|
312
|
-
Alternatively, you can keep a server-only process:
|
|
313
|
-
|
|
314
|
-
```bash
|
|
315
|
-
npm run play:cli
|
|
316
|
-
# Then:
|
|
317
|
-
npm run demo:query
|
|
318
|
-
```
|
|
319
|
-
|
|
320
|
-
### Testing
|
|
321
|
-
|
|
322
|
-
- Unit/integration tests are executed via Jest: `npm test`.
|
|
323
|
-
- CLI remote tests spin up the dummy app on ephemeral ports and dispose cleanly.
|
|
324
|
-
|
|
325
|
-
Run only the CLI tests:
|
|
326
|
-
|
|
327
|
-
```bash
|
|
328
|
-
npm test -- src/__tests__/component/cli.query.remote.test.ts src/__tests__/component/cli.overview.remote.test.ts
|
|
329
|
-
```
|
|
330
|
-
|
|
331
|
-
CI note: we prebuild before tests via `pretest` so the CLI binary `dist/cli.js` is available.
|
|
332
|
-
|
|
333
|
-
## GraphQL API Highlights
|
|
334
|
-
|
|
335
|
-
All arrays are non-null lists with non-null items, and ids are complemented by resolved fields for deep traversal.
|
|
336
|
-
|
|
337
|
-
- Common
|
|
338
|
-
|
|
339
|
-
- `BaseElement`: `id: ID!`, `meta: Meta`, `filePath: String`, `markdownDescription: String!`, `fileContents(startLine: Int, endLine: Int): String`
|
|
340
|
-
- `Meta`: `title: String`, `description: String`, `tags: [MetaTagUsage!]!`
|
|
341
|
-
- `MetaTagUsage`: `id: ID!`, `config: String`
|
|
342
|
-
|
|
343
|
-
- Query root
|
|
344
|
-
|
|
345
|
-
- `all(idIncludes: ID): [BaseElement!]!`
|
|
346
|
-
- `event(id: ID!): Event`, `events(filter: EventFilterInput): [Event!]!`
|
|
347
|
-
- `task(id: ID!): Task`, `tasks(idIncludes: ID): [Task!]!`
|
|
348
|
-
- `hooks(idIncludes: ID): [Hook!]!`
|
|
349
|
-
- `middleware(id: ID!): Middleware`, `middlewares(idIncludes: ID): [Middleware!]!`
|
|
350
|
-
- `taskMiddlewares(idIncludes: ID): [TaskMiddleware!]!`
|
|
351
|
-
- `resourceMiddlewares(idIncludes: ID): [ResourceMiddleware!]!`
|
|
352
|
-
- `resource(id: ID!): Resource`, `resources(idIncludes: ID): [Resource!]!`
|
|
353
|
-
- `root: Resource`
|
|
354
|
-
- `swappedTasks: [SwappedTask!]!`
|
|
355
|
-
- `live: Live!`
|
|
356
|
-
- `diagnostics: [Diagnostic!]!`
|
|
357
|
-
- `tag(id: ID!): Tag`
|
|
358
|
-
- `tags: [Tag!]!`
|
|
359
|
-
|
|
360
|
-
- All
|
|
361
|
-
|
|
362
|
-
- `id`, `meta`, `filePath`, `fileContents`, `markdownDescription`, `tags: [Tag!]!`
|
|
363
|
-
|
|
364
|
-
- Tasks/Hooks
|
|
365
|
-
|
|
366
|
-
- Shared: `emits: [String!]!`, `emitsResolved: [Event!]!`, `runs: [RunRecord!]!`, `tags: [Tag!]!`
|
|
367
|
-
- Shared: `dependsOn: [String!]!`
|
|
368
|
-
- Shared: `middleware: [String!]!`, `middlewareResolved: [TaskMiddleware!]!`, `middlewareResolvedDetailed: [TaskMiddlewareUsage!]!`
|
|
369
|
-
- Shared: `overriddenBy: String`, `registeredBy: String`, `registeredByResolved: Resource`
|
|
370
|
-
- Task-specific: `inputSchema: String`, `inputSchemaReadable: String`, `dependsOnResolved { tasks { id } hooks { id } resources { id } emitters { id } }`
|
|
371
|
-
- Hook-specific: `event: String!`, `hookOrder: Int`, `inputSchema: String`, `inputSchemaReadable: String`
|
|
372
|
-
|
|
373
|
-
- Resources
|
|
374
|
-
|
|
375
|
-
- `config: String`, `context: String`, `configSchema: String`, `configSchemaReadable: String`
|
|
376
|
-
- `middleware`, `middlewareResolved: [ResourceMiddleware!]!`, `middlewareResolvedDetailed: [TaskMiddlewareUsage!]!`
|
|
377
|
-
- `overrides`, `overridesResolved`
|
|
378
|
-
- `registers`, `registersResolved`
|
|
379
|
-
- `usedBy: [Task!]!`
|
|
380
|
-
- `emits: [Event!]!` (inferred from task/hook emissions)
|
|
381
|
-
- `dependsOn: [String!]!`, `dependsOnResolved: [Resource!]!`
|
|
382
|
-
- `registeredBy: String`, `registeredByResolved: Resource`
|
|
383
|
-
- `tags: [Tag!]!`
|
|
384
|
-
|
|
385
|
-
- Events
|
|
386
|
-
|
|
387
|
-
- `emittedBy: [String!]!`, `emittedByResolved: [BaseElement!]!`
|
|
388
|
-
- `listenedToBy: [String!]!`, `listenedToByResolved: [Hook!]!`
|
|
389
|
-
- `payloadSchema: String`, `payloadSchemaReadable: String`
|
|
390
|
-
- `registeredBy: String`, `registeredByResolved: Resource`
|
|
391
|
-
- `tags: [Tag!]!`
|
|
392
|
-
|
|
393
|
-
- TaskMiddleware
|
|
394
|
-
|
|
395
|
-
- `global: GlobalMiddleware`
|
|
396
|
-
- `usedBy: [Task!]!`, `usedByDetailed: [MiddlewareTaskUsage!]!`
|
|
397
|
-
- `emits: [Event!]!`
|
|
398
|
-
- `overriddenBy: String`, `registeredBy: String`, `registeredByResolved: Resource`
|
|
399
|
-
- `configSchema: String`, `configSchemaReadable: String`
|
|
400
|
-
- `tags: [Tag!]!`
|
|
401
|
-
|
|
402
|
-
- ResourceMiddleware
|
|
403
|
-
|
|
404
|
-
- `global: GlobalMiddleware`
|
|
405
|
-
- `usedBy: [Resource!]!`, `usedByDetailed: [MiddlewareResourceUsage!]!`
|
|
406
|
-
- `emits: [Event!]!`
|
|
407
|
-
- `overriddenBy: String`, `registeredBy: String`, `registeredByResolved: Resource`
|
|
408
|
-
- `configSchema: String`, `configSchemaReadable: String`
|
|
409
|
-
- `tags: [Tag!]!`
|
|
410
|
-
|
|
411
|
-
- Live
|
|
412
|
-
|
|
413
|
-
- `logs(afterTimestamp: Float, last: Int, filter: LogFilterInput): [LogEntry!]!`
|
|
414
|
-
- `LogEntry { timestampMs, level, message, data, correlationId }`
|
|
415
|
-
- `LogFilterInput { levels: [LogLevelEnum!], messageIncludes: String, correlationIds: [String!] }`
|
|
416
|
-
- `emissions(afterTimestamp: Float, last: Int, filter: EmissionFilterInput): [EmissionEntry!]!`
|
|
417
|
-
- `EmissionEntry { timestampMs, eventId, emitterId, payload, correlationId, emitterResolved: BaseElement, eventResolved: Event }`
|
|
418
|
-
- `EmissionFilterInput { eventIds: [String!], emitterIds: [String!], correlationIds: [String!] }`
|
|
419
|
-
- `errors(afterTimestamp: Float, last: Int, filter: ErrorFilterInput): [ErrorEntry!]!`
|
|
420
|
-
- `ErrorEntry { timestampMs, sourceId, sourceKind, message, stack, data, correlationId, sourceResolved: BaseElement }`
|
|
421
|
-
- `ErrorFilterInput { sourceKinds: [SourceKindEnum!], sourceIds: [ID!], messageIncludes: String, correlationIds: [String!] }`
|
|
422
|
-
- `runs(afterTimestamp: Float, last: Int, filter: RunFilterInput): [RunRecord!]!`
|
|
423
|
-
- `RunRecord { timestampMs, nodeId, nodeKind, durationMs, ok, error, parentId, rootId, correlationId, nodeResolved: BaseElement }`
|
|
424
|
-
- `RunFilterInput { nodeKinds: [NodeKindEnum!], nodeIds: [String!], ok: Boolean, parentIds: [String!], rootIds: [String!], correlationIds: [String!] }`
|
|
425
|
-
|
|
426
|
-
Enums: `LogLevelEnum` = `trace|debug|info|warn|error|fatal|log`, `SourceKindEnum` = `TASK|HOOK|RESOURCE|MIDDLEWARE|INTERNAL`, `NodeKindEnum` = `TASK|HOOK`.
|
|
427
|
-
|
|
428
|
-
- Diagnostics
|
|
429
|
-
|
|
430
|
-
- `Diagnostic { severity: String!, code: String!, message: String!, nodeId: ID, nodeKind: String }`
|
|
431
|
-
- Exposed via `diagnostics: [Diagnostic!]!` on the root query; diagnostics are computed from the in-memory introspected graph with safe filesystem checks.
|
|
432
|
-
- Example codes: `ORPHAN_EVENT`, `UNEMITTED_EVENT`, `UNUSED_MIDDLEWARE`, `MISSING_FILE`, `OVERRIDE_CONFLICT`.
|
|
433
|
-
|
|
434
|
-
### Example Queries
|
|
334
|
+
### Explore tasks and dependencies deeply
|
|
435
335
|
|
|
436
336
|
- Explore tasks and dependencies deeply
|
|
437
337
|
|
|
@@ -730,35 +630,14 @@ export const logSomething = task({
|
|
|
730
630
|
- If a resource overrides another registerable, the overridden node remains discoverable but marked with `overriddenBy`.
|
|
731
631
|
- Only the active definition exists; we do not retain a shadow copy of the original.
|
|
732
632
|
|
|
733
|
-
##
|
|
633
|
+
## Guidelines & DX
|
|
734
634
|
|
|
735
635
|
- No `any` in APIs; strong types for nodes and relations
|
|
736
636
|
- Non-null lists with non-null items (`[T!]!`) in GraphQL
|
|
737
637
|
- Deep “resolved” fields for easy graph traversal
|
|
738
|
-
- File-aware enhancements
|
|
739
|
-
- `filePath` everywhere
|
|
740
|
-
- `fileContents` and `markdownDescription` on `all` (computed on demand)
|
|
741
|
-
|
|
742
|
-
## Development
|
|
743
|
-
|
|
744
|
-
- Library targets `@bluelibs/runner` v4+
|
|
745
|
-
- GraphQL built with Apollo Server 5
|
|
746
|
-
- Tests cover:
|
|
747
|
-
- Node discovery, dependencies, and emissions
|
|
748
|
-
- Overrides, middleware usage, and deep traversal
|
|
749
|
-
- Live logs and emissions (with timestamp filtering)
|
|
750
|
-
- Contributions welcome!
|
|
751
|
-
|
|
752
|
-
### Type-safe GraphQL resolvers
|
|
753
|
-
|
|
754
|
-
- We generate resolver arg types from the schema using GraphQL Code Generator.
|
|
755
|
-
- Run this after any schema change:
|
|
756
|
-
|
|
757
|
-
```bash
|
|
758
|
-
npm run codegen
|
|
759
|
-
```
|
|
638
|
+
- File-aware enhancements (`filePath`, `fileContents`, etc.)
|
|
760
639
|
|
|
761
|
-
|
|
640
|
+
For full details on development, testing, and codegen, see [CONTRIBUTING.md](CONTRIBUTING.md).
|
|
762
641
|
|
|
763
642
|
## 🔥 Hot-Swapping Debugging System
|
|
764
643
|
|
|
@@ -1253,4 +1132,3 @@ The hot-swapping system consists of:
|
|
|
1253
1132
|
- **Error Handling**: Comprehensive validation and recovery mechanisms
|
|
1254
1133
|
|
|
1255
1134
|
The implementation maintains 100% type safety and provides extensive test coverage with both unit tests and GraphQL integration tests.
|
|
1256
|
-
and GraphQL integration tests.
|
package/dist/cli/entryLoader.js
CHANGED
|
@@ -42,17 +42,23 @@ async function loadEntryExport(entryFile, exportName) {
|
|
|
42
42
|
try {
|
|
43
43
|
runnerMod.run = wrapped;
|
|
44
44
|
}
|
|
45
|
-
catch {
|
|
45
|
+
catch {
|
|
46
|
+
/* intentionally empty */
|
|
47
|
+
}
|
|
46
48
|
try {
|
|
47
49
|
const cache = require.cache[runnerPath];
|
|
48
50
|
if (cache && cache.exports) {
|
|
49
51
|
cache.exports.run = wrapped;
|
|
50
52
|
}
|
|
51
53
|
}
|
|
52
|
-
catch {
|
|
54
|
+
catch {
|
|
55
|
+
/* intentionally empty */
|
|
56
|
+
}
|
|
53
57
|
}
|
|
54
58
|
}
|
|
55
|
-
catch {
|
|
59
|
+
catch {
|
|
60
|
+
/* intentionally empty */
|
|
61
|
+
}
|
|
56
62
|
// Try to load a TS runtime relative to the target project first
|
|
57
63
|
let loadedTsRuntime = null;
|
|
58
64
|
try {
|
|
@@ -62,7 +68,7 @@ async function loadEntryExport(entryFile, exportName) {
|
|
|
62
68
|
catch (e) {
|
|
63
69
|
tsLoaderErrors.push(`tsx (project): ${e.message}`);
|
|
64
70
|
try {
|
|
65
|
-
// eslint-disable-next-line @typescript-eslint/no-
|
|
71
|
+
// eslint-disable-next-line @typescript-eslint/no-require-imports
|
|
66
72
|
require("tsx/cjs");
|
|
67
73
|
loadedTsRuntime = "tsx";
|
|
68
74
|
}
|
|
@@ -78,7 +84,7 @@ async function loadEntryExport(entryFile, exportName) {
|
|
|
78
84
|
catch (e) {
|
|
79
85
|
tsLoaderErrors.push(`ts-node/transpile-only (project): ${e.message}`);
|
|
80
86
|
try {
|
|
81
|
-
// eslint-disable-next-line @typescript-eslint/no-
|
|
87
|
+
// eslint-disable-next-line @typescript-eslint/no-require-imports
|
|
82
88
|
require("ts-node/register/transpile-only");
|
|
83
89
|
loadedTsRuntime = "ts-node/transpile-only";
|
|
84
90
|
}
|
|
@@ -95,7 +101,7 @@ async function loadEntryExport(entryFile, exportName) {
|
|
|
95
101
|
catch (e) {
|
|
96
102
|
tsLoaderErrors.push(`ts-node/register (project): ${e.message}`);
|
|
97
103
|
try {
|
|
98
|
-
// eslint-disable-next-line @typescript-eslint/no-
|
|
104
|
+
// eslint-disable-next-line @typescript-eslint/no-require-imports
|
|
99
105
|
require("ts-node/register");
|
|
100
106
|
loadedTsRuntime = "ts-node/register";
|
|
101
107
|
}
|
|
@@ -122,19 +128,21 @@ async function loadEntryExport(entryFile, exportName) {
|
|
|
122
128
|
try {
|
|
123
129
|
projectRequire("tsconfig-paths/register");
|
|
124
130
|
}
|
|
125
|
-
catch {
|
|
131
|
+
catch {
|
|
132
|
+
/* intentionally empty */
|
|
133
|
+
}
|
|
126
134
|
}
|
|
127
135
|
const errors = [];
|
|
128
136
|
let mod;
|
|
129
137
|
// Try CJS require first (allows tsx/ts-node hooks), then explicit .ts require, then dynamic import
|
|
130
138
|
try {
|
|
131
|
-
// eslint-disable-next-line @typescript-eslint/no-
|
|
139
|
+
// eslint-disable-next-line @typescript-eslint/no-require-imports
|
|
132
140
|
mod = require(abs);
|
|
133
141
|
}
|
|
134
142
|
catch (e) {
|
|
135
143
|
errors.push(`require(${abs}): ${e.message}`);
|
|
136
144
|
try {
|
|
137
|
-
// eslint-disable-next-line @typescript-eslint/no-
|
|
145
|
+
// eslint-disable-next-line @typescript-eslint/no-require-imports
|
|
138
146
|
mod = require(abs.endsWith(".ts") ? abs : `${abs}.ts`);
|
|
139
147
|
}
|
|
140
148
|
catch (e2) {
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"entryLoader.js","sourceRoot":"","sources":["../../src/cli/entryLoader.ts"],"names":[],"mappings":";;;;;AASA,
|
|
1
|
+
{"version":3,"file":"entryLoader.js","sourceRoot":"","sources":["../../src/cli/entryLoader.ts"],"names":[],"mappings":"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"}
|
package/dist/cli/format.js
CHANGED
|
@@ -29,6 +29,7 @@ exports.c = {
|
|
|
29
29
|
title: chain(wrap(1, 22), wrap(36, 39)), // bold + cyan
|
|
30
30
|
cmd: chain(wrap(32, 39), wrap(1, 22)), // green + bold
|
|
31
31
|
};
|
|
32
|
+
// eslint-disable-next-line no-control-regex
|
|
32
33
|
const ANSI_PATTERN = /\u001b\[[0-9;]*m/g;
|
|
33
34
|
function stripAnsi(input) {
|
|
34
35
|
return input.replace(ANSI_PATTERN, "");
|
package/dist/cli/format.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"format.js","sourceRoot":"","sources":["../../src/cli/format.ts"],"names":[],"mappings":";AAAA,iEAAiE;;;
|
|
1
|
+
{"version":3,"file":"format.js","sourceRoot":"","sources":["../../src/cli/format.ts"],"names":[],"mappings":"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"}
|
|
@@ -18,9 +18,7 @@ async function ensureEmptyDir(dir) {
|
|
|
18
18
|
if (fs_1.default.existsSync(dir)) {
|
|
19
19
|
const entries = await promises_1.default.readdir(dir);
|
|
20
20
|
if (entries.length > 0) {
|
|
21
|
-
|
|
22
|
-
console.error(`Target directory '${path_1.default.basename(dir)}' already exists and is not empty.`);
|
|
23
|
-
process.exit(1);
|
|
21
|
+
throw new Error(`Target directory '${path_1.default.basename(dir)}' already exists and is not empty.`);
|
|
24
22
|
}
|
|
25
23
|
return;
|
|
26
24
|
}
|
|
@@ -46,6 +44,9 @@ async function runCommand(cmd, args, cwd) {
|
|
|
46
44
|
cwd,
|
|
47
45
|
stdio: "inherit",
|
|
48
46
|
env: process.env,
|
|
47
|
+
// On Windows, commands like `npm` are exposed as `npm.cmd`.
|
|
48
|
+
// Using a shell ensures those command shims resolve correctly.
|
|
49
|
+
shell: process.platform === "win32",
|
|
49
50
|
});
|
|
50
51
|
child.on("close", (code) => {
|
|
51
52
|
if (code === 0)
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"initUtils.js","sourceRoot":"","sources":["../../../src/cli/generators/initUtils.ts"],"names":[],"mappings":";;;;;AAKA,
|
|
1
|
+
{"version":3,"file":"initUtils.js","sourceRoot":"","sources":["../../../src/cli/generators/initUtils.ts"],"names":[],"mappings":"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"}
|
|
@@ -5,7 +5,6 @@ const format_1 = require("../format");
|
|
|
5
5
|
// scaffold moved to ./generators/scaffold.ts
|
|
6
6
|
// ...helper functions moved to ./generators/initUtils.ts
|
|
7
7
|
function printNewHelp() {
|
|
8
|
-
// eslint-disable-next-line no-console
|
|
9
8
|
console.log([
|
|
10
9
|
"",
|
|
11
10
|
format_1.c.title("runner-dev new"),
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"printNewHelp.js","sourceRoot":"","sources":["../../../src/cli/generators/printNewHelp.ts"],"names":[],"mappings":";;AAIA,
|
|
1
|
+
{"version":3,"file":"printNewHelp.js","sourceRoot":"","sources":["../../../src/cli/generators/printNewHelp.ts"],"names":[],"mappings":"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"}
|
|
@@ -2,7 +2,7 @@ export declare function packageJson(projectName: string): {
|
|
|
2
2
|
readonly name: string;
|
|
3
3
|
readonly version: "0.1.0";
|
|
4
4
|
readonly private: true;
|
|
5
|
-
readonly type: "
|
|
5
|
+
readonly type: "commonjs";
|
|
6
6
|
readonly scripts: {
|
|
7
7
|
readonly dev: "tsx watch src/main.ts";
|
|
8
8
|
readonly start: "node --enable-source-maps dist/main.js";
|
|
@@ -12,7 +12,7 @@ export declare function packageJson(projectName: string): {
|
|
|
12
12
|
readonly "schema:sdl": "runner-dev schema sdl";
|
|
13
13
|
};
|
|
14
14
|
readonly dependencies: {
|
|
15
|
-
readonly "@bluelibs/runner": "^
|
|
15
|
+
readonly "@bluelibs/runner": "^5.0.0";
|
|
16
16
|
};
|
|
17
17
|
readonly devDependencies: {
|
|
18
18
|
readonly "@bluelibs/runner-dev": "^4.0.0";
|
|
@@ -6,7 +6,7 @@ function packageJson(projectName) {
|
|
|
6
6
|
name: projectName,
|
|
7
7
|
version: "0.1.0",
|
|
8
8
|
private: true,
|
|
9
|
-
type: "
|
|
9
|
+
type: "commonjs",
|
|
10
10
|
scripts: {
|
|
11
11
|
dev: "tsx watch src/main.ts",
|
|
12
12
|
start: "node --enable-source-maps dist/main.js",
|
|
@@ -16,7 +16,7 @@ function packageJson(projectName) {
|
|
|
16
16
|
"schema:sdl": "runner-dev schema sdl",
|
|
17
17
|
},
|
|
18
18
|
dependencies: {
|
|
19
|
-
"@bluelibs/runner": "^
|
|
19
|
+
"@bluelibs/runner": "^5.0.0",
|
|
20
20
|
},
|
|
21
21
|
devDependencies: {
|
|
22
22
|
"@bluelibs/runner-dev": "^4.0.0",
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"package.json.js","sourceRoot":"","sources":["../../../../../src/cli/generators/scaffold/templates/package.json.ts"],"names":[],"mappings":";;AAAA,kCA0BC;AA1BD,SAAgB,WAAW,CAAC,WAAmB;IAC7C,OAAO;QACL,IAAI,EAAE,WAAW;QACjB,OAAO,EAAE,OAAO;QAChB,OAAO,EAAE,IAAI;QACb,IAAI,EAAE,
|
|
1
|
+
{"version":3,"file":"package.json.js","sourceRoot":"","sources":["../../../../../src/cli/generators/scaffold/templates/package.json.ts"],"names":[],"mappings":";;AAAA,kCA0BC;AA1BD,SAAgB,WAAW,CAAC,WAAmB;IAC7C,OAAO;QACL,IAAI,EAAE,WAAW;QACjB,OAAO,EAAE,OAAO;QAChB,OAAO,EAAE,IAAI;QACb,IAAI,EAAE,UAAU;QAChB,OAAO,EAAE;YACP,GAAG,EAAE,uBAAuB;YAC5B,KAAK,EAAE,wCAAwC;YAC/C,KAAK,EAAE,sBAAsB;YAC7B,IAAI,EAAE,MAAM;YACZ,YAAY,EAAE,cAAc;YAC5B,YAAY,EAAE,uBAAuB;SACtC;QACD,YAAY,EAAE;YACZ,kBAAkB,EAAE,QAAQ;SAC7B;QACD,eAAe,EAAE;YACf,sBAAsB,EAAE,QAAQ;YAChC,UAAU,EAAE,QAAQ;YACpB,GAAG,EAAE,SAAS;YACd,IAAI,EAAE,SAAS;YACf,SAAS,EAAE,SAAS;YACpB,aAAa,EAAE,UAAU;SAC1B;KACO,CAAC;AACb,CAAC"}
|
|
@@ -32,7 +32,8 @@ const initUtils_1 = require("./initUtils");
|
|
|
32
32
|
const templates = __importStar(require("./scaffold/templates"));
|
|
33
33
|
async function scaffold(opts) {
|
|
34
34
|
const { targetDir, projectName } = opts;
|
|
35
|
-
|
|
35
|
+
// Legacy inline templates kept for reference; actual generation uses templates.*
|
|
36
|
+
const _pkg = {
|
|
36
37
|
name: projectName,
|
|
37
38
|
version: "0.1.0",
|
|
38
39
|
private: true,
|
|
@@ -46,7 +47,7 @@ async function scaffold(opts) {
|
|
|
46
47
|
"schema:sdl": "runner-dev schema sdl",
|
|
47
48
|
},
|
|
48
49
|
dependencies: {
|
|
49
|
-
"@bluelibs/runner": "^
|
|
50
|
+
"@bluelibs/runner": "^5.0.0",
|
|
50
51
|
},
|
|
51
52
|
devDependencies: {
|
|
52
53
|
"@bluelibs/runner-dev": "^4.0.0",
|
|
@@ -57,7 +58,7 @@ async function scaffold(opts) {
|
|
|
57
58
|
"@types/jest": "^29.5.12",
|
|
58
59
|
},
|
|
59
60
|
};
|
|
60
|
-
const
|
|
61
|
+
const _tsconfig = {
|
|
61
62
|
compilerOptions: {
|
|
62
63
|
target: "ESNext",
|
|
63
64
|
module: "Node16",
|
|
@@ -74,7 +75,7 @@ async function scaffold(opts) {
|
|
|
74
75
|
},
|
|
75
76
|
include: ["src"],
|
|
76
77
|
};
|
|
77
|
-
const
|
|
78
|
+
const _jestConfig = `/** @type {import('jest').Config} */
|
|
78
79
|
module.exports = {
|
|
79
80
|
preset: 'ts-jest/presets/default-esm',
|
|
80
81
|
testEnvironment: 'node',
|
|
@@ -92,7 +93,7 @@ module.exports = {
|
|
|
92
93
|
},
|
|
93
94
|
};
|
|
94
95
|
`;
|
|
95
|
-
const
|
|
96
|
+
const _tsconfigJest = {
|
|
96
97
|
extends: "./tsconfig.json",
|
|
97
98
|
compilerOptions: {
|
|
98
99
|
module: "CommonJS",
|
|
@@ -103,7 +104,7 @@ module.exports = {
|
|
|
103
104
|
},
|
|
104
105
|
include: ["src/**/*.ts", "src/**/*.tsx"],
|
|
105
106
|
};
|
|
106
|
-
const
|
|
107
|
+
const _mainTs = `
|
|
107
108
|
import { run, resource } from '@bluelibs/runner';
|
|
108
109
|
import { dev } from '@bluelibs/runner-dev';
|
|
109
110
|
|
|
@@ -126,13 +127,13 @@ run(app)
|
|
|
126
127
|
process.exit(1);
|
|
127
128
|
});
|
|
128
129
|
`;
|
|
129
|
-
const
|
|
130
|
+
const _exampleTest = `describe('smoke', () => {
|
|
130
131
|
it('works', () => {
|
|
131
132
|
expect(1 + 1).toBe(2);
|
|
132
133
|
});
|
|
133
134
|
});
|
|
134
135
|
`;
|
|
135
|
-
const
|
|
136
|
+
const _readme = `# ${projectName}
|
|
136
137
|
|
|
137
138
|
Generated by \`runner-dev new\`.
|
|
138
139
|
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"scaffold.js","sourceRoot":"","sources":["../../../src/cli/generators/scaffold.ts"],"names":[],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;AASA,
|
|
1
|
+
{"version":3,"file":"scaffold.js","sourceRoot":"","sources":["../../../src/cli/generators/scaffold.ts"],"names":[],"mappings":"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"}
|
package/dist/cli/init.js
CHANGED
|
@@ -65,15 +65,14 @@ async function main(argv) {
|
|
|
65
65
|
if (kind === "project") {
|
|
66
66
|
const projectName = (nameOrProject || "my-runner-project").trim();
|
|
67
67
|
if (!/^[a-zA-Z0-9_-]+$/.test(projectName)) {
|
|
68
|
-
// eslint-disable-next-line no-console
|
|
69
68
|
console.error("Invalid project name. Use only letters, numbers, dashes and underscores.");
|
|
70
|
-
process.
|
|
69
|
+
process.exitCode = 1;
|
|
70
|
+
return;
|
|
71
71
|
}
|
|
72
72
|
const targetDir = path_1.default.resolve(process.cwd(), projectName);
|
|
73
73
|
await (0, initUtils_1.ensureEmptyDir)(targetDir);
|
|
74
74
|
const options = { projectName, targetDir };
|
|
75
75
|
await (0, scaffold_1.scaffold)(options);
|
|
76
|
-
// eslint-disable-next-line no-console
|
|
77
76
|
console.log(`\n${format_1.c.green("Project created in")} ${format_1.c.bold(targetDir)}.`);
|
|
78
77
|
// Helpful options & commands
|
|
79
78
|
const flags = (0, format_1.alignRows)([
|
|
@@ -93,7 +92,6 @@ async function main(argv) {
|
|
|
93
92
|
[format_1.c.bold(headersExample), "Add HTTP headers (JSON)"],
|
|
94
93
|
[format_1.c.bold("ALLOW_MUTATIONS=true"), "Enable mutations tool"],
|
|
95
94
|
], { gap: 4, indent: 2 });
|
|
96
|
-
// eslint-disable-next-line no-console
|
|
97
95
|
console.log([
|
|
98
96
|
"",
|
|
99
97
|
format_1.c.title("Helpful options & commands"),
|
|
@@ -108,7 +106,6 @@ async function main(argv) {
|
|
|
108
106
|
env,
|
|
109
107
|
"",
|
|
110
108
|
].join("\n"));
|
|
111
|
-
// eslint-disable-next-line no-console
|
|
112
109
|
console.log([
|
|
113
110
|
format_1.c.bold("Endpoints"),
|
|
114
111
|
(0, format_1.alignRows)([
|
|
@@ -146,7 +143,6 @@ async function main(argv) {
|
|
|
146
143
|
else if (shouldRun && SKIP_RUN) {
|
|
147
144
|
console.log("\nSkipping dev server start due to RUNNER_DEV_* env.\n");
|
|
148
145
|
}
|
|
149
|
-
// eslint-disable-next-line no-console
|
|
150
146
|
console.log(`\n${format_1.c.bold("Next steps")}\n${(0, format_1.alignRows)([
|
|
151
147
|
[format_1.c.cmd(`cd ${projectName}`), "enter project directory"],
|
|
152
148
|
[format_1.c.cmd("npm install"), "install dependencies"],
|
|
@@ -157,9 +153,9 @@ async function main(argv) {
|
|
|
157
153
|
// Artifact scaffolding in existing project
|
|
158
154
|
const nameRaw = (nameOrProject || "").trim();
|
|
159
155
|
if (!nameRaw) {
|
|
160
|
-
// eslint-disable-next-line no-console
|
|
161
156
|
console.error(`Please provide a name. Usage: runner-dev new ${kind} <name> [--ns app] [--dir src] [--dry]`);
|
|
162
|
-
process.
|
|
157
|
+
process.exitCode = 1;
|
|
158
|
+
return;
|
|
163
159
|
}
|
|
164
160
|
const nsArg = flagGet("ns") || flagGet("namespace") || "app";
|
|
165
161
|
const baseDir = flagGet("dir") || "src";
|
|
@@ -181,19 +177,15 @@ async function main(argv) {
|
|
|
181
177
|
});
|
|
182
178
|
}
|
|
183
179
|
catch (e) {
|
|
184
|
-
// eslint-disable-next-line no-console
|
|
185
180
|
console.error(e?.message || String(e));
|
|
186
|
-
process.
|
|
187
|
-
return;
|
|
181
|
+
process.exitCode = 1;
|
|
182
|
+
return;
|
|
188
183
|
}
|
|
189
184
|
if (dryRun && res.content) {
|
|
190
|
-
// eslint-disable-next-line no-console
|
|
191
185
|
console.log(`\n${format_1.c.title("Dry run (no files written)")}`);
|
|
192
|
-
// eslint-disable-next-line no-console
|
|
193
186
|
console.log(["Path:", res.filePath, "\n\n", res.content].join("\n"));
|
|
194
187
|
return;
|
|
195
188
|
}
|
|
196
|
-
// eslint-disable-next-line no-console
|
|
197
189
|
console.log(`\n${format_1.c.green("Created")} ${format_1.c.bold(path_1.default.relative(process.cwd(), res.filePath))}\n` +
|
|
198
190
|
(0, format_1.alignRows)([
|
|
199
191
|
[format_1.c.cyan("id"), res.id],
|