npm package discovery and stats viewer.

Discover Tips

  • General search

    [free text search, go nuts!]

  • Package details

    pkg:[package-name]

  • User packages

    @[username]

Sponsor

Optimize Toolset

I’ve always been into building performant and accessible sites, but lately I’ve been taking it extremely seriously. So much so that I’ve been building a tool to help me optimize and monitor the sites that I build to make sure that I’m making an attempt to offer the best experience to those who visit them. If you’re into performant, accessible and SEO friendly sites, you might like it too! You can check it out at Optimize Toolset.

About

Hi, 👋, I’m Ryan Hefner  and I built this site for me, and you! The goal of this site was to provide an easy way for me to check the stats on my npm packages, both for prioritizing issues and updates, and to give me a little kick in the pants to keep up on stuff.

As I was building it, I realized that I was actually using the tool to build the tool, and figured I might as well put this out there and hopefully others will find it to be a fast and useful way to search and browse npm packages as I have.

If you’re interested in other things I’m working on, follow me on Twitter or check out the open source projects I’ve been publishing on GitHub.

I am also working on a Twitter bot for this site to tweet the most popular, newest, random packages from npm. Please follow that account now and it will start sending out packages soon–ish.

Open Software & Tools

This site wouldn’t be possible without the immense generosity and tireless efforts from the people who make contributions to the world and share their work via open source initiatives. Thank you 🙏

© 2026 – Pkg Stats / Ryan Hefner

@sneat/extension-contactus-contract

v0.12.8

Published

The published TS contract for the contactus extension — contact/person/member DTOs, contact-group and contact-role types, the API request/response DTOs, the Angular service tokens (`contact-service`, `contactus-space-service`, `contact-nav-service`, `cont

Downloads

779

Readme

@sneat/extension-contactus-contract

The published TS contract for the contactus extension — contact/person/member DTOs, contact-group and contact-role types, the API request/response DTOs, the Angular service tokens (contact-service, contactus-space-service, contact-nav-service, contactus-nav-service, contact-group-service, contact-role-service, invite-service), and the cross-extension reuse surfaces (contact-ref, contacts-selector.contract, contacts-list.contract). This is the fleet's largest cross-family dependency target (81 of 148 measured cross-family contract imports point at contactus per the 2026-08-26 fleet audit in docs/boundaries.md) — no contract currently imports another (verified: zero @sneat/extension-* imports in src/), only foundational/core plus @sneat/auth-models.

Provenance

Source: sneat-co/ext-contactus, frontend/libs/extensions/contactus/contract, commit 1d703c36cd9a76bb07c54055e546edb9a44974dc (origin/main, read 2026-08-26). This is the sole viable source: sneat-co/ext-contactus owns the armed contract publisher (.github/workflows/publish.yml, nx release --yes on push to main); sneat-co/contactus (the product/app repo) was checked and contains no contract library at all — its frontend/package.json and its ui/runtime libs only consume @sneat/extension-contactus-contract (all three pin 0.12.2 exact), matching the brief's note that fleet consumers pin 0.12.2 exact. There is no drift to adjudicate between two sources because only one source exists; the product repo was a false lead.

The "stuck 0.12.3" tag, explained (git-tag ≠ package.json ≠ npm, and that's by design): ext-contactus's tags run v0.12.2v0.12.3, but the contract's checked-in package.json has read "version": "0.12.1" since the one commit that ever touched it (eabf67f, bootstrap) — it has never been bumped in git. This is not drift or breakage: the project's project.json sets "release": {"version": {"currentVersionResolver": "git-tag"}}, so nx release computes the published version from the next git tag at publish time and never writes it back to disk. git diff v0.12.2 v0.12.3 touches only backend/go.mod/go.sum/renovate.jsonzero contract-source changes between the two tags — so v0.12.3 was cut for the Go side only; npm's actual latest for the contract package is 0.12.2 (confirmed via npm view … versions: 0.12.0, 0.12.1, 0.12.2, no 0.12.3 ever published — nx release's nx-release-publish target only runs for projects whose conventional-commit-scanned changes actually touch them, and none did). Disk version here is seeded at 0.12.2 to match npm reality (REQ version-continuity-from-npm, same rule the gameboard migration applied); the paired version plan (.nx/version-plans/) requests the patch bump to 0.12.3 (now free — the npm number, unlike the git tag, was never spent on this package).

.d.ts + .mjs parity gate: confirmed git diff v0.12.2 HEAD -- frontend/libs/extensions/contactus/contract/ is empty — the contract source has not changed since the tag. Built it fresh at HEAD with this repo's own toolchain (pnpm install --no-frozen-lockfile --ignore-scripts + nx build ext-contactus-contract) and diffed the output against npm pack @sneat/[email protected]'s unpacked tarball: types/*.d.ts byte-identical, fesm2022/*.mjs byte-identical. Only package.json's version field differs (0.12.1 on disk vs 0.12.2 published — expected, see above). const-enum grep: zero const enum usages anywhere in src/ — no runtime-erasure risk for this migration mode.

Go half — backend, highest tag backend/v0.1.8: HEAD (1d703c3, "build: use Go 1.26 with Go 1.27 toolchain") sits two untagged commits ahead of backend/v0.1.8 (bc2350f) — both Go-toolchain-only bumps (build: bump Go to 1.27.0, then this Go-1.26+toolchain-1.27 commit), no .go file changed between the tag and HEAD (git diff backend/v0.1.8 HEAD -- backend/ touches only go.mod). Consumers (togethered, sneat-work, logistus) currently require v0.1.7; v0.1.8 is one untagged-content-identical release ahead of that. GOWORK=off go build/vet/test ./... all green at HEAD before the copy.

Extraction changes

Flattened src/lib/src/ (Nx's default nx g lib scaffold nests everything one level under lib/; this repo's convention, established by libs/taxus and every migrated family since, keeps library source directly under src/). Zero import-path risk: every relative import in the source tree goes at most one level up (../dto, ../contexts), entirely within the moved subtree, so only the top src/index.ts needed its ./lib/X prefixes rewritten to ./X — verified before the move (grep for ../../ inside src/lib/ found none) and after (full byte-diff above proves the built output is unaffected — the public API surface is defined by index.ts's export graph, not by internal file layout).

@sneat/auth-models — a new foundational peer for this repo. Six files (contact-types.ts, member.ts, contact-requests.ts, person.ts, contact-base.ts, apidto/requests.ts) import from @sneat/auth-models, which is not yet in this repo's root package.json devDependencies (every prior family only needed @sneat/core/data/dto/space-models). It stays a declared peerDependency here, matching the source's own (and npm's published) package.json exactly — root package.json is a forbidden file for this branch, and per the workspace's auto-install-peers (on by default, documented in .pnpmfile.cjs), pnpm install at the repo root will pull it in on its own once this lib exists; the merger needs to run pnpm install after combining batch-3 branches so pnpm-lock.yaml picks up @sneat/auth-models (this branch does not commit a lockfile change, per the pnpm-lock.yaml commits forbidden-files rule).

Test target: one spec, dto/contact-requests.spec.ts, already imports describe/it/expect explicitly from vitest (this workspace has no globals) — ported verbatim, no changes needed. Added vite.config.ts (environment: 'node', no Angular plugin — nothing under test touches Angular DI/TestBed) and an explicit test target in project.json (nx:run-commands, vitest run), the same fix gameboard's migration introduced for the same nx.json @nx/vite/@nx/vitest naming gap. src/test-setup.ts (self-contained already in the source — it does not depend on @sneat/core/testing, unlike calendarius's) was copied over but is currently unreferenced (no setupFiles entry): the one spec needs no DOM/Ionic shims. Kept in the tree for provenance and in case a future spec does.

Cross-family edges

None outgoing. Contactus imports only @angular/core, @sneat/auth-models, @sneat/core, @sneat/dto, @sneat/space-models, rxjs — all foundational/core. (It is a large incoming cross-family target for other families migrating later — see docs/boundaries.md.)