Fixture.ts overview

Fixture schemas: a declarative final state from which a volume is built.

Since v0.6.0


models

Fixture (type alias)

A whole fixture.

Signature

export type Fixture = {
  readonly entries: readonly (
    | {
        readonly path: string | BytePath
        readonly kind: "directory"
        readonly metadata?: {
          readonly uid?: number
          readonly gid?: number
          readonly mode?: number
          readonly atimeNs?: bigint
          readonly mtimeNs?: bigint
          readonly ctimeNs?: bigint
          readonly birthtimeNs?: bigint
        }
      }
    | {
        readonly path: string | BytePath
        readonly kind: "file"
        readonly bytes: Uint8Array<ArrayBufferLike>
        readonly metadata?: {
          readonly uid?: number
          readonly gid?: number
          readonly mode?: number
          readonly atimeNs?: bigint
          readonly mtimeNs?: bigint
          readonly ctimeNs?: bigint
          readonly birthtimeNs?: bigint
        }
      }
    | {
        readonly path: string | BytePath
        readonly kind: "symlink"
        readonly target: string | BytePath
        readonly metadata?: {
          readonly uid?: number
          readonly gid?: number
          readonly mode?: number
          readonly atimeNs?: bigint
          readonly mtimeNs?: bigint
          readonly ctimeNs?: bigint
          readonly birthtimeNs?: bigint
        }
      }
    | {
        readonly kind: "hardLink"
        readonly path: string | BytePath
        readonly target: string | BytePath
      }
  )[]
  readonly rootMetadata?: {
    readonly uid?: number
    readonly gid?: number
    readonly mode?: number
    readonly atimeNs?: bigint
    readonly mtimeNs?: bigint
    readonly ctimeNs?: bigint
    readonly birthtimeNs?: bigint
  }
}

Source

Since v0.6.0

FixtureEntry (type alias)

One fixture entry.

Signature

export type FixtureEntry =
  | {
      readonly path: string | BytePath
      readonly kind: "directory"
      readonly metadata?: {
        readonly uid?: number
        readonly gid?: number
        readonly mode?: number
        readonly atimeNs?: bigint
        readonly mtimeNs?: bigint
        readonly ctimeNs?: bigint
        readonly birthtimeNs?: bigint
      }
    }
  | {
      readonly path: string | BytePath
      readonly kind: "file"
      readonly bytes: Uint8Array<ArrayBufferLike>
      readonly metadata?: {
        readonly uid?: number
        readonly gid?: number
        readonly mode?: number
        readonly atimeNs?: bigint
        readonly mtimeNs?: bigint
        readonly ctimeNs?: bigint
        readonly birthtimeNs?: bigint
      }
    }
  | {
      readonly path: string | BytePath
      readonly kind: "symlink"
      readonly target: string | BytePath
      readonly metadata?: {
        readonly uid?: number
        readonly gid?: number
        readonly mode?: number
        readonly atimeNs?: bigint
        readonly mtimeNs?: bigint
        readonly ctimeNs?: bigint
        readonly birthtimeNs?: bigint
      }
    }
  | {
      readonly kind: "hardLink"
      readonly path: string | BytePath
      readonly target: string | BytePath
    }

Source

Since v0.6.0

FixtureMetadata (type alias)

Metadata a fixture entry pins.

Signature

export type FixtureMetadata = {
  readonly uid?: number
  readonly gid?: number
  readonly mode?: number
  readonly atimeNs?: bigint
  readonly mtimeNs?: bigint
  readonly ctimeNs?: bigint
  readonly birthtimeNs?: bigint
}

Source

Since v0.6.0

schemas

Fixture

Schema for a whole fixture: optional root metadata and its entries in order.

Signature

declare const Fixture: Schema.Struct<{
  readonly rootMetadata: Schema.optionalKey<
    Schema.Struct<{
      readonly uid: Schema.optionalKey<Schema.Natural>
      readonly gid: Schema.optionalKey<Schema.Natural>
      readonly mode: Schema.optionalKey<Schema.Natural>
      readonly atimeNs: Schema.optionalKey<Schema.BigInt>
      readonly mtimeNs: Schema.optionalKey<Schema.BigInt>
      readonly ctimeNs: Schema.optionalKey<Schema.BigInt>
      readonly birthtimeNs: Schema.optionalKey<Schema.BigInt>
    }>
  >
  readonly entries: Schema.$Array<
    Schema.toTaggedUnion<
      "kind",
      readonly [
        Schema.Struct<{
          readonly kind: Schema.Literal<"directory">
          readonly path: Schema.Union<readonly [Schema.String, Schema.declare<BytePath, BytePath>]>
          readonly metadata: Schema.optionalKey<
            Schema.Struct<{
              readonly uid: Schema.optionalKey<Schema.Natural>
              readonly gid: Schema.optionalKey<Schema.Natural>
              readonly mode: Schema.optionalKey<Schema.Natural>
              readonly atimeNs: Schema.optionalKey<Schema.BigInt>
              readonly mtimeNs: Schema.optionalKey<Schema.BigInt>
              readonly ctimeNs: Schema.optionalKey<Schema.BigInt>
              readonly birthtimeNs: Schema.optionalKey<Schema.BigInt>
            }>
          >
        }>,
        Schema.Struct<{
          readonly kind: Schema.Literal<"file">
          readonly path: Schema.Union<readonly [Schema.String, Schema.declare<BytePath, BytePath>]>
          readonly bytes: Schema.Uint8Array
          readonly metadata: Schema.optionalKey<
            Schema.Struct<{
              readonly uid: Schema.optionalKey<Schema.Natural>
              readonly gid: Schema.optionalKey<Schema.Natural>
              readonly mode: Schema.optionalKey<Schema.Natural>
              readonly atimeNs: Schema.optionalKey<Schema.BigInt>
              readonly mtimeNs: Schema.optionalKey<Schema.BigInt>
              readonly ctimeNs: Schema.optionalKey<Schema.BigInt>
              readonly birthtimeNs: Schema.optionalKey<Schema.BigInt>
            }>
          >
        }>,
        Schema.Struct<{
          readonly kind: Schema.Literal<"symlink">
          readonly path: Schema.Union<readonly [Schema.String, Schema.declare<BytePath, BytePath>]>
          readonly target: Schema.Union<readonly [Schema.String, Schema.declare<BytePath, BytePath>]>
          readonly metadata: Schema.optionalKey<
            Schema.Struct<{
              readonly uid: Schema.optionalKey<Schema.Natural>
              readonly gid: Schema.optionalKey<Schema.Natural>
              readonly mode: Schema.optionalKey<Schema.Natural>
              readonly atimeNs: Schema.optionalKey<Schema.BigInt>
              readonly mtimeNs: Schema.optionalKey<Schema.BigInt>
              readonly ctimeNs: Schema.optionalKey<Schema.BigInt>
              readonly birthtimeNs: Schema.optionalKey<Schema.BigInt>
            }>
          >
        }>,
        Schema.Struct<{
          readonly kind: Schema.Literal<"hardLink">
          readonly path: Schema.Union<readonly [Schema.String, Schema.declare<BytePath, BytePath>]>
          readonly target: Schema.Union<readonly [Schema.String, Schema.declare<BytePath, BytePath>]>
        }>
      ]
    >
  >
}>

Source

Since v0.6.0

FixtureEntry

Schema for one fixture entry: a directory, a file with bytes, a symbolic link, or a hard link to an earlier file entry.

Signature

declare const FixtureEntry: Schema.toTaggedUnion<
  "kind",
  readonly [
    Schema.Struct<{
      readonly kind: Schema.Literal<"directory">
      readonly path: Schema.Union<readonly [Schema.String, Schema.declare<BytePath, BytePath>]>
      readonly metadata: Schema.optionalKey<
        Schema.Struct<{
          readonly uid: Schema.optionalKey<Schema.Natural>
          readonly gid: Schema.optionalKey<Schema.Natural>
          readonly mode: Schema.optionalKey<Schema.Natural>
          readonly atimeNs: Schema.optionalKey<Schema.BigInt>
          readonly mtimeNs: Schema.optionalKey<Schema.BigInt>
          readonly ctimeNs: Schema.optionalKey<Schema.BigInt>
          readonly birthtimeNs: Schema.optionalKey<Schema.BigInt>
        }>
      >
    }>,
    Schema.Struct<{
      readonly kind: Schema.Literal<"file">
      readonly path: Schema.Union<readonly [Schema.String, Schema.declare<BytePath, BytePath>]>
      readonly bytes: Schema.Uint8Array
      readonly metadata: Schema.optionalKey<
        Schema.Struct<{
          readonly uid: Schema.optionalKey<Schema.Natural>
          readonly gid: Schema.optionalKey<Schema.Natural>
          readonly mode: Schema.optionalKey<Schema.Natural>
          readonly atimeNs: Schema.optionalKey<Schema.BigInt>
          readonly mtimeNs: Schema.optionalKey<Schema.BigInt>
          readonly ctimeNs: Schema.optionalKey<Schema.BigInt>
          readonly birthtimeNs: Schema.optionalKey<Schema.BigInt>
        }>
      >
    }>,
    Schema.Struct<{
      readonly kind: Schema.Literal<"symlink">
      readonly path: Schema.Union<readonly [Schema.String, Schema.declare<BytePath, BytePath>]>
      readonly target: Schema.Union<readonly [Schema.String, Schema.declare<BytePath, BytePath>]>
      readonly metadata: Schema.optionalKey<
        Schema.Struct<{
          readonly uid: Schema.optionalKey<Schema.Natural>
          readonly gid: Schema.optionalKey<Schema.Natural>
          readonly mode: Schema.optionalKey<Schema.Natural>
          readonly atimeNs: Schema.optionalKey<Schema.BigInt>
          readonly mtimeNs: Schema.optionalKey<Schema.BigInt>
          readonly ctimeNs: Schema.optionalKey<Schema.BigInt>
          readonly birthtimeNs: Schema.optionalKey<Schema.BigInt>
        }>
      >
    }>,
    Schema.Struct<{
      readonly kind: Schema.Literal<"hardLink">
      readonly path: Schema.Union<readonly [Schema.String, Schema.declare<BytePath, BytePath>]>
      readonly target: Schema.Union<readonly [Schema.String, Schema.declare<BytePath, BytePath>]>
    }>
  ]
>

Source

Since v0.6.0

FixtureMetadata

Schema for the metadata a fixture entry may pin; omitted fields take the volume's defaults.

Signature

declare const FixtureMetadata: Schema.Struct<{
  readonly uid: Schema.optionalKey<Schema.Natural>
  readonly gid: Schema.optionalKey<Schema.Natural>
  readonly mode: Schema.optionalKey<Schema.Natural>
  readonly atimeNs: Schema.optionalKey<Schema.BigInt>
  readonly mtimeNs: Schema.optionalKey<Schema.BigInt>
  readonly ctimeNs: Schema.optionalKey<Schema.BigInt>
  readonly birthtimeNs: Schema.optionalKey<Schema.BigInt>
}>

Source

Since v0.6.0