{
  "_id": "6a4953fef6c47c441949be98",
  "Package": "restrictR",
  "Title": "Composable Runtime Contracts",
  "Version": "0.2.0",
  "Authors@R": "person(\"Gilles\", \"Colling\", email = \"gilles.colling051@gmail.com\",\nrole = c(\"aut\", \"cre\", \"cph\"),\ncomment = c(ORCID = \"0000-0003-3070-6066\"))",
  "Description": "Build reusable validators from small building blocks using\nthe base pipe operator. Define runtime contracts once with\nrestrict() and enforce them anywhere in code. Validators\ncompose naturally, support dependent rules via formulas, and\nproduce clear, path-aware error messages. No domain-specific\nlanguage, no operator overloading, just idiomatic R.",
  "License": "MIT + file LICENSE",
  "Language": "en-US",
  "Encoding": "UTF-8",
  "Roxygen": "list(markdown = TRUE)",
  "URL": "https://gillescolling.com/restrictR/,\nhttps://github.com/gcol33/restrictR",
  "BugReports": "https://github.com/gcol33/restrictR/issues",
  "VignetteBuilder": "knitr",
  "Config/testthat/edition": "3",
  "Config/roxygen2/version": "8.0.0",
  "Repository": "https://gcol33.r-universe.dev",
  "Date/Publication": "2026-06-29 15:24:48 UTC",
  "RemoteUrl": "https://github.com/gcol33/restrictr",
  "RemoteRef": "HEAD",
  "RemoteSha": "e88cd0ec0bf6b4cd560abd0a4f5b48c2b5cfa78b",
  "NeedsCompilation": "no",
  "Packaged": {
    "Date": "2026-06-29 17:40:05 UTC",
    "User": "root"
  },
  "Author": "Gilles Colling [aut, cre, cph] (ORCID:\n<https://orcid.org/0000-0003-3070-6066>)",
  "Maintainer": "Gilles Colling <gilles.colling051@gmail.com>",
  "_user": "gcol33",
  "_type": "src",
  "_file": "restrictR_0.2.0.tar.gz",
  "_fileid": "https://r2.ropensci.org/eb774883b5ee332c5b7d67b397d304acc0f91ed009b2d27f3f5ecc746d0151a1",
  "_filesize": 196076,
  "_sha256": "eb774883b5ee332c5b7d67b397d304acc0f91ed009b2d27f3f5ecc746d0151a1",
  "_expires": "2026-10-12T18:42:04.000Z",
  "_created": "2026-06-29T17:40:05.000Z",
  "_published": "2026-07-04T18:42:06.086Z",
  "_jobs": [
    {
      "job": 85157370439,
      "time": 131,
      "config": "linux-devel-x86_64",
      "r": "4.7.0",
      "check": "OK",
      "artifact": "7959871864"
    },
    {
      "job": 85157370456,
      "time": 144,
      "config": "linux-release-x86_64",
      "r": "4.6.1",
      "check": "OK",
      "artifact": "7959876508"
    },
    {
      "job": 85157370615,
      "time": 106,
      "config": "macos-oldrel-arm64",
      "r": "4.5.3",
      "check": "OK",
      "artifact": "7959862267"
    },
    {
      "job": 85157370423,
      "time": 93,
      "config": "macos-release-arm64",
      "r": "4.6.1",
      "check": "OK",
      "artifact": "7959858118"
    },
    {
      "job": 85157370291,
      "time": 146,
      "config": "source",
      "r": "4.6.1",
      "check": "OK",
      "artifact": "7959821495"
    },
    {
      "job": 85157370448,
      "time": 110,
      "config": "wasm-release",
      "r": "4.6.0",
      "check": "OK",
      "artifact": "7959863510"
    },
    {
      "job": 85157370575,
      "time": 75,
      "config": "windows-devel",
      "r": "4.7.0",
      "check": "OK",
      "artifact": "7959850971"
    },
    {
      "job": 85157370584,
      "time": 73,
      "config": "windows-oldrel",
      "r": "4.5.3",
      "check": "OK",
      "artifact": "7959850251"
    },
    {
      "job": 85157370471,
      "time": 82,
      "config": "windows-release",
      "r": "4.6.1",
      "check": "OK",
      "artifact": "7959853690"
    }
  ],
  "_host": "GitHub-Actions",
  "_buildurl": "https://github.com/r-universe/gcol33/actions/runs/28391137980",
  "_status": "success",
  "_upstream": "https://github.com/gcol33/restrictr",
  "_commit": {
    "id": "e88cd0ec0bf6b4cd560abd0a4f5b48c2b5cfa78b",
    "author": "Gilles Colling <gilles.colling051@gmail.com>",
    "committer": "Gilles Colling <gilles.colling051@gmail.com>",
    "message": "Build MathJax $ delimiters from char code (pandoc-template safe)\n\nWhen rendering articles, pkgdown injects template.includes.in_header\ninto the pandoc template, where a literal $ is parsed as a template\nvariable and aborts the build (\"Error compiling template ... unexpected\").\nConstruct the $ inline/display math delimiters via String.fromCharCode\nso no literal $ reaches the template, keeping $...$ support without\nbreaking article builds.\n\nCo-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>\nClaude-Session: https://claude.ai/code/session_01FkxQF3p697Khtta3JkjHtC\n",
    "time": 1782746688
  },
  "_maintainer": {
    "name": "Gilles Colling",
    "email": "gilles.colling051@gmail.com",
    "login": "gcol33",
    "linkedin": "in/gilles-colling-0b3747306",
    "orcid": "0000-0003-3070-6066",
    "twitter": "@Gilles__Colling",
    "description": "Building tools for ecology in R, C++, and Rust.\nWhy did Microsoft have to buy it. Sadge :(",
    "uuid": 25009600
  },
  "_distro": "resolute",
  "_registered": true,
  "_dependencies": [
    {
      "package": "R",
      "version": ">= 4.1.0",
      "role": "Depends"
    },
    {
      "package": "knitr",
      "role": "Suggests"
    },
    {
      "package": "rmarkdown",
      "role": "Suggests"
    },
    {
      "package": "svglite",
      "role": "Suggests"
    },
    {
      "package": "testthat",
      "version": ">= 3.0.0",
      "role": "Suggests"
    }
  ],
  "_owner": "gcol33",
  "_selfowned": true,
  "_usedby": 0,
  "_updates": [
    {
      "week": "2026-10",
      "n": 19
    },
    {
      "week": "2026-11",
      "n": 1
    },
    {
      "week": "2026-21",
      "n": 1
    },
    {
      "week": "2026-22",
      "n": 3
    },
    {
      "week": "2026-24",
      "n": 6
    },
    {
      "week": "2026-25",
      "n": 1
    },
    {
      "week": "2026-27",
      "n": 2
    }
  ],
  "_tags": [
    {
      "name": "v0.1.0",
      "date": "2026-03-04"
    },
    {
      "name": "v0.1.2",
      "date": "2026-03-04"
    },
    {
      "name": "v0.2.0",
      "date": "2026-06-12"
    }
  ],
  "_topics": [
    "contracts",
    "runtime-checks",
    "runtime-contracts",
    "validation"
  ],
  "_stars": 5,
  "_contributors": [
    {
      "user": "gcol33",
      "count": 32,
      "uuid": 25009600
    }
  ],
  "_userbio": {
    "uuid": 25009600,
    "type": "user",
    "name": "Gilles Colling",
    "followers": 7,
    "description": "Building tools for ecology in R, C++, and Rust.\nWhy did Microsoft have to buy it. Sadge :("
  },
  "_downloads": {
    "count": 430,
    "source": "https://cranlogs.r-pkg.org/downloads/total/last-month/restrictR"
  },
  "_devurl": "https://github.com/gcol33/restrictr",
  "_pkgdown": "https://gillescolling.com/restrictR/",
  "_searchresults": 7,
  "_rbuild": "4.6.1",
  "_assets": [
    "extra/citation.cff",
    "extra/citation.html",
    "extra/citation.json",
    "extra/citation.txt",
    "extra/contents.json",
    "extra/NEWS.html",
    "extra/NEWS.txt",
    "extra/readme.html",
    "extra/readme.md",
    "extra/restrictR.html",
    "LICENSE",
    "manual.pdf"
  ],
  "_homeurl": "https://github.com/gcol33/restrictr",
  "_realowner": "gcol33",
  "_cranurl": true,
  "_releases": [
    {
      "version": "0.1.0",
      "date": "2026-03-09"
    }
  ],
  "_exports": [
    "as_contract_block",
    "as_contract_text",
    "fail",
    "is_valid",
    "require_between",
    "require_character",
    "require_class",
    "require_col_between",
    "require_col_character",
    "require_col_numeric",
    "require_col_one_of",
    "require_custom",
    "require_df",
    "require_finite",
    "require_has_cols",
    "require_integer",
    "require_length",
    "require_length_matches",
    "require_length_max",
    "require_length_min",
    "require_logical",
    "require_named",
    "require_negative",
    "require_no_na",
    "require_not_null",
    "require_nrow_matches",
    "require_nrow_min",
    "require_numeric",
    "require_one_of",
    "require_positive",
    "require_scalar",
    "require_unique",
    "restrict",
    "validation_errors"
  ],
  "_help": [
    {
      "page": "as_contract_block",
      "title": "Convert a Validator to a Multi-Line Block",
      "concept": [
        "core"
      ],
      "topics": [
        "as_contract_block"
      ]
    },
    {
      "page": "as_contract_text",
      "title": "Convert a Validator to Plain Text",
      "concept": [
        "core"
      ],
      "topics": [
        "as_contract_text"
      ]
    },
    {
      "page": "fail",
      "title": "Format a Validation Error",
      "concept": [
        "core"
      ],
      "topics": [
        "fail"
      ]
    },
    {
      "page": "is_valid",
      "title": "Test Whether a Value Satisfies a Validator",
      "concept": [
        "core"
      ],
      "topics": [
        "is_valid"
      ]
    },
    {
      "page": "require_between",
      "title": "Require Value in Range",
      "concept": [
        "value checks"
      ],
      "topics": [
        "require_between"
      ]
    },
    {
      "page": "require_character",
      "title": "Require Character Type",
      "concept": [
        "type checks"
      ],
      "topics": [
        "require_character"
      ]
    },
    {
      "page": "require_class",
      "title": "Require a Specific Class",
      "concept": [
        "type checks"
      ],
      "topics": [
        "require_class"
      ]
    },
    {
      "page": "require_col_between",
      "title": "Require Column Values in Range",
      "concept": [
        "column checks"
      ],
      "topics": [
        "require_col_between"
      ]
    },
    {
      "page": "require_col_character",
      "title": "Require Character Column",
      "concept": [
        "column checks"
      ],
      "topics": [
        "require_col_character"
      ]
    },
    {
      "page": "require_col_numeric",
      "title": "Require Numeric Column",
      "concept": [
        "column checks"
      ],
      "topics": [
        "require_col_numeric"
      ]
    },
    {
      "page": "require_col_one_of",
      "title": "Require Column Values from a Set",
      "concept": [
        "column checks"
      ],
      "topics": [
        "require_col_one_of"
      ]
    },
    {
      "page": "require_custom",
      "title": "Create a Custom Validation Step",
      "concept": [
        "core"
      ],
      "topics": [
        "require_custom"
      ]
    },
    {
      "page": "require_df",
      "title": "Require a Data Frame",
      "concept": [
        "type checks"
      ],
      "topics": [
        "require_df"
      ]
    },
    {
      "page": "require_finite",
      "title": "Require Finite Values",
      "concept": [
        "missingness checks"
      ],
      "topics": [
        "require_finite"
      ]
    },
    {
      "page": "require_has_cols",
      "title": "Require Specific Columns",
      "concept": [
        "structure checks"
      ],
      "topics": [
        "require_has_cols"
      ]
    },
    {
      "page": "require_integer",
      "title": "Require Integer Values",
      "concept": [
        "type checks"
      ],
      "topics": [
        "require_integer"
      ]
    },
    {
      "page": "require_length",
      "title": "Require Specific Length",
      "concept": [
        "structure checks"
      ],
      "topics": [
        "require_length"
      ]
    },
    {
      "page": "require_length_matches",
      "title": "Require Length Matching an Expression",
      "concept": [
        "structure checks"
      ],
      "topics": [
        "require_length_matches"
      ]
    },
    {
      "page": "require_length_max",
      "title": "Require Maximum Length",
      "concept": [
        "structure checks"
      ],
      "topics": [
        "require_length_max"
      ]
    },
    {
      "page": "require_length_min",
      "title": "Require Minimum Length",
      "concept": [
        "structure checks"
      ],
      "topics": [
        "require_length_min"
      ]
    },
    {
      "page": "require_logical",
      "title": "Require Logical Type",
      "concept": [
        "type checks"
      ],
      "topics": [
        "require_logical"
      ]
    },
    {
      "page": "require_named",
      "title": "Require Named Value",
      "concept": [
        "structure checks"
      ],
      "topics": [
        "require_named"
      ]
    },
    {
      "page": "require_negative",
      "title": "Require Negative Values",
      "concept": [
        "value checks"
      ],
      "topics": [
        "require_negative"
      ]
    },
    {
      "page": "require_no_na",
      "title": "Require No NA Values",
      "concept": [
        "missingness checks"
      ],
      "topics": [
        "require_no_na"
      ]
    },
    {
      "page": "require_not_null",
      "title": "Require Non-NULL Value",
      "concept": [
        "missingness checks"
      ],
      "topics": [
        "require_not_null"
      ]
    },
    {
      "page": "require_nrow_matches",
      "title": "Require Row Count Matching an Expression",
      "concept": [
        "structure checks"
      ],
      "topics": [
        "require_nrow_matches"
      ]
    },
    {
      "page": "require_nrow_min",
      "title": "Require Minimum Number of Rows",
      "concept": [
        "structure checks"
      ],
      "topics": [
        "require_nrow_min"
      ]
    },
    {
      "page": "require_numeric",
      "title": "Require Numeric Type",
      "concept": [
        "type checks"
      ],
      "topics": [
        "require_numeric"
      ]
    },
    {
      "page": "require_one_of",
      "title": "Require Value from a Set",
      "concept": [
        "value checks"
      ],
      "topics": [
        "require_one_of"
      ]
    },
    {
      "page": "require_positive",
      "title": "Require Positive Values",
      "concept": [
        "value checks"
      ],
      "topics": [
        "require_positive"
      ]
    },
    {
      "page": "require_scalar",
      "title": "Require Scalar Value",
      "concept": [
        "structure checks"
      ],
      "topics": [
        "require_scalar"
      ]
    },
    {
      "page": "require_unique",
      "title": "Require Unique Values",
      "concept": [
        "value checks"
      ],
      "topics": [
        "require_unique"
      ]
    },
    {
      "page": "restrict",
      "title": "Create a Composable Validator",
      "concept": [
        "core"
      ],
      "topics": [
        "restrict"
      ]
    },
    {
      "page": "validation_errors",
      "title": "Collect Validation Errors Without Throwing",
      "concept": [
        "core"
      ],
      "topics": [
        "validation_errors"
      ]
    }
  ],
  "_readme": "https://github.com/gcol33/restrictr/raw/HEAD/README.md",
  "_rundeps": [],
  "_vignettes": [
    {
      "source": "restrictR.Rmd",
      "filename": "restrictR.html",
      "title": "Runtime Contracts for R Functions",
      "author": "Gilles Colling",
      "engine": "knitr::rmarkdown",
      "headings": [
        "Overview",
        "Reusable Schemas",
        "Dependent Validation",
        "Enum Arguments",
        "Arbitrary Classes",
        "Data Frame with Mixed Constraints",
        "Checking Without Stopping",
        "Custom Steps",
        "Self-Documentation",
        "Using Contracts in Packages",
        "Relation to checkmate"
      ],
      "created": "2026-03-04 15:19:30",
      "modified": "2026-06-12 21:14:44",
      "commits": 4
    }
  ],
  "_score": 5.243038048686294,
  "_indexed": true,
  "_nocasepkg": "restrictr",
  "_universes": [
    "gcol33"
  ],
  "_binaries": [
    {
      "r": "4.7.0",
      "os": "linux",
      "version": "0.2.0",
      "date": "2026-06-29T17:42:19.000Z",
      "distro": "resolute",
      "commit": "e88cd0ec0bf6b4cd560abd0a4f5b48c2b5cfa78b",
      "fileid": "https://r2.ropensci.org/fdf9531abc0513796fe82bfe92db3305f4d28384f605e75f2438020027e7a30a",
      "status": "success",
      "check": "OK",
      "buildurl": "https://github.com/r-universe/gcol33/actions/runs/28391137980"
    },
    {
      "r": "4.6.1",
      "os": "linux",
      "version": "0.2.0",
      "date": "2026-06-29T17:42:30.000Z",
      "distro": "resolute",
      "commit": "e88cd0ec0bf6b4cd560abd0a4f5b48c2b5cfa78b",
      "fileid": "https://r2.ropensci.org/56c5a5c922b8bee80111def26020f3f1d8f4fe4a028a1a75d31973a6fce921e7",
      "status": "success",
      "check": "OK",
      "buildurl": "https://github.com/r-universe/gcol33/actions/runs/28391137980"
    },
    {
      "r": "4.5.3",
      "os": "mac",
      "version": "0.2.0",
      "date": "2026-06-29T17:41:50.000Z",
      "commit": "e88cd0ec0bf6b4cd560abd0a4f5b48c2b5cfa78b",
      "fileid": "https://r2.ropensci.org/bac903167c677e7b83d70e4171d0144f5a574441768685c81e3c9bdc1e37af62",
      "status": "success",
      "check": "OK",
      "buildurl": "https://github.com/r-universe/gcol33/actions/runs/28391137980"
    },
    {
      "r": "4.6.1",
      "os": "mac",
      "version": "0.2.0",
      "date": "2026-06-29T17:41:42.000Z",
      "commit": "e88cd0ec0bf6b4cd560abd0a4f5b48c2b5cfa78b",
      "fileid": "https://r2.ropensci.org/c1800f649e2ee2023498cc4feb3b8974e46f1bdb00339923b74cc3d3344dee3b",
      "status": "success",
      "check": "OK",
      "buildurl": "https://github.com/r-universe/gcol33/actions/runs/28391137980"
    },
    {
      "r": "4.6.0",
      "os": "wasm",
      "version": "0.2.0",
      "date": "2026-06-29T17:42:07.000Z",
      "commit": "e88cd0ec0bf6b4cd560abd0a4f5b48c2b5cfa78b",
      "fileid": "https://r2.ropensci.org/44f700ac18e48abf9c02ecd393dd8f4d95c4b149000d3dba2971aea6fd99dc87",
      "status": "success",
      "buildurl": "https://github.com/r-universe/gcol33/actions/runs/28391137980"
    },
    {
      "r": "4.7.0",
      "os": "win",
      "version": "0.2.0",
      "date": "2026-06-29T17:41:15.000Z",
      "commit": "e88cd0ec0bf6b4cd560abd0a4f5b48c2b5cfa78b",
      "fileid": "https://r2.ropensci.org/27c085db88df4e4248647afbce0af42ce475ebd6f484bacb462fb0987a422b31",
      "status": "success",
      "check": "OK",
      "buildurl": "https://github.com/r-universe/gcol33/actions/runs/28391137980"
    },
    {
      "r": "4.5.3",
      "os": "win",
      "version": "0.2.0",
      "date": "2026-06-29T17:41:11.000Z",
      "commit": "e88cd0ec0bf6b4cd560abd0a4f5b48c2b5cfa78b",
      "fileid": "https://r2.ropensci.org/b9f0ea118db8ec089777db43fb43bedebc6c5fa5165bd1d6422e8a4325376986",
      "status": "success",
      "check": "OK",
      "buildurl": "https://github.com/r-universe/gcol33/actions/runs/28391137980"
    },
    {
      "r": "4.6.1",
      "os": "win",
      "version": "0.2.0",
      "date": "2026-06-29T17:41:22.000Z",
      "commit": "e88cd0ec0bf6b4cd560abd0a4f5b48c2b5cfa78b",
      "fileid": "https://r2.ropensci.org/d248ab2572fb89a97a49cbfd6a49c27c35e1bd19b283262679eea521162e36fb",
      "status": "success",
      "check": "OK",
      "buildurl": "https://github.com/r-universe/gcol33/actions/runs/28391137980"
    }
  ]
}