@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.
@@ -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 AbstractWorker {
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 AbstractWorker {
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 WorkerLogger('stdout', 'app', Color.cyan);
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 AbstractWorker from './abstract-worker';
2
+ import { Worker } from '@youcan/cli-kit';
3
3
  import type { App, Extension } from '@/types';
4
- export default class ThemeExtensionWorker extends AbstractWorker {
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 AbstractWorker {
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 WorkerLogger('stdout', 'extensions', Color.yellow);
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.resolve(this.extension.root, type, name);
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: await Form.file(path),
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 AbstractWorker {
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 AbstractWorker {
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 WorkerLogger('stderr', this.web.config.name || 'web', Color.blue);
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 WorkerLogger('stderr', this.web.config.name || 'web', Color.red),
22
+ stderr: new Worker.Logger('stderr', this.web.config.name || 'web', Color.red),
24
23
  });
25
24
  }
26
25
  }
@@ -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.7",
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.7"
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 };