@duplojs/server 0.1.0-beta.2 → 0.1.0-beta.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/dist/_virtual/_rolldown/runtime.mjs +5 -1
- package/dist/command/argument.d.ts +2 -2
- package/dist/command/create.cjs +18 -10
- package/dist/command/create.d.ts +3 -3
- package/dist/command/create.mjs +18 -10
- package/dist/command/error.cjs +26 -2
- package/dist/command/error.d.ts +9 -1
- package/dist/command/error.mjs +25 -1
- package/dist/command/exec.d.ts +4 -3
- package/dist/command/help.cjs +11 -9
- package/dist/command/help.d.ts +1 -1
- package/dist/command/help.mjs +10 -8
- package/dist/command/index.cjs +4 -0
- package/dist/command/index.mjs +4 -2
- package/dist/command/options/base.cjs +21 -13
- package/dist/command/options/base.d.ts +6 -0
- package/dist/command/options/base.mjs +20 -14
- package/dist/command/options/defaults/array.d.ts +6 -4
- package/dist/command/options/defaults/boolean.cjs +21 -7
- package/dist/command/options/defaults/boolean.d.ts +6 -3
- package/dist/command/options/defaults/boolean.mjs +20 -8
- package/dist/command/options/defaults/simple.d.ts +6 -4
- package/dist/command/types/forbiddenInvalidIdentifier.d.ts +6 -0
- package/dist/command/types/index.d.ts +1 -0
- package/dist/common/environmentVariable/index.d.ts +1 -1
- package/dist/common/environmentVariable/overrideEnvironmentVariables.d.ts +1 -1
- package/dist/common/environmentVariable/parseEnvironmentFiles.d.ts +2 -1
- package/dist/common/index.cjs +3 -0
- package/dist/common/index.d.ts +1 -0
- package/dist/common/index.mjs +3 -1
- package/dist/common/meta/getCurrentDirectoryName.cjs +10 -0
- package/dist/common/meta/getCurrentDirectoryName.d.ts +7 -0
- package/dist/common/meta/getCurrentDirectoryName.mjs +7 -0
- package/dist/common/meta/index.d.ts +7 -0
- package/dist/dataStructure/common/codec/defaults/json.cjs +12 -1
- package/dist/dataStructure/common/codec/defaults/json.d.ts +2 -2
- package/dist/dataStructure/common/codec/defaults/json.mjs +12 -1
- package/dist/dataStructure/common/codec/defaults/string.cjs +12 -1
- package/dist/dataStructure/common/codec/defaults/string.d.ts +2 -2
- package/dist/dataStructure/common/codec/defaults/string.mjs +12 -1
- package/dist/dataStructure/common/error/defaultInterpreter.cjs +3 -1
- package/dist/dataStructure/common/error/defaultInterpreter.d.ts +7 -2
- package/dist/dataStructure/common/error/defaultInterpreter.mjs +3 -1
- package/dist/dataStructure/constraint/{exist.cjs → fileExist.cjs} +5 -5
- package/dist/dataStructure/constraint/fileExist.d.ts +10 -0
- package/dist/dataStructure/constraint/{exist.mjs → fileExist.mjs} +4 -4
- package/dist/dataStructure/constraint/folderExist.cjs +19 -0
- package/dist/dataStructure/constraint/folderExist.d.ts +10 -0
- package/dist/dataStructure/constraint/folderExist.mjs +15 -0
- package/dist/dataStructure/constraint/index.d.ts +2 -1
- package/dist/dataStructure/constraint/mimeType.cjs +1 -1
- package/dist/dataStructure/constraint/mimeType.mjs +1 -1
- package/dist/dataStructure/constraint/types/constraints.d.ts +4 -2
- package/dist/dataStructure/fundamentalType/folder.cjs +11 -0
- package/dist/dataStructure/fundamentalType/folder.d.ts +8 -0
- package/dist/dataStructure/fundamentalType/folder.mjs +8 -0
- package/dist/dataStructure/fundamentalType/index.d.ts +1 -0
- package/dist/dataStructure/fundamentalType/types/fundamentalTypes.d.ts +2 -0
- package/dist/dataStructure/helper/file.d.ts +1 -1
- package/dist/dataStructure/helper/fileExist.cjs +7 -0
- package/dist/dataStructure/helper/fileExist.d.ts +2 -0
- package/dist/dataStructure/helper/fileExist.mjs +7 -0
- package/dist/dataStructure/helper/folder.cjs +10 -0
- package/dist/dataStructure/helper/folder.d.ts +3 -0
- package/dist/dataStructure/helper/folder.mjs +8 -0
- package/dist/dataStructure/helper/folderExist.cjs +7 -0
- package/dist/dataStructure/helper/folderExist.d.ts +2 -0
- package/dist/dataStructure/helper/folderExist.mjs +7 -0
- package/dist/dataStructure/helper/index.d.ts +3 -1
- package/dist/dataStructure/index.cjs +29 -8
- package/dist/dataStructure/index.mjs +19 -6
- package/dist/dataStructure/type/folder.cjs +14 -0
- package/dist/dataStructure/type/folder.d.ts +11 -0
- package/dist/dataStructure/type/folder.mjs +11 -0
- package/dist/dataStructure/type/index.d.ts +1 -0
- package/dist/dataStructure/type/types/types.d.ts +2 -0
- package/dist/file/appendFile.cjs +46 -22
- package/dist/file/appendFile.d.ts +37 -5
- package/dist/file/appendFile.mjs +36 -23
- package/dist/file/appendTextFile.cjs +44 -20
- package/dist/file/appendTextFile.d.ts +37 -5
- package/dist/file/appendTextFile.mjs +34 -21
- package/dist/file/copy.cjs +36 -14
- package/dist/file/copy.d.ts +37 -5
- package/dist/file/copy.mjs +26 -15
- package/dist/file/createEntryInterface.cjs +6 -3
- package/dist/file/createEntryInterface.d.ts +1 -1
- package/dist/file/createEntryInterface.mjs +4 -2
- package/dist/file/ensureDirectory.cjs +37 -17
- package/dist/file/ensureDirectory.d.ts +30 -4
- package/dist/file/ensureDirectory.mjs +29 -18
- package/dist/file/ensureFile.cjs +41 -19
- package/dist/file/ensureFile.d.ts +33 -4
- package/dist/file/ensureFile.mjs +32 -20
- package/dist/file/exists.cjs +28 -14
- package/dist/file/exists.d.ts +21 -4
- package/dist/file/exists.mjs +23 -15
- package/dist/file/fileInterface.cjs +3 -1
- package/dist/file/fileInterface.d.ts +10 -9
- package/dist/file/fileInterface.mjs +3 -2
- package/dist/file/folderInterface.cjs +3 -1
- package/dist/file/folderInterface.d.ts +9 -8
- package/dist/file/folderInterface.mjs +3 -2
- package/dist/file/index.cjs +512 -0
- package/dist/file/index.d.ts +0 -1
- package/dist/file/index.mjs +291 -35
- package/dist/file/link.cjs +48 -22
- package/dist/file/link.d.ts +40 -5
- package/dist/file/link.mjs +37 -23
- package/dist/file/linkStat.cjs +29 -15
- package/dist/file/linkStat.d.ts +24 -4
- package/dist/file/linkStat.mjs +24 -16
- package/dist/file/makeDirectory.cjs +45 -21
- package/dist/file/makeDirectory.d.ts +35 -4
- package/dist/file/makeDirectory.mjs +35 -22
- package/dist/file/makeTemporaryDirectory.cjs +33 -15
- package/dist/file/makeTemporaryDirectory.d.ts +25 -2
- package/dist/file/makeTemporaryDirectory.mjs +26 -16
- package/dist/file/makeTemporaryFile.cjs +37 -20
- package/dist/file/makeTemporaryFile.d.ts +28 -2
- package/dist/file/makeTemporaryFile.mjs +30 -21
- package/dist/file/move.cjs +49 -23
- package/dist/file/move.d.ts +40 -5
- package/dist/file/move.mjs +38 -24
- package/dist/file/readDirectory.cjs +33 -9
- package/dist/file/readDirectory.d.ts +26 -5
- package/dist/file/readDirectory.mjs +25 -10
- package/dist/file/readFile.cjs +35 -17
- package/dist/file/readFile.d.ts +27 -4
- package/dist/file/readFile.mjs +28 -18
- package/dist/file/readJsonFile.cjs +35 -17
- package/dist/file/readJsonFile.d.ts +27 -5
- package/dist/file/readJsonFile.mjs +28 -18
- package/dist/file/readLink.cjs +31 -15
- package/dist/file/readLink.d.ts +24 -4
- package/dist/file/readLink.mjs +25 -16
- package/dist/file/readTextFile.cjs +35 -17
- package/dist/file/readTextFile.d.ts +27 -4
- package/dist/file/readTextFile.mjs +28 -18
- package/dist/file/realPath.cjs +27 -13
- package/dist/file/realPath.d.ts +21 -4
- package/dist/file/realPath.mjs +22 -14
- package/dist/file/relocate.cjs +52 -25
- package/dist/file/relocate.d.ts +40 -5
- package/dist/file/relocate.mjs +41 -26
- package/dist/file/remove.cjs +45 -23
- package/dist/file/remove.d.ts +32 -4
- package/dist/file/remove.mjs +36 -24
- package/dist/file/rename.cjs +52 -25
- package/dist/file/rename.d.ts +40 -5
- package/dist/file/rename.mjs +41 -26
- package/dist/file/setMode.cjs +29 -15
- package/dist/file/setMode.d.ts +24 -5
- package/dist/file/setMode.mjs +24 -16
- package/dist/file/setOwner.cjs +31 -15
- package/dist/file/setOwner.d.ts +25 -5
- package/dist/file/setOwner.mjs +25 -16
- package/dist/file/setTime.cjs +31 -15
- package/dist/file/setTime.d.ts +24 -5
- package/dist/file/setTime.mjs +25 -16
- package/dist/file/stat.cjs +29 -15
- package/dist/file/stat.d.ts +24 -4
- package/dist/file/stat.mjs +24 -16
- package/dist/file/symlink.cjs +42 -20
- package/dist/file/symlink.d.ts +34 -5
- package/dist/file/symlink.mjs +33 -21
- package/dist/file/truncate.cjs +43 -21
- package/dist/file/truncate.d.ts +36 -4
- package/dist/file/truncate.mjs +34 -22
- package/dist/file/unknownEntryInterface.cjs +5 -1
- package/dist/file/unknownEntryInterface.d.ts +8 -6
- package/dist/file/unknownEntryInterface.mjs +4 -2
- package/dist/file/walkDirectory.cjs +38 -15
- package/dist/file/walkDirectory.d.ts +25 -4
- package/dist/file/walkDirectory.mjs +32 -15
- package/dist/file/writeFile.cjs +45 -21
- package/dist/file/writeFile.d.ts +37 -5
- package/dist/file/writeFile.mjs +35 -22
- package/dist/file/writeJsonFile.cjs +48 -27
- package/dist/file/writeJsonFile.d.ts +37 -6
- package/dist/file/writeJsonFile.mjs +39 -28
- package/dist/file/writeTextFile.cjs +45 -21
- package/dist/file/writeTextFile.d.ts +37 -5
- package/dist/file/writeTextFile.mjs +35 -22
- package/dist/implementor.cjs +8 -5
- package/dist/implementor.d.ts +4 -4
- package/dist/implementor.mjs +8 -5
- package/dist/index.cjs +2 -0
- package/dist/index.mjs +2 -1
- package/dist/override.d.ts +8 -0
- package/package.json +4 -4
- package/dist/dataStructure/constraint/exist.d.ts +0 -10
- package/dist/dataStructure/helper/exist.cjs +0 -7
- package/dist/dataStructure/helper/exist.d.ts +0 -2
- package/dist/dataStructure/helper/exist.mjs +0 -7
- package/dist/file/types/fileSystemEither.d.ts +0 -2
- package/dist/file/types/index.d.ts +0 -1
- /package/{README → README.md} +0 -0
|
@@ -9,5 +9,9 @@ var __exportAll = (all, no_symbols) => {
|
|
|
9
9
|
if (!no_symbols) __defProp(target, Symbol.toStringTag, { value: "Module" });
|
|
10
10
|
return target;
|
|
11
11
|
};
|
|
12
|
+
var __require = /* @__PURE__ */ ((x) => typeof require !== "undefined" ? require : typeof Proxy !== "undefined" ? new Proxy(x, { get: (a, b) => (typeof require !== "undefined" ? require : a)[b] }) : x)(function(x) {
|
|
13
|
+
if (typeof require !== "undefined") return require.apply(this, arguments);
|
|
14
|
+
throw Error("Calling `require` for \"" + x + "\" in an environment that doesn't expose the `require` function. See https://rolldown.rs/in-depth/bundling-cjs#require-external-modules for more details.");
|
|
15
|
+
});
|
|
12
16
|
//#endregion
|
|
13
|
-
export { __exportAll };
|
|
17
|
+
export { __exportAll, __require };
|
|
@@ -1,5 +1,5 @@
|
|
|
1
1
|
import { Error, SymbolCommandError } from './error';
|
|
2
|
-
import { EligibleType } from './types';
|
|
2
|
+
import { EligibleType, ForbiddenInvalidIdentifier } from './types';
|
|
3
3
|
import type * as DCommon from "@duplojs/lang/common";
|
|
4
4
|
import type * as DKind from "@duplojs/lang/kind";
|
|
5
5
|
import type * as DDataStructure from "@duplojs/lang/dataStructure";
|
|
@@ -15,4 +15,4 @@ export interface CreateArgumentParams {
|
|
|
15
15
|
readonly description?: string;
|
|
16
16
|
readonly optional?: boolean;
|
|
17
17
|
}
|
|
18
|
-
export declare function createArgument<GenericName extends string, GenericStructure extends DDataStructure.Structure<EligibleType>, GenericValue extends DDataStructure.StructureValue<GenericStructure>, const GenericParams extends CreateArgumentParams = {}>(name: GenericName
|
|
18
|
+
export declare function createArgument<GenericName extends string, GenericStructure extends DDataStructure.Structure<EligibleType>, GenericValue extends DDataStructure.StructureValue<GenericStructure>, const GenericParams extends CreateArgumentParams = {}>(name: GenericName & ForbiddenInvalidIdentifier<GenericName>, dataStructure: GenericStructure, params?: GenericParams): Argument<GenericName, (GenericValue | (DCommon.IsEqual<GenericParams["optional"], true> extends true ? undefined : never))>;
|
package/dist/command/create.cjs
CHANGED
|
@@ -1,6 +1,7 @@
|
|
|
1
1
|
const require_runtime = require("../_virtual/_rolldown/runtime.cjs");
|
|
2
2
|
const require_kind = require("./kind.cjs");
|
|
3
3
|
const require_error = require("./error.cjs");
|
|
4
|
+
const require_base = require("./options/base.cjs");
|
|
4
5
|
const require_help = require("./help.cjs");
|
|
5
6
|
let _duplojs_lang_common = require("@duplojs/lang/common");
|
|
6
7
|
_duplojs_lang_common = require_runtime.__toESM(_duplojs_lang_common, 1);
|
|
@@ -51,19 +52,23 @@ function create(...args) {
|
|
|
51
52
|
}
|
|
52
53
|
const commandOptions = await _duplojs_lang_generator.asyncReduce(self.options, _duplojs_lang_generator.reduceFrom({
|
|
53
54
|
options: {},
|
|
54
|
-
restArgs: args
|
|
55
|
-
|
|
55
|
+
restArgs: args,
|
|
56
|
+
hasError: false
|
|
57
|
+
}), async ({ item: option, lastValue, next }) => {
|
|
56
58
|
const optionResult = await option.execute(lastValue.restArgs, error);
|
|
57
|
-
if (optionResult === require_error.SymbolCommandError) return
|
|
59
|
+
if (optionResult === require_error.SymbolCommandError) return next(_duplojs_lang_object.override(lastValue, { hasError: true }));
|
|
58
60
|
return next({
|
|
59
61
|
options: _duplojs_lang_object.override(lastValue.options, { [option.name]: optionResult.result }),
|
|
60
|
-
restArgs: optionResult.argumentRest
|
|
62
|
+
restArgs: optionResult.argumentRest,
|
|
63
|
+
hasError: lastValue.hasError
|
|
61
64
|
});
|
|
62
65
|
});
|
|
63
|
-
if (commandOptions ===
|
|
66
|
+
if (commandOptions.hasError === true) return require_error.SymbolCommandError;
|
|
67
|
+
const unknownOptions = _duplojs_lang_array.filter(commandOptions.restArgs, require_base.isOptionToken);
|
|
68
|
+
if (unknownOptions.length > 0) return error.addUnknownOptionIssue(unknownOptions);
|
|
64
69
|
if (self.subject?.type === "argument") {
|
|
65
|
-
if (self.subject.args.length
|
|
66
|
-
const
|
|
70
|
+
if (self.subject.args.length < commandOptions.restArgs.length) return error.addTooMuchCommandArgumentIssue(self.subject.args.length, commandOptions.restArgs.length);
|
|
71
|
+
const commandArgs = await _duplojs_lang_generator.asyncReduce(self.subject.args, _duplojs_lang_generator.reduceFrom({
|
|
67
72
|
args: {},
|
|
68
73
|
restArgs: commandOptions.restArgs
|
|
69
74
|
}), async ({ item: argument, lastValue, next, exit }) => {
|
|
@@ -75,13 +80,16 @@ function create(...args) {
|
|
|
75
80
|
restArgs: _duplojs_lang_array.shift(lastValue.restArgs)
|
|
76
81
|
});
|
|
77
82
|
});
|
|
78
|
-
if (
|
|
83
|
+
if (commandArgs === require_error.SymbolCommandError) return require_error.SymbolCommandError;
|
|
79
84
|
await execute({
|
|
80
85
|
options: commandOptions.options,
|
|
81
|
-
args:
|
|
86
|
+
args: commandArgs.args
|
|
82
87
|
});
|
|
83
88
|
} else {
|
|
84
|
-
if (commandOptions.restArgs.length > 0)
|
|
89
|
+
if (commandOptions.restArgs.length > 0) {
|
|
90
|
+
if (self.subject?.type === "subCommand") return error.addUnknownSubCommandIssue(commandOptions.restArgs[0]);
|
|
91
|
+
return error.addTooMuchCommandArgumentIssue(0, commandOptions.restArgs.length);
|
|
92
|
+
}
|
|
85
93
|
await execute({ options: commandOptions.options });
|
|
86
94
|
}
|
|
87
95
|
},
|
package/dist/command/create.d.ts
CHANGED
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
import { Option } from './options';
|
|
2
2
|
import { SymbolCommandError, Error } from './error';
|
|
3
3
|
import { Argument } from './argument';
|
|
4
|
-
import { ForbiddenDuplicateName } from './types';
|
|
4
|
+
import { ForbiddenDuplicateName, ForbiddenInvalidIdentifier } from './types';
|
|
5
5
|
import * as DCommon from "@duplojs/lang/common";
|
|
6
6
|
import type * as DKind from "@duplojs/lang/kind";
|
|
7
7
|
declare const commandKind: DKind.Handler<DKind.Definition<"@DuplojsServerCommand/command", unknown>>;
|
|
@@ -42,6 +42,6 @@ export type CreateCommandExecuteParams<GenericOptions extends DCommon.AnyTuple<O
|
|
|
42
42
|
readonly [GenericArgument in GenericArguments[number] as GenericArgument["name"]]: Exclude<Awaited<ReturnType<GenericArgument["execute"]>>, SymbolCommandError>;
|
|
43
43
|
};
|
|
44
44
|
}));
|
|
45
|
-
export declare function create<GenericName extends string>(name: GenericName
|
|
46
|
-
export declare function create<GenericName extends string, const GenericOptions extends DCommon.AnyTuple<Option> = never, GenericSubjects extends Subjects = never>(name: GenericName
|
|
45
|
+
export declare function create<GenericName extends string>(name: GenericName & ForbiddenInvalidIdentifier<GenericName>, execute: () => void): Command<GenericName>;
|
|
46
|
+
export declare function create<GenericName extends string, const GenericOptions extends DCommon.AnyTuple<Option> = never, GenericSubjects extends Subjects = never>(name: GenericName & ForbiddenInvalidIdentifier<GenericName>, params: CreateCommandParams<GenericOptions, GenericSubjects>, execute: (params: CreateCommandExecuteParams<GenericOptions, Extract<GenericSubjects, DCommon.AnyTuple<Argument>>>) => DCommon.MaybePromise<void>): Command<GenericName>;
|
|
47
47
|
export {};
|
package/dist/command/create.mjs
CHANGED
|
@@ -1,5 +1,6 @@
|
|
|
1
1
|
import { createKind } from "./kind.mjs";
|
|
2
2
|
import { SymbolCommandError } from "./error.mjs";
|
|
3
|
+
import { isOptionToken } from "./options/base.mjs";
|
|
3
4
|
import { helpOption, logCommandHelp } from "./help.mjs";
|
|
4
5
|
import * as DCommon from "@duplojs/lang/common";
|
|
5
6
|
import * as DObject from "@duplojs/lang/object";
|
|
@@ -46,19 +47,23 @@ function create(...args) {
|
|
|
46
47
|
}
|
|
47
48
|
const commandOptions = await DGenerator.asyncReduce(self.options, DGenerator.reduceFrom({
|
|
48
49
|
options: {},
|
|
49
|
-
restArgs: args
|
|
50
|
-
|
|
50
|
+
restArgs: args,
|
|
51
|
+
hasError: false
|
|
52
|
+
}), async ({ item: option, lastValue, next }) => {
|
|
51
53
|
const optionResult = await option.execute(lastValue.restArgs, error);
|
|
52
|
-
if (optionResult === SymbolCommandError) return
|
|
54
|
+
if (optionResult === SymbolCommandError) return next(DObject.override(lastValue, { hasError: true }));
|
|
53
55
|
return next({
|
|
54
56
|
options: DObject.override(lastValue.options, { [option.name]: optionResult.result }),
|
|
55
|
-
restArgs: optionResult.argumentRest
|
|
57
|
+
restArgs: optionResult.argumentRest,
|
|
58
|
+
hasError: lastValue.hasError
|
|
56
59
|
});
|
|
57
60
|
});
|
|
58
|
-
if (commandOptions ===
|
|
61
|
+
if (commandOptions.hasError === true) return SymbolCommandError;
|
|
62
|
+
const unknownOptions = DArray.filter(commandOptions.restArgs, isOptionToken);
|
|
63
|
+
if (unknownOptions.length > 0) return error.addUnknownOptionIssue(unknownOptions);
|
|
59
64
|
if (self.subject?.type === "argument") {
|
|
60
|
-
if (self.subject.args.length
|
|
61
|
-
const
|
|
65
|
+
if (self.subject.args.length < commandOptions.restArgs.length) return error.addTooMuchCommandArgumentIssue(self.subject.args.length, commandOptions.restArgs.length);
|
|
66
|
+
const commandArgs = await DGenerator.asyncReduce(self.subject.args, DGenerator.reduceFrom({
|
|
62
67
|
args: {},
|
|
63
68
|
restArgs: commandOptions.restArgs
|
|
64
69
|
}), async ({ item: argument, lastValue, next, exit }) => {
|
|
@@ -70,13 +75,16 @@ function create(...args) {
|
|
|
70
75
|
restArgs: DArray.shift(lastValue.restArgs)
|
|
71
76
|
});
|
|
72
77
|
});
|
|
73
|
-
if (
|
|
78
|
+
if (commandArgs === SymbolCommandError) return SymbolCommandError;
|
|
74
79
|
await execute({
|
|
75
80
|
options: commandOptions.options,
|
|
76
|
-
args:
|
|
81
|
+
args: commandArgs.args
|
|
77
82
|
});
|
|
78
83
|
} else {
|
|
79
|
-
if (commandOptions.restArgs.length > 0)
|
|
84
|
+
if (commandOptions.restArgs.length > 0) {
|
|
85
|
+
if (self.subject?.type === "subCommand") return error.addUnknownSubCommandIssue(commandOptions.restArgs[0]);
|
|
86
|
+
return error.addTooMuchCommandArgumentIssue(0, commandOptions.restArgs.length);
|
|
87
|
+
}
|
|
80
88
|
await execute({ options: commandOptions.options });
|
|
81
89
|
}
|
|
82
90
|
},
|
package/dist/command/error.cjs
CHANGED
|
@@ -2,12 +2,12 @@ const require_runtime = require("../_virtual/_rolldown/runtime.cjs");
|
|
|
2
2
|
const require_defaultInterpreter = require("../dataStructure/common/error/defaultInterpreter.cjs");
|
|
3
3
|
let _duplojs_lang_common = require("@duplojs/lang/common");
|
|
4
4
|
_duplojs_lang_common = require_runtime.__toESM(_duplojs_lang_common, 1);
|
|
5
|
+
let _duplojs_lang_pattern = require("@duplojs/lang/pattern");
|
|
6
|
+
_duplojs_lang_pattern = require_runtime.__toESM(_duplojs_lang_pattern, 1);
|
|
5
7
|
let _duplojs_lang_dataStructure = require("@duplojs/lang/dataStructure");
|
|
6
8
|
_duplojs_lang_dataStructure = require_runtime.__toESM(_duplojs_lang_dataStructure, 1);
|
|
7
9
|
let _duplojs_lang_array = require("@duplojs/lang/array");
|
|
8
10
|
_duplojs_lang_array = require_runtime.__toESM(_duplojs_lang_array, 1);
|
|
9
|
-
let _duplojs_lang_pattern = require("@duplojs/lang/pattern");
|
|
10
|
-
_duplojs_lang_pattern = require_runtime.__toESM(_duplojs_lang_pattern, 1);
|
|
11
11
|
let _duplojs_lang_string = require("@duplojs/lang/string");
|
|
12
12
|
_duplojs_lang_string = require_runtime.__toESM(_duplojs_lang_string, 1);
|
|
13
13
|
let _duplojs_lang_printer = require("@duplojs/lang/printer");
|
|
@@ -23,6 +23,20 @@ function createError(commandName) {
|
|
|
23
23
|
issues,
|
|
24
24
|
currentPath,
|
|
25
25
|
pushPath: (path) => void currentPath.push(path),
|
|
26
|
+
addUnknownOptionIssue: (optionTokens) => {
|
|
27
|
+
issues.push(_duplojs_lang_modeling.taggedObject("UnknownOptionIssue", {
|
|
28
|
+
optionTokens,
|
|
29
|
+
path: _duplojs_lang_string.join(currentPath, ".")
|
|
30
|
+
}));
|
|
31
|
+
return SymbolCommandError;
|
|
32
|
+
},
|
|
33
|
+
addUnknownSubCommandIssue: (subCommandName) => {
|
|
34
|
+
issues.push(_duplojs_lang_modeling.taggedObject("UnknownSubCommandIssue", {
|
|
35
|
+
subCommandName,
|
|
36
|
+
path: _duplojs_lang_string.join(currentPath, ".")
|
|
37
|
+
}));
|
|
38
|
+
return SymbolCommandError;
|
|
39
|
+
},
|
|
26
40
|
addRequiredOptionIssue: (optionName) => {
|
|
27
41
|
issues.push(_duplojs_lang_modeling.taggedObject("RequiredOptionIssue", {
|
|
28
42
|
optionName,
|
|
@@ -94,6 +108,16 @@ function interpretDataStructureError(error, dataStructureErrorInterpreter) {
|
|
|
94
108
|
}
|
|
95
109
|
function interpretErrorIssues(issues, dataStructureErrorInterpreter) {
|
|
96
110
|
return _duplojs_lang_printer.renderParagraph([_duplojs_lang_array.map(issues, _duplojs_lang_pattern.matchWithTaggedObject({
|
|
111
|
+
UnknownOptionIssue: ({ optionTokens }) => [_duplojs_lang_printer.render([
|
|
112
|
+
_duplojs_lang_printer.indent(1),
|
|
113
|
+
_duplojs_lang_printer.colorizedBold("OPTION: ", "blue"),
|
|
114
|
+
_duplojs_lang_string.join(optionTokens, ", ")
|
|
115
|
+
], ""), `${_duplojs_lang_printer.indent(1)}↳ Unknown Option`],
|
|
116
|
+
UnknownSubCommandIssue: ({ subCommandName }) => [_duplojs_lang_printer.render([
|
|
117
|
+
_duplojs_lang_printer.indent(1),
|
|
118
|
+
_duplojs_lang_printer.colorizedBold("SUB-COMMAND: ", "cyan"),
|
|
119
|
+
subCommandName
|
|
120
|
+
], ""), `${_duplojs_lang_printer.indent(1)}↳ Unknown Sub-command`],
|
|
97
121
|
DataStructureArgumentIssue: ({ argumentName, dataStructureError }) => [_duplojs_lang_printer.render([
|
|
98
122
|
_duplojs_lang_printer.indent(1),
|
|
99
123
|
_duplojs_lang_printer.colorizedBold("ARGUMENT: ", "magenta"),
|
package/dist/command/error.d.ts
CHANGED
|
@@ -27,17 +27,25 @@ export interface DataStructureArgumentIssue extends ArgumentIssueBase, DModeling
|
|
|
27
27
|
export interface CommandArgumentIssueBase {
|
|
28
28
|
readonly path: string;
|
|
29
29
|
}
|
|
30
|
+
export interface UnknownOptionIssue extends CommandArgumentIssueBase, DModeling.ObjectTag<"UnknownOptionIssue"> {
|
|
31
|
+
readonly optionTokens: readonly string[];
|
|
32
|
+
}
|
|
33
|
+
export interface UnknownSubCommandIssue extends CommandArgumentIssueBase, DModeling.ObjectTag<"UnknownSubCommandIssue"> {
|
|
34
|
+
readonly subCommandName: string;
|
|
35
|
+
}
|
|
30
36
|
export interface TooMuchCommandArgumentIssue extends CommandArgumentIssueBase, DModeling.ObjectTag<"TooMuchCommandArgumentIssue"> {
|
|
31
37
|
readonly expect: number;
|
|
32
38
|
readonly receive: number;
|
|
33
39
|
}
|
|
34
|
-
export type Issues = (RequiredOptionIssue | RequiredOptionValueIssue | UnexpectedOptionValueIssue | DataStructureOptionIssue | RequiredArgumentIssue | DataStructureArgumentIssue | TooMuchCommandArgumentIssue);
|
|
40
|
+
export type Issues = (RequiredOptionIssue | RequiredOptionValueIssue | UnexpectedOptionValueIssue | DataStructureOptionIssue | RequiredArgumentIssue | DataStructureArgumentIssue | TooMuchCommandArgumentIssue | UnknownOptionIssue | UnknownSubCommandIssue);
|
|
35
41
|
export declare const SymbolCommandError: unique symbol;
|
|
36
42
|
export type SymbolCommandError = typeof SymbolCommandError;
|
|
37
43
|
export interface Error {
|
|
38
44
|
readonly issues: readonly Issues[];
|
|
39
45
|
readonly currentPath: readonly string[];
|
|
40
46
|
pushPath(path: string): void;
|
|
47
|
+
addUnknownOptionIssue(optionTokens: readonly string[]): SymbolCommandError;
|
|
48
|
+
addUnknownSubCommandIssue(subCommandName: string): SymbolCommandError;
|
|
41
49
|
addRequiredOptionIssue(optionName: string): SymbolCommandError;
|
|
42
50
|
addRequiredOptionValueIssue(optionName: string): SymbolCommandError;
|
|
43
51
|
addUnexpectedOptionValueIssue(optionName: string, data: unknown): SymbolCommandError;
|
package/dist/command/error.mjs
CHANGED
|
@@ -1,8 +1,8 @@
|
|
|
1
1
|
import { defaultErrorInterpreterCodecDictionary, defaultErrorInterpreterDataStructureDictionary } from "../dataStructure/common/error/defaultInterpreter.mjs";
|
|
2
2
|
import * as DCommon from "@duplojs/lang/common";
|
|
3
|
+
import * as DPattern from "@duplojs/lang/pattern";
|
|
3
4
|
import * as DDataStructure from "@duplojs/lang/dataStructure";
|
|
4
5
|
import * as DArray from "@duplojs/lang/array";
|
|
5
|
-
import * as DPattern from "@duplojs/lang/pattern";
|
|
6
6
|
import * as DString from "@duplojs/lang/string";
|
|
7
7
|
import * as DPrinter from "@duplojs/lang/printer";
|
|
8
8
|
import * as DModeling from "@duplojs/lang/modeling";
|
|
@@ -15,6 +15,20 @@ function createError(commandName) {
|
|
|
15
15
|
issues,
|
|
16
16
|
currentPath,
|
|
17
17
|
pushPath: (path) => void currentPath.push(path),
|
|
18
|
+
addUnknownOptionIssue: (optionTokens) => {
|
|
19
|
+
issues.push(DModeling.taggedObject("UnknownOptionIssue", {
|
|
20
|
+
optionTokens,
|
|
21
|
+
path: DString.join(currentPath, ".")
|
|
22
|
+
}));
|
|
23
|
+
return SymbolCommandError;
|
|
24
|
+
},
|
|
25
|
+
addUnknownSubCommandIssue: (subCommandName) => {
|
|
26
|
+
issues.push(DModeling.taggedObject("UnknownSubCommandIssue", {
|
|
27
|
+
subCommandName,
|
|
28
|
+
path: DString.join(currentPath, ".")
|
|
29
|
+
}));
|
|
30
|
+
return SymbolCommandError;
|
|
31
|
+
},
|
|
18
32
|
addRequiredOptionIssue: (optionName) => {
|
|
19
33
|
issues.push(DModeling.taggedObject("RequiredOptionIssue", {
|
|
20
34
|
optionName,
|
|
@@ -86,6 +100,16 @@ function interpretDataStructureError(error, dataStructureErrorInterpreter) {
|
|
|
86
100
|
}
|
|
87
101
|
function interpretErrorIssues(issues, dataStructureErrorInterpreter) {
|
|
88
102
|
return DPrinter.renderParagraph([DArray.map(issues, DPattern.matchWithTaggedObject({
|
|
103
|
+
UnknownOptionIssue: ({ optionTokens }) => [DPrinter.render([
|
|
104
|
+
DPrinter.indent(1),
|
|
105
|
+
DPrinter.colorizedBold("OPTION: ", "blue"),
|
|
106
|
+
DString.join(optionTokens, ", ")
|
|
107
|
+
], ""), `${DPrinter.indent(1)}↳ Unknown Option`],
|
|
108
|
+
UnknownSubCommandIssue: ({ subCommandName }) => [DPrinter.render([
|
|
109
|
+
DPrinter.indent(1),
|
|
110
|
+
DPrinter.colorizedBold("SUB-COMMAND: ", "cyan"),
|
|
111
|
+
subCommandName
|
|
112
|
+
], ""), `${DPrinter.indent(1)}↳ Unknown Sub-command`],
|
|
89
113
|
DataStructureArgumentIssue: ({ argumentName, dataStructureError }) => [DPrinter.render([
|
|
90
114
|
DPrinter.indent(1),
|
|
91
115
|
DPrinter.colorizedBold("ARGUMENT: ", "magenta"),
|
package/dist/command/exec.d.ts
CHANGED
|
@@ -2,12 +2,13 @@ import { CreateCommandExecuteParams, CreateCommandParams, Subjects } from './cre
|
|
|
2
2
|
import { Error } from './error';
|
|
3
3
|
import { Option } from './options';
|
|
4
4
|
import { Argument } from './argument';
|
|
5
|
+
import { ForbiddenInvalidIdentifier } from './types';
|
|
5
6
|
import type * as DCommon from "@duplojs/lang/common";
|
|
6
7
|
import * as DEither from "@duplojs/lang/either";
|
|
7
8
|
import type * as DDataStructure from "@duplojs/lang/dataStructure";
|
|
8
|
-
export interface ExecCommandParams<GenericOptions extends DCommon.AnyTuple<Option> = DCommon.AnyTuple<Option>, GenericSubjects extends Subjects = Subjects> extends CreateCommandParams<GenericOptions, GenericSubjects> {
|
|
9
|
-
displayName?:
|
|
9
|
+
export interface ExecCommandParams<GenericOptions extends DCommon.AnyTuple<Option> = DCommon.AnyTuple<Option>, GenericSubjects extends Subjects = Subjects, GenericDisplayName extends string = string> extends CreateCommandParams<GenericOptions, GenericSubjects> {
|
|
10
|
+
displayName?: GenericDisplayName & ForbiddenInvalidIdentifier<GenericDisplayName>;
|
|
10
11
|
dataStructureErrorInterpreter?: DDataStructure.ErrorInterpreter;
|
|
11
12
|
}
|
|
12
13
|
export declare function exec(execute: () => void): Promise<DEither.Ok | DEither.Error<Error>>;
|
|
13
|
-
export declare function exec<const GenericOptions extends DCommon.AnyTuple<Option> = never, GenericSubjects extends Subjects = never>(params: ExecCommandParams<GenericOptions, GenericSubjects>, execute: (params: CreateCommandExecuteParams<GenericOptions, Extract<GenericSubjects, DCommon.AnyTuple<Argument>>>) => DCommon.MaybePromise<void>): Promise<DEither.Ok | DEither.Error<Error>>;
|
|
14
|
+
export declare function exec<const GenericOptions extends DCommon.AnyTuple<Option> = never, GenericSubjects extends Subjects = never, const GenericDisplayName extends string = string>(params: ExecCommandParams<GenericOptions, GenericSubjects, GenericDisplayName>, execute: (params: CreateCommandExecuteParams<GenericOptions, Extract<GenericSubjects, DCommon.AnyTuple<Argument>>>) => DCommon.MaybePromise<void>): Promise<DEither.Ok | DEither.Error<Error>>;
|
package/dist/command/help.cjs
CHANGED
|
@@ -1,19 +1,21 @@
|
|
|
1
1
|
const require_runtime = require("../_virtual/_rolldown/runtime.cjs");
|
|
2
|
-
const
|
|
2
|
+
const require_fileExist = require("../dataStructure/constraint/fileExist.cjs");
|
|
3
|
+
const require_folderExist = require("../dataStructure/constraint/folderExist.cjs");
|
|
3
4
|
const require_mimeType = require("../dataStructure/constraint/mimeType.cjs");
|
|
4
5
|
const require_size = require("../dataStructure/constraint/size.cjs");
|
|
5
6
|
const require_file = require("../dataStructure/type/file.cjs");
|
|
7
|
+
const require_folder = require("../dataStructure/type/folder.cjs");
|
|
6
8
|
const require_array = require("./options/defaults/array.cjs");
|
|
7
9
|
const require_boolean = require("./options/defaults/boolean.cjs");
|
|
8
10
|
const require_simple = require("./options/defaults/simple.cjs");
|
|
9
11
|
let _duplojs_lang_common = require("@duplojs/lang/common");
|
|
10
12
|
_duplojs_lang_common = require_runtime.__toESM(_duplojs_lang_common, 1);
|
|
13
|
+
let _duplojs_lang_pattern = require("@duplojs/lang/pattern");
|
|
14
|
+
_duplojs_lang_pattern = require_runtime.__toESM(_duplojs_lang_pattern, 1);
|
|
11
15
|
let _duplojs_lang_dataStructure = require("@duplojs/lang/dataStructure");
|
|
12
16
|
_duplojs_lang_dataStructure = require_runtime.__toESM(_duplojs_lang_dataStructure, 1);
|
|
13
17
|
let _duplojs_lang_array = require("@duplojs/lang/array");
|
|
14
18
|
_duplojs_lang_array = require_runtime.__toESM(_duplojs_lang_array, 1);
|
|
15
|
-
let _duplojs_lang_pattern = require("@duplojs/lang/pattern");
|
|
16
|
-
_duplojs_lang_pattern = require_runtime.__toESM(_duplojs_lang_pattern, 1);
|
|
17
19
|
let _duplojs_lang_string = require("@duplojs/lang/string");
|
|
18
20
|
_duplojs_lang_string = require_runtime.__toESM(_duplojs_lang_string, 1);
|
|
19
21
|
let _duplojs_lang_printer = require("@duplojs/lang/printer");
|
|
@@ -53,7 +55,7 @@ function formatBytes(value) {
|
|
|
53
55
|
return `${Number.isInteger(size) ? size : size.toFixed(1)} ${units[index]}`;
|
|
54
56
|
}
|
|
55
57
|
function renderType(type) {
|
|
56
|
-
return _duplojs_lang_pattern.match(type).when(_duplojs_lang_dataStructure.typeIdentifier(_duplojs_lang_dataStructure.stringLiteralTypeKind), ({ definition }) => [literal(formatLiteral(definition.value))]).when(_duplojs_lang_dataStructure.typeIdentifier(_duplojs_lang_dataStructure.numberLiteralTypeKind), ({ definition }) => [literal(formatLiteral(definition.value))]).when(_duplojs_lang_dataStructure.typeIdentifier(_duplojs_lang_dataStructure.bigintLiteralTypeKind), ({ definition }) => [literal(formatLiteral(definition.value))]).when(_duplojs_lang_dataStructure.typeIdentifier(_duplojs_lang_dataStructure.booleanLiteralTypeKind), ({ definition }) => [literal(formatLiteral(definition.value))]).when(_duplojs_lang_dataStructure.typeIdentifier(_duplojs_lang_dataStructure.nullTypeKind), _duplojs_lang_common.justReturn([literal("null")])).when(_duplojs_lang_dataStructure.typeIdentifier(_duplojs_lang_dataStructure.undefinedTypeKind), _duplojs_lang_common.justReturn([literal("undefined")])).when(_duplojs_lang_dataStructure.typeIdentifier(_duplojs_lang_dataStructure.stringTypeKind), _duplojs_lang_common.justReturn([typeLabel("string")])).when(_duplojs_lang_dataStructure.typeIdentifier(_duplojs_lang_dataStructure.numberTypeKind), _duplojs_lang_common.justReturn([typeLabel("number")])).when(_duplojs_lang_dataStructure.typeIdentifier(_duplojs_lang_dataStructure.bigintTypeKind), _duplojs_lang_common.justReturn([typeLabel("bigint")])).when(_duplojs_lang_dataStructure.typeIdentifier(_duplojs_lang_dataStructure.booleanTypeKind), _duplojs_lang_common.justReturn([typeLabel("boolean")])).when(_duplojs_lang_dataStructure.typeIdentifier(_duplojs_lang_dataStructure.dateTypeKind), _duplojs_lang_common.justReturn([typeLabel("date")])).when(_duplojs_lang_dataStructure.typeIdentifier(_duplojs_lang_dataStructure.timeTypeKind), _duplojs_lang_common.justReturn([typeLabel("time")])).when(_duplojs_lang_dataStructure.typeIdentifier(require_file.fileTypeKind), _duplojs_lang_common.justReturn([typeLabel("file")])).otherwise(_duplojs_lang_common.justReturn([typeLabel("unknown")]));
|
|
58
|
+
return _duplojs_lang_pattern.match(type).when(_duplojs_lang_dataStructure.typeIdentifier(_duplojs_lang_dataStructure.stringLiteralTypeKind), ({ definition }) => [literal(formatLiteral(definition.value))]).when(_duplojs_lang_dataStructure.typeIdentifier(_duplojs_lang_dataStructure.numberLiteralTypeKind), ({ definition }) => [literal(formatLiteral(definition.value))]).when(_duplojs_lang_dataStructure.typeIdentifier(_duplojs_lang_dataStructure.bigintLiteralTypeKind), ({ definition }) => [literal(formatLiteral(definition.value))]).when(_duplojs_lang_dataStructure.typeIdentifier(_duplojs_lang_dataStructure.booleanLiteralTypeKind), ({ definition }) => [literal(formatLiteral(definition.value))]).when(_duplojs_lang_dataStructure.typeIdentifier(_duplojs_lang_dataStructure.nullTypeKind), _duplojs_lang_common.justReturn([literal("null")])).when(_duplojs_lang_dataStructure.typeIdentifier(_duplojs_lang_dataStructure.undefinedTypeKind), _duplojs_lang_common.justReturn([literal("undefined")])).when(_duplojs_lang_dataStructure.typeIdentifier(_duplojs_lang_dataStructure.stringTypeKind), _duplojs_lang_common.justReturn([typeLabel("string")])).when(_duplojs_lang_dataStructure.typeIdentifier(_duplojs_lang_dataStructure.numberTypeKind), _duplojs_lang_common.justReturn([typeLabel("number")])).when(_duplojs_lang_dataStructure.typeIdentifier(_duplojs_lang_dataStructure.bigintTypeKind), _duplojs_lang_common.justReturn([typeLabel("bigint")])).when(_duplojs_lang_dataStructure.typeIdentifier(_duplojs_lang_dataStructure.booleanTypeKind), _duplojs_lang_common.justReturn([typeLabel("boolean")])).when(_duplojs_lang_dataStructure.typeIdentifier(_duplojs_lang_dataStructure.dateTypeKind), _duplojs_lang_common.justReturn([typeLabel("date")])).when(_duplojs_lang_dataStructure.typeIdentifier(_duplojs_lang_dataStructure.timeTypeKind), _duplojs_lang_common.justReturn([typeLabel("time")])).when(_duplojs_lang_dataStructure.typeIdentifier(require_file.fileTypeKind), _duplojs_lang_common.justReturn([typeLabel("file")])).when(_duplojs_lang_dataStructure.typeIdentifier(require_folder.folderTypeKind), _duplojs_lang_common.justReturn([typeLabel("folder")])).otherwise(_duplojs_lang_common.justReturn([typeLabel("unknown")]));
|
|
57
59
|
}
|
|
58
60
|
function renderStringLength(constraints) {
|
|
59
61
|
const equal = _duplojs_lang_array.find(constraints, _duplojs_lang_dataStructure.constraintIdentifier(_duplojs_lang_dataStructure.stringLengthEqualConstraintKind));
|
|
@@ -83,7 +85,7 @@ function renderNumberBounds(constraints) {
|
|
|
83
85
|
return _duplojs_lang_array.filter([greaterThan ? [constraintLabel("> "), literal(String(greaterThan.definition.threshold))] : greaterThanOrEqual ? [constraintLabel("min "), literal(String(greaterThanOrEqual.definition.threshold))] : null, lessThan ? [constraintLabel("< "), literal(String(lessThan.definition.threshold))] : lessThanOrEqual ? [constraintLabel("max "), literal(String(lessThanOrEqual.definition.threshold))] : null], _duplojs_lang_common.truthy);
|
|
84
86
|
}
|
|
85
87
|
function renderSimpleConstraint(constraint) {
|
|
86
|
-
return _duplojs_lang_pattern.match(constraint).when(_duplojs_lang_dataStructure.constraintIdentifier(_duplojs_lang_dataStructure.emailConstraintKind), _duplojs_lang_common.justReturn([constraintLabel("email")])).when(_duplojs_lang_dataStructure.constraintIdentifier(_duplojs_lang_dataStructure.urlConstraintKind), _duplojs_lang_common.justReturn([constraintLabel("url")])).when(_duplojs_lang_dataStructure.constraintIdentifier(_duplojs_lang_dataStructure.uuidConstraintKind), _duplojs_lang_common.justReturn([constraintLabel("uuid")])).when(_duplojs_lang_dataStructure.constraintIdentifier(_duplojs_lang_dataStructure.integerConstraintKind), _duplojs_lang_common.justReturn([constraintLabel("integer")])).when(_duplojs_lang_dataStructure.constraintIdentifier(_duplojs_lang_dataStructure.trimmedConstraintKind), _duplojs_lang_common.justReturn([constraintLabel("trimmed")])).when(_duplojs_lang_dataStructure.constraintIdentifier(_duplojs_lang_dataStructure.notEmptyConstraintKind), _duplojs_lang_common.justReturn([constraintLabel("not empty")])).when(_duplojs_lang_dataStructure.constraintIdentifier(_duplojs_lang_dataStructure.numberInStringConstraintKind), _duplojs_lang_common.justReturn([constraintLabel("number in string")])).when(_duplojs_lang_dataStructure.constraintIdentifier(_duplojs_lang_dataStructure.evenConstraintKind), _duplojs_lang_common.justReturn([constraintLabel("even")])).when(_duplojs_lang_dataStructure.constraintIdentifier(_duplojs_lang_dataStructure.oddConstraintKind), _duplojs_lang_common.justReturn([constraintLabel("odd")])).when(_duplojs_lang_dataStructure.constraintIdentifier(_duplojs_lang_dataStructure.positiveConstraintKind), _duplojs_lang_common.justReturn([constraintLabel("positive")])).when(_duplojs_lang_dataStructure.constraintIdentifier(_duplojs_lang_dataStructure.negativeConstraintKind), _duplojs_lang_common.justReturn([constraintLabel("negative")])).when(_duplojs_lang_dataStructure.constraintIdentifier(_duplojs_lang_dataStructure.notZeroConstraintKind), _duplojs_lang_common.justReturn([constraintLabel("not zero")])).when(_duplojs_lang_dataStructure.constraintIdentifier(_duplojs_lang_dataStructure.safeConstraintKind), _duplojs_lang_common.justReturn([constraintLabel("safe number")])).when(_duplojs_lang_dataStructure.constraintIdentifier(_duplojs_lang_dataStructure.pathConstraintKind), _duplojs_lang_common.justReturn([constraintLabel("path")])).when(_duplojs_lang_dataStructure.constraintIdentifier(_duplojs_lang_dataStructure.absolutePathConstraintKind), _duplojs_lang_common.justReturn([constraintLabel("absolute path")])).when(_duplojs_lang_dataStructure.constraintIdentifier(_duplojs_lang_dataStructure.segmentPathConstraintKind), _duplojs_lang_common.justReturn([constraintLabel("path segment")])).when(_duplojs_lang_dataStructure.constraintIdentifier(
|
|
88
|
+
return _duplojs_lang_pattern.match(constraint).when(_duplojs_lang_dataStructure.constraintIdentifier(_duplojs_lang_dataStructure.emailConstraintKind), _duplojs_lang_common.justReturn([constraintLabel("email")])).when(_duplojs_lang_dataStructure.constraintIdentifier(_duplojs_lang_dataStructure.urlConstraintKind), _duplojs_lang_common.justReturn([constraintLabel("url")])).when(_duplojs_lang_dataStructure.constraintIdentifier(_duplojs_lang_dataStructure.uuidConstraintKind), _duplojs_lang_common.justReturn([constraintLabel("uuid")])).when(_duplojs_lang_dataStructure.constraintIdentifier(_duplojs_lang_dataStructure.integerConstraintKind), _duplojs_lang_common.justReturn([constraintLabel("integer")])).when(_duplojs_lang_dataStructure.constraintIdentifier(_duplojs_lang_dataStructure.trimmedConstraintKind), _duplojs_lang_common.justReturn([constraintLabel("trimmed")])).when(_duplojs_lang_dataStructure.constraintIdentifier(_duplojs_lang_dataStructure.notEmptyConstraintKind), _duplojs_lang_common.justReturn([constraintLabel("not empty")])).when(_duplojs_lang_dataStructure.constraintIdentifier(_duplojs_lang_dataStructure.numberInStringConstraintKind), _duplojs_lang_common.justReturn([constraintLabel("number in string")])).when(_duplojs_lang_dataStructure.constraintIdentifier(_duplojs_lang_dataStructure.evenConstraintKind), _duplojs_lang_common.justReturn([constraintLabel("even")])).when(_duplojs_lang_dataStructure.constraintIdentifier(_duplojs_lang_dataStructure.oddConstraintKind), _duplojs_lang_common.justReturn([constraintLabel("odd")])).when(_duplojs_lang_dataStructure.constraintIdentifier(_duplojs_lang_dataStructure.positiveConstraintKind), _duplojs_lang_common.justReturn([constraintLabel("positive")])).when(_duplojs_lang_dataStructure.constraintIdentifier(_duplojs_lang_dataStructure.negativeConstraintKind), _duplojs_lang_common.justReturn([constraintLabel("negative")])).when(_duplojs_lang_dataStructure.constraintIdentifier(_duplojs_lang_dataStructure.notZeroConstraintKind), _duplojs_lang_common.justReturn([constraintLabel("not zero")])).when(_duplojs_lang_dataStructure.constraintIdentifier(_duplojs_lang_dataStructure.safeConstraintKind), _duplojs_lang_common.justReturn([constraintLabel("safe number")])).when(_duplojs_lang_dataStructure.constraintIdentifier(_duplojs_lang_dataStructure.pathConstraintKind), _duplojs_lang_common.justReturn([constraintLabel("path")])).when(_duplojs_lang_dataStructure.constraintIdentifier(_duplojs_lang_dataStructure.absolutePathConstraintKind), _duplojs_lang_common.justReturn([constraintLabel("absolute path")])).when(_duplojs_lang_dataStructure.constraintIdentifier(_duplojs_lang_dataStructure.segmentPathConstraintKind), _duplojs_lang_common.justReturn([constraintLabel("path segment")])).when(_duplojs_lang_dataStructure.constraintIdentifier(require_fileExist.fileExistConstraintKind), _duplojs_lang_common.justReturn([constraintLabel("exists")])).when(_duplojs_lang_dataStructure.constraintIdentifier(require_folderExist.folderExistConstraintKind), _duplojs_lang_common.justReturn([constraintLabel("exists")])).when(_duplojs_lang_dataStructure.constraintIdentifier(_duplojs_lang_dataStructure.strictPositiveConstraintKind), _duplojs_lang_common.justReturn([constraintLabel("> "), literal("0")])).when(_duplojs_lang_dataStructure.constraintIdentifier(_duplojs_lang_dataStructure.strictNegativeConstraintKind), _duplojs_lang_common.justReturn([constraintLabel("< "), literal("0")])).when(_duplojs_lang_dataStructure.constraintIdentifier(_duplojs_lang_dataStructure.betweenThanConstraintKind), ({ definition }) => [
|
|
87
89
|
constraintLabel("> "),
|
|
88
90
|
literal(String(definition.greater)),
|
|
89
91
|
secondary(" and "),
|
|
@@ -192,8 +194,8 @@ function renderOptionDetails(option, depth) {
|
|
|
192
194
|
const help = renderDataStructure(option.dataStructure);
|
|
193
195
|
return _duplojs_lang_array.filter([
|
|
194
196
|
renderInline([_duplojs_lang_printer.indent(depth), renderMetadata(help, option.required ? "required" : "optional")]),
|
|
195
|
-
|
|
196
|
-
|
|
197
|
+
...renderConstraintLines(help.constraints, depth),
|
|
198
|
+
renderDescriptionLine(option.description, depth)
|
|
197
199
|
], _duplojs_lang_common.truthy);
|
|
198
200
|
}
|
|
199
201
|
if (require_boolean.booleanOptionKind.has(option)) return _duplojs_lang_array.filter([renderInline([_duplojs_lang_printer.indent(depth), typeLabel("boolean")]), renderDescriptionLine(option.description, depth)], _duplojs_lang_common.truthy);
|
|
@@ -211,8 +213,8 @@ function renderArgumentsHelp(args, depth) {
|
|
|
211
213
|
name(argument.name.padEnd(12)),
|
|
212
214
|
renderMetadata(help, argument.optional ? "optional" : "required")
|
|
213
215
|
]),
|
|
214
|
-
|
|
215
|
-
|
|
216
|
+
renderConstraintLines(help.constraints, depth + 2),
|
|
217
|
+
renderDescriptionLine(argument.description, depth + 2)
|
|
216
218
|
]);
|
|
217
219
|
})]);
|
|
218
220
|
}
|
package/dist/command/help.d.ts
CHANGED
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
import { Command } from './create';
|
|
2
2
|
import { Argument } from './argument';
|
|
3
3
|
import { Options } from './options';
|
|
4
|
-
export declare const helpOption:
|
|
4
|
+
export declare const helpOption: import('./options').BooleanOption<"help">;
|
|
5
5
|
export declare function renderOptionsHelp(options: readonly Options[], depth: number): string;
|
|
6
6
|
export declare function renderArgumentsHelp(args: readonly Argument[], depth: number): string;
|
|
7
7
|
export declare function renderCommandHelp(command: Command, depth: number): string[];
|
package/dist/command/help.mjs
CHANGED
|
@@ -1,14 +1,16 @@
|
|
|
1
|
-
import {
|
|
1
|
+
import { fileExistConstraintKind } from "../dataStructure/constraint/fileExist.mjs";
|
|
2
|
+
import { folderExistConstraintKind } from "../dataStructure/constraint/folderExist.mjs";
|
|
2
3
|
import { mimeTypeConstraintKind } from "../dataStructure/constraint/mimeType.mjs";
|
|
3
4
|
import { sizeConstraintKind } from "../dataStructure/constraint/size.mjs";
|
|
4
5
|
import { fileTypeKind } from "../dataStructure/type/file.mjs";
|
|
6
|
+
import { folderTypeKind } from "../dataStructure/type/folder.mjs";
|
|
5
7
|
import { arrayOptionKind } from "./options/defaults/array.mjs";
|
|
6
8
|
import { booleanOptionKind, createBooleanOption } from "./options/defaults/boolean.mjs";
|
|
7
9
|
import { simpleOptionKind } from "./options/defaults/simple.mjs";
|
|
8
10
|
import * as DCommon from "@duplojs/lang/common";
|
|
11
|
+
import * as DPattern from "@duplojs/lang/pattern";
|
|
9
12
|
import * as DDataStructure from "@duplojs/lang/dataStructure";
|
|
10
13
|
import * as DArray from "@duplojs/lang/array";
|
|
11
|
-
import * as DPattern from "@duplojs/lang/pattern";
|
|
12
14
|
import * as DString from "@duplojs/lang/string";
|
|
13
15
|
import * as DPrinter from "@duplojs/lang/printer";
|
|
14
16
|
//#region scripts/command/help.ts
|
|
@@ -46,7 +48,7 @@ function formatBytes(value) {
|
|
|
46
48
|
return `${Number.isInteger(size) ? size : size.toFixed(1)} ${units[index]}`;
|
|
47
49
|
}
|
|
48
50
|
function renderType(type) {
|
|
49
|
-
return DPattern.match(type).when(DDataStructure.typeIdentifier(DDataStructure.stringLiteralTypeKind), ({ definition }) => [literal(formatLiteral(definition.value))]).when(DDataStructure.typeIdentifier(DDataStructure.numberLiteralTypeKind), ({ definition }) => [literal(formatLiteral(definition.value))]).when(DDataStructure.typeIdentifier(DDataStructure.bigintLiteralTypeKind), ({ definition }) => [literal(formatLiteral(definition.value))]).when(DDataStructure.typeIdentifier(DDataStructure.booleanLiteralTypeKind), ({ definition }) => [literal(formatLiteral(definition.value))]).when(DDataStructure.typeIdentifier(DDataStructure.nullTypeKind), DCommon.justReturn([literal("null")])).when(DDataStructure.typeIdentifier(DDataStructure.undefinedTypeKind), DCommon.justReturn([literal("undefined")])).when(DDataStructure.typeIdentifier(DDataStructure.stringTypeKind), DCommon.justReturn([typeLabel("string")])).when(DDataStructure.typeIdentifier(DDataStructure.numberTypeKind), DCommon.justReturn([typeLabel("number")])).when(DDataStructure.typeIdentifier(DDataStructure.bigintTypeKind), DCommon.justReturn([typeLabel("bigint")])).when(DDataStructure.typeIdentifier(DDataStructure.booleanTypeKind), DCommon.justReturn([typeLabel("boolean")])).when(DDataStructure.typeIdentifier(DDataStructure.dateTypeKind), DCommon.justReturn([typeLabel("date")])).when(DDataStructure.typeIdentifier(DDataStructure.timeTypeKind), DCommon.justReturn([typeLabel("time")])).when(DDataStructure.typeIdentifier(fileTypeKind), DCommon.justReturn([typeLabel("file")])).otherwise(DCommon.justReturn([typeLabel("unknown")]));
|
|
51
|
+
return DPattern.match(type).when(DDataStructure.typeIdentifier(DDataStructure.stringLiteralTypeKind), ({ definition }) => [literal(formatLiteral(definition.value))]).when(DDataStructure.typeIdentifier(DDataStructure.numberLiteralTypeKind), ({ definition }) => [literal(formatLiteral(definition.value))]).when(DDataStructure.typeIdentifier(DDataStructure.bigintLiteralTypeKind), ({ definition }) => [literal(formatLiteral(definition.value))]).when(DDataStructure.typeIdentifier(DDataStructure.booleanLiteralTypeKind), ({ definition }) => [literal(formatLiteral(definition.value))]).when(DDataStructure.typeIdentifier(DDataStructure.nullTypeKind), DCommon.justReturn([literal("null")])).when(DDataStructure.typeIdentifier(DDataStructure.undefinedTypeKind), DCommon.justReturn([literal("undefined")])).when(DDataStructure.typeIdentifier(DDataStructure.stringTypeKind), DCommon.justReturn([typeLabel("string")])).when(DDataStructure.typeIdentifier(DDataStructure.numberTypeKind), DCommon.justReturn([typeLabel("number")])).when(DDataStructure.typeIdentifier(DDataStructure.bigintTypeKind), DCommon.justReturn([typeLabel("bigint")])).when(DDataStructure.typeIdentifier(DDataStructure.booleanTypeKind), DCommon.justReturn([typeLabel("boolean")])).when(DDataStructure.typeIdentifier(DDataStructure.dateTypeKind), DCommon.justReturn([typeLabel("date")])).when(DDataStructure.typeIdentifier(DDataStructure.timeTypeKind), DCommon.justReturn([typeLabel("time")])).when(DDataStructure.typeIdentifier(fileTypeKind), DCommon.justReturn([typeLabel("file")])).when(DDataStructure.typeIdentifier(folderTypeKind), DCommon.justReturn([typeLabel("folder")])).otherwise(DCommon.justReturn([typeLabel("unknown")]));
|
|
50
52
|
}
|
|
51
53
|
function renderStringLength(constraints) {
|
|
52
54
|
const equal = DArray.find(constraints, DDataStructure.constraintIdentifier(DDataStructure.stringLengthEqualConstraintKind));
|
|
@@ -76,7 +78,7 @@ function renderNumberBounds(constraints) {
|
|
|
76
78
|
return DArray.filter([greaterThan ? [constraintLabel("> "), literal(String(greaterThan.definition.threshold))] : greaterThanOrEqual ? [constraintLabel("min "), literal(String(greaterThanOrEqual.definition.threshold))] : null, lessThan ? [constraintLabel("< "), literal(String(lessThan.definition.threshold))] : lessThanOrEqual ? [constraintLabel("max "), literal(String(lessThanOrEqual.definition.threshold))] : null], DCommon.truthy);
|
|
77
79
|
}
|
|
78
80
|
function renderSimpleConstraint(constraint) {
|
|
79
|
-
return DPattern.match(constraint).when(DDataStructure.constraintIdentifier(DDataStructure.emailConstraintKind), DCommon.justReturn([constraintLabel("email")])).when(DDataStructure.constraintIdentifier(DDataStructure.urlConstraintKind), DCommon.justReturn([constraintLabel("url")])).when(DDataStructure.constraintIdentifier(DDataStructure.uuidConstraintKind), DCommon.justReturn([constraintLabel("uuid")])).when(DDataStructure.constraintIdentifier(DDataStructure.integerConstraintKind), DCommon.justReturn([constraintLabel("integer")])).when(DDataStructure.constraintIdentifier(DDataStructure.trimmedConstraintKind), DCommon.justReturn([constraintLabel("trimmed")])).when(DDataStructure.constraintIdentifier(DDataStructure.notEmptyConstraintKind), DCommon.justReturn([constraintLabel("not empty")])).when(DDataStructure.constraintIdentifier(DDataStructure.numberInStringConstraintKind), DCommon.justReturn([constraintLabel("number in string")])).when(DDataStructure.constraintIdentifier(DDataStructure.evenConstraintKind), DCommon.justReturn([constraintLabel("even")])).when(DDataStructure.constraintIdentifier(DDataStructure.oddConstraintKind), DCommon.justReturn([constraintLabel("odd")])).when(DDataStructure.constraintIdentifier(DDataStructure.positiveConstraintKind), DCommon.justReturn([constraintLabel("positive")])).when(DDataStructure.constraintIdentifier(DDataStructure.negativeConstraintKind), DCommon.justReturn([constraintLabel("negative")])).when(DDataStructure.constraintIdentifier(DDataStructure.notZeroConstraintKind), DCommon.justReturn([constraintLabel("not zero")])).when(DDataStructure.constraintIdentifier(DDataStructure.safeConstraintKind), DCommon.justReturn([constraintLabel("safe number")])).when(DDataStructure.constraintIdentifier(DDataStructure.pathConstraintKind), DCommon.justReturn([constraintLabel("path")])).when(DDataStructure.constraintIdentifier(DDataStructure.absolutePathConstraintKind), DCommon.justReturn([constraintLabel("absolute path")])).when(DDataStructure.constraintIdentifier(DDataStructure.segmentPathConstraintKind), DCommon.justReturn([constraintLabel("path segment")])).when(DDataStructure.constraintIdentifier(
|
|
81
|
+
return DPattern.match(constraint).when(DDataStructure.constraintIdentifier(DDataStructure.emailConstraintKind), DCommon.justReturn([constraintLabel("email")])).when(DDataStructure.constraintIdentifier(DDataStructure.urlConstraintKind), DCommon.justReturn([constraintLabel("url")])).when(DDataStructure.constraintIdentifier(DDataStructure.uuidConstraintKind), DCommon.justReturn([constraintLabel("uuid")])).when(DDataStructure.constraintIdentifier(DDataStructure.integerConstraintKind), DCommon.justReturn([constraintLabel("integer")])).when(DDataStructure.constraintIdentifier(DDataStructure.trimmedConstraintKind), DCommon.justReturn([constraintLabel("trimmed")])).when(DDataStructure.constraintIdentifier(DDataStructure.notEmptyConstraintKind), DCommon.justReturn([constraintLabel("not empty")])).when(DDataStructure.constraintIdentifier(DDataStructure.numberInStringConstraintKind), DCommon.justReturn([constraintLabel("number in string")])).when(DDataStructure.constraintIdentifier(DDataStructure.evenConstraintKind), DCommon.justReturn([constraintLabel("even")])).when(DDataStructure.constraintIdentifier(DDataStructure.oddConstraintKind), DCommon.justReturn([constraintLabel("odd")])).when(DDataStructure.constraintIdentifier(DDataStructure.positiveConstraintKind), DCommon.justReturn([constraintLabel("positive")])).when(DDataStructure.constraintIdentifier(DDataStructure.negativeConstraintKind), DCommon.justReturn([constraintLabel("negative")])).when(DDataStructure.constraintIdentifier(DDataStructure.notZeroConstraintKind), DCommon.justReturn([constraintLabel("not zero")])).when(DDataStructure.constraintIdentifier(DDataStructure.safeConstraintKind), DCommon.justReturn([constraintLabel("safe number")])).when(DDataStructure.constraintIdentifier(DDataStructure.pathConstraintKind), DCommon.justReturn([constraintLabel("path")])).when(DDataStructure.constraintIdentifier(DDataStructure.absolutePathConstraintKind), DCommon.justReturn([constraintLabel("absolute path")])).when(DDataStructure.constraintIdentifier(DDataStructure.segmentPathConstraintKind), DCommon.justReturn([constraintLabel("path segment")])).when(DDataStructure.constraintIdentifier(fileExistConstraintKind), DCommon.justReturn([constraintLabel("exists")])).when(DDataStructure.constraintIdentifier(folderExistConstraintKind), DCommon.justReturn([constraintLabel("exists")])).when(DDataStructure.constraintIdentifier(DDataStructure.strictPositiveConstraintKind), DCommon.justReturn([constraintLabel("> "), literal("0")])).when(DDataStructure.constraintIdentifier(DDataStructure.strictNegativeConstraintKind), DCommon.justReturn([constraintLabel("< "), literal("0")])).when(DDataStructure.constraintIdentifier(DDataStructure.betweenThanConstraintKind), ({ definition }) => [
|
|
80
82
|
constraintLabel("> "),
|
|
81
83
|
literal(String(definition.greater)),
|
|
82
84
|
secondary(" and "),
|
|
@@ -185,8 +187,8 @@ function renderOptionDetails(option, depth) {
|
|
|
185
187
|
const help = renderDataStructure(option.dataStructure);
|
|
186
188
|
return DArray.filter([
|
|
187
189
|
renderInline([DPrinter.indent(depth), renderMetadata(help, option.required ? "required" : "optional")]),
|
|
188
|
-
|
|
189
|
-
|
|
190
|
+
...renderConstraintLines(help.constraints, depth),
|
|
191
|
+
renderDescriptionLine(option.description, depth)
|
|
190
192
|
], DCommon.truthy);
|
|
191
193
|
}
|
|
192
194
|
if (booleanOptionKind.has(option)) return DArray.filter([renderInline([DPrinter.indent(depth), typeLabel("boolean")]), renderDescriptionLine(option.description, depth)], DCommon.truthy);
|
|
@@ -204,8 +206,8 @@ function renderArgumentsHelp(args, depth) {
|
|
|
204
206
|
name(argument.name.padEnd(12)),
|
|
205
207
|
renderMetadata(help, argument.optional ? "optional" : "required")
|
|
206
208
|
]),
|
|
207
|
-
|
|
208
|
-
|
|
209
|
+
renderConstraintLines(help.constraints, depth + 2),
|
|
210
|
+
renderDescriptionLine(argument.description, depth + 2)
|
|
209
211
|
]);
|
|
210
212
|
})]);
|
|
211
213
|
}
|
package/dist/command/index.cjs
CHANGED
|
@@ -25,12 +25,14 @@ var command_exports = /* @__PURE__ */ require_runtime.__exportAll({
|
|
|
25
25
|
createOption: () => require_simple.createOption,
|
|
26
26
|
exec: () => require_exec.exec,
|
|
27
27
|
execOptions: () => require_execOptions.execOptions,
|
|
28
|
+
findOptionToken: () => require_base.findOptionToken,
|
|
28
29
|
helpOption: () => require_help.helpOption,
|
|
29
30
|
interpretDataStructureError: () => require_error.interpretDataStructureError,
|
|
30
31
|
interpretErrorIssues: () => require_error.interpretErrorIssues,
|
|
31
32
|
interpretExecCommandError: () => require_error.interpretExecCommandError,
|
|
32
33
|
interpretExecOptionsError: () => require_error.interpretExecOptionsError,
|
|
33
34
|
isCommands: () => require_create.isCommands,
|
|
35
|
+
isOptionToken: () => require_base.isOptionToken,
|
|
34
36
|
logCommandHelp: () => require_help.logCommandHelp,
|
|
35
37
|
logExecOptionHelp: () => require_help.logExecOptionHelp,
|
|
36
38
|
optionIdentifier: () => require_identifier.optionIdentifier,
|
|
@@ -61,12 +63,14 @@ exports.createError = require_error.createError;
|
|
|
61
63
|
exports.createOption = require_simple.createOption;
|
|
62
64
|
exports.exec = require_exec.exec;
|
|
63
65
|
exports.execOptions = require_execOptions.execOptions;
|
|
66
|
+
exports.findOptionToken = require_base.findOptionToken;
|
|
64
67
|
exports.helpOption = require_help.helpOption;
|
|
65
68
|
exports.interpretDataStructureError = require_error.interpretDataStructureError;
|
|
66
69
|
exports.interpretErrorIssues = require_error.interpretErrorIssues;
|
|
67
70
|
exports.interpretExecCommandError = require_error.interpretExecCommandError;
|
|
68
71
|
exports.interpretExecOptionsError = require_error.interpretExecOptionsError;
|
|
69
72
|
exports.isCommands = require_create.isCommands;
|
|
73
|
+
exports.isOptionToken = require_base.isOptionToken;
|
|
70
74
|
exports.logCommandHelp = require_help.logCommandHelp;
|
|
71
75
|
exports.logExecOptionHelp = require_help.logExecOptionHelp;
|
|
72
76
|
exports.optionIdentifier = require_identifier.optionIdentifier;
|
package/dist/command/index.mjs
CHANGED
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
import { __exportAll } from "../_virtual/_rolldown/runtime.mjs";
|
|
2
2
|
import { argumentKind, createArgument } from "./argument.mjs";
|
|
3
3
|
import { SymbolCommandError, createError, interpretDataStructureError, interpretErrorIssues, interpretExecCommandError, interpretExecOptionsError } from "./error.mjs";
|
|
4
|
-
import { constructOption, optionKind } from "./options/base.mjs";
|
|
4
|
+
import { constructOption, findOptionToken, isOptionToken, optionKind } from "./options/base.mjs";
|
|
5
5
|
import { arrayOptionKind, createArrayOption } from "./options/defaults/array.mjs";
|
|
6
6
|
import { booleanOptionKind, createBooleanOption } from "./options/defaults/boolean.mjs";
|
|
7
7
|
import { createOption, simpleOptionKind } from "./options/defaults/simple.mjs";
|
|
@@ -25,12 +25,14 @@ var command_exports = /* @__PURE__ */ __exportAll({
|
|
|
25
25
|
createOption: () => createOption,
|
|
26
26
|
exec: () => exec,
|
|
27
27
|
execOptions: () => execOptions,
|
|
28
|
+
findOptionToken: () => findOptionToken,
|
|
28
29
|
helpOption: () => helpOption,
|
|
29
30
|
interpretDataStructureError: () => interpretDataStructureError,
|
|
30
31
|
interpretErrorIssues: () => interpretErrorIssues,
|
|
31
32
|
interpretExecCommandError: () => interpretExecCommandError,
|
|
32
33
|
interpretExecOptionsError: () => interpretExecOptionsError,
|
|
33
34
|
isCommands: () => isCommands,
|
|
35
|
+
isOptionToken: () => isOptionToken,
|
|
34
36
|
logCommandHelp: () => logCommandHelp,
|
|
35
37
|
logExecOptionHelp: () => logExecOptionHelp,
|
|
36
38
|
optionIdentifier: () => optionIdentifier,
|
|
@@ -42,4 +44,4 @@ var command_exports = /* @__PURE__ */ __exportAll({
|
|
|
42
44
|
simpleOptionKind: () => simpleOptionKind
|
|
43
45
|
});
|
|
44
46
|
//#endregion
|
|
45
|
-
export { SymbolCommandError, argumentKind, arrayOptionKind, booleanOptionKind, command_exports, constructOption, create, createArgument, createArrayOption, createBooleanOption, createError, createOption, exec, execOptions, helpOption, interpretDataStructureError, interpretErrorIssues, interpretExecCommandError, interpretExecOptionsError, isCommands, logCommandHelp, logExecOptionHelp, optionIdentifier, optionKind, renderArgumentsHelp, renderCommandHelp, renderExecOptionHelp, renderOptionsHelp, simpleOptionKind };
|
|
47
|
+
export { SymbolCommandError, argumentKind, arrayOptionKind, booleanOptionKind, command_exports, constructOption, create, createArgument, createArrayOption, createBooleanOption, createError, createOption, exec, execOptions, findOptionToken, helpOption, interpretDataStructureError, interpretErrorIssues, interpretExecCommandError, interpretExecOptionsError, isCommands, isOptionToken, logCommandHelp, logExecOptionHelp, optionIdentifier, optionKind, renderArgumentsHelp, renderCommandHelp, renderExecOptionHelp, renderOptionsHelp, simpleOptionKind };
|
|
@@ -9,24 +9,30 @@ let _duplojs_lang_string = require("@duplojs/lang/string");
|
|
|
9
9
|
_duplojs_lang_string = require_runtime.__toESM(_duplojs_lang_string, 1);
|
|
10
10
|
//#region scripts/command/options/base.ts
|
|
11
11
|
const optionKind = require_kind.createKind("command-option");
|
|
12
|
-
const regexOption = /^(?<dashes>-{1,2})(?<key>[A-Za-z0-9][A-Za-z0-9_-]*)(?:=(?<value>.*))?$/;
|
|
12
|
+
const regexOption = /^(?<dashes>-{1,2})(?<key>(?![0-9]+(?:=|$))[A-Za-z0-9][A-Za-z0-9_-]*)(?:=(?<value>.*))?$/;
|
|
13
|
+
function isOptionToken(input) {
|
|
14
|
+
return _duplojs_lang_string.test(input, regexOption);
|
|
15
|
+
}
|
|
16
|
+
function findOptionToken(args, option) {
|
|
17
|
+
return _duplojs_lang_array.reduce(args, _duplojs_lang_array.reduceFrom(null), ({ element, next, exit, index }) => {
|
|
18
|
+
const extractResult = _duplojs_lang_string.extract(element, regexOption);
|
|
19
|
+
if (!extractResult) return next(null);
|
|
20
|
+
const key = extractResult.namedGroups.key;
|
|
21
|
+
if (option.name !== key && (!_duplojs_lang_array.includes(option.aliases, key) || extractResult.namedGroups?.dashes !== "-")) return next(null);
|
|
22
|
+
return exit({
|
|
23
|
+
key,
|
|
24
|
+
value: extractResult.namedGroups?.value,
|
|
25
|
+
index
|
|
26
|
+
});
|
|
27
|
+
});
|
|
28
|
+
}
|
|
13
29
|
function constructOption(kindHandler, createConstructor) {
|
|
14
30
|
return createConstructor({ init: (name, execute, params, ...rest) => {
|
|
15
31
|
const self = {
|
|
16
32
|
...Object.fromEntries(Object.entries(rest[0] ?? {}).map(([key, prop]) => typeof prop === "function" ? [key, (...args) => prop(self, ...args)] : [key, prop])),
|
|
17
33
|
name,
|
|
18
34
|
execute: async (args, error) => {
|
|
19
|
-
const result =
|
|
20
|
-
const extractResult = _duplojs_lang_string.extract(element, regexOption);
|
|
21
|
-
if (!extractResult) return next(null);
|
|
22
|
-
const result = {
|
|
23
|
-
key: extractResult.namedGroups.key,
|
|
24
|
-
value: extractResult.namedGroups?.value,
|
|
25
|
-
index
|
|
26
|
-
};
|
|
27
|
-
if (self.name !== result.key && (!_duplojs_lang_array.includes(self.aliases, result.key) || extractResult.namedGroups?.dashes !== "-")) return next(null);
|
|
28
|
-
return exit(result);
|
|
29
|
-
});
|
|
35
|
+
const result = findOptionToken(args, self);
|
|
30
36
|
const { value, argumentRest } = _duplojs_lang_common.justExec(() => {
|
|
31
37
|
if (!result) return {
|
|
32
38
|
value: null,
|
|
@@ -34,7 +40,7 @@ function constructOption(kindHandler, createConstructor) {
|
|
|
34
40
|
};
|
|
35
41
|
if (result.value === void 0) {
|
|
36
42
|
const nextArg = args[result.index + 1];
|
|
37
|
-
if (nextArg === void 0 ||
|
|
43
|
+
if (nextArg === void 0 || isOptionToken(nextArg)) return {
|
|
38
44
|
value: void 0,
|
|
39
45
|
argumentRest: _duplojs_lang_array.spliceDelete(args, result.index, 1)
|
|
40
46
|
};
|
|
@@ -65,4 +71,6 @@ function constructOption(kindHandler, createConstructor) {
|
|
|
65
71
|
}
|
|
66
72
|
//#endregion
|
|
67
73
|
exports.constructOption = constructOption;
|
|
74
|
+
exports.findOptionToken = findOptionToken;
|
|
75
|
+
exports.isOptionToken = isOptionToken;
|
|
68
76
|
exports.optionKind = optionKind;
|
|
@@ -2,6 +2,12 @@ import { Error, SymbolCommandError } from '../error';
|
|
|
2
2
|
import * as DCommon from "@duplojs/lang/common";
|
|
3
3
|
import type * as DKind from "@duplojs/lang/kind";
|
|
4
4
|
export declare const optionKind: DKind.Handler<DKind.Definition<"@DuplojsServerCommand/command-option", unknown>>;
|
|
5
|
+
export declare function isOptionToken(input: string): boolean;
|
|
6
|
+
export declare function findOptionToken(args: readonly string[], option: Pick<Option, "name" | "aliases">): {
|
|
7
|
+
key: string;
|
|
8
|
+
value: string | undefined;
|
|
9
|
+
index: number;
|
|
10
|
+
} | null;
|
|
5
11
|
export interface Option<GenericName extends string = string, GenericValue extends unknown = unknown> extends DKind.Kind<typeof optionKind> {
|
|
6
12
|
readonly name: GenericName;
|
|
7
13
|
readonly description: string | null;
|