mirror of
https://github.com/pezkuwichain/phishing.git
synced 2026-10-20 18:56:29 +00:00
The build rewrites every @pezkuwi import into a deno.land URL, so @pezkuwi/util becomes https://deno.land/x/pezkuwi/util/mod.ts. Upstream can do that because deno.land/x/polkadot is published. Our fork renamed the prefix to x/pezkuwi and never published there: deno.land/x/pezkuwi answers 404, and `deno check` has failed on three modules ever since. Reproduced locally with the same Deno the workflow installs, 2.9.7: TS2307 Cannot find module 'https://deno.land/x/pezkuwi/util/mod.ts' TS2307 Cannot find module 'https://deno.land/x/pezkuwi/util-crypto/mod.ts' TS2307 Cannot find module 'https://deno.land/x/pezkuwi/x-fetch/mod.ts' import_map.in.json is the tooling's own hook for exactly this — pezkuwi-dev-deno-map merges its entries into the generated import_map.json. All three are mapped to npm: specifiers, which Deno resolves natively, at the same version ranges the node build uses. The three packages are already on npm, so nothing new is published and the Deno build now checks against the very code we ship. `yarn deno` exits 0. This deliberately does not decide whether we ever claim deno.land/x/pezkuwi. If we do, the mappings come out again; until then the build works with what we have. The reason none of this was noticed is the second half of the change. The PR job carried continue-on-error from upstream, so its four steps could never turn a pull request red: build had been failing since 2026-09-13 and deno for far longer, and the job reported success throughout. All four pass now — verified locally, lint included, on a clean tree — so the flag is gone and they are gates again. deno.lock joins mod.ts and import_map.json in .gitignore: same check, same kind of generated artifact. package.json carries the key order its own build:before step produces. Gate: scripts/checkDenoMap.mjs, in the Lists workflow so it runs even when the toolchain cannot be installed. Nails: removing the map, bumping a dependency without the map, adding a @pezkuwi dependency with no mapping, and leaving a mapping behind after its dependency goes — each turns it red. Co-authored-by: Claude Opus 5 (1M context) <noreply@anthropic.com>
46 lines
1.8 KiB
YAML
46 lines
1.8 KiB
YAML
name: Lists
|
|
|
|
# The rules every change to the lists must pass: scripts/lists.test.mjs for the rules and the
|
|
# sync, scripts/checkLists.mjs for the committed files. Nothing to install, so this check stands
|
|
# on its own when the build toolchain does not.
|
|
on:
|
|
pull_request:
|
|
push:
|
|
branches: [master]
|
|
|
|
permissions: {}
|
|
|
|
jobs:
|
|
lists:
|
|
name: lists
|
|
runs-on: ubuntu-latest
|
|
timeout-minutes: 10
|
|
permissions:
|
|
contents: read
|
|
steps:
|
|
- uses: actions/checkout@3d3c42e5aac5ba805825da76410c181273ba90b1 # v7.0.1
|
|
with:
|
|
persist-credentials: false
|
|
- uses: actions/setup-node@820762786026740c76f36085b0efc47a31fe5020 # v7.0.0
|
|
with:
|
|
node-version: "22"
|
|
- name: Rules for the lists and the sync
|
|
run: node --test scripts/lists.test.mjs
|
|
- name: The committed lists
|
|
run: node scripts/checkLists.mjs
|
|
# What the repository says about itself: the build toolchain reads
|
|
# repository.url and dies on a host it cannot parse, and a wrong homepage
|
|
# ships to everyone who installs the package. This lives here rather than
|
|
# in the build job because it must run even when the build cannot.
|
|
- name: The repository's own metadata
|
|
run: node scripts/checkRepoMeta.mjs
|
|
# Whether the Deno build can still reach its dependencies. Same reason as
|
|
# above: it must run even when the toolchain cannot be installed, and it
|
|
# is the check that would have caught the broken map years earlier.
|
|
- name: The Deno import map
|
|
run: node scripts/checkDenoMap.mjs
|
|
# What phishing.pezkuwichain.io runs before it serves a new master: against a scratch
|
|
# repository and web root, with these lists.
|
|
- name: The host's publish checks
|
|
run: bash pezkuwi/host/test-publish.sh
|