Skip to content

Commit 65c2650

Browse files
authored
build(attributor): use fluid-tsc (#19820)
Semi-automatic PR to switch to fluid-tsc
1 parent 8ed3ed8 commit 65c2650

22 files changed

+98
-78
lines changed
Original file line numberDiff line numberDiff line change
@@ -1,4 +1,8 @@
11
{
22
"$schema": "https://developer.microsoft.com/json-schemas/api-extractor/v7/api-extractor.schema.json",
3-
"extends": "../../../common/build/build-common/api-extractor-base-esm.json"
3+
"extends": "../../../common/build/build-common/api-extractor-base.cjs.primary.json",
4+
// CJS is actually secondary; so, no report.
5+
"apiReport": {
6+
"enabled": false
7+
}
48
}
Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,4 +1,4 @@
11
{
22
"$schema": "https://developer.microsoft.com/json-schemas/api-extractor/v7/api-extractor.schema.json",
3-
"extends": "../../../common/build/build-common/api-extractor-lint.json"
3+
"extends": "../../../common/build/build-common/api-extractor-lint.esm.primary.json"
44
}
Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,4 +1,4 @@
11
{
22
"$schema": "https://developer.microsoft.com/json-schemas/api-extractor/v7/api-extractor.schema.json",
3-
"extends": "../../../common/build/build-common/api-extractor-base.json"
3+
"extends": "../../../common/build/build-common/api-extractor-base.esm.primary.json"
44
}

packages/framework/attributor/package.json

Lines changed: 19 additions & 36 deletions
Original file line numberDiff line numberDiff line change
@@ -11,71 +11,53 @@
1111
"license": "MIT",
1212
"author": "Microsoft and contributors",
1313
"sideEffects": false,
14+
"type": "module",
1415
"exports": {
1516
".": {
1617
"import": {
17-
"types": "./lib/index.d.mts",
18-
"default": "./lib/index.mjs"
18+
"types": "./lib/index.d.ts",
19+
"default": "./lib/index.js"
1920
},
2021
"require": {
2122
"types": "./dist/index.d.ts",
2223
"default": "./dist/index.js"
2324
}
2425
},
25-
"./alpha": {
26-
"import": {
27-
"types": "./lib/attributor-alpha.d.mts",
28-
"default": "./lib/index.mjs"
29-
},
30-
"require": {
31-
"types": "./dist/attributor-alpha.d.ts",
32-
"default": "./dist/index.js"
33-
}
34-
},
35-
"./beta": {
26+
"./public": {
3627
"import": {
37-
"types": "./lib/attributor-beta.d.mts",
38-
"default": "./lib/index.mjs"
28+
"types": "./lib/attributor-public.d.ts",
29+
"default": "./lib/index.js"
3930
},
4031
"require": {
41-
"types": "./dist/attributor-beta.d.ts",
32+
"types": "./dist/attributor-public.d.ts",
4233
"default": "./dist/index.js"
4334
}
4435
},
4536
"./internal": {
4637
"import": {
47-
"types": "./lib/index.d.mts",
48-
"default": "./lib/index.mjs"
38+
"types": "./lib/index.d.ts",
39+
"default": "./lib/index.js"
4940
},
5041
"require": {
5142
"types": "./dist/index.d.ts",
5243
"default": "./dist/index.js"
5344
}
54-
},
55-
"./public": {
56-
"import": {
57-
"types": "./lib/attributor-public.d.mts",
58-
"default": "./lib/index.mjs"
59-
},
60-
"require": {
61-
"types": "./dist/attributor-public.d.ts",
62-
"default": "./dist/index.js"
63-
}
6445
}
6546
},
6647
"main": "dist/index.js",
67-
"module": "lib/index.mjs",
6848
"types": "dist/index.d.ts",
6949
"scripts": {
7050
"api": "fluid-build . --task api",
71-
"api-extractor:commonjs": "api-extractor run --local",
72-
"api-extractor:esnext": "api-extractor run --config ./api-extractor-esm.json",
51+
"api-extractor:commonjs": "api-extractor run --config ./api-extractor-cjs.json",
52+
"api-extractor:esnext": "api-extractor run --local",
7353
"build": "fluid-build . --task build",
7454
"build:commonjs": "fluid-build . --task commonjs",
7555
"build:compile": "fluid-build . --task compile",
7656
"build:docs": "fluid-build . --task api",
77-
"build:esnext": "tsc-multi --config ../../../common/build/build-common/tsc-multi.esm.json",
78-
"build:test": "tsc --project ./src/test/tsconfig.json",
57+
"build:esnext": "tsc --project ./tsconfig.json",
58+
"build:test": "npm run build:test:esm && npm run build:test:cjs",
59+
"build:test:cjs": "fluid-tsc commonjs --project ./src/test/tsconfig.cjs.json",
60+
"build:test:esm": "tsc --project ./src/test/tsconfig.json",
7961
"check:are-the-types-wrong": "attw --pack . --entrypoints .",
8062
"check:release-tags": "api-extractor run --local --config ./api-extractor-lint.json",
8163
"ci:build:docs": "api-extractor run",
@@ -89,9 +71,11 @@
8971
"prettier:fix": "prettier --write . --cache --ignore-path ../../../.prettierignore",
9072
"test": "npm run test:mocha",
9173
"test:coverage": "c8 npm test",
92-
"test:mocha": "mocha --ignore \"dist/test/memory/**/*\" --recursive \"dist/test/**/*.spec.*js\" -r node_modules/@fluid-internal/mocha-test-setup",
74+
"test:mocha": "npm run test:mocha:esm && echo skipping cjs to avoid overhead - npm run test:mocha:cjs",
75+
"test:mocha:cjs": "mocha --recursive \"dist/test/**/*.spec.*js\" --exit",
76+
"test:mocha:esm": "mocha --recursive \"lib/test/**/*.spec.*js\" --exit",
9377
"test:mocha:verbose": "cross-env FLUID_TEST_VERBOSE=1 npm run test:mocha",
94-
"tsc": "tsc",
78+
"tsc": "fluid-tsc commonjs --project ./tsconfig.cjs.json && copyfiles -f ../../../common/build/build-common/src/cjs/package.json ./dist",
9579
"typetests:gen": "fluid-type-test-generator",
9680
"typetests:prepare": "flub typetests --dir . --reset --previous --normalize"
9781
},
@@ -154,7 +138,6 @@
154138
"moment": "^2.21.0",
155139
"prettier": "~3.0.3",
156140
"rimraf": "^4.4.0",
157-
"tsc-multi": "^1.1.0",
158141
"typescript": "~5.1.6"
159142
},
160143
"fluidBuild": {

packages/framework/attributor/src/encoders.ts

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -5,8 +5,8 @@
55
import { assert } from "@fluidframework/core-utils";
66
import { type IUser } from "@fluidframework/protocol-definitions";
77
import { type AttributionInfo } from "@fluidframework/runtime-definitions";
8-
import { type IAttributor } from "./attributor";
9-
import { type InternedStringId, MutableStringInterner } from "./stringInterner";
8+
import { type IAttributor } from "./attributor.js";
9+
import { type InternedStringId, MutableStringInterner } from "./stringInterner.js";
1010

1111
export interface Encoder<TDecoded, TEncoded> {
1212
encode(decoded: TDecoded): TEncoded;

packages/framework/attributor/src/index.ts

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -2,11 +2,11 @@
22
* Copyright (c) Microsoft Corporation and contributors. All rights reserved.
33
* Licensed under the MIT License.
44
*/
5-
export { Attributor, type IAttributor, OpStreamAttributor } from "./attributor";
5+
export { Attributor, type IAttributor, OpStreamAttributor } from "./attributor.js";
66
export {
77
createRuntimeAttributor,
88
enableOnNewFileKey,
99
type IProvideRuntimeAttributor,
1010
IRuntimeAttributor,
1111
mixinAttributor,
12-
} from "./mixinAttributor";
12+
} from "./mixinAttributor.js";

packages/framework/attributor/src/lz4Encoder.ts

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -5,7 +5,7 @@
55
import { compress, decompress } from "lz4js";
66
import { bufferToString, stringToBuffer } from "@fluid-internal/client-utils";
77
import { type Jsonable } from "@fluidframework/datastore-definitions";
8-
import { type Encoder } from "./encoders";
8+
import { type Encoder } from "./encoders.js";
99

1010
// TODO: document this
1111
// eslint-disable-next-line jsdoc/require-description

packages/framework/attributor/src/mixinAttributor.ts

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -32,9 +32,9 @@ import {
3232
PerformanceEvent,
3333
UsageError,
3434
} from "@fluidframework/telemetry-utils";
35-
import { Attributor, type IAttributor, OpStreamAttributor } from "./attributor";
36-
import { AttributorSerializer, chain, deltaEncoder, type Encoder } from "./encoders";
37-
import { makeLZ4Encoder } from "./lz4Encoder";
35+
import { Attributor, type IAttributor, OpStreamAttributor } from "./attributor.js";
36+
import { AttributorSerializer, chain, deltaEncoder, type Encoder } from "./encoders.js";
37+
import { makeLZ4Encoder } from "./lz4Encoder.js";
3838

3939
// Summary tree keys
4040
const attributorTreeName = ".attributor";
Lines changed: 13 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,13 @@
1+
/*!
2+
* Copyright (c) Microsoft Corporation and contributors. All rights reserved.
3+
* Licensed under the MIT License.
4+
*/
5+
6+
// Problem:
7+
// - `__dirname` is not defined in ESM
8+
// - `import.meta.url` is not defined in CJS
9+
// Solution:
10+
// - Export '__dirname' from a .cjs file in the same directory.
11+
//
12+
// Note that *.cjs files are always CommonJS, but can be imported from ESM.
13+
export const _dirname = __dirname;

packages/framework/attributor/src/test/attribution/sharedString.attribution.spec.ts

Lines changed: 5 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -36,14 +36,15 @@ import { type IClient, type ISummaryTree, SummaryType } from "@fluidframework/pr
3636
import { type IAudience } from "@fluidframework/container-definitions";
3737
import { SharedString, SharedStringFactory } from "@fluidframework/sequence";
3838
import { createInsertOnlyAttributionPolicy } from "@fluidframework/merge-tree";
39-
import { type IAttributor, OpStreamAttributor } from "../../attributor";
39+
import { type IAttributor, OpStreamAttributor } from "../../attributor.js";
4040
import {
4141
AttributorSerializer,
4242
chain as chainEncoders,
4343
deltaEncoder,
4444
type Encoder,
45-
} from "../../encoders";
46-
import { makeLZ4Encoder } from "../../lz4Encoder";
45+
} from "../../encoders.js";
46+
import { makeLZ4Encoder } from "../../lz4Encoder.js";
47+
import { _dirname } from "./dirname.cjs";
4748

4849
function makeMockAudience(clientIds: string[]): IAudience {
4950
const clients = new Map<string, IClient>();
@@ -324,7 +325,7 @@ function createSharedString(
324325
);
325326
}
326327

327-
const directory = path.join(__dirname, "../../../src/test/attribution/documents");
328+
const directory = path.join(_dirname, "../../../src/test/attribution/documents");
328329

329330
interface TestPaths {
330331
directory: string;

0 commit comments

Comments
 (0)