packtory 0.0.88 → 0.0.90

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.
@@ -1 +1 @@
1
- {"version":3,"file":"package-metadata-fetcher.d.ts","sourceRoot":"","sources":["../../../../../source/bundle-emitter/registry/package-metadata-fetcher.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,SAAS,MAAM,oBAAoB,CAAC;AAChD,OAAO,EAAE,KAAK,EAAE,MAAM,WAAW,CAAC;AAClC,OAAO,KAAK,EAAE,gBAAgB,EAAE,MAAM,mCAAmC,CAAC;AAG1E,OAAO,EAIH,KAAK,eAAe,EACvB,MAAM,2BAA2B,CAAC;AAOnC,OAAO,EAA0B,KAAK,gBAAgB,EAAE,MAAM,wBAAwB,CAAC;AAQvF,MAAM,MAAM,qBAAqB,GAAG;IAChC,QAAQ,CAAC,OAAO,EAAE,MAAM,CAAC;IACzB,QAAQ,CAAC,UAAU,EAAE,MAAM,CAAC;IAC5B,QAAQ,CAAC,gBAAgB,EAAE,gBAAgB,CAAC;IAC5C,QAAQ,CAAC,OAAO,EAAE,MAAM,GAAG,SAAS,CAAC;CACxC,CAAC;AAEF,MAAM,MAAM,sBAAsB,GAAG;IACjC,QAAQ,CAAC,WAAW,CAAC,EAAE,IAAI,GAAG,SAAS,CAAC;IACxC,QAAQ,CAAC,UAAU,EAAE,MAAM,CAAC;IAC5B,QAAQ,CAAC,gBAAgB,EAAE,gBAAgB,CAAC;IAC5C,QAAQ,CAAC,OAAO,EAAE,MAAM,CAAC;IACzB,QAAQ,CAAC,OAAO,EAAE,MAAM,GAAG,SAAS,CAAC;CACxC,CAAC;AAiGF,KAAK,gBAAgB,GAAG,OAAO,CAAC,UAAU,CAAC,OAAO,SAAS,CAAC,CAAC,CAAC;AAC9D,MAAM,MAAM,QAAQ,GAAG;IACnB,CAAC,GAAG,EAAE,MAAM,EAAE,OAAO,CAAC,EAAE,eAAe,GAAG,OAAO,CAAC,gBAAgB,CAAC,CAAC;IACpE,QAAQ,CAAC,IAAI,EAAE,OAAO,SAAS,CAAC,IAAI,CAAC;CACxC,CAAC;AAiGF,wBAAsB,yBAAyB,CAC3C,QAAQ,EAAE,QAAQ,EAClB,WAAW,EAAE,MAAM,EACnB,gBAAgB,EAAE,QAAQ,CAAC,gBAAgB,CAAC,GAC7C,OAAO,CAAC,KAAK,CAAC,qBAAqB,CAAC,CAAC,CAWvC;AAED,wBAAsB,iCAAiC,CACnD,QAAQ,EAAE,QAAQ,EAClB,WAAW,EAAE,MAAM,EACnB,gBAAgB,EAAE,QAAQ,CAAC,gBAAgB,CAAC,GAC7C,OAAO,CAAC,KAAK,CAAC,sBAAsB,CAAC,CAAC,CAyBxC;AAgBD,wBAAsB,0BAA0B,CAC5C,QAAQ,EAAE,QAAQ,EAClB,WAAW,EAAE,MAAM,EACnB,gBAAgB,EAAE,QAAQ,CAAC,gBAAgB,CAAC,GAC7C,OAAO,CAAC,SAAS,MAAM,EAAE,CAAC,CAoB5B;AAED,wBAAsB,mBAAmB,CACrC,QAAQ,EAAE,QAAQ,EAClB,UAAU,EAAE,MAAM,EAClB,gBAAgB,EAAE,gBAAgB,EAClC,gBAAgB,EAAE,QAAQ,CAAC,gBAAgB,CAAC,GAC7C,OAAO,CAAC,MAAM,CAAC,CAWjB"}
1
+ {"version":3,"file":"package-metadata-fetcher.d.ts","sourceRoot":"","sources":["../../../../../source/bundle-emitter/registry/package-metadata-fetcher.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,SAAS,MAAM,oBAAoB,CAAC;AAChD,OAAO,EAAE,KAAK,EAAE,MAAM,WAAW,CAAC;AAClC,OAAO,KAAK,EAAE,gBAAgB,EAAE,MAAM,mCAAmC,CAAC;AAG1E,OAAO,EAIH,KAAK,eAAe,EACvB,MAAM,2BAA2B,CAAC;AAOnC,OAAO,EAA0B,KAAK,gBAAgB,EAAE,MAAM,wBAAwB,CAAC;AAOvF,MAAM,MAAM,qBAAqB,GAAG;IAChC,QAAQ,CAAC,OAAO,EAAE,MAAM,CAAC;IACzB,QAAQ,CAAC,UAAU,EAAE,MAAM,CAAC;IAC5B,QAAQ,CAAC,gBAAgB,EAAE,gBAAgB,CAAC;IAC5C,QAAQ,CAAC,OAAO,EAAE,MAAM,GAAG,SAAS,CAAC;CACxC,CAAC;AAEF,MAAM,MAAM,sBAAsB,GAAG;IACjC,QAAQ,CAAC,WAAW,CAAC,EAAE,IAAI,GAAG,SAAS,CAAC;IACxC,QAAQ,CAAC,UAAU,EAAE,MAAM,CAAC;IAC5B,QAAQ,CAAC,gBAAgB,EAAE,gBAAgB,CAAC;IAC5C,QAAQ,CAAC,OAAO,EAAE,MAAM,CAAC;IACzB,QAAQ,CAAC,OAAO,EAAE,MAAM,GAAG,SAAS,CAAC;CACxC,CAAC;AAiGF,KAAK,gBAAgB,GAAG,OAAO,CAAC,UAAU,CAAC,OAAO,SAAS,CAAC,CAAC,CAAC;AAC9D,MAAM,MAAM,QAAQ,GAAG;IACnB,CAAC,GAAG,EAAE,MAAM,EAAE,OAAO,CAAC,EAAE,eAAe,GAAG,OAAO,CAAC,gBAAgB,CAAC,CAAC;IACpE,QAAQ,CAAC,IAAI,EAAE,OAAO,SAAS,CAAC,IAAI,CAAC;CACxC,CAAC;AAiGF,wBAAsB,yBAAyB,CAC3C,QAAQ,EAAE,QAAQ,EAClB,WAAW,EAAE,MAAM,EACnB,gBAAgB,EAAE,QAAQ,CAAC,gBAAgB,CAAC,GAC7C,OAAO,CAAC,KAAK,CAAC,qBAAqB,CAAC,CAAC,CAWvC;AAED,wBAAsB,iCAAiC,CACnD,QAAQ,EAAE,QAAQ,EAClB,WAAW,EAAE,MAAM,EACnB,gBAAgB,EAAE,QAAQ,CAAC,gBAAgB,CAAC,GAC7C,OAAO,CAAC,KAAK,CAAC,sBAAsB,CAAC,CAAC,CAyBxC;AAgBD,wBAAsB,0BAA0B,CAC5C,QAAQ,EAAE,QAAQ,EAClB,WAAW,EAAE,MAAM,EACnB,gBAAgB,EAAE,QAAQ,CAAC,gBAAgB,CAAC,GAC7C,OAAO,CAAC,SAAS,MAAM,EAAE,CAAC,CAoB5B;AAED,wBAAsB,mBAAmB,CACrC,QAAQ,EAAE,QAAQ,EAClB,UAAU,EAAE,MAAM,EAClB,gBAAgB,EAAE,gBAAgB,EAClC,gBAAgB,EAAE,QAAQ,CAAC,gBAAgB,CAAC,GAC7C,OAAO,CAAC,MAAM,CAAC,CAWjB"}
@@ -6,7 +6,6 @@ import { parseAbbreviatedPackageResponse, parseFullPackageResponse } from "./reg
6
6
  import { assertTarballIntegrity } from "./tarball-integrity.js";
7
7
  import { assertTarballOriginMatchesRegistry } from "./validate-tarball-host.js";
8
8
  const notFoundStatusCode = 404;
9
- const forbiddenStatusCode = 403;
10
9
  const abbreviatedResponseAcceptHeader = 'application/vnd.npm.install-v1+json';
11
10
  const maxDownloadedTarballBytes = 268_435_456;
12
11
  function isRecord(value) {
@@ -22,7 +21,7 @@ function assertContentLengthWithinDownloadLimit(response) {
22
21
  }
23
22
  function isMissingPackageError(error) {
24
23
  const statusCode = isRecord(error) ? error.statusCode : undefined;
25
- return statusCode === notFoundStatusCode || statusCode === forbiddenStatusCode;
24
+ return statusCode === notFoundStatusCode;
26
25
  }
27
26
  function parseTimestamp(timestamp) {
28
27
  const parsed = new Date(timestamp);
@@ -1 +1 @@
1
- {"version":3,"file":"package-metadata-fetcher.js","sourceRoot":"","sources":["../../../../../source/bundle-emitter/registry/package-metadata-fetcher.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"package-metadata-fetcher.js","sourceRoot":"","sources":["../../../../../source/bundle-emitter/registry/package-metadata-fetcher.ts"],"names":[],"mappings":"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"}
@@ -16,16 +16,32 @@ function memberHasImpureStaticInit(member, settings) {
16
16
  const initializer = member.getInitializer();
17
17
  return initializer !== undefined && !isPureExpression(initializer, settings);
18
18
  }
19
+ function memberHasImpureComputedName(member, settings) {
20
+ if (!TsMorphNode.isMethodDeclaration(member) &&
21
+ !TsMorphNode.isPropertyDeclaration(member) &&
22
+ !TsMorphNode.isGetAccessorDeclaration(member) &&
23
+ !TsMorphNode.isSetAccessorDeclaration(member)) {
24
+ return false;
25
+ }
26
+ const name = member.getNameNode();
27
+ return TsMorphNode.isComputedPropertyName(name) && !isPureExpression(name.getExpression(), settings);
28
+ }
19
29
  function classMemberIsImpure(member, settings) {
20
30
  if (TsMorphNode.isClassStaticBlockDeclaration(member)) {
21
31
  return true;
22
32
  }
23
- return memberHasDecorators(member) || memberHasImpureStaticInit(member, settings);
33
+ return memberHasDecorators(member) ||
34
+ memberHasImpureComputedName(member, settings) ||
35
+ memberHasImpureStaticInit(member, settings);
24
36
  }
25
37
  export function hasClassImpurity(classDeclaration, settings) {
26
38
  if (classDeclaration.getDecorators().length > 0) {
27
39
  return true;
28
40
  }
41
+ const extendsExpression = classDeclaration.getExtends()?.getExpression();
42
+ if (extendsExpression !== undefined && !isPureExpression(extendsExpression, settings)) {
43
+ return true;
44
+ }
29
45
  return classDeclaration.getMembers().some(function (member) {
30
46
  return classMemberIsImpure(member, settings);
31
47
  });
@@ -1 +1 @@
1
- {"version":3,"file":"class-purity.js","sourceRoot":"","sources":["../../../../source/dead-code-eliminator/class-purity.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,IAAI,IAAI,WAAW,EAAyB,MAAM,UAAU,CAAC;AAEtE,OAAO,EAAE,gBAAgB,EAAE,MAAM,sBAAsB,CAAC;AAExD,SAAS,mBAAmB,CAAC,MAAmB;IAC5C,IACI,WAAW,CAAC,mBAAmB,CAAC,MAAM,CAAC;QACvC,WAAW,CAAC,qBAAqB,CAAC,MAAM,CAAC;QACzC,WAAW,CAAC,wBAAwB,CAAC,MAAM,CAAC;QAC5C,WAAW,CAAC,wBAAwB,CAAC,MAAM,CAAC,EAC9C,CAAC;QACC,OAAO,MAAM,CAAC,aAAa,EAAE,CAAC,MAAM,GAAG,CAAC,CAAC;IAC7C,CAAC;IACD,OAAO,KAAK,CAAC;AACjB,CAAC;AAED,SAAS,yBAAyB,CAAC,MAAmB,EAAE,QAAiD;IACrG,IAAI,CAAC,WAAW,CAAC,qBAAqB,CAAC,MAAM,CAAC,IAAI,CAAC,MAAM,CAAC,QAAQ,EAAE,EAAE,CAAC;QACnE,OAAO,KAAK,CAAC;IACjB,CAAC;IACD,MAAM,WAAW,GAAG,MAAM,CAAC,cAAc,EAAE,CAAC;IAC5C,OAAO,WAAW,KAAK,SAAS,IAAI,CAAC,gBAAgB,CAAC,WAAW,EAAE,QAAQ,CAAC,CAAC;AACjF,CAAC;AAED,SAAS,mBAAmB,CAAC,MAAmB,EAAE,QAAiD;IAC/F,IAAI,WAAW,CAAC,6BAA6B,CAAC,MAAM,CAAC,EAAE,CAAC;QACpD,OAAO,IAAI,CAAC;IAChB,CAAC;IACD,OAAO,mBAAmB,CAAC,MAAM,CAAC,IAAI,yBAAyB,CAAC,MAAM,EAAE,QAAQ,CAAC,CAAC;AACtF,CAAC;AAED,MAAM,UAAU,gBAAgB,CAC5B,gBAAkC,EAClC,QAAiD;IAEjD,IAAI,gBAAgB,CAAC,aAAa,EAAE,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC;QAC9C,OAAO,IAAI,CAAC;IAChB,CAAC;IACD,OAAO,gBAAgB,CAAC,UAAU,EAAE,CAAC,IAAI,CAAC,UAAU,MAAM;QACtD,OAAO,mBAAmB,CAAC,MAAM,EAAE,QAAQ,CAAC,CAAC;IACjD,CAAC,CAAC,CAAC;AACP,CAAC"}
1
+ {"version":3,"file":"class-purity.js","sourceRoot":"","sources":["../../../../source/dead-code-eliminator/class-purity.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,IAAI,IAAI,WAAW,EAAyB,MAAM,UAAU,CAAC;AAEtE,OAAO,EAAE,gBAAgB,EAAE,MAAM,sBAAsB,CAAC;AAExD,SAAS,mBAAmB,CAAC,MAAmB;IAC5C,IACI,WAAW,CAAC,mBAAmB,CAAC,MAAM,CAAC;QACvC,WAAW,CAAC,qBAAqB,CAAC,MAAM,CAAC;QACzC,WAAW,CAAC,wBAAwB,CAAC,MAAM,CAAC;QAC5C,WAAW,CAAC,wBAAwB,CAAC,MAAM,CAAC,EAC9C,CAAC;QACC,OAAO,MAAM,CAAC,aAAa,EAAE,CAAC,MAAM,GAAG,CAAC,CAAC;IAC7C,CAAC;IACD,OAAO,KAAK,CAAC;AACjB,CAAC;AAED,SAAS,yBAAyB,CAAC,MAAmB,EAAE,QAAiD;IACrG,IAAI,CAAC,WAAW,CAAC,qBAAqB,CAAC,MAAM,CAAC,IAAI,CAAC,MAAM,CAAC,QAAQ,EAAE,EAAE,CAAC;QACnE,OAAO,KAAK,CAAC;IACjB,CAAC;IACD,MAAM,WAAW,GAAG,MAAM,CAAC,cAAc,EAAE,CAAC;IAC5C,OAAO,WAAW,KAAK,SAAS,IAAI,CAAC,gBAAgB,CAAC,WAAW,EAAE,QAAQ,CAAC,CAAC;AACjF,CAAC;AAED,SAAS,2BAA2B,CAAC,MAAmB,EAAE,QAAiD;IACvG,IACI,CAAC,WAAW,CAAC,mBAAmB,CAAC,MAAM,CAAC;QACxC,CAAC,WAAW,CAAC,qBAAqB,CAAC,MAAM,CAAC;QAC1C,CAAC,WAAW,CAAC,wBAAwB,CAAC,MAAM,CAAC;QAC7C,CAAC,WAAW,CAAC,wBAAwB,CAAC,MAAM,CAAC,EAC/C,CAAC;QACC,OAAO,KAAK,CAAC;IACjB,CAAC;IACD,MAAM,IAAI,GAAG,MAAM,CAAC,WAAW,EAAE,CAAC;IAClC,OAAO,WAAW,CAAC,sBAAsB,CAAC,IAAI,CAAC,IAAI,CAAC,gBAAgB,CAAC,IAAI,CAAC,aAAa,EAAE,EAAE,QAAQ,CAAC,CAAC;AACzG,CAAC;AAED,SAAS,mBAAmB,CAAC,MAAmB,EAAE,QAAiD;IAC/F,IAAI,WAAW,CAAC,6BAA6B,CAAC,MAAM,CAAC,EAAE,CAAC;QACpD,OAAO,IAAI,CAAC;IAChB,CAAC;IACD,OAAO,mBAAmB,CAAC,MAAM,CAAC;QAC9B,2BAA2B,CAAC,MAAM,EAAE,QAAQ,CAAC;QAC7C,yBAAyB,CAAC,MAAM,EAAE,QAAQ,CAAC,CAAC;AACpD,CAAC;AAED,MAAM,UAAU,gBAAgB,CAC5B,gBAAkC,EAClC,QAAiD;IAEjD,IAAI,gBAAgB,CAAC,aAAa,EAAE,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC;QAC9C,OAAO,IAAI,CAAC;IAChB,CAAC;IACD,MAAM,iBAAiB,GAAG,gBAAgB,CAAC,UAAU,EAAE,EAAE,aAAa,EAAE,CAAC;IACzE,IAAI,iBAAiB,KAAK,SAAS,IAAI,CAAC,gBAAgB,CAAC,iBAAiB,EAAE,QAAQ,CAAC,EAAE,CAAC;QACpF,OAAO,IAAI,CAAC;IAChB,CAAC;IACD,OAAO,gBAAgB,CAAC,UAAU,EAAE,CAAC,IAAI,CAAC,UAAU,MAAM;QACtD,OAAO,mBAAmB,CAAC,MAAM,EAAE,QAAQ,CAAC,CAAC;IACjD,CAAC,CAAC,CAAC;AACP,CAAC"}
@@ -3,6 +3,18 @@ import { unwrapExpression } from "./expression-unwrapping.js";
3
3
  import { arePureCallArguments, resolveImportedExpressionOrigin } from "./imported-expression-origin.js";
4
4
  import { externalCallIsPure } from "./liveness/external-purity.js";
5
5
  import { allowedBinaryOperators, allowedPrefixUnaryOperators, inherentlyPurePropertyKinds, pureLeafKinds } from "./syntax-kind-sets.js";
6
+ const alwaysAvailableDeclarationKinds = new Set([
7
+ SyntaxKind.FunctionDeclaration,
8
+ SyntaxKind.ImportClause,
9
+ SyntaxKind.ImportSpecifier,
10
+ SyntaxKind.NamespaceImport,
11
+ SyntaxKind.Parameter
12
+ ]);
13
+ const orderedDeclarationKinds = new Set([
14
+ SyntaxKind.ClassDeclaration,
15
+ SyntaxKind.EnumDeclaration,
16
+ SyntaxKind.VariableDeclaration
17
+ ]);
6
18
  function isPureArrayElement(element, recurse) {
7
19
  if (TsMorphNode.isOmittedExpression(element)) {
8
20
  return true;
@@ -12,7 +24,23 @@ function isPureArrayElement(element, recurse) {
12
24
  }
13
25
  return recurse(element);
14
26
  }
27
+ function computedPropertyNameExpression(property) {
28
+ if (TsMorphNode.isPropertyAssignment(property) ||
29
+ TsMorphNode.isMethodDeclaration(property) ||
30
+ TsMorphNode.isGetAccessorDeclaration(property) ||
31
+ TsMorphNode.isSetAccessorDeclaration(property)) {
32
+ const name = property.getNameNode();
33
+ if (TsMorphNode.isComputedPropertyName(name)) {
34
+ return name.getExpression();
35
+ }
36
+ }
37
+ return undefined;
38
+ }
15
39
  function isPurePropertyAssignment(property, recurse) {
40
+ const computedNameExpression = computedPropertyNameExpression(property);
41
+ if (computedNameExpression !== undefined && !recurse(computedNameExpression)) {
42
+ return false;
43
+ }
16
44
  if (TsMorphNode.isPropertyAssignment(property)) {
17
45
  return recurse(property.getInitializerOrThrow());
18
46
  }
@@ -21,6 +49,31 @@ function isPurePropertyAssignment(property, recurse) {
21
49
  }
22
50
  return inherentlyPurePropertyKinds.has(property.getKind());
23
51
  }
52
+ function declarationIsAvailableBeforeRead(declaration, expression) {
53
+ return Math.sign(expression.getStart() - declaration.getEnd()) === 1;
54
+ }
55
+ function declarationMakesIdentifierReadPure(declaration, expression) {
56
+ const kind = declaration.getKind();
57
+ if (alwaysAvailableDeclarationKinds.has(kind)) {
58
+ return true;
59
+ }
60
+ if (orderedDeclarationKinds.has(kind)) {
61
+ return declarationIsAvailableBeforeRead(declaration, expression);
62
+ }
63
+ return false;
64
+ }
65
+ function identifierDeclarations(expression) {
66
+ const symbol = expression.getSymbol();
67
+ return symbol?.getDeclarations() ?? [];
68
+ }
69
+ function isPureIdentifierRead(expression) {
70
+ if (expression.getText() === 'undefined') {
71
+ return true;
72
+ }
73
+ return identifierDeclarations(expression).some(function (declaration) {
74
+ return declarationMakesIdentifierReadPure(declaration, expression);
75
+ });
76
+ }
24
77
  function isPureBuiltinCallExpression(callTarget, expression, recurse) {
25
78
  return TsMorphNode.isIdentifier(callTarget) && callTarget.getText() === 'Symbol'
26
79
  ? arePureCallArguments(expression.getArguments(), recurse)
@@ -123,6 +176,9 @@ function expressionPurityRuleFor(kind) {
123
176
  }
124
177
  export function isPureExpression(expression, settings) {
125
178
  const unwrapped = unwrapExpression(expression);
179
+ if (TsMorphNode.isIdentifier(unwrapped)) {
180
+ return isPureIdentifierRead(unwrapped);
181
+ }
126
182
  const recurse = function (candidate) {
127
183
  return isPureExpression(candidate, settings);
128
184
  };
@@ -1 +1 @@
1
- {"version":3,"file":"pure-expression.js","sourceRoot":"","sources":["../../../../source/dead-code-eliminator/pure-expression.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"pure-expression.js","sourceRoot":"","sources":["../../../../source/dead-code-eliminator/pure-expression.ts"],"names":[],"mappings":"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"}
@@ -17,6 +17,24 @@ function classifyClassDeclaration(statement, settings) {
17
17
  }
18
18
  return undefined;
19
19
  }
20
+ function classifyEnumDeclaration(statement, settings) {
21
+ if (statement.isConstEnum()) {
22
+ return undefined;
23
+ }
24
+ for (const member of statement.getMembers()) {
25
+ const initializer = member.getInitializer();
26
+ if (initializer !== undefined && !isPureExpression(initializer, settings)) {
27
+ return 'enum declaration';
28
+ }
29
+ }
30
+ return undefined;
31
+ }
32
+ function classifyModuleDeclaration(statement) {
33
+ if (statement.isAmbient()) {
34
+ return undefined;
35
+ }
36
+ return 'module declaration';
37
+ }
20
38
  function classifyVariableStatement(statement, settings) {
21
39
  for (const declarator of statement.getDeclarations()) {
22
40
  const initializer = declarator.getInitializer();
@@ -35,6 +53,12 @@ function exportAssignmentClassifier(statement, settings) {
35
53
  function classDeclarationClassifier(statement, settings) {
36
54
  return classifyClassDeclaration(statement.asKindOrThrow(SyntaxKind.ClassDeclaration), settings);
37
55
  }
56
+ function enumDeclarationClassifier(statement, settings) {
57
+ return classifyEnumDeclaration(statement.asKindOrThrow(SyntaxKind.EnumDeclaration), settings);
58
+ }
59
+ function moduleDeclarationClassifier(statement) {
60
+ return classifyModuleDeclaration(statement.asKindOrThrow(SyntaxKind.ModuleDeclaration));
61
+ }
38
62
  function variableStatementClassifier(statement, settings) {
39
63
  return classifyVariableStatement(statement.asKindOrThrow(SyntaxKind.VariableStatement), settings);
40
64
  }
@@ -54,13 +78,16 @@ function executableStatementClassifierFor(kind) {
54
78
  if (kind === SyntaxKind.ClassDeclaration) {
55
79
  return classDeclarationClassifier;
56
80
  }
81
+ if (kind === SyntaxKind.EnumDeclaration) {
82
+ return enumDeclarationClassifier;
83
+ }
84
+ if (kind === SyntaxKind.ModuleDeclaration) {
85
+ return moduleDeclarationClassifier;
86
+ }
57
87
  if (kind === SyntaxKind.VariableStatement) {
58
88
  return variableStatementClassifier;
59
89
  }
60
- if (kind === SyntaxKind.ExpressionStatement) {
61
- return expressionStatementClassifier;
62
- }
63
- return undefined;
90
+ return kind === SyntaxKind.ExpressionStatement ? expressionStatementClassifier : undefined;
64
91
  }
65
92
  export function statementClassifierFor(kind) {
66
93
  return declarationStatementClassifierFor(kind) ?? executableStatementClassifierFor(kind);
@@ -1 +1 @@
1
- {"version":3,"file":"statement-classifiers.js","sourceRoot":"","sources":["../../../../source/dead-code-eliminator/statement-classifiers.ts"],"names":[],"mappings":"AAAA,OAAO,EACH,UAAU,EAMb,MAAM,UAAU,CAAC;AAElB,OAAO,EAAE,gBAAgB,EAAE,MAAM,mBAAmB,CAAC;AACrD,OAAO,EAAE,yBAAyB,EAAE,MAAM,kCAAkC,CAAC;AAC7E,OAAO,EAAE,gBAAgB,EAAE,MAAM,sBAAsB,CAAC;AAOxD,SAAS,yBAAyB,CAAC,SAA4B;IAC3D,OAAO,yBAAyB,CAAC,SAAS,CAAC,uBAAuB,EAAE,CAAC,CAAC;AAC1E,CAAC;AAED,SAAS,wBAAwB,CAC7B,SAA2B,EAC3B,QAAiD;IAEjD,IAAI,gBAAgB,CAAC,SAAS,CAAC,aAAa,EAAE,EAAE,QAAQ,CAAC,EAAE,CAAC;QACxD,OAAO,SAAS,CAAC;IACrB,CAAC;IACD,OAAO,mBAAmB,CAAC;AAC/B,CAAC;AAED,SAAS,wBAAwB,CAC7B,SAA2B,EAC3B,QAAiD;IAEjD,IAAI,gBAAgB,CAAC,SAAS,EAAE,QAAQ,CAAC,EAAE,CAAC;QACxC,OAAO,mBAAmB,CAAC;IAC/B,CAAC;IACD,OAAO,SAAS,CAAC;AACrB,CAAC;AAED,SAAS,yBAAyB,CAC9B,SAA4B,EAC5B,QAAiD;IAEjD,KAAK,MAAM,UAAU,IAAI,SAAS,CAAC,eAAe,EAAE,EAAE,CAAC;QACnD,MAAM,WAAW,GAAG,UAAU,CAAC,cAAc,EAAE,CAAC;QAChD,IAAI,WAAW,KAAK,SAAS,IAAI,CAAC,gBAAgB,CAAC,WAAW,EAAE,QAAQ,CAAC,EAAE,CAAC;YACxE,OAAO,sBAAsB,CAAC;QAClC,CAAC;IACL,CAAC;IAED,OAAO,SAAS,CAAC;AACrB,CAAC;AAED,SAAS,2BAA2B,CAAC,SAAoB;IACrD,OAAO,yBAAyB,CAAC,SAAS,CAAC,aAAa,CAAC,UAAU,CAAC,iBAAiB,CAAC,CAAC,CAAC;AAC5F,CAAC;AAED,SAAS,0BAA0B,CAC/B,SAAoB,EACpB,QAAiD;IAEjD,OAAO,wBAAwB,CAAC,SAAS,CAAC,aAAa,CAAC,UAAU,CAAC,gBAAgB,CAAC,EAAE,QAAQ,CAAC,CAAC;AACpG,CAAC;AAED,SAAS,0BAA0B,CAC/B,SAAoB,EACpB,QAAiD;IAEjD,OAAO,wBAAwB,CAAC,SAAS,CAAC,aAAa,CAAC,UAAU,CAAC,gBAAgB,CAAC,EAAE,QAAQ,CAAC,CAAC;AACpG,CAAC;AAED,SAAS,2BAA2B,CAChC,SAAoB,EACpB,QAAiD;IAEjD,OAAO,yBAAyB,CAAC,SAAS,CAAC,aAAa,CAAC,UAAU,CAAC,iBAAiB,CAAC,EAAE,QAAQ,CAAC,CAAC;AACtG,CAAC;AAED,SAAS,6BAA6B;IAClC,OAAO,sBAAsB,CAAC;AAClC,CAAC;AAED,SAAS,iCAAiC,CAAC,IAAgB;IACvD,IAAI,IAAI,KAAK,UAAU,CAAC,iBAAiB,EAAE,CAAC;QACxC,OAAO,2BAA2B,CAAC;IACvC,CAAC;IACD,IAAI,IAAI,KAAK,UAAU,CAAC,gBAAgB,EAAE,CAAC;QACvC,OAAO,0BAA0B,CAAC;IACtC,CAAC;IACD,OAAO,SAAS,CAAC;AACrB,CAAC;AAED,SAAS,gCAAgC,CAAC,IAAgB;IACtD,IAAI,IAAI,KAAK,UAAU,CAAC,gBAAgB,EAAE,CAAC;QACvC,OAAO,0BAA0B,CAAC;IACtC,CAAC;IACD,IAAI,IAAI,KAAK,UAAU,CAAC,iBAAiB,EAAE,CAAC;QACxC,OAAO,2BAA2B,CAAC;IACvC,CAAC;IACD,IAAI,IAAI,KAAK,UAAU,CAAC,mBAAmB,EAAE,CAAC;QAC1C,OAAO,6BAA6B,CAAC;IACzC,CAAC;IACD,OAAO,SAAS,CAAC;AACrB,CAAC;AAED,MAAM,UAAU,sBAAsB,CAAC,IAAgB;IACnD,OAAO,iCAAiC,CAAC,IAAI,CAAC,IAAI,gCAAgC,CAAC,IAAI,CAAC,CAAC;AAC7F,CAAC"}
1
+ {"version":3,"file":"statement-classifiers.js","sourceRoot":"","sources":["../../../../source/dead-code-eliminator/statement-classifiers.ts"],"names":[],"mappings":"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"}
@@ -2,11 +2,11 @@ import { SyntaxKind } from 'ts-morph';
2
2
  function createSyntaxKindSet(...kinds) {
3
3
  return new Set(kinds);
4
4
  }
5
- export const pureLeafKinds = createSyntaxKindSet(SyntaxKind.StringLiteral, SyntaxKind.NumericLiteral, SyntaxKind.BigIntLiteral, SyntaxKind.TrueKeyword, SyntaxKind.FalseKeyword, SyntaxKind.NullKeyword, SyntaxKind.RegularExpressionLiteral, SyntaxKind.NoSubstitutionTemplateLiteral, SyntaxKind.Identifier, SyntaxKind.FunctionExpression, SyntaxKind.ArrowFunction, SyntaxKind.ClassExpression);
5
+ export const pureLeafKinds = createSyntaxKindSet(SyntaxKind.StringLiteral, SyntaxKind.NumericLiteral, SyntaxKind.BigIntLiteral, SyntaxKind.TrueKeyword, SyntaxKind.FalseKeyword, SyntaxKind.NullKeyword, SyntaxKind.RegularExpressionLiteral, SyntaxKind.NoSubstitutionTemplateLiteral, SyntaxKind.FunctionExpression, SyntaxKind.ArrowFunction, SyntaxKind.ClassExpression);
6
6
  export const allowedPrefixUnaryOperators = createSyntaxKindSet(SyntaxKind.MinusToken, SyntaxKind.PlusToken, SyntaxKind.ExclamationToken, SyntaxKind.TildeToken);
7
7
  export const allowedBinaryOperators = createSyntaxKindSet(SyntaxKind.PlusToken, SyntaxKind.MinusToken, SyntaxKind.AsteriskToken, SyntaxKind.SlashToken, SyntaxKind.PercentToken, SyntaxKind.AsteriskAsteriskToken, SyntaxKind.AmpersandAmpersandToken, SyntaxKind.BarBarToken, SyntaxKind.QuestionQuestionToken, SyntaxKind.LessThanToken, SyntaxKind.GreaterThanToken, SyntaxKind.LessThanEqualsToken, SyntaxKind.GreaterThanEqualsToken, SyntaxKind.EqualsEqualsEqualsToken, SyntaxKind.ExclamationEqualsEqualsToken);
8
8
  export const inherentlyPurePropertyKinds = createSyntaxKindSet(SyntaxKind.ShorthandPropertyAssignment, SyntaxKind.MethodDeclaration, SyntaxKind.GetAccessor, SyntaxKind.SetAccessor);
9
- export const pureDeclarationKinds = createSyntaxKindSet(SyntaxKind.FunctionDeclaration, SyntaxKind.InterfaceDeclaration, SyntaxKind.TypeAliasDeclaration, SyntaxKind.EnumDeclaration, SyntaxKind.ModuleDeclaration, SyntaxKind.ExportDeclaration, SyntaxKind.EmptyStatement);
9
+ export const pureDeclarationKinds = createSyntaxKindSet(SyntaxKind.FunctionDeclaration, SyntaxKind.InterfaceDeclaration, SyntaxKind.TypeAliasDeclaration, SyntaxKind.ExportDeclaration, SyntaxKind.EmptyStatement);
10
10
  export function describeControlFlowStatementKind(kind) {
11
11
  const descriptions = {
12
12
  [SyntaxKind.IfStatement]: 'if statement',
@@ -1 +1 @@
1
- {"version":3,"file":"syntax-kind-sets.js","sourceRoot":"","sources":["../../../../source/dead-code-eliminator/syntax-kind-sets.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,UAAU,EAAE,MAAM,UAAU,CAAC;AAEtC,SAAS,mBAAmB,CAAC,GAAG,KAA4B;IACxD,OAAO,IAAI,GAAG,CAAC,KAAK,CAAC,CAAC;AAC1B,CAAC;AAED,MAAM,CAAC,MAAM,aAAa,GAA4B,mBAAmB,CACrE,UAAU,CAAC,aAAa,EACxB,UAAU,CAAC,cAAc,EACzB,UAAU,CAAC,aAAa,EACxB,UAAU,CAAC,WAAW,EACtB,UAAU,CAAC,YAAY,EACvB,UAAU,CAAC,WAAW,EACtB,UAAU,CAAC,wBAAwB,EACnC,UAAU,CAAC,6BAA6B,EACxC,UAAU,CAAC,UAAU,EACrB,UAAU,CAAC,kBAAkB,EAC7B,UAAU,CAAC,aAAa,EACxB,UAAU,CAAC,eAAe,CAC7B,CAAC;AAEF,MAAM,CAAC,MAAM,2BAA2B,GAA4B,mBAAmB,CACnF,UAAU,CAAC,UAAU,EACrB,UAAU,CAAC,SAAS,EACpB,UAAU,CAAC,gBAAgB,EAC3B,UAAU,CAAC,UAAU,CACxB,CAAC;AAEF,MAAM,CAAC,MAAM,sBAAsB,GAA4B,mBAAmB,CAC9E,UAAU,CAAC,SAAS,EACpB,UAAU,CAAC,UAAU,EACrB,UAAU,CAAC,aAAa,EACxB,UAAU,CAAC,UAAU,EACrB,UAAU,CAAC,YAAY,EACvB,UAAU,CAAC,qBAAqB,EAChC,UAAU,CAAC,uBAAuB,EAClC,UAAU,CAAC,WAAW,EACtB,UAAU,CAAC,qBAAqB,EAChC,UAAU,CAAC,aAAa,EACxB,UAAU,CAAC,gBAAgB,EAC3B,UAAU,CAAC,mBAAmB,EAC9B,UAAU,CAAC,sBAAsB,EACjC,UAAU,CAAC,uBAAuB,EAClC,UAAU,CAAC,4BAA4B,CAC1C,CAAC;AAEF,MAAM,CAAC,MAAM,2BAA2B,GAA4B,mBAAmB,CACnF,UAAU,CAAC,2BAA2B,EACtC,UAAU,CAAC,iBAAiB,EAC5B,UAAU,CAAC,WAAW,EACtB,UAAU,CAAC,WAAW,CACzB,CAAC;AAEF,MAAM,CAAC,MAAM,oBAAoB,GAA4B,mBAAmB,CAC5E,UAAU,CAAC,mBAAmB,EAC9B,UAAU,CAAC,oBAAoB,EAC/B,UAAU,CAAC,oBAAoB,EAC/B,UAAU,CAAC,eAAe,EAC1B,UAAU,CAAC,iBAAiB,EAC5B,UAAU,CAAC,iBAAiB,EAC5B,UAAU,CAAC,cAAc,CAC5B,CAAC;AAEF,MAAM,UAAU,gCAAgC,CAAC,IAAgB;IAC7D,MAAM,YAAY,GAAwC;QACtD,CAAC,UAAU,CAAC,WAAW,CAAC,EAAE,cAAc;QACxC,CAAC,UAAU,CAAC,YAAY,CAAC,EAAE,eAAe;QAC1C,CAAC,UAAU,CAAC,cAAc,CAAC,EAAE,kBAAkB;QAC/C,CAAC,UAAU,CAAC,cAAc,CAAC,EAAE,kBAAkB;QAC/C,CAAC,UAAU,CAAC,cAAc,CAAC,EAAE,iBAAiB;QAC9C,CAAC,UAAU,CAAC,WAAW,CAAC,EAAE,oBAAoB;QAC9C,CAAC,UAAU,CAAC,eAAe,CAAC,EAAE,kBAAkB;QAChD,CAAC,UAAU,CAAC,YAAY,CAAC,EAAE,eAAe;QAC1C,CAAC,UAAU,CAAC,cAAc,CAAC,EAAE,iBAAiB;QAC9C,CAAC,UAAU,CAAC,gBAAgB,CAAC,EAAE,mBAAmB;QAClD,CAAC,UAAU,CAAC,KAAK,CAAC,EAAE,iBAAiB;KACxC,CAAC;IAEF,OAAO,YAAY,CAAC,IAAI,CAAC,CAAC;AAC9B,CAAC"}
1
+ {"version":3,"file":"syntax-kind-sets.js","sourceRoot":"","sources":["../../../../source/dead-code-eliminator/syntax-kind-sets.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,UAAU,EAAE,MAAM,UAAU,CAAC;AAEtC,SAAS,mBAAmB,CAAC,GAAG,KAA4B;IACxD,OAAO,IAAI,GAAG,CAAC,KAAK,CAAC,CAAC;AAC1B,CAAC;AAED,MAAM,CAAC,MAAM,aAAa,GAA4B,mBAAmB,CACrE,UAAU,CAAC,aAAa,EACxB,UAAU,CAAC,cAAc,EACzB,UAAU,CAAC,aAAa,EACxB,UAAU,CAAC,WAAW,EACtB,UAAU,CAAC,YAAY,EACvB,UAAU,CAAC,WAAW,EACtB,UAAU,CAAC,wBAAwB,EACnC,UAAU,CAAC,6BAA6B,EACxC,UAAU,CAAC,kBAAkB,EAC7B,UAAU,CAAC,aAAa,EACxB,UAAU,CAAC,eAAe,CAC7B,CAAC;AAEF,MAAM,CAAC,MAAM,2BAA2B,GAA4B,mBAAmB,CACnF,UAAU,CAAC,UAAU,EACrB,UAAU,CAAC,SAAS,EACpB,UAAU,CAAC,gBAAgB,EAC3B,UAAU,CAAC,UAAU,CACxB,CAAC;AAEF,MAAM,CAAC,MAAM,sBAAsB,GAA4B,mBAAmB,CAC9E,UAAU,CAAC,SAAS,EACpB,UAAU,CAAC,UAAU,EACrB,UAAU,CAAC,aAAa,EACxB,UAAU,CAAC,UAAU,EACrB,UAAU,CAAC,YAAY,EACvB,UAAU,CAAC,qBAAqB,EAChC,UAAU,CAAC,uBAAuB,EAClC,UAAU,CAAC,WAAW,EACtB,UAAU,CAAC,qBAAqB,EAChC,UAAU,CAAC,aAAa,EACxB,UAAU,CAAC,gBAAgB,EAC3B,UAAU,CAAC,mBAAmB,EAC9B,UAAU,CAAC,sBAAsB,EACjC,UAAU,CAAC,uBAAuB,EAClC,UAAU,CAAC,4BAA4B,CAC1C,CAAC;AAEF,MAAM,CAAC,MAAM,2BAA2B,GAA4B,mBAAmB,CACnF,UAAU,CAAC,2BAA2B,EACtC,UAAU,CAAC,iBAAiB,EAC5B,UAAU,CAAC,WAAW,EACtB,UAAU,CAAC,WAAW,CACzB,CAAC;AAEF,MAAM,CAAC,MAAM,oBAAoB,GAA4B,mBAAmB,CAC5E,UAAU,CAAC,mBAAmB,EAC9B,UAAU,CAAC,oBAAoB,EAC/B,UAAU,CAAC,oBAAoB,EAC/B,UAAU,CAAC,iBAAiB,EAC5B,UAAU,CAAC,cAAc,CAC5B,CAAC;AAEF,MAAM,UAAU,gCAAgC,CAAC,IAAgB;IAC7D,MAAM,YAAY,GAAwC;QACtD,CAAC,UAAU,CAAC,WAAW,CAAC,EAAE,cAAc;QACxC,CAAC,UAAU,CAAC,YAAY,CAAC,EAAE,eAAe;QAC1C,CAAC,UAAU,CAAC,cAAc,CAAC,EAAE,kBAAkB;QAC/C,CAAC,UAAU,CAAC,cAAc,CAAC,EAAE,kBAAkB;QAC/C,CAAC,UAAU,CAAC,cAAc,CAAC,EAAE,iBAAiB;QAC9C,CAAC,UAAU,CAAC,WAAW,CAAC,EAAE,oBAAoB;QAC9C,CAAC,UAAU,CAAC,eAAe,CAAC,EAAE,kBAAkB;QAChD,CAAC,UAAU,CAAC,YAAY,CAAC,EAAE,eAAe;QAC1C,CAAC,UAAU,CAAC,cAAc,CAAC,EAAE,iBAAiB;QAC9C,CAAC,UAAU,CAAC,gBAAgB,CAAC,EAAE,mBAAmB;QAClD,CAAC,UAAU,CAAC,KAAK,CAAC,EAAE,iBAAiB;KACxC,CAAC;IAEF,OAAO,YAAY,CAAC,IAAI,CAAC,CAAC;AAC9B,CAAC"}
@@ -1,7 +1,7 @@
1
1
  import path from 'node:path';
2
- import { isDefined } from 'remeda';
3
2
  import { ts as typescript } from 'ts-morph';
4
3
  import { declarationCompanionCandidates } from "../common/declaration-companion-paths.js";
4
+ import { bfsClosure } from "../dead-code-eliminator/reachability/bfs-closure.js";
5
5
  import { rootSourceFilePaths } from "../package-surface/package-surface-index.js";
6
6
  import { getPublicModuleSpecifierForSourcePath } from "../package-surface/public-specifiers.js";
7
7
  import { getRoot } from "../package-surface/root-registry.js";
@@ -14,6 +14,9 @@ export function ownsSourcePath(file, bundle) {
14
14
  function needsImportReplacement(file) {
15
15
  return !file.endsWith('.map');
16
16
  }
17
+ function isDefined(value) {
18
+ return value !== undefined;
19
+ }
17
20
  function createContentLookup(bundle) {
18
21
  const contentBySourcePath = new Map();
19
22
  const sourcePathByTargetPath = new Map();
@@ -23,7 +26,7 @@ function createContentLookup(bundle) {
23
26
  }
24
27
  return { contentBySourcePath, sourcePathByTargetPath };
25
28
  }
26
- function exportDeclarationModuleSpecifier(statement) {
29
+ function exportDeclaration(statement) {
27
30
  if (!typescript.isExportDeclaration(statement)) {
28
31
  return undefined;
29
32
  }
@@ -34,111 +37,192 @@ function moduleSpecifierText(statement) {
34
37
  if (moduleSpecifier === undefined) {
35
38
  return undefined;
36
39
  }
37
- return typescript.isStringLiteral(moduleSpecifier) ? moduleSpecifier.text : undefined;
40
+ if (!typescript.isStringLiteral(moduleSpecifier) || !moduleSpecifier.text.startsWith('.')) {
41
+ return undefined;
42
+ }
43
+ return moduleSpecifier.text;
38
44
  }
39
- function exportedModuleSpecifiers(content) {
45
+ function exportDeclarations(content) {
40
46
  const sourceFile = typescript.createSourceFile(content, content, typescript.ScriptTarget.Latest);
41
47
  return sourceFile
42
48
  .statements
43
- .map(exportDeclarationModuleSpecifier)
44
- .filter(isDefined)
45
- .map(moduleSpecifierText)
49
+ .map(exportDeclaration)
46
50
  .filter(isDefined);
47
51
  }
48
52
  function exportedTargetPath(currentTargetFilePath, specifier) {
49
- if (!specifier.startsWith('.')) {
50
- return undefined;
51
- }
52
53
  return path.posix.normalize(path.posix.join(path.posix.dirname(currentTargetFilePath), specifier));
53
54
  }
54
- function enqueueExportedSourceFilePaths(lookup, pending, currentTargetFilePath, specifier) {
55
+ function exportedSourceFilePaths(lookup, currentTargetFilePath, specifier) {
55
56
  const targetPath = exportedTargetPath(currentTargetFilePath, specifier);
56
- if (targetPath === undefined) {
57
- return;
58
- }
59
- const sourcePaths = [targetPath, ...declarationCompanionCandidates(targetPath)]
60
- .map(function (candidate) {
61
- return lookup.sourcePathByTargetPath.get(candidate);
62
- })
63
- .filter(isDefined);
64
- for (const sourcePath of sourcePaths) {
65
- pending.push(sourcePath);
57
+ const sourceFilePaths = [];
58
+ for (const candidate of [targetPath, ...declarationCompanionCandidates(targetPath)]) {
59
+ for (const [targetFilePath, sourceFilePath] of lookup.sourcePathByTargetPath) {
60
+ if (targetFilePath === candidate) {
61
+ sourceFilePaths.push(sourceFilePath);
62
+ }
63
+ }
66
64
  }
65
+ return sourceFilePaths;
66
+ }
67
+ function namedExports(declaration) {
68
+ const { exportClause } = declaration;
69
+ if (exportClause === undefined || !typescript.isNamedExports(exportClause)) {
70
+ return [];
71
+ }
72
+ return Array.from(exportClause.elements);
73
+ }
74
+ function isExportStar(declaration) {
75
+ return declaration.exportClause === undefined;
76
+ }
77
+ function declarationSourceFilePaths(lookup, currentTargetFilePath, declaration) {
78
+ return exportedSourceFilePaths(lookup, currentTargetFilePath, moduleSpecifierText(declaration) ?? '');
79
+ }
80
+ const pathClosureDependencies = {
81
+ visitedHas(visited, value) {
82
+ return visited.has(value);
83
+ }
84
+ };
85
+ function exportStateValue(value, property) {
86
+ return Reflect.get(new Object(value), property);
87
+ }
88
+ function sourceFilePathForState(state) {
89
+ return state.sourceFilePath;
90
+ }
91
+ const exportClosureDependencies = {
92
+ visitedHas(visited, value) {
93
+ return Array.from(visited).some(function (state) {
94
+ return exportStateValue(state, 'sourceFilePath') === exportStateValue(value, 'sourceFilePath') &&
95
+ exportStateValue(state, 'exportName') === exportStateValue(value, 'exportName');
96
+ });
97
+ }
98
+ };
99
+ function exportedStateNames(lookup, state) {
100
+ const content = lookup.contentBySourcePath.get(sourceFilePathForState(state));
101
+ if (content === undefined) {
102
+ return Array.from(new Set());
103
+ }
104
+ return exportDeclarations(content.fileDescription.content).flatMap(function (declaration) {
105
+ const sourceFilePaths = declarationSourceFilePaths(lookup, content.fileDescription.targetFilePath, declaration);
106
+ const exportStarStates = sourceFilePaths
107
+ .filter(function () {
108
+ return state.exportName !== 'default' && isExportStar(declaration);
109
+ })
110
+ .map(function (nextSourceFilePath) {
111
+ return { sourceFilePath: nextSourceFilePath, exportName: state.exportName };
112
+ });
113
+ const namedExportStates = namedExports(declaration)
114
+ .filter(function (namedExport) {
115
+ return namedExport.name.text === state.exportName;
116
+ })
117
+ .flatMap(function (namedExport) {
118
+ const sourceExportName = namedExport.propertyName?.text ?? namedExport.name.text;
119
+ return sourceFilePaths.map(function (nextSourceFilePath) {
120
+ return { sourceFilePath: nextSourceFilePath, exportName: sourceExportName };
121
+ });
122
+ });
123
+ return [...exportStarStates, ...namedExportStates];
124
+ });
67
125
  }
68
- function publicExportedSourceFilePaths(initialSourceFilePaths, lookup) {
69
- const pending = Array.from(initialSourceFilePaths);
70
- const visited = new Set();
71
- function visitSourceFilePath(sourceFilePath) {
126
+ function publicModuleCanExport(rootSourceFilePathsForModule, lookup, request, exportName) {
127
+ const closure = bfsClosure(rootSourceFilePathsForModule.map(function (sourceFilePath) {
128
+ return { sourceFilePath, exportName };
129
+ }), function (state) {
130
+ return exportedStateNames(lookup, state);
131
+ }, new Set(), { dependencies: exportClosureDependencies, maximumNodeCount: lookup.contentBySourcePath.size });
132
+ return Array.from(closure).some(function (state) {
133
+ return sourceFilePathForState(state) === request.sourceFilePath;
134
+ });
135
+ }
136
+ function publicModuleReachesSourceFile(rootSourceFilePathsForModule, lookup, request) {
137
+ const closure = bfsClosure(rootSourceFilePathsForModule, function (sourceFilePath) {
72
138
  const content = lookup.contentBySourcePath.get(sourceFilePath);
73
- if (content !== undefined && !visited.has(sourceFilePath)) {
74
- visited.add(sourceFilePath);
75
- for (const specifier of exportedModuleSpecifiers(content.fileDescription.content)) {
76
- enqueueExportedSourceFilePaths(lookup, pending, content.fileDescription.targetFilePath, specifier);
77
- }
139
+ return content === undefined
140
+ ? new Array()
141
+ : exportDeclarations(content.fileDescription.content).flatMap(function (declaration) {
142
+ return declarationSourceFilePaths(lookup, content.fileDescription.targetFilePath, declaration);
143
+ });
144
+ }, new Set(), { dependencies: pathClosureDependencies, maximumNodeCount: lookup.contentBySourcePath.size });
145
+ return closure.has(request.sourceFilePath);
146
+ }
147
+ function publicModuleCanSatisfyRequest(rootSourceFilePathsForModule, lookup, request) {
148
+ if (request.requiredExportNames.size === 0 && !request.requiresNamespaceExport) {
149
+ return publicModuleReachesSourceFile(rootSourceFilePathsForModule, lookup, request);
150
+ }
151
+ for (const exportName of request.requiredExportNames) {
152
+ if (!publicModuleCanExport(rootSourceFilePathsForModule, lookup, request, exportName)) {
153
+ return false;
78
154
  }
79
155
  }
80
- for (let next = pending.pop(); next !== undefined; next = pending.pop()) {
81
- visitSourceFilePath(next);
156
+ if (!request.requiresNamespaceExport) {
157
+ return true;
82
158
  }
83
- return visited;
159
+ return publicModuleCanExport(rootSourceFilePathsForModule, lookup, request, undefined);
84
160
  }
85
- function recordShortestSpecifier(specifiersBySourcePath, sourceFilePaths, specifier) {
86
- for (const sourceFilePath of sourceFilePaths) {
87
- const current = specifiersBySourcePath.get(sourceFilePath);
88
- if (current === undefined || specifier.length < current.length) {
89
- specifiersBySourcePath.set(sourceFilePath, specifier);
90
- }
91
- }
161
+ function shortestSpecifier(specifiers) {
162
+ const [specifier] = specifiers.toSorted(function (left, right) {
163
+ return left.length - right.length;
164
+ });
165
+ return specifier;
92
166
  }
93
- function getExplicitPublicModuleSpecifierForSourcePath(bundle, surface, sourceFilePath) {
167
+ function getExplicitPublicModuleSpecifierForSourcePath(bundle, surface, request) {
94
168
  const lookup = createContentLookup(bundle);
95
- const specifiersBySourcePath = new Map();
169
+ const specifiers = [];
96
170
  const moduleEntries = surface.packageInterface.modules ?? [];
97
171
  for (const moduleEntry of moduleEntries) {
98
172
  const root = getRoot(bundle, moduleEntry.root);
99
173
  const rootPaths = rootSourceFilePaths(root);
100
- recordShortestSpecifier(specifiersBySourcePath, publicExportedSourceFilePaths(rootPaths, lookup), toPackageSpecifier(bundle.name, moduleEntry.export));
174
+ const candidate = toPackageSpecifier(bundle.name, moduleEntry.export);
175
+ if (publicModuleCanSatisfyRequest(rootPaths, lookup, request)) {
176
+ specifiers.push(candidate);
177
+ }
101
178
  }
102
- return specifiersBySourcePath.get(sourceFilePath);
179
+ return shortestSpecifier(specifiers);
103
180
  }
104
- function getImplicitPublicModuleSpecifierForSourcePath(bundle, surface, sourceFilePath) {
181
+ function getImplicitPublicModuleSpecifierForSourcePath(bundle, surface, request) {
105
182
  const lookup = createContentLookup(bundle);
106
- const specifiersBySourcePath = new Map();
183
+ const specifiers = [];
107
184
  const defaultRoot = getRoot(bundle, surface.defaultModuleRoot);
108
- recordShortestSpecifier(specifiersBySourcePath, publicExportedSourceFilePaths(rootSourceFilePaths(defaultRoot), lookup), bundle.name);
185
+ if (publicModuleCanSatisfyRequest(rootSourceFilePaths(defaultRoot), lookup, request)) {
186
+ specifiers.push(bundle.name);
187
+ }
109
188
  for (const root of Object.values(bundle.roots)) {
110
- recordShortestSpecifier(specifiersBySourcePath, publicExportedSourceFilePaths(rootSourceFilePaths(root), lookup), toPackageSpecifier(bundle.name, `./${root.js.targetFilePath}`));
189
+ const candidate = toPackageSpecifier(bundle.name, `./${root.js.targetFilePath}`);
190
+ if (publicModuleCanSatisfyRequest(rootSourceFilePaths(root), lookup, request)) {
191
+ specifiers.push(candidate);
192
+ }
111
193
  }
112
- return specifiersBySourcePath.get(sourceFilePath) ?? getPublicModuleSpecifierForSourcePath(bundle, sourceFilePath);
194
+ return shortestSpecifier(specifiers) ?? getPublicModuleSpecifierForSourcePath(bundle, request.sourceFilePath);
113
195
  }
114
- function getExistingPublicModuleSpecifierForSourcePath(bundle, sourceFilePath) {
196
+ function getExistingPublicModuleSpecifierForSourcePath(bundle, request) {
115
197
  const { surface } = bundle;
116
198
  if (surface.mode === 'implicit') {
117
- return getImplicitPublicModuleSpecifierForSourcePath(bundle, surface, sourceFilePath);
199
+ return getImplicitPublicModuleSpecifierForSourcePath(bundle, surface, request);
118
200
  }
119
- return getExplicitPublicModuleSpecifierForSourcePath(bundle, surface, sourceFilePath);
201
+ return getExplicitPublicModuleSpecifierForSourcePath(bundle, surface, request);
120
202
  }
121
- function findReplacementInBundles(file, bundles, getTargetPath) {
203
+ function findReplacementInBundles(request, bundles, getTargetPath) {
122
204
  for (const bundle of bundles) {
123
- const targetPath = getTargetPath(bundle, file);
205
+ const targetPath = getTargetPath(bundle, request);
124
206
  if (targetPath !== undefined) {
125
207
  return {
126
208
  emittedSpecifier: targetPath,
127
209
  packageName: bundle.name
128
210
  };
129
211
  }
130
- if (needsImportReplacement(file) && ownsSourcePath(file, bundle)) {
131
- throw new Error(`Package "${bundle.name}" does not expose "${file}" for cross-package substitution`);
212
+ if (needsImportReplacement(request.sourceFilePath) && ownsSourcePath(request.sourceFilePath, bundle)) {
213
+ throw new Error(`Package "${bundle.name}" does not expose "${request.sourceFilePath}" for cross-package substitution`);
132
214
  }
133
215
  }
134
216
  return undefined;
135
217
  }
136
- function findReplacement(file, bundleDependencies, bundlePeerDependencies) {
137
- const dependencyReplacement = findReplacementInBundles(file, bundleDependencies, getPublicModuleSpecifierForSourcePath);
218
+ function findReplacement(request, bundleDependencies, bundlePeerDependencies) {
219
+ const dependencyReplacement = findReplacementInBundles(request, bundleDependencies, function (bundle, replacementRequest) {
220
+ return getPublicModuleSpecifierForSourcePath(bundle, replacementRequest.sourceFilePath);
221
+ });
138
222
  if (dependencyReplacement !== undefined) {
139
223
  return dependencyReplacement;
140
224
  }
141
- return findReplacementInBundles(file, bundlePeerDependencies, getExistingPublicModuleSpecifierForSourcePath);
225
+ return findReplacementInBundles(request, bundlePeerDependencies, getExistingPublicModuleSpecifierForSourcePath);
142
226
  }
143
227
  function withSubstitutedSourcePath(substitutedSourceFilePathsByPackageName, packageName, file) {
144
228
  if (declarationCompanionCandidates(file).length === 0) {
@@ -149,16 +233,16 @@ function withSubstitutedSourcePath(substitutedSourceFilePathsByPackageName, pack
149
233
  updated.set(packageName, new Set([...existing, file]));
150
234
  return updated;
151
235
  }
152
- export function findAllPathReplacements(files, bundleDependencies, bundlePeerDependencies) {
236
+ export function findAllPathReplacements(requests, bundleDependencies, bundlePeerDependencies) {
153
237
  const importPathReplacements = new Map();
154
238
  const matchedBundleDependencies = [];
155
239
  let substitutedSourceFilePathsByPackageName = new Map();
156
- for (const file of files) {
157
- const replacement = findReplacement(file, bundleDependencies, bundlePeerDependencies);
240
+ for (const request of requests) {
241
+ const replacement = findReplacement(request, bundleDependencies, bundlePeerDependencies);
158
242
  if (replacement !== undefined) {
159
- importPathReplacements.set(file, replacement);
243
+ importPathReplacements.set(request.sourceFilePath, replacement);
160
244
  matchedBundleDependencies.push(replacement.packageName);
161
- substitutedSourceFilePathsByPackageName = withSubstitutedSourcePath(substitutedSourceFilePathsByPackageName, replacement.packageName, file);
245
+ substitutedSourceFilePathsByPackageName = withSubstitutedSourcePath(substitutedSourceFilePathsByPackageName, replacement.packageName, request.sourceFilePath);
162
246
  }
163
247
  }
164
248
  return {