@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.
- package/CHANGELOG.md +156 -3
- package/classes/alias.js +43 -16
- package/classes/index.js +47 -23
- package/classes/integrity.js +27 -16
- package/classes/login.js +21 -7
- package/classes/meta.js +20 -12
- package/classes/ping.js +20 -9
- package/classes/publish/map.js +33 -10
- package/classes/publish/package/index.js +54 -17
- package/classes/publish/package/tasks/check-bundle-sizes.js +7 -11
- package/classes/publish/package/tasks/check-if-already-published.js +8 -11
- package/classes/publish/package/tasks/cleanup.js +7 -9
- package/classes/publish/package/tasks/create-temp-directory.js +5 -9
- package/classes/publish/package/tasks/create-zip-file.js +6 -11
- package/classes/publish/package/tasks/dry-run.js +4 -8
- package/classes/publish/package/tasks/save-metafile.js +5 -7
- package/classes/publish/package/tasks/task.js +3 -5
- package/classes/publish/package/tasks/upload-files.js +16 -17
- package/classes/publish/package/tasks/validate-input.js +4 -8
- package/classes/version.js +38 -21
- package/commands/alias.js +105 -0
- package/commands/index.js +27 -0
- package/commands/init.js +69 -52
- package/commands/integrity.js +15 -32
- package/commands/login.js +23 -35
- package/commands/map-alias.js +16 -26
- package/commands/map.js +90 -0
- package/commands/meta.js +12 -29
- package/commands/npm-alias.js +16 -26
- package/commands/package-alias.js +21 -28
- package/commands/ping.js +11 -21
- package/commands/publish.js +82 -138
- package/commands/version.js +16 -33
- package/formatters/alias.js +4 -8
- package/formatters/artifact.js +4 -8
- package/formatters/file.js +3 -10
- package/formatters/index.js +5 -5
- package/formatters/version.js +5 -12
- package/index.js +53 -12
- package/package.json +49 -52
- package/readme.md +16 -4
- package/types/classes/alias.d.ts +60 -0
- package/types/classes/index.d.ts +37 -0
- package/types/classes/integrity.d.ts +35 -0
- package/types/classes/login.d.ts +25 -0
- package/types/classes/meta.d.ts +28 -0
- package/types/classes/ping.d.ts +23 -0
- package/types/classes/publish/map.d.ts +51 -0
- package/types/classes/publish/package/index.d.ts +94 -0
- package/types/classes/publish/package/tasks/check-bundle-sizes.d.ts +4 -0
- package/types/classes/publish/package/tasks/check-if-already-published.d.ts +4 -0
- package/types/classes/publish/package/tasks/cleanup.d.ts +4 -0
- package/types/classes/publish/package/tasks/create-temp-directory.d.ts +4 -0
- package/types/classes/publish/package/tasks/create-zip-file.d.ts +4 -0
- package/types/classes/publish/package/tasks/dry-run.d.ts +7 -0
- package/types/classes/publish/package/tasks/save-metafile.d.ts +4 -0
- package/types/classes/publish/package/tasks/task.d.ts +8 -0
- package/types/classes/publish/package/tasks/upload-files.d.ts +4 -0
- package/types/classes/publish/package/tasks/validate-input.d.ts +4 -0
- package/types/classes/version.d.ts +43 -0
- package/types/utils/hash/compare.d.ts +2 -0
- package/types/utils/hash/file.d.ts +2 -0
- package/types/utils/hash/files.d.ts +2 -0
- package/types/utils/hash/index.d.ts +9 -0
- package/types/utils/http/index.d.ts +12 -0
- package/types/utils/http/integrity.d.ts +2 -0
- package/types/utils/http/latest-version.d.ts +2 -0
- package/types/utils/http/request.d.ts +33 -0
- package/types/utils/http/versions.d.ts +5 -0
- package/types/utils/index.d.ts +6 -0
- package/types/utils/json/index.d.ts +9 -0
- package/types/utils/json/read.d.ts +5 -0
- package/types/utils/json/write-eik.d.ts +5 -0
- package/types/utils/json/write.d.ts +5 -0
- package/types/utils/logger.d.ts +33 -0
- package/types/utils/type-slug.d.ts +2 -0
- package/types/utils/type-title.d.ts +2 -0
- package/utils/hash/compare.js +1 -3
- package/utils/hash/file.js +3 -5
- package/utils/hash/files.js +4 -6
- package/utils/hash/index.js +4 -4
- package/utils/http/index.js +6 -5
- package/utils/http/integrity.js +2 -5
- package/utils/http/latest-version.js +2 -5
- package/utils/http/request.js +25 -19
- package/utils/http/versions.js +2 -5
- package/utils/index.js +6 -4
- package/utils/json/index.js +4 -4
- package/utils/json/read.js +5 -7
- package/utils/json/write-eik.js +4 -6
- package/utils/json/write.js +4 -6
- package/utils/logger.js +2 -5
- package/utils/type-slug.js +1 -1
- package/utils/type-title.js +1 -1
- package/utils/get-cwd.js +0 -14
package/commands/init.js
CHANGED
@@ -1,41 +1,28 @@
|
|
1
|
-
|
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
|
4
|
-
const fs = require('fs');
|
5
|
-
const ora = require('ora');
|
6
|
-
const { logger } = require('../utils');
|
6
|
+
const command = 'init';
|
7
7
|
|
8
|
-
|
8
|
+
const aliases = ['i'];
|
9
9
|
|
10
|
-
|
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
|
-
|
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 --
|
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
|
-
|
59
|
-
|
60
|
-
const {
|
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
|
-
|
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
|
-
|
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
|
-
|
85
|
-
|
86
|
-
|
87
|
-
|
88
|
-
|
89
|
-
|
90
|
-
|
91
|
-
|
92
|
-
|
93
|
-
|
94
|
-
|
95
|
-
|
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
|
-
|
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 };
|
package/commands/integrity.js
CHANGED
@@ -1,55 +1,38 @@
|
|
1
|
-
|
2
|
-
|
3
|
-
|
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
|
-
'
|
7
|
+
export const command = 'integrity [name] [version]';
|
6
8
|
|
7
|
-
const
|
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
|
-
|
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
|
-
|
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
|
-
|
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
|
-
|
52
|
-
const { name, server,
|
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
|
-
|
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 =
|
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
|
-
|
10
|
+
export const command = 'login';
|
12
11
|
|
13
|
-
|
12
|
+
export const aliases = [];
|
14
13
|
|
15
|
-
|
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
|
-
|
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
|
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
|
-
|
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
|
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
|
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 =
|
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
|
|
package/commands/map-alias.js
CHANGED
@@ -1,23 +1,18 @@
|
|
1
|
-
|
1
|
+
// @deprecated in favor of `alias` command
|
2
2
|
|
3
|
-
|
4
|
-
|
5
|
-
|
6
|
-
|
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
|
-
|
8
|
+
export const command = 'map-alias <name> <version> <alias>';
|
10
9
|
|
11
|
-
|
10
|
+
export const aliases = ['ma'];
|
12
11
|
|
13
|
-
|
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
|
-
|
19
|
-
const
|
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
|
-
|
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';
|
package/commands/map.js
ADDED
@@ -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
|
-
|
2
|
-
|
3
|
-
|
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
|
-
'
|
6
|
+
export const command = 'meta <name>';
|
6
7
|
|
7
|
-
const
|
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
|
-
|
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
|
-
|
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
|
-
|
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();
|