@rakomi/react-native 0.0.0 → 0.1.0

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.
package/COMPLIANCE.md ADDED
@@ -0,0 +1,60 @@
1
+ # Compliance — `@rakomi/react-native`
2
+
3
+ Regulatory cross-reference for tenants in EU-regulated industries.
4
+
5
+ ## CRA — Reg. (EU) 2024/2847 (Cyber Resilience Act)
6
+
7
+ This package is a "product with digital elements" under CRA Annex I. Same posture as `@rakomi/node` and `@rakomi/react`.
8
+
9
+ | CRA reference | Compliance posture |
10
+ |---|---|
11
+ | Art. 13 — Vulnerability handling | Documented secure vulnerability-handling process; vulnerability records retained with the technical documentation. Internal fix targets (e.g. 14 days for High severity) are an operational SLA, **not** a statutory deadline. See `SECURITY.md`. |
12
+ | Art. 14 — Reporting of actively exploited vulnerabilities & severe incidents | Statutory reporting to the designated authority on the CRA timeline (early warning → notification → final report) and informing impacted users; published advisories via GitHub Security Advisories. See `SECURITY.md`. |
13
+ | Annex I — Essential cybersecurity requirements | Secure defaults: fixed asymmetric token-signature verification, PKCE with S256 challenge (RFC 7636), biometric opt-in, ephemeral session, minimal attack surface. |
14
+
15
+ ## GDPR — Reg. (EU) 2016/679
16
+
17
+ | Article | Posture |
18
+ |---|---|
19
+ | Art. 25 — Data protection by design | No PII collected client-side beyond what API requires; analytics opt-in via `onEvent` only. |
20
+ | Art. 28 — Processor obligations | SDK is a data-processor adjunct; tenant is data controller. DPA covers the relationship. |
21
+ | Art. 32 — Security of processing | Pseudonymisation + encryption at rest (Keychain) + access control (biometric opt-in). |
22
+
23
+ ## eIDAS 2 — Reg. (EU) 2024/1183 (EUDI Wallet)
24
+
25
+ End-of-2026 mandate. The `NativeAuthAdapter` exposes a typed forward-compat slot (`verifiers?: AttestationVerifier[]`) to non-breakingly add EUDI PID verification once the EU Wallet implementing acts publish.
26
+
27
+ ## NIS2 — Dir. (EU) 2022/2555
28
+
29
+ Tenants in essential / important sectors can attest that their auth-provider meets the NIS2 Art. 21 measures by referencing this SDK's posture in their conformity self-assessment:
30
+
31
+ - Risk-management measures: cryptographic + access controls documented in `SECURITY.md`.
32
+ - Incident handling: statutory reporting of actively exploited vulnerabilities / severe incidents per CRA Art. 14 (early warning, notification, final report); see `SECURITY.md`.
33
+ - Supply-chain security: SBOM (CycloneDX) shipped with every release; npm build provenance (SLSA Build L2) attached to every published package.
34
+
35
+ ## DORA — Reg. (EU) 2022/2554
36
+
37
+ For financial-sector tenants — the SDK's MFA + passkey roadmap satisfies SCA requirements (PSD2 RTS / PSD3-PSR forthcoming).
38
+
39
+ ## Apple App Store / Google Play Data Safety
40
+
41
+ Tenant fills the privacy nutrition labels. The SDK's data collection (consumer-app perspective):
42
+
43
+ - **User ID** — for app functionality (sign-in / sign-out lifecycle).
44
+ - **No** location, browsing history, advertising data, or third-party shipping by default.
45
+
46
+ ## WCAG 2.2 AA / EAA (Dir. 2019/882)
47
+
48
+ Mobile accessibility:
49
+
50
+ - Every interactive element has `accessibilityLabel` + `accessibilityRole` (verified by component snapshot tests).
51
+ - Keyboard hints (`textContentType`, `autoComplete`, `keyboardType`) appropriate for OTP / email / password.
52
+ - TOTP input uses `oneTimeCode` (iOS auto-fill); Android SMS Retriever is out-of-scope here (deferred).
53
+
54
+ ## OWASP MASVS L1 + Mobile Top 10 (2024)
55
+
56
+ See `SECURITY.md` for the per-control mapping.
57
+
58
+ ## EU AI Act — Reg. (EU) 2024/1689
59
+
60
+ This SDK does **NO AI inference**. Negative-scope statement for tenant comfort.
package/LICENSE ADDED
@@ -0,0 +1,21 @@
1
+ MIT License
2
+
3
+ Copyright (c) 2026 CRE8EVE Sp. z o.o.
4
+
5
+ Permission is hereby granted, free of charge, to any person obtaining a copy
6
+ of this software and associated documentation files (the "Software"), to deal
7
+ in the Software without restriction, including without limitation the rights
8
+ to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
9
+ copies of the Software, and to permit persons to whom the Software is
10
+ furnished to do so, subject to the following conditions:
11
+
12
+ The above copyright notice and this permission notice shall be included in all
13
+ copies or substantial portions of the Software.
14
+
15
+ THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
16
+ IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
17
+ FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
18
+ AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
19
+ LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
20
+ OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
21
+ SOFTWARE.
package/README.md CHANGED
@@ -1,3 +1,81 @@
1
- # @rakomi/react-native
1
+ # `@rakomi/react-native`
2
2
 
3
- Name reserved. The first stable release is published with build provenance from rakomidev/rakomi-js.
3
+ React Native / Expo SDK for [Rakomi](https://rakomi.com) — EU-native auth-as-a-service.
4
+
5
+ > **Status:** `0.1.0` — initial. API surface frozen for parity with `@rakomi/react`.
6
+ > Token-manager runtime, JWKS verification, social-provider deep-link auto-handler,
7
+ > bare-RN adapter example, and the demo app land in subsequent 0.x patches.
8
+
9
+ ## Install
10
+
11
+ ```sh
12
+ # Expo-managed (recommended)
13
+ expo install @rakomi/react-native expo-secure-store expo-web-browser expo-crypto expo-linking expo-local-authentication
14
+ npm install @react-native-community/netinfo
15
+
16
+ # Bare React Native
17
+ npm install @rakomi/react-native react-native-keychain react-native-inappbrowser-reborn react-native-quick-crypto
18
+ ```
19
+
20
+ ## Quickstart
21
+
22
+ ```tsx
23
+ import { RakomiProvider, SignedIn, SignedOut, UserButton, SignIn } from '@rakomi/react-native';
24
+
25
+ export default function App() {
26
+ return (
27
+ <RakomiProvider
28
+ publishableKey={process.env.EXPO_PUBLIC_RAKOMI_KEY!}
29
+ baseUrl="https://api.rakomi.com"
30
+ redirectUri="myapp://callback"
31
+ >
32
+ <SignedIn><UserButton /></SignedIn>
33
+ <SignedOut><SignIn /></SignedOut>
34
+ </RakomiProvider>
35
+ );
36
+ }
37
+ ```
38
+
39
+ ## What's included in 0.1.0
40
+
41
+ - **`<RakomiProvider>`** — context provider. Freezes the native adapter on mount. AppState debounce 300ms. Connectivity transitions wired.
42
+ - **Hooks (parity-locked):** `useAuth`, `useUser`, `useSession`, `useFlag`, `useOrganization`, `useOrganizationList`, `useLinkedAccounts`, `useTranslation`, `useAuthConfig`, `useBranding`, `useAnonymousSignin`, `useBaasPlans`, `useBaasSubscription`. Type-level parity with `@rakomi/react` is enforced by CI.
43
+ - **Components:** `<SignIn />` (password + social + MFA TOTP), `<SignUp />`, `<UserButton />`, `<UserProfile />` (preview), `<SignedIn>`, `<SignedOut>`, `<Protect>`, `<Feature>`. RN primitives only — no HTML, no WebView.
44
+ - **OAuth (RFC 8252):** PKCE S256, 32-byte state with single-use 60s TTL + constant-time comparison, system browser via `expo-web-browser` (`preferEphemeralSession: true` default), confused-deputy guard on callback ingest.
45
+ - **Native adapter contract:** `NativeAuthAdapter` interface with forward-compat slots (`verifiers` for EUDI, `dpopProver` for DPoP, `par` for RFC 9126 PAR).
46
+ - **`tokenCache` injection sugar** — replace storage without re-implementing the full adapter.
47
+ - **HKDF-style storage key derivation** — domain-separated per tenant + per purpose.
48
+
49
+ ## Security defaults
50
+
51
+ - Refresh tokens stored in `expo-secure-store` with `keychainAccessible: AFTER_FIRST_UNLOCK_THIS_DEVICE_ONLY` (no iCloud Keychain sync).
52
+ - Access tokens in-memory only (≤15min lifetime).
53
+ - WebView is **banned** in this package (RFC 8252 + ESLint guard).
54
+ - `Math.random` is **banned** (`expo-crypto.getRandomBytesAsync` is the only randomness source).
55
+ - `redirect: 'error'` on every fetch (SSRF guard — redirects are never auto-followed).
56
+
57
+ ## Compliance
58
+
59
+ See [`SECURITY.md`](./SECURITY.md) and [`COMPLIANCE.md`](./COMPLIANCE.md) for OWASP MASVS L1 mapping, Mobile Top-10, GDPR Art. 32, CRA (Reg. 2024/2847) Art. 13/14, and threat model.
60
+
61
+ ## Anti-patterns to avoid in consumer apps
62
+
63
+ - ❌ Don't store refresh tokens in `AsyncStorage` — it's not encrypted at rest.
64
+ - ❌ Don't ship without `expo prebuild` only if you're using bare-RN with custom native modules. Default Expo-managed flows do **not** require `expo prebuild`.
65
+ - ❌ Don't use generic redirect schemes (`rakomi://`) in production — register reverse-DNS (`com.example.myapp:/oauth/callback`) to defeat custom-scheme hijacking.
66
+
67
+ ## Threat model — what the SDK does NOT defend against
68
+
69
+ - Jailbroken / rooted devices at runtime (consumer adds `react-native-jail-monkey` if needed).
70
+ - Cloned / repackaged apps (use Play Integrity API / DeviceCheck on the consumer side).
71
+ - Hostile in-process npm dependencies (no JS-side mitigation; supply-chain hygiene is the consumer's responsibility).
72
+
73
+ ## Publisher webhooks
74
+
75
+ `verifyPublisherWebhook` verifies Rakomi publisher-app webhook deliveries (Standard Webhooks
76
+ HMAC-SHA256, replay defence, key-rotation tolerance). See the canonical
77
+ [publisher-webhook receiver contract](https://docs.rakomi.dev/guides/publisher-webhooks/).
78
+
79
+ ## License
80
+
81
+ See [`LICENSE`](./LICENSE).
package/SECURITY.md ADDED
@@ -0,0 +1,206 @@
1
+ # Security Policy
2
+
3
+ ## Supported Versions
4
+
5
+ This policy covers the four JS-family SDK packages: `@rakomi/node`, `@rakomi/sdk-core`,
6
+ `@rakomi/react`, and `@rakomi/react-native`.
7
+
8
+ While these packages remain pre-1.0 (`0.x`), they carry **no stability or support guarantee**
9
+ (SemVer 2.0.0 §4); the latest `0.x` line receives security updates on a best-effort basis.
10
+
11
+ From version **1.0** onward, Rakomi maintains the current (N) and previous (N-1) MAJOR in parallel, with N-1 receiving
12
+ security-only fixes. The CRA support period for each MAJOR is determined in accordance with
13
+ **CRA Art. 13(8)** — at least five years, or the product's expected use time where shorter. The authoritative, machine-readable support windows are published at
14
+ [`https://rakomi.com/.well-known/sdk-support.json`](https://rakomi.com/.well-known/sdk-support.json)
15
+ and rendered for humans on the [SDK Support & Lifecycle page](https://rakomi.com/sdk-support). This
16
+ document points at that single source rather than re-typing dated rows.
17
+
18
+ Vulnerabilities in peer dependencies (e.g., React) are out of Rakomi's direct scope, but Rakomi will update minimum peer dependency versions when a peer dependency has a known critical CVE affecting SDK users.
19
+
20
+ ## Reporting a Vulnerability
21
+
22
+ **Please do NOT open a public GitHub issue for security vulnerabilities.**
23
+
24
+ We support two reporting channels:
25
+
26
+ 1. **Email:** security@rakomi.com (preferred for initial contact)
27
+ 2. **GitHub Private Vulnerability Reporting:** [Submit via GitHub Security](https://github.com/rakomidev/rakomi-js/security/advisories/new) — each report automatically receives a GHSA tracking identifier (GHSA-xxxx-xxxx-xxxx).
28
+
29
+ For encrypted communication, a PGP public key is available at:
30
+ `https://rakomi.com/rakomi-security-pgp-key.asc`
31
+
32
+ Include the key fingerprint from this file (section 14) for out-of-band verification when sending encrypted reports.
33
+
34
+ ## Response Targets
35
+
36
+ We strive to meet these response targets. Actual response times may vary based on issue complexity and team availability.
37
+
38
+ | Severity | First Response | Fix Target | Disclosure |
39
+ |----------|---------------|------------|------------|
40
+ | Critical (actively exploited) | without undue delay (target: 24h) | 72h patch/mitigation | Designated EU authority notified within 24h (CRA Art. 14) |
41
+ | High | without undue delay (target: 48h) | 14 days | Coordinated after fix |
42
+ | Medium | 5 business days | 90 days | Coordinated after fix |
43
+ | Low | 5 business days | Next release cycle | Changelog note |
44
+
45
+ Severity is assessed using industry-standard vulnerability scoring criteria.
46
+
47
+ Rakomi is maintained by a small team. During periods of reduced availability, the auto-reply from security@rakomi.com will confirm receipt and provide the PGP key. For actively exploited vulnerabilities, we will respond as quickly as humanly possible.
48
+
49
+ ## Coordinated Vulnerability Disclosure (CVD) Policy
50
+
51
+ We follow a coordinated disclosure model with a **90-day embargo** period from the date of acknowledgment. During this time:
52
+
53
+ - Rakomi will work to develop and release a fix
54
+ - We will keep the reporter updated on progress at least every 7 business days for Critical/High severity issues
55
+ - We will notify the reporter when a fix is released
56
+ - After 90 days, we will publish a security advisory regardless of fix status
57
+
58
+ We may request an extension if the fix requires significant infrastructure changes, and we will coordinate with the reporter before any deadline extension.
59
+
60
+ ## Safe Harbor
61
+
62
+ We will not pursue legal action against researchers who follow this disclosure policy and act in good faith. We consider security research conducted in accordance with this policy to be:
63
+ - Conducted lawfully and in good faith under applicable EU law
64
+ - Not subject to legal action by CRE8EVE Sp. z o.o.
65
+
66
+ Safe harbor **does not extend to**:
67
+ - Accessing or modifying other users' data
68
+ - Performing denial of service attacks
69
+ - Social engineering employees or users
70
+ - Exfiltrating data beyond what is necessary to demonstrate the vulnerability
71
+ - Any activity that violates applicable law
72
+
73
+ ## Scope
74
+
75
+ **In scope:**
76
+ - `@rakomi/node`, `@rakomi/sdk-core`, `@rakomi/react`, and `@rakomi/react-native` SDK source code and published npm packages
77
+ - Security properties of API interactions initiated by the SDKs (request signing, token verification, credential handling)
78
+ - Authentication flow logic within the SDKs
79
+
80
+ **Out of scope:**
81
+ - Social engineering attacks against Rakomi employees or users
82
+ - Denial of service attacks
83
+ - Physical security
84
+ - Vulnerabilities in third-party services used by Rakomi's backend
85
+ - Vulnerabilities in peer dependencies (e.g., React) — reported to the relevant maintainer, but Rakomi will update minimum peer dependency versions when a peer dependency has a known critical CVE affecting SDK users
86
+
87
+ This policy applies to the official `@rakomi/node`, `@rakomi/sdk-core`, `@rakomi/react`, and `@rakomi/react-native` packages distributed via npmjs.com. Forks and derivatives are maintained by their respective authors. Customers in regulated sectors (healthcare, finance) may have additional notification obligations beyond this general policy — contact security@rakomi.com for sector-specific compliance documentation.
88
+
89
+ ## EU Authority Reporting
90
+
91
+ It is our **policy** to report actively exploited vulnerabilities and severe security incidents
92
+ having an impact on the security of our products to the relevant EU authority in accordance with
93
+ **CRA Art. 14**, on the statutory timeline: an early warning, followed by a fuller notification, and
94
+ a final report.
95
+
96
+ We report to the national coordinator CSIRT designated for our Member State of main establishment
97
+ (Poland), which is our live reporting channel today; onboarding to the EU single reporting platform
98
+ is in progress, and that platform is the documented onward path as it becomes available to
99
+ manufacturers.
100
+
101
+ ## Security Update Notifications
102
+
103
+ Consumers of Rakomi SDKs can receive security update notifications through:
104
+ - **GitHub Security Advisories** on this repository (subscribe via GitHub "Watch" → "Security alerts")
105
+ - **npm audit:** `npm audit` or `pnpm audit` will flag known vulnerabilities in installed versions
106
+
107
+ In accordance with CRA Art. 14(8), after becoming aware of an actively exploited vulnerability or a severe incident having an impact on the security of our products, we will inform impacted users (and, where appropriate, all users) — together with any available risk-mitigation or corrective measures — through the above channels.
108
+
109
+ ## Manufacturer Identification
110
+
111
+ **Legal entity:** CRE8EVE Sp. z o.o.
112
+ **Registered address:** Tulipanowa 4, 72-003 Dobra, Poland (EU)
113
+ **Contact:** security@rakomi.com (role-based — no personal mailbox or phone is published)
114
+ **Products covered:** `@rakomi/node`, `@rakomi/sdk-core`, `@rakomi/react`, `@rakomi/react-native` (published on npmjs.com)
115
+
116
+ The manufacturer is itself EU-established (Poland), so no CRA Art. 18 Authorised Representative is required (Art. 18 applies to manufacturers established outside the Union). CRA conformity assessment (Art. 32): these are Class I important products (Annex III). The internal-control procedure (Annex VIII, Module A — manufacturer self-assessment, no notified-body involvement) is available for a Class I product **only where harmonised standards, common specifications, or a European cybersecurity certification scheme at assurance level at least 'substantial' are applied in full** (Art. 32(2)); otherwise a third-party route — EU-type examination plus conformity to type (modules B+C), or full quality assurance (module H) — is required. The applicable route will be confirmed against the harmonised standards in force at the CRA application date. The EU Declaration of Conformity and CE marking attach at the CRA application date (Dec 2027) and are not yet issued. See the full manufacturer record at https://docs.rakomi.dev/compliance/manufacturer/.
117
+
118
+ ## Export Control / Cryptography Notice
119
+
120
+ The four `@rakomi/*` SDK packages incorporate and invoke cryptography — they verify asymmetric
121
+ digital signatures (JWT/token verification), compare key material in constant time, and rely on the
122
+ host platform's TLS for transport security. They are distributed as **publicly available, mass-market
123
+ software** with cryptographic functionality the end user cannot readily modify.
124
+
125
+ - **EU — Regulation (EU) 2021/821 (Dual-Use):** the SDKs qualify for the **mass-market** treatment
126
+ under the Cryptography Note (Note 3) to Category 5, Part 2 of Annex I — generally available to the
127
+ public, sold without restriction, and not designed for the user to alter the cryptographic
128
+ functionality. No export authorisation is required for their distribution within or from the EU, and —
129
+ unlike the US path — the EU decontrol is **self-executing**, with no notification or filing step.
130
+ - **US — Export Administration Regulations (EAR):** the cryptographic functionality is classifiable
131
+ under **ECCN 5D002**. As **publicly available** open-source software the source code is **not
132
+ subject to the EAR** (15 CFR §734.7(a)), and the corresponding object code is distributed under the
133
+ mass-market provisions. The one-time email notification of the public source-code URL to the U.S.
134
+ BIS and NSA is filed at first public release (15 CFR §742.15(b)).
135
+
136
+ This notice is provided for transparency and is **not legal advice**. Downstream redistributors are
137
+ responsible for their own export, import, and use obligations in their jurisdiction.
138
+
139
+ ## Post-Market Surveillance
140
+
141
+ Rakomi monitors SDK health after release through:
142
+ - Automated dependency vulnerability scanning (npm audit, Dependabot)
143
+ - Runtime error patterns derived from API logs (SDK version reported in User-Agent header)
144
+ - Periodic security review of SDK code per the internal security review process
145
+
146
+ This constitutes the "effective and regular tests and reviews of the security of the product with digital elements" required under CRA Annex I, Part II, point (3). The coordinated-vulnerability-disclosure policy required under CRA Annex I, Part II, point (5) is set out in the "Coordinated Vulnerability Disclosure (CVD) Policy" section above.
147
+
148
+ ## No Bounty Program
149
+
150
+ Rakomi does not currently operate a paid bug bounty program. We deeply appreciate responsible disclosure and will acknowledge researchers in security advisories (with their consent).
151
+
152
+ ## Reference: security.txt
153
+
154
+ This policy is referenced in our machine-readable security contact file (RFC 9116):
155
+ `/.well-known/security.txt` — deployed at `https://rakomi.com/.well-known/security.txt`
156
+
157
+ ---
158
+
159
+ ## What to Include in Your Report
160
+
161
+ *(ISO/IEC 29147:2018 §6.5)*
162
+
163
+ To help us triage efficiently, please include:
164
+
165
+ 1. **Affected package** name and version (e.g., @rakomi/node 0.2.0)
166
+ 2. **Reproduction steps** — a minimal, reproducible example
167
+ 3. **Impact assessment** — what an attacker could achieve
168
+ 4. **Proof of concept** — if available (do not use real user data)
169
+ 5. **Reporter contact** — so we can keep you updated
170
+
171
+ Reports that do not include reproduction steps or fall outside the defined scope may be closed without a tracking ID.
172
+
173
+ ## Report Tracking
174
+
175
+ *(ISO/IEC 29147:2018 §6.6)*
176
+
177
+ Each report receives a unique tracking identifier upon acknowledgment. For reports submitted via GitHub Private Vulnerability Reporting, the GHSA identifier (e.g., GHSA-xxxx-xxxx-xxxx) serves as the tracking ID. For email reports, we will direct you to also submit via GitHub PVR for formal tracking.
178
+
179
+ ## Status Updates
180
+
181
+ *(ISO/IEC 29147:2018 §6.4)*
182
+
183
+ We provide status updates at least every **7 business days** for Critical/High severity issues, and upon resolution for Medium/Low severity issues.
184
+
185
+ ## CVE Assignment
186
+
187
+ Confirmed vulnerabilities with sufficient impact will receive CVE identifiers via GitHub's CNA (CVE Numbering Authority) program.
188
+
189
+ ## Reporter Data Privacy
190
+
191
+ *(GDPR Art. 6(1)(f) + Art. 13/14)*
192
+
193
+ Reporter personal data (name, email) is processed under GDPR Art. 6(1)(f) legitimate interest for vulnerability coordination. This data is:
194
+ - Retained for the duration of the vulnerability lifecycle plus 2 years
195
+ - Not shared with third parties except as required for CVE assignment or regulatory reporting (e.g., ENISA, national CSIRT)
196
+ - Accessible to the reporter upon request (GDPR Art. 15)
197
+ - Deletable upon request after vulnerability closure (GDPR Art. 17, where not overridden by regulatory retention obligations)
198
+
199
+ To exercise your GDPR rights, contact security@rakomi.com.
200
+
201
+ ## PGP Key Fingerprint
202
+
203
+ The PGP public key for encrypted communication is available at:
204
+ `https://rakomi.com/rakomi-security-pgp-key.asc`
205
+
206
+ Verify the key fingerprint through an independent channel (e.g., LinkedIn, Twitter/X, or a direct phone call) before sending sensitive information.
@@ -0,0 +1,11 @@
1
+ THIRD-PARTY SOFTWARE NOTICES AND INFORMATION
2
+
3
+ For the npm package: @rakomi/react-native@0.1.0
4
+
5
+ This package's published bundle (`dist/`) INLINES the third-party components listed below.
6
+ Their copyright and permission notices are reproduced verbatim, as required by their licenses
7
+ (MIT permission-notice clause; Apache-2.0 §4(d) NOTICE propagation). This file is generated
8
+ from the build metafile by scripts/metafile-to-notices.mjs and ships in the package tarball.
9
+ No third-party code is bundled into this package. All dependencies are external
10
+ (declared in "dependencies"/"peerDependencies") and resolved at install time, so their
11
+ notices are carried by their own published packages — not reproduced here.