@jayfong/x-server 2.78.3 → 2.79.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.
@@ -10,7 +10,7 @@ var _inquirer = _interopRequireDefault(require("inquirer"));
10
10
  var _vtils = require("vtils");
11
11
  var _yaml = require("yaml");
12
12
  class EnvUtil {
13
- static async getAllChannel(cwd) {
13
+ static async getAllChannel(cwd, excludeChannels) {
14
14
  const channelFiles = await (0, _globby.default)(['.env@*'], {
15
15
  cwd: cwd,
16
16
  onlyFiles: true,
@@ -19,11 +19,14 @@ class EnvUtil {
19
19
  if (channelFiles.length === 0) {
20
20
  return [];
21
21
  }
22
- const channels = (0, _vtils.uniq)(channelFiles.map(channel => channel.split('@').pop().split('.')[0]));
22
+ let channels = (0, _vtils.uniq)(channelFiles.map(channel => channel.split('@').pop().split('.')[0]));
23
+ if (excludeChannels?.length) {
24
+ channels = (0, _vtils.difference)(channels, excludeChannels);
25
+ }
23
26
  return channels;
24
27
  }
25
- static async chooseChannel(cwd) {
26
- const channels = await EnvUtil.getAllChannel(cwd);
28
+ static async chooseChannel(cwd, excludeChannels) {
29
+ const channels = await EnvUtil.getAllChannel(cwd, excludeChannels);
27
30
  if (channels.length === 0) return undefined;
28
31
  if (channels.length === 1) return channels[0];
29
32
  const res = await _inquirer.default.prompt([{
@@ -35,12 +38,14 @@ class EnvUtil {
35
38
  return res.channel || undefined;
36
39
  }
37
40
  static async withChannel(options) {
38
- if (options.channel === '_') {
39
- const channel = await EnvUtil.chooseChannel(options.cwd);
41
+ if (options.channel?.startsWith('_')) {
42
+ const excludeChannels = options.channel.split('!')[1]?.split(',').filter(Boolean);
43
+ const channel = await EnvUtil.chooseChannel(options.cwd, excludeChannels);
40
44
  console.log(`========= ${channel} =========`);
41
45
  await options.cb(channel);
42
- } else if (options.channel === '@') {
43
- const channels = await EnvUtil.getAllChannel(options.cwd);
46
+ } else if (options.channel?.startsWith('@')) {
47
+ const excludeChannels = options.channel.split('!')[1]?.split(',').filter(Boolean);
48
+ const channels = await EnvUtil.getAllChannel(options.cwd, excludeChannels);
44
49
  for (const channel of channels) {
45
50
  console.log(`========= ${channel} =========`);
46
51
  await options.cb(channel);
@@ -9,8 +9,8 @@ export declare class EnvUtil {
9
9
  static RE_NEWLINES: RegExp;
10
10
  static NEWLINES_MATCH: RegExp;
11
11
  static COMMENT_MATCH: RegExp;
12
- static getAllChannel(cwd: string): Promise<string[]>;
13
- static chooseChannel(cwd: string): Promise<string | undefined>;
12
+ static getAllChannel(cwd: string, excludeChannels?: string[]): Promise<string[]>;
13
+ static chooseChannel(cwd: string, excludeChannels?: string[]): Promise<string | undefined>;
14
14
  static withChannel(options: {
15
15
  cwd: string;
16
16
  channel?: string;
@@ -2,10 +2,10 @@ import path from 'node:path';
2
2
  import fs from 'fs-extra';
3
3
  import globby from 'globby';
4
4
  import inquirer from 'inquirer';
5
- import { dedent, escapeRegExp, isPlainObject, uniq } from 'vtils';
5
+ import { dedent, difference, escapeRegExp, isPlainObject, uniq } from 'vtils';
6
6
  import { parse as yamlParse } from 'yaml';
7
7
  export class EnvUtil {
8
- static async getAllChannel(cwd) {
8
+ static async getAllChannel(cwd, excludeChannels) {
9
9
  const channelFiles = await globby(['.env@*'], {
10
10
  cwd: cwd,
11
11
  onlyFiles: true,
@@ -14,11 +14,14 @@ export class EnvUtil {
14
14
  if (channelFiles.length === 0) {
15
15
  return [];
16
16
  }
17
- const channels = uniq(channelFiles.map(channel => channel.split('@').pop().split('.')[0]));
17
+ let channels = uniq(channelFiles.map(channel => channel.split('@').pop().split('.')[0]));
18
+ if (excludeChannels?.length) {
19
+ channels = difference(channels, excludeChannels);
20
+ }
18
21
  return channels;
19
22
  }
20
- static async chooseChannel(cwd) {
21
- const channels = await EnvUtil.getAllChannel(cwd);
23
+ static async chooseChannel(cwd, excludeChannels) {
24
+ const channels = await EnvUtil.getAllChannel(cwd, excludeChannels);
22
25
  if (channels.length === 0) return undefined;
23
26
  if (channels.length === 1) return channels[0];
24
27
  const res = await inquirer.prompt([{
@@ -30,12 +33,14 @@ export class EnvUtil {
30
33
  return res.channel || undefined;
31
34
  }
32
35
  static async withChannel(options) {
33
- if (options.channel === '_') {
34
- const channel = await EnvUtil.chooseChannel(options.cwd);
36
+ if (options.channel?.startsWith('_')) {
37
+ const excludeChannels = options.channel.split('!')[1]?.split(',').filter(Boolean);
38
+ const channel = await EnvUtil.chooseChannel(options.cwd, excludeChannels);
35
39
  console.log(`========= ${channel} =========`);
36
40
  await options.cb(channel);
37
- } else if (options.channel === '@') {
38
- const channels = await EnvUtil.getAllChannel(options.cwd);
41
+ } else if (options.channel?.startsWith('@')) {
42
+ const excludeChannels = options.channel.split('!')[1]?.split(',').filter(Boolean);
43
+ const channels = await EnvUtil.getAllChannel(options.cwd, excludeChannels);
39
44
  for (const channel of channels) {
40
45
  console.log(`========= ${channel} =========`);
41
46
  await options.cb(channel);
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@jayfong/x-server",
3
- "version": "2.78.3",
3
+ "version": "2.79.0",
4
4
  "license": "ISC",
5
5
  "sideEffects": false,
6
6
  "main": "lib/_cjs/index.js",