@tyravel/repl 0.6.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/index.d.ts +2 -0
- package/dist/index.d.ts.map +1 -0
- package/dist/index.js +2 -0
- package/dist/index.js.map +1 -0
- package/dist/repl.d.ts +6 -0
- package/dist/repl.d.ts.map +1 -0
- package/dist/repl.js +194 -0
- package/dist/repl.js.map +1 -0
- package/package.json +40 -0
package/dist/index.d.ts
ADDED
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,SAAS,EAAE,MAAM,WAAW,CAAC"}
|
package/dist/index.js
ADDED
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,SAAS,EAAE,MAAM,WAAW,CAAC"}
|
package/dist/repl.d.ts
ADDED
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"repl.d.ts","sourceRoot":"","sources":["../src/repl.ts"],"names":[],"mappings":"AAeA;;;GAGG;AACH,wBAAsB,SAAS,CAAC,WAAW,EAAE,MAAM,GAAG,OAAO,CAAC,MAAM,CAAC,CAgKpE"}
|
package/dist/repl.js
ADDED
|
@@ -0,0 +1,194 @@
|
|
|
1
|
+
import { existsSync, readdirSync } from 'node:fs';
|
|
2
|
+
import { createRequire } from 'node:module';
|
|
3
|
+
import { join } from 'node:path';
|
|
4
|
+
import { start as startReplServer } from 'node:repl';
|
|
5
|
+
import { homedir } from 'node:os';
|
|
6
|
+
const CYAN = '\x1b[36m';
|
|
7
|
+
const GREEN = '\x1b[32m';
|
|
8
|
+
const YELLOW = '\x1b[33m';
|
|
9
|
+
const RESET = '\x1b[0m';
|
|
10
|
+
/**
|
|
11
|
+
* Start the Tyravel interactive shell.
|
|
12
|
+
* Boots the application and provides a REPL with all facades and models available.
|
|
13
|
+
*/
|
|
14
|
+
export async function startRepl(projectRoot) {
|
|
15
|
+
const context = {};
|
|
16
|
+
// ── Boot the Tyravel application ──────────────────────────────────────
|
|
17
|
+
const bootstrapPath = join(projectRoot, 'bootstrap', 'app.ts');
|
|
18
|
+
const entryPath = join(projectRoot, 'src', 'main.ts');
|
|
19
|
+
try {
|
|
20
|
+
// Try loading the app bootstrap
|
|
21
|
+
const bootstrap = await import(bootstrapPath);
|
|
22
|
+
if (bootstrap.default || bootstrap.app) {
|
|
23
|
+
const app = bootstrap.default || bootstrap.app;
|
|
24
|
+
context.app = app;
|
|
25
|
+
}
|
|
26
|
+
}
|
|
27
|
+
catch {
|
|
28
|
+
// Fallback: try importing src/main.ts
|
|
29
|
+
try {
|
|
30
|
+
const entry = await import(entryPath);
|
|
31
|
+
if (entry.app)
|
|
32
|
+
context.app = entry.app;
|
|
33
|
+
if (entry.default?.isBooted?.())
|
|
34
|
+
context.app = entry.default;
|
|
35
|
+
}
|
|
36
|
+
catch {
|
|
37
|
+
// No app found — shell works without a booted app (limited mode)
|
|
38
|
+
}
|
|
39
|
+
}
|
|
40
|
+
// ── Populate facades ─────────────────────────────────────────────────
|
|
41
|
+
const facades = [
|
|
42
|
+
['Route', '@tyravel/core'],
|
|
43
|
+
['DB', '@tyravel/core'],
|
|
44
|
+
['Auth', '@tyravel/core'],
|
|
45
|
+
['Cache', '@tyravel/core'],
|
|
46
|
+
['Queue', '@tyravel/core'],
|
|
47
|
+
['Events', '@tyravel/core'],
|
|
48
|
+
['Log', '@tyravel/core'],
|
|
49
|
+
['Mail', '@tyravel/core'],
|
|
50
|
+
['Notifications', '@tyravel/core'],
|
|
51
|
+
['Schedule', '@tyravel/core'],
|
|
52
|
+
['Storage', '@tyravel/core'],
|
|
53
|
+
['Config', '@tyravel/config'],
|
|
54
|
+
['collect', '@tyravel/support'],
|
|
55
|
+
];
|
|
56
|
+
const req = createRequire(import.meta.url);
|
|
57
|
+
for (const [name, pkg] of facades) {
|
|
58
|
+
try {
|
|
59
|
+
const mod = req(pkg);
|
|
60
|
+
if (mod[name]) {
|
|
61
|
+
context[name] = mod[name];
|
|
62
|
+
}
|
|
63
|
+
}
|
|
64
|
+
catch {
|
|
65
|
+
// Package not available — skip
|
|
66
|
+
}
|
|
67
|
+
}
|
|
68
|
+
// ── Load models from app/models/ ──────────────────────────────────────
|
|
69
|
+
const modelsDir = join(projectRoot, 'app', 'models');
|
|
70
|
+
if (existsSync(modelsDir)) {
|
|
71
|
+
const modelFiles = readdirSync(modelsDir).filter((f) => f.endsWith('.ts') && !f.endsWith('.test.ts'));
|
|
72
|
+
for (const file of modelFiles) {
|
|
73
|
+
try {
|
|
74
|
+
const modelPath = join(modelsDir, file);
|
|
75
|
+
const mod = await import(modelPath);
|
|
76
|
+
const modelName = file.replace(/\.ts$/, '');
|
|
77
|
+
// Export the default or first named export
|
|
78
|
+
if (mod.default) {
|
|
79
|
+
context[modelName] = mod.default;
|
|
80
|
+
}
|
|
81
|
+
else {
|
|
82
|
+
const keys = Object.keys(mod);
|
|
83
|
+
if (keys.length > 0 && keys[0]) {
|
|
84
|
+
context[keys[0]] = mod[keys[0]];
|
|
85
|
+
}
|
|
86
|
+
}
|
|
87
|
+
}
|
|
88
|
+
catch {
|
|
89
|
+
// Skip models that fail to load
|
|
90
|
+
}
|
|
91
|
+
}
|
|
92
|
+
}
|
|
93
|
+
// ── Colorized greeting ───────────────────────────────────────────────
|
|
94
|
+
console.log('');
|
|
95
|
+
console.log(` ${CYAN}⚡ Tyravel Shell${RESET}`);
|
|
96
|
+
console.log(` ${GREEN}Available:${RESET} Route, DB, Auth, Cache, Queue, Events, Log, Mail, Notifications, Schedule, Storage, collect`);
|
|
97
|
+
if (Object.keys(context).length > 11) {
|
|
98
|
+
const modelCount = Object.keys(context).length - 11 - (context.app ? 1 : 0);
|
|
99
|
+
if (modelCount > 0) {
|
|
100
|
+
console.log(` ${GREEN}Models:${RESET} ${modelCount} loaded`);
|
|
101
|
+
}
|
|
102
|
+
}
|
|
103
|
+
console.log(` ${YELLOW}Tip:${RESET} Type .exit to quit, or .help for REPL commands`);
|
|
104
|
+
console.log('');
|
|
105
|
+
// ── Start REPL server ────────────────────────────────────────────────
|
|
106
|
+
const historyFile = join(homedir(), '.tyravel_shell_history');
|
|
107
|
+
const server = startReplServer({
|
|
108
|
+
prompt: `${CYAN}tyravel>${RESET} `,
|
|
109
|
+
eval: evaluateInContext(context),
|
|
110
|
+
preview: true,
|
|
111
|
+
useColors: false,
|
|
112
|
+
});
|
|
113
|
+
// Setup persistent history
|
|
114
|
+
server.setupHistory(historyFile, (err) => {
|
|
115
|
+
if (err) {
|
|
116
|
+
// Silent — history is a nice-to-have
|
|
117
|
+
}
|
|
118
|
+
});
|
|
119
|
+
// ── Define REPL commands ─────────────────────────────────────────────
|
|
120
|
+
server.defineCommand('models', {
|
|
121
|
+
help: 'List all loaded models',
|
|
122
|
+
action() {
|
|
123
|
+
const modelKeys = Object.keys(context).filter((k) => k !== 'app' && !['Route', 'DB', 'Auth', 'Cache', 'Queue', 'Events', 'Log', 'Mail', 'Notifications', 'Schedule', 'Storage', 'Config', 'collect'].includes(k));
|
|
124
|
+
if (modelKeys.length === 0) {
|
|
125
|
+
console.log('No models loaded.');
|
|
126
|
+
}
|
|
127
|
+
else {
|
|
128
|
+
console.log(`Models (${modelKeys.length}):`);
|
|
129
|
+
for (const key of modelKeys) {
|
|
130
|
+
console.log(` ${GREEN}${key}${RESET}`);
|
|
131
|
+
}
|
|
132
|
+
}
|
|
133
|
+
this.displayPrompt();
|
|
134
|
+
},
|
|
135
|
+
});
|
|
136
|
+
server.defineCommand('facades', {
|
|
137
|
+
help: 'List all available facades',
|
|
138
|
+
action() {
|
|
139
|
+
console.log('Available facades and helpers:');
|
|
140
|
+
const facadeList = ['Route', 'DB', 'Auth', 'Cache', 'Queue', 'Events', 'Log', 'Mail', 'Notifications', 'Schedule', 'Storage', 'Config', 'collect'];
|
|
141
|
+
for (const name of facadeList) {
|
|
142
|
+
const status = context[name] ? `${GREEN}✓${RESET}` : `${YELLOW}✗${RESET}`;
|
|
143
|
+
console.log(` ${status} ${name}`);
|
|
144
|
+
}
|
|
145
|
+
this.displayPrompt();
|
|
146
|
+
},
|
|
147
|
+
});
|
|
148
|
+
// Autocomplete context keys
|
|
149
|
+
server.on('reset', () => {
|
|
150
|
+
// Re-populate context on reset
|
|
151
|
+
for (const [key, value] of Object.entries(context)) {
|
|
152
|
+
server.context[key] = value;
|
|
153
|
+
}
|
|
154
|
+
});
|
|
155
|
+
// Populate initial context
|
|
156
|
+
for (const [key, value] of Object.entries(context)) {
|
|
157
|
+
server.context[key] = value;
|
|
158
|
+
}
|
|
159
|
+
return new Promise((resolvePromise) => {
|
|
160
|
+
server.on('exit', () => {
|
|
161
|
+
resolvePromise(0);
|
|
162
|
+
});
|
|
163
|
+
});
|
|
164
|
+
}
|
|
165
|
+
/**
|
|
166
|
+
* Create a custom eval function that wraps the context.
|
|
167
|
+
* Node's REPL natively supports top-level await since Node 22.
|
|
168
|
+
*/
|
|
169
|
+
function evaluateInContext(context) {
|
|
170
|
+
return (code, _context, _filename, callback) => {
|
|
171
|
+
// Build a function with the context keys as parameters
|
|
172
|
+
const keys = Object.keys(context);
|
|
173
|
+
const vals = keys.map((k) => context[k]);
|
|
174
|
+
const asyncFn = code.includes('await') || code.includes('async');
|
|
175
|
+
const prefix = asyncFn ? 'return (async () => {\n' : '';
|
|
176
|
+
const suffix = asyncFn ? '\n})()' : '';
|
|
177
|
+
try {
|
|
178
|
+
const fn = new Function(...keys, `${prefix}${code}${suffix}`);
|
|
179
|
+
const result = fn(...vals);
|
|
180
|
+
if (result instanceof Promise) {
|
|
181
|
+
result
|
|
182
|
+
.then((val) => callback(null, val))
|
|
183
|
+
.catch((err) => callback(err));
|
|
184
|
+
}
|
|
185
|
+
else {
|
|
186
|
+
callback(null, result);
|
|
187
|
+
}
|
|
188
|
+
}
|
|
189
|
+
catch (err) {
|
|
190
|
+
callback(err instanceof Error ? err : new Error(String(err)));
|
|
191
|
+
}
|
|
192
|
+
};
|
|
193
|
+
}
|
|
194
|
+
//# sourceMappingURL=repl.js.map
|
package/dist/repl.js.map
ADDED
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"repl.js","sourceRoot":"","sources":["../src/repl.ts"],"names":[],"mappings":"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"}
|
package/package.json
ADDED
|
@@ -0,0 +1,40 @@
|
|
|
1
|
+
{
|
|
2
|
+
"name": "@tyravel/repl",
|
|
3
|
+
"version": "0.6.0",
|
|
4
|
+
"description": "Interactive Tyravel REPL (tyravel shell)",
|
|
5
|
+
"license": "MIT",
|
|
6
|
+
"type": "module",
|
|
7
|
+
"main": "./dist/index.js",
|
|
8
|
+
"types": "./dist/index.d.ts",
|
|
9
|
+
"exports": {
|
|
10
|
+
".": {
|
|
11
|
+
"types": "./dist/index.d.ts",
|
|
12
|
+
"import": "./dist/index.js"
|
|
13
|
+
}
|
|
14
|
+
},
|
|
15
|
+
"scripts": {
|
|
16
|
+
"build": "tsc -p tsconfig.json",
|
|
17
|
+
"typecheck": "tsc -p tsconfig.json --noEmit"
|
|
18
|
+
},
|
|
19
|
+
"files": [
|
|
20
|
+
"dist"
|
|
21
|
+
],
|
|
22
|
+
"repository": {
|
|
23
|
+
"type": "git",
|
|
24
|
+
"url": "git+https://github.com/thesimonharms/tyravel.git",
|
|
25
|
+
"directory": "packages/repl"
|
|
26
|
+
},
|
|
27
|
+
"publishConfig": {
|
|
28
|
+
"access": "public"
|
|
29
|
+
},
|
|
30
|
+
"engines": {
|
|
31
|
+
"node": ">=22"
|
|
32
|
+
},
|
|
33
|
+
"dependencies": {
|
|
34
|
+
"@tyravel/core": "0.6.0",
|
|
35
|
+
"@tyravel/support": "0.6.0"
|
|
36
|
+
},
|
|
37
|
+
"devDependencies": {
|
|
38
|
+
"typescript": "^5.7.0"
|
|
39
|
+
}
|
|
40
|
+
}
|