-
Notifications
You must be signed in to change notification settings - Fork 2.9k
Expand file tree
/
Copy pathexports.ts
More file actions
127 lines (116 loc) · 5.96 KB
/
Copy pathexports.ts
File metadata and controls
127 lines (116 loc) · 5.96 KB
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
/** @jest-environment node */
// We run this in a node environment because:
// A) JSDOM doesn't yet support the TextEncoder/TextDecoder globals added in node 11, meaning certain imports (e.g. reactSSR) will fail (See https://github.com/jsdom/jsdom/issues/2524)
// B) We're just testing imports/exports, so no reason not to use Node for slightly better performance.
import { resolve } from "node:path";
import { $ } from "zx";
// eslint-disable-next-line import/no-duplicates
import * as client from "@apollo/client";
import * as cache from "@apollo/client/cache";
// eslint-disable-next-line import/no-duplicates
import * as core from "@apollo/client/core";
import * as dev from "@apollo/client/dev";
import * as errors from "@apollo/client/errors";
import * as incremental from "@apollo/client/incremental";
import * as linkCore from "@apollo/client/link";
import * as linkBatch from "@apollo/client/link/batch";
import * as linkBatchHTTP from "@apollo/client/link/batch-http";
import * as linkClientAwareness from "@apollo/client/link/client-awareness";
import * as linkContext from "@apollo/client/link/context";
import * as linkError from "@apollo/client/link/error";
import * as linkHTTP from "@apollo/client/link/http";
import * as linkPersistedQueries from "@apollo/client/link/persisted-queries";
import * as linkRemoveTypename from "@apollo/client/link/remove-typename";
import * as linkRetry from "@apollo/client/link/retry";
import * as linkSchema from "@apollo/client/link/schema";
import * as linkSubscriptions from "@apollo/client/link/subscriptions";
import * as linkUtils from "@apollo/client/link/utils";
import * as linkWS from "@apollo/client/link/ws";
import * as localState from "@apollo/client/local-state";
import * as masking from "@apollo/client/masking";
import * as react from "@apollo/client/react";
import * as reactInternal from "@apollo/client/react/internal";
import * as compilerRuntime from "@apollo/client/react/internal/compiler-runtime";
import * as reactSSR from "@apollo/client/react/ssr";
import * as testing from "@apollo/client/testing";
import * as testingInternal from "@apollo/client/testing/internal";
import * as testingReact from "@apollo/client/testing/react";
import * as utilities from "@apollo/client/utilities";
import * as utilitiesEnvironment from "@apollo/client/utilities/environment";
import * as utilitiesInternal from "@apollo/client/utilities/internal";
import * as utilitiesInternalGlobals from "@apollo/client/utilities/internal/globals";
import * as utilitiesInvariant from "@apollo/client/utilities/invariant";
import * as v4_migration from "@apollo/client/v4-migration";
// eslint-disable-next-line local-rules/no-relative-imports
import { entryPoints } from "../../config/entryPoints.js";
type Namespace = object;
describe("exports of public entry points", () => {
const testedIds = new Set<string>();
function check(id: string, ns: Namespace) {
it(id, () => {
testedIds.add(id);
expect(Object.keys(ns).sort()).toMatchSnapshot();
});
}
function checkWithConditions(id: string, conditions: string[]) {
test(`${id} with conditions [${conditions.join(",")}]`, async () => {
const exports = await $({
cwd: resolve(__dirname, "../../"),
})`node --experimental-transform-types --no-warnings ${conditions.flatMap(
(condition) => [`--conditions`, condition]
)} config/listImports.ts ${id}`;
expect(
exports.stdout.split("\n").filter((x) => x.trim() !== "")
).toMatchSnapshot();
});
}
check("@apollo/client", client);
check("@apollo/client/cache", cache);
check("@apollo/client/core", core);
check("@apollo/client/dev", dev);
check("@apollo/client/errors", errors);
check("@apollo/client/incremental", incremental);
check("@apollo/client/link/batch", linkBatch);
check("@apollo/client/link/batch-http", linkBatchHTTP);
check("@apollo/client/link/client-awareness", linkClientAwareness);
check("@apollo/client/link/context", linkContext);
check("@apollo/client/link", linkCore);
check("@apollo/client/link/error", linkError);
check("@apollo/client/link/http", linkHTTP);
check("@apollo/client/link/persisted-queries", linkPersistedQueries);
check("@apollo/client/link/remove-typename", linkRemoveTypename);
check("@apollo/client/link/retry", linkRetry);
check("@apollo/client/link/schema", linkSchema);
check("@apollo/client/link/subscriptions", linkSubscriptions);
check("@apollo/client/link/utils", linkUtils);
check("@apollo/client/link/ws", linkWS);
check("@apollo/client/local-state", localState);
check("@apollo/client/masking", masking);
check("@apollo/client/react", react);
check("@apollo/client/react/internal", reactInternal);
check("@apollo/client/react/internal/compiler-runtime", compilerRuntime);
check("@apollo/client/react/ssr", reactSSR);
check("@apollo/client/testing", testing);
check("@apollo/client/testing/internal", testingInternal);
check("@apollo/client/testing/react", testingReact);
check("@apollo/client/utilities", utilities);
check("@apollo/client/utilities/internal", utilitiesInternal);
check("@apollo/client/utilities/internal/globals", utilitiesInternalGlobals);
check("@apollo/client/utilities/invariant", utilitiesInvariant);
check("@apollo/client/utilities/environment", utilitiesEnvironment);
check("@apollo/client/v4-migration", v4_migration);
checkWithConditions("@apollo/client/react", ["react-server"]);
expect(client).toStrictEqual(core);
it("completeness", () => {
const { join } = require("path").posix;
entryPoints.forEach((info: Record<string, any>) => {
const id = join("@apollo/client", ...info.dirs);
// We don't want to add a devDependency for relay-runtime,
// and our API extractor job is already validating its public exports,
// so we'll skip the utilities/subscriptions/relay entrypoing here
// since it errors on the `relay-runtime` import.
if (id === "@apollo/client/utilities/subscriptions/relay") return;
expect(testedIds).toContain(id);
});
});
});