fix(core): update
This commit is contained in:
parent
8909149af8
commit
046a0ff55f
2
assets/denoentry.ts
Normal file
2
assets/denoentry.ts
Normal file
@ -0,0 +1,2 @@
|
|||||||
|
console.log('Hello from deno');
|
||||||
|
|
@ -22,9 +22,13 @@
|
|||||||
"@types/node": "^20.8.7"
|
"@types/node": "^20.8.7"
|
||||||
},
|
},
|
||||||
"dependencies": {
|
"dependencies": {
|
||||||
|
"@api.global/typedserver": "^3.0.27",
|
||||||
|
"@push.rocks/lik": "^6.0.14",
|
||||||
"@push.rocks/smartarchive": "^4.0.22",
|
"@push.rocks/smartarchive": "^4.0.22",
|
||||||
|
"@push.rocks/smartfile": "^11.0.4",
|
||||||
"@push.rocks/smartpath": "^5.0.11",
|
"@push.rocks/smartpath": "^5.0.11",
|
||||||
"@push.rocks/smartshell": "^3.0.4"
|
"@push.rocks/smartshell": "^3.0.4",
|
||||||
|
"@push.rocks/smartunique": "^3.0.8"
|
||||||
},
|
},
|
||||||
"repository": {
|
"repository": {
|
||||||
"type": "git",
|
"type": "git",
|
||||||
|
198
pnpm-lock.yaml
generated
198
pnpm-lock.yaml
generated
File diff suppressed because it is too large
Load Diff
@ -8,9 +8,13 @@ tap.test('should create a valid smartdeno instance', async () => {
|
|||||||
});
|
});
|
||||||
|
|
||||||
tap.test('should download deno', async () => {
|
tap.test('should download deno', async () => {
|
||||||
await testSmartdeno.init({
|
await testSmartdeno.start({
|
||||||
forceLocalDeno: true
|
forceLocalDeno: true
|
||||||
});
|
});
|
||||||
})
|
})
|
||||||
|
|
||||||
|
tap.test('should execute a script', async () => {
|
||||||
|
await testSmartdeno.executeScript(`console.log("A script from deno!")`);
|
||||||
|
})
|
||||||
|
|
||||||
tap.start()
|
tap.start()
|
||||||
|
@ -3,6 +3,6 @@
|
|||||||
*/
|
*/
|
||||||
export const commitinfo = {
|
export const commitinfo = {
|
||||||
name: '@push.rocks/smartdeno',
|
name: '@push.rocks/smartdeno',
|
||||||
version: '1.0.2',
|
version: '1.0.3',
|
||||||
description: 'a module to run deno from node'
|
description: 'a module to run deno from node'
|
||||||
}
|
}
|
||||||
|
@ -65,6 +65,9 @@ export class DenoDownloader {
|
|||||||
} catch (error) {
|
} catch (error) {
|
||||||
console.error(`Error downloading Deno: ${error.message}`);
|
console.error(`Error downloading Deno: ${error.message}`);
|
||||||
}
|
}
|
||||||
|
if (await plugins.smartfile.fs.fileExists(plugins.path.join(paths.nogitDir, 'deno'))) {
|
||||||
|
return;
|
||||||
|
}
|
||||||
const smartarchive = await plugins.smartarchive.SmartArchive.fromArchiveFile(outputPath);
|
const smartarchive = await plugins.smartarchive.SmartArchive.fromArchiveFile(outputPath);
|
||||||
const directory = plugins.path.dirname(outputPath);
|
const directory = plugins.path.dirname(outputPath);
|
||||||
console.log(`Extracting deno.zip to ${directory}`);
|
console.log(`Extracting deno.zip to ${directory}`);
|
||||||
|
21
ts/classes.denoexecution.ts
Normal file
21
ts/classes.denoexecution.ts
Normal file
@ -0,0 +1,21 @@
|
|||||||
|
import type { ScriptServer } from './classes.scriptserver.js';
|
||||||
|
import * as plugins from './plugins.js';
|
||||||
|
|
||||||
|
/* This file contains logic to execute deno commands in an ephermal way */
|
||||||
|
|
||||||
|
export class DenoExecution {
|
||||||
|
public id: string;
|
||||||
|
public scriptserverRef: ScriptServer;
|
||||||
|
public script: string;
|
||||||
|
|
||||||
|
constructor(scriptserverRef: ScriptServer, scriptArg: string) {
|
||||||
|
this.scriptserverRef = scriptserverRef;
|
||||||
|
this.script = scriptArg;
|
||||||
|
this.id = plugins.smartunique.shortId();
|
||||||
|
}
|
||||||
|
|
||||||
|
public async execute() {
|
||||||
|
this.scriptserverRef.executionMap.add(this);
|
||||||
|
await this.scriptserverRef.smartshellInstance.exec(`deno run http://localhost:3210/getscript/${this.id}`)
|
||||||
|
}
|
||||||
|
}
|
31
ts/classes.scriptserver.ts
Normal file
31
ts/classes.scriptserver.ts
Normal file
@ -0,0 +1,31 @@
|
|||||||
|
import type { DenoExecution } from './classes.denoexecution.js';
|
||||||
|
import * as plugins from './plugins.js';
|
||||||
|
|
||||||
|
export class ScriptServer {
|
||||||
|
private server: plugins.typedserver.servertools.Server;
|
||||||
|
public smartshellInstance = new plugins.smarthshell.Smartshell({
|
||||||
|
executor: 'bash'
|
||||||
|
});
|
||||||
|
|
||||||
|
public executionMap = new plugins.lik.ObjectMap<DenoExecution>();
|
||||||
|
|
||||||
|
public async start() {
|
||||||
|
this.server = new plugins.typedserver.servertools.Server({
|
||||||
|
port: 3210,
|
||||||
|
cors: true,
|
||||||
|
});
|
||||||
|
this.server.addRoute(
|
||||||
|
'/getscript/:executionId',
|
||||||
|
new plugins.typedserver.servertools.Handler('GET', async (req, res) => {
|
||||||
|
const executionId = req.params.executionId;
|
||||||
|
const denoExecution = await this.executionMap.find(async denoExecutionArg => {
|
||||||
|
return denoExecutionArg.id === executionId;
|
||||||
|
})
|
||||||
|
res.write(denoExecution.script);
|
||||||
|
res.end();
|
||||||
|
})
|
||||||
|
);
|
||||||
|
await this.server.start();
|
||||||
|
}
|
||||||
|
public async stop() {}
|
||||||
|
}
|
@ -1,14 +1,14 @@
|
|||||||
import { DenoDownloader } from './classes.denodownloader.js';
|
import { DenoDownloader } from './classes.denodownloader.js';
|
||||||
import * as plugins from './plugins.js';
|
import * as plugins from './plugins.js';
|
||||||
import * as paths from './paths.js';
|
import * as paths from './paths.js';
|
||||||
|
import { ScriptServer } from './classes.scriptserver.js';
|
||||||
|
import { DenoExecution } from './classes.denoexecution.js';
|
||||||
|
|
||||||
export class SmartDeno {
|
export class SmartDeno {
|
||||||
private denoDownloader = new DenoDownloader();
|
private denoDownloader = new DenoDownloader();
|
||||||
private smartshellInstance = new plugins.smarthshell.Smartshell({
|
private scriptServer = new ScriptServer();
|
||||||
executor: 'bash'
|
|
||||||
});
|
|
||||||
|
|
||||||
public async init(optionsArg: {
|
public async start(optionsArg: {
|
||||||
forceLocalDeno?: boolean;
|
forceLocalDeno?: boolean;
|
||||||
} = {}) {
|
} = {}) {
|
||||||
const denoAlreadyInPath = await plugins.smarthshell.which('deno', {
|
const denoAlreadyInPath = await plugins.smarthshell.which('deno', {
|
||||||
@ -17,5 +17,18 @@ export class SmartDeno {
|
|||||||
if (!denoAlreadyInPath || optionsArg.forceLocalDeno) {
|
if (!denoAlreadyInPath || optionsArg.forceLocalDeno) {
|
||||||
await this.denoDownloader.download(plugins.path.join(paths.nogitDir, 'deno.zip'));
|
await this.denoDownloader.download(plugins.path.join(paths.nogitDir, 'deno.zip'));
|
||||||
}
|
}
|
||||||
|
await this.scriptServer.start();
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Stops the smartdeno instance
|
||||||
|
*/
|
||||||
|
public async stop() {
|
||||||
|
|
||||||
|
}
|
||||||
|
|
||||||
|
public async executeScript(scriptArg: string) {
|
||||||
|
const denoExecution = new DenoExecution(this.scriptServer, scriptArg);
|
||||||
|
await denoExecution.execute();
|
||||||
}
|
}
|
||||||
}
|
}
|
@ -5,13 +5,26 @@ export {
|
|||||||
path,
|
path,
|
||||||
}
|
}
|
||||||
|
|
||||||
// @push.rocks scope
|
// @api.global scope
|
||||||
import * as smartarchive from '@push.rocks/smartarchive';
|
import * as typedserver from '@api.global/typedserver';
|
||||||
import * as smartpath from '@push.rocks/smartpath';
|
|
||||||
import * as smarthshell from '@push.rocks/smartshell';
|
|
||||||
|
|
||||||
export {
|
export {
|
||||||
|
typedserver,
|
||||||
|
}
|
||||||
|
|
||||||
|
// @push.rocks scope
|
||||||
|
import * as lik from '@push.rocks/lik';
|
||||||
|
import * as smartarchive from '@push.rocks/smartarchive';
|
||||||
|
import * as smartfile from '@push.rocks/smartfile';
|
||||||
|
import * as smartpath from '@push.rocks/smartpath';
|
||||||
|
import * as smarthshell from '@push.rocks/smartshell';
|
||||||
|
import * as smartunique from '@push.rocks/smartunique';
|
||||||
|
|
||||||
|
export {
|
||||||
|
lik,
|
||||||
smartarchive,
|
smartarchive,
|
||||||
|
smartfile,
|
||||||
smartpath,
|
smartpath,
|
||||||
smarthshell,
|
smarthshell,
|
||||||
|
smartunique,
|
||||||
}
|
}
|
Loading…
Reference in New Issue
Block a user