Skip to content

Commit 4cabc6c

Browse files
Expose package export types
1 parent 213a4d5 commit 4cabc6c

5 files changed

Lines changed: 59 additions & 0 deletions

File tree

Lines changed: 6 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,6 @@
1+
---
2+
"@razroo/ray-core": patch
3+
"@razroo/ray-sdk": patch
4+
---
5+
6+
Add explicit package export type conditions so TypeScript consumers resolving through `exports` find the published declarations.

packages/core/package.json

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -20,6 +20,7 @@
2020
"types": "./dist/index.d.ts",
2121
"exports": {
2222
".": {
23+
"types": "./dist/index.d.ts",
2324
"development": "./src/index.ts",
2425
"default": "./dist/index.js"
2526
}

packages/sdk/package.json

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -22,6 +22,7 @@
2222
"types": "./dist/index.d.ts",
2323
"exports": {
2424
".": {
25+
"types": "./dist/index.d.ts",
2526
"development": "./src/index.ts",
2627
"default": "./dist/index.js"
2728
}

scripts/release/pack-check.mjs

Lines changed: 16 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -577,6 +577,21 @@ function assertNoPackedPackageScripts(packageName, manifest) {
577577
}
578578
}
579579

580+
function assertRootExportTypes(packageName, manifest) {
581+
if (!isRecord(manifest.exports)) {
582+
throw new Error(`${packageName} package.json exports must be an object`);
583+
}
584+
585+
const rootExport = manifest.exports["."];
586+
if (!isRecord(rootExport)) {
587+
throw new Error(`${packageName} package.json exports["."] must be an object`);
588+
}
589+
590+
if (rootExport.types !== manifest.types) {
591+
throw new Error(`${packageName} package.json exports["."].types must match package.json types`);
592+
}
593+
}
594+
580595
export function assertPackedPackageManifest(packageName, manifest, entries) {
581596
if (!isRecord(manifest)) {
582597
throw new Error(`${packageName} package.json must contain an object`);
@@ -602,6 +617,7 @@ export function assertPackedPackageManifest(packageName, manifest, entries) {
602617
if (manifest.exports === undefined) {
603618
throw new Error(`${packageName} package.json exports must be present`);
604619
}
620+
assertRootExportTypes(packageName, manifest);
605621

606622
const exportTargets = [];
607623
collectExportTargets(packageName, manifest.exports, "exports", exportTargets);

scripts/release/pack-check.test.ts

Lines changed: 35 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -532,6 +532,7 @@ function safePackedManifest(overrides: Record<string, unknown> = {}): Record<str
532532
types: "./dist/index.d.ts",
533533
exports: {
534534
".": {
535+
types: "./dist/index.d.ts",
535536
development: "./src/index.ts",
536537
default: "./dist/index.js",
537538
},
@@ -557,6 +558,7 @@ test("assertPackedPackageManifest rejects broken entry point targets", () => {
557558
safePackedManifest({
558559
exports: {
559560
".": {
561+
types: "./dist/index.d.ts",
560562
default: "./dist/missing.js",
561563
},
562564
},
@@ -579,6 +581,39 @@ test("assertPackedPackageManifest rejects broken entry point targets", () => {
579581
);
580582
});
581583

584+
test("assertPackedPackageManifest requires root export types", () => {
585+
assert.throws(
586+
() =>
587+
assertPackedPackageManifest(
588+
"@razroo/ray-sdk",
589+
safePackedManifest({
590+
exports: {
591+
".": {
592+
development: "./src/index.ts",
593+
default: "./dist/index.js",
594+
},
595+
},
596+
}),
597+
safePackedManifestEntries,
598+
),
599+
/@razroo\/ray-sdk package\.json exports\["\."\]\.types must match package\.json types/,
600+
);
601+
602+
assert.throws(
603+
() =>
604+
assertPackedPackageManifest(
605+
"@razroo/ray-sdk",
606+
safePackedManifest({
607+
exports: {
608+
".": "./dist/index.js",
609+
},
610+
}),
611+
safePackedManifestEntries,
612+
),
613+
/@razroo\/ray-sdk package\.json exports\["\."\] must be an object/,
614+
);
615+
});
616+
582617
test("assertPackedPackageManifest rejects local-only dependencies and package scripts", () => {
583618
assert.throws(
584619
() =>

0 commit comments

Comments
 (0)