@thethracian/oxlint-config 0.3.5 → 0.4.0
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.
- package/CHANGELOG.md +12 -0
- package/README.md +14 -2
- package/dist/codemods/arrow-body-style.d.ts.map +1 -1
- package/dist/codemods/arrow-body-style.js +13 -1
- package/dist/codemods/arrow-body-style.js.map +1 -1
- package/dist/codemods/explicit-return-types.d.ts.map +1 -1
- package/dist/codemods/explicit-return-types.js +15 -3
- package/dist/codemods/explicit-return-types.js.map +1 -1
- package/dist/codemods/function-declarations.d.ts.map +1 -1
- package/dist/codemods/function-declarations.js +7 -0
- package/dist/codemods/function-declarations.js.map +1 -1
- package/dist/codemods/inline-export-lists.d.ts.map +1 -1
- package/dist/codemods/inline-export-lists.js +17 -3
- package/dist/codemods/inline-export-lists.js.map +1 -1
- package/dist/codemods/internal-export-docs.d.ts.map +1 -1
- package/dist/codemods/internal-export-docs.js +17 -5
- package/dist/codemods/internal-export-docs.js.map +1 -1
- package/dist/codemods/no-ternary-variable-initializers.d.ts.map +1 -1
- package/dist/codemods/no-ternary-variable-initializers.js +24 -14
- package/dist/codemods/no-ternary-variable-initializers.js.map +1 -1
- package/dist/codemods/rename-acronyms.d.ts.map +1 -1
- package/dist/codemods/rename-acronyms.js +31 -1
- package/dist/codemods/rename-acronyms.js.map +1 -1
- package/dist/rules/diagnostic-guidance.d.ts.map +1 -1
- package/dist/rules/diagnostic-guidance.js +26 -2
- package/dist/rules/diagnostic-guidance.js.map +1 -1
- package/dist/rules/effect-alias-canonicalization.d.ts +27 -0
- package/dist/rules/effect-alias-canonicalization.d.ts.map +1 -0
- package/dist/rules/effect-alias-canonicalization.js +60 -0
- package/dist/rules/effect-alias-canonicalization.js.map +1 -0
- package/dist/rules/effect-ast-scope.d.ts +25 -0
- package/dist/rules/effect-ast-scope.d.ts.map +1 -0
- package/dist/rules/effect-ast-scope.js +286 -0
- package/dist/rules/effect-ast-scope.js.map +1 -0
- package/dist/rules/effect-ast.d.ts +42 -0
- package/dist/rules/effect-ast.d.ts.map +1 -0
- package/dist/rules/effect-ast.js +74 -0
- package/dist/rules/effect-ast.js.map +1 -0
- package/dist/rules/effect-boundary-ast-shared.d.ts +42 -0
- package/dist/rules/effect-boundary-ast-shared.d.ts.map +1 -0
- package/dist/rules/effect-boundary-ast-shared.js +203 -0
- package/dist/rules/effect-boundary-ast-shared.js.map +1 -0
- package/dist/rules/effect-default-boundary-ast.d.ts +10 -0
- package/dist/rules/effect-default-boundary-ast.d.ts.map +1 -0
- package/dist/rules/effect-default-boundary-ast.js +320 -0
- package/dist/rules/effect-default-boundary-ast.js.map +1 -0
- package/dist/rules/effect-default-compat-rules.d.ts +11 -15
- package/dist/rules/effect-default-compat-rules.d.ts.map +1 -1
- package/dist/rules/effect-default-compat-rules.js +20 -0
- package/dist/rules/effect-default-compat-rules.js.map +1 -1
- package/dist/rules/effect-default-scan-helpers.js +1 -1
- package/dist/rules/effect-default-scan-helpers.js.map +1 -1
- package/dist/rules/effect-default-workflow-helpers.d.ts.map +1 -1
- package/dist/rules/effect-default-workflow-helpers.js +7 -29
- package/dist/rules/effect-default-workflow-helpers.js.map +1 -1
- package/dist/rules/effect-default.d.ts +4 -1
- package/dist/rules/effect-default.d.ts.map +1 -1
- package/dist/rules/effect-default.js +14 -5
- package/dist/rules/effect-default.js.map +1 -1
- package/dist/rules/effect-export-binding-patterns.d.ts +9 -0
- package/dist/rules/effect-export-binding-patterns.d.ts.map +1 -0
- package/dist/rules/effect-export-binding-patterns.js +149 -0
- package/dist/rules/effect-export-binding-patterns.js.map +1 -0
- package/dist/rules/effect-export-declaration-boundaries.d.ts +21 -0
- package/dist/rules/effect-export-declaration-boundaries.d.ts.map +1 -0
- package/dist/rules/effect-export-declaration-boundaries.js +119 -0
- package/dist/rules/effect-export-declaration-boundaries.js.map +1 -0
- package/dist/rules/effect-export-default-binding.d.ts +5 -0
- package/dist/rules/effect-export-default-binding.d.ts.map +1 -0
- package/dist/rules/effect-export-default-binding.js +350 -0
- package/dist/rules/effect-export-default-binding.js.map +1 -0
- package/dist/rules/effect-export-segments.d.ts +9 -0
- package/dist/rules/effect-export-segments.d.ts.map +1 -0
- package/dist/rules/effect-export-segments.js +67 -0
- package/dist/rules/effect-export-segments.js.map +1 -0
- package/dist/rules/effect-exported-declarations.d.ts +3 -15
- package/dist/rules/effect-exported-declarations.d.ts.map +1 -1
- package/dist/rules/effect-exported-declarations.js +139 -94
- package/dist/rules/effect-exported-declarations.js.map +1 -1
- package/dist/rules/effect-global-fetch-ast.d.ts +14 -0
- package/dist/rules/effect-global-fetch-ast.d.ts.map +1 -0
- package/dist/rules/effect-global-fetch-ast.js +321 -0
- package/dist/rules/effect-global-fetch-ast.js.map +1 -0
- package/dist/rules/effect-global-fetch-imports.d.ts +29 -0
- package/dist/rules/effect-global-fetch-imports.d.ts.map +1 -0
- package/dist/rules/effect-global-fetch-imports.js +91 -0
- package/dist/rules/effect-global-fetch-imports.js.map +1 -0
- package/dist/rules/effect-import-bindings.d.ts +13 -0
- package/dist/rules/effect-import-bindings.d.ts.map +1 -0
- package/dist/rules/effect-import-bindings.js +133 -0
- package/dist/rules/effect-import-bindings.js.map +1 -0
- package/dist/rules/effect-imported-call-matcher.d.ts +24 -0
- package/dist/rules/effect-imported-call-matcher.d.ts.map +1 -0
- package/dist/rules/effect-imported-call-matcher.js +271 -0
- package/dist/rules/effect-imported-call-matcher.js.map +1 -0
- package/dist/rules/effect-module-source-index.d.ts +44 -0
- package/dist/rules/effect-module-source-index.d.ts.map +1 -0
- package/dist/rules/effect-module-source-index.js +306 -0
- package/dist/rules/effect-module-source-index.js.map +1 -0
- package/dist/rules/effect-native-references.d.ts +66 -0
- package/dist/rules/effect-native-references.d.ts.map +1 -0
- package/dist/rules/effect-native-references.js +164 -0
- package/dist/rules/effect-native-references.js.map +1 -0
- package/dist/rules/effect-object-assign-provenance.d.ts +20 -0
- package/dist/rules/effect-object-assign-provenance.d.ts.map +1 -0
- package/dist/rules/effect-object-assign-provenance.js +37 -0
- package/dist/rules/effect-object-assign-provenance.js.map +1 -0
- package/dist/rules/effect-prefer-map-over-flatmap-succeed.d.ts +4 -0
- package/dist/rules/effect-prefer-map-over-flatmap-succeed.d.ts.map +1 -0
- package/dist/rules/effect-prefer-map-over-flatmap-succeed.js +294 -0
- package/dist/rules/effect-prefer-map-over-flatmap-succeed.js.map +1 -0
- package/dist/rules/effect-prefer-succeed-for-stable-values.d.ts +4 -0
- package/dist/rules/effect-prefer-succeed-for-stable-values.d.ts.map +1 -0
- package/dist/rules/effect-prefer-succeed-for-stable-values.js +292 -0
- package/dist/rules/effect-prefer-succeed-for-stable-values.js.map +1 -0
- package/dist/rules/effect-promise-ast-values.d.ts +26 -0
- package/dist/rules/effect-promise-ast-values.d.ts.map +1 -0
- package/dist/rules/effect-promise-ast-values.js +66 -0
- package/dist/rules/effect-promise-ast-values.js.map +1 -0
- package/dist/rules/effect-promise-callable-declarations.d.ts +22 -0
- package/dist/rules/effect-promise-callable-declarations.d.ts.map +1 -0
- package/dist/rules/effect-promise-callable-declarations.js +255 -0
- package/dist/rules/effect-promise-callable-declarations.js.map +1 -0
- package/dist/rules/effect-promise-callable-lookup.d.ts +40 -0
- package/dist/rules/effect-promise-callable-lookup.d.ts.map +1 -0
- package/dist/rules/effect-promise-callable-lookup.js +99 -0
- package/dist/rules/effect-promise-callable-lookup.js.map +1 -0
- package/dist/rules/effect-promise-callable-scopes.d.ts +16 -0
- package/dist/rules/effect-promise-callable-scopes.d.ts.map +1 -0
- package/dist/rules/effect-promise-callable-scopes.js +43 -0
- package/dist/rules/effect-promise-callable-scopes.js.map +1 -0
- package/dist/rules/effect-promise-callable-types.d.ts +43 -0
- package/dist/rules/effect-promise-callable-types.d.ts.map +1 -0
- package/dist/rules/effect-promise-callable-types.js +5 -0
- package/dist/rules/effect-promise-callable-types.js.map +1 -0
- package/dist/rules/effect-promise-callables.d.ts +5 -0
- package/dist/rules/effect-promise-callables.d.ts.map +1 -0
- package/dist/rules/effect-promise-callables.js +7 -0
- package/dist/rules/effect-promise-callables.js.map +1 -0
- package/dist/rules/effect-promise-collections.d.ts +20 -0
- package/dist/rules/effect-promise-collections.d.ts.map +1 -0
- package/dist/rules/effect-promise-collections.js +199 -0
- package/dist/rules/effect-promise-collections.js.map +1 -0
- package/dist/rules/effect-promise-completion.d.ts +141 -0
- package/dist/rules/effect-promise-completion.d.ts.map +1 -0
- package/dist/rules/effect-promise-completion.js +200 -0
- package/dist/rules/effect-promise-completion.js.map +1 -0
- package/dist/rules/effect-promise-environment-projections.d.ts +23 -0
- package/dist/rules/effect-promise-environment-projections.d.ts.map +1 -0
- package/dist/rules/effect-promise-environment-projections.js +191 -0
- package/dist/rules/effect-promise-environment-projections.js.map +1 -0
- package/dist/rules/effect-promise-environment-types.d.ts +96 -0
- package/dist/rules/effect-promise-environment-types.d.ts.map +1 -0
- package/dist/rules/effect-promise-environment-types.js +10 -0
- package/dist/rules/effect-promise-environment-types.js.map +1 -0
- package/dist/rules/effect-promise-environment-values.d.ts +41 -0
- package/dist/rules/effect-promise-environment-values.d.ts.map +1 -0
- package/dist/rules/effect-promise-environment-values.js +214 -0
- package/dist/rules/effect-promise-environment-values.js.map +1 -0
- package/dist/rules/effect-promise-environments.d.ts +5 -0
- package/dist/rules/effect-promise-environments.d.ts.map +1 -0
- package/dist/rules/effect-promise-environments.js +7 -0
- package/dist/rules/effect-promise-environments.js.map +1 -0
- package/dist/rules/effect-promise-execution-ast.d.ts +12 -0
- package/dist/rules/effect-promise-execution-ast.d.ts.map +1 -0
- package/dist/rules/effect-promise-execution-ast.js +30 -0
- package/dist/rules/effect-promise-execution-ast.js.map +1 -0
- package/dist/rules/effect-promise-execution-engine.d.ts +9 -0
- package/dist/rules/effect-promise-execution-engine.d.ts.map +1 -0
- package/dist/rules/effect-promise-execution-engine.js +280 -0
- package/dist/rules/effect-promise-execution-engine.js.map +1 -0
- package/dist/rules/effect-promise-execution-flow.d.ts +48 -0
- package/dist/rules/effect-promise-execution-flow.d.ts.map +1 -0
- package/dist/rules/effect-promise-execution-flow.js +193 -0
- package/dist/rules/effect-promise-execution-flow.js.map +1 -0
- package/dist/rules/effect-promise-execution-navigation.d.ts +34 -0
- package/dist/rules/effect-promise-execution-navigation.d.ts.map +1 -0
- package/dist/rules/effect-promise-execution-navigation.js +66 -0
- package/dist/rules/effect-promise-execution-navigation.js.map +1 -0
- package/dist/rules/effect-promise-execution-types.d.ts +36 -0
- package/dist/rules/effect-promise-execution-types.d.ts.map +1 -0
- package/dist/rules/effect-promise-execution-types.js +5 -0
- package/dist/rules/effect-promise-execution-types.js.map +1 -0
- package/dist/rules/effect-promise-execution-values.d.ts +40 -0
- package/dist/rules/effect-promise-execution-values.d.ts.map +1 -0
- package/dist/rules/effect-promise-execution-values.js +268 -0
- package/dist/rules/effect-promise-execution-values.js.map +1 -0
- package/dist/rules/effect-promise-expression-flow.d.ts +27 -0
- package/dist/rules/effect-promise-expression-flow.d.ts.map +1 -0
- package/dist/rules/effect-promise-expression-flow.js +80 -0
- package/dist/rules/effect-promise-expression-flow.js.map +1 -0
- package/dist/rules/effect-promise-invocation-memo.d.ts +16 -0
- package/dist/rules/effect-promise-invocation-memo.d.ts.map +1 -0
- package/dist/rules/effect-promise-invocation-memo.js +44 -0
- package/dist/rules/effect-promise-invocation-memo.js.map +1 -0
- package/dist/rules/effect-promise-invocations.d.ts +16 -0
- package/dist/rules/effect-promise-invocations.d.ts.map +1 -0
- package/dist/rules/effect-promise-invocations.js +126 -0
- package/dist/rules/effect-promise-invocations.js.map +1 -0
- package/dist/rules/effect-promise-node-children.d.ts +22 -0
- package/dist/rules/effect-promise-node-children.d.ts.map +1 -0
- package/dist/rules/effect-promise-node-children.js +49 -0
- package/dist/rules/effect-promise-node-children.js.map +1 -0
- package/dist/rules/effect-promise-node-evaluation.d.ts +43 -0
- package/dist/rules/effect-promise-node-evaluation.d.ts.map +1 -0
- package/dist/rules/effect-promise-node-evaluation.js +150 -0
- package/dist/rules/effect-promise-node-evaluation.js.map +1 -0
- package/dist/rules/effect-promise-parameter-bindings.d.ts +28 -0
- package/dist/rules/effect-promise-parameter-bindings.d.ts.map +1 -0
- package/dist/rules/effect-promise-parameter-bindings.js +187 -0
- package/dist/rules/effect-promise-parameter-bindings.js.map +1 -0
- package/dist/rules/effect-promise-pattern-bindings.d.ts +9 -0
- package/dist/rules/effect-promise-pattern-bindings.d.ts.map +1 -0
- package/dist/rules/effect-promise-pattern-bindings.js +54 -0
- package/dist/rules/effect-promise-pattern-bindings.js.map +1 -0
- package/dist/rules/effect-promise-program-traversal.d.ts +40 -0
- package/dist/rules/effect-promise-program-traversal.d.ts.map +1 -0
- package/dist/rules/effect-promise-program-traversal.js +115 -0
- package/dist/rules/effect-promise-program-traversal.js.map +1 -0
- package/dist/rules/effect-promise-rule-bindings.d.ts +23 -0
- package/dist/rules/effect-promise-rule-bindings.d.ts.map +1 -0
- package/dist/rules/effect-promise-rule-bindings.js +41 -0
- package/dist/rules/effect-promise-rule-bindings.js.map +1 -0
- package/dist/rules/effect-promise-runtime-arguments.d.ts +18 -0
- package/dist/rules/effect-promise-runtime-arguments.d.ts.map +1 -0
- package/dist/rules/effect-promise-runtime-arguments.js +49 -0
- package/dist/rules/effect-promise-runtime-arguments.js.map +1 -0
- package/dist/rules/effect-promise-runtime-call-targets.d.ts +21 -0
- package/dist/rules/effect-promise-runtime-call-targets.d.ts.map +1 -0
- package/dist/rules/effect-promise-runtime-call-targets.js +55 -0
- package/dist/rules/effect-promise-runtime-call-targets.js.map +1 -0
- package/dist/rules/effect-promise-runtime-callable-properties.d.ts +20 -0
- package/dist/rules/effect-promise-runtime-callable-properties.d.ts.map +1 -0
- package/dist/rules/effect-promise-runtime-callable-properties.js +30 -0
- package/dist/rules/effect-promise-runtime-callable-properties.js.map +1 -0
- package/dist/rules/effect-promise-runtime-callables.d.ts +51 -0
- package/dist/rules/effect-promise-runtime-callables.d.ts.map +1 -0
- package/dist/rules/effect-promise-runtime-callables.js +214 -0
- package/dist/rules/effect-promise-runtime-callables.js.map +1 -0
- package/dist/rules/effect-promise-runtime-choice-operations.d.ts +32 -0
- package/dist/rules/effect-promise-runtime-choice-operations.d.ts.map +1 -0
- package/dist/rules/effect-promise-runtime-choice-operations.js +145 -0
- package/dist/rules/effect-promise-runtime-choice-operations.js.map +1 -0
- package/dist/rules/effect-promise-runtime-choice.d.ts +26 -0
- package/dist/rules/effect-promise-runtime-choice.d.ts.map +1 -0
- package/dist/rules/effect-promise-runtime-choice.js +95 -0
- package/dist/rules/effect-promise-runtime-choice.js.map +1 -0
- package/dist/rules/effect-promise-runtime-control-branches.d.ts +14 -0
- package/dist/rules/effect-promise-runtime-control-branches.d.ts.map +1 -0
- package/dist/rules/effect-promise-runtime-control-branches.js +74 -0
- package/dist/rules/effect-promise-runtime-control-branches.js.map +1 -0
- package/dist/rules/effect-promise-runtime-control-completions.d.ts +26 -0
- package/dist/rules/effect-promise-runtime-control-completions.d.ts.map +1 -0
- package/dist/rules/effect-promise-runtime-control-completions.js +116 -0
- package/dist/rules/effect-promise-runtime-control-completions.js.map +1 -0
- package/dist/rules/effect-promise-runtime-control-flow.d.ts +9 -0
- package/dist/rules/effect-promise-runtime-control-flow.d.ts.map +1 -0
- package/dist/rules/effect-promise-runtime-control-flow.js +94 -0
- package/dist/rules/effect-promise-runtime-control-flow.js.map +1 -0
- package/dist/rules/effect-promise-runtime-control-patterns.d.ts +15 -0
- package/dist/rules/effect-promise-runtime-control-patterns.d.ts.map +1 -0
- package/dist/rules/effect-promise-runtime-control-patterns.js +84 -0
- package/dist/rules/effect-promise-runtime-control-patterns.js.map +1 -0
- package/dist/rules/effect-promise-runtime-control-scalars.d.ts +23 -0
- package/dist/rules/effect-promise-runtime-control-scalars.d.ts.map +1 -0
- package/dist/rules/effect-promise-runtime-control-scalars.js +178 -0
- package/dist/rules/effect-promise-runtime-control-scalars.js.map +1 -0
- package/dist/rules/effect-promise-runtime-expressions.d.ts +22 -0
- package/dist/rules/effect-promise-runtime-expressions.d.ts.map +1 -0
- package/dist/rules/effect-promise-runtime-expressions.js +265 -0
- package/dist/rules/effect-promise-runtime-expressions.js.map +1 -0
- package/dist/rules/effect-promise-runtime-heap.d.ts +39 -0
- package/dist/rules/effect-promise-runtime-heap.d.ts.map +1 -0
- package/dist/rules/effect-promise-runtime-heap.js +73 -0
- package/dist/rules/effect-promise-runtime-heap.js.map +1 -0
- package/dist/rules/effect-promise-runtime-interpreter.d.ts +39 -0
- package/dist/rules/effect-promise-runtime-interpreter.d.ts.map +1 -0
- package/dist/rules/effect-promise-runtime-interpreter.js +260 -0
- package/dist/rules/effect-promise-runtime-interpreter.js.map +1 -0
- package/dist/rules/effect-promise-runtime-intrinsics.d.ts +15 -0
- package/dist/rules/effect-promise-runtime-intrinsics.d.ts.map +1 -0
- package/dist/rules/effect-promise-runtime-intrinsics.js +54 -0
- package/dist/rules/effect-promise-runtime-intrinsics.js.map +1 -0
- package/dist/rules/effect-promise-runtime-loops.d.ts +9 -0
- package/dist/rules/effect-promise-runtime-loops.d.ts.map +1 -0
- package/dist/rules/effect-promise-runtime-loops.js +277 -0
- package/dist/rules/effect-promise-runtime-loops.js.map +1 -0
- package/dist/rules/effect-promise-runtime-members.d.ts +28 -0
- package/dist/rules/effect-promise-runtime-members.d.ts.map +1 -0
- package/dist/rules/effect-promise-runtime-members.js +88 -0
- package/dist/rules/effect-promise-runtime-members.js.map +1 -0
- package/dist/rules/effect-promise-runtime-memo.d.ts +40 -0
- package/dist/rules/effect-promise-runtime-memo.d.ts.map +1 -0
- package/dist/rules/effect-promise-runtime-memo.js +124 -0
- package/dist/rules/effect-promise-runtime-memo.js.map +1 -0
- package/dist/rules/effect-promise-runtime-model.d.ts +251 -0
- package/dist/rules/effect-promise-runtime-model.d.ts.map +1 -0
- package/dist/rules/effect-promise-runtime-model.js +84 -0
- package/dist/rules/effect-promise-runtime-model.js.map +1 -0
- package/dist/rules/effect-promise-runtime-mutations.d.ts +17 -0
- package/dist/rules/effect-promise-runtime-mutations.d.ts.map +1 -0
- package/dist/rules/effect-promise-runtime-mutations.js +165 -0
- package/dist/rules/effect-promise-runtime-mutations.js.map +1 -0
- package/dist/rules/effect-promise-runtime-patterns.d.ts +21 -0
- package/dist/rules/effect-promise-runtime-patterns.d.ts.map +1 -0
- package/dist/rules/effect-promise-runtime-patterns.js +179 -0
- package/dist/rules/effect-promise-runtime-patterns.js.map +1 -0
- package/dist/rules/effect-promise-runtime-proof.d.ts +74 -0
- package/dist/rules/effect-promise-runtime-proof.d.ts.map +1 -0
- package/dist/rules/effect-promise-runtime-proof.js +253 -0
- package/dist/rules/effect-promise-runtime-proof.js.map +1 -0
- package/dist/rules/effect-promise-runtime-reporting.d.ts +16 -0
- package/dist/rules/effect-promise-runtime-reporting.d.ts.map +1 -0
- package/dist/rules/effect-promise-runtime-reporting.js +11 -0
- package/dist/rules/effect-promise-runtime-reporting.js.map +1 -0
- package/dist/rules/effect-promise-runtime-scalar-operations.d.ts +2 -0
- package/dist/rules/effect-promise-runtime-scalar-operations.d.ts.map +1 -0
- package/dist/rules/effect-promise-runtime-scalar-operations.js +5 -0
- package/dist/rules/effect-promise-runtime-scalar-operations.js.map +1 -0
- package/dist/rules/effect-promise-runtime-scalars.d.ts +24 -0
- package/dist/rules/effect-promise-runtime-scalars.d.ts.map +1 -0
- package/dist/rules/effect-promise-runtime-scalars.js +125 -0
- package/dist/rules/effect-promise-runtime-scalars.js.map +1 -0
- package/dist/rules/effect-promise-runtime-statements.d.ts +15 -0
- package/dist/rules/effect-promise-runtime-statements.d.ts.map +1 -0
- package/dist/rules/effect-promise-runtime-statements.js +251 -0
- package/dist/rules/effect-promise-runtime-statements.js.map +1 -0
- package/dist/rules/effect-promise-runtime-store.d.ts +44 -0
- package/dist/rules/effect-promise-runtime-store.d.ts.map +1 -0
- package/dist/rules/effect-promise-runtime-store.js +186 -0
- package/dist/rules/effect-promise-runtime-store.js.map +1 -0
- package/dist/rules/effect-promise-runtime-structures.d.ts +9 -0
- package/dist/rules/effect-promise-runtime-structures.d.ts.map +1 -0
- package/dist/rules/effect-promise-runtime-structures.js +181 -0
- package/dist/rules/effect-promise-runtime-structures.js.map +1 -0
- package/dist/rules/effect-promise-runtime-switch.d.ts +9 -0
- package/dist/rules/effect-promise-runtime-switch.d.ts.map +1 -0
- package/dist/rules/effect-promise-runtime-switch.js +91 -0
- package/dist/rules/effect-promise-runtime-switch.js.map +1 -0
- package/dist/rules/effect-promise-runtime-tasks.d.ts +72 -0
- package/dist/rules/effect-promise-runtime-tasks.d.ts.map +1 -0
- package/dist/rules/effect-promise-runtime-tasks.js +158 -0
- package/dist/rules/effect-promise-runtime-tasks.js.map +1 -0
- package/dist/rules/effect-promise-runtime-this.d.ts +14 -0
- package/dist/rules/effect-promise-runtime-this.d.ts.map +1 -0
- package/dist/rules/effect-promise-runtime-this.js +29 -0
- package/dist/rules/effect-promise-runtime-this.js.map +1 -0
- package/dist/rules/effect-promise-runtime-try.d.ts +9 -0
- package/dist/rules/effect-promise-runtime-try.d.ts.map +1 -0
- package/dist/rules/effect-promise-runtime-try.js +94 -0
- package/dist/rules/effect-promise-runtime-try.js.map +1 -0
- package/dist/rules/effect-promise-runtime-values.d.ts +88 -0
- package/dist/rules/effect-promise-runtime-values.d.ts.map +1 -0
- package/dist/rules/effect-promise-runtime-values.js +382 -0
- package/dist/rules/effect-promise-runtime-values.js.map +1 -0
- package/dist/rules/effect-promise-value-scopes.d.ts +94 -0
- package/dist/rules/effect-promise-value-scopes.d.ts.map +1 -0
- package/dist/rules/effect-promise-value-scopes.js +218 -0
- package/dist/rules/effect-promise-value-scopes.js.map +1 -0
- package/dist/rules/effect-recursion-ast.d.ts +14 -0
- package/dist/rules/effect-recursion-ast.d.ts.map +1 -0
- package/dist/rules/effect-recursion-ast.js +154 -0
- package/dist/rules/effect-recursion-ast.js.map +1 -0
- package/dist/rules/effect-recursion-execution.d.ts +15 -0
- package/dist/rules/effect-recursion-execution.d.ts.map +1 -0
- package/dist/rules/effect-recursion-execution.js +312 -0
- package/dist/rules/effect-recursion-execution.js.map +1 -0
- package/dist/rules/effect-recursion-generator.d.ts +17 -0
- package/dist/rules/effect-recursion-generator.d.ts.map +1 -0
- package/dist/rules/effect-recursion-generator.js +125 -0
- package/dist/rules/effect-recursion-generator.js.map +1 -0
- package/dist/rules/effect-recursion-local-bindings.d.ts +44 -0
- package/dist/rules/effect-recursion-local-bindings.d.ts.map +1 -0
- package/dist/rules/effect-recursion-local-bindings.js +99 -0
- package/dist/rules/effect-recursion-local-bindings.js.map +1 -0
- package/dist/rules/effect-recursion-phases.d.ts +40 -0
- package/dist/rules/effect-recursion-phases.d.ts.map +1 -0
- package/dist/rules/effect-recursion-phases.js +62 -0
- package/dist/rules/effect-recursion-phases.js.map +1 -0
- package/dist/rules/effect-recursion-source.d.ts +10 -0
- package/dist/rules/effect-recursion-source.d.ts.map +1 -0
- package/dist/rules/effect-recursion-source.js +182 -0
- package/dist/rules/effect-recursion-source.js.map +1 -0
- package/dist/rules/effect-recursion-viability.d.ts +66 -0
- package/dist/rules/effect-recursion-viability.d.ts.map +1 -0
- package/dist/rules/effect-recursion-viability.js +228 -0
- package/dist/rules/effect-recursion-viability.js.map +1 -0
- package/dist/rules/effect-rule-aliases.d.ts +14 -19
- package/dist/rules/effect-rule-aliases.d.ts.map +1 -1
- package/dist/rules/effect-rule-aliases.js +48 -30
- package/dist/rules/effect-rule-aliases.js.map +1 -1
- package/dist/rules/effect-rule-core.d.ts +4 -4
- package/dist/rules/effect-rule-core.d.ts.map +1 -1
- package/dist/rules/effect-rule-core.js +42 -44
- package/dist/rules/effect-rule-core.js.map +1 -1
- package/dist/rules/effect-rule-names.d.ts.map +1 -1
- package/dist/rules/effect-rule-names.js +1 -1
- package/dist/rules/effect-rule-names.js.map +1 -1
- package/dist/rules/effect-source-navigation-lexer.d.ts +13 -0
- package/dist/rules/effect-source-navigation-lexer.d.ts.map +1 -0
- package/dist/rules/effect-source-navigation-lexer.js +228 -0
- package/dist/rules/effect-source-navigation-lexer.js.map +1 -0
- package/dist/rules/effect-source-navigation.d.ts +2 -2
- package/dist/rules/effect-source-navigation.d.ts.map +1 -1
- package/dist/rules/effect-source-navigation.js +104 -101
- package/dist/rules/effect-source-navigation.js.map +1 -1
- package/dist/rules/effect-strict-ast-helpers.d.ts +82 -0
- package/dist/rules/effect-strict-ast-helpers.d.ts.map +1 -0
- package/dist/rules/effect-strict-ast-helpers.js +194 -0
- package/dist/rules/effect-strict-ast-helpers.js.map +1 -0
- package/dist/rules/effect-strict-ast-specs.d.ts.map +1 -1
- package/dist/rules/effect-strict-ast-specs.js +14 -16
- package/dist/rules/effect-strict-ast-specs.js.map +1 -1
- package/dist/rules/effect-strict-internals.d.ts +2 -196
- package/dist/rules/effect-strict-internals.d.ts.map +1 -1
- package/dist/rules/effect-strict-internals.js +2 -417
- package/dist/rules/effect-strict-internals.js.map +1 -1
- package/dist/rules/effect-strict-source-predicates.d.ts +120 -0
- package/dist/rules/effect-strict-source-predicates.d.ts.map +1 -0
- package/dist/rules/effect-strict-source-predicates.js +234 -0
- package/dist/rules/effect-strict-source-predicates.js.map +1 -0
- package/dist/rules/effect-sync-promise-scope-index.d.ts +44 -0
- package/dist/rules/effect-sync-promise-scope-index.d.ts.map +1 -0
- package/dist/rules/effect-sync-promise-scope-index.js +345 -0
- package/dist/rules/effect-sync-promise-scope-index.js.map +1 -0
- package/dist/rules/effect-sync-promise-scopes.d.ts +10 -0
- package/dist/rules/effect-sync-promise-scopes.d.ts.map +1 -0
- package/dist/rules/effect-sync-promise-scopes.js +115 -0
- package/dist/rules/effect-sync-promise-scopes.js.map +1 -0
- package/dist/rules/effect-sync-promise-source.d.ts +2 -0
- package/dist/rules/effect-sync-promise-source.d.ts.map +1 -0
- package/dist/rules/effect-sync-promise-source.js +5 -0
- package/dist/rules/effect-sync-promise-source.js.map +1 -0
- package/dist/rules/plugin-commented-out-code-jsx-scanner.d.ts +21 -0
- package/dist/rules/plugin-commented-out-code-jsx-scanner.d.ts.map +1 -0
- package/dist/rules/plugin-commented-out-code-jsx-scanner.js +200 -0
- package/dist/rules/plugin-commented-out-code-jsx-scanner.js.map +1 -0
- package/dist/rules/plugin-commented-out-code-lexical-primitives.d.ts +139 -0
- package/dist/rules/plugin-commented-out-code-lexical-primitives.d.ts.map +1 -0
- package/dist/rules/plugin-commented-out-code-lexical-primitives.js +244 -0
- package/dist/rules/plugin-commented-out-code-lexical-primitives.js.map +1 -0
- package/dist/rules/plugin-commented-out-code-rule.d.ts +13 -0
- package/dist/rules/plugin-commented-out-code-rule.d.ts.map +1 -1
- package/dist/rules/plugin-commented-out-code-rule.js +174 -82
- package/dist/rules/plugin-commented-out-code-rule.js.map +1 -1
- package/dist/rules/plugin-commented-out-code-source-scanner.d.ts +8 -0
- package/dist/rules/plugin-commented-out-code-source-scanner.d.ts.map +1 -0
- package/dist/rules/plugin-commented-out-code-source-scanner.js +228 -0
- package/dist/rules/plugin-commented-out-code-source-scanner.js.map +1 -0
- package/package.json +1 -1
|
@@ -0,0 +1,199 @@
|
|
|
1
|
+
/* -------------------------------------------------------------------------- */
|
|
2
|
+
/* Static collection cardinality for eagerly executed Promise callbacks. */
|
|
3
|
+
/* -------------------------------------------------------------------------- */
|
|
4
|
+
import { asNode, childNode, identifierName } from './effect-ast.js';
|
|
5
|
+
import { memberPropertyName } from './effect-promise-callables.js';
|
|
6
|
+
import { unwrappedExpression } from './effect-boundary-ast-shared.js';
|
|
7
|
+
const eagerArrayMethods = new Set([
|
|
8
|
+
'every',
|
|
9
|
+
'filter',
|
|
10
|
+
'find',
|
|
11
|
+
'findIndex',
|
|
12
|
+
'findLast',
|
|
13
|
+
'findLastIndex',
|
|
14
|
+
'flatMap',
|
|
15
|
+
'forEach',
|
|
16
|
+
'map',
|
|
17
|
+
'some',
|
|
18
|
+
]);
|
|
19
|
+
const holeVisitingArrayMethods = new Set([
|
|
20
|
+
'find',
|
|
21
|
+
'findIndex',
|
|
22
|
+
'findLast',
|
|
23
|
+
'findLastIndex',
|
|
24
|
+
]);
|
|
25
|
+
const UNKNOWN_CARDINALITY = -1;
|
|
26
|
+
const rawNodeArray = (node, key) => {
|
|
27
|
+
const value = Reflect.get(node, key);
|
|
28
|
+
if (!Array.isArray(value)) {
|
|
29
|
+
return [];
|
|
30
|
+
}
|
|
31
|
+
const items = value;
|
|
32
|
+
const nodes = [];
|
|
33
|
+
for (const item of items) {
|
|
34
|
+
nodes.push(asNode(item));
|
|
35
|
+
}
|
|
36
|
+
return nodes;
|
|
37
|
+
};
|
|
38
|
+
const minimumCardinality = (cardinality) => {
|
|
39
|
+
if (cardinality < 0) {
|
|
40
|
+
return -cardinality - 1;
|
|
41
|
+
}
|
|
42
|
+
return cardinality;
|
|
43
|
+
};
|
|
44
|
+
const encodedCardinality = (minimum, isExact) => {
|
|
45
|
+
if (isExact) {
|
|
46
|
+
return minimum;
|
|
47
|
+
}
|
|
48
|
+
return -minimum - 1;
|
|
49
|
+
};
|
|
50
|
+
const combineCardinality = (left, right) => encodedCardinality(minimumCardinality(left) + minimumCardinality(right), left >= 0 && right >= 0);
|
|
51
|
+
const staticSpreadLength = (element) => {
|
|
52
|
+
const spread = unwrappedExpression(childNode(element, 'argument'));
|
|
53
|
+
if (spread?.type === 'ArrayExpression') {
|
|
54
|
+
return staticArrayLength(spread);
|
|
55
|
+
}
|
|
56
|
+
return UNKNOWN_CARDINALITY;
|
|
57
|
+
};
|
|
58
|
+
const staticLengthContribution = (element) => {
|
|
59
|
+
if (element?.type === 'SpreadElement') {
|
|
60
|
+
return staticSpreadLength(element);
|
|
61
|
+
}
|
|
62
|
+
return 1;
|
|
63
|
+
};
|
|
64
|
+
const staticArrayCardinality = (array, countHoles) => {
|
|
65
|
+
const elements = Reflect.get(array, 'elements');
|
|
66
|
+
if (!Array.isArray(elements)) {
|
|
67
|
+
return 0;
|
|
68
|
+
}
|
|
69
|
+
let cardinality = 0;
|
|
70
|
+
const elementValues = elements;
|
|
71
|
+
for (const elementValue of elementValues) {
|
|
72
|
+
const element = asNode(elementValue);
|
|
73
|
+
if (element || countHoles) {
|
|
74
|
+
cardinality = combineCardinality(cardinality, staticLengthContribution(element));
|
|
75
|
+
}
|
|
76
|
+
}
|
|
77
|
+
return cardinality;
|
|
78
|
+
};
|
|
79
|
+
const staticArrayLength = (array) => staticArrayCardinality(array, true);
|
|
80
|
+
const staticArrayIterationCount = (array) => staticArrayCardinality(array, false);
|
|
81
|
+
const staticArgumentContribution = (argument) => {
|
|
82
|
+
if (argument?.type === 'SpreadElement') {
|
|
83
|
+
return staticSpreadLength(argument);
|
|
84
|
+
}
|
|
85
|
+
return 1;
|
|
86
|
+
};
|
|
87
|
+
const staticArgumentsCardinality = (call) => {
|
|
88
|
+
const argumentsValue = Reflect.get(call, 'arguments');
|
|
89
|
+
if (!Array.isArray(argumentsValue)) {
|
|
90
|
+
return 0;
|
|
91
|
+
}
|
|
92
|
+
let cardinality = 0;
|
|
93
|
+
const argumentValues = argumentsValue;
|
|
94
|
+
const argumentCount = argumentValues.length;
|
|
95
|
+
for (let argumentIndex = 0; argumentIndex < argumentCount; argumentIndex += 1) {
|
|
96
|
+
cardinality = combineCardinality(cardinality, staticArgumentContribution(asNode(argumentValues[argumentIndex])));
|
|
97
|
+
}
|
|
98
|
+
return cardinality;
|
|
99
|
+
};
|
|
100
|
+
const isNativeArrayMember = (callee, methodName, scopes, isNativeGlobal) => {
|
|
101
|
+
if (callee?.type !== 'MemberExpression' || memberPropertyName(callee) !== methodName) {
|
|
102
|
+
return false;
|
|
103
|
+
}
|
|
104
|
+
const object = childNode(callee, 'object');
|
|
105
|
+
return identifierName(object) === 'Array' && isNativeGlobal('Array', object, scopes);
|
|
106
|
+
};
|
|
107
|
+
const staticArrayOfCount = (call, scopes, isNativeGlobal) => {
|
|
108
|
+
if (!isNativeArrayMember(childNode(call, 'callee'), 'of', scopes, isNativeGlobal)) {
|
|
109
|
+
return UNKNOWN_CARDINALITY;
|
|
110
|
+
}
|
|
111
|
+
return staticArgumentsCardinality(call);
|
|
112
|
+
};
|
|
113
|
+
const memberCollectionCount = (receiver, methodName, scopes, isNativeGlobal) => {
|
|
114
|
+
const collection = unwrappedExpression(receiver);
|
|
115
|
+
if (collection?.type === 'ArrayExpression') {
|
|
116
|
+
if (holeVisitingArrayMethods.has(methodName)) {
|
|
117
|
+
return staticArrayLength(collection);
|
|
118
|
+
}
|
|
119
|
+
return staticArrayIterationCount(collection);
|
|
120
|
+
}
|
|
121
|
+
if (collection?.type === 'CallExpression') {
|
|
122
|
+
return staticArrayOfCount(collection, scopes, isNativeGlobal);
|
|
123
|
+
}
|
|
124
|
+
return UNKNOWN_CARDINALITY;
|
|
125
|
+
};
|
|
126
|
+
const reductionCallback = (callArguments, minimum) => {
|
|
127
|
+
if (callArguments.length > 1 && minimum > 0) {
|
|
128
|
+
return callArguments[0];
|
|
129
|
+
}
|
|
130
|
+
if (callArguments.length <= 1 && minimum > 1) {
|
|
131
|
+
return callArguments[0];
|
|
132
|
+
}
|
|
133
|
+
return undefined;
|
|
134
|
+
};
|
|
135
|
+
const ordinaryCollectionCallback = (callArguments, methodName, minimum) => {
|
|
136
|
+
if (eagerArrayMethods.has(methodName) && minimum > 0) {
|
|
137
|
+
return callArguments[0];
|
|
138
|
+
}
|
|
139
|
+
return undefined;
|
|
140
|
+
};
|
|
141
|
+
const collectionCallback = (callArguments, methodName, minimum) => {
|
|
142
|
+
if (methodName === 'reduce' || methodName === 'reduceRight') {
|
|
143
|
+
return reductionCallback(callArguments, minimum);
|
|
144
|
+
}
|
|
145
|
+
return ordinaryCollectionCallback(callArguments, methodName, minimum);
|
|
146
|
+
};
|
|
147
|
+
const memberArrayCallback = (call, callee, scopes, isNativeGlobal) => {
|
|
148
|
+
const methodName = memberPropertyName(callee);
|
|
149
|
+
if (!methodName) {
|
|
150
|
+
return undefined;
|
|
151
|
+
}
|
|
152
|
+
const isReduction = methodName === 'reduce' || methodName === 'reduceRight';
|
|
153
|
+
if (!isReduction && !eagerArrayMethods.has(methodName)) {
|
|
154
|
+
return undefined;
|
|
155
|
+
}
|
|
156
|
+
const count = memberCollectionCount(childNode(callee, 'object'), methodName, scopes, isNativeGlobal);
|
|
157
|
+
const minimum = minimumCardinality(count);
|
|
158
|
+
const callArguments = rawNodeArray(call, 'arguments');
|
|
159
|
+
return collectionCallback(callArguments, methodName, minimum);
|
|
160
|
+
};
|
|
161
|
+
const staticIterableCount = (source, scopes, isNativeGlobal) => {
|
|
162
|
+
const iterable = unwrappedExpression(source);
|
|
163
|
+
if (iterable?.type === 'ArrayExpression') {
|
|
164
|
+
return staticArrayLength(iterable);
|
|
165
|
+
}
|
|
166
|
+
if (iterable?.type === 'CallExpression') {
|
|
167
|
+
return staticArrayOfCount(iterable, scopes, isNativeGlobal);
|
|
168
|
+
}
|
|
169
|
+
return UNKNOWN_CARDINALITY;
|
|
170
|
+
};
|
|
171
|
+
const arrayFromCallback = (call, callee, scopes, isNativeGlobal) => {
|
|
172
|
+
if (!isNativeArrayMember(callee, 'from', scopes, isNativeGlobal)) {
|
|
173
|
+
return undefined;
|
|
174
|
+
}
|
|
175
|
+
const callArguments = rawNodeArray(call, 'arguments');
|
|
176
|
+
if (minimumCardinality(staticIterableCount(callArguments[0], scopes, isNativeGlobal)) > 0) {
|
|
177
|
+
return callArguments[1];
|
|
178
|
+
}
|
|
179
|
+
return undefined;
|
|
180
|
+
};
|
|
181
|
+
/**
|
|
182
|
+
* Resolve a callback that a statically non-empty native collection must invoke.
|
|
183
|
+
*
|
|
184
|
+
* @param call - Candidate collection call.
|
|
185
|
+
* @param scopes - Lexical scopes visible at the call.
|
|
186
|
+
* @param isNativeGlobal - Exact native-global identity predicate.
|
|
187
|
+
* @returns The eagerly invoked callback, when execution is statically guaranteed.
|
|
188
|
+
* @throws Does not throw.
|
|
189
|
+
* @internal
|
|
190
|
+
*/
|
|
191
|
+
export const eagerCollectionCallback = (call, scopes, isNativeGlobal) => {
|
|
192
|
+
const callee = unwrappedExpression(childNode(call, 'callee'));
|
|
193
|
+
if (callee?.type !== 'MemberExpression') {
|
|
194
|
+
return undefined;
|
|
195
|
+
}
|
|
196
|
+
return (memberArrayCallback(call, callee, scopes, isNativeGlobal) ??
|
|
197
|
+
arrayFromCallback(call, callee, scopes, isNativeGlobal));
|
|
198
|
+
};
|
|
199
|
+
//# sourceMappingURL=effect-promise-collections.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"effect-promise-collections.js","sourceRoot":"","sources":["../../src/rules/effect-promise-collections.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,141 @@
|
|
|
1
|
+
import type { ArgumentValue, ParameterEnvironments } from './effect-promise-environment-types';
|
|
2
|
+
/**
|
|
3
|
+
* Normal evaluation completed without reaching Promise-producing work.
|
|
4
|
+
*
|
|
5
|
+
* @internal
|
|
6
|
+
*/
|
|
7
|
+
export declare const COMPLETION_NORMAL = 0;
|
|
8
|
+
/**
|
|
9
|
+
* A function or getter returned normally to its caller.
|
|
10
|
+
*
|
|
11
|
+
* @internal
|
|
12
|
+
*/
|
|
13
|
+
export declare const COMPLETION_RETURN = 1;
|
|
14
|
+
/**
|
|
15
|
+
* Evaluation definitely threw before later work could execute.
|
|
16
|
+
*
|
|
17
|
+
* @internal
|
|
18
|
+
*/
|
|
19
|
+
export declare const COMPLETION_THROW = 2;
|
|
20
|
+
/**
|
|
21
|
+
* Evaluation definitely reached Promise-producing work.
|
|
22
|
+
*
|
|
23
|
+
* @internal
|
|
24
|
+
*/
|
|
25
|
+
export declare const COMPLETION_UNSAFE = 3;
|
|
26
|
+
/**
|
|
27
|
+
* Evaluation may complete abruptly, so later work is not provably executed.
|
|
28
|
+
*
|
|
29
|
+
* @internal
|
|
30
|
+
*/
|
|
31
|
+
export declare const COMPLETION_MAYBE_ABRUPT = 4;
|
|
32
|
+
/**
|
|
33
|
+
* Evaluation provably does not return to its caller.
|
|
34
|
+
*
|
|
35
|
+
* @internal
|
|
36
|
+
*/
|
|
37
|
+
export declare const COMPLETION_NON_TERMINATING = 5;
|
|
38
|
+
/**
|
|
39
|
+
* Evaluation may not return, so later work is not provably executed.
|
|
40
|
+
*
|
|
41
|
+
* @internal
|
|
42
|
+
*/
|
|
43
|
+
export declare const COMPLETION_MAYBE_NON_TERMINATING = 6;
|
|
44
|
+
/**
|
|
45
|
+
* Exact or conservative completion from one evaluated AST path.
|
|
46
|
+
*
|
|
47
|
+
* @internal
|
|
48
|
+
*/
|
|
49
|
+
export type PromiseCompletion = typeof COMPLETION_NORMAL | typeof COMPLETION_RETURN | typeof COMPLETION_THROW | typeof COMPLETION_UNSAFE | typeof COMPLETION_MAYBE_ABRUPT | typeof COMPLETION_NON_TERMINATING | typeof COMPLETION_MAYBE_NON_TERMINATING;
|
|
50
|
+
/**
|
|
51
|
+
* Completion together with the exact value produced by Normal or Return evaluation.
|
|
52
|
+
*
|
|
53
|
+
* @internal
|
|
54
|
+
*/
|
|
55
|
+
export interface PromiseEvaluation {
|
|
56
|
+
completion: PromiseCompletion;
|
|
57
|
+
value: ArgumentValue;
|
|
58
|
+
}
|
|
59
|
+
/**
|
|
60
|
+
* Shared value-less Normal evaluation.
|
|
61
|
+
*
|
|
62
|
+
* @internal
|
|
63
|
+
*/
|
|
64
|
+
export declare const NORMAL_EVALUATION: PromiseEvaluation;
|
|
65
|
+
/**
|
|
66
|
+
* Shared value-less Throw evaluation.
|
|
67
|
+
*
|
|
68
|
+
* @internal
|
|
69
|
+
*/
|
|
70
|
+
export declare const THROW_EVALUATION: PromiseEvaluation;
|
|
71
|
+
/**
|
|
72
|
+
* Shared value-less Unsafe evaluation.
|
|
73
|
+
*
|
|
74
|
+
* @internal
|
|
75
|
+
*/
|
|
76
|
+
export declare const UNSAFE_EVALUATION: PromiseEvaluation;
|
|
77
|
+
/**
|
|
78
|
+
* Shared value-less NonTerminating evaluation.
|
|
79
|
+
*
|
|
80
|
+
* @internal
|
|
81
|
+
*/
|
|
82
|
+
export declare const NON_TERMINATING_EVALUATION: PromiseEvaluation;
|
|
83
|
+
/**
|
|
84
|
+
* Build a Normal evaluation carrying one abstract runtime value.
|
|
85
|
+
*
|
|
86
|
+
* @internal
|
|
87
|
+
*/
|
|
88
|
+
export declare const normalEvaluation: (value: ArgumentValue) => PromiseEvaluation;
|
|
89
|
+
/**
|
|
90
|
+
* Build a Return evaluation carrying one abstract runtime value.
|
|
91
|
+
*
|
|
92
|
+
* @internal
|
|
93
|
+
*/
|
|
94
|
+
export declare const returnEvaluation: (value: ArgumentValue) => PromiseEvaluation;
|
|
95
|
+
/**
|
|
96
|
+
* One copy of the mutable values visible before a control-flow split.
|
|
97
|
+
*
|
|
98
|
+
* @internal
|
|
99
|
+
*/
|
|
100
|
+
export type PromiseEnvironmentSnapshot = readonly ReadonlyMap<string, ArgumentValue>[];
|
|
101
|
+
/**
|
|
102
|
+
* Capture active invocation values before evaluating one speculative branch.
|
|
103
|
+
*
|
|
104
|
+
* @internal
|
|
105
|
+
*/
|
|
106
|
+
export declare const snapshotPromiseEnvironments: (environments: ParameterEnvironments) => PromiseEnvironmentSnapshot;
|
|
107
|
+
/**
|
|
108
|
+
* Restore active invocation values before evaluating another feasible branch.
|
|
109
|
+
*
|
|
110
|
+
* @internal
|
|
111
|
+
*/
|
|
112
|
+
export declare const restorePromiseEnvironments: (environments: ParameterEnvironments, snapshot: PromiseEnvironmentSnapshot) => void;
|
|
113
|
+
/**
|
|
114
|
+
* Join two abstract values without selecting either feasible branch.
|
|
115
|
+
*
|
|
116
|
+
* @param left - Value produced by the first feasible branch.
|
|
117
|
+
* @param right - Value produced by the second feasible branch.
|
|
118
|
+
* @returns Their shared exact identity or the unknown-value sentinel.
|
|
119
|
+
* @throws Does not throw.
|
|
120
|
+
* @internal
|
|
121
|
+
*/
|
|
122
|
+
export declare const joinedArgument: (left: ArgumentValue, right: ArgumentValue) => ArgumentValue;
|
|
123
|
+
/**
|
|
124
|
+
* Join mutable values after two feasible branches without choosing either branch.
|
|
125
|
+
*
|
|
126
|
+
* @internal
|
|
127
|
+
*/
|
|
128
|
+
export declare const joinPromiseEnvironments: (environments: ParameterEnvironments, left: PromiseEnvironmentSnapshot, right: PromiseEnvironmentSnapshot) => void;
|
|
129
|
+
/**
|
|
130
|
+
* Join completion from two feasible branches conservatively.
|
|
131
|
+
*
|
|
132
|
+
* @internal
|
|
133
|
+
*/
|
|
134
|
+
export declare const joinPromiseCompletions: (left: PromiseCompletion, right: PromiseCompletion) => PromiseCompletion;
|
|
135
|
+
/**
|
|
136
|
+
* Join completion and value from two feasible branches conservatively.
|
|
137
|
+
*
|
|
138
|
+
* @internal
|
|
139
|
+
*/
|
|
140
|
+
export declare const joinPromiseEvaluations: (left: PromiseEvaluation, right: PromiseEvaluation) => PromiseEvaluation;
|
|
141
|
+
//# sourceMappingURL=effect-promise-completion.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"effect-promise-completion.d.ts","sourceRoot":"","sources":["../../src/rules/effect-promise-completion.ts"],"names":[],"mappings":"AAIA,OAAO,KAAK,EAAE,aAAa,EAAE,qBAAqB,EAAE,MAAM,oCAAoC,CAAC;AAI/F;;;;GAIG;AACH,eAAO,MAAM,iBAAiB,IAAI,CAAC;AAEnC;;;;GAIG;AACH,eAAO,MAAM,iBAAiB,IAAI,CAAC;AAEnC;;;;GAIG;AACH,eAAO,MAAM,gBAAgB,IAAI,CAAC;AAElC;;;;GAIG;AACH,eAAO,MAAM,iBAAiB,IAAI,CAAC;AAEnC;;;;GAIG;AACH,eAAO,MAAM,uBAAuB,IAAI,CAAC;AAEzC;;;;GAIG;AACH,eAAO,MAAM,0BAA0B,IAAI,CAAC;AAE5C;;;;GAIG;AACH,eAAO,MAAM,gCAAgC,IAAI,CAAC;AAElD;;;;GAIG;AACH,MAAM,MAAM,iBAAiB,GACzB,OAAO,iBAAiB,GACxB,OAAO,iBAAiB,GACxB,OAAO,gBAAgB,GACvB,OAAO,iBAAiB,GACxB,OAAO,uBAAuB,GAC9B,OAAO,0BAA0B,GACjC,OAAO,gCAAgC,CAAC;AAE5C;;;;GAIG;AACH,MAAM,WAAW,iBAAiB;IAChC,UAAU,EAAE,iBAAiB,CAAC;IAC9B,KAAK,EAAE,aAAa,CAAC;CACtB;AAED;;;;GAIG;AACH,eAAO,MAAM,iBAAiB,EAAE,iBAG/B,CAAC;AAEF;;;;GAIG;AACH,eAAO,MAAM,gBAAgB,EAAE,iBAG9B,CAAC;AAEF;;;;GAIG;AACH,eAAO,MAAM,iBAAiB,EAAE,iBAG/B,CAAC;AAEF;;;;GAIG;AACH,eAAO,MAAM,0BAA0B,EAAE,iBAGxC,CAAC;AAEF;;;;GAIG;AACH,eAAO,MAAM,gBAAgB,GAAI,OAAO,aAAa,KAAG,iBAGtD,CAAC;AAEH;;;;GAIG;AACH,eAAO,MAAM,gBAAgB,GAAI,OAAO,aAAa,KAAG,iBAGtD,CAAC;AAEH;;;;GAIG;AACH,MAAM,MAAM,0BAA0B,GAAG,SAAS,WAAW,CAAC,MAAM,EAAE,aAAa,CAAC,EAAE,CAAC;AAEvF;;;;GAIG;AACH,eAAO,MAAM,2BAA2B,GACtC,cAAc,qBAAqB,KAClC,0BAA+E,CAAC;AAEnF;;;;GAIG;AACH,eAAO,MAAM,0BAA0B,GACrC,cAAc,qBAAqB,EACnC,UAAU,0BAA0B,KACnC,IAWF,CAAC;AAEF;;;;;;;;GAQG;AACH,eAAO,MAAM,cAAc,GAAI,MAAM,aAAa,EAAE,OAAO,aAAa,KAAG,aAU1E,CAAC;AAoBF;;;;GAIG;AACH,eAAO,MAAM,uBAAuB,GAClC,cAAc,qBAAqB,EACnC,MAAM,0BAA0B,EAChC,OAAO,0BAA0B,KAChC,IAIF,CAAC;AAUF;;;;GAIG;AACH,eAAO,MAAM,sBAAsB,GACjC,MAAM,iBAAiB,EACvB,OAAO,iBAAiB,KACvB,iBAWF,CAAC;AAEF;;;;GAIG;AACH,eAAO,MAAM,sBAAsB,GACjC,MAAM,iBAAiB,EACvB,OAAO,iBAAiB,KACvB,iBAMF,CAAC"}
|
|
@@ -0,0 +1,200 @@
|
|
|
1
|
+
/* -------------------------------------------------------------------------- */
|
|
2
|
+
/* Explicit completion states for Promise execution analysis. */
|
|
3
|
+
/* -------------------------------------------------------------------------- */
|
|
4
|
+
import { concreteArgument, isUndefinedArgument } from './effect-promise-environment-values.js';
|
|
5
|
+
import { unknownArgument } from './effect-promise-environment-types.js';
|
|
6
|
+
/**
|
|
7
|
+
* Normal evaluation completed without reaching Promise-producing work.
|
|
8
|
+
*
|
|
9
|
+
* @internal
|
|
10
|
+
*/
|
|
11
|
+
export const COMPLETION_NORMAL = 0;
|
|
12
|
+
/**
|
|
13
|
+
* A function or getter returned normally to its caller.
|
|
14
|
+
*
|
|
15
|
+
* @internal
|
|
16
|
+
*/
|
|
17
|
+
export const COMPLETION_RETURN = 1;
|
|
18
|
+
/**
|
|
19
|
+
* Evaluation definitely threw before later work could execute.
|
|
20
|
+
*
|
|
21
|
+
* @internal
|
|
22
|
+
*/
|
|
23
|
+
export const COMPLETION_THROW = 2;
|
|
24
|
+
/**
|
|
25
|
+
* Evaluation definitely reached Promise-producing work.
|
|
26
|
+
*
|
|
27
|
+
* @internal
|
|
28
|
+
*/
|
|
29
|
+
export const COMPLETION_UNSAFE = 3;
|
|
30
|
+
/**
|
|
31
|
+
* Evaluation may complete abruptly, so later work is not provably executed.
|
|
32
|
+
*
|
|
33
|
+
* @internal
|
|
34
|
+
*/
|
|
35
|
+
export const COMPLETION_MAYBE_ABRUPT = 4;
|
|
36
|
+
/**
|
|
37
|
+
* Evaluation provably does not return to its caller.
|
|
38
|
+
*
|
|
39
|
+
* @internal
|
|
40
|
+
*/
|
|
41
|
+
export const COMPLETION_NON_TERMINATING = 5;
|
|
42
|
+
/**
|
|
43
|
+
* Evaluation may not return, so later work is not provably executed.
|
|
44
|
+
*
|
|
45
|
+
* @internal
|
|
46
|
+
*/
|
|
47
|
+
export const COMPLETION_MAYBE_NON_TERMINATING = 6;
|
|
48
|
+
/**
|
|
49
|
+
* Shared value-less Normal evaluation.
|
|
50
|
+
*
|
|
51
|
+
* @internal
|
|
52
|
+
*/
|
|
53
|
+
export const NORMAL_EVALUATION = {
|
|
54
|
+
completion: COMPLETION_NORMAL,
|
|
55
|
+
value: undefined,
|
|
56
|
+
};
|
|
57
|
+
/**
|
|
58
|
+
* Shared value-less Throw evaluation.
|
|
59
|
+
*
|
|
60
|
+
* @internal
|
|
61
|
+
*/
|
|
62
|
+
export const THROW_EVALUATION = {
|
|
63
|
+
completion: COMPLETION_THROW,
|
|
64
|
+
value: undefined,
|
|
65
|
+
};
|
|
66
|
+
/**
|
|
67
|
+
* Shared value-less Unsafe evaluation.
|
|
68
|
+
*
|
|
69
|
+
* @internal
|
|
70
|
+
*/
|
|
71
|
+
export const UNSAFE_EVALUATION = {
|
|
72
|
+
completion: COMPLETION_UNSAFE,
|
|
73
|
+
value: undefined,
|
|
74
|
+
};
|
|
75
|
+
/**
|
|
76
|
+
* Shared value-less NonTerminating evaluation.
|
|
77
|
+
*
|
|
78
|
+
* @internal
|
|
79
|
+
*/
|
|
80
|
+
export const NON_TERMINATING_EVALUATION = {
|
|
81
|
+
completion: COMPLETION_NON_TERMINATING,
|
|
82
|
+
value: undefined,
|
|
83
|
+
};
|
|
84
|
+
/**
|
|
85
|
+
* Build a Normal evaluation carrying one abstract runtime value.
|
|
86
|
+
*
|
|
87
|
+
* @internal
|
|
88
|
+
*/
|
|
89
|
+
export const normalEvaluation = (value) => ({
|
|
90
|
+
completion: COMPLETION_NORMAL,
|
|
91
|
+
value,
|
|
92
|
+
});
|
|
93
|
+
/**
|
|
94
|
+
* Build a Return evaluation carrying one abstract runtime value.
|
|
95
|
+
*
|
|
96
|
+
* @internal
|
|
97
|
+
*/
|
|
98
|
+
export const returnEvaluation = (value) => ({
|
|
99
|
+
completion: COMPLETION_RETURN,
|
|
100
|
+
value,
|
|
101
|
+
});
|
|
102
|
+
/**
|
|
103
|
+
* Capture active invocation values before evaluating one speculative branch.
|
|
104
|
+
*
|
|
105
|
+
* @internal
|
|
106
|
+
*/
|
|
107
|
+
export const snapshotPromiseEnvironments = (environments) => environments.map(({ values }) => new Map(values));
|
|
108
|
+
/**
|
|
109
|
+
* Restore active invocation values before evaluating another feasible branch.
|
|
110
|
+
*
|
|
111
|
+
* @internal
|
|
112
|
+
*/
|
|
113
|
+
export const restorePromiseEnvironments = (environments, snapshot) => {
|
|
114
|
+
for (let index = 0; index < environments.length; index += 1) {
|
|
115
|
+
const values = environments[index]?.values;
|
|
116
|
+
const saved = snapshot[index];
|
|
117
|
+
if (values && saved) {
|
|
118
|
+
values.clear();
|
|
119
|
+
for (const [name, value] of saved) {
|
|
120
|
+
values.set(name, value);
|
|
121
|
+
}
|
|
122
|
+
}
|
|
123
|
+
}
|
|
124
|
+
};
|
|
125
|
+
/**
|
|
126
|
+
* Join two abstract values without selecting either feasible branch.
|
|
127
|
+
*
|
|
128
|
+
* @param left - Value produced by the first feasible branch.
|
|
129
|
+
* @param right - Value produced by the second feasible branch.
|
|
130
|
+
* @returns Their shared exact identity or the unknown-value sentinel.
|
|
131
|
+
* @throws Does not throw.
|
|
132
|
+
* @internal
|
|
133
|
+
*/
|
|
134
|
+
export const joinedArgument = (left, right) => {
|
|
135
|
+
if (left === right || (isUndefinedArgument(left) && isUndefinedArgument(right))) {
|
|
136
|
+
return left;
|
|
137
|
+
}
|
|
138
|
+
const leftConcrete = concreteArgument(left);
|
|
139
|
+
const rightConcrete = concreteArgument(right);
|
|
140
|
+
if (leftConcrete?.node === rightConcrete?.node) {
|
|
141
|
+
return left;
|
|
142
|
+
}
|
|
143
|
+
return unknownArgument;
|
|
144
|
+
};
|
|
145
|
+
const joinEnvironmentAt = (environments, left, right, index) => {
|
|
146
|
+
const values = environments[index]?.values;
|
|
147
|
+
const leftValues = left[index];
|
|
148
|
+
const rightValues = right[index];
|
|
149
|
+
if (!values || !leftValues || !rightValues) {
|
|
150
|
+
return;
|
|
151
|
+
}
|
|
152
|
+
values.clear();
|
|
153
|
+
for (const name of new Set([...leftValues.keys(), ...rightValues.keys()])) {
|
|
154
|
+
values.set(name, joinedArgument(leftValues.get(name), rightValues.get(name)));
|
|
155
|
+
}
|
|
156
|
+
};
|
|
157
|
+
/**
|
|
158
|
+
* Join mutable values after two feasible branches without choosing either branch.
|
|
159
|
+
*
|
|
160
|
+
* @internal
|
|
161
|
+
*/
|
|
162
|
+
export const joinPromiseEnvironments = (environments, left, right) => {
|
|
163
|
+
for (let index = 0; index < environments.length; index += 1) {
|
|
164
|
+
joinEnvironmentAt(environments, left, right, index);
|
|
165
|
+
}
|
|
166
|
+
};
|
|
167
|
+
const isNonTerminatingCompletion = (completion) => completion === COMPLETION_NON_TERMINATING || completion === COMPLETION_MAYBE_NON_TERMINATING;
|
|
168
|
+
const isAbruptCompletion = (completion) => completion === COMPLETION_THROW ||
|
|
169
|
+
completion === COMPLETION_RETURN ||
|
|
170
|
+
completion === COMPLETION_MAYBE_ABRUPT;
|
|
171
|
+
/**
|
|
172
|
+
* Join completion from two feasible branches conservatively.
|
|
173
|
+
*
|
|
174
|
+
* @internal
|
|
175
|
+
*/
|
|
176
|
+
export const joinPromiseCompletions = (left, right) => {
|
|
177
|
+
if (left === right) {
|
|
178
|
+
return left;
|
|
179
|
+
}
|
|
180
|
+
if (isNonTerminatingCompletion(left) || isNonTerminatingCompletion(right)) {
|
|
181
|
+
return COMPLETION_MAYBE_NON_TERMINATING;
|
|
182
|
+
}
|
|
183
|
+
if (isAbruptCompletion(left) || isAbruptCompletion(right)) {
|
|
184
|
+
return COMPLETION_MAYBE_ABRUPT;
|
|
185
|
+
}
|
|
186
|
+
return COMPLETION_NORMAL;
|
|
187
|
+
};
|
|
188
|
+
/**
|
|
189
|
+
* Join completion and value from two feasible branches conservatively.
|
|
190
|
+
*
|
|
191
|
+
* @internal
|
|
192
|
+
*/
|
|
193
|
+
export const joinPromiseEvaluations = (left, right) => {
|
|
194
|
+
const completion = joinPromiseCompletions(left.completion, right.completion);
|
|
195
|
+
if (completion === COMPLETION_NORMAL || completion === COMPLETION_RETURN) {
|
|
196
|
+
return { completion, value: joinedArgument(left.value, right.value) };
|
|
197
|
+
}
|
|
198
|
+
return { completion, value: undefined };
|
|
199
|
+
};
|
|
200
|
+
//# sourceMappingURL=effect-promise-completion.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"effect-promise-completion.js","sourceRoot":"","sources":["../../src/rules/effect-promise-completion.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,23 @@
|
|
|
1
|
+
import type { ArgumentValue, BoundArgument, ExecutionArguments, ParameterGetter } from './effect-promise-environment-types';
|
|
2
|
+
/**
|
|
3
|
+
* A statically projected property value and any getter executed by the read.
|
|
4
|
+
*
|
|
5
|
+
* @internal
|
|
6
|
+
*/
|
|
7
|
+
export interface PropertyRead {
|
|
8
|
+
getter?: ParameterGetter;
|
|
9
|
+
value: ArgumentValue;
|
|
10
|
+
}
|
|
11
|
+
/**
|
|
12
|
+
* Project one statically known object property from an abstract value.
|
|
13
|
+
*
|
|
14
|
+
* @internal
|
|
15
|
+
*/
|
|
16
|
+
export declare const objectPropertyRead: (value: ArgumentValue, propertyName: string) => PropertyRead;
|
|
17
|
+
/**
|
|
18
|
+
* Expand a statically known array expression until its cardinality is unknown.
|
|
19
|
+
*
|
|
20
|
+
* @internal
|
|
21
|
+
*/
|
|
22
|
+
export declare const arrayValues: (array: BoundArgument) => ExecutionArguments;
|
|
23
|
+
//# sourceMappingURL=effect-promise-environment-projections.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"effect-promise-environment-projections.d.ts","sourceRoot":"","sources":["../../src/rules/effect-promise-environment-projections.ts"],"names":[],"mappings":"AAIA,OAAO,KAAK,EACV,aAAa,EACb,aAAa,EACb,kBAAkB,EAClB,eAAe,EAChB,MAAM,oCAAoC,CAAC;AAU5C;;;;GAIG;AACH,MAAM,WAAW,YAAY;IAC3B,MAAM,CAAC,EAAE,eAAe,CAAC;IACzB,KAAK,EAAE,aAAa,CAAC;CACtB;AAuMD;;;;GAIG;AACH,eAAO,MAAM,kBAAkB,GAAI,OAAO,aAAa,EAAE,cAAc,MAAM,KAAG,YAa/E,CAAC;AA0BF;;;;GAIG;AACH,eAAO,MAAM,WAAW,GAAI,OAAO,aAAa,KAAG,kBAQlD,CAAC"}
|