@arcforge/err 2.0.130 → 2.0.132

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (2) hide show
  1. package/package.json +2 -2
  2. package/src/map.ts +41 -0
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@arcforge/err",
3
- "version": "2.0.130",
3
+ "version": "2.0.132",
4
4
  "description": "Structured Axon errors — the code map every user-facing failure is rendered from.",
5
5
  "type": "module",
6
6
  "private": false,
@@ -15,7 +15,7 @@
15
15
  "deploy": "echo \"This package is published ONLY by apps/tui/scripts/release.ts, which pins workspace:* deps to concrete versions first. Publishing it directly ships an unresolvable dependency.\" && exit 1"
16
16
  },
17
17
  "dependencies": {
18
- "@arcforge/types": "2.0.130"
18
+ "@arcforge/types": "2.0.132"
19
19
  },
20
20
  "devDependencies": {
21
21
  "@types/bun": "latest",
package/src/map.ts CHANGED
@@ -1495,6 +1495,47 @@ export const errorMap = {
1495
1495
  source: "manifest",
1496
1496
  severity: "fatal",
1497
1497
  },
1498
+ // ── README assets (build/project/bundle/assets.ts) ──────────────────────
1499
+ ASSET_TYPE_REFUSED: {
1500
+ code: "AX-PROJECT-038",
1501
+ title: "Unsupported Asset Type",
1502
+ description: "A file in assets/ is not a type the registry serves. Images (png, jpg, jpeg, webp, gif) and video (mp4, webm, mov) are accepted. SVG is deliberately refused: it is an executable document that would be served from our own storage origin, so a published SVG is a script-injection surface for every visitor reading that README.",
1503
+ source: "manifest",
1504
+ severity: "fatal",
1505
+ expected: true,
1506
+ },
1507
+ ASSET_TOO_LARGE: {
1508
+ code: "AX-PROJECT-039",
1509
+ title: "Asset Exceeds Size Limit",
1510
+ description: "A single file in assets/ is over the per-asset limit. Assets exist to illustrate a README, not to distribute media — compress the file or link to it externally.",
1511
+ source: "manifest",
1512
+ severity: "fatal",
1513
+ expected: true,
1514
+ },
1515
+ ASSETS_BUDGET_EXCEEDED: {
1516
+ code: "AX-PROJECT-040",
1517
+ title: "Assets Exceed Total Budget",
1518
+ description: "The assets/ folder as a whole is over budget for one published version. Every version stores its own copy of every asset, so the total is what determines how much a package costs to host forever.",
1519
+ source: "manifest",
1520
+ severity: "fatal",
1521
+ expected: true,
1522
+ },
1523
+ ASSET_PATH_INVALID: {
1524
+ code: "AX-PROJECT-041",
1525
+ title: "Unsafe Asset Path",
1526
+ description: "An entry under assets/ is a symlink, or its name escapes the assets directory. Both are refused: a published asset must be a real file that lands where its name says it does, or extraction on the server could write outside the target directory.",
1527
+ source: "manifest",
1528
+ severity: "fatal",
1529
+ expected: true,
1530
+ },
1531
+ ASSET_UNREADABLE: {
1532
+ code: "AX-PROJECT-042",
1533
+ title: "Asset Could Not Be Processed",
1534
+ description: "A file in assets/ has an image extension but could not be decoded, so it is either corrupt or not the format its name claims. Publishing it would ship a broken image into a README.",
1535
+ source: "manifest",
1536
+ severity: "fatal",
1537
+ expected: true,
1538
+ },
1498
1539
  PORT_UNAVAILABLE: {
1499
1540
  code: "AX-PROJECT-031",
1500
1541
  title: "No Free Port",