packtory 0.0.101 → 0.0.103

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.
@@ -0,0 +1,68 @@
1
+ import path from 'node:path';
2
+ import { Node as TsMorphNode, SyntaxKind, VariableDeclarationKind } from 'ts-morph';
3
+ import { packageTypeForResolvedFilePath, resolveTypescriptModuleFilePath } from "../dependency-scanner/typescript-module-resolution.js";
4
+ import { expressionFactIsPure } from "./expression-facts.js";
5
+ import { unwrapExpression } from "./expression-unwrapping.js";
6
+ import { resolveImportedExpressionPropertyPath } from "./imported-expression-origin.js";
7
+ function packageTypeFor(filePath, containingSourceFile) {
8
+ return packageTypeForResolvedFilePath({ filePath, containingSourceFile });
9
+ }
10
+ function isRuntimeModuleSource(filePath, containingSourceFile) {
11
+ return path.extname(filePath) === '.js' && packageTypeFor(filePath, containingSourceFile) === 'module';
12
+ }
13
+ function resolvedRuntimeSourceFile(moduleSpecifier, containingSourceFile) {
14
+ const filePath = resolveTypescriptModuleFilePath({
15
+ moduleSpecifier,
16
+ containingSourceFile,
17
+ resolutionMode: 'runtime'
18
+ });
19
+ if (filePath === undefined || !isRuntimeModuleSource(filePath, containingSourceFile)) {
20
+ return undefined;
21
+ }
22
+ const project = containingSourceFile.getProject();
23
+ return project.getSourceFile(filePath) ?? project.addSourceFileAtPathIfExists(filePath);
24
+ }
25
+ function objectPropertyInitializer(expression, propertyName) {
26
+ const property = expression.getProperty(propertyName);
27
+ return TsMorphNode.isPropertyAssignment(property) ? property.getInitializerOrThrow() : undefined;
28
+ }
29
+ function primitiveKeyExpression(expression) {
30
+ return TsMorphNode.isStringLiteral(unwrapExpression(expression));
31
+ }
32
+ function expressionMemberIsPrimitiveKey(expression, propertyName) {
33
+ const unwrapped = unwrapExpression(expression);
34
+ if (!TsMorphNode.isObjectLiteralExpression(unwrapped)) {
35
+ return false;
36
+ }
37
+ return primitiveKeyExpression(objectPropertyInitializer(unwrapped, propertyName));
38
+ }
39
+ function constDeclarationInitializer(declaration) {
40
+ const statement = declaration.getFirstAncestorByKindOrThrow(SyntaxKind.VariableStatement);
41
+ return statement.isExported() && statement.getDeclarationKind() === VariableDeclarationKind.Const
42
+ ? declaration.getInitializer()
43
+ : undefined;
44
+ }
45
+ function exportPathIsPrimitiveKey(sourceFile, exportName, propertyName) {
46
+ const declaration = sourceFile.getVariableDeclaration(exportName);
47
+ if (declaration === undefined) {
48
+ return false;
49
+ }
50
+ return expressionMemberIsPrimitiveKey(constDeclarationInitializer(declaration), propertyName);
51
+ }
52
+ function importedExpressionIsPrimitiveKey(expression) {
53
+ const origin = resolveImportedExpressionPropertyPath(expression);
54
+ if (origin === undefined) {
55
+ return false;
56
+ }
57
+ const sourceFile = resolvedRuntimeSourceFile(origin.from, expression.getSourceFile());
58
+ const [exportName = origin.from, propertyName = exportName, ...rest] = origin.path;
59
+ return sourceFile !== undefined && rest.length === 0 &&
60
+ exportPathIsPrimitiveKey(sourceFile, exportName, propertyName);
61
+ }
62
+ export function computedPropertyNameIsPure(expression, factFor) {
63
+ if (TsMorphNode.isPropertyAccessExpression(unwrapExpression(expression))) {
64
+ return importedExpressionIsPrimitiveKey(expression);
65
+ }
66
+ return expressionFactIsPure(factFor(expression)) || importedExpressionIsPrimitiveKey(expression);
67
+ }
68
+ //# sourceMappingURL=computed-property-key-purity.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"computed-property-key-purity.js","sourceRoot":"","sources":["../../../../source/dead-code-eliminator/computed-property-key-purity.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,176 @@
1
+ import { Node as TsMorphNode, SyntaxKind, VariableDeclarationKind } from 'ts-morph';
2
+ import { originIsTrustedPureImport, resolveImportedExpressionPath } from "./imported-expression-origin.js";
3
+ import { unwrapExpression } from "./expression-unwrapping.js";
4
+ import { exportPurityForOrigin } from "./liveness/external-purity-summary.js";
5
+ export const pureValueFact = { origin: undefined, type: 'pure-value' };
6
+ export const pureLocalObjectFact = { type: 'pure-object', origin: undefined };
7
+ export const unknownFact = { origin: undefined, type: 'unknown' };
8
+ export function expressionFactIsPure(fact) {
9
+ return ['pure-callable', 'pure-object', 'pure-value'].includes(fact.type);
10
+ }
11
+ export function expressionFactOrigin(fact) {
12
+ return fact.origin;
13
+ }
14
+ export function purityCheckerFor(factFor) {
15
+ return function (candidate) {
16
+ return expressionFactIsPure(factFor(candidate));
17
+ };
18
+ }
19
+ export function pureObjectWithOrigin(origin) {
20
+ return { type: 'pure-object', origin };
21
+ }
22
+ export function pureCallableWithOrigin(origin) {
23
+ return { type: 'pure-callable', origin };
24
+ }
25
+ function importedExpressionFact(origin, expression, settings) {
26
+ if (originIsTrustedPureImport(origin, settings)) {
27
+ return pureObjectWithOrigin(origin);
28
+ }
29
+ const exportPurity = exportPurityForOrigin(origin, expression.getSourceFile());
30
+ if (exportPurity === 'pure-callable') {
31
+ return pureCallableWithOrigin(origin);
32
+ }
33
+ if (exportPurity === 'pure-object') {
34
+ return pureObjectWithOrigin(origin);
35
+ }
36
+ return pureValueFact;
37
+ }
38
+ function syntaxKindIsOneOf(kind, ...candidates) {
39
+ return candidates.includes(kind);
40
+ }
41
+ function declarationKindIsAlwaysAvailable(kind) {
42
+ return syntaxKindIsOneOf(kind, SyntaxKind.FunctionDeclaration, SyntaxKind.ImportClause, SyntaxKind.ImportSpecifier, SyntaxKind.NamespaceImport, SyntaxKind.Parameter);
43
+ }
44
+ function declarationKindIsOrdered(kind) {
45
+ return syntaxKindIsOneOf(kind, SyntaxKind.ClassDeclaration, SyntaxKind.EnumDeclaration, SyntaxKind.VariableDeclaration);
46
+ }
47
+ function declarationKindHasImportedOrigin(kind) {
48
+ return syntaxKindIsOneOf(kind, SyntaxKind.ImportClause, SyntaxKind.ImportSpecifier, SyntaxKind.NamespaceImport);
49
+ }
50
+ function operatorKindIsAssignment(kind) {
51
+ return syntaxKindIsOneOf(kind, SyntaxKind.EqualsToken, SyntaxKind.PlusEqualsToken, SyntaxKind.MinusEqualsToken, SyntaxKind.AsteriskEqualsToken, SyntaxKind.AsteriskAsteriskEqualsToken, SyntaxKind.SlashEqualsToken, SyntaxKind.PercentEqualsToken, SyntaxKind.LessThanLessThanEqualsToken, SyntaxKind.GreaterThanGreaterThanEqualsToken, SyntaxKind.GreaterThanGreaterThanGreaterThanEqualsToken, SyntaxKind.AmpersandEqualsToken, SyntaxKind.BarEqualsToken, SyntaxKind.CaretEqualsToken, SyntaxKind.AmpersandAmpersandEqualsToken, SyntaxKind.BarBarEqualsToken, SyntaxKind.QuestionQuestionEqualsToken);
52
+ }
53
+ function declarationIsAvailableBeforeRead(declaration, expression) {
54
+ return Math.sign(expression.getStart() - declaration.getEnd()) === 1;
55
+ }
56
+ function declarationMakesIdentifierReadPure(declaration, expression) {
57
+ const kind = declaration.getKind();
58
+ if (declarationKindIsAlwaysAvailable(kind)) {
59
+ return true;
60
+ }
61
+ if (declarationKindIsOrdered(kind)) {
62
+ return declarationIsAvailableBeforeRead(declaration, expression);
63
+ }
64
+ return false;
65
+ }
66
+ function identifierDeclarations(expression) {
67
+ const symbol = expression.getSymbol();
68
+ return symbol?.getDeclarations() ?? [];
69
+ }
70
+ function rootMutationIdentifier(expression) {
71
+ const unwrapped = unwrapExpression(expression);
72
+ if (TsMorphNode.isIdentifier(unwrapped)) {
73
+ return unwrapped;
74
+ }
75
+ if (TsMorphNode.isPropertyAccessExpression(unwrapped) || TsMorphNode.isElementAccessExpression(unwrapped)) {
76
+ return rootMutationIdentifier(unwrapped.getExpression());
77
+ }
78
+ return undefined;
79
+ }
80
+ function binaryExpressionMutationRecord(expression) {
81
+ if (!TsMorphNode.isBinaryExpression(expression)) {
82
+ return undefined;
83
+ }
84
+ if (!operatorKindIsAssignment(expression.getOperatorToken().getKind())) {
85
+ return undefined;
86
+ }
87
+ const identifier = rootMutationIdentifier(expression.getLeft());
88
+ return identifier === undefined ? undefined : { name: identifier.getText(), start: expression.getStart() };
89
+ }
90
+ function updateExpressionMutationRecord(expression) {
91
+ if (!TsMorphNode.isPrefixUnaryExpression(expression) && !TsMorphNode.isPostfixUnaryExpression(expression)) {
92
+ return undefined;
93
+ }
94
+ const operator = expression.getOperatorToken();
95
+ if (operator !== SyntaxKind.PlusPlusToken && operator !== SyntaxKind.MinusMinusToken) {
96
+ return undefined;
97
+ }
98
+ const identifier = rootMutationIdentifier(expression.getOperand());
99
+ return identifier === undefined ? undefined : { name: identifier.getText(), start: expression.getStart() };
100
+ }
101
+ function mutationRecordForNode(node) {
102
+ return binaryExpressionMutationRecord(node) ?? updateExpressionMutationRecord(node);
103
+ }
104
+ function* collectMutationRecords(sourceFile) {
105
+ for (const node of sourceFile.getDescendants()) {
106
+ const record = mutationRecordForNode(node);
107
+ if (record !== undefined) {
108
+ yield record;
109
+ }
110
+ }
111
+ }
112
+ function mutationRecordTargetsDeclaration(record, declaration, read) {
113
+ return record.name === declaration.getName() &&
114
+ Math.sign(record.start - declaration.getEnd()) === 1 &&
115
+ Math.sign(read.getStart() - record.start) === 1;
116
+ }
117
+ function declarationIsMutatedBeforeRead(declaration, read) {
118
+ for (const record of collectMutationRecords(read.getSourceFile())) {
119
+ if (mutationRecordTargetsDeclaration(record, declaration, read)) {
120
+ return true;
121
+ }
122
+ }
123
+ return false;
124
+ }
125
+ function variableDeclarationIsConst(declaration) {
126
+ const statement = declaration.getFirstAncestorByKindOrThrow(SyntaxKind.VariableStatement);
127
+ return statement.getDeclarationKind() === VariableDeclarationKind.Const;
128
+ }
129
+ function factNeedsMutationCheck(fact) {
130
+ return fact.type === 'pure-object' || fact.type === 'pure-callable';
131
+ }
132
+ function variableInitializerFact(declaration, factFor) {
133
+ const initializer = declaration.getInitializer();
134
+ return initializer === undefined ? pureValueFact : factFor(initializer);
135
+ }
136
+ function variableDeclarationFact(declaration, expression, factFor) {
137
+ if (!declarationIsAvailableBeforeRead(declaration, expression)) {
138
+ return unknownFact;
139
+ }
140
+ if (!variableDeclarationIsConst(declaration)) {
141
+ return pureValueFact;
142
+ }
143
+ const initializerFact = variableInitializerFact(declaration, factFor);
144
+ if (!factNeedsMutationCheck(initializerFact)) {
145
+ return initializerFact;
146
+ }
147
+ return declarationIsMutatedBeforeRead(declaration, expression) ? pureValueFact : initializerFact;
148
+ }
149
+ function importedOriginForIdentifierDeclaration(declaration, expression) {
150
+ return declarationKindHasImportedOrigin(declaration.getKind())
151
+ ? resolveImportedExpressionPath(expression)
152
+ : undefined;
153
+ }
154
+ function declarationFactForIdentifier(declaration, expression, factFor, settings) {
155
+ const origin = importedOriginForIdentifierDeclaration(declaration, expression);
156
+ if (origin !== undefined) {
157
+ return importedExpressionFact(origin, expression, settings);
158
+ }
159
+ if (TsMorphNode.isVariableDeclaration(declaration)) {
160
+ return variableDeclarationFact(declaration, expression, factFor);
161
+ }
162
+ return declarationMakesIdentifierReadPure(declaration, expression) ? pureValueFact : unknownFact;
163
+ }
164
+ export function identifierReadFact(expression, factFor, settings) {
165
+ if (expression.getText() === 'undefined') {
166
+ return pureValueFact;
167
+ }
168
+ for (const declaration of identifierDeclarations(expression)) {
169
+ const fact = declarationFactForIdentifier(declaration, expression, factFor, settings);
170
+ if (expressionFactIsPure(fact)) {
171
+ return fact;
172
+ }
173
+ }
174
+ return unknownFact;
175
+ }
176
+ //# sourceMappingURL=expression-facts.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"expression-facts.js","sourceRoot":"","sources":["../../../../source/dead-code-eliminator/expression-facts.ts"],"names":[],"mappings":"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"}
@@ -46,7 +46,7 @@ function originMatchesTrustedImport(origin, trustedImport) {
46
46
  const [pathHead = trustedImport.from] = origin.path;
47
47
  return pathHead !== trustedImport.from && trustedImport.imports.includes(pathHead);
48
48
  }
49
- function expressionOriginIsTrusted(origin, settings) {
49
+ export function originIsTrustedPureImport(origin, settings) {
50
50
  const pureImports = settings?.pureImports;
51
51
  if (origin === undefined || pureImports === undefined) {
52
52
  return false;
@@ -63,41 +63,20 @@ function arePureCallArguments(callArguments, recurse) {
63
63
  return TsMorphNode.isExpression(argument) && recurse(argument);
64
64
  });
65
65
  }
66
- function appendPropertyAccess(base, propertyName) {
67
- return base === undefined ? undefined : { from: base.from, path: [...base.path, propertyName] };
68
- }
69
- function originOfTrustedCall(callee, callArguments, recurse, settings) {
70
- if (!expressionOriginIsTrusted(callee, settings)) {
71
- return undefined;
72
- }
73
- return arePureCallArguments(callArguments, recurse) ? callee : undefined;
74
- }
75
66
  export function resolveImportedExpressionPath(expression) {
76
67
  const identifier = unwrapExpression(expression).asKind(SyntaxKind.Identifier);
77
68
  return identifier === undefined ? undefined : importedOriginForIdentifier(identifier);
78
69
  }
79
- function propertyAccessOrigin(expression, recurse, settings, resolveOrigin) {
80
- if (!TsMorphNode.isPropertyAccessExpression(expression)) {
81
- return undefined;
82
- }
83
- const base = resolveOrigin(expression.getExpression(), recurse, settings);
84
- return appendPropertyAccess(base, expression.getName());
85
- }
86
- function trustedCallOrigin(expression, recurse, settings, resolveOrigin) {
87
- if (!TsMorphNode.isCallExpression(expression)) {
88
- return undefined;
89
- }
90
- const callee = resolveOrigin(expression.getExpression(), recurse, settings);
91
- return originOfTrustedCall(callee, expression.getArguments(), recurse, settings);
92
- }
93
- export function resolveImportedExpressionOrigin(expression, recurse, settings) {
70
+ export function resolveImportedExpressionPropertyPath(expression) {
94
71
  const unwrapped = unwrapExpression(expression);
95
- const directOrigin = resolveImportedExpressionPath(unwrapped);
96
- if (directOrigin !== undefined) {
97
- return directOrigin;
72
+ if (TsMorphNode.isIdentifier(unwrapped)) {
73
+ return resolveImportedExpressionPath(unwrapped);
74
+ }
75
+ if (TsMorphNode.isPropertyAccessExpression(unwrapped)) {
76
+ const base = resolveImportedExpressionPropertyPath(unwrapped.getExpression());
77
+ return base === undefined ? undefined : { from: base.from, path: [...base.path, unwrapped.getName()] };
98
78
  }
99
- return propertyAccessOrigin(unwrapped, recurse, settings, resolveImportedExpressionOrigin) ??
100
- trustedCallOrigin(unwrapped, recurse, settings, resolveImportedExpressionOrigin);
79
+ return undefined;
101
80
  }
102
81
  export { arePureCallArguments };
103
82
  //# sourceMappingURL=imported-expression-origin.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"imported-expression-origin.js","sourceRoot":"","sources":["../../../../source/dead-code-eliminator/imported-expression-origin.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,IAAI,IAAI,WAAW,EAAE,UAAU,EAAoC,MAAM,UAAU,CAAC;AAE7F,OAAO,EAAE,gBAAgB,EAAE,MAAM,4BAA4B,CAAC;AAoB9D,SAAS,4BAA4B,CAAC,WAAwB;IAC1D,IAAI,WAAW,CAAC,iBAAiB,CAAC,WAAW,CAAC,EAAE,CAAC;QAC7C,OAAO;YACH,IAAI,EAAE,WAAW,CAAC,oBAAoB,EAAE,CAAC,uBAAuB,EAAE;YAClE,IAAI,EAAE,CAAE,WAAW,CAAC,OAAO,EAAE,CAAE;SAClC,CAAC;IACN,CAAC;IAED,IAAI,WAAW,CAAC,iBAAiB,CAAC,WAAW,CAAC,EAAE,CAAC;QAC7C,MAAM,iBAAiB,GAAG,WAAW,CAAC,6BAA6B,CAAC,UAAU,CAAC,iBAAiB,CAAC,CAAC;QAClG,OAAO;YACH,IAAI,EAAE,iBAAiB,CAAC,uBAAuB,EAAE;YACjD,IAAI,EAAE,EAAE;SACX,CAAC;IACN,CAAC;IAED,IAAI,WAAW,CAAC,cAAc,CAAC,WAAW,CAAC,EAAE,CAAC;QAC1C,MAAM,iBAAiB,GAAG,WAAW,CAAC,6BAA6B,CAAC,UAAU,CAAC,iBAAiB,CAAC,CAAC;QAClG,OAAO;YACH,IAAI,EAAE,iBAAiB,CAAC,uBAAuB,EAAE;YACjD,IAAI,EAAE,CAAE,SAAS,CAAE;SACtB,CAAC;IACN,CAAC;IAED,OAAO,SAAS,CAAC;AACrB,CAAC;AAED,SAAS,2BAA2B,CAAC,UAAsB;IACvD,MAAM,MAAM,GAAG,UAAU,CAAC,SAAS,EAAE,CAAC;IACtC,IAAI,MAAM,KAAK,SAAS,EAAE,CAAC;QACvB,OAAO,SAAS,CAAC;IACrB,CAAC;IAED,KAAK,MAAM,WAAW,IAAI,MAAM,CAAC,eAAe,EAAE,EAAE,CAAC;QACjD,MAAM,MAAM,GAAG,4BAA4B,CAAC,WAAW,CAAC,CAAC;QACzD,IAAI,MAAM,KAAK,SAAS,EAAE,CAAC;YACvB,OAAO,MAAM,CAAC;QAClB,CAAC;IACL,CAAC;IAED,OAAO,SAAS,CAAC;AACrB,CAAC;AAED,SAAS,0BAA0B,CAC/B,MAAgC,EAChC,aAA4B;IAE5B,IAAI,aAAa,CAAC,IAAI,KAAK,MAAM,CAAC,IAAI,EAAE,CAAC;QACrC,OAAO,KAAK,CAAC;IACjB,CAAC;IACD,IAAI,aAAa,CAAC,OAAO,KAAK,SAAS,EAAE,CAAC;QACtC,OAAO,IAAI,CAAC;IAChB,CAAC;IACD,MAAM,CAAE,QAAQ,GAAG,aAAa,CAAC,IAAI,CAAE,GAAG,MAAM,CAAC,IAAI,CAAC;IACtD,OAAO,QAAQ,KAAK,aAAa,CAAC,IAAI,IAAI,aAAa,CAAC,OAAO,CAAC,QAAQ,CAAC,QAAQ,CAAC,CAAC;AACvF,CAAC;AAED,SAAS,yBAAyB,CAC9B,MAA4C,EAC5C,QAAiD;IAEjD,MAAM,WAAW,GAAG,QAAQ,EAAE,WAAW,CAAC;IAC1C,IAAI,MAAM,KAAK,SAAS,IAAI,WAAW,KAAK,SAAS,EAAE,CAAC;QACpD,OAAO,KAAK,CAAC;IACjB,CAAC;IACD,OAAO,WAAW,CAAC,IAAI,CAAC,UAAU,aAAa;QAC3C,OAAO,0BAA0B,CAAC,MAAM,EAAE,aAAa,CAAC,CAAC;IAC7D,CAAC,CAAC,CAAC;AACP,CAAC;AAED,SAAS,oBAAoB,CAAC,aAAqC,EAAE,OAAgC;IACjG,OAAO,aAAa,CAAC,KAAK,CAAC,UAAU,QAAQ;QACzC,IAAI,WAAW,CAAC,eAAe,CAAC,QAAQ,CAAC,EAAE,CAAC;YACxC,OAAO,OAAO,CAAC,QAAQ,CAAC,aAAa,EAAE,CAAC,CAAC;QAC7C,CAAC;QACD,OAAO,WAAW,CAAC,YAAY,CAAC,QAAQ,CAAC,IAAI,OAAO,CAAC,QAAQ,CAAC,CAAC;IACnE,CAAC,CAAC,CAAC;AACP,CAAC;AAED,SAAS,oBAAoB,CACzB,IAA0C,EAC1C,YAAoB;IAEpB,OAAO,IAAI,KAAK,SAAS,CAAC,CAAC,CAAC,SAAS,CAAC,CAAC,CAAC,EAAE,IAAI,EAAE,IAAI,CAAC,IAAI,EAAE,IAAI,EAAE,CAAE,GAAG,IAAI,CAAC,IAAI,EAAE,YAAY,CAAE,EAAE,CAAC;AACtG,CAAC;AAED,SAAS,mBAAmB,CACxB,MAA4C,EAC5C,aAAqC,EACrC,OAAgC,EAChC,QAAiD;IAEjD,IAAI,CAAC,yBAAyB,CAAC,MAAM,EAAE,QAAQ,CAAC,EAAE,CAAC;QAC/C,OAAO,SAAS,CAAC;IACrB,CAAC;IACD,OAAO,oBAAoB,CAAC,aAAa,EAAE,OAAO,CAAC,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,SAAS,CAAC;AAC7E,CAAC;AAED,MAAM,UAAU,6BAA6B,CAAC,UAAsB;IAChE,MAAM,UAAU,GAAG,gBAAgB,CAAC,UAAU,CAAC,CAAC,MAAM,CAAC,UAAU,CAAC,UAAU,CAAC,CAAC;IAC9E,OAAO,UAAU,KAAK,SAAS,CAAC,CAAC,CAAC,SAAS,CAAC,CAAC,CAAC,2BAA2B,CAAC,UAAU,CAAC,CAAC;AAC1F,CAAC;AAED,SAAS,oBAAoB,CACzB,UAAsB,EACtB,OAAgC,EAChC,QAAiD,EACjD,aAA+C;IAE/C,IAAI,CAAC,WAAW,CAAC,0BAA0B,CAAC,UAAU,CAAC,EAAE,CAAC;QACtD,OAAO,SAAS,CAAC;IACrB,CAAC;IACD,MAAM,IAAI,GAAG,aAAa,CAAC,UAAU,CAAC,aAAa,EAAE,EAAE,OAAO,EAAE,QAAQ,CAAC,CAAC;IAC1E,OAAO,oBAAoB,CAAC,IAAI,EAAE,UAAU,CAAC,OAAO,EAAE,CAAC,CAAC;AAC5D,CAAC;AAED,SAAS,iBAAiB,CACtB,UAAsB,EACtB,OAAgC,EAChC,QAAiD,EACjD,aAA+C;IAE/C,IAAI,CAAC,WAAW,CAAC,gBAAgB,CAAC,UAAU,CAAC,EAAE,CAAC;QAC5C,OAAO,SAAS,CAAC;IACrB,CAAC;IACD,MAAM,MAAM,GAAG,aAAa,CAAC,UAAU,CAAC,aAAa,EAAE,EAAE,OAAO,EAAE,QAAQ,CAAC,CAAC;IAC5E,OAAO,mBAAmB,CAAC,MAAM,EAAE,UAAU,CAAC,YAAY,EAAE,EAAE,OAAO,EAAE,QAAQ,CAAC,CAAC;AACrF,CAAC;AAED,MAAM,UAAU,+BAA+B,CAC3C,UAAsB,EACtB,OAAgC,EAChC,QAAiD;IAEjD,MAAM,SAAS,GAAG,gBAAgB,CAAC,UAAU,CAAC,CAAC;IAC/C,MAAM,YAAY,GAAG,6BAA6B,CAAC,SAAS,CAAC,CAAC;IAC9D,IAAI,YAAY,KAAK,SAAS,EAAE,CAAC;QAC7B,OAAO,YAAY,CAAC;IACxB,CAAC;IACD,OAAO,oBAAoB,CAAC,SAAS,EAAE,OAAO,EAAE,QAAQ,EAAE,+BAA+B,CAAC;QACtF,iBAAiB,CAAC,SAAS,EAAE,OAAO,EAAE,QAAQ,EAAE,+BAA+B,CAAC,CAAC;AACzF,CAAC;AAED,OAAO,EAAE,oBAAoB,EAAE,CAAC"}
1
+ {"version":3,"file":"imported-expression-origin.js","sourceRoot":"","sources":["../../../../source/dead-code-eliminator/imported-expression-origin.ts"],"names":[],"mappings":"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"}
@@ -312,4 +312,17 @@ export function exportPurityForOrigin(origin, containingSourceFile) {
312
312
  }
313
313
  return buildExternalPuritySummary(sourceFile).exports.get(exportKey(origin)) ?? 'unknown';
314
314
  }
315
+ export function exportHasPureObjectReturnForOrigin(origin, containingSourceFile) {
316
+ const sourceFile = resolvedModuleSourceFile(origin.from, containingSourceFile);
317
+ if (sourceFile === undefined) {
318
+ return false;
319
+ }
320
+ const nestedExportPrefix = `${exportKey(origin)}.`;
321
+ for (const key of buildExternalPuritySummary(sourceFile).exports.keys()) {
322
+ if (key.startsWith(nestedExportPrefix)) {
323
+ return true;
324
+ }
325
+ }
326
+ return false;
327
+ }
315
328
  //# sourceMappingURL=external-purity-summary.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"external-purity-summary.js","sourceRoot":"","sources":["../../../../../source/dead-code-eliminator/liveness/external-purity-summary.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"external-purity-summary.js","sourceRoot":"","sources":["../../../../../source/dead-code-eliminator/liveness/external-purity-summary.ts"],"names":[],"mappings":"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"}
@@ -1,30 +1,18 @@
1
- import path from 'node:path';
2
- import { Node as TsMorphNode, SyntaxKind, VariableDeclarationKind } from 'ts-morph';
3
- import { packageTypeForResolvedFilePath, resolveTypescriptModuleFilePath } from "../dependency-scanner/typescript-module-resolution.js";
1
+ import { Node as TsMorphNode, SyntaxKind } from 'ts-morph';
2
+ import { computedPropertyNameIsPure } from "./computed-property-key-purity.js";
4
3
  import { unwrapExpression } from "./expression-unwrapping.js";
5
- import { arePureCallArguments, resolveImportedExpressionOrigin, resolveImportedExpressionPath } from "./imported-expression-origin.js";
6
- import { externalCallIsPure } from "./liveness/external-purity.js";
4
+ import { expressionFactIsPure, expressionFactOrigin, identifierReadFact, pureCallableWithOrigin, pureLocalObjectFact, pureObjectWithOrigin, pureValueFact, purityCheckerFor, unknownFact } from "./expression-facts.js";
5
+ import { arePureCallArguments, originIsTrustedPureImport, resolveImportedExpressionPropertyPath } from "./imported-expression-origin.js";
6
+ import { exportHasPureObjectReturnForOrigin, exportPurityForOrigin } from "./liveness/external-purity-summary.js";
7
7
  import { allowedBinaryOperators, allowedPrefixUnaryOperators, inherentlyPurePropertyKinds, pureLeafKinds } from "./syntax-kind-sets.js";
8
- const alwaysAvailableDeclarationKinds = new Set([
9
- SyntaxKind.FunctionDeclaration,
10
- SyntaxKind.ImportClause,
11
- SyntaxKind.ImportSpecifier,
12
- SyntaxKind.NamespaceImport,
13
- SyntaxKind.Parameter
14
- ]);
15
- const orderedDeclarationKinds = new Set([
16
- SyntaxKind.ClassDeclaration,
17
- SyntaxKind.EnumDeclaration,
18
- SyntaxKind.VariableDeclaration
19
- ]);
20
- function isPureArrayElement(element, recurse) {
8
+ function isPureArrayElement(element, factFor) {
21
9
  if (TsMorphNode.isOmittedExpression(element)) {
22
10
  return true;
23
11
  }
24
12
  if (TsMorphNode.isSpreadElement(element)) {
25
- return recurse(element.getExpression());
13
+ return expressionFactIsPure(factFor(element.getExpression()));
26
14
  }
27
- return recurse(element);
15
+ return expressionFactIsPure(factFor(element));
28
16
  }
29
17
  function computedPropertyNameExpression(property) {
30
18
  if (TsMorphNode.isPropertyAssignment(property) ||
@@ -38,226 +26,235 @@ function computedPropertyNameExpression(property) {
38
26
  }
39
27
  return undefined;
40
28
  }
41
- function packageTypeFor(filePath, containingSourceFile) {
42
- return packageTypeForResolvedFilePath({ filePath, containingSourceFile });
43
- }
44
- function isRuntimeModuleSource(filePath, containingSourceFile) {
45
- return path.extname(filePath) === '.js' && packageTypeFor(filePath, containingSourceFile) === 'module';
46
- }
47
- function resolvedRuntimeSourceFile(moduleSpecifier, containingSourceFile) {
48
- const filePath = resolveTypescriptModuleFilePath({
49
- moduleSpecifier,
50
- containingSourceFile,
51
- resolutionMode: 'runtime'
52
- });
53
- if (filePath === undefined || !isRuntimeModuleSource(filePath, containingSourceFile)) {
54
- return undefined;
55
- }
56
- const project = containingSourceFile.getProject();
57
- return project.getSourceFile(filePath) ?? project.addSourceFileAtPathIfExists(filePath);
58
- }
59
- function objectPropertyInitializer(expression, propertyName) {
60
- const property = expression.getProperty(propertyName);
61
- return TsMorphNode.isPropertyAssignment(property) ? property.getInitializerOrThrow() : undefined;
62
- }
63
- function primitiveKeyExpression(expression) {
64
- return TsMorphNode.isStringLiteral(unwrapExpression(expression));
65
- }
66
- function expressionMemberIsPrimitiveKey(expression, propertyName) {
67
- const unwrapped = unwrapExpression(expression);
68
- if (!TsMorphNode.isObjectLiteralExpression(unwrapped)) {
69
- return false;
70
- }
71
- return primitiveKeyExpression(objectPropertyInitializer(unwrapped, propertyName));
72
- }
73
- function constDeclarationInitializer(declaration) {
74
- const statement = declaration.getFirstAncestorByKindOrThrow(SyntaxKind.VariableStatement);
75
- return statement.isExported() && statement.getDeclarationKind() === VariableDeclarationKind.Const
76
- ? declaration.getInitializer()
77
- : undefined;
78
- }
79
- function exportPathIsPrimitiveKey(sourceFile, exportName, propertyName) {
80
- const declaration = sourceFile.getVariableDeclaration(exportName);
81
- if (declaration === undefined) {
82
- return false;
83
- }
84
- return expressionMemberIsPrimitiveKey(constDeclarationInitializer(declaration), propertyName);
85
- }
86
- function importedExpressionPath(expression) {
87
- const unwrapped = unwrapExpression(expression);
88
- if (TsMorphNode.isIdentifier(unwrapped)) {
89
- return resolveImportedExpressionPath(unwrapped);
90
- }
91
- if (TsMorphNode.isPropertyAccessExpression(unwrapped)) {
92
- const base = importedExpressionPath(unwrapped.getExpression());
93
- return base === undefined ? undefined : { from: base.from, path: [...base.path, unwrapped.getName()] };
94
- }
95
- return undefined;
96
- }
97
- function importedExpressionIsPrimitiveKey(expression) {
98
- const origin = importedExpressionPath(expression);
99
- if (origin === undefined) {
100
- return false;
101
- }
102
- const sourceFile = resolvedRuntimeSourceFile(origin.from, expression.getSourceFile());
103
- const [exportName = origin.from, propertyName = exportName, ...rest] = origin.path;
104
- return sourceFile !== undefined && rest.length === 0 &&
105
- exportPathIsPrimitiveKey(sourceFile, exportName, propertyName);
106
- }
107
- function computedPropertyNameIsPure(expression, recurse) {
108
- return recurse(expression) || importedExpressionIsPrimitiveKey(expression);
109
- }
110
- function isPurePropertyAssignment(property, recurse) {
29
+ function propertyAssignmentCreationIsPure(property, factFor) {
111
30
  const computedNameExpression = computedPropertyNameExpression(property);
112
31
  if (computedNameExpression !== undefined &&
113
- !computedPropertyNameIsPure(computedNameExpression, recurse)) {
32
+ !computedPropertyNameIsPure(computedNameExpression, factFor)) {
114
33
  return false;
115
34
  }
116
35
  if (TsMorphNode.isPropertyAssignment(property)) {
117
- return recurse(property.getInitializerOrThrow());
36
+ return expressionFactIsPure(factFor(property.getInitializerOrThrow()));
118
37
  }
119
38
  if (TsMorphNode.isSpreadAssignment(property)) {
120
- return recurse(property.getExpression());
39
+ return expressionFactIsPure(factFor(property.getExpression()));
121
40
  }
122
41
  return inherentlyPurePropertyKinds.has(property.getKind());
123
42
  }
124
- function declarationIsAvailableBeforeRead(declaration, expression) {
125
- return Math.sign(expression.getStart() - declaration.getEnd()) === 1;
126
- }
127
- function declarationMakesIdentifierReadPure(declaration, expression) {
128
- const kind = declaration.getKind();
129
- if (alwaysAvailableDeclarationKinds.has(kind)) {
130
- return true;
131
- }
132
- if (orderedDeclarationKinds.has(kind)) {
133
- return declarationIsAvailableBeforeRead(declaration, expression);
43
+ function spreadAssignmentSourceIsSafe(property, factFor) {
44
+ if (TsMorphNode.isSpreadAssignment(property)) {
45
+ return factFor(property.getExpression()).type === 'pure-object';
134
46
  }
135
- return false;
136
- }
137
- function identifierDeclarations(expression) {
138
- const symbol = expression.getSymbol();
139
- return symbol?.getDeclarations() ?? [];
47
+ return true;
140
48
  }
141
- function isPureIdentifierRead(expression) {
142
- if (expression.getText() === 'undefined') {
143
- return true;
144
- }
145
- return identifierDeclarations(expression).some(function (declaration) {
146
- return declarationMakesIdentifierReadPure(declaration, expression);
147
- });
49
+ function createdObjectPropertyIsSafeToSpread(property, factFor) {
50
+ return !TsMorphNode.isGetAccessorDeclaration(property) &&
51
+ !TsMorphNode.isSetAccessorDeclaration(property) &&
52
+ spreadAssignmentSourceIsSafe(property, factFor);
148
53
  }
149
- function isPureBuiltinCallExpression(callTarget, expression, recurse) {
54
+ function isPureBuiltinCallExpression(callTarget, expression, factFor) {
150
55
  return TsMorphNode.isIdentifier(callTarget) && callTarget.getText() === 'Symbol'
151
- ? arePureCallArguments(expression.getArguments(), recurse)
56
+ ? arePureCallArguments(expression.getArguments(), purityCheckerFor(factFor))
152
57
  : false;
153
58
  }
154
59
  function hasPureAnnotation(expression) {
155
60
  const text = expression.getFullText();
156
61
  return text.includes('@__PURE__') || text.includes('#__PURE__');
157
62
  }
158
- function pureAnnotationMakesCallPure(expression, recurse) {
159
- return hasPureAnnotation(expression) && arePureCallArguments(expression.getArguments(), recurse);
63
+ function pureAnnotationMakesCallPure(expression, factFor) {
64
+ return hasPureAnnotation(expression) && arePureCallArguments(expression.getArguments(), purityCheckerFor(factFor));
65
+ }
66
+ function appendOriginPath(origin, segment) {
67
+ return origin === undefined ? undefined : { from: origin.from, path: [...origin.path, segment] };
68
+ }
69
+ function originForExpressionFact(expression, factFor) {
70
+ return expressionFactOrigin(factFor(expression));
71
+ }
72
+ function originForCallTarget(expression, factFor, settings) {
73
+ const unwrapped = unwrapExpression(expression);
74
+ if (TsMorphNode.isPropertyAccessExpression(unwrapped)) {
75
+ const base = unwrapped.getExpression();
76
+ const baseOrigin = TsMorphNode.isPropertyAccessExpression(unwrapExpression(base))
77
+ ? originForCallTarget(base, factFor, settings)
78
+ : resolveImportedExpressionPropertyPath(base) ?? originForExpressionFact(base, factFor);
79
+ return appendOriginPath(baseOrigin, unwrapped.getName());
80
+ }
81
+ return resolveImportedExpressionPropertyPath(unwrapped) ?? originForExpressionFact(unwrapped, factFor);
82
+ }
83
+ function externalCallResultFact(origin, expression) {
84
+ if (exportPurityForOrigin(origin, expression.getSourceFile()) !== 'pure-callable') {
85
+ return unknownFact;
86
+ }
87
+ return exportHasPureObjectReturnForOrigin(origin, expression.getSourceFile())
88
+ ? pureObjectWithOrigin(origin)
89
+ : pureValueFact;
160
90
  }
161
- function isPureCallExpression(expression, recurse, settings) {
91
+ function importedCallResultFact(origin, expression, factFor, settings) {
92
+ if (origin === undefined || !arePureCallArguments(expression.getArguments(), purityCheckerFor(factFor))) {
93
+ return unknownFact;
94
+ }
95
+ if (originIsTrustedPureImport(origin, settings)) {
96
+ return pureObjectWithOrigin(origin);
97
+ }
98
+ return externalCallResultFact(origin, expression);
99
+ }
100
+ function callExpressionFact(expression, factFor, settings) {
162
101
  const callTarget = unwrapExpression(expression.getExpression());
163
- return (pureAnnotationMakesCallPure(expression, recurse) ||
164
- isPureBuiltinCallExpression(callTarget, expression, recurse) ||
165
- externalCallIsPure(expression, recurse) ||
166
- resolveImportedExpressionOrigin(expression, recurse, settings) !== undefined);
102
+ if (pureAnnotationMakesCallPure(expression, factFor) ||
103
+ isPureBuiltinCallExpression(callTarget, expression, factFor)) {
104
+ return pureValueFact;
105
+ }
106
+ const importedCallFact = importedCallResultFact(originForCallTarget(callTarget, factFor, settings), expression, factFor, settings);
107
+ return importedCallFact;
108
+ }
109
+ function propertyAccessExpressionFact(expression, factFor, settings) {
110
+ const origin = originForCallTarget(expression, factFor, settings);
111
+ if (origin === undefined) {
112
+ return unknownFact;
113
+ }
114
+ if (originIsTrustedPureImport(origin, settings)) {
115
+ return pureObjectWithOrigin(origin);
116
+ }
117
+ const exportPurity = exportPurityForOrigin(origin, expression.getSourceFile());
118
+ if (exportPurity === 'pure-callable') {
119
+ return pureCallableWithOrigin(origin);
120
+ }
121
+ return exportPurity === 'pure-object' ? pureObjectWithOrigin(origin) : unknownFact;
167
122
  }
168
123
  function constructorNameIsTrusted(constructorExpression, settings) {
169
124
  return TsMorphNode.isIdentifier(constructorExpression) &&
170
125
  settings?.pureConstructors?.includes(constructorExpression.getText()) === true;
171
126
  }
172
- function isPureNewExpression(expression, recurse, settings) {
127
+ function isPureNewExpression(expression, factFor, settings) {
173
128
  const constructorExpression = unwrapExpression(expression.getExpression());
174
129
  const trustedConstructorCall = constructorNameIsTrusted(constructorExpression, settings) &&
175
- arePureCallArguments(expression.getArguments(), recurse);
176
- return pureAnnotationMakesCallPure(expression, recurse) || trustedConstructorCall;
130
+ arePureCallArguments(expression.getArguments(), purityCheckerFor(factFor));
131
+ return pureAnnotationMakesCallPure(expression, factFor) || trustedConstructorCall;
177
132
  }
178
- function templateExpressionIsPure(expression, recurse) {
179
- return expression
133
+ function templateExpressionFact(expression, factFor) {
134
+ const spansArePure = expression
180
135
  .asKindOrThrow(SyntaxKind.TemplateExpression)
181
136
  .getTemplateSpans()
182
137
  .every(function (span) {
183
- return recurse(span.getExpression());
138
+ return expressionFactIsPure(factFor(span.getExpression()));
184
139
  });
140
+ return spansArePure ? pureValueFact : unknownFact;
185
141
  }
186
- function arrayLiteralExpressionIsPure(expression, recurse) {
187
- return expression
142
+ function arrayLiteralExpressionFact(expression, factFor) {
143
+ const elementsArePure = expression
188
144
  .asKindOrThrow(SyntaxKind.ArrayLiteralExpression)
189
145
  .getElements()
190
146
  .every(function (element) {
191
- return isPureArrayElement(element, recurse);
147
+ return isPureArrayElement(element, factFor);
192
148
  });
149
+ return elementsArePure ? pureValueFact : unknownFact;
193
150
  }
194
- function objectLiteralExpressionIsPure(expression, recurse) {
195
- return expression
151
+ function objectLiteralExpressionFact(expression, factFor) {
152
+ const properties = expression
196
153
  .asKindOrThrow(SyntaxKind.ObjectLiteralExpression)
197
- .getProperties()
198
- .every(function (property) {
199
- return isPurePropertyAssignment(property, recurse);
154
+ .getProperties();
155
+ if (properties.some(function (property) {
156
+ return !propertyAssignmentCreationIsPure(property, factFor);
157
+ })) {
158
+ return unknownFact;
159
+ }
160
+ const hasSpread = properties.some(function (property) {
161
+ return TsMorphNode.isSpreadAssignment(property);
162
+ });
163
+ const spreadSourcesAreSafe = properties.every(function (property) {
164
+ return spreadAssignmentSourceIsSafe(property, factFor);
165
+ });
166
+ if (hasSpread && !spreadSourcesAreSafe) {
167
+ return unknownFact;
168
+ }
169
+ const createdObjectIsSafeToSpread = properties.every(function (property) {
170
+ return createdObjectPropertyIsSafeToSpread(property, factFor);
200
171
  });
172
+ return createdObjectIsSafeToSpread
173
+ ? pureLocalObjectFact
174
+ : pureValueFact;
201
175
  }
202
- function prefixUnaryExpressionIsPure(expression, recurse) {
176
+ function prefixUnaryExpressionFact(expression, factFor) {
203
177
  const unary = expression.asKindOrThrow(SyntaxKind.PrefixUnaryExpression);
204
- return allowedPrefixUnaryOperators.has(unary.getOperatorToken()) && recurse(unary.getOperand());
178
+ const operandIsPure = allowedPrefixUnaryOperators.has(unary.getOperatorToken()) &&
179
+ expressionFactIsPure(factFor(unary.getOperand()));
180
+ return operandIsPure ? pureValueFact : unknownFact;
205
181
  }
206
- function binaryExpressionIsPure(expression, recurse) {
182
+ function binaryExpressionFact(expression, factFor) {
207
183
  const binary = expression.asKindOrThrow(SyntaxKind.BinaryExpression);
208
184
  if (!allowedBinaryOperators.has(binary.getOperatorToken().getKind())) {
209
- return false;
185
+ return unknownFact;
210
186
  }
211
- return recurse(binary.getLeft()) && recurse(binary.getRight());
187
+ return expressionFactIsPure(factFor(binary.getLeft())) && expressionFactIsPure(factFor(binary.getRight()))
188
+ ? pureValueFact
189
+ : unknownFact;
212
190
  }
213
- function callExpressionIsPure(expression, recurse, settings) {
214
- return isPureCallExpression(expression.asKindOrThrow(SyntaxKind.CallExpression), recurse, settings);
191
+ function callExpressionRule(expression, factFor, settings) {
192
+ return callExpressionFact(expression.asKindOrThrow(SyntaxKind.CallExpression), factFor, settings);
215
193
  }
216
- function newExpressionIsPure(expression, recurse, settings) {
217
- return isPureNewExpression(expression.asKindOrThrow(SyntaxKind.NewExpression), recurse, settings);
194
+ function newExpressionFact(expression, factFor, settings) {
195
+ return isPureNewExpression(expression.asKindOrThrow(SyntaxKind.NewExpression), factFor, settings)
196
+ ? pureValueFact
197
+ : unknownFact;
218
198
  }
219
199
  function literalStructurePurityRuleFor(kind) {
220
200
  if (kind === SyntaxKind.TemplateExpression) {
221
- return templateExpressionIsPure;
201
+ return templateExpressionFact;
222
202
  }
223
203
  if (kind === SyntaxKind.ArrayLiteralExpression) {
224
- return arrayLiteralExpressionIsPure;
204
+ return arrayLiteralExpressionFact;
225
205
  }
226
206
  if (kind === SyntaxKind.ObjectLiteralExpression) {
227
- return objectLiteralExpressionIsPure;
207
+ return objectLiteralExpressionFact;
208
+ }
209
+ return undefined;
210
+ }
211
+ function memberPurityRuleFor(kind) {
212
+ if (kind === SyntaxKind.PropertyAccessExpression) {
213
+ return propertyAccessExpressionFact;
228
214
  }
229
215
  return undefined;
230
216
  }
231
217
  function operationPurityRuleFor(kind) {
232
218
  if (kind === SyntaxKind.PrefixUnaryExpression) {
233
- return prefixUnaryExpressionIsPure;
219
+ return prefixUnaryExpressionFact;
234
220
  }
235
221
  if (kind === SyntaxKind.BinaryExpression) {
236
- return binaryExpressionIsPure;
222
+ return binaryExpressionFact;
237
223
  }
238
224
  if (kind === SyntaxKind.CallExpression) {
239
- return callExpressionIsPure;
225
+ return callExpressionRule;
240
226
  }
241
227
  if (kind === SyntaxKind.NewExpression) {
242
- return newExpressionIsPure;
228
+ return newExpressionFact;
243
229
  }
244
230
  return undefined;
245
231
  }
246
232
  function expressionPurityRuleFor(kind) {
247
- return literalStructurePurityRuleFor(kind) ?? operationPurityRuleFor(kind);
233
+ return memberPurityRuleFor(kind) ?? literalStructurePurityRuleFor(kind) ?? operationPurityRuleFor(kind);
248
234
  }
249
- export function isPureExpression(expression, settings) {
235
+ function calculateExpressionFact(expression, context, factFor) {
250
236
  const unwrapped = unwrapExpression(expression);
251
237
  if (TsMorphNode.isIdentifier(unwrapped)) {
252
- return isPureIdentifierRead(unwrapped);
238
+ return identifierReadFact(unwrapped, factFor, context.settings);
253
239
  }
254
- const recurse = function (candidate) {
255
- return isPureExpression(candidate, settings);
256
- };
257
- const kind = unwrapped.getKind();
258
- if (pureLeafKinds.has(kind)) {
259
- return true;
240
+ if (pureLeafKinds.has(unwrapped.getKind())) {
241
+ return pureValueFact;
260
242
  }
261
- return expressionPurityRuleFor(kind)?.(unwrapped, recurse, settings) ?? false;
243
+ return expressionPurityRuleFor(unwrapped.getKind())?.(unwrapped, factFor, context.settings) ?? unknownFact;
244
+ }
245
+ function cacheCalculatedExpressionFact(expression, context, factFor) {
246
+ context.cache.set(expression, unknownFact);
247
+ const fact = calculateExpressionFact(expression, context, factFor);
248
+ context.cache.set(expression, fact);
249
+ return fact;
250
+ }
251
+ function expressionFactFor(expression, context) {
252
+ const factFor = function (candidate) {
253
+ return expressionFactFor(candidate, context);
254
+ };
255
+ return context.cache.get(expression) ?? cacheCalculatedExpressionFact(expression, context, factFor);
256
+ }
257
+ export function isPureExpression(expression, settings) {
258
+ return expressionFactIsPure(expressionFactFor(expression, { cache: new WeakMap(), settings }));
262
259
  }
263
260
  //# sourceMappingURL=pure-expression.js.map
@@ -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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"}
package/package.json CHANGED
@@ -8,7 +8,7 @@
8
8
  ],
9
9
  "dependencies": {
10
10
  "@arethetypeswrong/core": "0.18.5",
11
- "@cyclonedx/cyclonedx-library": "10.2.0",
11
+ "@cyclonedx/cyclonedx-library": "10.3.0",
12
12
  "@jridgewell/trace-mapping": "0.3.31",
13
13
  "@schema-hub/zod-error-formatter": "0.0.19",
14
14
  "@ts-morph/common": "0.29.0",
@@ -17,10 +17,10 @@
17
17
  "diff": "9.0.0",
18
18
  "fflate": "0.8.3",
19
19
  "hosted-git-info": "10.1.1",
20
- "libnpmpublish": "12.0.0",
20
+ "libnpmpublish": "12.0.1",
21
21
  "npm-package-arg": "14.0.0",
22
22
  "npm-registry-fetch": "20.0.1",
23
- "remeda": "2.48.0",
23
+ "remeda": "2.50.0",
24
24
  "semver": "7.8.5",
25
25
  "spdx-expression-parse": "5.0.0",
26
26
  "ssri": "14.0.0",
@@ -28,7 +28,7 @@
28
28
  "true-myth": "9.4.0",
29
29
  "ts-morph": "28.0.0",
30
30
  "ts-pattern": "5.9.0",
31
- "type-fest": "5.9.0",
31
+ "type-fest": "5.10.0",
32
32
  "unix-permissions": "6.0.2",
33
33
  "zod": "4.6.5"
34
34
  },
@@ -141,7 +141,6 @@
141
141
  "./config/checks-schema.js",
142
142
  "./config/package-schemas.js",
143
143
  "./config/packtory-config-without-registry-schema.js",
144
- "./dead-code-eliminator/pure-expression.js",
145
144
  "./dead-code-eliminator/syntax-kind-sets.js",
146
145
  "./dead-code-eliminator/transform/named-declaration-kinds.js",
147
146
  "./packages/package-processor.composition.js",
@@ -149,5 +148,5 @@
149
148
  "./tar/tarball-builder.js"
150
149
  ],
151
150
  "type": "module",
152
- "version": "0.0.101"
151
+ "version": "0.0.103"
153
152
  }
package/sbom.cdx.json CHANGED
@@ -9,16 +9,16 @@
9
9
  {
10
10
  "type": "application",
11
11
  "name": "packtory",
12
- "version": "0.0.111"
12
+ "version": "0.0.114"
13
13
  }
14
14
  ]
15
15
  },
16
16
  "component": {
17
17
  "type": "library",
18
18
  "name": "packtory",
19
- "version": "0.0.101",
20
- "bom-ref": "pkg:npm/packtory@0.0.101",
21
- "purl": "pkg:npm/packtory@0.0.101"
19
+ "version": "0.0.103",
20
+ "bom-ref": "pkg:npm/packtory@0.0.103",
21
+ "purl": "pkg:npm/packtory@0.0.103"
22
22
  }
23
23
  },
24
24
  "components": [
@@ -38,15 +38,15 @@
38
38
  {
39
39
  "type": "library",
40
40
  "name": "@cyclonedx/cyclonedx-library",
41
- "version": "10.2.0",
42
- "bom-ref": "pkg:npm/@cyclonedx/cyclonedx-library@10.2.0",
41
+ "version": "10.3.0",
42
+ "bom-ref": "pkg:npm/@cyclonedx/cyclonedx-library@10.3.0",
43
43
  "scope": "required",
44
44
  "licenses": [
45
45
  {
46
46
  "expression": "Apache-2.0"
47
47
  }
48
48
  ],
49
- "purl": "pkg:npm/@cyclonedx/cyclonedx-library@10.2.0"
49
+ "purl": "pkg:npm/@cyclonedx/cyclonedx-library@10.3.0"
50
50
  },
51
51
  {
52
52
  "type": "library",
@@ -155,15 +155,15 @@
155
155
  {
156
156
  "type": "library",
157
157
  "name": "libnpmpublish",
158
- "version": "12.0.0",
159
- "bom-ref": "pkg:npm/libnpmpublish@12.0.0",
158
+ "version": "12.0.1",
159
+ "bom-ref": "pkg:npm/libnpmpublish@12.0.1",
160
160
  "scope": "required",
161
161
  "licenses": [
162
162
  {
163
163
  "expression": "ISC"
164
164
  }
165
165
  ],
166
- "purl": "pkg:npm/libnpmpublish@12.0.0"
166
+ "purl": "pkg:npm/libnpmpublish@12.0.1"
167
167
  },
168
168
  {
169
169
  "type": "library",
@@ -194,15 +194,15 @@
194
194
  {
195
195
  "type": "library",
196
196
  "name": "remeda",
197
- "version": "2.48.0",
198
- "bom-ref": "pkg:npm/remeda@2.48.0",
197
+ "version": "2.50.0",
198
+ "bom-ref": "pkg:npm/remeda@2.50.0",
199
199
  "scope": "required",
200
200
  "licenses": [
201
201
  {
202
202
  "expression": "MIT"
203
203
  }
204
204
  ],
205
- "purl": "pkg:npm/remeda@2.48.0"
205
+ "purl": "pkg:npm/remeda@2.50.0"
206
206
  },
207
207
  {
208
208
  "type": "library",
@@ -298,15 +298,15 @@
298
298
  {
299
299
  "type": "library",
300
300
  "name": "type-fest",
301
- "version": "5.9.0",
302
- "bom-ref": "pkg:npm/type-fest@5.9.0",
301
+ "version": "5.10.0",
302
+ "bom-ref": "pkg:npm/type-fest@5.10.0",
303
303
  "scope": "required",
304
304
  "licenses": [
305
305
  {
306
306
  "expression": "(MIT OR CC0-1.0)"
307
307
  }
308
308
  ],
309
- "purl": "pkg:npm/type-fest@5.9.0"
309
+ "purl": "pkg:npm/type-fest@5.10.0"
310
310
  },
311
311
  {
312
312
  "type": "library",
@@ -340,7 +340,7 @@
340
340
  "ref": "pkg:npm/@arethetypeswrong/core@0.18.5"
341
341
  },
342
342
  {
343
- "ref": "pkg:npm/@cyclonedx/cyclonedx-library@10.2.0"
343
+ "ref": "pkg:npm/@cyclonedx/cyclonedx-library@10.3.0"
344
344
  },
345
345
  {
346
346
  "ref": "pkg:npm/@jridgewell/trace-mapping@0.3.31"
@@ -367,7 +367,7 @@
367
367
  "ref": "pkg:npm/hosted-git-info@10.1.1"
368
368
  },
369
369
  {
370
- "ref": "pkg:npm/libnpmpublish@12.0.0"
370
+ "ref": "pkg:npm/libnpmpublish@12.0.1"
371
371
  },
372
372
  {
373
373
  "ref": "pkg:npm/npm-package-arg@14.0.0"
@@ -376,10 +376,10 @@
376
376
  "ref": "pkg:npm/npm-registry-fetch@20.0.1"
377
377
  },
378
378
  {
379
- "ref": "pkg:npm/packtory@0.0.101",
379
+ "ref": "pkg:npm/packtory@0.0.103",
380
380
  "dependsOn": [
381
381
  "pkg:npm/@arethetypeswrong/core@0.18.5",
382
- "pkg:npm/@cyclonedx/cyclonedx-library@10.2.0",
382
+ "pkg:npm/@cyclonedx/cyclonedx-library@10.3.0",
383
383
  "pkg:npm/@jridgewell/trace-mapping@0.3.31",
384
384
  "pkg:npm/@schema-hub/zod-error-formatter@0.0.19",
385
385
  "pkg:npm/@ts-morph/common@0.29.0",
@@ -388,10 +388,10 @@
388
388
  "pkg:npm/diff@9.0.0",
389
389
  "pkg:npm/fflate@0.8.3",
390
390
  "pkg:npm/hosted-git-info@10.1.1",
391
- "pkg:npm/libnpmpublish@12.0.0",
391
+ "pkg:npm/libnpmpublish@12.0.1",
392
392
  "pkg:npm/npm-package-arg@14.0.0",
393
393
  "pkg:npm/npm-registry-fetch@20.0.1",
394
- "pkg:npm/remeda@2.48.0",
394
+ "pkg:npm/remeda@2.50.0",
395
395
  "pkg:npm/semver@7.8.5",
396
396
  "pkg:npm/spdx-expression-parse@5.0.0",
397
397
  "pkg:npm/ssri@14.0.0",
@@ -399,13 +399,13 @@
399
399
  "pkg:npm/true-myth@9.4.0",
400
400
  "pkg:npm/ts-morph@28.0.0",
401
401
  "pkg:npm/ts-pattern@5.9.0",
402
- "pkg:npm/type-fest@5.9.0",
402
+ "pkg:npm/type-fest@5.10.0",
403
403
  "pkg:npm/unix-permissions@6.0.2",
404
404
  "pkg:npm/zod@4.6.5"
405
405
  ]
406
406
  },
407
407
  {
408
- "ref": "pkg:npm/remeda@2.48.0"
408
+ "ref": "pkg:npm/remeda@2.50.0"
409
409
  },
410
410
  {
411
411
  "ref": "pkg:npm/semver@7.8.5"
@@ -429,7 +429,7 @@
429
429
  "ref": "pkg:npm/ts-pattern@5.9.0"
430
430
  },
431
431
  {
432
- "ref": "pkg:npm/type-fest@5.9.0"
432
+ "ref": "pkg:npm/type-fest@5.10.0"
433
433
  },
434
434
  {
435
435
  "ref": "pkg:npm/unix-permissions@6.0.2"
@@ -1,40 +0,0 @@
1
- import { Node as TsMorphNode } from 'ts-morph';
2
- import { arePureCallArguments, resolveImportedExpressionPath } from "../imported-expression-origin.js";
3
- import { exportPurityForOrigin } from "./external-purity-summary.js";
4
- function originForPureCall(expression, recurse, resolveOrigin) {
5
- const origin = resolveOrigin(expression.getExpression(), recurse);
6
- if (origin === undefined || !arePureCallArguments(expression.getArguments(), recurse)) {
7
- return undefined;
8
- }
9
- return exportPurityForOrigin(origin, expression.getSourceFile()) === 'pure-callable'
10
- ? origin
11
- : undefined;
12
- }
13
- function fluentOriginForCall(expression, recurse, resolveOrigin) {
14
- if (!TsMorphNode.isCallExpression(expression)) {
15
- return resolveImportedExpressionPath(expression);
16
- }
17
- return originForPureCall(expression, recurse, resolveOrigin);
18
- }
19
- function appendOriginPath(origin, segment) {
20
- return origin === undefined
21
- ? undefined
22
- : { from: origin.from, path: [...origin.path, segment] };
23
- }
24
- function propertyAccessOrigin(expression, recurse, resolveOrigin) {
25
- if (!TsMorphNode.isPropertyAccessExpression(expression)) {
26
- return undefined;
27
- }
28
- return appendOriginPath(fluentOriginForCall(expression.getExpression(), recurse, resolveOrigin), expression.getName());
29
- }
30
- function externalCalleeOrigin(expression, recurse) {
31
- const directOrigin = resolveImportedExpressionPath(expression);
32
- if (directOrigin !== undefined) {
33
- return directOrigin;
34
- }
35
- return propertyAccessOrigin(expression, recurse, externalCalleeOrigin);
36
- }
37
- export function externalCallIsPure(expression, recurse) {
38
- return originForPureCall(expression, recurse, externalCalleeOrigin) !== undefined;
39
- }
40
- //# sourceMappingURL=external-purity.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"external-purity.js","sourceRoot":"","sources":["../../../../../source/dead-code-eliminator/liveness/external-purity.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,IAAI,IAAI,WAAW,EAAwC,MAAM,UAAU,CAAC;AACrF,OAAO,EACH,oBAAoB,EACpB,6BAA6B,EAGhC,MAAM,kCAAkC,CAAC;AAC1C,OAAO,EAAE,qBAAqB,EAAE,MAAM,8BAA8B,CAAC;AAOrE,SAAS,iBAAiB,CACtB,UAA0B,EAC1B,OAAgC,EAChC,aAA6B;IAE7B,MAAM,MAAM,GAAG,aAAa,CAAC,UAAU,CAAC,aAAa,EAAE,EAAE,OAAO,CAAC,CAAC;IAClE,IAAI,MAAM,KAAK,SAAS,IAAI,CAAC,oBAAoB,CAAC,UAAU,CAAC,YAAY,EAAE,EAAE,OAAO,CAAC,EAAE,CAAC;QACpF,OAAO,SAAS,CAAC;IACrB,CAAC;IACD,OAAO,qBAAqB,CAAC,MAAM,EAAE,UAAU,CAAC,aAAa,EAAE,CAAC,KAAK,eAAe;QAChF,CAAC,CAAC,MAAM;QACR,CAAC,CAAC,SAAS,CAAC;AACpB,CAAC;AAED,SAAS,mBAAmB,CACxB,UAAsB,EACtB,OAAgC,EAChC,aAA6B;IAE7B,IAAI,CAAC,WAAW,CAAC,gBAAgB,CAAC,UAAU,CAAC,EAAE,CAAC;QAC5C,OAAO,6BAA6B,CAAC,UAAU,CAAC,CAAC;IACrD,CAAC;IACD,OAAO,iBAAiB,CAAC,UAAU,EAAE,OAAO,EAAE,aAAa,CAAC,CAAC;AACjE,CAAC;AAED,SAAS,gBAAgB,CACrB,MAA4C,EAC5C,OAAe;IAEf,OAAO,MAAM,KAAK,SAAS;QACvB,CAAC,CAAC,SAAS;QACX,CAAC,CAAC,EAAE,IAAI,EAAE,MAAM,CAAC,IAAI,EAAE,IAAI,EAAE,CAAE,GAAG,MAAM,CAAC,IAAI,EAAE,OAAO,CAAE,EAAE,CAAC;AACnE,CAAC;AAED,SAAS,oBAAoB,CACzB,UAAsB,EACtB,OAAgC,EAChC,aAA6B;IAE7B,IAAI,CAAC,WAAW,CAAC,0BAA0B,CAAC,UAAU,CAAC,EAAE,CAAC;QACtD,OAAO,SAAS,CAAC;IACrB,CAAC;IACD,OAAO,gBAAgB,CACnB,mBAAmB,CAAC,UAAU,CAAC,aAAa,EAAE,EAAE,OAAO,EAAE,aAAa,CAAC,EACvE,UAAU,CAAC,OAAO,EAAE,CACvB,CAAC;AACN,CAAC;AAED,SAAS,oBAAoB,CACzB,UAAsB,EACtB,OAAgC;IAEhC,MAAM,YAAY,GAAG,6BAA6B,CAAC,UAAU,CAAC,CAAC;IAC/D,IAAI,YAAY,KAAK,SAAS,EAAE,CAAC;QAC7B,OAAO,YAAY,CAAC;IACxB,CAAC;IACD,OAAO,oBAAoB,CAAC,UAAU,EAAE,OAAO,EAAE,oBAAoB,CAAC,CAAC;AAC3E,CAAC;AAED,MAAM,UAAU,kBAAkB,CAC9B,UAA0B,EAC1B,OAAgC;IAEhC,OAAO,iBAAiB,CAAC,UAAU,EAAE,OAAO,EAAE,oBAAoB,CAAC,KAAK,SAAS,CAAC;AACtF,CAAC"}