keep-a-changelog 2.0.0-beta → 2.1.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.
Files changed (110) hide show
  1. package/CHANGELOG.md +23 -1
  2. package/README.md +5 -2
  3. package/esm/_dnt.polyfills.js +15 -0
  4. package/esm/_dnt.shims.js +62 -0
  5. package/esm/bin.js +18 -16
  6. package/esm/deps/{deno_land/std_0.113.0 → deno.land/std@0.120.0}/_util/assert.js +0 -0
  7. package/esm/deps/{deno_land/std_0.113.0 → deno.land/std@0.120.0}/_util/os.js +5 -3
  8. package/esm/deps/{deno_land/std_0.113.0 → deno.land/std@0.120.0}/flags/mod.js +0 -0
  9. package/esm/deps/{deno_land/std_0.113.0 → deno.land/std@0.120.0}/path/_constants.js +0 -0
  10. package/esm/deps/{deno_land/std_0.113.0 → deno.land/std@0.120.0}/path/_interface.js +0 -0
  11. package/esm/deps/{deno_land/std_0.113.0 → deno.land/std@0.120.0}/path/_util.js +0 -0
  12. package/esm/deps/{deno_land/std_0.113.0 → deno.land/std@0.120.0}/path/common.js +0 -0
  13. package/esm/deps/{deno_land/std_0.113.0 → deno.land/std@0.120.0}/path/glob.js +1 -1
  14. package/esm/deps/{deno_land/std_0.113.0 → deno.land/std@0.120.0}/path/mod.js +0 -0
  15. package/esm/deps/{deno_land/std_0.113.0 → deno.land/std@0.120.0}/path/posix.js +5 -2
  16. package/esm/deps/{deno_land/std_0.113.0 → deno.land/std@0.120.0}/path/separator.js +0 -0
  17. package/esm/deps/{deno_land/std_0.113.0 → deno.land/std@0.120.0}/path/win32.js +5 -2
  18. package/esm/deps/{deno_land/std_0.51.0 → deno.land/std@0.51.0}/fs/eol.js +0 -0
  19. package/esm/deps/{deno_land/x/ini_v2.1.0 → deno.land/x/ini@v2.1.0}/ini.js +3 -3
  20. package/esm/deps/{deno_land/x/ini_v2.1.0 → deno.land/x/ini@v2.1.0}/mod.js +0 -0
  21. package/esm/deps/{deno_land/x/semver_v1.4.0 → deno.land/x/semver@v1.4.0}/mod.js +0 -0
  22. package/esm/mod.js +1 -0
  23. package/esm/src/Release.js +11 -4
  24. package/esm/src/deps.js +1 -1
  25. package/esm/src/parser.js +16 -3
  26. package/esm/test/changelog.expected.md +3 -3
  27. package/esm/test/changelog.md +9 -6
  28. package/package.json +6 -6
  29. package/script/_dnt.polyfills.js +16 -0
  30. package/script/_dnt.shims.js +66 -0
  31. package/script/bin.js +140 -0
  32. package/script/deps/deno.land/std@0.120.0/_util/assert.js +18 -0
  33. package/script/deps/deno.land/std@0.120.0/_util/os.js +43 -0
  34. package/script/deps/deno.land/std@0.120.0/flags/mod.js +259 -0
  35. package/script/deps/deno.land/std@0.120.0/path/_constants.js +48 -0
  36. package/script/deps/deno.land/std@0.120.0/path/_interface.js +4 -0
  37. package/script/deps/deno.land/std@0.120.0/path/_util.js +124 -0
  38. package/script/deps/deno.land/std@0.120.0/path/common.js +40 -0
  39. package/script/deps/deno.land/std@0.120.0/path/glob.js +391 -0
  40. package/script/deps/deno.land/std@0.120.0/path/mod.js +45 -0
  41. package/script/deps/deno.land/std@0.120.0/path/posix.js +535 -0
  42. package/script/deps/deno.land/std@0.120.0/path/separator.js +8 -0
  43. package/script/deps/deno.land/std@0.120.0/path/win32.js +1005 -0
  44. package/script/deps/deno.land/std@0.51.0/fs/eol.js +34 -0
  45. package/script/deps/deno.land/x/ini@v2.1.0/ini.js +256 -0
  46. package/script/deps/deno.land/x/ini@v2.1.0/mod.js +17 -0
  47. package/script/deps/deno.land/x/semver@v1.4.0/mod.js +1568 -0
  48. package/script/mod.js +15 -0
  49. package/{umd → script}/package.json +0 -0
  50. package/script/src/Change.js +51 -0
  51. package/script/src/Changelog.js +140 -0
  52. package/script/src/Release.js +217 -0
  53. package/script/src/deps.js +9 -0
  54. package/script/src/parser.js +168 -0
  55. package/{umd → script}/test/changelog.custom.type.md +0 -0
  56. package/{umd → script}/test/changelog.expected.md +3 -3
  57. package/{umd → script}/test/changelog.md +9 -6
  58. package/{umd → script}/test/empty.expected.md +0 -0
  59. package/types/_dnt.polyfills.d.ts +11 -0
  60. package/types/_dnt.shims.d.ts +5 -0
  61. package/types/bin.d.ts +1 -1
  62. package/types/deps/{deno_land/std_0.113.0 → deno.land/std@0.120.0}/_util/assert.d.ts +0 -0
  63. package/types/deps/{deno_land/std_0.113.0 → deno.land/std@0.120.0}/_util/os.d.ts +0 -0
  64. package/types/deps/{deno_land/std_0.113.0 → deno.land/std@0.120.0}/flags/mod.d.ts +0 -0
  65. package/types/deps/{deno_land/std_0.113.0 → deno.land/std@0.120.0}/path/_constants.d.ts +0 -0
  66. package/types/deps/{deno_land/std_0.113.0 → deno.land/std@0.120.0}/path/_interface.d.ts +0 -0
  67. package/types/deps/{deno_land/std_0.113.0 → deno.land/std@0.120.0}/path/_util.d.ts +0 -0
  68. package/types/deps/{deno_land/std_0.113.0 → deno.land/std@0.120.0}/path/common.d.ts +0 -0
  69. package/types/deps/{deno_land/std_0.113.0 → deno.land/std@0.120.0}/path/glob.d.ts +0 -0
  70. package/types/deps/{deno_land/std_0.113.0 → deno.land/std@0.120.0}/path/mod.d.ts +0 -0
  71. package/types/deps/{deno_land/std_0.113.0 → deno.land/std@0.120.0}/path/posix.d.ts +0 -0
  72. package/types/deps/{deno_land/std_0.113.0 → deno.land/std@0.120.0}/path/separator.d.ts +0 -0
  73. package/types/deps/{deno_land/std_0.113.0 → deno.land/std@0.120.0}/path/win32.d.ts +0 -0
  74. package/types/deps/{deno_land/std_0.51.0 → deno.land/std@0.51.0}/fs/eol.d.ts +0 -0
  75. package/types/deps/{deno_land/x/ini_v2.1.0 → deno.land/x/ini@v2.1.0}/ini.d.ts +0 -0
  76. package/types/deps/{deno_land/x/ini_v2.1.0 → deno.land/x/ini@v2.1.0}/mod.d.ts +0 -0
  77. package/types/deps/{deno_land/x/semver_v1.4.0 → deno.land/x/semver@v1.4.0}/mod.d.ts +0 -0
  78. package/types/mod.d.ts +1 -0
  79. package/types/src/Release.d.ts +3 -2
  80. package/types/src/deps.d.ts +1 -1
  81. package/types/deps/deno_land/std_0.115.1/fmt/colors.d.ts +0 -270
  82. package/types/deps/deno_land/std_0.115.1/testing/_diff.d.ts +0 -23
  83. package/types/deps/deno_land/std_0.115.1/testing/asserts.d.ts +0 -151
  84. package/types/test/Change.test.d.ts +0 -1
  85. package/types/test/fixture/CustomRelease.d.ts +0 -7
  86. package/types/test/parser.test.d.ts +0 -1
  87. package/types/test/test.d.ts +0 -1
  88. package/umd/bin.js +0 -143
  89. package/umd/deps/deno_land/std_0.113.0/_util/assert.js +0 -27
  90. package/umd/deps/deno_land/std_0.113.0/_util/os.js +0 -46
  91. package/umd/deps/deno_land/std_0.113.0/flags/mod.js +0 -268
  92. package/umd/deps/deno_land/std_0.113.0/path/_constants.js +0 -57
  93. package/umd/deps/deno_land/std_0.113.0/path/_interface.js +0 -13
  94. package/umd/deps/deno_land/std_0.113.0/path/_util.js +0 -133
  95. package/umd/deps/deno_land/std_0.113.0/path/common.js +0 -49
  96. package/umd/deps/deno_land/std_0.113.0/path/glob.js +0 -396
  97. package/umd/deps/deno_land/std_0.113.0/path/mod.js +0 -50
  98. package/umd/deps/deno_land/std_0.113.0/path/posix.js +0 -537
  99. package/umd/deps/deno_land/std_0.113.0/path/separator.js +0 -17
  100. package/umd/deps/deno_land/std_0.113.0/path/win32.js +0 -1007
  101. package/umd/deps/deno_land/std_0.51.0/fs/eol.js +0 -43
  102. package/umd/deps/deno_land/x/ini_v2.1.0/ini.js +0 -261
  103. package/umd/deps/deno_land/x/ini_v2.1.0/mod.js +0 -22
  104. package/umd/deps/deno_land/x/semver_v1.4.0/mod.js +0 -1577
  105. package/umd/mod.js +0 -23
  106. package/umd/src/Change.js +0 -60
  107. package/umd/src/Changelog.js +0 -149
  108. package/umd/src/Release.js +0 -219
  109. package/umd/src/deps.js +0 -18
  110. package/umd/src/parser.js +0 -164
package/script/bin.js ADDED
@@ -0,0 +1,140 @@
1
+ #!/usr/bin/env node
2
+ "use strict";
3
+ var __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) {
4
+ if (k2 === undefined) k2 = k;
5
+ var desc = Object.getOwnPropertyDescriptor(m, k);
6
+ if (!desc || ("get" in desc ? !m.__esModule : desc.writable || desc.configurable)) {
7
+ desc = { enumerable: true, get: function() { return m[k]; } };
8
+ }
9
+ Object.defineProperty(o, k2, desc);
10
+ }) : (function(o, m, k, k2) {
11
+ if (k2 === undefined) k2 = k;
12
+ o[k2] = m[k];
13
+ }));
14
+ var __setModuleDefault = (this && this.__setModuleDefault) || (Object.create ? (function(o, v) {
15
+ Object.defineProperty(o, "default", { enumerable: true, value: v });
16
+ }) : function(o, v) {
17
+ o["default"] = v;
18
+ });
19
+ var __importStar = (this && this.__importStar) || function (mod) {
20
+ if (mod && mod.__esModule) return mod;
21
+ var result = {};
22
+ if (mod != null) for (var k in mod) if (k !== "default" && Object.prototype.hasOwnProperty.call(mod, k)) __createBinding(result, mod, k);
23
+ __setModuleDefault(result, mod);
24
+ return result;
25
+ };
26
+ Object.defineProperty(exports, "__esModule", { value: true });
27
+ require("./_dnt.polyfills.js");
28
+ const dntShim = __importStar(require("./_dnt.shims.js"));
29
+ const mod_js_1 = require("./deps/deno.land/std@0.120.0/path/mod.js");
30
+ const mod_js_2 = require("./mod.js");
31
+ const mod_js_3 = require("./deps/deno.land/std@0.120.0/flags/mod.js");
32
+ const mod_js_4 = require("./deps/deno.land/x/ini@v2.1.0/mod.js");
33
+ const argv = (0, mod_js_3.parse)(dntShim.Deno.args, {
34
+ default: {
35
+ file: "CHANGELOG.md",
36
+ release: null,
37
+ url: null,
38
+ https: true,
39
+ quiet: false,
40
+ },
41
+ boolean: ["https", "init", "latest-release", "quiet"],
42
+ });
43
+ const file = (0, mod_js_1.join)(dntShim.Deno.cwd(), argv.file);
44
+ try {
45
+ if (argv.init) {
46
+ const changelog = new mod_js_2.Changelog("Changelog").addRelease(new mod_js_2.Release("0.1.0", new Date(), "First version"));
47
+ save(file, changelog, true);
48
+ dntShim.Deno.exit(0);
49
+ }
50
+ const changelog = (0, mod_js_2.parser)(dntShim.Deno.readTextFileSync(file));
51
+ if (argv["latest-release"]) {
52
+ const release = changelog.releases.find((release) => release.date && release.version);
53
+ if (release) {
54
+ console.log(release.version?.toString());
55
+ }
56
+ dntShim.Deno.exit(0);
57
+ }
58
+ if (argv.release) {
59
+ const release = changelog.releases.find((release) => {
60
+ if (release.date) {
61
+ return false;
62
+ }
63
+ if (typeof argv.release === "string") {
64
+ return !release.version || argv.release === release.version.toString();
65
+ }
66
+ return !!release.version;
67
+ });
68
+ if (release) {
69
+ release.date = new Date();
70
+ if (typeof argv.release === "string") {
71
+ release.setVersion(argv.release);
72
+ }
73
+ }
74
+ else {
75
+ console.error("Not found any valid unreleased version");
76
+ dntShim.Deno.exit(1);
77
+ }
78
+ }
79
+ if (!changelog.url) {
80
+ if (argv.url) {
81
+ changelog.url = argv.url;
82
+ }
83
+ else {
84
+ const url = getRemoteUrl(argv.https);
85
+ if (url) {
86
+ changelog.url = url;
87
+ }
88
+ else {
89
+ console.error(red('Please, set the repository url with --url="https://github.com/username/repository"'));
90
+ dntShim.Deno.exit(1);
91
+ }
92
+ }
93
+ }
94
+ save(file, changelog);
95
+ }
96
+ catch (err) {
97
+ console.error(red(err.message));
98
+ if (!argv.quiet) {
99
+ dntShim.Deno.exit(1);
100
+ }
101
+ }
102
+ function save(file, changelog, isNew = false) {
103
+ const url = changelog.url;
104
+ if (url && url.includes("gitlab.com")) {
105
+ changelog.head = "master";
106
+ }
107
+ dntShim.Deno.writeTextFileSync(file, changelog.toString());
108
+ if (isNew) {
109
+ console.log(green("Generated new file"), file);
110
+ }
111
+ else {
112
+ console.log(green("Updated file"), file);
113
+ }
114
+ }
115
+ function red(message) {
116
+ return "\u001b[" + 31 + "m" + message + "\u001b[" + 39 + "m";
117
+ }
118
+ function green(message) {
119
+ return "\u001b[" + 32 + "m" + message + "\u001b[" + 39 + "m";
120
+ }
121
+ function getRemoteUrl(https = true) {
122
+ try {
123
+ const file = (0, mod_js_1.join)(dntShim.Deno.cwd(), ".git", "config");
124
+ const content = dntShim.Deno.readTextFileSync(file);
125
+ const data = (0, mod_js_4.parse)(content);
126
+ const url = data?.['remote "origin"']?.url;
127
+ if (!url) {
128
+ return;
129
+ }
130
+ const remoteUrl = new URL(url.replace(/^git@([^:]+):(.*)\.git$/, "https://$1/$2"));
131
+ if (https) {
132
+ remoteUrl.protocol = "https:";
133
+ }
134
+ return remoteUrl.href;
135
+ }
136
+ catch (err) {
137
+ console.error(red(err.message));
138
+ // Ignore
139
+ }
140
+ }
@@ -0,0 +1,18 @@
1
+ "use strict";
2
+ // Copyright 2018-2021 the Deno authors. All rights reserved. MIT license.
3
+ Object.defineProperty(exports, "__esModule", { value: true });
4
+ exports.assert = exports.DenoStdInternalError = void 0;
5
+ class DenoStdInternalError extends Error {
6
+ constructor(message) {
7
+ super(message);
8
+ this.name = "DenoStdInternalError";
9
+ }
10
+ }
11
+ exports.DenoStdInternalError = DenoStdInternalError;
12
+ /** Make an assertion, if not `true`, then throw. */
13
+ function assert(expr, msg = "") {
14
+ if (!expr) {
15
+ throw new DenoStdInternalError(msg);
16
+ }
17
+ }
18
+ exports.assert = assert;
@@ -0,0 +1,43 @@
1
+ "use strict";
2
+ var __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) {
3
+ if (k2 === undefined) k2 = k;
4
+ var desc = Object.getOwnPropertyDescriptor(m, k);
5
+ if (!desc || ("get" in desc ? !m.__esModule : desc.writable || desc.configurable)) {
6
+ desc = { enumerable: true, get: function() { return m[k]; } };
7
+ }
8
+ Object.defineProperty(o, k2, desc);
9
+ }) : (function(o, m, k, k2) {
10
+ if (k2 === undefined) k2 = k;
11
+ o[k2] = m[k];
12
+ }));
13
+ var __setModuleDefault = (this && this.__setModuleDefault) || (Object.create ? (function(o, v) {
14
+ Object.defineProperty(o, "default", { enumerable: true, value: v });
15
+ }) : function(o, v) {
16
+ o["default"] = v;
17
+ });
18
+ var __importStar = (this && this.__importStar) || function (mod) {
19
+ if (mod && mod.__esModule) return mod;
20
+ var result = {};
21
+ if (mod != null) for (var k in mod) if (k !== "default" && Object.prototype.hasOwnProperty.call(mod, k)) __createBinding(result, mod, k);
22
+ __setModuleDefault(result, mod);
23
+ return result;
24
+ };
25
+ Object.defineProperty(exports, "__esModule", { value: true });
26
+ exports.isWindows = exports.osType = void 0;
27
+ // Copyright 2018-2021 the Deno authors. All rights reserved. MIT license.
28
+ // This module is browser compatible.
29
+ const dntShim = __importStar(require("../../../../_dnt.shims.js"));
30
+ exports.osType = (() => {
31
+ // deno-lint-ignore no-explicit-any
32
+ const { Deno } = dntShim.dntGlobalThis;
33
+ if (typeof Deno?.build?.os === "string") {
34
+ return Deno.build.os;
35
+ }
36
+ // deno-lint-ignore no-explicit-any
37
+ const { navigator } = dntShim.dntGlobalThis;
38
+ if (navigator?.appVersion?.includes?.("Win") ?? false) {
39
+ return "windows";
40
+ }
41
+ return "linux";
42
+ })();
43
+ exports.isWindows = exports.osType === "windows";
@@ -0,0 +1,259 @@
1
+ "use strict";
2
+ // Copyright 2018-2021 the Deno authors. All rights reserved. MIT license.
3
+ Object.defineProperty(exports, "__esModule", { value: true });
4
+ exports.parse = void 0;
5
+ const assert_js_1 = require("../_util/assert.js");
6
+ const { hasOwn } = Object;
7
+ function get(obj, key) {
8
+ if (hasOwn(obj, key)) {
9
+ return obj[key];
10
+ }
11
+ }
12
+ function getForce(obj, key) {
13
+ const v = get(obj, key);
14
+ (0, assert_js_1.assert)(v != null);
15
+ return v;
16
+ }
17
+ function isNumber(x) {
18
+ if (typeof x === "number")
19
+ return true;
20
+ if (/^0x[0-9a-f]+$/i.test(String(x)))
21
+ return true;
22
+ return /^[-+]?(?:\d+(?:\.\d*)?|\.\d+)(e[-+]?\d+)?$/.test(String(x));
23
+ }
24
+ function hasKey(obj, keys) {
25
+ let o = obj;
26
+ keys.slice(0, -1).forEach((key) => {
27
+ o = (get(o, key) ?? {});
28
+ });
29
+ const key = keys[keys.length - 1];
30
+ return key in o;
31
+ }
32
+ /** Take a set of command line arguments, with an optional set of options, and
33
+ * return an object representation of those argument.
34
+ *
35
+ * ```ts
36
+ * import { parse } from "./mod.ts";
37
+ * const parsedArgs = parse(Deno.args);
38
+ * ```
39
+ */
40
+ function parse(args, { "--": doubleDash = false, alias = {}, boolean = false, default: defaults = {}, stopEarly = false, string = [], unknown = (i) => i, } = {}) {
41
+ const flags = {
42
+ bools: {},
43
+ strings: {},
44
+ unknownFn: unknown,
45
+ allBools: false,
46
+ };
47
+ if (boolean !== undefined) {
48
+ if (typeof boolean === "boolean") {
49
+ flags.allBools = !!boolean;
50
+ }
51
+ else {
52
+ const booleanArgs = typeof boolean === "string" ? [boolean] : boolean;
53
+ for (const key of booleanArgs.filter(Boolean)) {
54
+ flags.bools[key] = true;
55
+ }
56
+ }
57
+ }
58
+ const aliases = {};
59
+ if (alias !== undefined) {
60
+ for (const key in alias) {
61
+ const val = getForce(alias, key);
62
+ if (typeof val === "string") {
63
+ aliases[key] = [val];
64
+ }
65
+ else {
66
+ aliases[key] = val;
67
+ }
68
+ for (const alias of getForce(aliases, key)) {
69
+ aliases[alias] = [key].concat(aliases[key].filter((y) => alias !== y));
70
+ }
71
+ }
72
+ }
73
+ if (string !== undefined) {
74
+ const stringArgs = typeof string === "string" ? [string] : string;
75
+ for (const key of stringArgs.filter(Boolean)) {
76
+ flags.strings[key] = true;
77
+ const alias = get(aliases, key);
78
+ if (alias) {
79
+ for (const al of alias) {
80
+ flags.strings[al] = true;
81
+ }
82
+ }
83
+ }
84
+ }
85
+ const argv = { _: [] };
86
+ function argDefined(key, arg) {
87
+ return ((flags.allBools && /^--[^=]+$/.test(arg)) ||
88
+ get(flags.bools, key) ||
89
+ !!get(flags.strings, key) ||
90
+ !!get(aliases, key));
91
+ }
92
+ function setKey(obj, keys, value) {
93
+ let o = obj;
94
+ keys.slice(0, -1).forEach(function (key) {
95
+ if (get(o, key) === undefined) {
96
+ o[key] = {};
97
+ }
98
+ o = get(o, key);
99
+ });
100
+ const key = keys[keys.length - 1];
101
+ if (get(o, key) === undefined ||
102
+ get(flags.bools, key) ||
103
+ typeof get(o, key) === "boolean") {
104
+ o[key] = value;
105
+ }
106
+ else if (Array.isArray(get(o, key))) {
107
+ o[key].push(value);
108
+ }
109
+ else {
110
+ o[key] = [get(o, key), value];
111
+ }
112
+ }
113
+ function setArg(key, val, arg = undefined) {
114
+ if (arg && flags.unknownFn && !argDefined(key, arg)) {
115
+ if (flags.unknownFn(arg, key, val) === false)
116
+ return;
117
+ }
118
+ const value = !get(flags.strings, key) && isNumber(val) ? Number(val) : val;
119
+ setKey(argv, key.split("."), value);
120
+ const alias = get(aliases, key);
121
+ if (alias) {
122
+ for (const x of alias) {
123
+ setKey(argv, x.split("."), value);
124
+ }
125
+ }
126
+ }
127
+ function aliasIsBoolean(key) {
128
+ return getForce(aliases, key).some((x) => typeof get(flags.bools, x) === "boolean");
129
+ }
130
+ for (const key of Object.keys(flags.bools)) {
131
+ setArg(key, defaults[key] === undefined ? false : defaults[key]);
132
+ }
133
+ let notFlags = [];
134
+ // all args after "--" are not parsed
135
+ if (args.includes("--")) {
136
+ notFlags = args.slice(args.indexOf("--") + 1);
137
+ args = args.slice(0, args.indexOf("--"));
138
+ }
139
+ for (let i = 0; i < args.length; i++) {
140
+ const arg = args[i];
141
+ if (/^--.+=/.test(arg)) {
142
+ const m = arg.match(/^--([^=]+)=(.*)$/s);
143
+ (0, assert_js_1.assert)(m != null);
144
+ const [, key, value] = m;
145
+ if (flags.bools[key]) {
146
+ const booleanValue = value !== "false";
147
+ setArg(key, booleanValue, arg);
148
+ }
149
+ else {
150
+ setArg(key, value, arg);
151
+ }
152
+ }
153
+ else if (/^--no-.+/.test(arg)) {
154
+ const m = arg.match(/^--no-(.+)/);
155
+ (0, assert_js_1.assert)(m != null);
156
+ setArg(m[1], false, arg);
157
+ }
158
+ else if (/^--.+/.test(arg)) {
159
+ const m = arg.match(/^--(.+)/);
160
+ (0, assert_js_1.assert)(m != null);
161
+ const [, key] = m;
162
+ const next = args[i + 1];
163
+ if (next !== undefined &&
164
+ !/^-/.test(next) &&
165
+ !get(flags.bools, key) &&
166
+ !flags.allBools &&
167
+ (get(aliases, key) ? !aliasIsBoolean(key) : true)) {
168
+ setArg(key, next, arg);
169
+ i++;
170
+ }
171
+ else if (/^(true|false)$/.test(next)) {
172
+ setArg(key, next === "true", arg);
173
+ i++;
174
+ }
175
+ else {
176
+ setArg(key, get(flags.strings, key) ? "" : true, arg);
177
+ }
178
+ }
179
+ else if (/^-[^-]+/.test(arg)) {
180
+ const letters = arg.slice(1, -1).split("");
181
+ let broken = false;
182
+ for (let j = 0; j < letters.length; j++) {
183
+ const next = arg.slice(j + 2);
184
+ if (next === "-") {
185
+ setArg(letters[j], next, arg);
186
+ continue;
187
+ }
188
+ if (/[A-Za-z]/.test(letters[j]) && /=/.test(next)) {
189
+ setArg(letters[j], next.split(/=(.+)/)[1], arg);
190
+ broken = true;
191
+ break;
192
+ }
193
+ if (/[A-Za-z]/.test(letters[j]) &&
194
+ /-?\d+(\.\d*)?(e-?\d+)?$/.test(next)) {
195
+ setArg(letters[j], next, arg);
196
+ broken = true;
197
+ break;
198
+ }
199
+ if (letters[j + 1] && letters[j + 1].match(/\W/)) {
200
+ setArg(letters[j], arg.slice(j + 2), arg);
201
+ broken = true;
202
+ break;
203
+ }
204
+ else {
205
+ setArg(letters[j], get(flags.strings, letters[j]) ? "" : true, arg);
206
+ }
207
+ }
208
+ const [key] = arg.slice(-1);
209
+ if (!broken && key !== "-") {
210
+ if (args[i + 1] &&
211
+ !/^(-|--)[^-]/.test(args[i + 1]) &&
212
+ !get(flags.bools, key) &&
213
+ (get(aliases, key) ? !aliasIsBoolean(key) : true)) {
214
+ setArg(key, args[i + 1], arg);
215
+ i++;
216
+ }
217
+ else if (args[i + 1] && /^(true|false)$/.test(args[i + 1])) {
218
+ setArg(key, args[i + 1] === "true", arg);
219
+ i++;
220
+ }
221
+ else {
222
+ setArg(key, get(flags.strings, key) ? "" : true, arg);
223
+ }
224
+ }
225
+ }
226
+ else {
227
+ if (!flags.unknownFn || flags.unknownFn(arg) !== false) {
228
+ argv._.push(flags.strings["_"] ?? !isNumber(arg) ? arg : Number(arg));
229
+ }
230
+ if (stopEarly) {
231
+ argv._.push(...args.slice(i + 1));
232
+ break;
233
+ }
234
+ }
235
+ }
236
+ for (const key of Object.keys(defaults)) {
237
+ if (!hasKey(argv, key.split("."))) {
238
+ setKey(argv, key.split("."), defaults[key]);
239
+ if (aliases[key]) {
240
+ for (const x of aliases[key]) {
241
+ setKey(argv, x.split("."), defaults[key]);
242
+ }
243
+ }
244
+ }
245
+ }
246
+ if (doubleDash) {
247
+ argv["--"] = [];
248
+ for (const key of notFlags) {
249
+ argv["--"].push(key);
250
+ }
251
+ }
252
+ else {
253
+ for (const key of notFlags) {
254
+ argv._.push(key);
255
+ }
256
+ }
257
+ return argv;
258
+ }
259
+ exports.parse = parse;
@@ -0,0 +1,48 @@
1
+ "use strict";
2
+ // Copyright the Browserify authors. MIT License.
3
+ // Ported from https://github.com/browserify/path-browserify/
4
+ // This module is browser compatible.
5
+ Object.defineProperty(exports, "__esModule", { value: true });
6
+ exports.CHAR_9 = exports.CHAR_0 = exports.CHAR_EQUAL = exports.CHAR_AMPERSAND = exports.CHAR_AT = exports.CHAR_GRAVE_ACCENT = exports.CHAR_CIRCUMFLEX_ACCENT = exports.CHAR_SEMICOLON = exports.CHAR_PERCENT = exports.CHAR_SINGLE_QUOTE = exports.CHAR_DOUBLE_QUOTE = exports.CHAR_PLUS = exports.CHAR_HYPHEN_MINUS = exports.CHAR_RIGHT_CURLY_BRACKET = exports.CHAR_LEFT_CURLY_BRACKET = exports.CHAR_RIGHT_ANGLE_BRACKET = exports.CHAR_LEFT_ANGLE_BRACKET = exports.CHAR_RIGHT_SQUARE_BRACKET = exports.CHAR_LEFT_SQUARE_BRACKET = exports.CHAR_ZERO_WIDTH_NOBREAK_SPACE = exports.CHAR_NO_BREAK_SPACE = exports.CHAR_SPACE = exports.CHAR_HASH = exports.CHAR_EXCLAMATION_MARK = exports.CHAR_FORM_FEED = exports.CHAR_TAB = exports.CHAR_CARRIAGE_RETURN = exports.CHAR_LINE_FEED = exports.CHAR_UNDERSCORE = exports.CHAR_QUESTION_MARK = exports.CHAR_COLON = exports.CHAR_VERTICAL_LINE = exports.CHAR_BACKWARD_SLASH = exports.CHAR_FORWARD_SLASH = exports.CHAR_DOT = exports.CHAR_LOWERCASE_Z = exports.CHAR_UPPERCASE_Z = exports.CHAR_LOWERCASE_A = exports.CHAR_UPPERCASE_A = void 0;
7
+ // Alphabet chars.
8
+ exports.CHAR_UPPERCASE_A = 65; /* A */
9
+ exports.CHAR_LOWERCASE_A = 97; /* a */
10
+ exports.CHAR_UPPERCASE_Z = 90; /* Z */
11
+ exports.CHAR_LOWERCASE_Z = 122; /* z */
12
+ // Non-alphabetic chars.
13
+ exports.CHAR_DOT = 46; /* . */
14
+ exports.CHAR_FORWARD_SLASH = 47; /* / */
15
+ exports.CHAR_BACKWARD_SLASH = 92; /* \ */
16
+ exports.CHAR_VERTICAL_LINE = 124; /* | */
17
+ exports.CHAR_COLON = 58; /* : */
18
+ exports.CHAR_QUESTION_MARK = 63; /* ? */
19
+ exports.CHAR_UNDERSCORE = 95; /* _ */
20
+ exports.CHAR_LINE_FEED = 10; /* \n */
21
+ exports.CHAR_CARRIAGE_RETURN = 13; /* \r */
22
+ exports.CHAR_TAB = 9; /* \t */
23
+ exports.CHAR_FORM_FEED = 12; /* \f */
24
+ exports.CHAR_EXCLAMATION_MARK = 33; /* ! */
25
+ exports.CHAR_HASH = 35; /* # */
26
+ exports.CHAR_SPACE = 32; /* */
27
+ exports.CHAR_NO_BREAK_SPACE = 160; /* \u00A0 */
28
+ exports.CHAR_ZERO_WIDTH_NOBREAK_SPACE = 65279; /* \uFEFF */
29
+ exports.CHAR_LEFT_SQUARE_BRACKET = 91; /* [ */
30
+ exports.CHAR_RIGHT_SQUARE_BRACKET = 93; /* ] */
31
+ exports.CHAR_LEFT_ANGLE_BRACKET = 60; /* < */
32
+ exports.CHAR_RIGHT_ANGLE_BRACKET = 62; /* > */
33
+ exports.CHAR_LEFT_CURLY_BRACKET = 123; /* { */
34
+ exports.CHAR_RIGHT_CURLY_BRACKET = 125; /* } */
35
+ exports.CHAR_HYPHEN_MINUS = 45; /* - */
36
+ exports.CHAR_PLUS = 43; /* + */
37
+ exports.CHAR_DOUBLE_QUOTE = 34; /* " */
38
+ exports.CHAR_SINGLE_QUOTE = 39; /* ' */
39
+ exports.CHAR_PERCENT = 37; /* % */
40
+ exports.CHAR_SEMICOLON = 59; /* ; */
41
+ exports.CHAR_CIRCUMFLEX_ACCENT = 94; /* ^ */
42
+ exports.CHAR_GRAVE_ACCENT = 96; /* ` */
43
+ exports.CHAR_AT = 64; /* @ */
44
+ exports.CHAR_AMPERSAND = 38; /* & */
45
+ exports.CHAR_EQUAL = 61; /* = */
46
+ // Digits
47
+ exports.CHAR_0 = 48; /* 0 */
48
+ exports.CHAR_9 = 57; /* 9 */
@@ -0,0 +1,4 @@
1
+ "use strict";
2
+ // Copyright 2018-2021 the Deno authors. All rights reserved. MIT license.
3
+ // This module is browser compatible.
4
+ Object.defineProperty(exports, "__esModule", { value: true });
@@ -0,0 +1,124 @@
1
+ "use strict";
2
+ // Copyright the Browserify authors. MIT License.
3
+ // Ported from https://github.com/browserify/path-browserify/
4
+ // This module is browser compatible.
5
+ Object.defineProperty(exports, "__esModule", { value: true });
6
+ exports.encodeWhitespace = exports._format = exports.normalizeString = exports.isWindowsDeviceRoot = exports.isPathSeparator = exports.isPosixPathSeparator = exports.assertPath = void 0;
7
+ const _constants_js_1 = require("./_constants.js");
8
+ function assertPath(path) {
9
+ if (typeof path !== "string") {
10
+ throw new TypeError(`Path must be a string. Received ${JSON.stringify(path)}`);
11
+ }
12
+ }
13
+ exports.assertPath = assertPath;
14
+ function isPosixPathSeparator(code) {
15
+ return code === _constants_js_1.CHAR_FORWARD_SLASH;
16
+ }
17
+ exports.isPosixPathSeparator = isPosixPathSeparator;
18
+ function isPathSeparator(code) {
19
+ return isPosixPathSeparator(code) || code === _constants_js_1.CHAR_BACKWARD_SLASH;
20
+ }
21
+ exports.isPathSeparator = isPathSeparator;
22
+ function isWindowsDeviceRoot(code) {
23
+ return ((code >= _constants_js_1.CHAR_LOWERCASE_A && code <= _constants_js_1.CHAR_LOWERCASE_Z) ||
24
+ (code >= _constants_js_1.CHAR_UPPERCASE_A && code <= _constants_js_1.CHAR_UPPERCASE_Z));
25
+ }
26
+ exports.isWindowsDeviceRoot = isWindowsDeviceRoot;
27
+ // Resolves . and .. elements in a path with directory names
28
+ function normalizeString(path, allowAboveRoot, separator, isPathSeparator) {
29
+ let res = "";
30
+ let lastSegmentLength = 0;
31
+ let lastSlash = -1;
32
+ let dots = 0;
33
+ let code;
34
+ for (let i = 0, len = path.length; i <= len; ++i) {
35
+ if (i < len)
36
+ code = path.charCodeAt(i);
37
+ else if (isPathSeparator(code))
38
+ break;
39
+ else
40
+ code = _constants_js_1.CHAR_FORWARD_SLASH;
41
+ if (isPathSeparator(code)) {
42
+ if (lastSlash === i - 1 || dots === 1) {
43
+ // NOOP
44
+ }
45
+ else if (lastSlash !== i - 1 && dots === 2) {
46
+ if (res.length < 2 ||
47
+ lastSegmentLength !== 2 ||
48
+ res.charCodeAt(res.length - 1) !== _constants_js_1.CHAR_DOT ||
49
+ res.charCodeAt(res.length - 2) !== _constants_js_1.CHAR_DOT) {
50
+ if (res.length > 2) {
51
+ const lastSlashIndex = res.lastIndexOf(separator);
52
+ if (lastSlashIndex === -1) {
53
+ res = "";
54
+ lastSegmentLength = 0;
55
+ }
56
+ else {
57
+ res = res.slice(0, lastSlashIndex);
58
+ lastSegmentLength = res.length - 1 - res.lastIndexOf(separator);
59
+ }
60
+ lastSlash = i;
61
+ dots = 0;
62
+ continue;
63
+ }
64
+ else if (res.length === 2 || res.length === 1) {
65
+ res = "";
66
+ lastSegmentLength = 0;
67
+ lastSlash = i;
68
+ dots = 0;
69
+ continue;
70
+ }
71
+ }
72
+ if (allowAboveRoot) {
73
+ if (res.length > 0)
74
+ res += `${separator}..`;
75
+ else
76
+ res = "..";
77
+ lastSegmentLength = 2;
78
+ }
79
+ }
80
+ else {
81
+ if (res.length > 0)
82
+ res += separator + path.slice(lastSlash + 1, i);
83
+ else
84
+ res = path.slice(lastSlash + 1, i);
85
+ lastSegmentLength = i - lastSlash - 1;
86
+ }
87
+ lastSlash = i;
88
+ dots = 0;
89
+ }
90
+ else if (code === _constants_js_1.CHAR_DOT && dots !== -1) {
91
+ ++dots;
92
+ }
93
+ else {
94
+ dots = -1;
95
+ }
96
+ }
97
+ return res;
98
+ }
99
+ exports.normalizeString = normalizeString;
100
+ function _format(sep, pathObject) {
101
+ const dir = pathObject.dir || pathObject.root;
102
+ const base = pathObject.base ||
103
+ (pathObject.name || "") + (pathObject.ext || "");
104
+ if (!dir)
105
+ return base;
106
+ if (dir === pathObject.root)
107
+ return dir + base;
108
+ return dir + sep + base;
109
+ }
110
+ exports._format = _format;
111
+ const WHITESPACE_ENCODINGS = {
112
+ "\u0009": "%09",
113
+ "\u000A": "%0A",
114
+ "\u000B": "%0B",
115
+ "\u000C": "%0C",
116
+ "\u000D": "%0D",
117
+ "\u0020": "%20",
118
+ };
119
+ function encodeWhitespace(string) {
120
+ return string.replaceAll(/[\s]/g, (c) => {
121
+ return WHITESPACE_ENCODINGS[c] ?? c;
122
+ });
123
+ }
124
+ exports.encodeWhitespace = encodeWhitespace;
@@ -0,0 +1,40 @@
1
+ "use strict";
2
+ // Copyright 2018-2021 the Deno authors. All rights reserved. MIT license.
3
+ // This module is browser compatible.
4
+ Object.defineProperty(exports, "__esModule", { value: true });
5
+ exports.common = void 0;
6
+ const separator_js_1 = require("./separator.js");
7
+ /** Determines the common path from a set of paths, using an optional separator,
8
+ * which defaults to the OS default separator.
9
+ *
10
+ * ```ts
11
+ * import { common } from "https://deno.land/std@$STD_VERSION/path/mod.ts";
12
+ * const p = common([
13
+ * "./deno/std/path/mod.ts",
14
+ * "./deno/std/fs/mod.ts",
15
+ * ]);
16
+ * console.log(p); // "./deno/std/"
17
+ * ```
18
+ */
19
+ function common(paths, sep = separator_js_1.SEP) {
20
+ const [first = "", ...remaining] = paths;
21
+ if (first === "" || remaining.length === 0) {
22
+ return first.substring(0, first.lastIndexOf(sep) + 1);
23
+ }
24
+ const parts = first.split(sep);
25
+ let endOfPrefix = parts.length;
26
+ for (const path of remaining) {
27
+ const compare = path.split(sep);
28
+ for (let i = 0; i < endOfPrefix; i++) {
29
+ if (compare[i] !== parts[i]) {
30
+ endOfPrefix = i;
31
+ }
32
+ }
33
+ if (endOfPrefix === 0) {
34
+ return "";
35
+ }
36
+ }
37
+ const prefix = parts.slice(0, endOfPrefix).join(sep);
38
+ return prefix.endsWith(sep) ? prefix : `${prefix}${sep}`;
39
+ }
40
+ exports.common = common;