Expand description
First-party standard adapters embedded in the toolchain (v0.17 §4.2).
The sources, bindings and metadata live in the data-only bynk-std crate
(standard-library track, #1940). This module re-exports them unchanged, so
bynk_check::firstparty::* keeps resolving for every consumer. Parsing and
injecting the sources is checker logic, and stays here in project_model.
Structs§
- Instantiable
- A capability a context may declare instances of (S4a, #1966, track D3).
- Unit
- One first-party unit, as data (standard-library track, S1 #1945). Adding a
unit to the standard library is an entry in
UNITSplus its files; the checker’s injection reads this table and needs no change.
Enums§
- Binding
- The TypeScript binding the toolchain supplies for a first-party unit.
- Option
Kind - The literal an instance option takes (standard-library P3, #2342).
- Platform
- The deploy platform — a selection axis distinct from the
--target {bundle,workers}emit mode (§6.2). It chooses whichbynk-<platform>.tsbinding is linked for thebynksurface. v0.17 shippedcloudflare; v0.18 addsnode, making the axis observable (and giving v0.19’s platform-lock enforcement a second platform to fire against). - Stability
- Whether a first-party item is under the 1.0 promise (track D2).
- Unit
Kind - What a first-party unit is, and so how a project brings it in: an adapter is
injected when a unit
consumesit, a commons when a unitusesit. Local to this crate, which has no dependencies;bynk-checkmaps it onto its own unit kind.
Constants§
- BYNK_
ADAPTER_ SRC - The reserved
bynkconformance-surface adapter (env-free core). It has nobindingclause — the toolchain supplies one per platform (seePlatform::bynk_binding_source). - BYNK_
CRYPTO_ SRC bynk.crypto— digests, HMAC, constant-time comparison, and signing and verification with imported keys, asEffects over Web Crypto.- BYNK_
LIST_ SRC bynk.list— combinators over theListkernel (fold,prepend,length,get,foldEff), written in ordinary Bynk (decision 0034): the first real consumer of v0.20a generics, lambdas, and effectful traversal. Order-preserving combinators build withfold+prependand a finalreverse— O(n) builds, neverappend(which would be O(n²) over the array lowering).- BYNK_
LOCALE_ SRC bynk.locale— the bundle-freerender/renderArghelpers and themessage/withText/withWhole/withNum/withMomentbuilder API (slice 1:renderformatscodeplus a deterministic sorted-by-key rendering ofparams; no lookup, no locale-dependent behaviour).uses bynk.locale.typesfor the types its own signatures name.- BYNK_
LOCALE_ TYPES_ SRC bynk.locale.types—LocaleTag,MessageArg,Message: a dependency-free leaf (nousesof its own) so any consumer, including thebynkadapter itself, can reach these types without also reachingbynk.locale’s value-level API.- BYNK_
MAP_ SRC bynk.map— combinators over theMapkernel (empty,insert,get,keys,length).fromListis deliberately absent: Bynk has no pair type to spell aList[(K, V)]with, so map construction isMap.empty()- BYNK_
STRING_ SRC bynk.string— Bynk-written helpers over the v0.22a string kernel (concat, theListfold, and theOptionkernel methods). The kernel itself is compiler built-in (ADR 0046); only derived helpers live here.joinfolds toOption[String]so empty-string elements are joined faithfully (a bare""accumulator could not tell “nothing yet” from “first element was empty”).- BYNK_
SURFACE_ CAPABILITIES - The capabilities the env-free
bynksurface exports (itsexports capability { … }line inbynk.bynk). First-party symbols live on synthetic files and are excluded from the binding index, so the unknown-name quick-fix (#852) offeringconsumes bynk { … }needs this explicit list. Kept in sync with the adapter source bybynk_surface_capabilities_match_the_adapter. - BYNK_
UNIT - The unit name of the reserved first-party surface adapter.
- CLOUDFLARE_
ADAPTER_ SRC - The first-party Cloudflare platform adapter (v0.19): the platform’s real
infrastructure capabilities, as they are — no portable intersection
(decision 0016). The v0.19 surface was the minimal, collection-free
Kv(decision 0023); v0.23 adds thelistdrain andputTtl(0050/0051); structured values are v0.22-codec composition, andQueueremains its own future increment. Like thebynksurface it has nobindingclause — the toolchain supplies the binding. - CLOUDFLARE_
BINDING_ FILENAME - The output path of the Cloudflare platform adapter’s binding module,
beside the adapter’s emitted
bynk/cloudflare.ts(distinct from thebynksurface’s per-platformbynk-cloudflare.ts). - CLOUDFLARE_
UNIT - The unit name of the first-party Cloudflare platform adapter (v0.19,
decision 0026): inside the reserved
bynk.*prefix, so no separate reservation rule is needed. The surface unitbynkstays the portability marker;bynk.<platform>units are the platform-locked ones. - CRYPTO_
KEY_ TYPES - The opaque key types
bynk.cryptoexports. A value of one holds a non-extractable platform key, so it is never stored, persisted, logged or sent (bynk.types.key_at_boundary), as aStreamis not. The checker finds them by the unit’s reserved span file, so a user type of the same name is not mistaken for one. - CRYPTO_
UNIT - The unit name of the first-party cryptography adapter (standard-library K4,
D5/D6): a flat sibling of
bynk, platform-free, with a binding per platform. - EDGE_
CACHE_ BINDING_ PREFIX - The prefix an
EdgeCacheinstance’s binding name would carry (first-party registry L7, #2414). Workers Cache is a Worker-wide[cache]setting with noenvbinding, so the name is never emitted: the instance is built from the entry’sctxinstead. - FIRSTPARTY_
SOURCES - Every first-party
.bynksource, paired with its unit name — the single list every consumer iterates: hover (describe_firstparty_symbol), completion (EMBEDDED_UNITS), and the parse guard (every_first_party_source_parses). Before this list each consumer kept its own hand-maintained copy, andbynk.locale/bynk.locale.typeswere added to none of them — so the whole locale surface hovered as nothing and was absent from completion (#901). - KV_
BINDING_ NAME - The fixed Worker binding name for the Kv namespace (decision C1, v0.19):
one namespace, one
[[kv_namespaces]]stanza, oneenv.KVfield. - LIST_
UNIT - The unit names of the first-party collection commons (v0.20b): the
Bynk-written combinator stdlib over the built-in
List/Mapkernel. Inside the reservedbynk.*prefix; injected whenuses-imported. - LOCALE_
TYPES_ UNIT - Inside the reserved
bynk.*prefix; injected whenuses-imported. Alsouses-imported by thebynkadapter itself, to givecapability Locale’scurrent() -> Effect[LocaleTag]a type to name (an adapter mayusesa commons; a commons cannot in turn reference an adapter). Split out ofbynk.locale(locale-negotiation-slice-2 follow-up, #886) specifically so a context can reachLocaleTagwithout also pulling inbynk.locale’s ownrender— which previously collided with a message-bundle commons’s own synthesisedrender(ADR 0272) the moment a context needed both. - LOCALE_
UNIT - Inside the reserved
bynk.*prefix; injected whenuses-imported by application code (a message-bundle commons, ADR 0272) — never directly by thebynkadapter itself any more (seeLOCALE_TYPES_UNIT). - MAP_
UNIT - R2_
BINDING_ PREFIX - The Worker binding prefix of an
R2instance (standard-library P5, #2323):capability Archives = R2binds asR2_ARCHIVES, an[[r2_buckets]]entry. - R2_
JURISDICTIONS - The jurisdictions an
R2bucket may be pinned to, as@jurisdiction(…)takes them andwrangler r2 bucket create --jurisdictionaccepts them. - R2_
JURISDICTION_ OPTION - The one creation option of an
R2instance: the bucket’s jurisdiction. - RATELIMIT_
BINDING_ PREFIX - The Worker binding prefix of a
RateLimitinstance (standard-library P3, #2342):capability LoginLimit = RateLimit @limit(100) @period(60.seconds)binds asRATELIMIT_LOGIN_LIMIT, a[[ratelimits]]entry. - RATELIMIT_
LIMIT_ OPTION - A
RateLimitinstance’s count: the calls per key allowed in one period. - RATELIMIT_
PERIODS - The windows the Workers Rate Limiting binding offers, in seconds.
- RATELIMIT_
PERIOD_ OPTION - A
RateLimitinstance’s window. - SERVICE_
BINDING_ PREFIX - The Worker binding prefix of a
Serviceinstance (interop I5, #1972):capability Billing = Service @worker("legacy-billing")binds asSERVICE_BILLING, a[[services]]entry naminglegacy-billing. - SERVICE_
WORKER_ OPTION - The option of a
Serviceinstance that names the Worker it reaches.worker, not D4’sservice:serviceis a keyword, so@service(…)does not parse, and widening the annotation grammar is language work (ADR 0023). - STRING_
UNIT - Inside the reserved
bynk.*prefix; injected whenuses-imported. - UNITS
- The standard library’s first-party units. Dependencies between them are not
listed here: they are the
uses/consumeslines of each unit’s own source, which the checker follows when it injects. The table’s order isFIRSTPARTY_SOURCES’ order; injection followsUnit::id_block.
Functions§
- allow_
entry_ is_ live - Whether
entry, an[unstable] allowentry, reaches anything inexperimental(a list of experimental item paths, such asexperimental_items): it names an experimental item, lies under one, or contains one. An entry that reaches nothing is stale. - allows
- Whether an
[unstable] allowlist coverspath: an entry covers itself and everything under it. - cloudflare_
binding_ source - The toolchain-supplied binding for the Cloudflare platform adapter.
- covers
- Whether
pathisprefixor lies under it, by whole dotted segments. - experimental_
items - Every experimental item, as a full path: each experimental unit, and each listed item of a stable one.
- experimental_
items_ in experimental_itemsover a given table.- exported_
names - The names a first-party unit exports: those on its
exports … { … }lines (an adapter) and its ownfns andtypes (a commons). Read from the source, so the list cannot fall behind it. - instantiable
- The instance kind
capabilityofunitis, if a context may declare named instances of it (S4a, #1966). - is_
extensible - Whether
name, an enum exported byunit, is extensible. - is_
extensible_ in is_extensibleover a given table.- names_
first_ party_ item - Whether
pathnames a first-party unit or an item it exports. Operation paths (bynk.cloudflare.Kv.list) are accepted when their item exists. - names_
first_ party_ item_ in names_first_party_itemover a given table.- platform_
of - v0.19 decision 0024: which first-party units are platform-native —
consuming one locks its deployment unit to the returned platform. This is
the metadata that drives effective-platform computation,
envresource typing, andwrangler.tomlstanza derivation; no user-facing marker syntax exists (additive later, when third-party platform adapters become a goal). - provider_
takes_ env - v0.18 decision 0021 / v0.19 decision 0025: which first-party provider
classes take the Worker
envas a constructor argument, keyed by (unit, provider class).SecretsProvideraccepts an optional env with aglobalThisprobe fallback;WorkersKvrequires env on use — KV namespaces exist only on the Workerenv, never onglobalThis. - split_
item_ path - The unit a dotted item path lies in, and the rest of the path relative to it
(empty for the unit itself). Unit names contain dots, so the longest unit
name that is a whole-segment prefix wins:
bynk.cloudflare.Kvis inbynk.cloudflare, not inbynk. - split_
item_ path_ in split_item_pathover a given table (tests pass a synthetic one).- stability_
of - The stability of a first-party item: a unit (
bynk.cloudflare), an exported item (bynk.cloudflare.Kv) or a capability operation (bynk.cloudflare.Kv.list). An item in an experimental unit, or under an experimental item, is experimental.Nonewhen no first-party unit holds the path. - stability_
of_ in stability_ofover a given table.- unit
- The registry entry for
name, if it is a first-party unit.