@youcan/app 1.2.0-beta.7 → 1.2.0-beta.8
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/cli/services/dev/workers/app-worker.d.ts +2 -3
- package/dist/cli/services/dev/workers/app-worker.js +3 -4
- package/dist/cli/services/dev/workers/index.d.ts +3 -7
- package/dist/cli/services/dev/workers/theme-extension-worker.d.ts +2 -2
- package/dist/cli/services/dev/workers/theme-extension-worker.js +7 -6
- package/dist/cli/services/dev/workers/web-worker.d.ts +2 -3
- package/dist/cli/services/dev/workers/web-worker.js +4 -5
- package/dist/util/app-loader.js +1 -1
- package/package.json +2 -2
- package/dist/cli/services/dev/workers/abstract-worker.d.ts +0 -16
- package/dist/cli/services/dev/workers/abstract-worker.js +0 -36
|
@@ -1,7 +1,6 @@
|
|
|
1
|
-
import { type Cli } from '@youcan/cli-kit';
|
|
2
|
-
import AbstractWorker from './abstract-worker';
|
|
1
|
+
import { type Cli, Worker } from '@youcan/cli-kit';
|
|
3
2
|
import type { App } from '@/types';
|
|
4
|
-
export default class AppWorker extends
|
|
3
|
+
export default class AppWorker extends Worker.Abstract {
|
|
5
4
|
private command;
|
|
6
5
|
private app;
|
|
7
6
|
private logger;
|
|
@@ -1,8 +1,7 @@
|
|
|
1
|
-
import { Color, Filesystem, Path } from '@youcan/cli-kit';
|
|
2
|
-
import AbstractWorker, { WorkerLogger } from './abstract-worker.js';
|
|
1
|
+
import { Worker, Color, Filesystem, Path } from '@youcan/cli-kit';
|
|
3
2
|
import { APP_CONFIG_FILENAME } from '../../../../constants.js';
|
|
4
3
|
|
|
5
|
-
class AppWorker extends
|
|
4
|
+
class AppWorker extends Worker.Abstract {
|
|
6
5
|
command;
|
|
7
6
|
app;
|
|
8
7
|
logger;
|
|
@@ -10,7 +9,7 @@ class AppWorker extends AbstractWorker {
|
|
|
10
9
|
super();
|
|
11
10
|
this.command = command;
|
|
12
11
|
this.app = app;
|
|
13
|
-
this.logger = new
|
|
12
|
+
this.logger = new Worker.Logger('stdout', 'app', Color.cyan);
|
|
14
13
|
}
|
|
15
14
|
async boot() {
|
|
16
15
|
}
|
|
@@ -1,14 +1,10 @@
|
|
|
1
|
-
import type { Cli } from '@youcan/cli-kit';
|
|
1
|
+
import type { Cli, Worker } from '@youcan/cli-kit';
|
|
2
2
|
import WebWorker from './web-worker';
|
|
3
3
|
import AppWorker from './app-worker';
|
|
4
4
|
import type { App, Extension, Web } from '@/types';
|
|
5
5
|
export interface ExtensionWorkerCtor {
|
|
6
|
-
new (command: Cli.Command, app: App, extension: Extension): Worker;
|
|
7
|
-
}
|
|
8
|
-
export interface Worker {
|
|
9
|
-
run(): Promise<void>;
|
|
10
|
-
boot(): Promise<void>;
|
|
6
|
+
new (command: Cli.Command, app: App, extension: Extension): Worker.Interface;
|
|
11
7
|
}
|
|
12
8
|
export declare function bootAppWorker(command: Cli.Command, app: App): Promise<AppWorker>;
|
|
13
|
-
export declare function bootExtensionWorker(command: Cli.Command, app: App, extension: Extension): Promise<Worker>;
|
|
9
|
+
export declare function bootExtensionWorker(command: Cli.Command, app: App, extension: Extension): Promise<Worker.Interface>;
|
|
14
10
|
export declare function bootWebWorker(command: Cli.Command, app: App, web: Web): Promise<WebWorker>;
|
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
import type { Cli } from '@youcan/cli-kit';
|
|
2
|
-
import
|
|
2
|
+
import { Worker } from '@youcan/cli-kit';
|
|
3
3
|
import type { App, Extension } from '@/types';
|
|
4
|
-
export default class ThemeExtensionWorker extends
|
|
4
|
+
export default class ThemeExtensionWorker extends Worker.Abstract {
|
|
5
5
|
private command;
|
|
6
6
|
private app;
|
|
7
7
|
private extension;
|
|
@@ -1,7 +1,6 @@
|
|
|
1
|
-
import { Color, Session, Http, Env, Path, Filesystem, Form } from '@youcan/cli-kit';
|
|
2
|
-
import AbstractWorker, { WorkerLogger } from './abstract-worker.js';
|
|
1
|
+
import { Worker, Color, Session, Http, Env, Path, Filesystem, Form } from '@youcan/cli-kit';
|
|
3
2
|
|
|
4
|
-
class ThemeExtensionWorker extends
|
|
3
|
+
class ThemeExtensionWorker extends Worker.Abstract {
|
|
5
4
|
command;
|
|
6
5
|
app;
|
|
7
6
|
extension;
|
|
@@ -18,7 +17,7 @@ class ThemeExtensionWorker extends AbstractWorker {
|
|
|
18
17
|
this.command = command;
|
|
19
18
|
this.app = app;
|
|
20
19
|
this.extension = extension;
|
|
21
|
-
this.logger = new
|
|
20
|
+
this.logger = new Worker.Logger('stdout', 'extensions', Color.yellow);
|
|
22
21
|
}
|
|
23
22
|
async boot() {
|
|
24
23
|
const session = await Session.authenticate(this.command);
|
|
@@ -98,13 +97,15 @@ class ThemeExtensionWorker extends AbstractWorker {
|
|
|
98
97
|
}
|
|
99
98
|
enqueue(op, type, name) {
|
|
100
99
|
this.queue.push(async () => {
|
|
101
|
-
const path = Path.
|
|
100
|
+
const path = Path.join(this.extension.root, type, name);
|
|
102
101
|
await Http.post(`${Env.apiHostname()}/apps/draft/${this.app.config.id}/extensions/${this.extension.id}/file`, {
|
|
103
102
|
body: Form.convert({
|
|
104
103
|
file_name: name,
|
|
105
104
|
file_type: type,
|
|
106
105
|
file_operation: op,
|
|
107
|
-
file_content:
|
|
106
|
+
file_content: op === 'put'
|
|
107
|
+
? await Form.file(path)
|
|
108
|
+
: undefined,
|
|
108
109
|
}),
|
|
109
110
|
});
|
|
110
111
|
this.logger.write(`[${op === 'put' ? 'updated' : 'deleted'}] - ${Path.join(type, name)}`);
|
|
@@ -1,7 +1,6 @@
|
|
|
1
|
-
import { type Cli } from '@youcan/cli-kit';
|
|
2
|
-
import AbstractWorker from './abstract-worker';
|
|
1
|
+
import { type Cli, Worker } from '@youcan/cli-kit';
|
|
3
2
|
import type { App, Web } from '@/types';
|
|
4
|
-
export default class WebWorker extends
|
|
3
|
+
export default class WebWorker extends Worker.Abstract {
|
|
5
4
|
private command;
|
|
6
5
|
private app;
|
|
7
6
|
private web;
|
|
@@ -1,7 +1,6 @@
|
|
|
1
|
-
import { Color, System } from '@youcan/cli-kit';
|
|
2
|
-
import AbstractWorker, { WorkerLogger } from './abstract-worker.js';
|
|
1
|
+
import { Worker, Color, System } from '@youcan/cli-kit';
|
|
3
2
|
|
|
4
|
-
class WebWorker extends
|
|
3
|
+
class WebWorker extends Worker.Abstract {
|
|
5
4
|
command;
|
|
6
5
|
app;
|
|
7
6
|
web;
|
|
@@ -11,7 +10,7 @@ class WebWorker extends AbstractWorker {
|
|
|
11
10
|
this.command = command;
|
|
12
11
|
this.app = app;
|
|
13
12
|
this.web = web;
|
|
14
|
-
this.logger = new
|
|
13
|
+
this.logger = new Worker.Logger('stderr', this.web.config.name || 'web', Color.blue);
|
|
15
14
|
}
|
|
16
15
|
async boot() {
|
|
17
16
|
}
|
|
@@ -20,7 +19,7 @@ class WebWorker extends AbstractWorker {
|
|
|
20
19
|
return System.exec(cmd, args, {
|
|
21
20
|
stdout: this.logger,
|
|
22
21
|
signal: this.command.controller.signal,
|
|
23
|
-
stderr: new
|
|
22
|
+
stderr: new Worker.Logger('stderr', this.web.config.name || 'web', Color.red),
|
|
24
23
|
});
|
|
25
24
|
}
|
|
26
25
|
}
|
package/dist/util/app-loader.js
CHANGED
|
@@ -3,7 +3,7 @@ import { APP_CONFIG_FILENAME, DEFAULT_EXTENSIONS_DIR, EXTENSION_CONFIG_FILENAME,
|
|
|
3
3
|
|
|
4
4
|
async function load() {
|
|
5
5
|
const path = Path.resolve(Path.cwd(), APP_CONFIG_FILENAME);
|
|
6
|
-
if (!await Filesystem.exists) {
|
|
6
|
+
if (!await Filesystem.exists(path)) {
|
|
7
7
|
throw new Error(`app config not found at ${path}`);
|
|
8
8
|
}
|
|
9
9
|
const config = await Filesystem.readJsonFile(path);
|
package/package.json
CHANGED
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@youcan/app",
|
|
3
3
|
"type": "module",
|
|
4
|
-
"version": "1.2.0-beta.
|
|
4
|
+
"version": "1.2.0-beta.8",
|
|
5
5
|
"description": "OCLIF plugin for building apps",
|
|
6
6
|
"author": "YouCan <contact@youcan.shop> (https://youcan.shop)",
|
|
7
7
|
"license": "MIT",
|
|
@@ -17,7 +17,7 @@
|
|
|
17
17
|
"dependencies": {
|
|
18
18
|
"@oclif/core": "^2.15.0",
|
|
19
19
|
"dayjs": "^1.11.10",
|
|
20
|
-
"@youcan/cli-kit": "1.2.0-beta.
|
|
20
|
+
"@youcan/cli-kit": "1.2.0-beta.8"
|
|
21
21
|
},
|
|
22
22
|
"devDependencies": {
|
|
23
23
|
"@oclif/plugin-legacy": "^1.3.0",
|
|
@@ -1,16 +0,0 @@
|
|
|
1
|
-
/// <reference types="node" />
|
|
2
|
-
import { Writable } from 'stream';
|
|
3
|
-
import type { Color } from '@youcan/cli-kit';
|
|
4
|
-
import type { Worker } from './index';
|
|
5
|
-
export declare class WorkerLogger extends Writable {
|
|
6
|
-
private channel;
|
|
7
|
-
private type;
|
|
8
|
-
private color;
|
|
9
|
-
constructor(channel: 'stdout' | 'stderr', type: string, color: Color.Color);
|
|
10
|
-
write(chunk: unknown): boolean;
|
|
11
|
-
private pad;
|
|
12
|
-
}
|
|
13
|
-
export default abstract class AbstractWorker implements Worker {
|
|
14
|
-
abstract boot(): Promise<void>;
|
|
15
|
-
abstract run(): Promise<void>;
|
|
16
|
-
}
|
|
@@ -1,36 +0,0 @@
|
|
|
1
|
-
import { Writable } from 'node:stream';
|
|
2
|
-
import { stdout, stderr } from 'node:process';
|
|
3
|
-
import dayjs from 'dayjs';
|
|
4
|
-
|
|
5
|
-
class WorkerLogger extends Writable {
|
|
6
|
-
channel;
|
|
7
|
-
type;
|
|
8
|
-
color;
|
|
9
|
-
constructor(channel, type, color) {
|
|
10
|
-
super();
|
|
11
|
-
this.channel = channel;
|
|
12
|
-
this.type = type;
|
|
13
|
-
this.color = color;
|
|
14
|
-
}
|
|
15
|
-
write(chunk) {
|
|
16
|
-
if (!(chunk instanceof Buffer) && typeof chunk !== 'string') {
|
|
17
|
-
return false;
|
|
18
|
-
}
|
|
19
|
-
const channel = this.channel === 'stdout' ? stdout : stderr;
|
|
20
|
-
const time = dayjs().format('HH:mm:ss:SSS');
|
|
21
|
-
const lines = chunk.toString().split('\n').map(s => s.trim()).filter(s => s !== '');
|
|
22
|
-
for (let i = 0; i < lines.length; i++) {
|
|
23
|
-
i === 0
|
|
24
|
-
? channel.write(this.color(`${time} | ${this.pad(this.type, 10)} | ${lines[i]}\n`))
|
|
25
|
-
: channel.write(this.color(` | ${lines[i]}\n`));
|
|
26
|
-
}
|
|
27
|
-
return true;
|
|
28
|
-
}
|
|
29
|
-
pad(subject, length, char = ' ') {
|
|
30
|
-
return subject.padEnd(length, char);
|
|
31
|
-
}
|
|
32
|
-
}
|
|
33
|
-
class AbstractWorker {
|
|
34
|
-
}
|
|
35
|
-
|
|
36
|
-
export { WorkerLogger, AbstractWorker as default };
|