Skip to content

feat(deno): migrate accessibility-everywhere tools/ (7/8 manifests, standards#253 longtail)#49

Merged
hyperpolymath merged 1 commit into
mainfrom
campaign-253/migrate-tools-deno
May 31, 2026
Merged

feat(deno): migrate accessibility-everywhere tools/ (7/8 manifests, standards#253 longtail)#49
hyperpolymath merged 1 commit into
mainfrom
campaign-253/migrate-tools-deno

Conversation

@hyperpolymath

Copy link
Copy Markdown
Owner

Summary

Workspace-style migration covering 7 of 8 npm manifests. The eighth (tools/browser-extension/package.json) is Class C — browser-extension packaging requires the npm-published archiver library at build time. Same Class C pattern as VSCode extensions / Office add-ins.

Migrated

Manifest Class New Imports
/package.json workspace-root extend /deno.json workspace field with 6 ReScript tools; tasks orchestrate setup/build/test/docker
tools/safe-dom/package.json B tools/safe-dom/deno.json rescript@^12, @rescript/core@^1.6
tools/cli/package.json B tools/cli/deno.json rescript, commander, chalk, ora, cli-table3, fs-extra
tools/github-action/package.json B tools/github-action/deno.json rescript, @actions/core, @actions/github
tools/monitoring-api/package.json B tools/monitoring-api/deno.json rescript, express, cors, helmet, express-rate-limit, compression, dotenv, joi, uuid
tools/stale/packages/core/package.json B tools/stale/packages/core/deno.json rescript@^11.1 (preserved), @rescript/core@^1.5, arangojs, dotenv
tools/stale/packages/scanner/package.json B tools/stale/packages/scanner/deno.json rescript@^11.1 (preserved), axe-core@^4.8, playwright, puppeteer

All Class B tools use deno run -A --node-modules-dir=auto npm:rescript@^<version> for build/clean/dev (rescript's install lifecycle requires resolvable node_modules).

Deferred (Class C — host-required)

  • tools/browser-extension/package.json — depends on archiver (npm-only zip lib) for Chrome/Firefox packaging; axe.min.js is copy-source-pathed from node_modules at build time. Class C pattern (host-required npm scaffolding). Tracked as carve-out candidate for hypatia rule extension (per-repo follow-up).

The root build:browser-extension task emits a documentation message instead of orchestrating, so deno task build:browser-extension does not silently fail.

Test plan

  • deno task build chains cli + safe-dom + scanner builds
  • Each tool's deno task build produces equivalent .mjs/.bs.js output to prior bare rescript
  • deno task setup invokes the arangodb setup script

Per per-repo follow-up tracker for standards#253 (campaign closed 2026-05-31, longtail tracked in project_estate_npm_to_deno_2026_05_28.md).

Refs hyperpolymath/standards#253.

🤖 Generated with Claude Code

…fests; browser-extension Class C deferred, standards#253 longtail)

Workspace-style migration covering 7 of 8 npm manifests. The eighth
(tools/browser-extension/package.json) is Class C — browser-extension
packaging requires the npm-published `archiver` library at build
time and the extension itself loads `axe.min.js` from a Node-resolved
path. Same Class C pattern as VSCode extensions / Office add-ins
(host-required npm scaffolding).

## Migrated

### Root (workspace coordination)
- /deno.json: extend the existing minimal config with `workspace`
  field (6 ReScript tool members) + `tasks` orchestrating
  setup/build/test/docker. browser-extension task documents the
  Class C deferral instead of attempting orchestration.

### tools/safe-dom/ (B)
- ReScript core library wrapping the DOM with safer types.
- Tasks: build/clean/dev via `deno run -A --node-modules-dir=auto npm:rescript@^12.0.0`.
- Imports: rescript@^12 + @rescript/core@^1.6.

### tools/cli/ (B)
- ReScript CLI using commander + chalk + ora + cli-table3 + fs-extra.
- All deps mapped via npm: specifiers.

### tools/github-action/ (B)
- ReScript GitHub Action using @actions/core + @actions/github.
- Standard GH Actions toolkit, npm: specifiers.

### tools/monitoring-api/ (B)
- ReScript Express server with helmet/cors/rate-limit/compression/joi.
- 9 npm: specifiers; serve task uses `deno run --allow-net --allow-read --allow-env`.

### tools/stale/packages/core/ (B)
- ReScript core for accessibility-everywhere-stale subsystem (ArangoDB).
- Pinned to rescript@^11.1 to preserve the version in package.json (not upgrading mid-migration).
- arangojs + dotenv via npm:.

### tools/stale/packages/scanner/ (B)
- ReScript accessibility scanner with axe-core + playwright + puppeteer.
- Pinned to rescript@^11.1 + axe-core@^4.8 + playwright@^1.40 + puppeteer@^24.

## Deferred (Class C — host-required)

- tools/browser-extension/package.json — depends on `archiver` (npm-only zip lib) for chrome/firefox packaging; `axe.min.js` is copy-source-pathed from node_modules at build time. Class C pattern (host requires npm). Not migrated; tracked as Class C carve-out candidate for hypatia rule extension (per-repo follow-up).

## Test plan

- [ ] `deno task build` builds cli + safe-dom + scanner via rescript
- [ ] `deno task build:browser-extension` emits documentation message
- [ ] tools/browser-extension/package.json scripts unchanged

Per per-repo follow-up tracker for standards#253 (campaign closed
2026-05-31, longtail tracked in project_estate_npm_to_deno_2026_05_28.md).

Refs hyperpolymath/standards#253.

Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>
@hyperpolymath
hyperpolymath enabled auto-merge (squash) May 31, 2026 07:29
@hyperpolymath
hyperpolymath merged commit c55fe07 into main May 31, 2026
16 of 34 checks passed
@hyperpolymath
hyperpolymath deleted the campaign-253/migrate-tools-deno branch May 31, 2026 07:33
@github-actions

Copy link
Copy Markdown

🔍 Hypatia Security Scan

Findings: 106 issues detected

Severity Count
🔴 Critical 0
🟠 High 31
🟡 Medium 75
View findings
[
  {
    "reason": "Action perpolymath/standards/.github/workflows/governance-reusable.yml@main\n needs attention",
    "type": "unpinned_action",
    "file": "governance.yml",
    "action": "pin_sha",
    "rule_module": "workflow_audit",
    "severity": "medium"
  },
  {
    "reason": "Issue in boj-build.yml",
    "type": "missing_timeout_minutes",
    "file": "boj-build.yml",
    "action": "flag",
    "rule_module": "workflow_audit",
    "severity": "medium"
  },
  {
    "reason": "Issue in casket-pages.yml",
    "type": "missing_timeout_minutes",
    "file": "casket-pages.yml",
    "action": "flag",
    "rule_module": "workflow_audit",
    "severity": "medium"
  },
  {
    "reason": "Issue in casket-pages.yml",
    "type": "missing_timeout_minutes",
    "file": "casket-pages.yml",
    "action": "flag",
    "rule_module": "workflow_audit",
    "severity": "medium"
  },
  {
    "reason": "Issue in ci.yml",
    "type": "missing_timeout_minutes",
    "file": "ci.yml",
    "action": "flag",
    "rule_module": "workflow_audit",
    "severity": "medium"
  },
  {
    "reason": "Issue in ci.yml",
    "type": "missing_timeout_minutes",
    "file": "ci.yml",
    "action": "flag",
    "rule_module": "workflow_audit",
    "severity": "medium"
  },
  {
    "reason": "Issue in ci.yml",
    "type": "missing_timeout_minutes",
    "file": "ci.yml",
    "action": "flag",
    "rule_module": "workflow_audit",
    "severity": "medium"
  },
  {
    "reason": "Issue in ci.yml",
    "type": "missing_timeout_minutes",
    "file": "ci.yml",
    "action": "flag",
    "rule_module": "workflow_audit",
    "severity": "medium"
  },
  {
    "reason": "Issue in ci.yml",
    "type": "missing_timeout_minutes",
    "file": "ci.yml",
    "action": "flag",
    "rule_module": "workflow_audit",
    "severity": "medium"
  },
  {
    "reason": "Issue in ci.yml",
    "type": "missing_timeout_minutes",
    "file": "ci.yml",
    "action": "flag",
    "rule_module": "workflow_audit",
    "severity": "medium"
  }
]

Powered by Hypatia Neurosymbolic CI/CD Intelligence

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant