@eik/cli 3.1.3 → 3.1.5
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 +14 -0
- package/classes/alias.js +109 -119
- package/classes/index.js +58 -58
- package/classes/integrity.js +89 -97
- package/classes/login.js +47 -47
- package/classes/meta.js +75 -80
- package/classes/ping.js +53 -53
- package/classes/publish/map.js +90 -92
- package/classes/publish/package/index.js +130 -130
- package/classes/publish/package/tasks/check-bundle-sizes.js +19 -21
- package/classes/publish/package/tasks/check-if-already-published.js +67 -72
- package/classes/publish/package/tasks/cleanup.js +17 -17
- package/classes/publish/package/tasks/create-temp-directory.js +17 -17
- package/classes/publish/package/tasks/create-zip-file.js +60 -65
- package/classes/publish/package/tasks/dry-run.js +15 -15
- package/classes/publish/package/tasks/save-metafile.js +17 -17
- package/classes/publish/package/tasks/task.js +7 -7
- package/classes/publish/package/tasks/upload-files.js +52 -56
- package/classes/publish/package/tasks/validate-input.js +24 -24
- package/classes/version.js +152 -163
- package/commands/alias.js +61 -95
- package/commands/init.js +89 -109
- package/commands/integrity.js +42 -55
- package/commands/login.js +80 -101
- package/commands/map-alias.js +62 -82
- package/commands/map.js +69 -83
- package/commands/meta.js +36 -53
- package/commands/npm-alias.js +55 -80
- package/commands/package-alias.js +58 -90
- package/commands/ping.js +19 -30
- package/commands/publish.js +117 -127
- package/commands/version.js +87 -95
- package/formatters/alias.js +60 -63
- package/formatters/artifact.js +77 -77
- package/formatters/file.js +25 -25
- package/formatters/index.js +4 -4
- package/formatters/version.js +49 -51
- package/index.js +76 -72
- package/package.json +5 -4
- package/readme.md +1 -1
- package/types/classes/alias.d.ts +3 -3
- package/types/classes/integrity.d.ts +1 -1
- package/types/classes/login.d.ts +1 -1
- package/types/classes/meta.d.ts +1 -1
- package/types/classes/ping.d.ts +1 -1
- package/types/classes/publish/map.d.ts +1 -1
- package/types/classes/publish/package/index.d.ts +11 -11
- package/types/classes/publish/package/tasks/check-bundle-sizes.d.ts +1 -1
- package/types/classes/publish/package/tasks/check-if-already-published.d.ts +1 -1
- package/types/classes/publish/package/tasks/cleanup.d.ts +1 -1
- package/types/classes/publish/package/tasks/create-temp-directory.d.ts +1 -1
- package/types/classes/publish/package/tasks/create-zip-file.d.ts +1 -1
- package/types/classes/publish/package/tasks/dry-run.d.ts +1 -1
- package/types/classes/publish/package/tasks/save-metafile.d.ts +1 -1
- package/types/classes/publish/package/tasks/task.d.ts +1 -1
- package/types/classes/publish/package/tasks/upload-files.d.ts +1 -1
- package/types/classes/publish/package/tasks/validate-input.d.ts +1 -1
- package/types/classes/version.d.ts +3 -3
- package/types/utils/defaults.d.ts +22 -0
- package/types/utils/error.d.ts +19 -0
- package/types/utils/hash/index.d.ts +3 -3
- package/types/utils/http/index.d.ts +4 -4
- package/types/utils/index.d.ts +5 -5
- package/types/utils/json/index.d.ts +3 -3
- package/utils/command-handler.js +72 -0
- package/utils/defaults.js +79 -0
- package/utils/error.js +42 -0
- package/utils/hash/file.js +4 -4
- package/utils/hash/files.js +9 -9
- package/utils/hash/index.js +3 -3
- package/utils/http/index.js +4 -4
- package/utils/http/integrity.js +18 -18
- package/utils/http/latest-version.js +37 -37
- package/utils/http/request.js +42 -42
- package/utils/http/versions.js +20 -20
- package/utils/index.js +6 -5
- package/utils/json/index.js +3 -3
- package/utils/json/read.js +26 -26
- package/utils/json/write-eik.js +17 -17
- package/utils/json/write.js +26 -28
- package/utils/logger.js +43 -43
- package/utils/type-title.js +3 -3
- package/utils/url.js +2 -2
- package/commands/index.js +0 -27
package/commands/init.js
CHANGED
@@ -1,122 +1,102 @@
|
|
1
|
-
import { join } from
|
2
|
-
import fs from
|
3
|
-
import
|
4
|
-
import { logger } from '../utils/index.js';
|
1
|
+
import { join } from "path";
|
2
|
+
import fs from "fs";
|
3
|
+
import { commandHandler } from "../utils/command-handler.js";
|
5
4
|
|
6
|
-
const command =
|
5
|
+
const command = "init";
|
7
6
|
|
8
|
-
const aliases = [
|
7
|
+
const aliases = ["i"];
|
9
8
|
|
10
|
-
const describe =
|
9
|
+
const describe = "Create an eik.json file";
|
11
10
|
|
11
|
+
/** @type {import('yargs').CommandBuilder} */
|
12
12
|
const builder = (yargs) => {
|
13
|
-
|
14
|
-
|
15
|
-
|
16
|
-
|
17
|
-
|
18
|
-
|
19
|
-
|
20
|
-
|
21
|
-
|
22
|
-
|
23
|
-
|
24
|
-
|
25
|
-
|
26
|
-
|
27
|
-
|
28
|
-
|
29
|
-
|
30
|
-
|
31
|
-
|
32
|
-
|
33
|
-
|
34
|
-
|
35
|
-
default: '',
|
36
|
-
},
|
37
|
-
});
|
13
|
+
return yargs
|
14
|
+
.options({
|
15
|
+
server: {
|
16
|
+
alias: "s",
|
17
|
+
describe: "Eik server address, if different from configuration file",
|
18
|
+
},
|
19
|
+
version: {
|
20
|
+
alias: "v",
|
21
|
+
describe:
|
22
|
+
'Specify the semver version field in "eik.json". Eg. --version 1.0.0',
|
23
|
+
default: "1.0.0",
|
24
|
+
},
|
25
|
+
name: {
|
26
|
+
alias: "n",
|
27
|
+
describe:
|
28
|
+
'Specify the app name field in "eik.json". Eg. --name my-great-app',
|
29
|
+
},
|
30
|
+
})
|
31
|
+
.example("eik init")
|
32
|
+
.example(
|
33
|
+
"eik init --server https://assets.myserver.com --version 2.0.0 --name my-app",
|
34
|
+
);
|
38
35
|
};
|
39
36
|
|
40
|
-
const handler = async (argv) => {
|
41
|
-
|
42
|
-
|
43
|
-
|
44
|
-
|
45
|
-
|
46
|
-
|
47
|
-
|
48
|
-
|
49
|
-
|
50
|
-
|
51
|
-
|
52
|
-
|
53
|
-
|
54
|
-
|
55
|
-
|
56
|
-
|
57
|
-
|
58
|
-
|
59
|
-
|
60
|
-
|
61
|
-
|
62
|
-
|
63
|
-
|
64
|
-
|
65
|
-
|
66
|
-
|
67
|
-
|
68
|
-
|
69
|
-
|
70
|
-
|
71
|
-
|
72
|
-
|
73
|
-
|
74
|
-
|
75
|
-
|
76
|
-
|
77
|
-
|
78
|
-
|
79
|
-
|
80
|
-
|
81
|
-
|
82
|
-
|
83
|
-
|
84
|
-
|
85
|
-
|
86
|
-
|
87
|
-
|
88
|
-
|
89
|
-
|
90
|
-
|
91
|
-
|
92
|
-
|
93
|
-
|
94
|
-
|
95
|
-
|
96
|
-
|
97
|
-
|
98
|
-
|
99
|
-
name,
|
100
|
-
version,
|
101
|
-
server,
|
102
|
-
files: './public',
|
103
|
-
'import-map': [],
|
104
|
-
},
|
105
|
-
null,
|
106
|
-
2,
|
107
|
-
);
|
108
|
-
fs.writeFileSync(pathname, output);
|
109
|
-
|
110
|
-
log.info(`Wrote to ${pathname}
|
37
|
+
const handler = commandHandler({ command }, async (argv, log) => {
|
38
|
+
let { cwd, server, name, version } = argv;
|
39
|
+
|
40
|
+
const pathname = join(cwd, "./eik.json");
|
41
|
+
log.debug(`Checking for existing ${pathname}`);
|
42
|
+
|
43
|
+
let eikJsonExists = false;
|
44
|
+
try {
|
45
|
+
const st = fs.statSync(pathname);
|
46
|
+
if (st.isFile()) {
|
47
|
+
eikJsonExists = true;
|
48
|
+
}
|
49
|
+
} catch (err) {
|
50
|
+
// noop
|
51
|
+
}
|
52
|
+
if (eikJsonExists) {
|
53
|
+
throw new Error(
|
54
|
+
`An "eik.json" file already exists in directory. File will not be written`,
|
55
|
+
);
|
56
|
+
}
|
57
|
+
|
58
|
+
if (!name || !version || version === "1.0.0") {
|
59
|
+
log.debug("Looking for default from package.json");
|
60
|
+
try {
|
61
|
+
let packageJson = fs.readFileSync(join(cwd, "package.json"), "utf-8");
|
62
|
+
packageJson = JSON.parse(packageJson);
|
63
|
+
if (!name) {
|
64
|
+
name = packageJson.name;
|
65
|
+
log.debug(`Using ${name} from package.json as default name`);
|
66
|
+
}
|
67
|
+
if (!version || version === "1.0.0") {
|
68
|
+
version = packageJson.version;
|
69
|
+
log.debug(`Using ${version} from package.json as default version`);
|
70
|
+
}
|
71
|
+
} catch (e) {
|
72
|
+
// noop
|
73
|
+
}
|
74
|
+
} else {
|
75
|
+
log.debug(`Got ${name} and ${version}, skipping package.json`);
|
76
|
+
}
|
77
|
+
|
78
|
+
log.debug(`Writing to ${pathname}`);
|
79
|
+
|
80
|
+
const output = JSON.stringify(
|
81
|
+
{
|
82
|
+
$schema:
|
83
|
+
"https://raw.githubusercontent.com/eik-lib/common/main/lib/schemas/eikjson.schema.json",
|
84
|
+
name,
|
85
|
+
version,
|
86
|
+
server,
|
87
|
+
files: "./public",
|
88
|
+
"import-map": [],
|
89
|
+
},
|
90
|
+
null,
|
91
|
+
2,
|
92
|
+
);
|
93
|
+
fs.writeFileSync(pathname, output);
|
94
|
+
|
95
|
+
log.info(`Wrote to ${pathname}
|
111
96
|
|
112
97
|
${output}
|
113
98
|
|
114
99
|
Read more about configuring Eik on https://eik.dev/docs/reference/eik-json`);
|
115
|
-
|
116
|
-
log.warn(err.message);
|
117
|
-
}
|
118
|
-
spinner.text = '';
|
119
|
-
spinner.stopAndPersist();
|
120
|
-
};
|
100
|
+
});
|
121
101
|
|
122
102
|
export { command, aliases, describe, builder, handler };
|
package/commands/integrity.js
CHANGED
@@ -1,62 +1,49 @@
|
|
1
|
-
import { join } from
|
2
|
-
import
|
3
|
-
import
|
4
|
-
import {
|
5
|
-
import json from '../utils/json/index.js';
|
1
|
+
import { join } from "path";
|
2
|
+
import Integrity from "../classes/integrity.js";
|
3
|
+
import json from "../utils/json/index.js";
|
4
|
+
import { commandHandler } from "../utils/command-handler.js";
|
6
5
|
|
7
|
-
export const command =
|
6
|
+
export const command = "integrity [name] [version]";
|
8
7
|
|
9
|
-
export const aliases = [
|
8
|
+
export const aliases = ["int"];
|
10
9
|
|
11
|
-
export const describe =
|
10
|
+
export const describe = "Get file integrity information";
|
12
11
|
|
12
|
+
/** @type {import('yargs').CommandBuilder} */
|
13
13
|
export const builder = (yargs) => {
|
14
|
-
|
15
|
-
|
16
|
-
|
17
|
-
|
18
|
-
|
19
|
-
|
20
|
-
|
21
|
-
|
22
|
-
|
23
|
-
});
|
24
|
-
|
25
|
-
yargs.example(`eik integrity`);
|
26
|
-
yargs.example(`eik integrity --debug`);
|
14
|
+
return yargs
|
15
|
+
.options({
|
16
|
+
server: {
|
17
|
+
alias: "s",
|
18
|
+
describe: "Eik server address, if different from configuration file",
|
19
|
+
},
|
20
|
+
})
|
21
|
+
.example("eik integrity")
|
22
|
+
.example("eik integrity --server https://assets.myserver.com");
|
27
23
|
};
|
28
24
|
|
29
|
-
export const handler =
|
30
|
-
|
31
|
-
|
32
|
-
|
33
|
-
|
34
|
-
|
35
|
-
|
36
|
-
|
37
|
-
|
38
|
-
|
39
|
-
|
40
|
-
|
41
|
-
|
42
|
-
|
43
|
-
|
44
|
-
|
45
|
-
|
46
|
-
|
47
|
-
|
48
|
-
|
49
|
-
|
50
|
-
|
51
|
-
|
52
|
-
|
53
|
-
|
54
|
-
process.stdout.write('\n');
|
55
|
-
}
|
56
|
-
} catch (err) {
|
57
|
-
spinner.text = '';
|
58
|
-
spinner.stopAndPersist();
|
59
|
-
l.warn(err.message);
|
60
|
-
process.exit(1);
|
61
|
-
}
|
62
|
-
};
|
25
|
+
export const handler = commandHandler(
|
26
|
+
{ command, options: ["server"] },
|
27
|
+
async (argv, log, spinner) => {
|
28
|
+
const { name, version, server, out, type, cwd, debug } = argv;
|
29
|
+
|
30
|
+
const integrity = await new Integrity({
|
31
|
+
logger: log,
|
32
|
+
name,
|
33
|
+
version,
|
34
|
+
server,
|
35
|
+
debug,
|
36
|
+
cwd,
|
37
|
+
type,
|
38
|
+
}).run();
|
39
|
+
|
40
|
+
if (integrity) {
|
41
|
+
const filename = join(out, "integrity.json");
|
42
|
+
await json.write(integrity, { cwd, filename });
|
43
|
+
spinner.succeed(
|
44
|
+
`integrity information for package "${name}" (v${version}) saved to "${filename}"`,
|
45
|
+
);
|
46
|
+
process.stdout.write("\n");
|
47
|
+
}
|
48
|
+
},
|
49
|
+
);
|
package/commands/login.js
CHANGED
@@ -1,111 +1,90 @@
|
|
1
|
-
import os from
|
2
|
-
import readline from
|
3
|
-
import
|
4
|
-
import
|
5
|
-
import {
|
6
|
-
import json from '../utils/json/index.js';
|
1
|
+
import os from "os";
|
2
|
+
import readline from "readline";
|
3
|
+
import Login from "../classes/login.js";
|
4
|
+
import json from "../utils/json/index.js";
|
5
|
+
import { commandHandler } from "../utils/command-handler.js";
|
7
6
|
|
8
7
|
const homedir = os.homedir();
|
9
8
|
|
10
|
-
export const command =
|
9
|
+
export const command = "login";
|
11
10
|
|
12
11
|
export const aliases = [];
|
13
12
|
|
14
|
-
export const describe =
|
13
|
+
export const describe = "Log in to an Eik server";
|
15
14
|
|
15
|
+
/** @type {import('yargs').CommandBuilder} */
|
16
16
|
export const builder = (yargs) => {
|
17
|
-
|
18
|
-
|
19
|
-
|
20
|
-
|
21
|
-
|
22
|
-
|
23
|
-
|
24
|
-
|
25
|
-
|
26
|
-
|
27
|
-
|
28
|
-
|
29
|
-
|
30
|
-
|
31
|
-
|
32
|
-
key: {
|
33
|
-
alias: 'k',
|
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 ########`,
|
35
|
-
type: 'string',
|
36
|
-
default: '',
|
37
|
-
},
|
38
|
-
});
|
17
|
+
return yargs
|
18
|
+
.options({
|
19
|
+
server: {
|
20
|
+
alias: "s",
|
21
|
+
describe: "Eik server address, if different from configuration file",
|
22
|
+
type: "string",
|
23
|
+
},
|
24
|
+
key: {
|
25
|
+
alias: "k",
|
26
|
+
describe: "Login access key",
|
27
|
+
type: "string",
|
28
|
+
},
|
29
|
+
})
|
30
|
+
.example("eik login --server https://assets.myserver.com")
|
31
|
+
.example("eik login --server https://assets.myserver.com --key yourkey");
|
39
32
|
};
|
40
33
|
|
41
|
-
export const handler =
|
42
|
-
|
43
|
-
|
44
|
-
|
45
|
-
|
46
|
-
|
47
|
-
|
48
|
-
|
49
|
-
|
50
|
-
|
51
|
-
|
52
|
-
|
53
|
-
|
54
|
-
|
55
|
-
|
56
|
-
|
57
|
-
|
58
|
-
|
59
|
-
|
60
|
-
|
61
|
-
|
62
|
-
|
63
|
-
|
64
|
-
|
65
|
-
|
66
|
-
|
67
|
-
|
68
|
-
|
69
|
-
|
70
|
-
|
71
|
-
|
72
|
-
|
73
|
-
|
74
|
-
|
75
|
-
|
76
|
-
|
77
|
-
|
78
|
-
|
79
|
-
|
80
|
-
|
81
|
-
|
82
|
-
|
83
|
-
|
84
|
-
|
85
|
-
|
86
|
-
|
87
|
-
|
88
|
-
|
89
|
-
|
90
|
-
|
91
|
-
|
92
|
-
|
93
|
-
|
94
|
-
|
95
|
-
|
96
|
-
|
97
|
-
|
98
|
-
} catch (err) {
|
99
|
-
// @ts-expect-error
|
100
|
-
logger.warn(err.message);
|
101
|
-
}
|
102
|
-
|
103
|
-
if (success) {
|
104
|
-
spinner.text = '';
|
105
|
-
spinner.stopAndPersist();
|
106
|
-
} else {
|
107
|
-
spinner.text = '';
|
108
|
-
spinner.stopAndPersist();
|
109
|
-
process.exit(1);
|
110
|
-
}
|
111
|
-
};
|
34
|
+
export const handler = commandHandler(
|
35
|
+
{ command, options: ["server"] },
|
36
|
+
async (argv, logger) => {
|
37
|
+
const { key, server } = argv;
|
38
|
+
|
39
|
+
let k = key;
|
40
|
+
let s = server;
|
41
|
+
let rl = null;
|
42
|
+
|
43
|
+
if (!s || !k) {
|
44
|
+
rl = readline.createInterface({
|
45
|
+
input: process.stdin,
|
46
|
+
output: process.stdout,
|
47
|
+
});
|
48
|
+
}
|
49
|
+
|
50
|
+
if (!s) {
|
51
|
+
await new Promise((resolve) => {
|
52
|
+
rl?.question("Enter Eik server address > ", (input) => {
|
53
|
+
s = input;
|
54
|
+
// @ts-expect-error
|
55
|
+
resolve();
|
56
|
+
});
|
57
|
+
});
|
58
|
+
}
|
59
|
+
|
60
|
+
if (!k) {
|
61
|
+
await new Promise((resolve) => {
|
62
|
+
rl?.question(`Enter login key for ${s} > `, (input) => {
|
63
|
+
k = input;
|
64
|
+
// @ts-expect-error
|
65
|
+
resolve();
|
66
|
+
});
|
67
|
+
});
|
68
|
+
}
|
69
|
+
|
70
|
+
if (rl) rl.close();
|
71
|
+
|
72
|
+
const token = await new Login({
|
73
|
+
logger,
|
74
|
+
key: k,
|
75
|
+
server: s,
|
76
|
+
}).run();
|
77
|
+
|
78
|
+
if (token) {
|
79
|
+
const meta = /** @type {{ tokens: any }} */ (
|
80
|
+
await json.read({ cwd: homedir, filename: ".eikrc" })
|
81
|
+
);
|
82
|
+
|
83
|
+
const tokens = new Map(meta.tokens);
|
84
|
+
tokens.set(s, token);
|
85
|
+
meta.tokens = Array.from(tokens);
|
86
|
+
|
87
|
+
await json.write(meta, { cwd: homedir, filename: ".eikrc" });
|
88
|
+
}
|
89
|
+
},
|
90
|
+
);
|