zod-args-parser 1.2.8 → 2.0.0-beta.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.
- package/README.md +525 -588
- package/lib/cjs/autocomplete-scripts/bash-autocomplete-script.cjs +2 -0
- package/lib/cjs/autocomplete-scripts/bash-autocomplete-script.cjs.map +1 -0
- package/lib/cjs/autocomplete-scripts/powershell-autocomplete-script.cjs +2 -0
- package/lib/cjs/autocomplete-scripts/powershell-autocomplete-script.cjs.map +1 -0
- package/lib/cjs/autocomplete-scripts/zsh-autocomplete-script.cjs +42 -0
- package/lib/cjs/autocomplete-scripts/zsh-autocomplete-script.cjs.map +1 -0
- package/lib/cjs/coerce/coerce-methods.cjs +2 -0
- package/lib/cjs/coerce/coerce-methods.cjs.map +1 -0
- package/lib/cjs/coerce/string-to-array.cjs +2 -0
- package/lib/cjs/coerce/string-to-array.cjs.map +1 -0
- package/lib/cjs/coerce/string-to-primitive.cjs +2 -0
- package/lib/cjs/coerce/string-to-primitive.cjs.map +1 -0
- package/lib/cjs/coerce/string-to-set.cjs +2 -0
- package/lib/cjs/coerce/string-to-set.cjs.map +1 -0
- package/lib/cjs/definitions/define-arguments.cjs +2 -0
- package/lib/cjs/definitions/define-arguments.cjs.map +1 -0
- package/lib/cjs/definitions/define-cli.cjs +2 -0
- package/lib/cjs/definitions/define-cli.cjs.map +1 -0
- package/lib/cjs/definitions/define-options.cjs +2 -0
- package/lib/cjs/definitions/define-options.cjs.map +1 -0
- package/lib/cjs/definitions/define-subcommand.cjs +2 -0
- package/lib/cjs/definitions/define-subcommand.cjs.map +1 -0
- package/lib/cjs/definitions/validate-cli-definition.cjs +2 -0
- package/lib/cjs/definitions/validate-cli-definition.cjs.map +1 -0
- package/lib/cjs/help-message/format-arguments.cjs +2 -0
- package/lib/cjs/help-message/format-arguments.cjs.map +1 -0
- package/lib/cjs/help-message/format-options.cjs +2 -0
- package/lib/cjs/help-message/format-options.cjs.map +1 -0
- package/lib/cjs/help-message/format-subcommands.cjs +2 -0
- package/lib/cjs/help-message/format-subcommands.cjs.map +1 -0
- package/lib/cjs/help-message/generate-for-cli.cjs +2 -0
- package/lib/cjs/help-message/generate-for-cli.cjs.map +1 -0
- package/lib/cjs/help-message/generate-for-subcommand.cjs +2 -0
- package/lib/cjs/help-message/generate-for-subcommand.cjs.map +1 -0
- package/lib/cjs/help-message/print-help.cjs +2 -0
- package/lib/cjs/help-message/print-help.cjs.map +1 -0
- package/lib/cjs/help-message/set-defaults.cjs +2 -0
- package/lib/cjs/help-message/set-defaults.cjs.map +1 -0
- package/lib/cjs/help-message/styles.cjs +2 -0
- package/lib/cjs/help-message/styles.cjs.map +1 -0
- package/lib/cjs/help-message/terminal-markdown.cjs +2 -0
- package/lib/cjs/help-message/terminal-markdown.cjs.map +1 -0
- package/lib/cjs/index.cjs +2 -0
- package/lib/cjs/index.cjs.map +1 -0
- package/lib/cjs/markdown/generate-markdown.cjs +2 -0
- package/lib/cjs/markdown/generate-markdown.cjs.map +1 -0
- package/lib/cjs/metadata/arguments-metadata.cjs +2 -0
- package/lib/cjs/metadata/arguments-metadata.cjs.map +1 -0
- package/lib/cjs/metadata/cli-metadata.cjs +2 -0
- package/lib/cjs/metadata/cli-metadata.cjs.map +1 -0
- package/lib/cjs/metadata/options-metadata.cjs +2 -0
- package/lib/cjs/metadata/options-metadata.cjs.map +1 -0
- package/lib/cjs/metadata/subcommands-metadata.cjs +2 -0
- package/lib/cjs/metadata/subcommands-metadata.cjs.map +1 -0
- package/lib/cjs/parse/context/cli-context-builder.cjs +2 -0
- package/lib/cjs/parse/context/cli-context-builder.cjs.map +1 -0
- package/lib/cjs/parse/context/object-context-builder.cjs +2 -0
- package/lib/cjs/parse/context/object-context-builder.cjs.map +1 -0
- package/lib/cjs/parse/parser-utilities.cjs +2 -0
- package/lib/cjs/parse/parser-utilities.cjs.map +1 -0
- package/lib/cjs/parse/safe-parse.cjs +2 -0
- package/lib/cjs/parse/safe-parse.cjs.map +1 -0
- package/lib/cjs/parse/validation/validate-context.cjs +2 -0
- package/lib/cjs/parse/validation/validate-context.cjs.map +1 -0
- package/lib/cjs/parse/validation/validators/arguments.cjs +2 -0
- package/lib/cjs/parse/validation/validators/arguments.cjs.map +1 -0
- package/lib/cjs/parse/validation/validators/conflict.cjs +2 -0
- package/lib/cjs/parse/validation/validators/conflict.cjs.map +1 -0
- package/lib/cjs/parse/validation/validators/exclusive.cjs +2 -0
- package/lib/cjs/parse/validation/validators/exclusive.cjs.map +1 -0
- package/lib/cjs/parse/validation/validators/explicitly-passed.cjs +2 -0
- package/lib/cjs/parse/validation/validators/explicitly-passed.cjs.map +1 -0
- package/lib/cjs/parse/validation/validators/options.cjs +2 -0
- package/lib/cjs/parse/validation/validators/options.cjs.map +1 -0
- package/lib/cjs/parse/validation/validators/requires.cjs +2 -0
- package/lib/cjs/parse/validation/validators/requires.cjs.map +1 -0
- package/lib/cjs/utilities.cjs +2 -0
- package/lib/cjs/utilities.cjs.map +1 -0
- package/lib/esm/autocomplete-scripts/bash-autocomplete-script.js +2 -0
- package/lib/esm/autocomplete-scripts/bash-autocomplete-script.js.map +1 -0
- package/lib/esm/autocomplete-scripts/powershell-autocomplete-script.js +2 -0
- package/lib/esm/autocomplete-scripts/powershell-autocomplete-script.js.map +1 -0
- package/lib/esm/autocomplete-scripts/zsh-autocomplete-script.js +42 -0
- package/lib/esm/autocomplete-scripts/zsh-autocomplete-script.js.map +1 -0
- package/lib/esm/coerce/coerce-methods.js +2 -0
- package/lib/esm/coerce/coerce-methods.js.map +1 -0
- package/lib/esm/coerce/string-to-array.js +2 -0
- package/lib/esm/coerce/string-to-array.js.map +1 -0
- package/lib/esm/coerce/string-to-primitive.js +2 -0
- package/lib/esm/coerce/string-to-primitive.js.map +1 -0
- package/lib/esm/coerce/string-to-set.js +2 -0
- package/lib/esm/coerce/string-to-set.js.map +1 -0
- package/lib/esm/definitions/define-arguments.js +2 -0
- package/lib/esm/definitions/define-arguments.js.map +1 -0
- package/lib/esm/definitions/define-cli.js +2 -0
- package/lib/esm/definitions/define-cli.js.map +1 -0
- package/lib/esm/definitions/define-options.js +2 -0
- package/lib/esm/definitions/define-options.js.map +1 -0
- package/lib/esm/definitions/define-subcommand.js +2 -0
- package/lib/esm/definitions/define-subcommand.js.map +1 -0
- package/lib/esm/definitions/validate-cli-definition.js +2 -0
- package/lib/esm/definitions/validate-cli-definition.js.map +1 -0
- package/lib/esm/help-message/format-arguments.js +2 -0
- package/lib/esm/help-message/format-arguments.js.map +1 -0
- package/lib/esm/help-message/format-options.js +2 -0
- package/lib/esm/help-message/format-options.js.map +1 -0
- package/lib/esm/help-message/format-subcommands.js +2 -0
- package/lib/esm/help-message/format-subcommands.js.map +1 -0
- package/lib/esm/help-message/generate-for-cli.js +2 -0
- package/lib/esm/help-message/generate-for-cli.js.map +1 -0
- package/lib/esm/help-message/generate-for-subcommand.js +2 -0
- package/lib/esm/help-message/generate-for-subcommand.js.map +1 -0
- package/lib/esm/help-message/print-help.js +2 -0
- package/lib/esm/help-message/print-help.js.map +1 -0
- package/lib/esm/help-message/set-defaults.js +2 -0
- package/lib/esm/help-message/set-defaults.js.map +1 -0
- package/lib/esm/help-message/styles.js +2 -0
- package/lib/esm/help-message/styles.js.map +1 -0
- package/lib/esm/help-message/terminal-markdown.js +2 -0
- package/lib/esm/help-message/terminal-markdown.js.map +1 -0
- package/lib/esm/index.js +2 -0
- package/lib/esm/index.js.map +1 -0
- package/lib/esm/markdown/generate-markdown.js +2 -0
- package/lib/esm/markdown/generate-markdown.js.map +1 -0
- package/lib/esm/metadata/arguments-metadata.js +2 -0
- package/lib/esm/metadata/arguments-metadata.js.map +1 -0
- package/lib/esm/metadata/cli-metadata.js +2 -0
- package/lib/esm/metadata/cli-metadata.js.map +1 -0
- package/lib/esm/metadata/options-metadata.js +2 -0
- package/lib/esm/metadata/options-metadata.js.map +1 -0
- package/lib/esm/metadata/subcommands-metadata.js +2 -0
- package/lib/esm/metadata/subcommands-metadata.js.map +1 -0
- package/lib/esm/parse/context/cli-context-builder.js +2 -0
- package/lib/esm/parse/context/cli-context-builder.js.map +1 -0
- package/lib/esm/parse/context/object-context-builder.js +2 -0
- package/lib/esm/parse/context/object-context-builder.js.map +1 -0
- package/lib/esm/parse/parser-utilities.js +2 -0
- package/lib/esm/parse/parser-utilities.js.map +1 -0
- package/lib/esm/parse/safe-parse.js +2 -0
- package/lib/esm/parse/safe-parse.js.map +1 -0
- package/lib/esm/parse/validation/validate-context.js +2 -0
- package/lib/esm/parse/validation/validate-context.js.map +1 -0
- package/lib/esm/parse/validation/validators/arguments.js +2 -0
- package/lib/esm/parse/validation/validators/arguments.js.map +1 -0
- package/lib/esm/parse/validation/validators/conflict.js +2 -0
- package/lib/esm/parse/validation/validators/conflict.js.map +1 -0
- package/lib/esm/parse/validation/validators/exclusive.js +2 -0
- package/lib/esm/parse/validation/validators/exclusive.js.map +1 -0
- package/lib/esm/parse/validation/validators/explicitly-passed.js +2 -0
- package/lib/esm/parse/validation/validators/explicitly-passed.js.map +1 -0
- package/lib/esm/parse/validation/validators/options.js +2 -0
- package/lib/esm/parse/validation/validators/options.js.map +1 -0
- package/lib/esm/parse/validation/validators/requires.js +2 -0
- package/lib/esm/parse/validation/validators/requires.js.map +1 -0
- package/lib/esm/utilities.js +2 -0
- package/lib/esm/utilities.js.map +1 -0
- package/lib/iife/index.js +2 -0
- package/lib/iife/index.js.map +1 -0
- package/lib/mjs/autocomplete-scripts/bash-autocomplete-script.mjs +2 -0
- package/lib/mjs/autocomplete-scripts/bash-autocomplete-script.mjs.map +1 -0
- package/lib/mjs/autocomplete-scripts/powershell-autocomplete-script.mjs +2 -0
- package/lib/mjs/autocomplete-scripts/powershell-autocomplete-script.mjs.map +1 -0
- package/lib/mjs/autocomplete-scripts/zsh-autocomplete-script.mjs +42 -0
- package/lib/mjs/autocomplete-scripts/zsh-autocomplete-script.mjs.map +1 -0
- package/lib/mjs/coerce/coerce-methods.mjs +2 -0
- package/lib/mjs/coerce/coerce-methods.mjs.map +1 -0
- package/lib/mjs/coerce/string-to-array.mjs +2 -0
- package/lib/mjs/coerce/string-to-array.mjs.map +1 -0
- package/lib/mjs/coerce/string-to-primitive.mjs +2 -0
- package/lib/mjs/coerce/string-to-primitive.mjs.map +1 -0
- package/lib/mjs/coerce/string-to-set.mjs +2 -0
- package/lib/mjs/coerce/string-to-set.mjs.map +1 -0
- package/lib/mjs/definitions/define-arguments.mjs +2 -0
- package/lib/mjs/definitions/define-arguments.mjs.map +1 -0
- package/lib/mjs/definitions/define-cli.mjs +2 -0
- package/lib/mjs/definitions/define-cli.mjs.map +1 -0
- package/lib/mjs/definitions/define-options.mjs +2 -0
- package/lib/mjs/definitions/define-options.mjs.map +1 -0
- package/lib/mjs/definitions/define-subcommand.mjs +2 -0
- package/lib/mjs/definitions/define-subcommand.mjs.map +1 -0
- package/lib/mjs/definitions/validate-cli-definition.mjs +2 -0
- package/lib/mjs/definitions/validate-cli-definition.mjs.map +1 -0
- package/lib/mjs/help-message/format-arguments.mjs +2 -0
- package/lib/mjs/help-message/format-arguments.mjs.map +1 -0
- package/lib/mjs/help-message/format-options.mjs +2 -0
- package/lib/mjs/help-message/format-options.mjs.map +1 -0
- package/lib/mjs/help-message/format-subcommands.mjs +2 -0
- package/lib/mjs/help-message/format-subcommands.mjs.map +1 -0
- package/lib/mjs/help-message/generate-for-cli.mjs +2 -0
- package/lib/mjs/help-message/generate-for-cli.mjs.map +1 -0
- package/lib/mjs/help-message/generate-for-subcommand.mjs +2 -0
- package/lib/mjs/help-message/generate-for-subcommand.mjs.map +1 -0
- package/lib/mjs/help-message/print-help.mjs +2 -0
- package/lib/mjs/help-message/print-help.mjs.map +1 -0
- package/lib/mjs/help-message/set-defaults.mjs +2 -0
- package/lib/mjs/help-message/set-defaults.mjs.map +1 -0
- package/lib/mjs/help-message/styles.mjs +2 -0
- package/lib/mjs/help-message/styles.mjs.map +1 -0
- package/lib/mjs/help-message/terminal-markdown.mjs +2 -0
- package/lib/mjs/help-message/terminal-markdown.mjs.map +1 -0
- package/lib/mjs/index.mjs +2 -0
- package/lib/mjs/index.mjs.map +1 -0
- package/lib/mjs/markdown/generate-markdown.mjs +2 -0
- package/lib/mjs/markdown/generate-markdown.mjs.map +1 -0
- package/lib/mjs/metadata/arguments-metadata.mjs +2 -0
- package/lib/mjs/metadata/arguments-metadata.mjs.map +1 -0
- package/lib/mjs/metadata/cli-metadata.mjs +2 -0
- package/lib/mjs/metadata/cli-metadata.mjs.map +1 -0
- package/lib/mjs/metadata/options-metadata.mjs +2 -0
- package/lib/mjs/metadata/options-metadata.mjs.map +1 -0
- package/lib/mjs/metadata/subcommands-metadata.mjs +2 -0
- package/lib/mjs/metadata/subcommands-metadata.mjs.map +1 -0
- package/lib/mjs/parse/context/cli-context-builder.mjs +2 -0
- package/lib/mjs/parse/context/cli-context-builder.mjs.map +1 -0
- package/lib/mjs/parse/context/object-context-builder.mjs +2 -0
- package/lib/mjs/parse/context/object-context-builder.mjs.map +1 -0
- package/lib/mjs/parse/parser-utilities.mjs +2 -0
- package/lib/mjs/parse/parser-utilities.mjs.map +1 -0
- package/lib/mjs/parse/safe-parse.mjs +2 -0
- package/lib/mjs/parse/safe-parse.mjs.map +1 -0
- package/lib/mjs/parse/validation/validate-context.mjs +2 -0
- package/lib/mjs/parse/validation/validate-context.mjs.map +1 -0
- package/lib/mjs/parse/validation/validators/arguments.mjs +2 -0
- package/lib/mjs/parse/validation/validators/arguments.mjs.map +1 -0
- package/lib/mjs/parse/validation/validators/conflict.mjs +2 -0
- package/lib/mjs/parse/validation/validators/conflict.mjs.map +1 -0
- package/lib/mjs/parse/validation/validators/exclusive.mjs +2 -0
- package/lib/mjs/parse/validation/validators/exclusive.mjs.map +1 -0
- package/lib/mjs/parse/validation/validators/explicitly-passed.mjs +2 -0
- package/lib/mjs/parse/validation/validators/explicitly-passed.mjs.map +1 -0
- package/lib/mjs/parse/validation/validators/options.mjs +2 -0
- package/lib/mjs/parse/validation/validators/options.mjs.map +1 -0
- package/lib/mjs/parse/validation/validators/requires.mjs +2 -0
- package/lib/mjs/parse/validation/validators/requires.mjs.map +1 -0
- package/lib/mjs/utilities.mjs +2 -0
- package/lib/mjs/utilities.mjs.map +1 -0
- package/lib/typescript/autocomplete-scripts/bash-autocomplete-script.d.ts +2 -2
- package/lib/typescript/autocomplete-scripts/bash-autocomplete-script.d.ts.map +1 -1
- package/lib/typescript/autocomplete-scripts/powershell-autocomplete-script.d.ts +2 -2
- package/lib/typescript/autocomplete-scripts/powershell-autocomplete-script.d.ts.map +1 -1
- package/lib/typescript/autocomplete-scripts/zsh-autocomplete-script.d.ts +2 -2
- package/lib/typescript/autocomplete-scripts/zsh-autocomplete-script.d.ts.map +1 -1
- package/lib/typescript/coerce/coerce-methods.d.ts +20 -0
- package/lib/typescript/coerce/coerce-methods.d.ts.map +1 -0
- package/lib/typescript/coerce/string-to-array.d.ts +6 -0
- package/lib/typescript/coerce/string-to-array.d.ts.map +1 -0
- package/lib/typescript/coerce/string-to-primitive.d.ts +5 -0
- package/lib/typescript/coerce/string-to-primitive.d.ts.map +1 -0
- package/lib/typescript/coerce/string-to-set.d.ts +6 -0
- package/lib/typescript/coerce/string-to-set.d.ts.map +1 -0
- package/lib/typescript/definitions/define-arguments.d.ts +7 -0
- package/lib/typescript/definitions/define-arguments.d.ts.map +1 -0
- package/lib/typescript/definitions/define-cli.d.ts +24 -0
- package/lib/typescript/definitions/define-cli.d.ts.map +1 -0
- package/lib/typescript/definitions/define-options.d.ts +7 -0
- package/lib/typescript/definitions/define-options.d.ts.map +1 -0
- package/lib/typescript/definitions/define-subcommand.d.ts +17 -0
- package/lib/typescript/definitions/define-subcommand.d.ts.map +1 -0
- package/lib/typescript/definitions/validate-cli-definition.d.ts +4 -0
- package/lib/typescript/definitions/validate-cli-definition.d.ts.map +1 -0
- package/lib/typescript/help-message/format-arguments.d.ts +3 -3
- package/lib/typescript/help-message/format-arguments.d.ts.map +1 -1
- package/lib/typescript/help-message/format-options.d.ts +3 -3
- package/lib/typescript/help-message/format-options.d.ts.map +1 -1
- package/lib/typescript/help-message/format-subcommands.d.ts +3 -3
- package/lib/typescript/help-message/format-subcommands.d.ts.map +1 -1
- package/lib/typescript/help-message/generate-for-cli.d.ts +8 -0
- package/lib/typescript/help-message/generate-for-cli.d.ts.map +1 -0
- package/lib/typescript/help-message/generate-for-subcommand.d.ts +4 -0
- package/lib/typescript/help-message/generate-for-subcommand.d.ts.map +1 -0
- package/lib/typescript/help-message/print-help.d.ts +5 -0
- package/lib/typescript/help-message/print-help.d.ts.map +1 -0
- package/lib/typescript/help-message/set-defaults.d.ts +4 -0
- package/lib/typescript/help-message/set-defaults.d.ts.map +1 -0
- package/lib/typescript/help-message/styles.d.ts +30 -106
- package/lib/typescript/help-message/styles.d.ts.map +1 -1
- package/lib/typescript/help-message/terminal-markdown.d.ts +3 -0
- package/lib/typescript/help-message/terminal-markdown.d.ts.map +1 -0
- package/lib/typescript/index.d.ts +23 -35
- package/lib/typescript/index.d.ts.map +1 -1
- package/lib/typescript/markdown/generate-markdown.d.ts +2 -2
- package/lib/typescript/markdown/generate-markdown.d.ts.map +1 -1
- package/lib/typescript/metadata/arguments-metadata.d.ts +4 -0
- package/lib/typescript/metadata/arguments-metadata.d.ts.map +1 -0
- package/lib/typescript/metadata/cli-metadata.d.ts +4 -0
- package/lib/typescript/metadata/cli-metadata.d.ts.map +1 -0
- package/lib/typescript/metadata/options-metadata.d.ts +4 -0
- package/lib/typescript/metadata/options-metadata.d.ts.map +1 -0
- package/lib/typescript/metadata/subcommands-metadata.d.ts +4 -0
- package/lib/typescript/metadata/subcommands-metadata.d.ts.map +1 -0
- package/lib/typescript/parse/context/cli-context-builder.d.ts +9 -0
- package/lib/typescript/parse/context/cli-context-builder.d.ts.map +1 -0
- package/lib/typescript/parse/context/object-context-builder.d.ts +6 -0
- package/lib/typescript/parse/context/object-context-builder.d.ts.map +1 -0
- package/lib/typescript/{parser/parse/parser-helpers.d.ts → parse/parser-utilities.d.ts} +18 -9
- package/lib/typescript/parse/parser-utilities.d.ts.map +1 -0
- package/lib/typescript/parse/safe-parse.d.ts +5 -0
- package/lib/typescript/parse/safe-parse.d.ts.map +1 -0
- package/lib/typescript/parse/validation/validate-context.d.ts +6 -0
- package/lib/typescript/parse/validation/validate-context.d.ts.map +1 -0
- package/lib/typescript/parse/validation/validators/arguments.d.ts +12 -0
- package/lib/typescript/parse/validation/validators/arguments.d.ts.map +1 -0
- package/lib/typescript/parse/validation/validators/conflict.d.ts +16 -0
- package/lib/typescript/parse/validation/validators/conflict.d.ts.map +1 -0
- package/lib/typescript/parse/validation/validators/exclusive.d.ts +16 -0
- package/lib/typescript/parse/validation/validators/exclusive.d.ts.map +1 -0
- package/lib/typescript/parse/validation/validators/explicitly-passed.d.ts +5 -0
- package/lib/typescript/parse/validation/validators/explicitly-passed.d.ts.map +1 -0
- package/lib/typescript/parse/validation/validators/options.d.ts +12 -0
- package/lib/typescript/parse/validation/validators/options.d.ts.map +1 -0
- package/lib/typescript/parse/validation/validators/requires.d.ts +18 -0
- package/lib/typescript/parse/validation/validators/requires.d.ts.map +1 -0
- package/lib/typescript/types/context-types.d.ts +135 -0
- package/lib/typescript/types/context-types.d.ts.map +1 -0
- package/lib/typescript/types/definitions-types.d.ts +294 -0
- package/lib/typescript/types/definitions-types.d.ts.map +1 -0
- package/lib/typescript/types/help-message-types.d.ts +134 -0
- package/lib/typescript/types/help-message-types.d.ts.map +1 -0
- package/lib/typescript/types/io-types.d.ts +96 -0
- package/lib/typescript/types/io-types.d.ts.map +1 -0
- package/lib/typescript/types/metadata-types.d.ts +75 -0
- package/lib/typescript/types/metadata-types.d.ts.map +1 -0
- package/lib/typescript/types/schema-types.d.ts +6 -0
- package/lib/typescript/types/schema-types.d.ts.map +1 -0
- package/lib/typescript/types/types.d.ts +61 -0
- package/lib/typescript/types/types.d.ts.map +1 -0
- package/lib/typescript/types/utilities-types.d.ts +17 -0
- package/lib/typescript/types/utilities-types.d.ts.map +1 -0
- package/lib/typescript/utilities.d.ts +24 -10
- package/lib/typescript/utilities.d.ts.map +1 -1
- package/package.json +29 -26
- package/src/autocomplete-scripts/bash-autocomplete-script.ts +13 -9
- package/src/autocomplete-scripts/powershell-autocomplete-script.ts +21 -13
- package/src/autocomplete-scripts/zsh-autocomplete-script.ts +27 -23
- package/src/coerce/coerce-methods.ts +75 -0
- package/src/coerce/string-to-array.ts +18 -0
- package/src/coerce/string-to-primitive.ts +31 -0
- package/src/coerce/string-to-set.ts +15 -0
- package/src/definitions/define-arguments.ts +10 -0
- package/src/definitions/define-cli.ts +105 -0
- package/src/definitions/define-options.ts +12 -0
- package/src/definitions/define-subcommand.ts +57 -0
- package/src/definitions/validate-cli-definition.ts +331 -0
- package/src/help-message/format-arguments.ts +57 -33
- package/src/help-message/format-options.ts +59 -34
- package/src/help-message/format-subcommands.ts +43 -21
- package/src/help-message/generate-for-cli.ts +114 -0
- package/src/help-message/generate-for-subcommand.ts +32 -0
- package/src/help-message/print-help.ts +13 -0
- package/src/help-message/set-defaults.ts +34 -0
- package/src/help-message/styles.ts +148 -103
- package/src/help-message/terminal-markdown.ts +147 -0
- package/src/index.ts +28 -97
- package/src/markdown/generate-markdown.ts +47 -58
- package/src/metadata/arguments-metadata.ts +28 -0
- package/src/metadata/cli-metadata.ts +26 -0
- package/src/metadata/options-metadata.ts +38 -0
- package/src/metadata/subcommands-metadata.ts +35 -0
- package/src/parse/context/cli-context-builder.ts +246 -0
- package/src/parse/context/object-context-builder.ts +63 -0
- package/src/{parser/parse/parser-helpers.ts → parse/parser-utilities.ts} +46 -25
- package/src/parse/safe-parse.ts +76 -0
- package/src/parse/validation/validate-context.ts +23 -0
- package/src/parse/validation/validators/arguments.ts +59 -0
- package/src/parse/validation/validators/conflict.ts +68 -0
- package/src/parse/validation/validators/exclusive.ts +70 -0
- package/src/parse/validation/validators/explicitly-passed.ts +15 -0
- package/src/parse/validation/validators/options.ts +59 -0
- package/src/parse/validation/validators/requires.ts +82 -0
- package/src/types/context-types.ts +171 -0
- package/src/types/definitions-types.ts +340 -0
- package/src/types/help-message-types.ts +153 -0
- package/src/types/io-types.ts +131 -0
- package/src/types/metadata-types.ts +104 -0
- package/src/types/schema-types.ts +9 -0
- package/src/types/types.ts +72 -0
- package/src/types/utilities-types.ts +26 -0
- package/src/utilities.ts +200 -23
- package/lib/commonjs/autocomplete-scripts/bash-autocomplete-script.cjs +0 -42
- package/lib/commonjs/autocomplete-scripts/bash-autocomplete-script.cjs.map +0 -1
- package/lib/commonjs/autocomplete-scripts/powershell-autocomplete-script.cjs +0 -31
- package/lib/commonjs/autocomplete-scripts/powershell-autocomplete-script.cjs.map +0 -1
- package/lib/commonjs/autocomplete-scripts/zsh-autocomplete-script.cjs +0 -41
- package/lib/commonjs/autocomplete-scripts/zsh-autocomplete-script.cjs.map +0 -1
- package/lib/commonjs/help-message/format-arguments.cjs +0 -1
- package/lib/commonjs/help-message/format-arguments.cjs.map +0 -1
- package/lib/commonjs/help-message/format-cli.cjs +0 -1
- package/lib/commonjs/help-message/format-cli.cjs.map +0 -1
- package/lib/commonjs/help-message/format-options.cjs +0 -1
- package/lib/commonjs/help-message/format-options.cjs.map +0 -1
- package/lib/commonjs/help-message/format-subcommands.cjs +0 -1
- package/lib/commonjs/help-message/format-subcommands.cjs.map +0 -1
- package/lib/commonjs/help-message/styles.cjs +0 -1
- package/lib/commonjs/help-message/styles.cjs.map +0 -1
- package/lib/commonjs/index.cjs +0 -1
- package/lib/commonjs/index.cjs.map +0 -1
- package/lib/commonjs/markdown/generate-markdown.cjs +0 -1
- package/lib/commonjs/markdown/generate-markdown.cjs.map +0 -1
- package/lib/commonjs/metadata/get-arguments-metadata.cjs +0 -1
- package/lib/commonjs/metadata/get-arguments-metadata.cjs.map +0 -1
- package/lib/commonjs/metadata/get-cli-metadata.cjs +0 -1
- package/lib/commonjs/metadata/get-cli-metadata.cjs.map +0 -1
- package/lib/commonjs/metadata/get-options-metadata.cjs +0 -1
- package/lib/commonjs/metadata/get-options-metadata.cjs.map +0 -1
- package/lib/commonjs/metadata/get-subcommands-metadata.cjs +0 -1
- package/lib/commonjs/metadata/get-subcommands-metadata.cjs.map +0 -1
- package/lib/commonjs/parser/parse/parse.cjs +0 -1
- package/lib/commonjs/parser/parse/parse.cjs.map +0 -1
- package/lib/commonjs/parser/parse/parser-helpers.cjs +0 -1
- package/lib/commonjs/parser/parse/parser-helpers.cjs.map +0 -1
- package/lib/commonjs/parser/safe-parse.cjs +0 -1
- package/lib/commonjs/parser/safe-parse.cjs.map +0 -1
- package/lib/commonjs/parser/unsafe-parse.cjs +0 -1
- package/lib/commonjs/parser/unsafe-parse.cjs.map +0 -1
- package/lib/commonjs/parser/validate/validate-type.cjs +0 -1
- package/lib/commonjs/parser/validate/validate-type.cjs.map +0 -1
- package/lib/commonjs/parser/validate/validate.cjs +0 -1
- package/lib/commonjs/parser/validate/validate.cjs.map +0 -1
- package/lib/commonjs/utilities.cjs +0 -1
- package/lib/commonjs/utilities.cjs.map +0 -1
- package/lib/commonjs/zod-utilities.cjs +0 -1
- package/lib/commonjs/zod-utilities.cjs.map +0 -1
- package/lib/module/autocomplete-scripts/bash-autocomplete-script.mjs +0 -42
- package/lib/module/autocomplete-scripts/bash-autocomplete-script.mjs.map +0 -1
- package/lib/module/autocomplete-scripts/powershell-autocomplete-script.mjs +0 -31
- package/lib/module/autocomplete-scripts/powershell-autocomplete-script.mjs.map +0 -1
- package/lib/module/autocomplete-scripts/zsh-autocomplete-script.mjs +0 -41
- package/lib/module/autocomplete-scripts/zsh-autocomplete-script.mjs.map +0 -1
- package/lib/module/help-message/format-arguments.mjs +0 -1
- package/lib/module/help-message/format-arguments.mjs.map +0 -1
- package/lib/module/help-message/format-cli.mjs +0 -1
- package/lib/module/help-message/format-cli.mjs.map +0 -1
- package/lib/module/help-message/format-options.mjs +0 -1
- package/lib/module/help-message/format-options.mjs.map +0 -1
- package/lib/module/help-message/format-subcommands.mjs +0 -1
- package/lib/module/help-message/format-subcommands.mjs.map +0 -1
- package/lib/module/help-message/styles.mjs +0 -1
- package/lib/module/help-message/styles.mjs.map +0 -1
- package/lib/module/index.mjs +0 -1
- package/lib/module/index.mjs.map +0 -1
- package/lib/module/markdown/generate-markdown.mjs +0 -1
- package/lib/module/markdown/generate-markdown.mjs.map +0 -1
- package/lib/module/metadata/get-arguments-metadata.mjs +0 -1
- package/lib/module/metadata/get-arguments-metadata.mjs.map +0 -1
- package/lib/module/metadata/get-cli-metadata.mjs +0 -1
- package/lib/module/metadata/get-cli-metadata.mjs.map +0 -1
- package/lib/module/metadata/get-options-metadata.mjs +0 -1
- package/lib/module/metadata/get-options-metadata.mjs.map +0 -1
- package/lib/module/metadata/get-subcommands-metadata.mjs +0 -1
- package/lib/module/metadata/get-subcommands-metadata.mjs.map +0 -1
- package/lib/module/parser/parse/parse.mjs +0 -1
- package/lib/module/parser/parse/parse.mjs.map +0 -1
- package/lib/module/parser/parse/parser-helpers.mjs +0 -1
- package/lib/module/parser/parse/parser-helpers.mjs.map +0 -1
- package/lib/module/parser/safe-parse.mjs +0 -1
- package/lib/module/parser/safe-parse.mjs.map +0 -1
- package/lib/module/parser/unsafe-parse.mjs +0 -1
- package/lib/module/parser/unsafe-parse.mjs.map +0 -1
- package/lib/module/parser/validate/validate-type.mjs +0 -1
- package/lib/module/parser/validate/validate-type.mjs.map +0 -1
- package/lib/module/parser/validate/validate.mjs +0 -1
- package/lib/module/parser/validate/validate.mjs.map +0 -1
- package/lib/module/utilities.mjs +0 -1
- package/lib/module/utilities.mjs.map +0 -1
- package/lib/module/zod-utilities.mjs +0 -1
- package/lib/module/zod-utilities.mjs.map +0 -1
- package/lib/typescript/help-message/format-cli.d.ts +0 -6
- package/lib/typescript/help-message/format-cli.d.ts.map +0 -1
- package/lib/typescript/metadata/get-arguments-metadata.d.ts +0 -4
- package/lib/typescript/metadata/get-arguments-metadata.d.ts.map +0 -1
- package/lib/typescript/metadata/get-cli-metadata.d.ts +0 -4
- package/lib/typescript/metadata/get-cli-metadata.d.ts.map +0 -1
- package/lib/typescript/metadata/get-options-metadata.d.ts +0 -4
- package/lib/typescript/metadata/get-options-metadata.d.ts.map +0 -1
- package/lib/typescript/metadata/get-subcommands-metadata.d.ts +0 -4
- package/lib/typescript/metadata/get-subcommands-metadata.d.ts.map +0 -1
- package/lib/typescript/metadata/metadata-types.d.ts +0 -80
- package/lib/typescript/metadata/metadata-types.d.ts.map +0 -1
- package/lib/typescript/parser/parse/parse-types.d.ts +0 -85
- package/lib/typescript/parser/parse/parse-types.d.ts.map +0 -1
- package/lib/typescript/parser/parse/parse.d.ts +0 -4
- package/lib/typescript/parser/parse/parse.d.ts.map +0 -1
- package/lib/typescript/parser/parse/parser-helpers.d.ts.map +0 -1
- package/lib/typescript/parser/safe-parse.d.ts +0 -4
- package/lib/typescript/parser/safe-parse.d.ts.map +0 -1
- package/lib/typescript/parser/unsafe-parse.d.ts +0 -4
- package/lib/typescript/parser/unsafe-parse.d.ts.map +0 -1
- package/lib/typescript/parser/validate/validate-type.d.ts +0 -22
- package/lib/typescript/parser/validate/validate-type.d.ts.map +0 -1
- package/lib/typescript/parser/validate/validate.d.ts +0 -11
- package/lib/typescript/parser/validate/validate.d.ts.map +0 -1
- package/lib/typescript/types.d.ts +0 -294
- package/lib/typescript/types.d.ts.map +0 -1
- package/lib/typescript/zod-utilities.d.ts +0 -28
- package/lib/typescript/zod-utilities.d.ts.map +0 -1
- package/src/help-message/format-cli.ts +0 -141
- package/src/metadata/get-arguments-metadata.ts +0 -25
- package/src/metadata/get-cli-metadata.ts +0 -23
- package/src/metadata/get-options-metadata.ts +0 -35
- package/src/metadata/get-subcommands-metadata.ts +0 -32
- package/src/metadata/metadata-types.ts +0 -114
- package/src/parser/parse/parse-types.ts +0 -89
- package/src/parser/parse/parse.ts +0 -230
- package/src/parser/safe-parse.ts +0 -103
- package/src/parser/unsafe-parse.ts +0 -98
- package/src/parser/validate/validate-type.ts +0 -21
- package/src/parser/validate/validate.ts +0 -66
- package/src/types.ts +0 -365
- package/src/zod-utilities.ts +0 -214
|
@@ -0,0 +1,2 @@
|
|
|
1
|
+
"use strict";var __defProp=Object.defineProperty,__getOwnPropDesc=Object.getOwnPropertyDescriptor,__getOwnPropNames=Object.getOwnPropertyNames,__hasOwnProp=Object.prototype.hasOwnProperty,__export=(e,t)=>{for(var r in t)__defProp(e,r,{get:t[r],enumerable:!0})},__copyProps=(e,t,r,o)=>{if(t&&"object"==typeof t||"function"==typeof t)for(let a of __getOwnPropNames(t))__hasOwnProp.call(e,a)||a===r||__defProp(e,a,{get:()=>t[a],enumerable:!(o=__getOwnPropDesc(t,a))||o.enumerable});return e},__toCommonJS=e=>__copyProps(__defProp({},"__esModule",{value:!0}),e),index_exports={};__export(index_exports,{HelpMessageStyle:()=>import_styles.HelpMessageStyle,coerce:()=>import_coerce_methods.coerce,defineArguments:()=>import_define_arguments.defineArguments,defineCLI:()=>import_define_cli.defineCLI,defineOptions:()=>import_define_options.defineOptions,defineSubcommand:()=>import_define_subcommand.defineSubcommand,generateBashAutocompleteScript:()=>import_bash_autocomplete_script.generateBashAutocompleteScript,generateCliHelpMessage:()=>import_generate_for_cli.generateCliHelpMessage,generateMarkdown:()=>import_generate_markdown.generateMarkdown,generatePowerShellAutocompleteScript:()=>import_powershell_autocomplete_script.generatePowerShellAutocompleteScript,generateSubcommandHelpMessage:()=>import_generate_for_subcommand.generateSubcommandHelpMessage,generateZshAutocompleteScript:()=>import_zsh_autocomplete_script.generateZshAutocompleteScript,getArgumentsMetadata:()=>import_arguments_metadata.getArgumentsMetadata,getCliMetadata:()=>import_cli_metadata.getCliMetadata,getOptionsMetadata:()=>import_options_metadata.getOptionsMetadata,getSubcommandsMetadata:()=>import_subcommands_metadata.getSubcommandsMetadata,helpMessageStyles:()=>import_styles.helpMessageStyles,printCliHelp:()=>import_print_help.printCliHelp,printSubcommandHelp:()=>import_print_help.printSubcommandHelp}),module.exports=__toCommonJS(index_exports);var import_generate_for_cli=require("./help-message/generate-for-cli.cjs"),import_generate_for_subcommand=require("./help-message/generate-for-subcommand.cjs"),import_print_help=require("./help-message/print-help.cjs"),import_styles=require("./help-message/styles.cjs"),import_bash_autocomplete_script=require("./autocomplete-scripts/bash-autocomplete-script.cjs"),import_powershell_autocomplete_script=require("./autocomplete-scripts/powershell-autocomplete-script.cjs"),import_zsh_autocomplete_script=require("./autocomplete-scripts/zsh-autocomplete-script.cjs"),import_generate_markdown=require("./markdown/generate-markdown.cjs"),import_arguments_metadata=require("./metadata/arguments-metadata.cjs"),import_cli_metadata=require("./metadata/cli-metadata.cjs"),import_options_metadata=require("./metadata/options-metadata.cjs"),import_subcommands_metadata=require("./metadata/subcommands-metadata.cjs"),import_define_arguments=require("./definitions/define-arguments.cjs"),import_define_cli=require("./definitions/define-cli.cjs"),import_define_options=require("./definitions/define-options.cjs"),import_define_subcommand=require("./definitions/define-subcommand.cjs"),import_coerce_methods=require("./coerce/coerce-methods.cjs");
|
|
2
|
+
//# sourceMappingURL=index.cjs.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"names":["index_exports","__export","HelpMessageStyle","import_styles","coerce","import_coerce_methods","defineArguments","import_define_arguments","defineCLI","import_define_cli","defineOptions","import_define_options","defineSubcommand","import_define_subcommand","generateBashAutocompleteScript","import_bash_autocomplete_script","generateCliHelpMessage","import_generate_for_cli","generateMarkdown","import_generate_markdown","generatePowerShellAutocompleteScript","import_powershell_autocomplete_script","generateSubcommandHelpMessage","import_generate_for_subcommand","generateZshAutocompleteScript","import_zsh_autocomplete_script","getArgumentsMetadata","import_arguments_metadata","getCliMetadata","import_cli_metadata","getOptionsMetadata","import_options_metadata","getSubcommandsMetadata","import_subcommands_metadata","helpMessageStyles","printCliHelp","import_print_help","printSubcommandHelp","module","exports","__toCommonJS","require"],"sources":["../../src/index.ts"],"sourcesContent":["export { generateCliHelpMessage } from \"./help-message/generate-for-cli.ts\";\nexport { generateSubcommandHelpMessage } from \"./help-message/generate-for-subcommand.ts\";\nexport { printCliHelp, printSubcommandHelp } from \"./help-message/print-help.ts\";\nexport { HelpMessageStyle, helpMessageStyles } from \"./help-message/styles.ts\";\n\nexport { generateBashAutocompleteScript } from \"./autocomplete-scripts/bash-autocomplete-script.ts\";\nexport { generatePowerShellAutocompleteScript } from \"./autocomplete-scripts/powershell-autocomplete-script.ts\";\nexport { generateZshAutocompleteScript } from \"./autocomplete-scripts/zsh-autocomplete-script.ts\";\nexport { generateMarkdown } from \"./markdown/generate-markdown.ts\";\n\nexport { getArgumentsMetadata } from \"./metadata/arguments-metadata.ts\";\nexport { getCliMetadata } from \"./metadata/cli-metadata.ts\";\nexport { getOptionsMetadata } from \"./metadata/options-metadata.ts\";\nexport { getSubcommandsMetadata } from \"./metadata/subcommands-metadata.ts\";\n\nexport { defineArguments } from \"./definitions/define-arguments.ts\";\nexport { defineCLI } from \"./definitions/define-cli.ts\";\nexport { defineOptions } from \"./definitions/define-options.ts\";\nexport { defineSubcommand } from \"./definitions/define-subcommand.ts\";\n\nexport { coerce } from \"./coerce/coerce-methods.ts\";\n\nexport type * from \"./types/context-types.ts\";\nexport type * from \"./types/definitions-types.ts\";\nexport type * from \"./types/help-message-types.ts\";\nexport type * from \"./types/io-types.ts\";\nexport type * from \"./types/metadata-types.ts\";\nexport type * from \"./types/types.ts\";\n"],"mappings":"8iBAAAA,cAAA,GAAAC,SAAAD,cAAA,CAAAE,iBAAA,IAAAC,cAAAD,iBAAAE,OAAA,IAAAC,sBAAAD,OAAAE,gBAAA,IAAAC,wBAAAD,gBAAAE,UAAA,IAAAC,kBAAAD,UAAAE,cAAA,IAAAC,sBAAAD,cAAAE,iBAAA,IAAAC,yBAAAD,iBAAAE,+BAAA,IAAAC,gCAAAD,+BAAAE,uBAAA,IAAAC,wBAAAD,uBAAAE,iBAAA,IAAAC,yBAAAD,iBAAAE,qCAAA,IAAAC,sCAAAD,qCAAAE,8BAAA,IAAAC,+BAAAD,8BAAAE,8BAAA,IAAAC,+BAAAD,8BAAAE,qBAAA,IAAAC,0BAAAD,qBAAAE,eAAA,IAAAC,oBAAAD,eAAAE,mBAAA,IAAAC,wBAAAD,mBAAAE,uBAAA,IAAAC,4BAAAD,uBAAAE,kBAAA,IAAA/B,cAAA+B,kBAAAC,aAAA,IAAAC,kBAAAD,aAAAE,oBAAA,IAAAD,kBAAAC,sBAAAC,OAAAC,QAAAC,aAAAxC,eAAA,IAAAiB,wBAAuCwB,QAAA,uCACvClB,+BAA8CkB,QAAA,8CAC9CL,kBAAkDK,QAAA,iCAClDtC,cAAoDsC,QAAA,6BAEpD1B,gCAA+C0B,QAAA,uDAC/CpB,sCAAqDoB,QAAA,6DACrDhB,+BAA8CgB,QAAA,sDAC9CtB,yBAAiCsB,QAAA,oCAEjCd,0BAAqCc,QAAA,qCACrCZ,oBAA+BY,QAAA,+BAC/BV,wBAAmCU,QAAA,mCACnCR,4BAAuCQ,QAAA,uCAEvClC,wBAAgCkC,QAAA,sCAChChC,kBAA0BgC,QAAA,gCAC1B9B,sBAA8B8B,QAAA,oCAC9B5B,yBAAiC4B,QAAA,uCAEjCpC,sBAAuBoC,QAAA","ignoreList":[]}
|
|
@@ -0,0 +1,2 @@
|
|
|
1
|
+
"use strict";var __defProp=Object.defineProperty,__getOwnPropDesc=Object.getOwnPropertyDescriptor,__getOwnPropNames=Object.getOwnPropertyNames,__hasOwnProp=Object.prototype.hasOwnProperty,__export=(e,n)=>{for(var r in n)__defProp(e,r,{get:n[r],enumerable:!0})},__copyProps=(e,n,r,t)=>{if(n&&"object"==typeof n||"function"==typeof n)for(let o of __getOwnPropNames(n))__hasOwnProp.call(e,o)||o===r||__defProp(e,o,{get:()=>n[o],enumerable:!(t=__getOwnPropDesc(n,o))||t.enumerable});return e},__toCommonJS=e=>__copyProps(__defProp({},"__esModule",{value:!0}),e),generate_markdown_exports={};__export(generate_markdown_exports,{generateMarkdown:()=>generateMarkdown}),module.exports=__toCommonJS(generate_markdown_exports);var import_cli_metadata=require("../metadata/cli-metadata.cjs"),import_utilities=require("../utilities.cjs");function generateMarkdown(e){const n=(0,import_cli_metadata.getCliMetadata)(e);let r="\x3c!-- Auto-generated by zod-args-parser --\x3e\n\n";return r+=`# ${n.name}\n\n`,n.description&&!n.descriptionMarkdown&&(r+=`${forceLineBreak(n.description)}\n`),n.descriptionMarkdown&&(r+=`${forceLineBreak(n.descriptionMarkdown)}\n`),n.example&&(r+=renderExamples(n.example)),n.options.length>0&&(r+="\n## Options:\n\n",r+=renderOptions(n.options,3)),n.arguments.length>0&&(r+="\n## Arguments:\n\n",r+=renderArguments(n.arguments,3)),n.subcommands.length>0&&(r+="\n## Subcommands:\n\n",r+=renderSubcommands(n.subcommands)),r=(0,import_utilities.stripAnsi)(r),r=(0,import_utilities.escapeHtmlTags)(r),r}function renderExamples(e){let n="\n**Example:**\n";return n+="\n",n+="```bash\n",n+=e,n+="\n```\n",n}function renderOptions(e=[],n){let r="";for(let t=0;t<e.length;t++){const o=e[t];if(o.hidden)continue;const a=[o.nameAsArg].concat(o.aliasesAsArgs).join(", "),i=o.placeholder&&` ${o.placeholder}`;r+=`${"#".repeat(n)} \`${a+i}\``,o.optional&&(r+=" _optional_"),r+="\n\n",o.description&&!o.descriptionMarkdown&&(r+=`${forceLineBreak(o.description)}\n`),o.descriptionMarkdown&&(r+=`${forceLineBreak(o.descriptionMarkdown)}\n`),void 0!==o.defaultValue&&(r+=`\n**default:** \`${o.defaultValueAsString}\`\n`),o.example&&(r+=renderExamples(o.example)),t<e.length-1&&(r+="\n")}return r}function renderArguments(e=[],n){let r="";for(let t=0;t<e.length;t++){const o=e[t];o.hidden||(r+=`${"#".repeat(n)} \`${o.name}\``,o.optional&&(r+=" _optional_"),r+="\n\n",o.description&&!o.descriptionMarkdown&&(r+=`${forceLineBreak(o.description)}\n`),o.descriptionMarkdown&&(r+=`${forceLineBreak(o.descriptionMarkdown)}\n`),void 0!==o.defaultValue&&(r+=`\n**default:** \`${o.defaultValueAsString}\`\n`),o.example&&(r+=renderExamples(o.example)),t<e.length-1&&(r+="\n"))}return r}function renderSubcommands(e){let n="";for(let r=0;r<e.length;r++){const t=e[r];if(t.hidden)continue;n+=`### ${[t.name].concat(t.aliases).join(", ")+(t.placeholder&&` ${t.placeholder}`)}\n\n`,t.description&&!t.descriptionMarkdown&&(n+=`${forceLineBreak(t.description)}\n`),t.descriptionMarkdown&&(n+=`${forceLineBreak(t.descriptionMarkdown)}\n`),t.example&&(n+=renderExamples(t.example)),t.options.length>0&&(n+="\n#### Options:\n\n",n+=renderOptions(t.options,4)),t.arguments.length>0&&(n+="\n#### Arguments:\n\n",n+=renderArguments(t.arguments,4)),r<e.length-1&&(n+="\n---\n\n")}return n}function forceLineBreak(e){return e.replace(/(\n+)/g," $1")}
|
|
2
|
+
//# sourceMappingURL=generate-markdown.cjs.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"names":["generate_markdown_exports","__export","generateMarkdown","module","exports","__toCommonJS","import_cli_metadata","require","import_utilities","cliDefinition","metadata","getCliMetadata","md","name","description","descriptionMarkdown","forceLineBreak","example","renderExamples","options","length","renderOptions","arguments","renderArguments","subcommands","renderSubcommands","stripAnsi","escapeHtmlTags","examples","outString","optionsMetadata","h","index","hidden","aliases","nameAsArg","concat","aliasesAsArgs","join","placeholder","repeat","optional","defaultValue","defaultValueAsString","argumentsMetadata","subcommandsMetadata","string","replace"],"sources":["../../../src/markdown/generate-markdown.ts"],"sourcesContent":["import { getCliMetadata } from \"../metadata/cli-metadata.ts\";\nimport { escapeHtmlTags, stripAnsi } from \"../utilities.ts\";\n\nimport type { Cli } from \"../types/definitions-types.ts\";\nimport type { ArgumentMetadata, OptionMetadata, SubcommandMetadata } from \"../types/metadata-types.ts\";\n\nexport function generateMarkdown(cliDefinition: Cli): string {\n const metadata = getCliMetadata(cliDefinition);\n\n let md = \"<!-- Auto-generated by zod-args-parser -->\\n\\n\";\n\n // Title\n md += `# ${metadata.name}\\n\\n`;\n\n // Description\n if (metadata.description && !metadata.descriptionMarkdown) {\n md += `${forceLineBreak(metadata.description)}\\n`;\n }\n\n // Description Markdown\n if (metadata.descriptionMarkdown) {\n md += `${forceLineBreak(metadata.descriptionMarkdown)}\\n`;\n }\n\n // Examples\n if (metadata.example) {\n md += renderExamples(metadata.example);\n }\n\n // Options\n if (metadata.options.length > 0) {\n md += \"\\n## Options:\\n\\n\";\n md += renderOptions(metadata.options, 3);\n }\n\n // Arguments\n if (metadata.arguments.length > 0) {\n md += \"\\n## Arguments:\\n\\n\";\n md += renderArguments(metadata.arguments, 3);\n }\n\n // Subcommands\n if (metadata.subcommands.length > 0) {\n md += \"\\n## Subcommands:\\n\\n\";\n md += renderSubcommands(metadata.subcommands);\n }\n\n md = stripAnsi(md);\n md = escapeHtmlTags(md);\n\n return md;\n}\n\nfunction renderExamples(examples: string) {\n let outString = \"\\n**Example:**\\n\";\n\n const lang = \"bash\";\n\n outString += \"\\n\";\n outString += \"```\" + lang + \"\\n\";\n outString += examples;\n outString += \"\\n```\\n\";\n\n return outString;\n}\n\nfunction renderOptions(optionsMetadata: OptionMetadata[] = [], h: number) {\n let outString = \"\";\n\n for (let index = 0; index < optionsMetadata.length; index++) {\n const metadata = optionsMetadata[index];\n if (metadata.hidden) continue;\n\n const aliases = [metadata.nameAsArg].concat(metadata.aliasesAsArgs).join(\", \");\n\n const placeholder = metadata.placeholder && ` ${metadata.placeholder}`;\n\n outString += `${\"#\".repeat(h)} \\`${aliases + placeholder}\\``;\n\n if (metadata.optional) {\n outString += \" _optional_\";\n }\n\n outString += \"\\n\\n\";\n\n if (metadata.description && !metadata.descriptionMarkdown) {\n outString += `${forceLineBreak(metadata.description)}\\n`;\n }\n\n if (metadata.descriptionMarkdown) {\n outString += `${forceLineBreak(metadata.descriptionMarkdown)}\\n`;\n }\n\n if (metadata.defaultValue !== undefined) {\n outString += `\\n**default:** \\`${metadata.defaultValueAsString}\\`\\n`;\n }\n\n if (metadata.example) {\n outString += renderExamples(metadata.example);\n }\n\n if (index < optionsMetadata.length - 1) {\n outString += \"\\n\";\n }\n }\n\n return outString;\n}\n\nfunction renderArguments(argumentsMetadata: ArgumentMetadata[] = [], h: number) {\n let outString = \"\";\n\n for (let index = 0; index < argumentsMetadata.length; index++) {\n const metadata = argumentsMetadata[index];\n if (metadata.hidden) continue;\n\n outString += `${\"#\".repeat(h)} \\`${metadata.name}\\``;\n\n if (metadata.optional) {\n outString += \" _optional_\";\n }\n\n outString += \"\\n\\n\";\n\n if (metadata.description && !metadata.descriptionMarkdown) {\n outString += `${forceLineBreak(metadata.description)}\\n`;\n }\n\n if (metadata.descriptionMarkdown) {\n outString += `${forceLineBreak(metadata.descriptionMarkdown)}\\n`;\n }\n\n if (metadata.defaultValue !== undefined) {\n outString += `\\n**default:** \\`${metadata.defaultValueAsString}\\`\\n`;\n }\n\n if (metadata.example) {\n outString += renderExamples(metadata.example);\n }\n\n if (index < argumentsMetadata.length - 1) {\n outString += \"\\n\";\n }\n }\n\n return outString;\n}\n\nfunction renderSubcommands(subcommandsMetadata: SubcommandMetadata[]) {\n let outString = \"\";\n\n for (let index = 0; index < subcommandsMetadata.length; index++) {\n const metadata = subcommandsMetadata[index];\n if (metadata.hidden) continue;\n\n const aliases = [metadata.name].concat(metadata.aliases).join(\", \");\n\n const placeholder = metadata.placeholder && ` ${metadata.placeholder}`;\n\n outString += `### ${aliases + placeholder}\\n\\n`;\n\n if (metadata.description && !metadata.descriptionMarkdown) {\n outString += `${forceLineBreak(metadata.description)}\\n`;\n }\n\n if (metadata.descriptionMarkdown) {\n outString += `${forceLineBreak(metadata.descriptionMarkdown)}\\n`;\n }\n\n if (metadata.example) {\n outString += renderExamples(metadata.example);\n }\n\n if (metadata.options.length > 0) {\n outString += \"\\n#### Options:\\n\\n\";\n outString += renderOptions(metadata.options, 4);\n }\n\n if (metadata.arguments.length > 0) {\n outString += \"\\n#### Arguments:\\n\\n\";\n outString += renderArguments(metadata.arguments, 4);\n }\n\n if (index < subcommandsMetadata.length - 1) {\n outString += \"\\n---\\n\\n\";\n }\n }\n\n return outString;\n}\n\n/** Inserts two trailing spaces before newline. In Markdown, a newline that ends with two spaces forces a line break. */\nfunction forceLineBreak(string: string): string {\n return string.replace(/(\\n+)/g, \" $1\");\n}\n"],"mappings":"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","ignoreList":[]}
|
|
@@ -0,0 +1,2 @@
|
|
|
1
|
+
"use strict";var __defProp=Object.defineProperty,__getOwnPropDesc=Object.getOwnPropertyDescriptor,__getOwnPropNames=Object.getOwnPropertyNames,__hasOwnProp=Object.prototype.hasOwnProperty,__export=(e,t)=>{for(var r in t)__defProp(e,r,{get:t[r],enumerable:!0})},__copyProps=(e,t,r,o)=>{if(t&&"object"==typeof t||"function"==typeof t)for(let a of __getOwnPropNames(t))__hasOwnProp.call(e,a)||a===r||__defProp(e,a,{get:()=>t[a],enumerable:!(o=__getOwnPropDesc(t,a))||o.enumerable});return e},__toCommonJS=e=>__copyProps(__defProp({},"__esModule",{value:!0}),e),arguments_metadata_exports={};__export(arguments_metadata_exports,{getArgumentsMetadata:()=>getArgumentsMetadata}),module.exports=__toCommonJS(arguments_metadata_exports);var import_utilities=require("../utilities.cjs");function getArgumentsMetadata(e){const t=[];for(const[r,o]of Object.entries(e)){const e=o.meta??{},{optional:a,defaultValue:n}=o._preparedType??(0,import_utilities.defaultValueAndIsOptional)(o.schema);t.push({name:e.name??r,description:e.description??"",descriptionMarkdown:e.descriptionMarkdown??"",defaultValue:n,defaultValueAsString:e.default??(0,import_utilities.stringifyValue)(n)??"",optional:e.optional??a,example:e.example??"",schema:o.schema,hidden:e.hidden??!1})}return t}
|
|
2
|
+
//# sourceMappingURL=arguments-metadata.cjs.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"names":["arguments_metadata_exports","__export","getArgumentsMetadata","module","exports","__toCommonJS","import_utilities","require","argumentsDefinition","outputMetadata","name","argument","Object","entries","meta","optional","defaultValue","_preparedType","defaultValueAndIsOptional","schema","push","description","descriptionMarkdown","defaultValueAsString","default","stringifyValue","example","hidden"],"sources":["../../../src/metadata/arguments-metadata.ts"],"sourcesContent":["import { defaultValueAndIsOptional, stringifyValue } from \"../utilities.ts\";\n\nimport type { Argument } from \"../types/definitions-types.ts\";\nimport type { ArgumentMetadata } from \"../types/metadata-types.ts\";\n\nexport function getArgumentsMetadata(argumentsDefinition: Record<string, Argument>): ArgumentMetadata[] {\n const outputMetadata: ArgumentMetadata[] = [];\n\n for (const [name, argument] of Object.entries(argumentsDefinition)) {\n const meta = argument.meta ?? {};\n\n const { optional, defaultValue } = argument._preparedType ?? defaultValueAndIsOptional(argument.schema);\n\n outputMetadata.push({\n name: meta.name ?? name,\n description: meta.description ?? \"\",\n descriptionMarkdown: meta.descriptionMarkdown ?? \"\",\n defaultValue,\n defaultValueAsString: meta.default ?? stringifyValue(defaultValue) ?? \"\",\n optional: meta.optional ?? optional,\n example: meta.example ?? \"\",\n schema: argument.schema,\n hidden: meta.hidden ?? false,\n });\n }\n\n return outputMetadata;\n}\n"],"mappings":"8iBAAAA,2BAAA,GAAAC,SAAAD,2BAAA,CAAAE,qBAAA,IAAAA,uBAAAC,OAAAC,QAAAC,aAAAL,4BAAA,IAAAM,iBAA0DC,QAAA,oBAKnD,SAASL,qBAAqBM,GACnC,MAAMC,EAAqC,GAE3C,UAAYC,EAAMC,KAAaC,OAAOC,QAAQL,GAAsB,CAClE,MAAMM,EAAOH,EAASG,MAAQ,CAAC,GAEzBC,SAAEA,EAAAC,aAAUA,GAAiBL,EAASM,gBAAA,EAAiBX,iBAAAY,2BAA0BP,EAASQ,QAEhGV,EAAeW,KAAK,CAClBV,KAAMI,EAAKJ,MAAQA,EACnBW,YAAaP,EAAKO,aAAe,GACjCC,oBAAqBR,EAAKQ,qBAAuB,GACjDN,eACAO,qBAAsBT,EAAKU,UAAA,EAAWlB,iBAAAmB,gBAAeT,IAAiB,GACtED,SAAUD,EAAKC,UAAYA,EAC3BW,QAASZ,EAAKY,SAAW,GACzBP,OAAQR,EAASQ,OACjBQ,OAAQb,EAAKa,SAAU,GAE3B,CAEA,OAAOlB,CACT","ignoreList":[]}
|
|
@@ -0,0 +1,2 @@
|
|
|
1
|
+
"use strict";var __defProp=Object.defineProperty,__getOwnPropDesc=Object.getOwnPropertyDescriptor,__getOwnPropNames=Object.getOwnPropertyNames,__hasOwnProp=Object.prototype.hasOwnProperty,__export=(t,e)=>{for(var a in e)__defProp(t,a,{get:e[a],enumerable:!0})},__copyProps=(t,e,a,o)=>{if(e&&"object"==typeof e||"function"==typeof e)for(let r of __getOwnPropNames(e))__hasOwnProp.call(t,r)||r===a||__defProp(t,r,{get:()=>e[r],enumerable:!(o=__getOwnPropDesc(e,r))||o.enumerable});return t},__toCommonJS=t=>__copyProps(__defProp({},"__esModule",{value:!0}),t),cli_metadata_exports={};__export(cli_metadata_exports,{getCliMetadata:()=>getCliMetadata}),module.exports=__toCommonJS(cli_metadata_exports);var import_arguments_metadata=require("./arguments-metadata.cjs"),import_options_metadata=require("./options-metadata.cjs"),import_subcommands_metadata=require("./subcommands-metadata.cjs");function getCliMetadata(t){const e=t.subcommands??[],a=t.meta??{};return{name:t.cliName,description:a.description??"",descriptionMarkdown:a.descriptionMarkdown??"",usage:a.usage??"",example:a.example??"",allowPositionals:t.allowPositionals??!1,options:t.options?(0,import_options_metadata.getOptionsMetadata)(t.options):[],arguments:t.arguments?(0,import_arguments_metadata.getArgumentsMetadata)(t.arguments):[],subcommands:e?(0,import_subcommands_metadata.getSubcommandsMetadata)(e):[]}}
|
|
2
|
+
//# sourceMappingURL=cli-metadata.cjs.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"names":["cli_metadata_exports","__export","getCliMetadata","module","exports","__toCommonJS","import_arguments_metadata","require","import_options_metadata","import_subcommands_metadata","cliDefinition","subcommands","meta","name","cliName","description","descriptionMarkdown","usage","example","allowPositionals","options","getOptionsMetadata","arguments","getArgumentsMetadata","getSubcommandsMetadata"],"sources":["../../../src/metadata/cli-metadata.ts"],"sourcesContent":["import { getArgumentsMetadata } from \"./arguments-metadata.ts\";\nimport { getOptionsMetadata } from \"./options-metadata.ts\";\nimport { getSubcommandsMetadata } from \"./subcommands-metadata.ts\";\n\nimport type { Cli } from \"../types/definitions-types.ts\";\nimport type { CliMetadata } from \"../types/metadata-types.ts\";\n\nexport function getCliMetadata(cliDefinition: Cli): CliMetadata {\n const subcommands = cliDefinition.subcommands ?? [];\n\n const meta = cliDefinition.meta ?? {};\n\n const outputMetadata: CliMetadata = {\n name: cliDefinition.cliName,\n description: meta.description ?? \"\",\n descriptionMarkdown: meta.descriptionMarkdown ?? \"\",\n usage: meta.usage ?? \"\",\n example: meta.example ?? \"\",\n allowPositionals: cliDefinition.allowPositionals ?? false,\n options: cliDefinition.options ? getOptionsMetadata(cliDefinition.options) : [],\n arguments: cliDefinition.arguments ? getArgumentsMetadata(cliDefinition.arguments) : [],\n subcommands: subcommands ? getSubcommandsMetadata(subcommands) : [],\n };\n\n return outputMetadata;\n}\n"],"mappings":"8iBAAAA,qBAAA,GAAAC,SAAAD,qBAAA,CAAAE,eAAA,IAAAA,iBAAAC,OAAAC,QAAAC,aAAAL,sBAAA,IAAAM,0BAAqCC,QAAA,4BACrCC,wBAAmCD,QAAA,0BACnCE,4BAAuCF,QAAA,8BAKhC,SAASL,eAAeQ,GAC7B,MAAMC,EAAcD,EAAcC,aAAe,GAE3CC,EAAOF,EAAcE,MAAQ,CAAC,EAcpC,MAZoC,CAClCC,KAAMH,EAAcI,QACpBC,YAAaH,EAAKG,aAAe,GACjCC,oBAAqBJ,EAAKI,qBAAuB,GACjDC,MAAOL,EAAKK,OAAS,GACrBC,QAASN,EAAKM,SAAW,GACzBC,iBAAkBT,EAAcS,mBAAoB,EACpDC,QAASV,EAAcU,SAAA,EAAUZ,wBAAAa,oBAAmBX,EAAcU,SAAW,GAC7EE,UAAWZ,EAAcY,WAAA,EAAYhB,0BAAAiB,sBAAqBb,EAAcY,WAAa,GACrFX,YAAaA,GAAA,EAAcF,4BAAAe,wBAAuBb,GAAe,GAIrE","ignoreList":[]}
|
|
@@ -0,0 +1,2 @@
|
|
|
1
|
+
"use strict";var __defProp=Object.defineProperty,__getOwnPropDesc=Object.getOwnPropertyDescriptor,__getOwnPropNames=Object.getOwnPropertyNames,__hasOwnProp=Object.prototype.hasOwnProperty,__export=(e,t)=>{for(var r in t)__defProp(e,r,{get:t[r],enumerable:!0})},__copyProps=(e,t,r,o)=>{if(t&&"object"==typeof t||"function"==typeof t)for(let a of __getOwnPropNames(t))__hasOwnProp.call(e,a)||a===r||__defProp(e,a,{get:()=>t[a],enumerable:!(o=__getOwnPropDesc(t,a))||o.enumerable});return e},__toCommonJS=e=>__copyProps(__defProp({},"__esModule",{value:!0}),e),options_metadata_exports={};__export(options_metadata_exports,{getOptionsMetadata:()=>getOptionsMetadata}),module.exports=__toCommonJS(options_metadata_exports);var import_parser_utilities=require("../parse/parser-utilities.cjs"),import_utilities=require("../utilities.cjs");function getOptionsMetadata(e){const t=[];if(!e)return t;for(const[r,o]of Object.entries(e)){const e=o.aliases??[],a=o.meta??{},{optional:i,defaultValue:p}=o._preparedType??(0,import_utilities.defaultValueAndIsOptional)(o.schema);t.push({name:r,nameAsArg:(0,import_parser_utilities.transformOptionToArgument)(r),aliases:e,aliasesAsArgs:e.map(e=>(0,import_parser_utilities.transformOptionToArgument)(e)),placeholder:a.placeholder??"",description:a.description??"",descriptionMarkdown:a.descriptionMarkdown??"",optional:a.optional??i,example:a.example??"",defaultValue:p,defaultValueAsString:a.default??(0,import_utilities.stringifyValue)(p)??"",schema:o.schema,hidden:a.hidden??!1})}return t}
|
|
2
|
+
//# sourceMappingURL=options-metadata.cjs.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"names":["options_metadata_exports","__export","getOptionsMetadata","module","exports","__toCommonJS","import_parser_utilities","require","import_utilities","optionsDefinition","outputMetadata","optionName","option","Object","entries","aliases","meta","optional","defaultValue","_preparedType","defaultValueAndIsOptional","schema","push","name","nameAsArg","transformOptionToArgument","aliasesAsArgs","map","alias","placeholder","description","descriptionMarkdown","example","defaultValueAsString","default","stringifyValue","hidden"],"sources":["../../../src/metadata/options-metadata.ts"],"sourcesContent":["import { transformOptionToArgument } from \"../parse/parser-utilities.ts\";\nimport { defaultValueAndIsOptional, stringifyValue } from \"../utilities.ts\";\n\nimport type { Option } from \"../types/definitions-types.ts\";\nimport type { OptionMetadata } from \"../types/metadata-types.ts\";\n\nexport function getOptionsMetadata(optionsDefinition: Record<string, Option>): OptionMetadata[] {\n const outputMetadata: OptionMetadata[] = [];\n\n if (!optionsDefinition) {\n return outputMetadata;\n }\n\n for (const [optionName, option] of Object.entries(optionsDefinition)) {\n const aliases = option.aliases ?? [];\n const meta = option.meta ?? {};\n\n const { optional, defaultValue } = option._preparedType ?? defaultValueAndIsOptional(option.schema);\n\n outputMetadata.push({\n name: optionName,\n nameAsArg: transformOptionToArgument(optionName),\n aliases,\n aliasesAsArgs: aliases.map(alias => transformOptionToArgument(alias)),\n placeholder: meta.placeholder ?? \"\",\n description: meta.description ?? \"\",\n descriptionMarkdown: meta.descriptionMarkdown ?? \"\",\n optional: meta.optional ?? optional,\n example: meta.example ?? \"\",\n defaultValue,\n defaultValueAsString: meta.default ?? stringifyValue(defaultValue) ?? \"\",\n schema: option.schema,\n hidden: meta.hidden ?? false,\n });\n }\n\n return outputMetadata;\n}\n"],"mappings":"8iBAAAA,yBAAA,GAAAC,SAAAD,yBAAA,CAAAE,mBAAA,IAAAA,qBAAAC,OAAAC,QAAAC,aAAAL,0BAAA,IAAAM,wBAA0CC,QAAA,iCAC1CC,iBAA0DD,QAAA,oBAKnD,SAASL,mBAAmBO,GACjC,MAAMC,EAAmC,GAEzC,IAAKD,EACH,OAAOC,EAGT,UAAYC,EAAYC,KAAWC,OAAOC,QAAQL,GAAoB,CACpE,MAAMM,EAAUH,EAAOG,SAAW,GAC5BC,EAAOJ,EAAOI,MAAQ,CAAC,GAEvBC,SAAEA,EAAAC,aAAUA,GAAiBN,EAAOO,gBAAA,EAAiBX,iBAAAY,2BAA0BR,EAAOS,QAE5FX,EAAeY,KAAK,CAClBC,KAAMZ,EACNa,WAAA,EAAWlB,wBAAAmB,2BAA0Bd,GACrCI,UACAW,cAAeX,EAAQY,IAAIC,IAAA,EAAStB,wBAAAmB,2BAA0BG,IAC9DC,YAAab,EAAKa,aAAe,GACjCC,YAAad,EAAKc,aAAe,GACjCC,oBAAqBf,EAAKe,qBAAuB,GACjDd,SAAUD,EAAKC,UAAYA,EAC3Be,QAAShB,EAAKgB,SAAW,GACzBd,eACAe,qBAAsBjB,EAAKkB,UAAA,EAAW1B,iBAAA2B,gBAAejB,IAAiB,GACtEG,OAAQT,EAAOS,OACfe,OAAQpB,EAAKoB,SAAU,GAE3B,CAEA,OAAO1B,CACT","ignoreList":[]}
|
|
@@ -0,0 +1,2 @@
|
|
|
1
|
+
"use strict";var __defProp=Object.defineProperty,__getOwnPropDesc=Object.getOwnPropertyDescriptor,__getOwnPropNames=Object.getOwnPropertyNames,__hasOwnProp=Object.prototype.hasOwnProperty,__export=(e,t)=>{for(var a in t)__defProp(e,a,{get:t[a],enumerable:!0})},__copyProps=(e,t,a,o)=>{if(t&&"object"==typeof t||"function"==typeof t)for(let r of __getOwnPropNames(t))__hasOwnProp.call(e,r)||r===a||__defProp(e,r,{get:()=>t[r],enumerable:!(o=__getOwnPropDesc(t,r))||o.enumerable});return e},__toCommonJS=e=>__copyProps(__defProp({},"__esModule",{value:!0}),e),subcommands_metadata_exports={};__export(subcommands_metadata_exports,{getSubcommandsMetadata:()=>getSubcommandsMetadata}),module.exports=__toCommonJS(subcommands_metadata_exports);var import_arguments_metadata=require("./arguments-metadata.cjs"),import_options_metadata=require("./options-metadata.cjs");function getSubcommandsMetadata(e){const t=[];if(!e||0===e.length)return t;for(const a of e){const e=a.options?(0,import_options_metadata.getOptionsMetadata)(a.options):[],o=a.arguments?(0,import_arguments_metadata.getArgumentsMetadata)(a.arguments):[],r=a.meta??{};t.push({name:a.name,aliases:a.aliases??[],description:r.description??"",descriptionMarkdown:r.descriptionMarkdown??"",placeholder:r.placeholder??"",usage:r.usage??"",example:r.example??"",allowPositionals:a.allowPositionals??!1,options:e,arguments:o,hidden:r.hidden??!1})}return t}
|
|
2
|
+
//# sourceMappingURL=subcommands-metadata.cjs.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"names":["subcommands_metadata_exports","__export","getSubcommandsMetadata","module","exports","__toCommonJS","import_arguments_metadata","require","import_options_metadata","commandDefinition","outputMetadata","length","subcommand","optionsMetadata","options","getOptionsMetadata","argumentsMetadata","arguments","getArgumentsMetadata","meta","push","name","aliases","description","descriptionMarkdown","placeholder","usage","example","allowPositionals","hidden"],"sources":["../../../src/metadata/subcommands-metadata.ts"],"sourcesContent":["import { getArgumentsMetadata } from \"./arguments-metadata.ts\";\nimport { getOptionsMetadata } from \"./options-metadata.ts\";\n\nimport type { Subcommand } from \"../types/definitions-types.ts\";\nimport type { SubcommandMetadata } from \"../types/metadata-types.ts\";\n\nexport function getSubcommandsMetadata(commandDefinition: readonly Subcommand[]): SubcommandMetadata[] {\n const outputMetadata: SubcommandMetadata[] = [];\n\n if (!commandDefinition || commandDefinition.length === 0) {\n return outputMetadata;\n }\n\n for (const subcommand of commandDefinition) {\n const optionsMetadata = subcommand.options ? getOptionsMetadata(subcommand.options) : [];\n const argumentsMetadata = subcommand.arguments ? getArgumentsMetadata(subcommand.arguments) : [];\n const meta = subcommand.meta ?? {};\n\n outputMetadata.push({\n name: subcommand.name,\n aliases: subcommand.aliases ?? [],\n description: meta.description ?? \"\",\n descriptionMarkdown: meta.descriptionMarkdown ?? \"\",\n placeholder: meta.placeholder ?? \"\",\n usage: meta.usage ?? \"\",\n example: meta.example ?? \"\",\n allowPositionals: subcommand.allowPositionals ?? false,\n options: optionsMetadata,\n arguments: argumentsMetadata,\n hidden: meta.hidden ?? false,\n });\n }\n\n return outputMetadata;\n}\n"],"mappings":"8iBAAAA,6BAAA,GAAAC,SAAAD,6BAAA,CAAAE,uBAAA,IAAAA,yBAAAC,OAAAC,QAAAC,aAAAL,8BAAA,IAAAM,0BAAqCC,QAAA,4BACrCC,wBAAmCD,QAAA,0BAK5B,SAASL,uBAAuBO,GACrC,MAAMC,EAAuC,GAE7C,IAAKD,GAAkD,IAA7BA,EAAkBE,OAC1C,OAAOD,EAGT,UAAWE,KAAcH,EAAmB,CAC1C,MAAMI,EAAkBD,EAAWE,SAAA,EAAUN,wBAAAO,oBAAmBH,EAAWE,SAAW,GAChFE,EAAoBJ,EAAWK,WAAA,EAAYX,0BAAAY,sBAAqBN,EAAWK,WAAa,GACxFE,EAAOP,EAAWO,MAAQ,CAAC,EAEjCT,EAAeU,KAAK,CAClBC,KAAMT,EAAWS,KACjBC,QAASV,EAAWU,SAAW,GAC/BC,YAAaJ,EAAKI,aAAe,GACjCC,oBAAqBL,EAAKK,qBAAuB,GACjDC,YAAaN,EAAKM,aAAe,GACjCC,MAAOP,EAAKO,OAAS,GACrBC,QAASR,EAAKQ,SAAW,GACzBC,iBAAkBhB,EAAWgB,mBAAoB,EACjDd,QAASD,EACTI,UAAWD,EACXa,OAAQV,EAAKU,SAAU,GAE3B,CAEA,OAAOnB,CACT","ignoreList":[]}
|
|
@@ -0,0 +1,2 @@
|
|
|
1
|
+
"use strict";var __defProp=Object.defineProperty,__getOwnPropDesc=Object.getOwnPropertyDescriptor,__getOwnPropNames=Object.getOwnPropertyNames,__hasOwnProp=Object.prototype.hasOwnProperty,__export=(e,o)=>{for(var t in o)__defProp(e,t,{get:o[t],enumerable:!0})},__copyProps=(e,o,t,r)=>{if(o&&"object"==typeof o||"function"==typeof o)for(let n of __getOwnPropNames(o))__hasOwnProp.call(e,n)||n===t||__defProp(e,n,{get:()=>o[n],enumerable:!(r=__getOwnPropDesc(o,n))||r.enumerable});return e},__toCommonJS=e=>__copyProps(__defProp({},"__esModule",{value:!0}),e),cli_context_builder_exports={};__export(cli_context_builder_exports,{buildCliContext:()=>buildCliContext}),module.exports=__toCommonJS(cli_context_builder_exports);var import_parser_utilities=require("../parser-utilities.cjs");function buildCliContext(e,o){const t=o.subcommands??[],r=new Set(t.flatMap(e=>[e.name,...e.aliases||[]]));e=(0,import_parser_utilities.decoupleFlags)(e);const n={subcommand:void 0},i=()=>(0,import_parser_utilities.findSubcommandDefinition)(n.subcommand,o);for(let o=0;o<e.length;o++){const t=e[o];if(0===o&&(n.subcommand=r.has(t)?t:void 0,n.subcommand))continue;const s=t.split("=").filter(Boolean),a=t.includes("="),p=s[0],u=s[1];if((0,import_parser_utilities.isOptionArgument)(p)){if((0,import_parser_utilities.isFlagArgument)(p)&&a)throw new Error(`flag arguments cannot be assigned using "=": "${t}"`);const r=i();if(!r)throw new Error(`unknown subcommand: "${n.subcommand}"`);if(!r.options){if(!n.subcommand)throw new Error(`options are not allowed here: "${p}"`);throw new Error(`subcommand "${n.subcommand}" does not accept options: "${p}"`)}const s=(0,import_parser_utilities.findOption)(p,r.options);if(!s)throw new Error(`unknown option: "${p}"`);const[l,m]=s;if(n.options&&l in n.options)throw new Error(`duplicated option: "${p}"`);if(!m._preparedType)throw new Error(`internal error: missing prepared type for option "${l}"`);const{schema:c,optional:d,defaultValue:f,coerceTo:_}=m._preparedType,g=e[o+1];let w=a?u:g;if("boolean"===_){a||(w="true");p.startsWith("--no-")&&["true","false"].includes(w.toLowerCase())&&(w="true"===w?"false":"true")}if(void 0===w)throw new Error(`expected a value for "${p}" but got nothing`);if(!a&&(0,import_parser_utilities.isOptionArgument)(w))throw new Error(`expected a value for "${p}" but got an argument "${g}"`);n.options??(n.options={}),n.options[l]={schema:c,optional:d,defaultValue:f,flag:p,stringValue:w,source:"terminal"},a||"boolean"===_||o++;continue}const l=i();if(l?.arguments){n.arguments??(n.arguments={});const e=Object.keys(n.arguments).length,o=Object.entries(l.arguments);if(e<o.length){const[r,i]=o[e];if(!i._preparedType)throw new Error(`internal error: missing prepared type for argument "${e}"`);const{schema:s,optional:a,defaultValue:p}=i._preparedType;n.arguments[r]={schema:s,optional:a,defaultValue:p,stringValue:t,source:"terminal"};continue}}if(!l?.allowPositionals){if(!n.subcommand)throw new Error(`unexpected argument "${t}": positionals arguments are not allowed here`);throw new Error(`unexpected argument "${t}": positionals arguments are not allowed for subcommand "${n.subcommand}"`)}n.positionals??(n.positionals=[]),n.positionals.push(t)}const s=i();if(!s)throw new Error(`unknown subcommand: "${n.subcommand}"`);if(s.options){n.options??(n.options={});for(const[e,o]of Object.entries(s.options)){if(e in n.options)continue;if(!o._preparedType)throw new Error(`internal error: missing prepared type for option "${e}"`);const{schema:t,optional:r,defaultValue:i}=o._preparedType;if(!r)throw new Error(`missing required option: ${(0,import_parser_utilities.transformOptionToArgument)(e)}`);void 0!==i&&(n.options[e]={schema:t,optional:r,defaultValue:i,source:"default"})}}if(s.arguments){n.arguments??(n.arguments={});const e=Object.keys(n.arguments).length,o=Object.entries(s.arguments),t=o.length;if(e<t)for(let r=e;r<t;r++){const[e,t]=o[r];if(!t._preparedType)throw new Error(`internal error: missing prepared type for the argument "${e}"`);const{schema:i,optional:s,defaultValue:a}=t._preparedType;if(!s)throw new Error(`The argument "${e}" is required`);void 0!==a&&(n.arguments[e]={schema:i,optional:s,defaultValue:a,source:"default"})}}return s.allowPositionals&&(n.positionals??(n.positionals=[])),n}
|
|
2
|
+
//# sourceMappingURL=cli-context-builder.cjs.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"names":["cli_context_builder_exports","__export","buildCliContext","module","exports","__toCommonJS","import_parser_utilities","require","argv","cliDefinition","subcommandArray","subcommands","allSubcommands","Set","flatMap","c","name","aliases","decoupleFlags","context","subcommand","getCommandDefinition","findSubcommandDefinition","index","length","argvItem","has","argumentAndValue","split","filter","Boolean","argumentWithEquals","includes","argument","argumentValue","isOptionArgument","isFlagArgument","Error","commandDefinition","options","nameOptionTuple","findOption","optionName","optionDefinition","_preparedType","schema","optional","defaultValue","coerceTo","nextArgument","optionValue","startsWith","toLowerCase","flag","stringValue","source","arguments","currentArgumentCount","Object","keys","argumentDefinitionEntries","entries","argumentDefinition","allowPositionals","positionals","push","transformOptionToArgument","argumentsDefinitionLength"],"sources":["../../../../src/parse/context/cli-context-builder.ts"],"sourcesContent":["import {\n decoupleFlags,\n findOption,\n findSubcommandDefinition,\n isFlagArgument,\n isOptionArgument,\n transformOptionToArgument,\n} from \"../parser-utilities.ts\";\n\nimport type { ContextWide } from \"../../types/context-types.ts\";\nimport type { Cli } from \"../../types/definitions-types.ts\";\n\n/**\n * Parse argv and create a cli context\n *\n * @throws {Error}\n */\nexport function buildCliContext(argv: string[], cliDefinition: Cli) {\n const subcommandArray = cliDefinition.subcommands ?? [];\n const allSubcommands = new Set<string>(subcommandArray.flatMap(c => [c.name, ...(c.aliases || [])]));\n\n // decouple flags E.g. `-rf` -> `-r, -f`\n argv = decoupleFlags(argv);\n\n const context: ContextWide = {\n subcommand: undefined,\n };\n\n /** Get the current subcommand definition or cli definition if subcommand name is `undefined` object */\n const getCommandDefinition = () => findSubcommandDefinition(context.subcommand, cliDefinition);\n\n for (let index = 0; index < argv.length; index++) {\n const argvItem = argv[index];\n\n // * Subcommand check\n if (index === 0) {\n context.subcommand = allSubcommands.has(argvItem) ? argvItem : undefined;\n\n // First argument is a subcommand. Skip to the next argument\n if (context.subcommand) continue;\n }\n\n // * Option check\n\n const argumentAndValue = argvItem.split(\"=\").filter(Boolean); // E.g --option=value -> [\"--option\", \"value\"]\n const argumentWithEquals = argvItem.includes(\"=\"); // E.g --option=value\n const argument = argumentAndValue[0];\n const argumentValue: string | undefined = argumentAndValue[1];\n\n if (isOptionArgument(argument)) {\n if (isFlagArgument(argument) && argumentWithEquals) {\n throw new Error(`flag arguments cannot be assigned using \"=\": \"${argvItem}\"`);\n }\n\n const commandDefinition = getCommandDefinition();\n if (!commandDefinition) {\n throw new Error(`unknown subcommand: \"${context.subcommand}\"`);\n }\n\n if (!commandDefinition.options) {\n if (!context.subcommand) {\n throw new Error(`options are not allowed here: \"${argument}\"`);\n }\n\n throw new Error(`subcommand \"${context.subcommand}\" does not accept options: \"${argument}\"`);\n }\n\n const nameOptionTuple = findOption(argument, commandDefinition.options);\n if (!nameOptionTuple) {\n throw new Error(`unknown option: \"${argument}\"`);\n }\n\n const [optionName, optionDefinition] = nameOptionTuple;\n\n if (context.options && optionName in context.options) {\n throw new Error(`duplicated option: \"${argument}\"`);\n }\n\n if (!optionDefinition._preparedType) {\n throw new Error(`internal error: missing prepared type for option \"${optionName}\"`);\n }\n\n const { schema, optional, defaultValue, coerceTo } = optionDefinition._preparedType;\n\n const nextArgument = argv[index + 1];\n\n let optionValue: string | boolean = argumentWithEquals ? argumentValue : nextArgument;\n\n // infer value for boolean options\n if (coerceTo === \"boolean\") {\n if (!argumentWithEquals) {\n optionValue = \"true\";\n }\n\n const isNegated = argument.startsWith(\"--no-\");\n\n if (isNegated && [\"true\", \"false\"].includes(optionValue.toLowerCase())) {\n optionValue = optionValue === \"true\" ? \"false\" : \"true\";\n }\n }\n\n if (optionValue === undefined) {\n throw new Error(`expected a value for \"${argument}\" but got nothing`);\n }\n\n if (!argumentWithEquals && isOptionArgument(optionValue)) {\n throw new Error(`expected a value for \"${argument}\" but got an argument \"${nextArgument}\"`);\n }\n\n context.options ??= {};\n context.options[optionName] = {\n schema,\n optional,\n defaultValue,\n flag: argument,\n stringValue: optionValue,\n source: \"terminal\",\n };\n\n // Skip to the next argument if it is the current option's value.\n if (!argumentWithEquals && coerceTo !== \"boolean\") {\n index++;\n }\n\n continue;\n }\n\n const commandDefinition = getCommandDefinition();\n\n // * Arguments check\n if (commandDefinition?.arguments) {\n context.arguments ??= {};\n\n const currentArgumentCount = Object.keys(context.arguments).length;\n const argumentDefinitionEntries = Object.entries(commandDefinition.arguments);\n\n // The current argument is a typed argument and not a positional\n if (currentArgumentCount < argumentDefinitionEntries.length) {\n const [name, argumentDefinition] = argumentDefinitionEntries[currentArgumentCount];\n\n if (!argumentDefinition._preparedType) {\n throw new Error(`internal error: missing prepared type for argument \"${currentArgumentCount}\"`);\n }\n\n const { schema, optional, defaultValue } = argumentDefinition._preparedType;\n\n context.arguments[name] = { schema, optional, defaultValue, stringValue: argvItem, source: \"terminal\" };\n continue;\n }\n }\n\n // The current argument is a positional and not a typed argument (when `allowPositionals` is enabled)\n if (commandDefinition?.allowPositionals) {\n context.positionals ??= [];\n context.positionals.push(argvItem);\n continue;\n }\n\n if (!context.subcommand) {\n throw new Error(`unexpected argument \"${argvItem}\": positionals arguments are not allowed here`);\n }\n\n throw new Error(\n `unexpected argument \"${argvItem}\": positionals arguments are not allowed for subcommand \"${context.subcommand}\"`,\n );\n }\n\n const commandDefinition = getCommandDefinition();\n if (!commandDefinition) {\n throw new Error(`unknown subcommand: \"${context.subcommand}\"`);\n }\n\n // Options\n if (commandDefinition.options) {\n context.options ??= {};\n\n for (const [name, optionDefinition] of Object.entries(commandDefinition.options)) {\n // option already added to the context (found during argument parsing)\n if (name in context.options) continue;\n\n if (!optionDefinition._preparedType) {\n throw new Error(`internal error: missing prepared type for option \"${name}\"`);\n }\n\n const { schema, optional, defaultValue } = optionDefinition._preparedType;\n\n if (optional) {\n // optional without default value\n if (defaultValue === undefined) {\n continue;\n }\n\n // optional with default value\n context.options[name] = { schema, optional, defaultValue, source: \"default\" };\n continue;\n }\n\n // required option\n throw new Error(`missing required option: ${transformOptionToArgument(name)}`);\n }\n }\n\n // Arguments\n if (commandDefinition.arguments) {\n context.arguments ??= {};\n\n const currentArgumentCount = Object.keys(context.arguments).length;\n\n const argumentDefinitionEntries = Object.entries(commandDefinition.arguments);\n const argumentsDefinitionLength = argumentDefinitionEntries.length;\n\n // missing arguments\n if (currentArgumentCount < argumentsDefinitionLength) {\n for (let index = currentArgumentCount; index < argumentsDefinitionLength; index++) {\n const [name, argumentDefinition] = argumentDefinitionEntries[index];\n\n if (!argumentDefinition._preparedType) {\n throw new Error(`internal error: missing prepared type for the argument \"${name}\"`);\n }\n\n const { schema, optional, defaultValue } = argumentDefinition._preparedType;\n\n if (optional) {\n // optional argument without default value\n if (defaultValue === undefined) {\n continue;\n }\n\n // optional argument with default value\n context.arguments[name] = { schema, optional, defaultValue, source: \"default\" };\n continue;\n }\n\n // required argument\n throw new Error(`The argument \"${name}\" is required`);\n }\n }\n }\n\n // make sure `positionals` is defined when `allowPositionals` is enabled\n if (commandDefinition.allowPositionals) {\n context.positionals ??= [];\n }\n\n return context;\n}\n"],"mappings":"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","ignoreList":[]}
|
|
@@ -0,0 +1,2 @@
|
|
|
1
|
+
"use strict";var __defProp=Object.defineProperty,__getOwnPropDesc=Object.getOwnPropertyDescriptor,__getOwnPropNames=Object.getOwnPropertyNames,__hasOwnProp=Object.prototype.hasOwnProperty,__export=(e,o)=>{for(var t in o)__defProp(e,t,{get:o[t],enumerable:!0})},__copyProps=(e,o,t,r)=>{if(o&&"object"==typeof o||"function"==typeof o)for(let n of __getOwnPropNames(o))__hasOwnProp.call(e,n)||n===t||__defProp(e,n,{get:()=>o[n],enumerable:!(r=__getOwnPropDesc(o,n))||r.enumerable});return e},__toCommonJS=e=>__copyProps(__defProp({},"__esModule",{value:!0}),e),object_context_builder_exports={};function buildObjectContext(e,o){const t={subcommand:"cliName"in o?void 0:o.name};return o.options&&buildForOptionsOrArguments(o.options,t,e.options,"options"),o.arguments&&buildForOptionsOrArguments(o.arguments,t,e.arguments,"arguments"),o.allowPositionals&&(t.positionals??(t.positionals=e.positionals)),t}function buildForOptionsOrArguments(e,o,t,r){const n=Object.entries(e);for(const[e,s]of n){if(!s._preparedType)throw new Error(`internal error: missing prepared type for ${r.slice(0,-1)} "${e}"`);const{schema:n,optional:i,defaultValue:p}=s._preparedType;if(t&&e in t){const s=t[e];o[r]??(o[r]={}),o[r][e]=void 0===s?{schema:n,optional:i,defaultValue:p,source:"default"}:{schema:n,optional:i,defaultValue:p,passedValue:s,source:"programmatic"};continue}if(!i)throw new Error(`the ${r.slice(0,-1)} "${e}" is required`);o[r]??(o[r]={}),o[r][e]={schema:n,optional:i,defaultValue:p,source:"default"}}}__export(object_context_builder_exports,{buildObjectContext:()=>buildObjectContext}),module.exports=__toCommonJS(object_context_builder_exports);
|
|
2
|
+
//# sourceMappingURL=object-context-builder.cjs.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"names":["object_context_builder_exports","buildObjectContext","inputValues","commandDefinition","context","subcommand","name","options","buildForOptionsOrArguments","arguments","allowPositionals","positionals","definitionRecord","inputRecord","type","definitionEntries","Object","entries","definition","_preparedType","Error","slice","schema","optional","defaultValue","passedValue","source","__export","module","exports","__toCommonJS"],"sources":["../../../../src/parse/context/object-context-builder.ts"],"sourcesContent":["import type { ContextWide } from \"../../types/context-types.ts\";\nimport type { Argument, Cli, Option, Subcommand } from \"../../types/definitions-types.ts\";\nimport type { InputTypeWide } from \"../../types/io-types.ts\";\n\n/** @throws {Error} */\nexport function buildObjectContext(inputValues: InputTypeWide, commandDefinition: Subcommand | Cli) {\n const context: ContextWide = {\n subcommand: \"cliName\" in commandDefinition ? undefined : commandDefinition.name,\n };\n\n if (commandDefinition.options) {\n buildForOptionsOrArguments(commandDefinition.options, context, inputValues.options, \"options\");\n }\n\n if (commandDefinition.arguments) {\n buildForOptionsOrArguments(commandDefinition.arguments, context, inputValues.arguments, \"arguments\");\n }\n\n if (commandDefinition.allowPositionals) {\n context.positionals ??= inputValues.positionals;\n }\n\n return context;\n}\n\nfunction buildForOptionsOrArguments(\n definitionRecord: Record<string, Option> | Record<string, Argument>,\n context: ContextWide,\n inputRecord: Record<string, unknown> | undefined,\n type: \"options\" | \"arguments\",\n) {\n const definitionEntries = Object.entries(definitionRecord) as [string, Option][] | [string, Argument][];\n\n for (const [name, definition] of definitionEntries) {\n if (!definition._preparedType) {\n throw new Error(`internal error: missing prepared type for ${type.slice(0, -1)} \"${name}\"`);\n }\n\n const { schema, optional, defaultValue } = definition._preparedType;\n\n // Case the value is passed\n if (inputRecord && name in inputRecord) {\n const passedValue = inputRecord[name];\n\n context[type] ??= {};\n context[type][name] =\n passedValue === undefined\n ? { schema, optional, defaultValue, source: \"default\" }\n : { schema, optional, defaultValue, passedValue, source: \"programmatic\" };\n\n continue;\n }\n\n // case the value is not passed\n if (!optional) {\n throw new Error(`the ${type.slice(0, -1)} \"${name}\" is required`);\n }\n\n // case the value is optional\n context[type] ??= {};\n context[type][name] = { schema, optional, defaultValue, source: \"default\" };\n }\n}\n"],"mappings":"8iBAAAA,+BAAA,GAKO,SAASC,mBAAmBC,EAA4BC,GAC7D,MAAMC,EAAuB,CAC3BC,WAAY,YAAaF,OAAoB,EAAYA,EAAkBG,MAe7E,OAZIH,EAAkBI,SACpBC,2BAA2BL,EAAkBI,QAASH,EAASF,EAAYK,QAAS,WAGlFJ,EAAkBM,WACpBD,2BAA2BL,EAAkBM,UAAWL,EAASF,EAAYO,UAAW,aAGtFN,EAAkBO,mBACpBN,EAAQO,cAARP,EAAQO,YAAgBT,EAAYS,cAG/BP,CACT,CAEA,SAASI,2BACPI,EACAR,EACAS,EACAC,GAEA,MAAMC,EAAoBC,OAAOC,QAAQL,GAEzC,UAAYN,EAAMY,KAAeH,EAAmB,CAClD,IAAKG,EAAWC,cACd,MAAM,IAAIC,MAAM,6CAA6CN,EAAKO,MAAM,GAAG,OAAQf,MAGrF,MAAMgB,OAAEA,EAAAC,SAAQA,EAAAC,aAAUA,GAAiBN,EAAWC,cAGtD,GAAIN,GAAeP,KAAQO,EAAa,CACtC,MAAMY,EAAcZ,EAAYP,GAEhCF,EAAAU,KAAAV,EAAAU,GAAkB,CAAC,GACnBV,EAAQU,GAAMR,QACI,IAAhBmB,EACI,CAAEH,SAAQC,WAAUC,eAAcE,OAAQ,WAC1C,CAAEJ,SAAQC,WAAUC,eAAcC,cAAaC,OAAQ,gBAE7D,QACF,CAGA,IAAKH,EACH,MAAM,IAAIH,MAAM,OAAON,EAAKO,MAAM,GAAG,OAAQf,kBAI/CF,EAAAU,KAAAV,EAAAU,GAAkB,CAAC,GACnBV,EAAQU,GAAMR,GAAQ,CAAEgB,SAAQC,WAAUC,eAAcE,OAAQ,UAClE,CACF,CA9DAC,SAAA3B,+BAAA,CAAAC,mBAAA,IAAAA,qBAAA2B,OAAAC,QAAAC,aAAA9B","ignoreList":[]}
|
|
@@ -0,0 +1,2 @@
|
|
|
1
|
+
"use strict";var __defProp=Object.defineProperty,__getOwnPropDesc=Object.getOwnPropertyDescriptor,__getOwnPropNames=Object.getOwnPropertyNames,__hasOwnProp=Object.prototype.hasOwnProperty,__export=(e,t)=>{for(var n in t)__defProp(e,n,{get:t[n],enumerable:!0})},__copyProps=(e,t,n,o)=>{if(t&&"object"==typeof t||"function"==typeof t)for(let r of __getOwnPropNames(t))__hasOwnProp.call(e,r)||r===n||__defProp(e,r,{get:()=>t[r],enumerable:!(o=__getOwnPropDesc(t,r))||o.enumerable});return e},__toCommonJS=e=>__copyProps(__defProp({},"__esModule",{value:!0}),e),parser_utilities_exports={};function findSubcommandDefinition(e,t){return void 0===e?t:t.subcommands?t.subcommands.find(t=>t.name===e||e&&t.aliases&&t.aliases.includes(e)):void 0}function findOption(e,t){const n=optionArgumentToVariableNames(e),o=e.startsWith("--no-");return Object.entries(t).find(([e,t])=>{if(n.has(e))return!0;const r=t._preparedType&&"boolean"===t._preparedType.coerceTo;return!!(o&&r&&n.has(negateOption(e)))||!!t.aliases&&(!!t.aliases.some(e=>n.has(e))||!!(o&&r&&t.aliases.map(e=>negateOption(e)).some(e=>n.has(e))))})}function decoupleFlags(e){const t=/^-[a-z0-9]{2,}$/i,n=[];for(const o of e){if(!t.test(o)){n.push(o);continue}const e=o.slice(1).split("").map(e=>"-"+e);n.push(...e)}return n}function optionArgumentToVariableNames(e){if(!e.startsWith("-"))throw new Error(`invalid option name: ${e}`);e=(e=e.startsWith("--")?e.slice(2):e.slice(1)).toLowerCase();const t=new Set,n=e.replace(/-(.)/g,e=>e[1].toUpperCase());t.add(n),t.add(n.replace(/^(.)/,e=>e.toUpperCase()));const o=e.replace(/-(.)/g,e=>"_"+e[1]);return t.add(o),t.add(o.toUpperCase()),t}function isFlagArgument(e){return/^-[A-Za-z]$/.test(e)}function isLongArgument(e){return/^--[A-Za-z-]+[A-Za-z0-9]$/.test(e)}function isOptionArgument(e){return"string"==typeof e&&(isFlagArgument(e)||isLongArgument(e))}function negateOption(e){return"no"+e.replace(/^[a-z]/,e=>e.toUpperCase())}function transformOptionToArgument(e){return 1===e.length?`-${e.toLowerCase()}`:/^[a-z_]+$/.test(e)||/^[A-Z_]+$/.test(e)?`--${(e=e.replace(/_/g,"-")).toLowerCase()}`:`--${(e=e.replace(/[A-Z]/g,(e,t)=>t>0?"-"+e:e)).toLowerCase()}`}__export(parser_utilities_exports,{decoupleFlags:()=>decoupleFlags,findOption:()=>findOption,findSubcommandDefinition:()=>findSubcommandDefinition,isFlagArgument:()=>isFlagArgument,isOptionArgument:()=>isOptionArgument,negateOption:()=>negateOption,optionArgumentToVariableNames:()=>optionArgumentToVariableNames,transformOptionToArgument:()=>transformOptionToArgument}),module.exports=__toCommonJS(parser_utilities_exports);
|
|
2
|
+
//# sourceMappingURL=parser-utilities.cjs.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"names":["parser_utilities_exports","findSubcommandDefinition","subcommandName","cliDefinition","subcommands","find","c","name","aliases","includes","findOption","optionArgument","options","validVariableNames","optionArgumentToVariableNames","isNegated","startsWith","Object","entries","optionName","option","has","isBool","_preparedType","coerceTo","negateOption","some","a","map","alias","decoupleFlags","arguments_","flagsRe","result","argument","test","push","decoupledArray","slice","split","Error","toLowerCase","results","Set","camelCase","replace","m","toUpperCase","add","snake_case","g","isFlagArgument","isLongArgument","isOptionArgument","transformOptionToArgument","length","match","index","__export","module","exports","__toCommonJS"],"sources":["../../../src/parse/parser-utilities.ts"],"sourcesContent":["import type { Cli, Option, Subcommand } from \"../types/definitions-types.ts\";\n\n/**\n * Retrieves a subcommand object from an array of subcommands by matching the provided subcommand name against the\n * subcommand's name or its aliases.\n *\n * @param subcommandName - The name or alias of the subcommand to search for.\n * @param subcommandArr - An array of `Subcommand` objects to search within.\n * @returns The matching `Subcommand` object if found; otherwise, `undefined`.\n */\nexport function findSubcommandDefinition(\n subcommandName: string | undefined,\n cliDefinition: Cli,\n): Subcommand | Cli | undefined {\n if (subcommandName === undefined) {\n return cliDefinition;\n }\n\n if (!cliDefinition.subcommands) {\n return;\n }\n\n return cliDefinition.subcommands.find(c => {\n // match for undefined too\n if (c.name === subcommandName) {\n return true;\n }\n\n // match for aliases\n return subcommandName && c.aliases && c.aliases.includes(subcommandName);\n });\n}\n\n/**\n * Finds and returns an `Option` object from the provided list that matches the given argument string.\n *\n * The function supports matching by option name, aliases, and their negated forms (e.g., `--no-` prefix).\n *\n * @param optionArgument - The argument string to match (e.g., `--foo`, `--no-bar`, `-f`).\n * @param options - An array of `Option` objects to search through.\n * @returns The matching `Option` object if found; otherwise, `undefined`.\n */\nexport function findOption(optionArgument: string, options: Record<string, Option>): [string, Option] | undefined {\n const validVariableNames = optionArgumentToVariableNames(optionArgument);\n const isNegated = optionArgument.startsWith(\"--no-\");\n\n const option = Object.entries(options).find(([optionName, option]) => {\n if (validVariableNames.has(optionName)) {\n return true;\n }\n\n const isBool = option._preparedType && option._preparedType.coerceTo === \"boolean\";\n\n if (isNegated && isBool && validVariableNames.has(negateOption(optionName))) {\n return true;\n }\n\n if (!option.aliases) {\n return false;\n }\n\n if (option.aliases.some(a => validVariableNames.has(a))) {\n return true;\n }\n\n if (isNegated && isBool && option.aliases.map(alias => negateOption(alias)).some(a => validVariableNames.has(a))) {\n return true;\n }\n\n return false;\n });\n\n return option;\n}\n\n/** - Decouple flags E.g. `-rf` -> `-r, -f` */\nexport function decoupleFlags(arguments_: string[]): string[] {\n const flagsRe = /^-[a-z0-9]{2,}$/i;\n\n const result = [];\n for (const argument of arguments_) {\n const isCoupled = flagsRe.test(argument);\n\n if (!isCoupled) {\n result.push(argument);\n continue;\n }\n\n const decoupledArray = argument\n .slice(1)\n .split(\"\")\n .map(c => \"-\" + c);\n\n result.push(...decoupledArray);\n }\n\n return result;\n}\n\n/**\n * Transforms an option name to a set of variants: `camelCase`, `PascalCase`, `snake_case`, `SCREAMING_SNAKE_CASE`.\n *\n * **Example** for `--input-dir`\n *\n * - CamelCase: `inputDir`\n * - PascalCase: `InputDir`\n * - Snake_case: `input_dir`\n * - SCREAMING_SNAKE_CASE: `INPUT_DIR`\n *\n * @param name - Should start with `'--'` or `'-'`\n */\nexport function optionArgumentToVariableNames(name: string): Set<string> {\n if (!name.startsWith(\"-\")) {\n throw new Error(`invalid option name: ${name}`);\n }\n\n name = name.startsWith(\"--\") ? name.slice(2) : name.slice(1); // remove prefix\n name = name.toLowerCase(); // lowercase\n\n const results = new Set<string>();\n\n // camelCase\n const camelCase = name.replace(/-(.)/g, m => m[1].toUpperCase());\n results.add(camelCase);\n\n // PascalCase (UpperCamelCase)\n results.add(camelCase.replace(/^(.)/, m => m.toUpperCase()));\n\n // snake_case\n const snake_case = name.replace(/-(.)/g, g => \"_\" + g[1]);\n results.add(snake_case);\n\n // SCREAMING_SNAKE_CASE\n results.add(snake_case.toUpperCase());\n\n return results;\n}\n\n/** - Check if an arg string is a short arg. E.g. `-i` -> `true` */\nexport function isFlagArgument(name: string): boolean {\n return /^-[A-Za-z]$/.test(name);\n}\n\n/** - Check if an arg string is a long arg. E.g. `--input-dir` -> `true` */\nfunction isLongArgument(name: string): boolean {\n return /^--[A-Za-z-]+[A-Za-z0-9]$/.test(name);\n}\n\n/** - Check if an arg string is an options arg. E.g. `--input-dir` -> `true` , `-i` -> `true` */\nexport function isOptionArgument(name: string | boolean): boolean {\n if (typeof name !== \"string\") {\n return false;\n }\n\n return isFlagArgument(name) || isLongArgument(name);\n}\n\n/**\n * Transform option name to no name.\n *\n * - `verbose` -> `noVerbose`\n * - `v` -> `noV`\n */\nexport function negateOption(name: string): string {\n return \"no\" + name.replace(/^[a-z]/, g => g.toUpperCase());\n}\n\n/** - Reverse of `transformArg`. E.g. `InputDir` -> `--input-dir` , `i` -> `-i` */\nexport function transformOptionToArgument(name: string): string {\n // single letter option name\n if (name.length === 1) {\n return `-${name.toLowerCase()}`;\n }\n\n // snake_case, SCREAMING_SNAKE_CASE\n if (/^[a-z_]+$/.test(name) || /^[A-Z_]+$/.test(name)) {\n name = name.replace(/_/g, \"-\");\n return `--${name.toLowerCase()}`;\n }\n\n // camelCase, PascalCase\n\n // add \"-\" before camel case letters except for the first letter\n name = name.replace(/[A-Z]/g, (match, index: number) => (index > 0 ? \"-\" + match : match));\n\n return `--${name.toLowerCase()}`;\n}\n"],"mappings":"8iBAAAA,yBAAA,GAUO,SAASC,yBACdC,EACAC,GAEA,YAAuB,IAAnBD,EACKC,EAGJA,EAAcC,YAIZD,EAAcC,YAAYC,KAAKC,GAEhCA,EAAEC,OAASL,GAKRA,GAAkBI,EAAEE,SAAWF,EAAEE,QAAQC,SAASP,SAX3D,CAaF,CAWO,SAASQ,WAAWC,EAAwBC,GACjD,MAAMC,EAAqBC,8BAA8BH,GACnDI,EAAYJ,EAAeK,WAAW,SA4B5C,OA1BeC,OAAOC,QAAQN,GAASP,KAAK,EAAEc,EAAYC,MACxD,GAAIP,EAAmBQ,IAAIF,GACzB,OAAO,EAGT,MAAMG,EAASF,EAAOG,eAAmD,YAAlCH,EAAOG,cAAcC,SAE5D,SAAIT,GAAaO,GAAUT,EAAmBQ,IAAII,aAAaN,QAI1DC,EAAOZ,YAIRY,EAAOZ,QAAQkB,KAAKC,GAAKd,EAAmBQ,IAAIM,QAIhDZ,GAAaO,GAAUF,EAAOZ,QAAQoB,IAAIC,GAASJ,aAAaI,IAAQH,KAAKC,GAAKd,EAAmBQ,IAAIM,OAQjH,CAGO,SAASG,cAAcC,GAC5B,MAAMC,EAAU,mBAEVC,EAAS,GACf,UAAWC,KAAYH,EAAY,CAGjC,IAFkBC,EAAQG,KAAKD,GAEf,CACdD,EAAOG,KAAKF,GACZ,QACF,CAEA,MAAMG,EAAiBH,EACpBI,MAAM,GACNC,MAAM,IACNX,IAAItB,GAAK,IAAMA,GAElB2B,EAAOG,QAAQC,EACjB,CAEA,OAAOJ,CACT,CAcO,SAASnB,8BAA8BP,GAC5C,IAAKA,EAAKS,WAAW,KACnB,MAAM,IAAIwB,MAAM,wBAAwBjC,KAI1CA,GADAA,EAAOA,EAAKS,WAAW,MAAQT,EAAK+B,MAAM,GAAK/B,EAAK+B,MAAM,IAC9CG,cAEZ,MAAMC,EAAU,IAAIC,IAGdC,EAAYrC,EAAKsC,QAAQ,QAASC,GAAKA,EAAE,GAAGC,eAClDL,EAAQM,IAAIJ,GAGZF,EAAQM,IAAIJ,EAAUC,QAAQ,OAAQC,GAAKA,EAAEC,gBAG7C,MAAME,EAAa1C,EAAKsC,QAAQ,QAASK,GAAK,IAAMA,EAAE,IAMtD,OALAR,EAAQM,IAAIC,GAGZP,EAAQM,IAAIC,EAAWF,eAEhBL,CACT,CAGO,SAASS,eAAe5C,GAC7B,MAAO,cAAc4B,KAAK5B,EAC5B,CAGA,SAAS6C,eAAe7C,GACtB,MAAO,4BAA4B4B,KAAK5B,EAC1C,CAGO,SAAS8C,iBAAiB9C,GAC/B,MAAoB,iBAATA,IAIJ4C,eAAe5C,IAAS6C,eAAe7C,GAChD,CAQO,SAASkB,aAAalB,GAC3B,MAAO,KAAOA,EAAKsC,QAAQ,SAAUK,GAAKA,EAAEH,cAC9C,CAGO,SAASO,0BAA0B/C,GAExC,OAAoB,IAAhBA,EAAKgD,OACA,IAAIhD,EAAKkC,gBAId,YAAYN,KAAK5B,IAAS,YAAY4B,KAAK5B,GAEtC,MADPA,EAAOA,EAAKsC,QAAQ,KAAM,MACTJ,gBAQZ,MAFPlC,EAAOA,EAAKsC,QAAQ,SAAU,CAACW,EAAOC,IAAmBA,EAAQ,EAAI,IAAMD,EAAQA,IAElEf,eACnB,CA1LAiB,SAAA1D,yBAAA,CAAA8B,cAAA,IAAAA,cAAApB,WAAA,IAAAA,WAAAT,yBAAA,IAAAA,yBAAAkD,eAAA,IAAAA,eAAAE,iBAAA,IAAAA,iBAAA5B,aAAA,IAAAA,aAAAX,8BAAA,IAAAA,8BAAAwC,0BAAA,IAAAA,4BAAAK,OAAAC,QAAAC,aAAA7D","ignoreList":[]}
|
|
@@ -0,0 +1,2 @@
|
|
|
1
|
+
"use strict";var __defProp=Object.defineProperty,__getOwnPropDesc=Object.getOwnPropertyDescriptor,__getOwnPropNames=Object.getOwnPropertyNames,__hasOwnProp=Object.prototype.hasOwnProperty,__export=(e,r)=>{for(var t in r)__defProp(e,t,{get:r[t],enumerable:!0})},__copyProps=(e,r,t,o)=>{if(r&&"object"==typeof r||"function"==typeof r)for(let i of __getOwnPropNames(r))__hasOwnProp.call(e,i)||i===t||__defProp(e,i,{get:()=>r[i],enumerable:!(o=__getOwnPropDesc(r,i))||o.enumerable});return e},__toCommonJS=e=>__copyProps(__defProp({},"__esModule",{value:!0}),e),safe_parse_exports={};__export(safe_parse_exports,{safeParse:()=>safeParse,safeParseAsync:()=>safeParseAsync}),module.exports=__toCommonJS(safe_parse_exports);var import_validate_cli_definition=require("../definitions/validate-cli-definition.cjs"),import_utilities=require("../utilities.cjs"),import_cli_context_builder=require("./context/cli-context-builder.cjs"),import_parser_utilities=require("./parser-utilities.cjs"),import_validate_context=require("./validation/validate-context.cjs");function safeParse(e,r){const t=safeParseCore(e,r);if(t.error)return{error:t.error};const{validateResult:o,subcommandObject:i}=t;if(i._onExecute)for(const e of i._onExecute)e(o);return{error:void 0,value:o}}async function safeParseAsync(e,r){const t=safeParseCore(e,r);if(t.error)return{error:t.error};const{validateResult:o,subcommandObject:i}=t;if(i._onExecute)for(const e of i._onExecute)await e(o);return{error:void 0,value:o}}function safeParseCore(e,r){const t="string"==typeof e?(0,import_utilities.parseArgv)(e):e;try{(0,import_validate_cli_definition.validateCliDefinition)(r)}catch(e){return{error:e}}let o;try{o=(0,import_cli_context_builder.buildCliContext)(t,r)}catch(e){return{error:e}}const i=(0,import_parser_utilities.findSubcommandDefinition)(o.subcommand,r);if(!i){return{error:new Error(`Subcommand "${o.subcommand}" does not exist`)}}let n;try{n=(0,import_validate_context.validate)(o,i)}catch(e){return{error:e}}return{error:void 0,validateResult:n,subcommandObject:i}}
|
|
2
|
+
//# sourceMappingURL=safe-parse.cjs.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"names":["safe_parse_exports","__export","safeParse","safeParseAsync","module","exports","__toCommonJS","import_validate_cli_definition","require","import_utilities","import_cli_context_builder","import_parser_utilities","import_validate_context","stringOrArgv","cliDefinition","core","safeParseCore","error","validateResult","subcommandObject","_onExecute","handler","value","async","argv","parseArgv","validateCliDefinition","cliContext","buildCliContext","findSubcommandDefinition","subcommand","Error","validate"],"sources":["../../../src/parse/safe-parse.ts"],"sourcesContent":["import { validateCliDefinition } from \"../definitions/validate-cli-definition.ts\";\nimport { parseArgv } from \"../utilities.ts\";\nimport { buildCliContext } from \"./context/cli-context-builder.ts\";\nimport { findSubcommandDefinition } from \"./parser-utilities.ts\";\nimport { validate } from \"./validation/validate-context.ts\";\n\nimport type { Cli } from \"../types/definitions-types.ts\";\nimport type { CliParseResultWide } from \"../types/types.ts\";\n\nexport function safeParse(stringOrArgv: string | string[], cliDefinition: Cli): CliParseResultWide {\n const core = safeParseCore(stringOrArgv, cliDefinition);\n if (core.error) return { error: core.error };\n\n const { validateResult, subcommandObject } = core;\n\n // Fire action (throw errors caused by the usage of the action hook)\n if (subcommandObject._onExecute) {\n for (const handler of subcommandObject._onExecute) {\n handler(validateResult);\n }\n }\n\n return { error: undefined, value: validateResult };\n}\n\nexport async function safeParseAsync(stringOrArgv: string | string[], cliDefinition: Cli): Promise<CliParseResultWide> {\n const core = safeParseCore(stringOrArgv, cliDefinition);\n if (core.error) return { error: core.error };\n\n const { validateResult, subcommandObject } = core;\n\n // Fire action (throw errors caused by the usage of the action hook)\n if (subcommandObject._onExecute) {\n for (const handler of subcommandObject._onExecute) {\n // eslint-disable-next-line @typescript-eslint/await-thenable\n await handler(validateResult);\n }\n }\n\n return { error: undefined, value: validateResult };\n}\n\nfunction safeParseCore(stringOrArgv: string | string[], cliDefinition: Cli) {\n const argv = typeof stringOrArgv === \"string\" ? parseArgv(stringOrArgv) : stringOrArgv;\n\n // validate cli definition\n try {\n validateCliDefinition(cliDefinition);\n } catch (error) {\n return { error: error as Error };\n }\n\n // Parse\n let cliContext;\n try {\n cliContext = buildCliContext(argv, cliDefinition);\n } catch (error) {\n return { error: error as Error };\n }\n\n const subcommandObject = findSubcommandDefinition(cliContext.subcommand, cliDefinition);\n if (!subcommandObject) {\n const error = new Error(`Subcommand \"${cliContext.subcommand}\" does not exist`);\n return { error };\n }\n\n // Validate context\n let validateResult;\n try {\n validateResult = validate(cliContext, subcommandObject);\n } catch (error) {\n return { error: error as Error };\n }\n\n return { error: undefined, validateResult, subcommandObject };\n}\n"],"mappings":"8iBAAAA,mBAAA,GAAAC,SAAAD,mBAAA,CAAAE,UAAA,IAAAA,UAAAC,eAAA,IAAAA,iBAAAC,OAAAC,QAAAC,aAAAN,oBAAA,IAAAO,+BAAsCC,QAAA,8CACtCC,iBAA0BD,QAAA,oBAC1BE,2BAAgCF,QAAA,qCAChCG,wBAAyCH,QAAA,0BACzCI,wBAAyBJ,QAAA,qCAKlB,SAASN,UAAUW,EAAiCC,GACzD,MAAMC,EAAOC,cAAcH,EAAcC,GACzC,GAAIC,EAAKE,MAAO,MAAO,CAAEA,MAAOF,EAAKE,OAErC,MAAMC,eAAEA,EAAAC,iBAAgBA,GAAqBJ,EAG7C,GAAII,EAAiBC,WACnB,UAAWC,KAAWF,EAAiBC,WACrCC,EAAQH,GAIZ,MAAO,CAAED,WAAO,EAAWK,MAAOJ,EACpC,CAEAK,eAAsBpB,eAAeU,EAAiCC,GACpE,MAAMC,EAAOC,cAAcH,EAAcC,GACzC,GAAIC,EAAKE,MAAO,MAAO,CAAEA,MAAOF,EAAKE,OAErC,MAAMC,eAAEA,EAAAC,iBAAgBA,GAAqBJ,EAG7C,GAAII,EAAiBC,WACnB,UAAWC,KAAWF,EAAiBC,iBAE/BC,EAAQH,GAIlB,MAAO,CAAED,WAAO,EAAWK,MAAOJ,EACpC,CAEA,SAASF,cAAcH,EAAiCC,GACtD,MAAMU,EAA+B,iBAAjBX,GAAiB,EAAWJ,iBAAAgB,WAAUZ,GAAgBA,EAG1E,KACE,EAAAN,+BAAAmB,uBAAsBZ,EACxB,OAASG,GACP,MAAO,CAAEA,QACX,CAGA,IAAIU,EACJ,IACEA,GAAA,EAAajB,2BAAAkB,iBAAgBJ,EAAMV,EACrC,OAASG,GACP,MAAO,CAAEA,QACX,CAEA,MAAME,GAAA,EAAmBR,wBAAAkB,0BAAyBF,EAAWG,WAAYhB,GACzE,IAAKK,EAAkB,CAErB,MAAO,CAAEF,MADK,IAAIc,MAAM,eAAeJ,EAAWG,8BAEpD,CAGA,IAAIZ,EACJ,IACEA,GAAA,EAAiBN,wBAAAoB,UAASL,EAAYR,EACxC,OAASF,GACP,MAAO,CAAEA,QACX,CAEA,MAAO,CAAEA,WAAO,EAAWC,iBAAgBC,mBAC7C","ignoreList":[]}
|
|
@@ -0,0 +1,2 @@
|
|
|
1
|
+
"use strict";var __defProp=Object.defineProperty,__getOwnPropDesc=Object.getOwnPropertyDescriptor,__getOwnPropNames=Object.getOwnPropertyNames,__hasOwnProp=Object.prototype.hasOwnProperty,__export=(t,e)=>{for(var o in e)__defProp(t,o,{get:e[o],enumerable:!0})},__copyProps=(t,e,o,r)=>{if(e&&"object"==typeof e||"function"==typeof e)for(let n of __getOwnPropNames(e))__hasOwnProp.call(t,n)||n===o||__defProp(t,n,{get:()=>e[n],enumerable:!(r=__getOwnPropDesc(e,n))||r.enumerable});return t},__toCommonJS=t=>__copyProps(__defProp({},"__esModule",{value:!0}),t),validate_context_exports={};__export(validate_context_exports,{validate:()=>validate}),module.exports=__toCommonJS(validate_context_exports);var import_arguments=require("./validators/arguments.cjs"),import_options=require("./validators/options.cjs");function validate(t,e){const o={subcommand:t.subcommand,positionals:t.positionals,context:t};return(0,import_options.validateOptions)({commandDefinition:e,context:t,output:o}),(0,import_arguments.validateArguments)({commandDefinition:e,context:t,output:o}),o}
|
|
2
|
+
//# sourceMappingURL=validate-context.cjs.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"names":["validate_context_exports","__export","validate","module","exports","__toCommonJS","import_arguments","require","import_options","context","commandDefinition","output","subcommand","positionals","validateOptions","validateArguments"],"sources":["../../../../src/parse/validation/validate-context.ts"],"sourcesContent":["import { validateArguments } from \"./validators/arguments.ts\";\nimport { validateOptions } from \"./validators/options.ts\";\n\nimport type { ContextWide } from \"../../types/context-types.ts\";\nimport type { Cli, Subcommand } from \"../../types/definitions-types.ts\";\nimport type { OutputTypeWide } from \"../../types/io-types.ts\";\n\n/** @throws {Error} */\nexport function validate(context: ContextWide, commandDefinition: Subcommand | Cli) {\n const output: OutputTypeWide = {\n subcommand: context.subcommand,\n positionals: context.positionals,\n context: context,\n };\n\n // validate options\n validateOptions({ commandDefinition, context, output });\n\n // validate arguments\n validateArguments({ commandDefinition, context, output });\n\n return output;\n}\n"],"mappings":"8iBAAAA,yBAAA,GAAAC,SAAAD,yBAAA,CAAAE,SAAA,IAAAA,WAAAC,OAAAC,QAAAC,aAAAL,0BAAA,IAAAM,iBAAkCC,QAAA,8BAClCC,eAAgCD,QAAA,4BAOzB,SAASL,SAASO,EAAsBC,GAC7C,MAAMC,EAAyB,CAC7BC,WAAYH,EAAQG,WACpBC,YAAaJ,EAAQI,YACrBJ,WASF,OALA,EAAAD,eAAAM,iBAAgB,CAAEJ,oBAAmBD,UAASE,YAG9C,EAAAL,iBAAAS,mBAAkB,CAAEL,oBAAmBD,UAASE,WAEzCA,CACT","ignoreList":[]}
|
|
@@ -0,0 +1,2 @@
|
|
|
1
|
+
"use strict";var __defProp=Object.defineProperty,__getOwnPropDesc=Object.getOwnPropertyDescriptor,__getOwnPropNames=Object.getOwnPropertyNames,__hasOwnProp=Object.prototype.hasOwnProperty,__export=(e,t)=>{for(var r in t)__defProp(e,r,{get:t[r],enumerable:!0})},__copyProps=(e,t,r,o)=>{if(t&&"object"==typeof t||"function"==typeof t)for(let n of __getOwnPropNames(t))__hasOwnProp.call(e,n)||n===r||__defProp(e,n,{get:()=>t[n],enumerable:!(o=__getOwnPropDesc(t,n))||o.enumerable});return e},__toCommonJS=e=>__copyProps(__defProp({},"__esModule",{value:!0}),e),arguments_exports={};__export(arguments_exports,{validateArguments:()=>validateArguments}),module.exports=__toCommonJS(arguments_exports);var import_utilities=require("../../../utilities.cjs"),import_conflict=require("./conflict.cjs"),import_exclusive=require("./exclusive.cjs"),import_requires=require("./requires.cjs");function validateArguments({commandDefinition:e,context:t,output:r}){if(!t.arguments)return;r.arguments??(r.arguments={});const o=e.arguments;if(!o)throw new Error(`Subcommand "${t.subcommand}" does not have arguments`);for(const[r,n]of Object.entries(o))(0,import_requires.validateRequires)({name:r,commandDefinition:e,optionOrArgument:n,context:t,type:"option"}),(0,import_exclusive.validateExclusive)({name:r,optionOrArgument:n,context:t,type:"option"}),(0,import_conflict.validateConflictWith)({name:r,optionOrArgument:n,context:t,type:"option"});const n=Object.entries(t.arguments);for(const[e,{passedValue:i,stringValue:s,source:a,schema:m}]of n){const n="programmatic"===a,p=o[e];if(!p)throw new Error(`Subcommand "${t.subcommand}" does not have the argument "${e}"`);if(!p._preparedType)throw new Error(`internal error: missing prepared type for the argument "${e}"`);const u=n?(0,import_utilities.validateSync)(m,i):p._preparedType.validate(s);if(u.issues)throw new Error(`The argument ${e} argument ${n?"":`"${s}"`} is invalid: ${u.issues.map(e=>e.message).join(", ")}`);r.arguments[e]=u.value}}
|
|
2
|
+
//# sourceMappingURL=arguments.cjs.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"names":["arguments_exports","__export","validateArguments","module","exports","__toCommonJS","import_utilities","require","import_conflict","import_exclusive","import_requires","commandDefinition","context","output","arguments","argumentsDefinition","Error","subcommand","argumentName","argument","Object","entries","validateRequires","name","optionOrArgument","type","validateExclusive","validateConflictWith","argumentContextEntries","passedValue","stringValue","source","schema","isProgrammatic","_preparedType","safeParseResult","validateSync","validate","issues","map","issue","message","join","value"],"sources":["../../../../../src/parse/validation/validators/arguments.ts"],"sourcesContent":["import { validateSync } from \"../../../utilities.ts\";\nimport { validateConflictWith } from \"./conflict.ts\";\nimport { validateExclusive } from \"./exclusive.ts\";\nimport { validateRequires } from \"./requires.ts\";\n\nimport type { ContextWide } from \"../../../types/context-types.ts\";\nimport type { Cli, Subcommand } from \"../../../types/definitions-types.ts\";\nimport type { OutputTypeWide } from \"../../../types/io-types.ts\";\n\ninterface ValidateArgument {\n commandDefinition: Subcommand | Cli;\n context: ContextWide;\n output: OutputTypeWide;\n}\n\n/** @throws {Error} */\nexport function validateArguments({ commandDefinition, context, output }: ValidateArgument) {\n if (!context.arguments) return;\n\n output.arguments ??= {};\n\n const argumentsDefinition = commandDefinition.arguments;\n if (!argumentsDefinition) {\n throw new Error(`Subcommand \"${context.subcommand}\" does not have arguments`);\n }\n\n for (const [argumentName, argument] of Object.entries(argumentsDefinition)) {\n validateRequires({ name: argumentName, commandDefinition, optionOrArgument: argument, context, type: \"option\" });\n validateExclusive({ name: argumentName, optionOrArgument: argument, context, type: \"option\" });\n validateConflictWith({ name: argumentName, optionOrArgument: argument, context, type: \"option\" });\n }\n\n const argumentContextEntries = Object.entries(context.arguments);\n\n for (const [name, { passedValue, stringValue, source, schema }] of argumentContextEntries) {\n const isProgrammatic = source === \"programmatic\";\n\n const argument = argumentsDefinition[name];\n if (!argument) {\n throw new Error(`Subcommand \"${context.subcommand}\" does not have the argument \"${name}\"`);\n }\n\n if (!argument._preparedType) {\n throw new Error(`internal error: missing prepared type for the argument \"${name}\"`);\n }\n\n const safeParseResult = isProgrammatic\n ? validateSync(schema, passedValue)\n : argument._preparedType.validate(stringValue);\n\n if (safeParseResult.issues) {\n throw new Error(\n `The argument ${name} argument ${isProgrammatic ? \"\" : `\"${stringValue}\"`} is invalid: ${safeParseResult.issues.map(issue => issue.message).join(\", \")}`,\n );\n }\n\n output.arguments[name] = safeParseResult.value;\n }\n}\n"],"mappings":"8iBAAAA,kBAAA,GAAAC,SAAAD,kBAAA,CAAAE,kBAAA,IAAAA,oBAAAC,OAAAC,QAAAC,aAAAL,mBAAA,IAAAM,iBAA6BC,QAAA,0BAC7BC,gBAAqCD,QAAA,kBACrCE,iBAAkCF,QAAA,mBAClCG,gBAAiCH,QAAA,kBAa1B,SAASL,mBAAkBS,kBAAEA,EAAAC,QAAmBA,EAAAC,OAASA,IAC9D,IAAKD,EAAQE,UAAW,OAExBD,EAAOC,YAAPD,EAAOC,UAAc,CAAC,GAEtB,MAAMC,EAAsBJ,EAAkBG,UAC9C,IAAKC,EACH,MAAM,IAAIC,MAAM,eAAeJ,EAAQK,uCAGzC,UAAYC,EAAcC,KAAaC,OAAOC,QAAQN,IACpD,EAAAL,gBAAAY,kBAAiB,CAAEC,KAAML,EAAcP,oBAAmBa,iBAAkBL,EAAUP,UAASa,KAAM,YACrG,EAAAhB,iBAAAiB,mBAAkB,CAAEH,KAAML,EAAcM,iBAAkBL,EAAUP,UAASa,KAAM,YACnF,EAAAjB,gBAAAmB,sBAAqB,CAAEJ,KAAML,EAAcM,iBAAkBL,EAAUP,UAASa,KAAM,WAGxF,MAAMG,EAAyBR,OAAOC,QAAQT,EAAQE,WAEtD,UAAYS,GAAMM,YAAEA,EAAAC,YAAaA,EAAAC,OAAaA,EAAAC,OAAQA,MAAaJ,EAAwB,CACzF,MAAMK,EAA4B,iBAAXF,EAEjBZ,EAAWJ,EAAoBQ,GACrC,IAAKJ,EACH,MAAM,IAAIH,MAAM,eAAeJ,EAAQK,2CAA2CM,MAGpF,IAAKJ,EAASe,cACZ,MAAM,IAAIlB,MAAM,2DAA2DO,MAG7E,MAAMY,EAAkBF,GAAA,EACpB3B,iBAAA8B,cAAaJ,EAAQH,GACrBV,EAASe,cAAcG,SAASP,GAEpC,GAAIK,EAAgBG,OAClB,MAAM,IAAItB,MACR,gBAAgBO,cAAiBU,EAAiB,GAAK,IAAIH,oBAA8BK,EAAgBG,OAAOC,IAAIC,GAASA,EAAMC,SAASC,KAAK,SAIrJ7B,EAAOC,UAAUS,GAAQY,EAAgBQ,KAC3C,CACF","ignoreList":[]}
|
|
@@ -0,0 +1,2 @@
|
|
|
1
|
+
"use strict";var __defProp=Object.defineProperty,__getOwnPropDesc=Object.getOwnPropertyDescriptor,__getOwnPropNames=Object.getOwnPropertyNames,__hasOwnProp=Object.prototype.hasOwnProperty,__export=(e,t)=>{for(var o in t)__defProp(e,o,{get:t[o],enumerable:!0})},__copyProps=(e,t,o,n)=>{if(t&&"object"==typeof t||"function"==typeof t)for(let r of __getOwnPropNames(t))__hasOwnProp.call(e,r)||r===o||__defProp(e,r,{get:()=>t[r],enumerable:!(n=__getOwnPropDesc(t,r))||n.enumerable});return e},__toCommonJS=e=>__copyProps(__defProp({},"__esModule",{value:!0}),e),conflict_exports={};__export(conflict_exports,{validateConflictWith:()=>validateConflictWith}),module.exports=__toCommonJS(conflict_exports);var import_explicitly_passed=require("./explicitly-passed.cjs");function validateConflictWith({name:e,optionOrArgument:t,context:o,type:n}){const r=t.conflictWith;if(!r||0===r.length)return;if(!(0,import_explicitly_passed.isOptionOrArgumentExplicitlyPassed)(e,o))return;const s=[],i=[];if(o.options)for(const[t,n]of Object.entries(o.options))t!==e&&r.includes(t)&&"default"!==n.source&&s.push(t);if(o.arguments)for(const[t,n]of Object.entries(o.arguments))t!==e&&r.includes(t)&&"default"!==n.source&&i.push(t);if(0===s.length&&0===i.length)return;const p=[];if(s.length>0){const e=s.map(e=>`"${e}"`).join(", "),t=s.length>1?"s":"";p.push(`option${t} ${e}`)}if(i.length>0){const e=i.map(e=>`"${e}"`).join(", "),t=i.length>1?"s":"";p.push(`argument${t} ${e}`)}const c=p.join(" and ");throw new Error(`${n} "${e}" cannot be used with the ${c} because they are mutually exclusive.`)}
|
|
2
|
+
//# sourceMappingURL=conflict.cjs.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"names":["conflict_exports","__export","validateConflictWith","module","exports","__toCommonJS","import_explicitly_passed","require","name","optionOrArgument","context","type","conflictWith","length","isOptionOrArgumentExplicitlyPassed","conflictedOptions","conflictedArguments","options","optionName","optionContext","Object","entries","includes","source","push","arguments","argumentName","argumentContext","parts","formatted","map","o","join","s","a","joinedParts","Error"],"sources":["../../../../../src/parse/validation/validators/conflict.ts"],"sourcesContent":["import { isOptionOrArgumentExplicitlyPassed } from \"./explicitly-passed.ts\";\n\nimport type { ContextWide } from \"../../../types/context-types.ts\";\nimport type { Argument, Option } from \"../../../types/definitions-types.ts\";\n\ninterface ValidateConflictOptions {\n /** The option or argument name to check its `requires` */\n name: string;\n\n /** The option or argument to check */\n optionOrArgument: Option | Argument;\n\n /** The parsed context */\n context: ContextWide;\n\n /** What we're checking */\n type: \"option\" | \"argument\";\n}\n\n/** @throws {Error} */\nexport function validateConflictWith({ name, optionOrArgument, context, type }: ValidateConflictOptions) {\n const conflictWith = optionOrArgument.conflictWith;\n if (!conflictWith || conflictWith.length === 0) return;\n\n // Check if the options/argument is passed\n if (!isOptionOrArgumentExplicitlyPassed(name, context)) return;\n\n const conflictedOptions: string[] = [];\n const conflictedArguments: string[] = [];\n\n if (context.options) {\n for (const [optionName, optionContext] of Object.entries(context.options)) {\n if (optionName === name) continue; // don't check self\n if (!conflictWith.includes(optionName)) continue; // not a conflict\n if (optionContext.source === \"default\") continue; // not explicitly passed\n conflictedOptions.push(optionName);\n }\n }\n\n if (context.arguments) {\n for (const [argumentName, argumentContext] of Object.entries(context.arguments)) {\n if (argumentName === name) continue; // don't check self\n if (!conflictWith.includes(argumentName)) continue; // not a conflict\n if (argumentContext.source === \"default\") continue; // not explicitly passed\n conflictedArguments.push(argumentName);\n }\n }\n\n if (conflictedOptions.length === 0 && conflictedArguments.length === 0) return; // OK\n\n const parts: string[] = [];\n\n if (conflictedOptions.length > 0) {\n const formatted = conflictedOptions.map(o => `\"${o}\"`).join(\", \");\n const s = conflictedOptions.length > 1 ? \"s\" : \"\";\n parts.push(`option${s} ${formatted}`);\n }\n\n if (conflictedArguments.length > 0) {\n const formatted = conflictedArguments.map(a => `\"${a}\"`).join(\", \");\n const s = conflictedArguments.length > 1 ? \"s\" : \"\";\n parts.push(`argument${s} ${formatted}`);\n }\n\n const joinedParts = parts.join(\" and \");\n\n throw new Error(`${type} \"${name}\" cannot be used with the ${joinedParts} because they are mutually exclusive.`);\n}\n"],"mappings":"8iBAAAA,iBAAA,GAAAC,SAAAD,iBAAA,CAAAE,qBAAA,IAAAA,uBAAAC,OAAAC,QAAAC,aAAAL,kBAAA,IAAAM,yBAAmDC,QAAA,2BAoB5C,SAASL,sBAAqBM,KAAEA,EAAAC,iBAAMA,EAAAC,QAAkBA,EAAAC,KAASA,IACtE,MAAMC,EAAeH,EAAiBG,aACtC,IAAKA,GAAwC,IAAxBA,EAAaC,OAAc,OAGhD,KAAI,EAACP,yBAAAQ,oCAAmCN,EAAME,GAAU,OAExD,MAAMK,EAA8B,GAC9BC,EAAgC,GAEtC,GAAIN,EAAQO,QACV,UAAYC,EAAYC,KAAkBC,OAAOC,QAAQX,EAAQO,SAC3DC,IAAeV,GACdI,EAAaU,SAASJ,IACE,YAAzBC,EAAcI,QAClBR,EAAkBS,KAAKN,GAI3B,GAAIR,EAAQe,UACV,UAAYC,EAAcC,KAAoBP,OAAOC,QAAQX,EAAQe,WAC/DC,IAAiBlB,GAChBI,EAAaU,SAASI,IACI,YAA3BC,EAAgBJ,QACpBP,EAAoBQ,KAAKE,GAI7B,GAAiC,IAA7BX,EAAkBF,QAA+C,IAA/BG,EAAoBH,OAAc,OAExE,MAAMe,EAAkB,GAExB,GAAIb,EAAkBF,OAAS,EAAG,CAChC,MAAMgB,EAAYd,EAAkBe,IAAIC,GAAK,IAAIA,MAAMC,KAAK,MACtDC,EAAIlB,EAAkBF,OAAS,EAAI,IAAM,GAC/Ce,EAAMJ,KAAK,SAASS,KAAKJ,IAC3B,CAEA,GAAIb,EAAoBH,OAAS,EAAG,CAClC,MAAMgB,EAAYb,EAAoBc,IAAII,GAAK,IAAIA,MAAMF,KAAK,MACxDC,EAAIjB,EAAoBH,OAAS,EAAI,IAAM,GACjDe,EAAMJ,KAAK,WAAWS,KAAKJ,IAC7B,CAEA,MAAMM,EAAcP,EAAMI,KAAK,SAE/B,MAAM,IAAII,MAAM,GAAGzB,MAASH,8BAAiC2B,yCAC/D","ignoreList":[]}
|
|
@@ -0,0 +1,2 @@
|
|
|
1
|
+
"use strict";var __defProp=Object.defineProperty,__getOwnPropDesc=Object.getOwnPropertyDescriptor,__getOwnPropNames=Object.getOwnPropertyNames,__hasOwnProp=Object.prototype.hasOwnProperty,__export=(e,t)=>{for(var o in t)__defProp(e,o,{get:t[o],enumerable:!0})},__copyProps=(e,t,o,r)=>{if(t&&"object"==typeof t||"function"==typeof t)for(let s of __getOwnPropNames(t))__hasOwnProp.call(e,s)||s===o||__defProp(e,s,{get:()=>t[s],enumerable:!(r=__getOwnPropDesc(t,s))||r.enumerable});return e},__toCommonJS=e=>__copyProps(__defProp({},"__esModule",{value:!0}),e),exclusive_exports={};__export(exclusive_exports,{validateExclusive:()=>validateExclusive}),module.exports=__toCommonJS(exclusive_exports);var import_explicitly_passed=require("./explicitly-passed.cjs");function validateExclusive({name:e,optionOrArgument:t,context:o,type:r}){if(!t.exclusive)return;if(!(0,import_explicitly_passed.isOptionOrArgumentExplicitlyPassed)(e,o))return;const s=t.requires??[],n=[],i=[];if(o.options)for(const[t,r]of Object.entries(o.options))t!==e&&(s.includes(t)||"default"!==r.source&&n.push(t));if(o.arguments)for(const[t,r]of Object.entries(o.arguments))t!==e&&(s.includes(t)||"default"!==r.source&&i.push(t));if(0===n.length&&0===i.length)return;const p=[];if(n.length>0){const e=n.map(e=>`"${e}"`).join(", "),t=n.length>1?"s":"";p.push(`option${t} ${e}`)}if(i.length>0){const e=i.map(e=>`"${e}"`).join(", "),t=i.length>1?"s":"";p.push(`argument${t} ${e}`)}const c=p.join(" and ");throw new Error(`${r} "${e}" cannot be used with the ${c} because they are mutually exclusive.`)}
|
|
2
|
+
//# sourceMappingURL=exclusive.cjs.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"names":["exclusive_exports","__export","validateExclusive","module","exports","__toCommonJS","import_explicitly_passed","require","name","optionOrArgument","context","type","exclusive","isOptionOrArgumentExplicitlyPassed","requires","mutuallyExclusiveOptions","mutuallyExclusiveArguments","options","optionName","optionContext","Object","entries","includes","source","push","arguments","argumentName","argumentContext","length","parts","formatted","map","o","join","s","a","joinedParts","Error"],"sources":["../../../../../src/parse/validation/validators/exclusive.ts"],"sourcesContent":["import { isOptionOrArgumentExplicitlyPassed } from \"./explicitly-passed.ts\";\n\nimport type { ContextWide } from \"../../../types/context-types.ts\";\nimport type { Argument, Option } from \"../../../types/definitions-types.ts\";\n\ninterface ValidateExclusiveOptions {\n /** The option or argument name to check its `requires` */\n name: string;\n\n /** The option or argument to check */\n optionOrArgument: Option | Argument;\n\n /** The parsed context */\n context: ContextWide;\n\n /** What we're checking */\n type: \"option\" | \"argument\";\n}\n\n/** @throws {Error} */\nexport function validateExclusive({ name, optionOrArgument, context, type }: ValidateExclusiveOptions) {\n const exclusive = optionOrArgument.exclusive;\n if (!exclusive) return;\n\n // Check if the options/argument is passed\n if (!isOptionOrArgumentExplicitlyPassed(name, context)) return;\n\n const requires = optionOrArgument.requires ?? [];\n\n const mutuallyExclusiveOptions: string[] = [];\n const mutuallyExclusiveArguments: string[] = [];\n\n if (context.options) {\n for (const [optionName, optionContext] of Object.entries(context.options)) {\n if (optionName === name) continue; // don't check self\n if (requires.includes(optionName)) continue; // allow required options\n if (optionContext.source === \"default\") continue; // not explicitly passed\n mutuallyExclusiveOptions.push(optionName);\n }\n }\n\n if (context.arguments) {\n for (const [argumentName, argumentContext] of Object.entries(context.arguments)) {\n if (argumentName === name) continue; // don't check self\n if (requires.includes(argumentName)) continue; // allow required arguments\n if (argumentContext.source === \"default\") continue; // not explicitly passed\n mutuallyExclusiveArguments.push(argumentName);\n }\n }\n\n if (mutuallyExclusiveOptions.length === 0 && mutuallyExclusiveArguments.length === 0) return;\n\n const parts: string[] = [];\n\n if (mutuallyExclusiveOptions.length > 0) {\n const formatted = mutuallyExclusiveOptions.map(o => `\"${o}\"`).join(\", \");\n const s = mutuallyExclusiveOptions.length > 1 ? \"s\" : \"\";\n parts.push(`option${s} ${formatted}`);\n }\n\n if (mutuallyExclusiveArguments.length > 0) {\n const formatted = mutuallyExclusiveArguments.map(a => `\"${a}\"`).join(\", \");\n const s = mutuallyExclusiveArguments.length > 1 ? \"s\" : \"\";\n parts.push(`argument${s} ${formatted}`);\n }\n\n const joinedParts = parts.join(\" and \");\n\n throw new Error(`${type} \"${name}\" cannot be used with the ${joinedParts} because they are mutually exclusive.`);\n}\n"],"mappings":"8iBAAAA,kBAAA,GAAAC,SAAAD,kBAAA,CAAAE,kBAAA,IAAAA,oBAAAC,OAAAC,QAAAC,aAAAL,mBAAA,IAAAM,yBAAmDC,QAAA,2BAoB5C,SAASL,mBAAkBM,KAAEA,EAAAC,iBAAMA,EAAAC,QAAkBA,EAAAC,KAASA,IAEnE,IADkBF,EAAiBG,UACnB,OAGhB,KAAI,EAACN,yBAAAO,oCAAmCL,EAAME,GAAU,OAExD,MAAMI,EAAWL,EAAiBK,UAAY,GAExCC,EAAqC,GACrCC,EAAuC,GAE7C,GAAIN,EAAQO,QACV,UAAYC,EAAYC,KAAkBC,OAAOC,QAAQX,EAAQO,SAC3DC,IAAeV,IACfM,EAASQ,SAASJ,IACO,YAAzBC,EAAcI,QAClBR,EAAyBS,KAAKN,IAIlC,GAAIR,EAAQe,UACV,UAAYC,EAAcC,KAAoBP,OAAOC,QAAQX,EAAQe,WAC/DC,IAAiBlB,IACjBM,EAASQ,SAASI,IACS,YAA3BC,EAAgBJ,QACpBP,EAA2BQ,KAAKE,IAIpC,GAAwC,IAApCX,EAAyBa,QAAsD,IAAtCZ,EAA2BY,OAAc,OAEtF,MAAMC,EAAkB,GAExB,GAAId,EAAyBa,OAAS,EAAG,CACvC,MAAME,EAAYf,EAAyBgB,IAAIC,GAAK,IAAIA,MAAMC,KAAK,MAC7DC,EAAInB,EAAyBa,OAAS,EAAI,IAAM,GACtDC,EAAML,KAAK,SAASU,KAAKJ,IAC3B,CAEA,GAAId,EAA2BY,OAAS,EAAG,CACzC,MAAME,EAAYd,EAA2Be,IAAII,GAAK,IAAIA,MAAMF,KAAK,MAC/DC,EAAIlB,EAA2BY,OAAS,EAAI,IAAM,GACxDC,EAAML,KAAK,WAAWU,KAAKJ,IAC7B,CAEA,MAAMM,EAAcP,EAAMI,KAAK,SAE/B,MAAM,IAAII,MAAM,GAAG1B,MAASH,8BAAiC4B,yCAC/D","ignoreList":[]}
|
|
@@ -0,0 +1,2 @@
|
|
|
1
|
+
"use strict";var __defProp=Object.defineProperty,__getOwnPropDesc=Object.getOwnPropertyDescriptor,__getOwnPropNames=Object.getOwnPropertyNames,__hasOwnProp=Object.prototype.hasOwnProperty,__export=(e,t)=>{for(var s in t)__defProp(e,s,{get:t[s],enumerable:!0})},__copyProps=(e,t,s,i)=>{if(t&&"object"==typeof t||"function"==typeof t)for(let o of __getOwnPropNames(t))__hasOwnProp.call(e,o)||o===s||__defProp(e,o,{get:()=>t[o],enumerable:!(i=__getOwnPropDesc(t,o))||i.enumerable});return e},__toCommonJS=e=>__copyProps(__defProp({},"__esModule",{value:!0}),e),explicitly_passed_exports={};function isArgumentExplicitlyPassed(e,t){return!!t.arguments&&(e in t.arguments&&"default"!==t.arguments[e].source)}function isOptionExplicitlyPassed(e,t){return!!t.options&&(e in t.options&&"default"!==t.options[e].source)}function isOptionOrArgumentExplicitlyPassed(e,t){return isOptionExplicitlyPassed(e,t)||isArgumentExplicitlyPassed(e,t)}__export(explicitly_passed_exports,{isArgumentExplicitlyPassed:()=>isArgumentExplicitlyPassed,isOptionExplicitlyPassed:()=>isOptionExplicitlyPassed,isOptionOrArgumentExplicitlyPassed:()=>isOptionOrArgumentExplicitlyPassed}),module.exports=__toCommonJS(explicitly_passed_exports);
|
|
2
|
+
//# sourceMappingURL=explicitly-passed.cjs.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"names":["explicitly_passed_exports","isArgumentExplicitlyPassed","name","context","arguments","source","isOptionExplicitlyPassed","options","isOptionOrArgumentExplicitlyPassed","__export","module","exports","__toCommonJS"],"sources":["../../../../../src/parse/validation/validators/explicitly-passed.ts"],"sourcesContent":["import type { ContextWide } from \"../../../types/context-types.ts\";\n\nexport function isArgumentExplicitlyPassed(name: string, context: ContextWide) {\n if (!context.arguments) return false;\n return name in context.arguments && context.arguments[name].source !== \"default\";\n}\n\nexport function isOptionExplicitlyPassed(name: string, context: ContextWide) {\n if (!context.options) return false;\n return name in context.options && context.options[name].source !== \"default\";\n}\n\nexport function isOptionOrArgumentExplicitlyPassed(name: string, context: ContextWide) {\n return isOptionExplicitlyPassed(name, context) || isArgumentExplicitlyPassed(name, context);\n}\n"],"mappings":"8iBAAAA,0BAAA,GAEO,SAASC,2BAA2BC,EAAcC,GACvD,QAAKA,EAAQC,YACNF,KAAQC,EAAQC,WAAgD,YAAnCD,EAAQC,UAAUF,GAAMG,OAC9D,CAEO,SAASC,yBAAyBJ,EAAcC,GACrD,QAAKA,EAAQI,UACNL,KAAQC,EAAQI,SAA4C,YAAjCJ,EAAQI,QAAQL,GAAMG,OAC1D,CAEO,SAASG,mCAAmCN,EAAcC,GAC/D,OAAOG,yBAAyBJ,EAAMC,IAAYF,2BAA2BC,EAAMC,EACrF,CAdAM,SAAAT,0BAAA,CAAAC,2BAAA,IAAAA,2BAAAK,yBAAA,IAAAA,yBAAAE,mCAAA,IAAAA,qCAAAE,OAAAC,QAAAC,aAAAZ","ignoreList":[]}
|
|
@@ -0,0 +1,2 @@
|
|
|
1
|
+
"use strict";var __defProp=Object.defineProperty,__getOwnPropDesc=Object.getOwnPropertyDescriptor,__getOwnPropNames=Object.getOwnPropertyNames,__hasOwnProp=Object.prototype.hasOwnProperty,__export=(e,o)=>{for(var t in o)__defProp(e,t,{get:o[t],enumerable:!0})},__copyProps=(e,o,t,r)=>{if(o&&"object"==typeof o||"function"==typeof o)for(let i of __getOwnPropNames(o))__hasOwnProp.call(e,i)||i===t||__defProp(e,i,{get:()=>o[i],enumerable:!(r=__getOwnPropDesc(o,i))||r.enumerable});return e},__toCommonJS=e=>__copyProps(__defProp({},"__esModule",{value:!0}),e),options_exports={};__export(options_exports,{validateOptions:()=>validateOptions}),module.exports=__toCommonJS(options_exports);var import_utilities=require("../../../utilities.cjs"),import_conflict=require("./conflict.cjs"),import_exclusive=require("./exclusive.cjs"),import_requires=require("./requires.cjs");function validateOptions({commandDefinition:e,context:o,output:t}){if(!o.options)return;t.options??(t.options={});const r=e.options;if(!r)throw new Error(`subcommand "${o.subcommand}" does not have options`);for(const[t,i]of Object.entries(r))(0,import_requires.validateRequires)({name:t,commandDefinition:e,optionOrArgument:i,context:o,type:"option"}),(0,import_exclusive.validateExclusive)({name:t,optionOrArgument:i,context:o,type:"option"}),(0,import_conflict.validateConflictWith)({name:t,optionOrArgument:i,context:o,type:"option"});const i=Object.entries(o.options);for(const[e,{passedValue:n,stringValue:s,flag:p,source:a,schema:c}]of i){const i=r[e];if(!i)throw new Error(`subcommand "${o.subcommand}" does not have option "${e}"`);if(!i._preparedType)throw new Error(`internal error: missing prepared type for option "${e}"`);const _="programmatic"===a,m=_?(0,import_utilities.validateSync)(c,n):i._preparedType.validate(s);if(m.issues)throw new Error(`invalid value ${_?"":`"${s}"`} for "${_?e:p}": ${m.issues.map(e=>e.message).join(", ")}`);t.options[e]=m.value}}
|
|
2
|
+
//# sourceMappingURL=options.cjs.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"names":["options_exports","__export","validateOptions","module","exports","__toCommonJS","import_utilities","require","import_conflict","import_exclusive","import_requires","commandDefinition","context","output","options","optionsDefinition","Error","subcommand","optionName","option","Object","entries","validateRequires","name","optionOrArgument","type","validateExclusive","validateConflictWith","optionContextEntries","passedValue","stringValue","flag","source","schema","_preparedType","isProgrammatic","safeParseResult","validateSync","validate","issues","map","issue","message","join","value"],"sources":["../../../../../src/parse/validation/validators/options.ts"],"sourcesContent":["import { validateSync } from \"../../../utilities.ts\";\nimport { validateConflictWith } from \"./conflict.ts\";\nimport { validateExclusive } from \"./exclusive.ts\";\nimport { validateRequires } from \"./requires.ts\";\n\nimport type { ContextWide } from \"../../../types/context-types.ts\";\nimport type { Cli, Subcommand } from \"../../../types/definitions-types.ts\";\nimport type { OutputTypeWide } from \"../../../types/io-types.ts\";\n\ninterface ValidateOptions {\n commandDefinition: Subcommand | Cli;\n context: ContextWide;\n output: OutputTypeWide;\n}\n\n/** @throws {Error} */\nexport function validateOptions({ commandDefinition, context, output }: ValidateOptions) {\n if (!context.options) return;\n\n output.options ??= {};\n\n const optionsDefinition = commandDefinition.options;\n if (!optionsDefinition) {\n throw new Error(`subcommand \"${context.subcommand}\" does not have options`);\n }\n\n for (const [optionName, option] of Object.entries(optionsDefinition)) {\n validateRequires({ name: optionName, commandDefinition, optionOrArgument: option, context, type: \"option\" });\n validateExclusive({ name: optionName, optionOrArgument: option, context, type: \"option\" });\n validateConflictWith({ name: optionName, optionOrArgument: option, context, type: \"option\" });\n }\n\n const optionContextEntries = Object.entries(context.options);\n\n for (const [optionName, { passedValue, stringValue, flag, source, schema }] of optionContextEntries) {\n const option = optionsDefinition[optionName];\n if (!option) {\n throw new Error(`subcommand \"${context.subcommand}\" does not have option \"${optionName}\"`);\n }\n\n if (!option._preparedType) {\n throw new Error(`internal error: missing prepared type for option \"${optionName}\"`);\n }\n\n const isProgrammatic = source === \"programmatic\";\n\n const safeParseResult = isProgrammatic\n ? validateSync(schema, passedValue)\n : option._preparedType.validate(stringValue);\n\n if (safeParseResult.issues) {\n throw new Error(\n `invalid value ${isProgrammatic ? \"\" : `\"${stringValue}\"`} for \"${isProgrammatic ? optionName : flag}\": ${safeParseResult.issues.map(issue => issue.message).join(\", \")}`,\n );\n }\n\n output.options[optionName] = safeParseResult.value;\n }\n}\n"],"mappings":"8iBAAAA,gBAAA,GAAAC,SAAAD,gBAAA,CAAAE,gBAAA,IAAAA,kBAAAC,OAAAC,QAAAC,aAAAL,iBAAA,IAAAM,iBAA6BC,QAAA,0BAC7BC,gBAAqCD,QAAA,kBACrCE,iBAAkCF,QAAA,mBAClCG,gBAAiCH,QAAA,kBAa1B,SAASL,iBAAgBS,kBAAEA,EAAAC,QAAmBA,EAAAC,OAASA,IAC5D,IAAKD,EAAQE,QAAS,OAEtBD,EAAOC,UAAPD,EAAOC,QAAY,CAAC,GAEpB,MAAMC,EAAoBJ,EAAkBG,QAC5C,IAAKC,EACH,MAAM,IAAIC,MAAM,eAAeJ,EAAQK,qCAGzC,UAAYC,EAAYC,KAAWC,OAAOC,QAAQN,IAChD,EAAAL,gBAAAY,kBAAiB,CAAEC,KAAML,EAAYP,oBAAmBa,iBAAkBL,EAAQP,UAASa,KAAM,YACjG,EAAAhB,iBAAAiB,mBAAkB,CAAEH,KAAML,EAAYM,iBAAkBL,EAAQP,UAASa,KAAM,YAC/E,EAAAjB,gBAAAmB,sBAAqB,CAAEJ,KAAML,EAAYM,iBAAkBL,EAAQP,UAASa,KAAM,WAGpF,MAAMG,EAAuBR,OAAOC,QAAQT,EAAQE,SAEpD,UAAYI,GAAYW,YAAEA,EAAAC,YAAaA,EAAAC,KAAaA,EAAAC,OAAMA,EAAAC,OAAQA,MAAaL,EAAsB,CACnG,MAAMT,EAASJ,EAAkBG,GACjC,IAAKC,EACH,MAAM,IAAIH,MAAM,eAAeJ,EAAQK,qCAAqCC,MAG9E,IAAKC,EAAOe,cACV,MAAM,IAAIlB,MAAM,qDAAqDE,MAGvE,MAAMiB,EAA4B,iBAAXH,EAEjBI,EAAkBD,GAAA,EACpB7B,iBAAA+B,cAAaJ,EAAQJ,GACrBV,EAAOe,cAAcI,SAASR,GAElC,GAAIM,EAAgBG,OAClB,MAAM,IAAIvB,MACR,iBAAiBmB,EAAiB,GAAK,IAAIL,aAAuBK,EAAiBjB,EAAaa,OAAUK,EAAgBG,OAAOC,IAAIC,GAASA,EAAMC,SAASC,KAAK,SAItK9B,EAAOC,QAAQI,GAAckB,EAAgBQ,KAC/C,CACF","ignoreList":[]}
|
|
@@ -0,0 +1,2 @@
|
|
|
1
|
+
"use strict";var __defProp=Object.defineProperty,__getOwnPropDesc=Object.getOwnPropertyDescriptor,__getOwnPropNames=Object.getOwnPropertyNames,__hasOwnProp=Object.prototype.hasOwnProperty,__export=(e,t)=>{for(var r in t)__defProp(e,r,{get:t[r],enumerable:!0})},__copyProps=(e,t,r,o)=>{if(t&&"object"==typeof t||"function"==typeof t)for(let n of __getOwnPropNames(t))__hasOwnProp.call(e,n)||n===r||__defProp(e,n,{get:()=>t[n],enumerable:!(o=__getOwnPropDesc(t,n))||o.enumerable});return e},__toCommonJS=e=>__copyProps(__defProp({},"__esModule",{value:!0}),e),requires_exports={};__export(requires_exports,{validateRequires:()=>validateRequires}),module.exports=__toCommonJS(requires_exports);var import_explicitly_passed=require("./explicitly-passed.cjs");function validateRequires({name:e,commandDefinition:t,optionOrArgument:r,context:o,type:n}){const s=r.requires;if(!s||0===s.length)return;if(!(0,import_explicitly_passed.isOptionOrArgumentExplicitlyPassed)(e,o))return;const i=t.options??{},p=[],_=[];for(const e of s){const t=e in i;(t?(0,import_explicitly_passed.isOptionExplicitlyPassed)(e,o):(0,import_explicitly_passed.isArgumentExplicitlyPassed)(e,o))||(t?p.push(e):_.push(e))}if(0===p.length&&0===_.length)return;const a=[];if(p.length>0){const e=p.map(e=>`"${e}"`).join(", "),t=p.length>1?"s":"";a.push(`option${t} ${e}`)}if(_.length>0){const e=_.map(e=>`"${e}"`).join(", "),t=_.length>1?"s":"";a.push(`argument${t} ${e}`)}const l=a.join(" and ");throw new Error(`${n} "${e}" cannot be used without the required ${l}.`)}
|
|
2
|
+
//# sourceMappingURL=requires.cjs.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"names":["requires_exports","__export","validateRequires","module","exports","__toCommonJS","import_explicitly_passed","require","name","commandDefinition","optionOrArgument","context","type","requires","length","isOptionOrArgumentExplicitlyPassed","optionsDefinition","options","missingOptions","missingArguments","requiredName","isOption","isOptionExplicitlyPassed","isArgumentExplicitlyPassed","push","parts","formatted","map","o","join","s","a","joinedParts","Error"],"sources":["../../../../../src/parse/validation/validators/requires.ts"],"sourcesContent":["import {\n isArgumentExplicitlyPassed,\n isOptionExplicitlyPassed,\n isOptionOrArgumentExplicitlyPassed,\n} from \"./explicitly-passed.ts\";\n\nimport type { ContextWide } from \"../../../types/context-types.ts\";\nimport type { Argument, Cli, Option, Subcommand } from \"../../../types/definitions-types.ts\";\n\ninterface ValidateRequiresOptions {\n /** The option or argument name to check its `requires` */\n name: string;\n\n /** The subcommand or cli configuration */\n commandDefinition: Subcommand | Cli;\n\n /** The option or argument to check */\n optionOrArgument: Option | Argument;\n\n /** The parsed context */\n context: ContextWide;\n\n /** What we're checking */\n type: \"option\" | \"argument\";\n}\n\n/** @throws {Error} */\nexport function validateRequires({\n name,\n commandDefinition,\n optionOrArgument,\n context,\n type,\n}: ValidateRequiresOptions) {\n const requires = optionOrArgument.requires;\n if (!requires || requires.length === 0) return;\n\n // Check if the options/argument is passed\n if (!isOptionOrArgumentExplicitlyPassed(name, context)) return;\n\n const optionsDefinition = commandDefinition.options ?? {};\n\n const missingOptions: string[] = [];\n const missingArguments: string[] = [];\n\n for (const requiredName of requires) {\n const isOption = requiredName in optionsDefinition;\n\n const provided = isOption\n ? isOptionExplicitlyPassed(requiredName, context)\n : isArgumentExplicitlyPassed(requiredName, context);\n\n if (provided) continue;\n\n if (isOption) {\n missingOptions.push(requiredName);\n continue;\n }\n\n missingArguments.push(requiredName);\n }\n\n if (missingOptions.length === 0 && missingArguments.length === 0) return; // OK\n\n const parts: string[] = [];\n\n if (missingOptions.length > 0) {\n const formatted = missingOptions.map(o => `\"${o}\"`).join(\", \");\n const s = missingOptions.length > 1 ? \"s\" : \"\";\n parts.push(`option${s} ${formatted}`);\n }\n\n if (missingArguments.length > 0) {\n const formatted = missingArguments.map(a => `\"${a}\"`).join(\", \");\n const s = missingArguments.length > 1 ? \"s\" : \"\";\n parts.push(`argument${s} ${formatted}`);\n }\n\n const joinedParts = parts.join(\" and \");\n\n throw new Error(`${type} \"${name}\" cannot be used without the required ${joinedParts}.`);\n}\n"],"mappings":"8iBAAAA,iBAAA,GAAAC,SAAAD,iBAAA,CAAAE,iBAAA,IAAAA,mBAAAC,OAAAC,QAAAC,aAAAL,kBAAA,IAAAM,yBAIOC,QAAA,2BAuBA,SAASL,kBAAiBM,KAC/BA,EAAAC,kBACAA,EAAAC,iBACAA,EAAAC,QACAA,EAAAC,KACAA,IAEA,MAAMC,EAAWH,EAAiBG,SAClC,IAAKA,GAAgC,IAApBA,EAASC,OAAc,OAGxC,KAAI,EAACR,yBAAAS,oCAAmCP,EAAMG,GAAU,OAExD,MAAMK,EAAoBP,EAAkBQ,SAAW,CAAC,EAElDC,EAA2B,GAC3BC,EAA6B,GAEnC,UAAWC,KAAgBP,EAAU,CACnC,MAAMQ,EAAWD,KAAgBJ,GAEhBK,GAAA,EACbf,yBAAAgB,0BAAyBF,EAAcT,IAAO,EAC9CL,yBAAAiB,4BAA2BH,EAAcT,MAIzCU,EACFH,EAAeM,KAAKJ,GAItBD,EAAiBK,KAAKJ,GACxB,CAEA,GAA8B,IAA1BF,EAAeJ,QAA4C,IAA5BK,EAAiBL,OAAc,OAElE,MAAMW,EAAkB,GAExB,GAAIP,EAAeJ,OAAS,EAAG,CAC7B,MAAMY,EAAYR,EAAeS,IAAIC,GAAK,IAAIA,MAAMC,KAAK,MACnDC,EAAIZ,EAAeJ,OAAS,EAAI,IAAM,GAC5CW,EAAMD,KAAK,SAASM,KAAKJ,IAC3B,CAEA,GAAIP,EAAiBL,OAAS,EAAG,CAC/B,MAAMY,EAAYP,EAAiBQ,IAAII,GAAK,IAAIA,MAAMF,KAAK,MACrDC,EAAIX,EAAiBL,OAAS,EAAI,IAAM,GAC9CW,EAAMD,KAAK,WAAWM,KAAKJ,IAC7B,CAEA,MAAMM,EAAcP,EAAMI,KAAK,SAE/B,MAAM,IAAII,MAAM,GAAGrB,MAASJ,0CAA6CwB,KAC3E","ignoreList":[]}
|
|
@@ -0,0 +1,2 @@
|
|
|
1
|
+
"use strict";var __defProp=Object.defineProperty,__getOwnPropDesc=Object.getOwnPropertyDescriptor,__getOwnPropNames=Object.getOwnPropertyNames,__hasOwnProp=Object.prototype.hasOwnProperty,__export=(e,n)=>{for(var t in n)__defProp(e,t,{get:n[t],enumerable:!0})},__copyProps=(e,n,t,r)=>{if(n&&"object"==typeof n||"function"==typeof n)for(let i of __getOwnPropNames(n))__hasOwnProp.call(e,i)||i===t||__defProp(e,i,{get:()=>n[i],enumerable:!(r=__getOwnPropDesc(n,i))||r.enumerable});return e},__toCommonJS=e=>__copyProps(__defProp({},"__esModule",{value:!0}),e),utilities_exports={};function validateSync(e,n){const t=e["~standard"].validate(n);if(t instanceof Promise)throw new TypeError("async schema validation not supported");return t}function defaultValueAndIsOptional(e){const n=validateSync(e);return n.issues?{defaultValue:void 0,optional:!1}:{defaultValue:n.value,optional:!0}}function PrepareType(e,n){const{optional:t,defaultValue:r}=defaultValueAndIsOptional(e);return{schema:e,optional:t,defaultValue:r,coerceTo:n.type,validate:t=>validateSync(e,t&&n(t))}}function prepareDefinitionTypes(e){if(e)for(const n of Object.values(e))n.coerce||(n.coerce=e=>e),n._preparedType||(n._preparedType=PrepareType(n.schema,n.coerce))}function toKebabCase(e){return e.replace(/([a-z])([A-Z])/g,"$1-$2").toLowerCase()}function generateOrdinalSuffix(e){if(e<0)return"";const n=e+1,t=n%100;let r="th";if(t<11||t>13)switch(n%10){case 1:r="st";break;case 2:r="nd";break;case 3:r="rd"}return`${n}${r}`}function ln(e){return"\n".repeat(e)}function indent(e){return e<=0?"":" ".repeat(e)}function indentLines(e,n){return e.replace(/\n/g,"\n"+indent(n))}function stringifyValue(e){return e instanceof Set?"new Set(["+Array.from(e).map(e=>stringifyValue(e)).join(", ")+"])":JSON.stringify(e)}function insertAtEndOfFirstLine(e,n){const t=e.split("\n");return t[0]+=(t[0]?" ":"")+n,t.join("\n")}function subcommandPlaceholder(e){let n=e.placeholder;return n||(e.options.length>0&&(n+=(n?" ":"")+"[options]"),e.arguments.length>0&&(n+=(n?" ":"")+"<arguments>"),e.allowPositionals&&(n+=(n?" ":"")+"<positionals>"),n||(n=" "),n)}function parseArgv(e){const n=[];let t,r;for(let i=0;i<e.length;i++){const o=e[i],a=e[i-1],s=e[i+1],u=i===e.length-1;if('"'!==o&&"'"!==o||"\\"===a)if("\\"!==o||"\n"!==s){if(void 0!==r&&void 0===t){if(" "===o){n.push(r),r=void 0;continue}if(u){r+=o,n.push(r),r=void 0;continue}}" "===o&&void 0===t||("\\"!==o||"'"!==s&&'"'!==s)&&(r??(r=""),r+=o)}else i++;else{if(t===o){t=void 0;continue}if(void 0===t){t=o;continue}if(void 0!==t&&o!==t){r+=o;continue}}}return void 0!==r&&n.push(r),n}function escapeHtmlTags(e){const n={"&":"&","<":"<",">":">"};return e.replace(/(```[\s\S]*?```|`[^`]*`)|(<!--[\s\S]*?-->)|(<[^>]+>)/g,(e,t,r,i)=>t||(r||(i?i.replace(/[&<>]/g,e=>n[e]):e)))}function ansiRegex({onlyFirst:e=!1}={}){const n=String.raw`(?:\u0007|\u001B\u005C|\u009C)`,t=String.raw`(?:\u001B\][\s\S]*?${n})`,r=String.raw`[\u001B\u009B][[\]()#;?]*(?:\d{1,4}(?:[;:]\d{0,4})*)?[\dA-PR-TZcf-nq-uy=><~]`;return new RegExp(`${t}|${r}`,e?void 0:"g")}__export(utilities_exports,{PrepareType:()=>PrepareType,defaultValueAndIsOptional:()=>defaultValueAndIsOptional,escapeHtmlTags:()=>escapeHtmlTags,findDuplicateStrings:()=>findDuplicateStrings,generateOrdinalSuffix:()=>generateOrdinalSuffix,indent:()=>indent,indentLines:()=>indentLines,insertAtEndOfFirstLine:()=>insertAtEndOfFirstLine,ln:()=>ln,parseArgv:()=>parseArgv,prepareDefinitionTypes:()=>prepareDefinitionTypes,stringifyValue:()=>stringifyValue,stripAnsi:()=>stripAnsi,subcommandPlaceholder:()=>subcommandPlaceholder,toKebabCase:()=>toKebabCase,validateSync:()=>validateSync}),module.exports=__toCommonJS(utilities_exports);var regex=ansiRegex();function stripAnsi(e){return e.replace(regex,"")}function findDuplicateStrings(e){const n=new Set,t=new Set;for(const r of e)n.has(r)?t.add(r):n.add(r);return Array.from(t)}
|
|
2
|
+
//# sourceMappingURL=utilities.cjs.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"names":["utilities_exports","validateSync","schema","value","results","validate","Promise","TypeError","defaultValueAndIsOptional","issues","defaultValue","optional","PrepareType","coerceHandler","coerceTo","type","prepareDefinitionTypes","definition","object","Object","values","coerce","_preparedType","toKebabCase","input","replace","toLowerCase","generateOrdinalSuffix","index","number","lastTwoDigits","suffix","ln","count","repeat","indent","indentLines","text","spaces","stringifyValue","Set","Array","from","map","element","join","JSON","stringify","insertAtEndOfFirstLine","string","insert","lines","split","subcommandPlaceholder","metadata","placeholder","options","length","arguments","allowPositionals","parseArgv","argv","currentQuote","currentArgument","char","previousChar","nextChar","end","push","escapeHtmlTags","markdown","escapeMap","fullMatch","code","comment","tag","ch","ansiRegex","onlyFirst","ST","String","raw","osc","csi","RegExp","__export","findDuplicateStrings","stripAnsi","module","exports","__toCommonJS","regex","seen","duplicates","has","add"],"sources":["../../src/utilities.ts"],"sourcesContent":["import type { Argument, Option, PreparedType } from \"./types/definitions-types.ts\";\nimport type { SubcommandMetadata } from \"./types/metadata-types.ts\";\nimport type { SchemaResult, SchemaType } from \"./types/schema-types.ts\";\nimport type { CoerceMethod } from \"./types/types.ts\";\n\n/** @throws */\nexport function validateSync(schema: SchemaType, value?: unknown): SchemaResult {\n const results = schema[\"~standard\"].validate(value);\n if (results instanceof Promise) {\n throw new TypeError(\"async schema validation not supported\");\n }\n\n return results;\n}\n\nexport function defaultValueAndIsOptional(schema: SchemaType): { defaultValue: unknown; optional: boolean } {\n const results = validateSync(schema);\n\n if (results.issues) {\n return { defaultValue: undefined, optional: false };\n }\n\n return { defaultValue: results.value, optional: true };\n}\n\nexport function PrepareType(schema: SchemaType, coerceHandler: CoerceMethod<unknown>): PreparedType {\n const { optional, defaultValue } = defaultValueAndIsOptional(schema);\n\n return {\n schema,\n optional,\n defaultValue,\n coerceTo: coerceHandler.type,\n validate: (value?: string) => validateSync(schema, value && coerceHandler(value)),\n };\n}\n\nexport function prepareDefinitionTypes(definition: Record<string, Argument> | Record<string, Option> | undefined) {\n if (!definition) return;\n\n for (const object of Object.values<Argument | Option>(definition)) {\n if (!object.coerce) {\n object.coerce = (value: string) => value;\n }\n\n if (!object._preparedType) {\n object._preparedType = PrepareType(object.schema, object.coerce);\n }\n }\n}\n\nexport function toKebabCase(input: string): string {\n return input.replace(/([a-z])([A-Z])/g, \"$1-$2\").toLowerCase();\n}\n\n/**\n * Converts a zero-based index into its human-readable ordinal form.\n *\n * Examples: 0 → \"1st\" 1 → \"2nd\" 2 → \"3rd\" 3 → \"4th\" 10 → \"11th\"\n *\n * Handles special cases for 11, 12, and 13.\n *\n * @param index - The zero-based index to convert.\n * @returns The ordinal string (e.g., \"1st\", \"2nd\", \"3rd\", \"4th\", ...).\n */\nexport function generateOrdinalSuffix(index: number): string {\n if (index < 0) return \"\";\n\n const number = index + 1;\n const lastDigit = number % 10;\n const lastTwoDigits = number % 100;\n\n let suffix = \"th\";\n\n if (lastTwoDigits < 11 || lastTwoDigits > 13) {\n switch (lastDigit) {\n case 1: {\n suffix = \"st\";\n break;\n }\n case 2: {\n suffix = \"nd\";\n break;\n }\n case 3: {\n suffix = \"rd\";\n break;\n }\n }\n }\n\n return `${number}${suffix}`;\n}\n\n/** New line */\nexport function ln(count: number) {\n return \"\\n\".repeat(count);\n}\n\n/** Space */\nexport function indent(count: number) {\n if (count <= 0) return \"\";\n return \" \".repeat(count);\n}\n\n/** Indents every line in the given text by the provided number of spaces. Empty lines are preserved. */\nexport function indentLines(text: string, spaces: number): string {\n return text.replace(/\\n/g, \"\\n\" + indent(spaces));\n}\n\nexport function stringifyValue(value: unknown): string {\n // Set\n if (value instanceof Set) {\n return (\n \"new Set([\" +\n Array.from(value)\n .map(element => stringifyValue(element))\n .join(\", \") +\n \"])\"\n );\n }\n\n // unknown\n return JSON.stringify(value);\n}\n\n/** Insert text at the end of the first line */\nexport function insertAtEndOfFirstLine(string: string, insert: string) {\n const lines = string.split(\"\\n\");\n lines[0] += (lines[0] ? \" \" : \"\") + insert;\n return lines.join(\"\\n\");\n}\n\n/** Get the placeholder for a subcommand */\nexport function subcommandPlaceholder(metadata: SubcommandMetadata): string {\n let placeholder = metadata.placeholder;\n\n if (placeholder) {\n return placeholder;\n }\n\n if (metadata.options.length > 0) {\n placeholder += (placeholder ? \" \" : \"\") + \"[options]\";\n }\n\n if (metadata.arguments.length > 0) {\n placeholder += (placeholder ? \" \" : \"\") + \"<arguments>\";\n }\n\n if (metadata.allowPositionals) {\n placeholder += (placeholder ? \" \" : \"\") + \"<positionals>\";\n }\n\n if (!placeholder) {\n placeholder = \" \";\n }\n\n return placeholder;\n}\n\n/** Parse a string into an argv (array of arguments) */\nexport function parseArgv(input: string): string[] {\n const argv = [];\n\n let currentQuote: string | undefined = undefined;\n let currentArgument: string | undefined = undefined;\n\n for (let index = 0; index < input.length; index++) {\n const char = input[index];\n const previousChar = input[index - 1];\n const nextChar = input[index + 1];\n const end = index === input.length - 1;\n\n // entering/leaving quote\n if ((char === '\"' || char === \"'\") && previousChar !== \"\\\\\") {\n // leaving quote\n if (currentQuote === char) {\n currentQuote = undefined;\n continue;\n }\n\n // entering quote\n if (currentQuote === undefined) {\n currentQuote = char;\n continue;\n }\n\n // quote inside quote\n if (currentQuote !== undefined && char !== currentQuote) {\n currentArgument += char;\n continue;\n }\n continue;\n }\n\n // new line\n if (char === \"\\\\\" && nextChar === \"\\n\") {\n index++;\n continue;\n }\n\n // Add to argv\n if (currentArgument !== undefined && currentQuote === undefined) {\n if (char === \" \") {\n argv.push(currentArgument);\n currentArgument = undefined;\n continue;\n }\n\n if (end) {\n currentArgument += char;\n argv.push(currentArgument);\n currentArgument = undefined;\n continue;\n }\n }\n\n // Ignore spaces outside of quotes\n if (char === \" \" && currentQuote === undefined) {\n continue;\n }\n\n // Ignore escaped characters\n if (char === \"\\\\\" && (nextChar === \"'\" || nextChar === '\"')) {\n continue;\n }\n\n currentArgument ??= \"\";\n currentArgument += char;\n }\n\n // Add last argument\n if (currentArgument !== undefined) {\n argv.push(currentArgument);\n }\n\n return argv;\n}\n\n/**\n * Escape HTML characters inside HTML tags in a Markdown string, but leave code blocks, inline code, and HTML comments\n * unchanged.\n */\nexport function escapeHtmlTags(markdown: string): string {\n const escapeMap: Record<string, string> = { \"&\": \"&\", \"<\": \"<\", \">\": \">\" };\n\n // Captures:\n // 1) fenced code blocks or inline code\n // 2) HTML comments <!-- ... -->\n // 3) other HTML tags like <b>, <div attr=\"x\">, etc.\n const re = /(```[\\s\\S]*?```|`[^`]*`)|(<!--[\\s\\S]*?-->)|(<[^>]+>)/g;\n\n return markdown.replace(re, (fullMatch: string, code?: string, comment?: string, tag?: string) => {\n if (code) return code;\n if (comment) return comment;\n if (!tag) return fullMatch;\n\n return tag.replace(/[&<>]/g, ch => escapeMap[ch]);\n });\n}\n\n/** Credits: https://github.com/chalk/ansi-regex */\nfunction ansiRegex({ onlyFirst = false } = {}) {\n // Valid string terminator sequences are BEL, ESC\\, and 0x9c\n const ST = String.raw`(?:\\u0007|\\u001B\\u005C|\\u009C)`;\n\n // OSC sequences only: ESC ] ... ST (non-greedy until the first ST)\n const osc = String.raw`(?:\\u001B\\][\\s\\S]*?${ST})`;\n\n // CSI and related: ESC/C1, optional intermediates, optional params (supports ; and :) then final byte\n const csi = String.raw`[\\u001B\\u009B][[\\]()#;?]*(?:\\d{1,4}(?:[;:]\\d{0,4})*)?[\\dA-PR-TZcf-nq-uy=><~]`;\n\n const pattern = `${osc}|${csi}`;\n\n return new RegExp(pattern, onlyFirst ? undefined : \"g\");\n}\n\nconst regex = ansiRegex();\n\nexport function stripAnsi(string: string): string {\n return string.replace(regex, \"\");\n}\n\nexport function findDuplicateStrings(values: readonly string[]): string[] {\n const seen = new Set<string>();\n const duplicates = new Set<string>();\n\n for (const value of values) {\n if (seen.has(value)) {\n duplicates.add(value);\n continue;\n }\n\n seen.add(value);\n }\n\n return Array.from(duplicates);\n}\n"],"mappings":"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","ignoreList":[]}
|
|
@@ -0,0 +1,2 @@
|
|
|
1
|
+
import{transformOptionToArgument}from"../parse/parser-utilities.js";function generateBashAutocompleteScript(n){const o=n.subcommands??[],e={};for(const n of o)e[n.name]={options:n.options?Object.keys(n.options).map(n=>transformOptionToArgument(n)):[],aliases:n.aliases??[]};let t="";for(const[n,{options:o,aliases:s}]of Object.entries(e))t+=` ${n}${s.length>0?"|":""}${s.join("|")})\n`,t+=` opts="${o.join(" ")}"\n`,t+=" ;;\n";if(n.options?.length){t+=' "-"*)\n',t+=` opts="${(n.options?Object.keys(n.options).map(n=>transformOptionToArgument(n)):[]).join(" ")}"\n`,t+=" ;;\n"}return`# Auto-generated by zod-args-parser\n\n_${n.cliName}_autocomplete() {\n local cur prev commands opts subcommand used_opts filtered_opts\n\n cur="\${COMP_WORDS[COMP_CWORD]}"\n prev="\${COMP_WORDS[COMP_CWORD-1]}"\n subcommand="\${COMP_WORDS[1]}"\n\n commands="${Object.keys(e).join(" ")}"\n\n case "$subcommand" in\n${t}\n esac\n\n used_opts=""\n if [[ " \${commands[@]} " =~ " $subcommand " ]]; then\n for word in "\${COMP_WORDS[@]:2}"; do\n if [[ "$word" =~ ^- ]]; then\n used_opts+=" $word"\n fi\n done\n fi\n\n if [[ -n "$opts" ]]; then\n filtered_opts=""\n for opt in $opts; do\n if [[ ! " $used_opts " =~ " $opt " ]]; then\n filtered_opts+="$opt "\n fi\n done\n COMPREPLY=( $(compgen -W "$filtered_opts" -- "$cur") )\n return\n fi\n\n if [[ "\${COMP_CWORD}" -eq 1 ]]; then\n COMPREPLY=( $(compgen -W "$commands" -- "$cur") )\n fi\n}\n\ncomplete -F _${n.cliName}_autocomplete ${n.cliName}\n`}export{generateBashAutocompleteScript};
|
|
2
|
+
//# sourceMappingURL=bash-autocomplete-script.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"names":["transformOptionToArgument","generateBashAutocompleteScript","cliDefinition","subcommands","mappedCommands","subcommand","name","options","Object","keys","map","key","aliases","switchCase","entries","length","join","cliName"],"sources":["../../../src/autocomplete-scripts/bash-autocomplete-script.ts"],"sourcesContent":["import { transformOptionToArgument } from \"../parse/parser-utilities.ts\";\n\nimport type { Cli } from \"../types/definitions-types.ts\";\n\n/**\n * - Generate bash autocomplete script for your CLI\n * - The generated script should be added to your `.bash_profile` or `.bashrc` file:\n *\n * - Run: `nano $HOME/.bash_profile` or `nano $HOME/.bashrc`\n * - Add the following line: `source <generated script path>`\n * - Save and reopen bash to take effect\n */\nexport function generateBashAutocompleteScript(cliDefinition: Cli): string {\n const subcommands = cliDefinition.subcommands ?? [];\n\n type MappedCommands = Record<string, { options: string[]; aliases: string[] }>;\n\n const mappedCommands: MappedCommands = {};\n\n for (const subcommand of subcommands) {\n mappedCommands[subcommand.name] = {\n options: subcommand.options ? Object.keys(subcommand.options).map(key => transformOptionToArgument(key)) : [],\n aliases: subcommand.aliases ?? [],\n };\n }\n\n let switchCase = \"\";\n for (const [key, { options, aliases }] of Object.entries(mappedCommands)) {\n switchCase += ` ${key}${aliases.length > 0 ? \"|\" : \"\"}${aliases.join(\"|\")})\\n`;\n switchCase += ` opts=\"${options.join(\" \")}\"\\n`;\n switchCase += \" ;;\\n\";\n }\n\n if (cliDefinition.options?.length) {\n const optionsNames = cliDefinition.options\n ? Object.keys(cliDefinition.options).map(key => transformOptionToArgument(key))\n : [];\n switchCase += ` \"-\"*)\\n`;\n switchCase += ` opts=\"${optionsNames.join(\" \")}\"\\n`;\n switchCase += \" ;;\\n\";\n }\n\n return `# Auto-generated by zod-args-parser\n\n_${cliDefinition.cliName}_autocomplete() {\n local cur prev commands opts subcommand used_opts filtered_opts\n\n cur=\"\\${COMP_WORDS[COMP_CWORD]}\"\n prev=\"\\${COMP_WORDS[COMP_CWORD-1]}\"\n subcommand=\"\\${COMP_WORDS[1]}\"\n\n commands=\"${Object.keys(mappedCommands).join(\" \")}\"\n\n case \"$subcommand\" in\n${switchCase}\n esac\n\n used_opts=\"\"\n if [[ \" \\${commands[@]} \" =~ \" $subcommand \" ]]; then\n for word in \"\\${COMP_WORDS[@]:2}\"; do\n if [[ \"$word\" =~ ^- ]]; then\n used_opts+=\" $word\"\n fi\n done\n fi\n\n if [[ -n \"$opts\" ]]; then\n filtered_opts=\"\"\n for opt in $opts; do\n if [[ ! \" $used_opts \" =~ \" $opt \" ]]; then\n filtered_opts+=\"$opt \"\n fi\n done\n COMPREPLY=( $(compgen -W \"$filtered_opts\" -- \"$cur\") )\n return\n fi\n\n if [[ \"\\${COMP_CWORD}\" -eq 1 ]]; then\n COMPREPLY=( $(compgen -W \"$commands\" -- \"$cur\") )\n fi\n}\n\ncomplete -F _${cliDefinition.cliName}_autocomplete ${cliDefinition.cliName}\n`;\n}\n"],"mappings":"OAASA,8BAAiC,+BAYnC,SAASC,+BAA+BC,GAC7C,MAAMC,EAAcD,EAAcC,aAAe,GAI3CC,EAAiC,CAAC,EAExC,UAAWC,KAAcF,EACvBC,EAAeC,EAAWC,MAAQ,CAChCC,QAASF,EAAWE,QAAUC,OAAOC,KAAKJ,EAAWE,SAASG,IAAIC,GAAOX,0BAA0BW,IAAQ,GAC3GC,QAASP,EAAWO,SAAW,IAInC,IAAIC,EAAa,GACjB,UAAYF,GAAKJ,QAAEA,EAAAK,QAASA,MAAcJ,OAAOM,QAAQV,GACvDS,GAAc,OAAOF,IAAMC,EAAQG,OAAS,EAAI,IAAM,KAAKH,EAAQI,KAAK,UACxEH,GAAc,eAAeN,EAAQS,KAAK,UAC1CH,GAAc,aAGhB,GAAIX,EAAcK,SAASQ,OAAQ,CAIjCF,GAAc,cACdA,GAAc,gBAJOX,EAAcK,QAC/BC,OAAOC,KAAKP,EAAcK,SAASG,IAAIC,GAAOX,0BAA0BW,IACxE,IAEsCK,KAAK,UAC/CH,GAAc,YAChB,CAEA,MAAO,2CAENX,EAAce,6NAOHT,OAAOC,KAAKL,GAAgBY,KAAK,qCAG7CH,6lBA4BaX,EAAce,wBAAwBf,EAAce,WAEnE,Q","ignoreList":[]}
|
|
@@ -0,0 +1,2 @@
|
|
|
1
|
+
import{transformOptionToArgument}from"../parse/parser-utilities.js";function generatePowerShellAutocompleteScript(e){const n=e.subcommands??[],t=e.meta??{},o={};for(const e of n)o[e.name]={options:e.options?Object.keys(e.options).map(e=>transformOptionToArgument(e)):[],aliases:e.aliases??[]};const a=Object.keys(o).map(e=>`'${e}'`).join(", "),m=(e.options?Object.keys(e.options).map(e=>transformOptionToArgument(e)):[]).map(e=>`'${e}'`).join(", ");let r="switch ($subcommand) {\n";for(const[e,{options:n,aliases:t}]of Object.entries(o)){const o=n.map(e=>`'${e}'`).join(", ");r+=` '${e}' { @(${o}) }\n`;for(const e of t)r+=` '${e}' { @(${o}) }\n`}r+=` default { @(${m}) }\n }`;const s=t.description??t.descriptionMarkdown;let i="";return s&&(i=`<#\n.DESCRIPTION\n${s}\n${t.example?`\n.EXAMPLE\n${t.example}`:""}\n#>`),`# Auto-generated by zod-args-parser\n\n${i}\nfunction ${e.cliName} {\n param(\n [Parameter(Position = 0, Mandatory = $false)]\n [string]$subcommand,\n [Parameter(Position = 1, ValueFromRemainingArguments = $true)]\n [string[]]$arguments\n )\n $scriptPath = (Get-Command '${e.cliName}.ps1').Source\n if ($scriptPath) {\n $argumentList = @($subcommand) + ($arguments | Where-Object { $_ -notin '--', '--%' }) | Where-Object { $_ -ne '' }\n & $scriptPath @argumentList\n return\n }\n Write-Error "Could not find '${e.cliName}.ps1' script"\n}\n\nRegister-ArgumentCompleter -CommandName '${e.cliName}' -ParameterName 'subcommand' -ScriptBlock {\n param($commandName, $parameterName, $wordToComplete, $commandAst, $fakeBoundParameters)\n $subcommands = @(${a}${a&&m?", ":""}${m})\n $subcommands | Where-Object { $_ -like "$wordToComplete*" }\n}\n\nRegister-ArgumentCompleter -CommandName '${e.cliName}' -ParameterName 'arguments' -ScriptBlock {\n param($commandName, $parameterName, $wordToComplete, $commandAst, $fakeBoundParameters)\n $subcommand = $commandAst.CommandElements[1].Value\n $arguments = ${r}\n $arguments | Where-Object { $_ -like "$wordToComplete*" }\n}`}export{generatePowerShellAutocompleteScript};
|
|
2
|
+
//# sourceMappingURL=powershell-autocomplete-script.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"names":["transformOptionToArgument","generatePowerShellAutocompleteScript","cliDefinition","subcommands","meta","mappedCommands","subcommand","name","options","Object","keys","map","key","aliases","subcommandsString","join","cliOptionsString","option","switchCase","entries","optionsString","a","description","descriptionMarkdown","functionInfo","example","cliName"],"sources":["../../../src/autocomplete-scripts/powershell-autocomplete-script.ts"],"sourcesContent":["import { transformOptionToArgument } from \"../parse/parser-utilities.ts\";\n\nimport type { Cli } from \"../types/definitions-types.ts\";\n\n/**\n * - Generates a PowerShell autocomplete script for your CLI.\n * - The script assumes that your CLI is available as a `.ps1` file in the environment variable. For example:\n * `cliName.ps1`.\n * - This should return a path to your script: `(Get-Command <cliName>.ps1).Source`\n * - The generated script should be added to your `profile.ps1` file:\n *\n * - Run: `notepad $profile`\n * - Add the following line: `. \"<generated script path>\"`\n * - Save and reopen powershell to take effect\n */\nexport function generatePowerShellAutocompleteScript(cliDefinition: Cli): string {\n const subcommands = cliDefinition.subcommands ?? [];\n const meta = cliDefinition.meta ?? {};\n\n type MappedCommands = Record<string, { options: string[]; aliases: string[] }>;\n\n const mappedCommands: MappedCommands = {};\n\n for (const subcommand of subcommands) {\n mappedCommands[subcommand.name] = {\n options: subcommand.options ? Object.keys(subcommand.options).map(key => transformOptionToArgument(key)) : [],\n aliases: subcommand.aliases ?? [],\n };\n }\n\n const subcommandsString = Object.keys(mappedCommands)\n .map(key => `'${key}'`)\n .join(\", \");\n\n const optionsNames = cliDefinition.options\n ? Object.keys(cliDefinition.options).map(key => transformOptionToArgument(key))\n : [];\n const cliOptionsString = optionsNames.map(option => `'${option}'`).join(\", \");\n\n let switchCase = \"switch ($subcommand) {\\n\";\n for (const [key, { options, aliases }] of Object.entries(mappedCommands)) {\n const optionsString = options.map(option => `'${option}'`).join(\", \");\n switchCase += ` '${key}' { @(${optionsString}) }\\n`;\n for (const a of aliases) {\n switchCase += ` '${a}' { @(${optionsString}) }\\n`;\n }\n }\n switchCase += ` default { @(${cliOptionsString}) }\\n }`;\n\n const description = meta.description ?? meta.descriptionMarkdown;\n\n let functionInfo = \"\";\n if (description) {\n functionInfo = `<#\\n.DESCRIPTION\\n${description}\\n${meta.example ? `\\n.EXAMPLE\\n${meta.example}` : \"\"}\\n#>`;\n }\n\n return `# Auto-generated by zod-args-parser\n\n${functionInfo}\nfunction ${cliDefinition.cliName} {\n param(\n [Parameter(Position = 0, Mandatory = $false)]\n [string]$subcommand,\n [Parameter(Position = 1, ValueFromRemainingArguments = $true)]\n [string[]]$arguments\n )\n $scriptPath = (Get-Command '${cliDefinition.cliName}.ps1').Source\n if ($scriptPath) {\n $argumentList = @($subcommand) + ($arguments | Where-Object { $_ -notin '--', '--%' }) | Where-Object { $_ -ne '' }\n & $scriptPath @argumentList\n return\n }\n Write-Error \"Could not find '${cliDefinition.cliName}.ps1' script\"\n}\n\nRegister-ArgumentCompleter -CommandName '${cliDefinition.cliName}' -ParameterName 'subcommand' -ScriptBlock {\n param($commandName, $parameterName, $wordToComplete, $commandAst, $fakeBoundParameters)\n $subcommands = @(${subcommandsString}${subcommandsString && cliOptionsString ? \", \" : \"\"}${cliOptionsString})\n $subcommands | Where-Object { $_ -like \"$wordToComplete*\" }\n}\n\nRegister-ArgumentCompleter -CommandName '${cliDefinition.cliName}' -ParameterName 'arguments' -ScriptBlock {\n param($commandName, $parameterName, $wordToComplete, $commandAst, $fakeBoundParameters)\n $subcommand = $commandAst.CommandElements[1].Value\n $arguments = ${switchCase}\n $arguments | Where-Object { $_ -like \"$wordToComplete*\" }\n}`;\n}\n"],"mappings":"OAASA,8BAAiC,+BAenC,SAASC,qCAAqCC,GACnD,MAAMC,EAAcD,EAAcC,aAAe,GAC3CC,EAAOF,EAAcE,MAAQ,CAAC,EAI9BC,EAAiC,CAAC,EAExC,UAAWC,KAAcH,EACvBE,EAAeC,EAAWC,MAAQ,CAChCC,QAASF,EAAWE,QAAUC,OAAOC,KAAKJ,EAAWE,SAASG,IAAIC,GAAOZ,0BAA0BY,IAAQ,GAC3GC,QAASP,EAAWO,SAAW,IAInC,MAAMC,EAAoBL,OAAOC,KAAKL,GACnCM,IAAIC,GAAO,IAAIA,MACfG,KAAK,MAKFC,GAHed,EAAcM,QAC/BC,OAAOC,KAAKR,EAAcM,SAASG,IAAIC,GAAOZ,0BAA0BY,IACxE,IACkCD,IAAIM,GAAU,IAAIA,MAAWF,KAAK,MAExE,IAAIG,EAAa,2BACjB,UAAYN,GAAKJ,QAAEA,EAAAK,QAASA,MAAcJ,OAAOU,QAAQd,GAAiB,CACxE,MAAMe,EAAgBZ,EAAQG,IAAIM,GAAU,IAAIA,MAAWF,KAAK,MAChEG,GAAc,YAAYN,UAAYQ,SACtC,UAAWC,KAAKR,EACdK,GAAc,YAAYG,UAAUD,QAExC,CACAF,GAAc,uBAAuBF,cAErC,MAAMM,EAAclB,EAAKkB,aAAelB,EAAKmB,oBAE7C,IAAIC,EAAe,GAKnB,OAJIF,IACFE,EAAe,qBAAqBF,MAAgBlB,EAAKqB,QAAU,eAAerB,EAAKqB,UAAY,UAG9F,0CAEPD,eACStB,EAAcwB,4PAOSxB,EAAcwB,2QAMbxB,EAAcwB,uEAGNxB,EAAcwB,0KAElCZ,IAAoBA,GAAqBE,EAAmB,KAAO,KAAKA,sHAIpDd,EAAcwB,6NAGtCR,qEAGnB,Q","ignoreList":[]}
|
|
@@ -0,0 +1,42 @@
|
|
|
1
|
+
import{transformOptionToArgument}from"../parse/parser-utilities.js";function generateZshAutocompleteScript(e){const t=e.subcommands??[],a=e=>{return e.options?String.raw`${e.name})
|
|
2
|
+
_arguments \
|
|
3
|
+
${t=e,(t.options?Object.entries(t.options).map(([e,t])=>`'${transformOptionToArgument(e)}[${t.meta?.description??""}]'`):[]).join(" \\\n ")} \
|
|
4
|
+
'*: :_files' \
|
|
5
|
+
&& ret=0
|
|
6
|
+
;;`:"";var t};return String.raw`# Auto-generated by zod-args-parser
|
|
7
|
+
|
|
8
|
+
_${e.cliName}_autocomplete() {
|
|
9
|
+
local ret=1
|
|
10
|
+
|
|
11
|
+
_arguments -C \
|
|
12
|
+
'1: :_${e.cliName}_commands' \
|
|
13
|
+
'*:: :->subcmds' \
|
|
14
|
+
&& ret=0
|
|
15
|
+
|
|
16
|
+
case $state in
|
|
17
|
+
subcmds)
|
|
18
|
+
case "$words[1]" in
|
|
19
|
+
${t.map(e=>a(e)).filter(Boolean).join("\n ")}
|
|
20
|
+
*)
|
|
21
|
+
_arguments \
|
|
22
|
+
'*: :_files' \
|
|
23
|
+
&& ret=0
|
|
24
|
+
;;
|
|
25
|
+
esac
|
|
26
|
+
;;
|
|
27
|
+
esac
|
|
28
|
+
|
|
29
|
+
return $ret
|
|
30
|
+
}
|
|
31
|
+
|
|
32
|
+
_${e.cliName}_commands() {
|
|
33
|
+
local -a commands=(
|
|
34
|
+
${t.map(e=>`"${e.name}:${e.meta?.description??""}"`).join("\n ")}
|
|
35
|
+
)
|
|
36
|
+
|
|
37
|
+
_describe -t subcommands 'subcommand' commands
|
|
38
|
+
}
|
|
39
|
+
|
|
40
|
+
compdef _${e.cliName}_autocomplete ${e.cliName}
|
|
41
|
+
`}export{generateZshAutocompleteScript};
|
|
42
|
+
//# sourceMappingURL=zsh-autocomplete-script.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"names":["transformOptionToArgument","generateZshAutocompleteScript","cliDefinition","subcommands","genSubCommand","subcommand","options","String","raw","name","command","Object","entries","map","value","meta","description","join","cliName","subCommand","filter","Boolean"],"sources":["../../../src/autocomplete-scripts/zsh-autocomplete-script.ts"],"sourcesContent":["import { transformOptionToArgument } from \"../parse/parser-utilities.ts\";\n\nimport type { Cli, Subcommand } from \"../types/definitions-types.ts\";\n\n/**\n * - Generates a ZSH autocomplete script for your CLI.\n * - The generated script should be added to your `~/.zshrc` or `~/.zsh_profile` file:\n *\n * - Run: `nano $HOME/.zshrc` or `nano $HOME/.zsh_profile`\n * - Add the following line: `source <generated script path>`\n * - Save and reopen zsh to take effect\n */\nexport function generateZshAutocompleteScript(cliDefinition: Cli): string {\n const subcommands = cliDefinition.subcommands ?? [];\n\n const genArguments = (command: Subcommand) => {\n const optionsNameDesc = command.options\n ? Object.entries(command.options).map(\n ([name, value]) => `'${transformOptionToArgument(name)}[${value.meta?.description ?? \"\"}]'`,\n )\n : [];\n\n return optionsNameDesc.join(\" \\\\\\n \");\n };\n\n const genSubCommand = (subcommand: Subcommand) => {\n const options = subcommand.options;\n if (!options) return \"\";\n return String.raw`${subcommand.name})\n _arguments \\\n ${genArguments(subcommand)} \\\n '*: :_files' \\\n && ret=0\n ;;`;\n };\n\n return String.raw`# Auto-generated by zod-args-parser\n\n_${cliDefinition.cliName}_autocomplete() {\n local ret=1\n\n _arguments -C \\\n '1: :_${cliDefinition.cliName}_commands' \\\n '*:: :->subcmds' \\\n && ret=0\n\n case $state in\n subcmds)\n case \"$words[1]\" in\n ${subcommands\n .map(subCommand => genSubCommand(subCommand))\n .filter(Boolean)\n .join(\"\\n \")}\n *)\n _arguments \\\n '*: :_files' \\\n && ret=0\n ;;\n esac\n ;;\n esac\n\n return $ret\n}\n \n_${cliDefinition.cliName}_commands() {\n local -a commands=(\n ${subcommands.map(subcommand => `\"${subcommand.name}:${subcommand.meta?.description ?? \"\"}\"`).join(\"\\n \")}\n )\n\n _describe -t subcommands 'subcommand' commands\n}\n\ncompdef _${cliDefinition.cliName}_autocomplete ${cliDefinition.cliName}\n`;\n}\n"],"mappings":"OAASA,8BAAiC,+BAYnC,SAASC,8BAA8BC,GAC5C,MAAMC,EAAcD,EAAcC,aAAe,GAY3CC,EAAiBC,IAErB,OADgBA,EAAWC,QAEpBC,OAAOC,GAAA,GAAMH,EAAWI;;cAbXC,EAeGL,GAdCK,EAAQJ,QAC5BK,OAAOC,QAAQF,EAAQJ,SAASO,IAC9B,EAAEJ,EAAMK,KAAW,IAAId,0BAA0BS,MAASK,EAAMC,MAAMC,aAAe,QAEvF,IAEmBC,KAAK;;;cAKP,GAZF,IAACP,GAqBtB,OAAOH,OAAOC,GAAA;;GAEbN,EAAcgB;;;;YAILhB,EAAcgB;;;;;;;UAOhBf,EACCU,IAAIM,GAAcf,EAAce,IAChCC,OAAOC,SACPJ,KAAK;;;;;;;;;;;;;GAabf,EAAcgB;;MAEXf,EAAYU,IAAIR,GAAc,IAAIA,EAAWI,QAAQJ,EAAWU,MAAMC,aAAe,OAAOC,KAAK;;;;;;WAM5Ff,EAAcgB,wBAAwBhB,EAAcgB;CAE/D,Q","ignoreList":[]}
|
|
@@ -0,0 +1,2 @@
|
|
|
1
|
+
import{stringToBooleanArray,stringToNumberArray,stringToStringArray}from"./string-to-array.js";import{stringToBoolean,stringToNumber}from"./string-to-primitive.js";import{stringToBooleanSet,stringToNumberSet,stringToStringSet}from"./string-to-set.js";var string=r=>r;string.type="string";var boolean=r=>stringToBoolean(r);boolean.type="boolean";var number=r=>stringToNumber(r);number.type="number";var json=r=>{const n=n=>JSON.parse(n,r);return n.type="unknown",n},stringArray=r=>{const n=n=>stringToStringArray(n,r);return n.type="string[]",n},numberArray=r=>{const n=n=>stringToNumberArray(n,r);return n.type="number[]",n},booleanArray=r=>{const n=n=>stringToBooleanArray(n,r);return n.type="boolean[]",n},stringSet=r=>{const n=n=>stringToStringSet(n,r);return n.type="set<string>",n},numberSet=r=>{const n=n=>stringToNumberSet(n,r);return n.type="set<number>",n},booleanSet=r=>{const n=n=>stringToBooleanSet(n,r);return n.type="set<boolean>",n},coerce={string:string,boolean:boolean,number:number,stringArray:stringArray,numberArray:numberArray,booleanArray:booleanArray,stringSet:stringSet,numberSet:numberSet,booleanSet:booleanSet,json:json};export{coerce};
|
|
2
|
+
//# sourceMappingURL=coerce-methods.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"names":["stringToBooleanArray","stringToNumberArray","stringToStringArray","stringToBoolean","stringToNumber","stringToBooleanSet","stringToNumberSet","stringToStringSet","string","terminalInput","type","boolean","number","json","reviver","coerceMethod","JSON","parse","stringArray","separator","numberArray","booleanArray","stringSet","numberSet","booleanSet","coerce"],"sources":["../../../src/coerce/coerce-methods.ts"],"sourcesContent":["import { stringToBooleanArray, stringToNumberArray, stringToStringArray } from \"./string-to-array.ts\";\nimport { stringToBoolean, stringToNumber } from \"./string-to-primitive.ts\";\nimport { stringToBooleanSet, stringToNumberSet, stringToStringSet } from \"./string-to-set.ts\";\n\nimport type { CoerceMethod } from \"../types/types.ts\";\n\nconst string: CoerceMethod<string> = terminalInput => terminalInput;\nstring.type = \"string\";\n\nconst boolean: CoerceMethod<boolean> = terminalInput => stringToBoolean(terminalInput);\nboolean.type = \"boolean\";\n\nconst number: CoerceMethod<number> = terminalInput => stringToNumber(terminalInput);\nnumber.type = \"number\";\n\nconst json = <T>(reviver?: (this: any, key: string, value: any) => any): CoerceMethod<T> => {\n const coerceMethod: CoerceMethod<T> = terminalInput => JSON.parse(terminalInput, reviver) as T;\n coerceMethod.type = \"unknown\";\n return coerceMethod;\n};\n\nconst stringArray = (separator: string): CoerceMethod<string[]> => {\n const coerceMethod: CoerceMethod<string[]> = terminalInput => stringToStringArray(terminalInput, separator);\n coerceMethod.type = \"string[]\";\n return coerceMethod;\n};\n\nconst numberArray = (separator: string) => {\n const coerceMethod: CoerceMethod<number[]> = terminalInput => stringToNumberArray(terminalInput, separator);\n coerceMethod.type = \"number[]\";\n return coerceMethod;\n};\n\nconst booleanArray = (separator: string) => {\n const coerceMethod: CoerceMethod<boolean[]> = terminalInput => stringToBooleanArray(terminalInput, separator);\n coerceMethod.type = \"boolean[]\";\n return coerceMethod;\n};\n\nconst stringSet = (separator: string) => {\n const coerceMethod: CoerceMethod<Set<string>> = terminalInput => stringToStringSet(terminalInput, separator);\n coerceMethod.type = \"set<string>\";\n return coerceMethod;\n};\n\nconst numberSet = (separator: string) => {\n const coerceMethod: CoerceMethod<Set<number>> = terminalInput => stringToNumberSet(terminalInput, separator);\n coerceMethod.type = \"set<number>\";\n return coerceMethod;\n};\n\nconst booleanSet = (separator: string) => {\n const coerceMethod: CoerceMethod<Set<boolean>> = terminalInput => stringToBooleanSet(terminalInput, separator);\n coerceMethod.type = \"set<boolean>\";\n return coerceMethod;\n};\n\nexport const coerce = {\n string,\n boolean,\n number,\n /** @param separator - The separator to use to split the string. **Default** is `\",\"` */\n stringArray,\n /** @param separator - The separator to use to split the string. **Default** is `\",\"` */\n numberArray,\n /** @param separator - The separator to use to split the string. **Default** is `\",\"` */\n booleanArray,\n /** @param separator - The separator to use to split the string. **Default** is `\",\"` */\n stringSet,\n /** @param separator - The separator to use to split the string. **Default** is `\",\"` */\n numberSet,\n /** @param separator - The separator to use to split the string. **Default** is `\",\"` */\n booleanSet,\n json,\n};\n"],"mappings":"OAASA,qBAAsBC,oBAAqBC,wBAA2B,8BACtEC,gBAAiBC,mBAAsB,kCACvCC,mBAAoBC,kBAAmBC,sBAAyB,qBAIzE,IAAMC,OAA+BC,GAAiBA,EACtDD,OAAOE,KAAO,SAEd,IAAMC,QAAiCF,GAAiBN,gBAAgBM,GACxEE,QAAQD,KAAO,UAEf,IAAME,OAA+BH,GAAiBL,eAAeK,GACrEG,OAAOF,KAAO,SAEd,IAAMG,KAAWC,IACf,MAAMC,EAAgCN,GAAiBO,KAAKC,MAAMR,EAAeK,GAEjF,OADAC,EAAaL,KAAO,UACbK,GAGHG,YAAeC,IACnB,MAAMJ,EAAuCN,GAAiBP,oBAAoBO,EAAeU,GAEjG,OADAJ,EAAaL,KAAO,WACbK,GAGHK,YAAeD,IACnB,MAAMJ,EAAuCN,GAAiBR,oBAAoBQ,EAAeU,GAEjG,OADAJ,EAAaL,KAAO,WACbK,GAGHM,aAAgBF,IACpB,MAAMJ,EAAwCN,GAAiBT,qBAAqBS,EAAeU,GAEnG,OADAJ,EAAaL,KAAO,YACbK,GAGHO,UAAaH,IACjB,MAAMJ,EAA0CN,GAAiBF,kBAAkBE,EAAeU,GAElG,OADAJ,EAAaL,KAAO,cACbK,GAGHQ,UAAaJ,IACjB,MAAMJ,EAA0CN,GAAiBH,kBAAkBG,EAAeU,GAElG,OADAJ,EAAaL,KAAO,cACbK,GAGHS,WAAcL,IAClB,MAAMJ,EAA2CN,GAAiBJ,mBAAmBI,EAAeU,GAEpG,OADAJ,EAAaL,KAAO,eACbK,GAGIU,OAAS,CACpBjB,cACAG,gBACAC,cAEAM,wBAEAE,wBAEAC,0BAEAC,oBAEAC,oBAEAC,sBACAX,kB","ignoreList":[]}
|