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