releaseLexicon

tcmts.records.releaseLexicon · #bz4ytero · term · runs anywhere

The codes.tcm.release lexicon.

export const releaseLexicon = {
  lexicon: 1,
  id: "codes.tcm.release",
  description: "A release of a tcm package, announced on the AT Protocol by its author.",
  defs: {
    main: {
      type: "record",
      description:
        "A release of a tcm package, announced by its author: the namespace hash a version is, and tcm servers it can be fetched from. Its key is <package>:<version> (with any other character as ~), so a version is one record.",
      key: "any",
      record: {
        type: "object",
        required: [
          "package",
          "version",
          "namespace",
          "entry",
          "hashFormat",
          "notes",
          "sources",
          "createdAt",
        ],
        properties: {
          package: {
            type: "string",
            minLength: 1,
            maxLength: 214,
            description: "The package's name, as its manifest gives it: an npm package name.",
          },
          version: {
            type: "string",
            minLength: 5,
            maxLength: 64,
            description: "The version: major.minor.patch, semver.",
          },
          namespace: {
            type: "string",
            minLength: 8,
            maxLength: 128,
            description: "The package's namespace hash, as released: what `tcm lib add` mounts.",
          },
          entry: {
            type: "string",
            minLength: 8,
            maxLength: 128,
            description: "The hash of the history entry the release names.",
          },
          hashFormat: {
            type: "integer",
            minimum: 1,
            description: "The hash format the hashes are in (tcm's IR version).",
          },
          notes: {
            type: "string",
            maxLength: 100000,
            description: "The release notes, as markdown.",
          },
          sources: {
            type: "array",
            maxLength: 16,
            items: {
              type: "string",
              format: "uri",
              maxLength: 2048,
              description: "A tcm server's URL (http or https), as `tcm serve` serves it.",
            },
            description:
              "tcm servers to fetch it from, in order. What they send is re-hashed, so they need no trust.",
          },
          createdAt: {
            type: "string",
            format: "datetime",
            description: "When the release was made.",
          },
        },
      },
    },
  },
} as const

used by