@eik/cli 3.0.0-next.1 → 3.0.2

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.
Files changed (95) hide show
  1. package/CHANGELOG.md +156 -3
  2. package/classes/alias.js +43 -16
  3. package/classes/index.js +47 -23
  4. package/classes/integrity.js +27 -16
  5. package/classes/login.js +21 -7
  6. package/classes/meta.js +20 -12
  7. package/classes/ping.js +20 -9
  8. package/classes/publish/map.js +33 -10
  9. package/classes/publish/package/index.js +54 -17
  10. package/classes/publish/package/tasks/check-bundle-sizes.js +7 -11
  11. package/classes/publish/package/tasks/check-if-already-published.js +8 -11
  12. package/classes/publish/package/tasks/cleanup.js +7 -9
  13. package/classes/publish/package/tasks/create-temp-directory.js +5 -9
  14. package/classes/publish/package/tasks/create-zip-file.js +6 -11
  15. package/classes/publish/package/tasks/dry-run.js +4 -8
  16. package/classes/publish/package/tasks/save-metafile.js +5 -7
  17. package/classes/publish/package/tasks/task.js +3 -5
  18. package/classes/publish/package/tasks/upload-files.js +16 -17
  19. package/classes/publish/package/tasks/validate-input.js +4 -8
  20. package/classes/version.js +38 -21
  21. package/commands/alias.js +105 -0
  22. package/commands/index.js +27 -0
  23. package/commands/init.js +69 -52
  24. package/commands/integrity.js +15 -32
  25. package/commands/login.js +23 -35
  26. package/commands/map-alias.js +16 -26
  27. package/commands/map.js +90 -0
  28. package/commands/meta.js +12 -29
  29. package/commands/npm-alias.js +16 -26
  30. package/commands/package-alias.js +21 -28
  31. package/commands/ping.js +11 -21
  32. package/commands/publish.js +82 -138
  33. package/commands/version.js +16 -33
  34. package/formatters/alias.js +4 -8
  35. package/formatters/artifact.js +4 -8
  36. package/formatters/file.js +3 -10
  37. package/formatters/index.js +5 -5
  38. package/formatters/version.js +5 -12
  39. package/index.js +53 -12
  40. package/package.json +49 -52
  41. package/readme.md +16 -4
  42. package/types/classes/alias.d.ts +60 -0
  43. package/types/classes/index.d.ts +37 -0
  44. package/types/classes/integrity.d.ts +35 -0
  45. package/types/classes/login.d.ts +25 -0
  46. package/types/classes/meta.d.ts +28 -0
  47. package/types/classes/ping.d.ts +23 -0
  48. package/types/classes/publish/map.d.ts +51 -0
  49. package/types/classes/publish/package/index.d.ts +94 -0
  50. package/types/classes/publish/package/tasks/check-bundle-sizes.d.ts +4 -0
  51. package/types/classes/publish/package/tasks/check-if-already-published.d.ts +4 -0
  52. package/types/classes/publish/package/tasks/cleanup.d.ts +4 -0
  53. package/types/classes/publish/package/tasks/create-temp-directory.d.ts +4 -0
  54. package/types/classes/publish/package/tasks/create-zip-file.d.ts +4 -0
  55. package/types/classes/publish/package/tasks/dry-run.d.ts +7 -0
  56. package/types/classes/publish/package/tasks/save-metafile.d.ts +4 -0
  57. package/types/classes/publish/package/tasks/task.d.ts +8 -0
  58. package/types/classes/publish/package/tasks/upload-files.d.ts +4 -0
  59. package/types/classes/publish/package/tasks/validate-input.d.ts +4 -0
  60. package/types/classes/version.d.ts +43 -0
  61. package/types/utils/hash/compare.d.ts +2 -0
  62. package/types/utils/hash/file.d.ts +2 -0
  63. package/types/utils/hash/files.d.ts +2 -0
  64. package/types/utils/hash/index.d.ts +9 -0
  65. package/types/utils/http/index.d.ts +12 -0
  66. package/types/utils/http/integrity.d.ts +2 -0
  67. package/types/utils/http/latest-version.d.ts +2 -0
  68. package/types/utils/http/request.d.ts +33 -0
  69. package/types/utils/http/versions.d.ts +5 -0
  70. package/types/utils/index.d.ts +6 -0
  71. package/types/utils/json/index.d.ts +9 -0
  72. package/types/utils/json/read.d.ts +5 -0
  73. package/types/utils/json/write-eik.d.ts +5 -0
  74. package/types/utils/json/write.d.ts +5 -0
  75. package/types/utils/logger.d.ts +33 -0
  76. package/types/utils/type-slug.d.ts +2 -0
  77. package/types/utils/type-title.d.ts +2 -0
  78. package/utils/hash/compare.js +1 -3
  79. package/utils/hash/file.js +3 -5
  80. package/utils/hash/files.js +4 -6
  81. package/utils/hash/index.js +4 -4
  82. package/utils/http/index.js +6 -5
  83. package/utils/http/integrity.js +2 -5
  84. package/utils/http/latest-version.js +2 -5
  85. package/utils/http/request.js +25 -19
  86. package/utils/http/versions.js +2 -5
  87. package/utils/index.js +6 -4
  88. package/utils/json/index.js +4 -4
  89. package/utils/json/read.js +5 -7
  90. package/utils/json/write-eik.js +4 -6
  91. package/utils/json/write.js +4 -6
  92. package/utils/logger.js +2 -5
  93. package/utils/type-slug.js +1 -1
  94. package/utils/type-title.js +1 -1
  95. package/utils/get-cwd.js +0 -14
package/commands/init.js CHANGED
@@ -1,41 +1,28 @@
1
- 'use strict';
1
+ import { join } from 'path';
2
+ import fs from 'fs';
3
+ import ora from 'ora';
4
+ import { logger } from '../utils/index.js';
2
5
 
3
- const { join } = require('path');
4
- const fs = require('fs');
5
- const ora = require('ora');
6
- const { logger } = require('../utils');
6
+ const command = 'init';
7
7
 
8
- exports.command = 'init';
8
+ const aliases = ['i'];
9
9
 
10
- exports.aliases = ['i'];
10
+ const describe = `Creates an eik.json file and saves it to the current working directory. If package.json exists in the directory its name and version will be used as the default. Override defaults using command line flags.`;
11
11
 
12
- exports.describe = `Creates a new default "eik.json" file and saves it to the current working directory
13
- Override default "eik.json" fields using command line flags --server, --name, --major, --js and --css`;
14
-
15
- exports.builder = (yargs) => {
12
+ const builder = (yargs) => {
16
13
  yargs.example('eik init');
17
14
  yargs.example('eik init --cwd /path/to/dir');
18
15
  yargs.example(
19
- 'eik init --server https://assets.myserver.com --major 2 --name my-app --js ./scripts.js --css ./styles.css',
16
+ 'eik init --server https://assets.myserver.com --version 2.0.0 --name my-app --files "./public"',
20
17
  );
21
18
  yargs.example('eik init --debug');
22
19
 
23
20
  yargs.options({
24
21
  server: {
25
22
  alias: 's',
26
- describe: `Specify asset server field in "eik.json".
27
- This the URL to an Eik asset server
28
- Eg. --server https://assets.myeikserver.com`,
23
+ describe: `Specify asset server field in "eik.json". This the URL to an Eik asset server Eg. --server https://assets.myeikserver.com`,
29
24
  default: '',
30
25
  },
31
- cwd: {
32
- alias: 'c',
33
- describe: `Alter the current working directory
34
- Defaults to the directory where the command is being run.
35
- This affects where the generated "eik.json" file will be saved.
36
- Eg. --cwd /path/to/save/to`,
37
- default: process.cwd(),
38
- },
39
26
  version: {
40
27
  alias: 'v',
41
28
  describe: `Specify the semver version field in "eik.json". Eg. --version 1.0.0`,
@@ -47,59 +34,89 @@ exports.builder = (yargs) => {
47
34
  Eg. --name my-great-app`,
48
35
  default: '',
49
36
  },
50
- debug: {
51
- describe: 'Logs additional messages during command run',
52
- default: false,
53
- type: 'boolean',
54
- },
55
37
  });
56
38
  };
57
39
 
58
- exports.handler = async (argv) => {
59
- const spinner = ora({ stream: process.stdout }).start('working...');
60
- const { name, version, server, cwd, debug } = argv;
40
+ const handler = async (argv) => {
41
+ let { name, version } = argv;
42
+ const { server, cwd, debug } = argv;
61
43
  const pathname = join(cwd, './eik.json');
44
+
45
+ const spinner = ora({ stream: process.stdout }).start('working...');
62
46
  const log = logger(spinner, debug);
63
- let assetFileExists = false;
64
47
 
65
48
  try {
66
- log.debug(
67
- `Checking for existing "eik.json" file in directory (${cwd})`,
68
- );
49
+ log.debug(`Checking for existing ${pathname}`);
50
+
51
+ let eikJsonExists = false;
69
52
  try {
70
53
  const st = fs.statSync(pathname);
71
54
  if (st.isFile()) {
72
- assetFileExists = true;
55
+ eikJsonExists = true;
73
56
  }
74
57
  } catch (err) {
75
58
  // noop
76
59
  }
77
-
78
- if (assetFileExists) {
60
+ if (eikJsonExists) {
79
61
  throw new Error(
80
62
  `An "eik.json" file already exists in directory. File will not be written`,
81
63
  );
82
64
  }
83
65
 
84
- log.debug(`Writing "eik.json" to directory (${cwd})`);
85
- fs.writeFileSync(
86
- pathname,
87
- JSON.stringify(
88
- {
89
- name,
90
- version,
91
- server,
92
- files: {},
93
- },
94
- null,
95
- 2,
96
- ),
66
+ if (!name || !version || version === '1.0.0') {
67
+ log.debug('Looking for default from package.json');
68
+ try {
69
+ let packageJson = fs.readFileSync(
70
+ join(cwd, 'package.json'),
71
+ 'utf-8',
72
+ );
73
+ packageJson = JSON.parse(packageJson);
74
+ if (!name) {
75
+ name = packageJson.name;
76
+ log.debug(
77
+ `Using ${name} from package.json as default name`,
78
+ );
79
+ }
80
+ if (!version || version === '1.0.0') {
81
+ version = packageJson.version;
82
+ log.debug(
83
+ `Using ${version} from package.json as default version`,
84
+ );
85
+ }
86
+ } catch (e) {
87
+ // noop
88
+ }
89
+ } else {
90
+ log.debug(`Got ${name} and ${version}, skipping package.json`);
91
+ }
92
+
93
+ log.debug(`Writing to ${pathname}`);
94
+
95
+ const output = JSON.stringify(
96
+ {
97
+ $schema:
98
+ 'https://raw.githubusercontent.com/eik-lib/common/main/lib/schemas/eikjson.schema.json',
99
+ name,
100
+ version,
101
+ server,
102
+ files: './public',
103
+ 'import-map': [],
104
+ },
105
+ null,
106
+ 2,
97
107
  );
108
+ fs.writeFileSync(pathname, output);
109
+
110
+ log.info(`Wrote to ${pathname}
98
111
 
99
- log.info(`"eik.json" successfully written to directory`);
112
+ ${output}
113
+
114
+ Read more about configuring Eik on https://eik.dev/docs/reference/eik-json`);
100
115
  } catch (err) {
101
116
  log.warn(err.message);
102
117
  }
103
118
  spinner.text = '';
104
119
  spinner.stopAndPersist();
105
120
  };
121
+
122
+ export { command, aliases, describe, builder, handler };
@@ -1,55 +1,38 @@
1
- /* eslint-disable prefer-template */
2
- /* eslint-disable no-restricted-properties */
3
- /* eslint-disable one-var */
1
+ import { join } from 'path';
2
+ import ora from 'ora';
3
+ import Integrity from '../classes/integrity.js';
4
+ import { logger, getDefaults } from '../utils/index.js';
5
+ import json from '../utils/json/index.js';
4
6
 
5
- 'use strict';
7
+ export const command = 'integrity [name] [version]';
6
8
 
7
- const { join } = require('path');
8
- const ora = require('ora');
9
- const { configStore, getDefaults } = require('@eik/common-config-loader');
10
- const Integrity = require('../classes/integrity');
11
- const { logger, getCWD } = require('../utils');
12
- const json = require('../utils/json');
9
+ export const aliases = ['int'];
13
10
 
14
- exports.command = 'integrity [name] [version]';
11
+ export const describe = `Retrieve file integrity information for package name and version defined in eik.json, then populate integrity.json file with this information`;
15
12
 
16
- exports.aliases = ['int'];
17
-
18
- exports.describe = `Retrieve file integrity information for package name and version defined in eik.json, then populate integrity.json file with this information`;
19
-
20
- exports.builder = (yargs) => {
21
- const cwd = getCWD();
22
- const defaults = getDefaults(cwd);
13
+ export const builder = (yargs) => {
14
+ const defaults = getDefaults(yargs.argv.config || yargs.argv.cwd);
23
15
 
24
16
  yargs.options({
25
17
  server: {
26
18
  alias: 's',
27
19
  describe: 'Specify location of asset server.',
20
+ // @ts-expect-error
28
21
  default: defaults.server,
29
22
  },
30
- debug: {
31
- describe: 'Logs additional messages',
32
- default: false,
33
- type: 'boolean',
34
- },
35
- cwd: {
36
- alias: 'c',
37
- describe: 'Alter current working directory.',
38
- default: defaults.cwd,
39
- },
40
23
  });
41
24
 
42
25
  yargs.example(`eik integrity`);
43
26
  yargs.example(`eik integrity --debug`);
44
27
  };
45
28
 
46
- exports.handler = async (argv) => {
29
+ export const handler = async (argv) => {
47
30
  const spinner = ora({ stream: process.stdout }).start('working...');
48
31
  let integrity = false;
49
- const { debug, cwd } = argv;
32
+ const { debug, cwd, config } = argv;
50
33
  const l = logger(spinner, debug);
51
- const config = configStore.findInDirectory(cwd);
52
- const { name, server, version, type, out } = config;
34
+ // @ts-expect-error
35
+ const { name, version, server, out, type } = getDefaults(config || cwd);
53
36
 
54
37
  try {
55
38
  integrity = await new Integrity({
package/commands/login.js CHANGED
@@ -1,60 +1,44 @@
1
- 'use strict';
1
+ import os from 'os';
2
+ import readline from 'readline';
3
+ import ora from 'ora';
4
+ import Login from '../classes/login.js';
5
+ import { logger, getDefaults } from '../utils/index.js';
6
+ import json from '../utils/json/index.js';
2
7
 
3
- const homedir = require('os').homedir();
4
- const { getDefaults } = require('@eik/common-config-loader');
5
- const readline = require('readline');
6
- const ora = require('ora');
7
- const Login = require('../classes/login');
8
- const { logger, getCWD } = require('../utils');
9
- const json = require('../utils/json');
8
+ const homedir = os.homedir();
10
9
 
11
- exports.command = 'login';
10
+ export const command = 'login';
12
11
 
13
- exports.aliases = [];
12
+ export const aliases = [];
14
13
 
15
- exports.describe = `Authenticate against an Eik server and save the returned token to an .eikrc file in the users home directory.
16
- You can specify key and server values to authenticate against using the --key and --server flags which will then bypass login prompts
17
- It is possible to be authenticated against multiple asset servers simultaneously. Simply call "eik login" multiple times.`;
14
+ export const describe = `Authenticate against an Eik server and save the returned token to an .eikrc file in the users home directory. You can specify key and server values to authenticate against using the --key and --server flags which will then bypass login prompts. It is possible to be authenticated against multiple asset servers simultaneously. Simply call "eik login" multiple times.`;
18
15
 
19
- exports.builder = (yargs) => {
16
+ export const builder = (yargs) => {
20
17
  yargs.example('eik login --server https://assets.myserver.com');
21
18
  yargs.example(
22
19
  'eik login --server https://assets.myserver.com --key ######',
23
20
  );
24
21
  yargs.example('eik login --server https://assets.myserver.com --debug');
25
22
 
26
- const cwd = getCWD();
27
- const defaults = getDefaults(cwd);
23
+ const defaults = getDefaults(yargs.argv.config || yargs.argv.cwd);
28
24
 
29
25
  yargs.options({
30
26
  server: {
31
27
  alias: 's',
32
- describe: `Eik server address
33
- Specify location of the Eik asset server to authenticate against.
34
- If an eik.json file is present in the current working directory, the files server value will be used as default.
35
- If no eik.json file is present in the current working directory and this flag is not specified, a prompt will be presented to ask for the server address to be input
36
- Eg. --server https://assets.myeikserver.com`,
28
+ describe: `Eik server address. Specify location of the Eik asset server to authenticate against. If an eik.json file is present in the current working directory, the files server value will be used as default. If no eik.json file is present in the current working directory and this flag is not specified, a prompt will be presented to ask for the server address to be input. Eg. --server https://assets.myeikserver.com`,
37
29
  type: 'string',
38
30
  default: defaults.server,
39
31
  },
40
32
  key: {
41
33
  alias: 'k',
42
- describe: `Login access key.
43
- This is a passkey for a given user account and needs to be configured on the server.
44
- If this flag is not specifed, a prompt will be used to ask for the key to be input.
45
- Eg. --key ########`,
34
+ describe: `Login access key. This is a passkey for a given user account and needs to be configured on the server. If this flag is not specifed, a prompt will be used to ask for the key to be input. Eg. --key ########`,
46
35
  type: 'string',
47
36
  default: '',
48
37
  },
49
- debug: {
50
- describe: 'Logs additional messages',
51
- default: false,
52
- type: 'boolean',
53
- },
54
38
  });
55
39
  };
56
40
 
57
- exports.handler = async (argv) => {
41
+ export const handler = async (argv) => {
58
42
  let success = false;
59
43
  const { debug, key, server } = argv;
60
44
  let k = key;
@@ -70,8 +54,9 @@ exports.handler = async (argv) => {
70
54
 
71
55
  if (!s) {
72
56
  await new Promise((resolve) => {
73
- rl.question('Enter Eik server address > ', (input) => {
57
+ rl?.question('Enter Eik server address > ', (input) => {
74
58
  s = input;
59
+ // @ts-expect-error
75
60
  resolve();
76
61
  });
77
62
  });
@@ -79,8 +64,9 @@ exports.handler = async (argv) => {
79
64
 
80
65
  if (!k) {
81
66
  await new Promise((resolve) => {
82
- rl.question('Enter login key > ', (input) => {
67
+ rl?.question(`Enter login key for ${s} > `, (input) => {
83
68
  k = input;
69
+ // @ts-expect-error
84
70
  resolve();
85
71
  });
86
72
  });
@@ -93,13 +79,14 @@ exports.handler = async (argv) => {
93
79
  try {
94
80
  const token = await new Login({
95
81
  logger: logger(spinner, debug),
96
- debug,
97
82
  key: k,
98
83
  server: s,
99
84
  }).run();
100
85
 
101
86
  if (token) {
102
- const meta = await json.read({ cwd: homedir, filename: '.eikrc' });
87
+ const meta = /** @type {{ tokens: any }} */ (
88
+ await json.read({ cwd: homedir, filename: '.eikrc' })
89
+ );
103
90
 
104
91
  const tokens = new Map(meta.tokens);
105
92
  tokens.set(s, token);
@@ -109,6 +96,7 @@ exports.handler = async (argv) => {
109
96
  success = true;
110
97
  }
111
98
  } catch (err) {
99
+ // @ts-expect-error
112
100
  logger.warn(err.message);
113
101
  }
114
102
 
@@ -1,23 +1,18 @@
1
- 'use strict';
1
+ // @deprecated in favor of `alias` command
2
2
 
3
- const ora = require('ora');
4
- const { getDefaults } = require('@eik/common-config-loader');
5
- const Alias = require('../classes/alias');
6
- const { logger, getCWD } = require('../utils');
7
- const { Alias: AliasFormatter } = require('../formatters');
3
+ import ora from 'ora';
4
+ import Alias from '../classes/alias.js';
5
+ import { logger, getDefaults } from '../utils/index.js';
6
+ import { Alias as AliasFormatter } from '../formatters/index.js';
8
7
 
9
- exports.command = 'map-alias <name> <version> <alias>';
8
+ export const command = 'map-alias <name> <version> <alias>';
10
9
 
11
- exports.aliases = ['ma'];
10
+ export const aliases = ['ma'];
12
11
 
13
- exports.describe = `Create a semver major alias for an import map as identified by its name and version.
14
- An import map with the given name and version must already exist on asset server
15
- Alias should be the semver major part of the import map version.
16
- Eg. For an import map of version 5.4.3, you should use 5 as the alias`;
12
+ export const describe = `DEPRECATED: This command has been replaced by the alias command and will be removed in a future version. Create a semver major alias for an import map as identified by its name and version. An import map with the given name and version must already exist on asset server. Alias should be the semver major part of the import map version. Eg. For an import map of version 5.4.3, you should use 5 as the alias`;
17
13
 
18
- exports.builder = (yargs) => {
19
- const cwd = getCWD();
20
- const defaults = getDefaults(cwd);
14
+ export const builder = (yargs) => {
15
+ const defaults = getDefaults(yargs.argv.config || yargs.argv.cwd);
21
16
 
22
17
  yargs
23
18
  .positional('name', {
@@ -37,18 +32,9 @@ exports.builder = (yargs) => {
37
32
  server: {
38
33
  alias: 's',
39
34
  describe: 'Specify location of asset server.',
35
+ // @ts-expect-error
40
36
  default: defaults.server,
41
37
  },
42
- cwd: {
43
- alias: 'c',
44
- describe: 'Alter current working directory.',
45
- default: defaults.cwd,
46
- },
47
- debug: {
48
- describe: 'Logs additional messages',
49
- default: false,
50
- type: 'boolean',
51
- },
52
38
  token: {
53
39
  describe:
54
40
  'Provide a jwt token to be used to authenticate with the Eik server.',
@@ -57,6 +43,7 @@ exports.builder = (yargs) => {
57
43
  },
58
44
  });
59
45
 
46
+ // @ts-expect-error
60
47
  yargs.default('token', defaults.token, defaults.token ? '######' : '');
61
48
 
62
49
  yargs.example(`eik map-alias my-map 1.0.0 1`);
@@ -68,7 +55,7 @@ exports.builder = (yargs) => {
68
55
  yargs.example(`eik map-alias my-map 4.2.2 4 --debug`);
69
56
  };
70
57
 
71
- exports.handler = async (argv) => {
58
+ export const handler = async (argv) => {
72
59
  const spinner = ora({ stream: process.stdout }).start('working...');
73
60
  let success = false;
74
61
  const { debug, name, version, server } = argv;
@@ -103,3 +90,6 @@ exports.handler = async (argv) => {
103
90
  process.exit(1);
104
91
  }
105
92
  };
93
+
94
+ export const deprecated =
95
+ '"map-alias" will be removed in a future version. Please use "alias" instead';
@@ -0,0 +1,90 @@
1
+ import { join } from 'path';
2
+ import ora from 'ora';
3
+ import PublishMap from '../classes/publish/map.js';
4
+ import { logger, getDefaults } from '../utils/index.js';
5
+ import { Artifact } from '../formatters/index.js';
6
+
7
+ export const command = 'map <name> <version> <file>';
8
+
9
+ export const aliases = ['m'];
10
+
11
+ export const describe = `Upload an import map file to the server under a given name and version. A name/version combination must be unique and a version must be semver compliant. Subsquent published versions must increase. Eg. 1.0.0 1.0.1, 1.1.0, 2.0.0 etc.`;
12
+
13
+ export const builder = (yargs) => {
14
+ const defaults = getDefaults(yargs.argv.config || yargs.argv.cwd);
15
+
16
+ yargs
17
+ .positional('name', {
18
+ describe: 'Import map name.',
19
+ type: 'string',
20
+ })
21
+ .positional('version', {
22
+ describe: 'Import map version.',
23
+ type: 'string',
24
+ })
25
+ .positional('file', {
26
+ describe:
27
+ 'Path to import map file on local disk relative to the current working directory.',
28
+ type: 'string',
29
+ normalize: true,
30
+ });
31
+
32
+ yargs.options({
33
+ server: {
34
+ alias: 's',
35
+ describe: 'Specify location of asset server.',
36
+ // @ts-expect-error
37
+ default: defaults.server,
38
+ },
39
+ token: {
40
+ describe:
41
+ 'Provide a jwt token to be used to authenticate with the Eik server.',
42
+ default: '',
43
+ alias: 't',
44
+ },
45
+ });
46
+
47
+ // @ts-expect-error
48
+ yargs.default('token', defaults.token, defaults.token ? '######' : '');
49
+
50
+ yargs.example(`eik map my-map 1.0.0 ./import-map.json`);
51
+ yargs.example(`eik map my-map 2.1.0 ./import-map.json --debug`);
52
+ yargs.example(
53
+ `eik map my-map 2.1.1 ./import-map.json --server https://assets.myeikserver.com`,
54
+ );
55
+ };
56
+
57
+ export const handler = async (argv) => {
58
+ const spinner = ora({ stream: process.stdout }).start('working...');
59
+ const { debug, server, name, version } = argv;
60
+
61
+ try {
62
+ const log = logger(spinner, debug);
63
+
64
+ await new PublishMap({ logger: log, ...argv }).run();
65
+
66
+ let url = new URL(join('map', name), server);
67
+ let res = await fetch(url);
68
+ const pkgMeta = await res.json();
69
+
70
+ url = new URL(join('map', name, version), server);
71
+ res = await fetch(url);
72
+
73
+ log.info(`Published import map "${name}" at version "${version}"`);
74
+
75
+ spinner.text = '';
76
+ spinner.stopAndPersist();
77
+
78
+ const artifact = new Artifact(pkgMeta);
79
+ const versions = new Map(pkgMeta.versions);
80
+ artifact.versions = Array.from(versions.values());
81
+ artifact.format(server);
82
+
83
+ process.stdout.write('\n');
84
+ } catch (err) {
85
+ spinner.warn(err.message);
86
+ spinner.text = '';
87
+ spinner.stopAndPersist();
88
+ process.exit(1);
89
+ }
90
+ };
package/commands/meta.js CHANGED
@@ -1,25 +1,16 @@
1
- /* eslint-disable prefer-template */
2
- /* eslint-disable no-restricted-properties */
3
- /* eslint-disable one-var */
1
+ import ora from 'ora';
2
+ import Meta from '../classes/meta.js';
3
+ import { Artifact } from '../formatters/index.js';
4
+ import { logger, getDefaults } from '../utils/index.js';
4
5
 
5
- 'use strict';
6
+ export const command = 'meta <name>';
6
7
 
7
- const ora = require('ora');
8
- const { getDefaults } = require('@eik/common-config-loader');
9
- const Meta = require('../classes/meta');
10
- const { Artifact } = require('../formatters');
11
- const { logger, getCWD } = require('../utils');
8
+ export const aliases = ['show'];
12
9
 
13
- exports.command = 'meta <name>';
10
+ export const describe = `Retrieve meta information by package, map or npm name.If a given name exists in several types (package and map for example), results will be returned and displayed from all matching types`;
14
11
 
15
- exports.aliases = ['show'];
16
-
17
- exports.describe = `Retrieve meta information by package, map or npm name
18
- If a given name exists in several types (package and map for example), results will be returned and displayed from all matching types`;
19
-
20
- exports.builder = (yargs) => {
21
- const cwd = getCWD();
22
- const defaults = getDefaults(cwd);
12
+ export const builder = (yargs) => {
13
+ const defaults = getDefaults(yargs.argv.config || yargs.argv.cwd);
23
14
 
24
15
  yargs.positional('name', {
25
16
  describe:
@@ -31,18 +22,9 @@ exports.builder = (yargs) => {
31
22
  server: {
32
23
  alias: 's',
33
24
  describe: 'Specify location of asset server.',
25
+ // @ts-expect-error
34
26
  default: defaults.server,
35
27
  },
36
- debug: {
37
- describe: 'Logs additional messages',
38
- default: false,
39
- type: 'boolean',
40
- },
41
- cwd: {
42
- alias: 'c',
43
- describe: 'Alter current working directory.',
44
- default: defaults.cwd,
45
- },
46
28
  });
47
29
 
48
30
  yargs.example(`eik meta lit-html`);
@@ -50,13 +32,14 @@ exports.builder = (yargs) => {
50
32
  yargs.example(`eik meta my-app --server https://assets.myeikserver.com`);
51
33
  };
52
34
 
53
- exports.handler = async (argv) => {
35
+ export const handler = async (argv) => {
54
36
  const spinner = ora({ stream: process.stdout }).start('working...');
55
37
  let meta = false;
56
38
  const { debug, server } = argv;
57
39
  const l = logger(spinner, debug);
58
40
 
59
41
  try {
42
+ // @ts-expect-error
60
43
  meta = await new Meta({ logger: l, ...argv }).run();
61
44
  spinner.text = '';
62
45
  spinner.stopAndPersist();