Skip to content

createArrayOption

Creates an option that parses a delimited list into a typed array.

Example

ts
import { 
SC
} from "@duplojs/server-utils";
import {
C
,
DP
} from "@duplojs/utils";
const
UserId
=
C
.
createNewType
("user-id",
DP
.
number
(),
C
.
Positive
);
await
SC
.
exec
({
options
: [
SC
.
createArrayOption
(
"tags",
DP
.
string
(),
),
SC
.
createArrayOption
(
"files",
DP
.
string
(),
{
required
: true,
min
: 1,
separator
: ";",
}, ),
SC
.
createArrayOption
("emails",
C
.
Email
),
SC
.
createArrayOption
("userIds",
UserId
),
], }, ({
options
}) => {
});

Syntax

typescript
function createArrayOption<
  GenericName extends string,
  GenericSpec extends EligibleSpec,
  GenericMinValues extends number
>(
  name: GenericName,
  spec: GenericSpec,
  params: {
    description?: string
    aliases?: readonly string[]
    min?: GenericMinValues
    max?: number
    required: true
    separator?: string
  }
): Option<
  GenericName,
  [
    ...A.CreateTuple<ComputeOptionSpec<GenericSpec>, GenericMinValues>,
    ...ComputeOptionSpec<GenericSpec>[]
  ]
>

function createArrayOption<
  GenericName extends string,
  GenericSpec extends EligibleSpec,
  GenericMinValues extends number
>(
  name: GenericName,
  spec: GenericSpec,
  params?: {
    description?: string
    aliases?: readonly string[]
    min?: GenericMinValues
    max?: number
    separator?: string
  }
): Option<
  GenericName,
  | [
      ...A.CreateTuple<ComputeOptionSpec<GenericSpec>, GenericMinValues>,
      ...ComputeOptionSpec<GenericSpec>[]
    ]
  | undefined
>

Parameters

  • name (string) : option name used as --name.
  • spec (EligibleSpec) : parser or clean spec for each array element.
  • params (optional) : option metadata and array constraints.
  • params.required (true, optional) : throws when option is missing.
  • params.min (number, optional) : minimum number of values.
  • params.max (number, optional) : maximum number of values.
  • params.separator (string, default ",") : input separator.
  • params.description (string, optional) : help description.
  • params.aliases (string[], optional) : short aliases.

Return value

  • Required mode: Option<GenericName, [..items]>.
  • Optional mode: Option<GenericName, [..items] | undefined>.

Notes

  • Primitive parsers and clean primitive contracts are coerced from CLI string input automatically.

See also

Released under the MIT license.