@jesscss/core 2.0.0-alpha.1
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/LICENSE +21 -0
- package/README.md +9 -0
- package/lib/context.d.ts +352 -0
- package/lib/context.d.ts.map +1 -0
- package/lib/context.js +636 -0
- package/lib/context.js.map +1 -0
- package/lib/conversions.d.ts +73 -0
- package/lib/conversions.d.ts.map +1 -0
- package/lib/conversions.js +253 -0
- package/lib/conversions.js.map +1 -0
- package/lib/debug-log.d.ts +2 -0
- package/lib/debug-log.d.ts.map +1 -0
- package/lib/debug-log.js +27 -0
- package/lib/debug-log.js.map +1 -0
- package/lib/define-function.d.ts +587 -0
- package/lib/define-function.d.ts.map +1 -0
- package/lib/define-function.js +726 -0
- package/lib/define-function.js.map +1 -0
- package/lib/deprecation.d.ts +34 -0
- package/lib/deprecation.d.ts.map +1 -0
- package/lib/deprecation.js +57 -0
- package/lib/deprecation.js.map +1 -0
- package/lib/index.d.ts +22 -0
- package/lib/index.d.ts.map +1 -0
- package/lib/index.js +23 -0
- package/lib/index.js.map +1 -0
- package/lib/jess-error.d.ts +343 -0
- package/lib/jess-error.d.ts.map +1 -0
- package/lib/jess-error.js +508 -0
- package/lib/jess-error.js.map +1 -0
- package/lib/logger/deprecation-processing.d.ts +41 -0
- package/lib/logger/deprecation-processing.d.ts.map +1 -0
- package/lib/logger/deprecation-processing.js +81 -0
- package/lib/logger/deprecation-processing.js.map +1 -0
- package/lib/logger.d.ts +10 -0
- package/lib/logger.d.ts.map +1 -0
- package/lib/logger.js +20 -0
- package/lib/logger.js.map +1 -0
- package/lib/plugin.d.ts +94 -0
- package/lib/plugin.d.ts.map +1 -0
- package/lib/plugin.js +174 -0
- package/lib/plugin.js.map +1 -0
- package/lib/tree/ampersand.d.ts +94 -0
- package/lib/tree/ampersand.d.ts.map +1 -0
- package/lib/tree/ampersand.js +269 -0
- package/lib/tree/ampersand.js.map +1 -0
- package/lib/tree/any.d.ts +58 -0
- package/lib/tree/any.d.ts.map +1 -0
- package/lib/tree/any.js +101 -0
- package/lib/tree/any.js.map +1 -0
- package/lib/tree/at-rule.d.ts +53 -0
- package/lib/tree/at-rule.d.ts.map +1 -0
- package/lib/tree/at-rule.js +503 -0
- package/lib/tree/at-rule.js.map +1 -0
- package/lib/tree/block.d.ts +22 -0
- package/lib/tree/block.d.ts.map +1 -0
- package/lib/tree/block.js +24 -0
- package/lib/tree/block.js.map +1 -0
- package/lib/tree/bool.d.ts +17 -0
- package/lib/tree/bool.d.ts.map +1 -0
- package/lib/tree/bool.js +24 -0
- package/lib/tree/bool.js.map +1 -0
- package/lib/tree/call.d.ts +66 -0
- package/lib/tree/call.d.ts.map +1 -0
- package/lib/tree/call.js +306 -0
- package/lib/tree/call.js.map +1 -0
- package/lib/tree/collection.d.ts +30 -0
- package/lib/tree/collection.d.ts.map +1 -0
- package/lib/tree/collection.js +37 -0
- package/lib/tree/collection.js.map +1 -0
- package/lib/tree/color.d.ts +101 -0
- package/lib/tree/color.d.ts.map +1 -0
- package/lib/tree/color.js +513 -0
- package/lib/tree/color.js.map +1 -0
- package/lib/tree/combinator.d.ts +12 -0
- package/lib/tree/combinator.d.ts.map +1 -0
- package/lib/tree/combinator.js +8 -0
- package/lib/tree/combinator.js.map +1 -0
- package/lib/tree/comment.d.ts +20 -0
- package/lib/tree/comment.d.ts.map +1 -0
- package/lib/tree/comment.js +18 -0
- package/lib/tree/comment.js.map +1 -0
- package/lib/tree/condition.d.ts +31 -0
- package/lib/tree/condition.d.ts.map +1 -0
- package/lib/tree/condition.js +103 -0
- package/lib/tree/condition.js.map +1 -0
- package/lib/tree/control.d.ts +104 -0
- package/lib/tree/control.d.ts.map +1 -0
- package/lib/tree/control.js +430 -0
- package/lib/tree/control.js.map +1 -0
- package/lib/tree/declaration-custom.d.ts +18 -0
- package/lib/tree/declaration-custom.d.ts.map +1 -0
- package/lib/tree/declaration-custom.js +24 -0
- package/lib/tree/declaration-custom.js.map +1 -0
- package/lib/tree/declaration-var.d.ts +36 -0
- package/lib/tree/declaration-var.d.ts.map +1 -0
- package/lib/tree/declaration-var.js +63 -0
- package/lib/tree/declaration-var.js.map +1 -0
- package/lib/tree/declaration.d.ts +78 -0
- package/lib/tree/declaration.d.ts.map +1 -0
- package/lib/tree/declaration.js +289 -0
- package/lib/tree/declaration.js.map +1 -0
- package/lib/tree/default-guard.d.ts +15 -0
- package/lib/tree/default-guard.d.ts.map +1 -0
- package/lib/tree/default-guard.js +19 -0
- package/lib/tree/default-guard.js.map +1 -0
- package/lib/tree/dimension.d.ts +33 -0
- package/lib/tree/dimension.d.ts.map +1 -0
- package/lib/tree/dimension.js +291 -0
- package/lib/tree/dimension.js.map +1 -0
- package/lib/tree/expression.d.ts +24 -0
- package/lib/tree/expression.d.ts.map +1 -0
- package/lib/tree/expression.js +28 -0
- package/lib/tree/expression.js.map +1 -0
- package/lib/tree/extend-list.d.ts +23 -0
- package/lib/tree/extend-list.d.ts.map +1 -0
- package/lib/tree/extend-list.js +20 -0
- package/lib/tree/extend-list.js.map +1 -0
- package/lib/tree/extend.d.ts +47 -0
- package/lib/tree/extend.d.ts.map +1 -0
- package/lib/tree/extend.js +292 -0
- package/lib/tree/extend.js.map +1 -0
- package/lib/tree/function.d.ts +48 -0
- package/lib/tree/function.d.ts.map +1 -0
- package/lib/tree/function.js +74 -0
- package/lib/tree/function.js.map +1 -0
- package/lib/tree/import-js.d.ts +35 -0
- package/lib/tree/import-js.d.ts.map +1 -0
- package/lib/tree/import-js.js +45 -0
- package/lib/tree/import-js.js.map +1 -0
- package/lib/tree/import-style.d.ts +156 -0
- package/lib/tree/import-style.d.ts.map +1 -0
- package/lib/tree/import-style.js +556 -0
- package/lib/tree/import-style.js.map +1 -0
- package/lib/tree/index.d.ts +71 -0
- package/lib/tree/index.d.ts.map +1 -0
- package/lib/tree/index.js +95 -0
- package/lib/tree/index.js.map +1 -0
- package/lib/tree/interpolated-reference.d.ts +24 -0
- package/lib/tree/interpolated-reference.d.ts.map +1 -0
- package/lib/tree/interpolated-reference.js +37 -0
- package/lib/tree/interpolated-reference.js.map +1 -0
- package/lib/tree/interpolated.d.ts +62 -0
- package/lib/tree/interpolated.d.ts.map +1 -0
- package/lib/tree/interpolated.js +204 -0
- package/lib/tree/interpolated.js.map +1 -0
- package/lib/tree/js-array.d.ts +10 -0
- package/lib/tree/js-array.d.ts.map +1 -0
- package/lib/tree/js-array.js +10 -0
- package/lib/tree/js-array.js.map +1 -0
- package/lib/tree/js-expr.d.ts +23 -0
- package/lib/tree/js-expr.d.ts.map +1 -0
- package/lib/tree/js-expr.js +28 -0
- package/lib/tree/js-expr.js.map +1 -0
- package/lib/tree/js-function.d.ts +20 -0
- package/lib/tree/js-function.d.ts.map +1 -0
- package/lib/tree/js-function.js +16 -0
- package/lib/tree/js-function.js.map +1 -0
- package/lib/tree/js-object.d.ts +10 -0
- package/lib/tree/js-object.d.ts.map +1 -0
- package/lib/tree/js-object.js +10 -0
- package/lib/tree/js-object.js.map +1 -0
- package/lib/tree/list.d.ts +38 -0
- package/lib/tree/list.d.ts.map +1 -0
- package/lib/tree/list.js +83 -0
- package/lib/tree/list.js.map +1 -0
- package/lib/tree/log.d.ts +29 -0
- package/lib/tree/log.d.ts.map +1 -0
- package/lib/tree/log.js +56 -0
- package/lib/tree/log.js.map +1 -0
- package/lib/tree/mixin.d.ts +87 -0
- package/lib/tree/mixin.d.ts.map +1 -0
- package/lib/tree/mixin.js +112 -0
- package/lib/tree/mixin.js.map +1 -0
- package/lib/tree/negative.d.ts +17 -0
- package/lib/tree/negative.d.ts.map +1 -0
- package/lib/tree/negative.js +22 -0
- package/lib/tree/negative.js.map +1 -0
- package/lib/tree/nil.d.ts +31 -0
- package/lib/tree/nil.d.ts.map +1 -0
- package/lib/tree/nil.js +36 -0
- package/lib/tree/nil.js.map +1 -0
- package/lib/tree/node-base.d.ts +359 -0
- package/lib/tree/node-base.d.ts.map +1 -0
- package/lib/tree/node-base.js +884 -0
- package/lib/tree/node-base.js.map +1 -0
- package/lib/tree/node.d.ts +10 -0
- package/lib/tree/node.d.ts.map +1 -0
- package/lib/tree/node.js +45 -0
- package/lib/tree/node.js.map +1 -0
- package/lib/tree/number.d.ts +21 -0
- package/lib/tree/number.d.ts.map +1 -0
- package/lib/tree/number.js +27 -0
- package/lib/tree/number.js.map +1 -0
- package/lib/tree/operation.d.ts +26 -0
- package/lib/tree/operation.d.ts.map +1 -0
- package/lib/tree/operation.js +103 -0
- package/lib/tree/operation.js.map +1 -0
- package/lib/tree/paren.d.ts +18 -0
- package/lib/tree/paren.d.ts.map +1 -0
- package/lib/tree/paren.js +86 -0
- package/lib/tree/paren.js.map +1 -0
- package/lib/tree/query-condition.d.ts +17 -0
- package/lib/tree/query-condition.d.ts.map +1 -0
- package/lib/tree/query-condition.js +39 -0
- package/lib/tree/query-condition.js.map +1 -0
- package/lib/tree/quoted.d.ts +27 -0
- package/lib/tree/quoted.d.ts.map +1 -0
- package/lib/tree/quoted.js +66 -0
- package/lib/tree/quoted.js.map +1 -0
- package/lib/tree/range.d.ts +33 -0
- package/lib/tree/range.d.ts.map +1 -0
- package/lib/tree/range.js +47 -0
- package/lib/tree/range.js.map +1 -0
- package/lib/tree/reference.d.ts +76 -0
- package/lib/tree/reference.d.ts.map +1 -0
- package/lib/tree/reference.js +521 -0
- package/lib/tree/reference.js.map +1 -0
- package/lib/tree/rest.d.ts +15 -0
- package/lib/tree/rest.d.ts.map +1 -0
- package/lib/tree/rest.js +32 -0
- package/lib/tree/rest.js.map +1 -0
- package/lib/tree/rules-raw.d.ts +17 -0
- package/lib/tree/rules-raw.d.ts.map +1 -0
- package/lib/tree/rules-raw.js +37 -0
- package/lib/tree/rules-raw.js.map +1 -0
- package/lib/tree/rules.d.ts +255 -0
- package/lib/tree/rules.d.ts.map +1 -0
- package/lib/tree/rules.js +2293 -0
- package/lib/tree/rules.js.map +1 -0
- package/lib/tree/ruleset.d.ts +91 -0
- package/lib/tree/ruleset.d.ts.map +1 -0
- package/lib/tree/ruleset.js +506 -0
- package/lib/tree/ruleset.js.map +1 -0
- package/lib/tree/selector-attr.d.ts +31 -0
- package/lib/tree/selector-attr.d.ts.map +1 -0
- package/lib/tree/selector-attr.js +99 -0
- package/lib/tree/selector-attr.js.map +1 -0
- package/lib/tree/selector-basic.d.ts +23 -0
- package/lib/tree/selector-basic.d.ts.map +1 -0
- package/lib/tree/selector-basic.js +34 -0
- package/lib/tree/selector-basic.js.map +1 -0
- package/lib/tree/selector-capture.d.ts +23 -0
- package/lib/tree/selector-capture.d.ts.map +1 -0
- package/lib/tree/selector-capture.js +34 -0
- package/lib/tree/selector-capture.js.map +1 -0
- package/lib/tree/selector-complex.d.ts +40 -0
- package/lib/tree/selector-complex.d.ts.map +1 -0
- package/lib/tree/selector-complex.js +143 -0
- package/lib/tree/selector-complex.js.map +1 -0
- package/lib/tree/selector-compound.d.ts +16 -0
- package/lib/tree/selector-compound.d.ts.map +1 -0
- package/lib/tree/selector-compound.js +114 -0
- package/lib/tree/selector-compound.js.map +1 -0
- package/lib/tree/selector-interpolated.d.ts +23 -0
- package/lib/tree/selector-interpolated.d.ts.map +1 -0
- package/lib/tree/selector-interpolated.js +27 -0
- package/lib/tree/selector-interpolated.js.map +1 -0
- package/lib/tree/selector-list.d.ts +17 -0
- package/lib/tree/selector-list.d.ts.map +1 -0
- package/lib/tree/selector-list.js +184 -0
- package/lib/tree/selector-list.js.map +1 -0
- package/lib/tree/selector-pseudo.d.ts +42 -0
- package/lib/tree/selector-pseudo.d.ts.map +1 -0
- package/lib/tree/selector-pseudo.js +191 -0
- package/lib/tree/selector-pseudo.js.map +1 -0
- package/lib/tree/selector-simple.d.ts +5 -0
- package/lib/tree/selector-simple.d.ts.map +1 -0
- package/lib/tree/selector-simple.js +6 -0
- package/lib/tree/selector-simple.js.map +1 -0
- package/lib/tree/selector.d.ts +43 -0
- package/lib/tree/selector.d.ts.map +1 -0
- package/lib/tree/selector.js +56 -0
- package/lib/tree/selector.js.map +1 -0
- package/lib/tree/sequence.d.ts +43 -0
- package/lib/tree/sequence.d.ts.map +1 -0
- package/lib/tree/sequence.js +148 -0
- package/lib/tree/sequence.js.map +1 -0
- package/lib/tree/tree.d.ts +87 -0
- package/lib/tree/tree.d.ts.map +1 -0
- package/lib/tree/tree.js +2 -0
- package/lib/tree/tree.js.map +1 -0
- package/lib/tree/url.d.ts +18 -0
- package/lib/tree/url.d.ts.map +1 -0
- package/lib/tree/url.js +35 -0
- package/lib/tree/url.js.map +1 -0
- package/lib/tree/util/__tests__/debug-log.d.ts +1 -0
- package/lib/tree/util/__tests__/debug-log.d.ts.map +1 -0
- package/lib/tree/util/__tests__/debug-log.js +36 -0
- package/lib/tree/util/__tests__/debug-log.js.map +1 -0
- package/lib/tree/util/calculate.d.ts +3 -0
- package/lib/tree/util/calculate.d.ts.map +1 -0
- package/lib/tree/util/calculate.js +10 -0
- package/lib/tree/util/calculate.js.map +1 -0
- package/lib/tree/util/cast.d.ts +10 -0
- package/lib/tree/util/cast.d.ts.map +1 -0
- package/lib/tree/util/cast.js +87 -0
- package/lib/tree/util/cast.js.map +1 -0
- package/lib/tree/util/cloning.d.ts +4 -0
- package/lib/tree/util/cloning.d.ts.map +1 -0
- package/lib/tree/util/cloning.js +8 -0
- package/lib/tree/util/cloning.js.map +1 -0
- package/lib/tree/util/collections.d.ts +57 -0
- package/lib/tree/util/collections.d.ts.map +1 -0
- package/lib/tree/util/collections.js +136 -0
- package/lib/tree/util/collections.js.map +1 -0
- package/lib/tree/util/compare.d.ts +11 -0
- package/lib/tree/util/compare.d.ts.map +1 -0
- package/lib/tree/util/compare.js +89 -0
- package/lib/tree/util/compare.js.map +1 -0
- package/lib/tree/util/extend-helpers.d.ts +2 -0
- package/lib/tree/util/extend-helpers.d.ts.map +1 -0
- package/lib/tree/util/extend-helpers.js +2 -0
- package/lib/tree/util/extend-helpers.js.map +1 -0
- package/lib/tree/util/extend-roots.d.ts +37 -0
- package/lib/tree/util/extend-roots.d.ts.map +1 -0
- package/lib/tree/util/extend-roots.js +682 -0
- package/lib/tree/util/extend-roots.js.map +1 -0
- package/lib/tree/util/extend-roots.old.d.ts +132 -0
- package/lib/tree/util/extend-roots.old.d.ts.map +1 -0
- package/lib/tree/util/extend-roots.old.js +2272 -0
- package/lib/tree/util/extend-roots.old.js.map +1 -0
- package/lib/tree/util/extend-trace-debug.d.ts +13 -0
- package/lib/tree/util/extend-trace-debug.d.ts.map +1 -0
- package/lib/tree/util/extend-trace-debug.js +34 -0
- package/lib/tree/util/extend-trace-debug.js.map +1 -0
- package/lib/tree/util/extend.d.ts +218 -0
- package/lib/tree/util/extend.d.ts.map +1 -0
- package/lib/tree/util/extend.js +3033 -0
- package/lib/tree/util/extend.js.map +1 -0
- package/lib/tree/util/find-extendable-locations.d.ts +2 -0
- package/lib/tree/util/find-extendable-locations.d.ts.map +1 -0
- package/lib/tree/util/find-extendable-locations.js +2 -0
- package/lib/tree/util/find-extendable-locations.js.map +1 -0
- package/lib/tree/util/format.d.ts +20 -0
- package/lib/tree/util/format.d.ts.map +1 -0
- package/lib/tree/util/format.js +67 -0
- package/lib/tree/util/format.js.map +1 -0
- package/lib/tree/util/is-node.d.ts +13 -0
- package/lib/tree/util/is-node.d.ts.map +1 -0
- package/lib/tree/util/is-node.js +43 -0
- package/lib/tree/util/is-node.js.map +1 -0
- package/lib/tree/util/print.d.ts +80 -0
- package/lib/tree/util/print.d.ts.map +1 -0
- package/lib/tree/util/print.js +205 -0
- package/lib/tree/util/print.js.map +1 -0
- package/lib/tree/util/process-leading-is.d.ts +25 -0
- package/lib/tree/util/process-leading-is.d.ts.map +1 -0
- package/lib/tree/util/process-leading-is.js +364 -0
- package/lib/tree/util/process-leading-is.js.map +1 -0
- package/lib/tree/util/recursion-helper.d.ts +15 -0
- package/lib/tree/util/recursion-helper.d.ts.map +1 -0
- package/lib/tree/util/recursion-helper.js +43 -0
- package/lib/tree/util/recursion-helper.js.map +1 -0
- package/lib/tree/util/regex.d.ts +4 -0
- package/lib/tree/util/regex.d.ts.map +1 -0
- package/lib/tree/util/regex.js +4 -0
- package/lib/tree/util/regex.js.map +1 -0
- package/lib/tree/util/registry-utils.d.ts +192 -0
- package/lib/tree/util/registry-utils.d.ts.map +1 -0
- package/lib/tree/util/registry-utils.js +1242 -0
- package/lib/tree/util/registry-utils.js.map +1 -0
- package/lib/tree/util/ruleset-trace.d.ts +4 -0
- package/lib/tree/util/ruleset-trace.d.ts.map +1 -0
- package/lib/tree/util/ruleset-trace.js +14 -0
- package/lib/tree/util/ruleset-trace.js.map +1 -0
- package/lib/tree/util/selector-compare.d.ts +2 -0
- package/lib/tree/util/selector-compare.d.ts.map +1 -0
- package/lib/tree/util/selector-compare.js +2 -0
- package/lib/tree/util/selector-compare.js.map +1 -0
- package/lib/tree/util/selector-match-core.d.ts +171 -0
- package/lib/tree/util/selector-match-core.d.ts.map +1 -0
- package/lib/tree/util/selector-match-core.js +1578 -0
- package/lib/tree/util/selector-match-core.js.map +1 -0
- package/lib/tree/util/selector-utils.d.ts +30 -0
- package/lib/tree/util/selector-utils.d.ts.map +1 -0
- package/lib/tree/util/selector-utils.js +100 -0
- package/lib/tree/util/selector-utils.js.map +1 -0
- package/lib/tree/util/serialize-helper.d.ts +13 -0
- package/lib/tree/util/serialize-helper.d.ts.map +1 -0
- package/lib/tree/util/serialize-helper.js +387 -0
- package/lib/tree/util/serialize-helper.js.map +1 -0
- package/lib/tree/util/serialize-types.d.ts +9 -0
- package/lib/tree/util/serialize-types.d.ts.map +1 -0
- package/lib/tree/util/serialize-types.js +216 -0
- package/lib/tree/util/serialize-types.js.map +1 -0
- package/lib/tree/util/should-operate.d.ts +23 -0
- package/lib/tree/util/should-operate.d.ts.map +1 -0
- package/lib/tree/util/should-operate.js +46 -0
- package/lib/tree/util/should-operate.js.map +1 -0
- package/lib/tree/util/sourcemap.d.ts +7 -0
- package/lib/tree/util/sourcemap.d.ts.map +1 -0
- package/lib/tree/util/sourcemap.js +25 -0
- package/lib/tree/util/sourcemap.js.map +1 -0
- package/lib/types/config.d.ts +205 -0
- package/lib/types/config.d.ts.map +1 -0
- package/lib/types/config.js +2 -0
- package/lib/types/config.js.map +1 -0
- package/lib/types/index.d.ts +15 -0
- package/lib/types/index.d.ts.map +1 -0
- package/lib/types/index.js +3 -0
- package/lib/types/index.js.map +1 -0
- package/lib/types/modes.d.ts +24 -0
- package/lib/types/modes.d.ts.map +1 -0
- package/lib/types/modes.js +2 -0
- package/lib/types/modes.js.map +1 -0
- package/lib/types.d.ts +61 -0
- package/lib/types.d.ts.map +1 -0
- package/lib/types.js +2 -0
- package/lib/types.js.map +1 -0
- package/lib/use-webpack-resolver.d.ts +9 -0
- package/lib/use-webpack-resolver.d.ts.map +1 -0
- package/lib/use-webpack-resolver.js +41 -0
- package/lib/use-webpack-resolver.js.map +1 -0
- package/lib/visitor/index.d.ts +136 -0
- package/lib/visitor/index.d.ts.map +1 -0
- package/lib/visitor/index.js +135 -0
- package/lib/visitor/index.js.map +1 -0
- package/lib/visitor/less-visitor.d.ts +7 -0
- package/lib/visitor/less-visitor.d.ts.map +1 -0
- package/lib/visitor/less-visitor.js +7 -0
- package/lib/visitor/less-visitor.js.map +1 -0
- package/package.json +66 -0
|
@@ -0,0 +1,205 @@
|
|
|
1
|
+
export function getPrintOptions(options) {
|
|
2
|
+
options = options ?? {};
|
|
3
|
+
options.depth ??= 0;
|
|
4
|
+
options.writer ??= new OutputWriter();
|
|
5
|
+
// Derive collapseNesting from context when missing so nested vs flat is correct for & serialization
|
|
6
|
+
if (options.collapseNesting === undefined && options.context?.opts?.collapseNesting !== undefined) {
|
|
7
|
+
options.collapseNesting = Boolean(options.context.opts.collapseNesting);
|
|
8
|
+
}
|
|
9
|
+
// Always ensure frameState exists - nodes should not need to check for it
|
|
10
|
+
options.inFrames ??= [];
|
|
11
|
+
options.frameHeaders ??= [];
|
|
12
|
+
options.treeFrames ??= [];
|
|
13
|
+
options.lastRenderedFrames ??= [];
|
|
14
|
+
options.referenceMode ??= false;
|
|
15
|
+
options.referenceRenderEnabled ??= true;
|
|
16
|
+
options.referenceFilterTargets ??= false;
|
|
17
|
+
return options;
|
|
18
|
+
}
|
|
19
|
+
export class OutputWriter {
|
|
20
|
+
chunks = [];
|
|
21
|
+
_length = 0;
|
|
22
|
+
_line = 0;
|
|
23
|
+
_column = 0;
|
|
24
|
+
_segments = [];
|
|
25
|
+
_positions = [];
|
|
26
|
+
_boundarySignals = [];
|
|
27
|
+
_signalPositions = [];
|
|
28
|
+
/** Diagnostic: remember the origin that last wrote a trailing newline */
|
|
29
|
+
_lastNewlineOrigin = undefined;
|
|
30
|
+
/** Store segments from the most recent capture for merging when content is added back */
|
|
31
|
+
_capturedSegments = null;
|
|
32
|
+
get line() {
|
|
33
|
+
return this._line;
|
|
34
|
+
}
|
|
35
|
+
get column() {
|
|
36
|
+
return this._column;
|
|
37
|
+
}
|
|
38
|
+
add(text, originParam) {
|
|
39
|
+
if (!text) {
|
|
40
|
+
return;
|
|
41
|
+
}
|
|
42
|
+
this.chunks.push(text);
|
|
43
|
+
this._length += text.length;
|
|
44
|
+
const currentLine = this._line;
|
|
45
|
+
const currentColumn = this._column;
|
|
46
|
+
// If we have captured segments and we're adding with an origin, merge them
|
|
47
|
+
// This happens when captured content is added back (e.g., in Declaration.declTrimmedString)
|
|
48
|
+
if (this._capturedSegments && originParam) {
|
|
49
|
+
// Adjust captured segment positions to current writer position and add them
|
|
50
|
+
for (const seg of this._capturedSegments) {
|
|
51
|
+
// If segment is on the same line as capture start, add column offset
|
|
52
|
+
// If segment is on a different line, column is already correct (relative to that line)
|
|
53
|
+
const adjustedColumn = seg.genLine === 0 ? currentColumn + seg.genColumn : seg.genColumn;
|
|
54
|
+
this._segments.push({
|
|
55
|
+
genLine: currentLine + seg.genLine,
|
|
56
|
+
genColumn: adjustedColumn,
|
|
57
|
+
source: seg.source,
|
|
58
|
+
origLine: seg.origLine,
|
|
59
|
+
origColumn: seg.origColumn
|
|
60
|
+
});
|
|
61
|
+
}
|
|
62
|
+
this._capturedSegments = null; // Clear after merging
|
|
63
|
+
}
|
|
64
|
+
// Record a mapping segment if we have origin location info
|
|
65
|
+
const origin = originParam;
|
|
66
|
+
const loc = origin && origin.location;
|
|
67
|
+
if (loc && Array.isArray(loc) && loc.length === 6) {
|
|
68
|
+
const startLine = (loc[1] ?? 1) - 1; // convert to 0-based
|
|
69
|
+
const startColumn = (loc[2] ?? 1) - 1; // convert to 0-based
|
|
70
|
+
const file = origin?.treeContext?.file?.fullPath || origin?.treeContext?.file?.path || origin?.treeContext?.file?.name;
|
|
71
|
+
this._segments.push({
|
|
72
|
+
genLine: this._line,
|
|
73
|
+
genColumn: this._column,
|
|
74
|
+
source: file,
|
|
75
|
+
origLine: startLine,
|
|
76
|
+
origColumn: startColumn
|
|
77
|
+
});
|
|
78
|
+
}
|
|
79
|
+
// Track if the chunk ends with a newline and record its origin (for diagnostics)
|
|
80
|
+
if (text.endsWith('\n')) {
|
|
81
|
+
this._lastNewlineOrigin = originParam;
|
|
82
|
+
}
|
|
83
|
+
// Fast path: no newlines
|
|
84
|
+
let i = text.indexOf('\n');
|
|
85
|
+
if (i === -1) {
|
|
86
|
+
this._column += text.length;
|
|
87
|
+
this._positions.push({ line: this._line, column: this._column, segments: this._segments.length, length: this._length });
|
|
88
|
+
this._signalPositions.push(this._boundarySignals.length);
|
|
89
|
+
// Clear captured segments if we added content without origin (normal add, not merging captured content)
|
|
90
|
+
if (!originParam) {
|
|
91
|
+
this._capturedSegments = null;
|
|
92
|
+
}
|
|
93
|
+
return;
|
|
94
|
+
}
|
|
95
|
+
// Count newlines and compute trailing column after last newline
|
|
96
|
+
this._line++;
|
|
97
|
+
for (;;) {
|
|
98
|
+
const next = text.indexOf('\n', i + 1);
|
|
99
|
+
if (next === -1) {
|
|
100
|
+
break;
|
|
101
|
+
}
|
|
102
|
+
this._line++;
|
|
103
|
+
i = next;
|
|
104
|
+
}
|
|
105
|
+
this._column = text.length - (i + 1);
|
|
106
|
+
this._positions.push({ line: this._line, column: this._column, segments: this._segments.length, length: this._length });
|
|
107
|
+
this._signalPositions.push(this._boundarySignals.length);
|
|
108
|
+
// Clear captured segments if we added content without origin
|
|
109
|
+
if (!originParam) {
|
|
110
|
+
this._capturedSegments = null;
|
|
111
|
+
}
|
|
112
|
+
}
|
|
113
|
+
mark() {
|
|
114
|
+
return this.chunks.length;
|
|
115
|
+
}
|
|
116
|
+
getSince(mark) {
|
|
117
|
+
if (mark < 0 || mark > this.chunks.length) {
|
|
118
|
+
return '';
|
|
119
|
+
}
|
|
120
|
+
return this.chunks.slice(mark).join('');
|
|
121
|
+
}
|
|
122
|
+
/** Restore writer state to a given mark, discarding appended chunks and segments */
|
|
123
|
+
restore(mark) {
|
|
124
|
+
if (mark < 0 || mark > this.chunks.length) {
|
|
125
|
+
return;
|
|
126
|
+
}
|
|
127
|
+
this.chunks.length = mark;
|
|
128
|
+
const pos = this._positions[mark - 1];
|
|
129
|
+
if (pos) {
|
|
130
|
+
this._line = pos.line;
|
|
131
|
+
this._column = pos.column;
|
|
132
|
+
this._segments.length = pos.segments;
|
|
133
|
+
this._length = pos.length;
|
|
134
|
+
}
|
|
135
|
+
else {
|
|
136
|
+
this._line = 0;
|
|
137
|
+
this._column = 0;
|
|
138
|
+
this._segments.length = 0;
|
|
139
|
+
this._length = 0;
|
|
140
|
+
}
|
|
141
|
+
this._positions.length = mark;
|
|
142
|
+
const signalCount = this._signalPositions[mark - 1] ?? 0;
|
|
143
|
+
this._boundarySignals.length = signalCount;
|
|
144
|
+
this._signalPositions.length = mark;
|
|
145
|
+
}
|
|
146
|
+
/** Capture output from a function without committing to the main buffer */
|
|
147
|
+
capture(fn) {
|
|
148
|
+
const m = this.mark();
|
|
149
|
+
const segmentsBefore = this._segments.length;
|
|
150
|
+
fn();
|
|
151
|
+
const s = this.getSince(m);
|
|
152
|
+
// Store segments created during capture (but don't add to main buffer)
|
|
153
|
+
const segmentsCreated = this._segments.slice(segmentsBefore);
|
|
154
|
+
this.restore(m);
|
|
155
|
+
// Store captured segments for potential merging when content is added back
|
|
156
|
+
this._capturedSegments = segmentsCreated.length > 0 ? segmentsCreated : null;
|
|
157
|
+
return s;
|
|
158
|
+
}
|
|
159
|
+
captureWithMeta(fn) {
|
|
160
|
+
const m = this.mark();
|
|
161
|
+
const segmentsBefore = this._segments.length;
|
|
162
|
+
const startLen = this._length;
|
|
163
|
+
const signalStart = this._boundarySignals.length;
|
|
164
|
+
fn();
|
|
165
|
+
const text = this.getSince(m);
|
|
166
|
+
const endLen = this._length;
|
|
167
|
+
const capturedSignals = this._boundarySignals.slice(signalStart);
|
|
168
|
+
const segmentsCreated = this._segments.slice(segmentsBefore);
|
|
169
|
+
this.restore(m);
|
|
170
|
+
this._capturedSegments = segmentsCreated.length > 0 ? segmentsCreated : null;
|
|
171
|
+
let leadingIntent = 'implicit';
|
|
172
|
+
let trailingIntent = 'implicit';
|
|
173
|
+
for (const signal of capturedSignals) {
|
|
174
|
+
if (signal.side === 'pre' && signal.offset === startLen) {
|
|
175
|
+
leadingIntent = signal.intent;
|
|
176
|
+
break;
|
|
177
|
+
}
|
|
178
|
+
}
|
|
179
|
+
for (let i = capturedSignals.length - 1; i >= 0; i--) {
|
|
180
|
+
const signal = capturedSignals[i];
|
|
181
|
+
if (signal.side === 'post' && signal.offset === endLen) {
|
|
182
|
+
trailingIntent = signal.intent;
|
|
183
|
+
break;
|
|
184
|
+
}
|
|
185
|
+
}
|
|
186
|
+
return { text, leadingIntent, trailingIntent };
|
|
187
|
+
}
|
|
188
|
+
signalBoundaryIntent(side, intent) {
|
|
189
|
+
this._boundarySignals.push({ side, intent, offset: this._length });
|
|
190
|
+
}
|
|
191
|
+
toString() {
|
|
192
|
+
return this.chunks.join('');
|
|
193
|
+
}
|
|
194
|
+
toSourceMapV3() {
|
|
195
|
+
return null;
|
|
196
|
+
}
|
|
197
|
+
getSegments() {
|
|
198
|
+
return this._segments;
|
|
199
|
+
}
|
|
200
|
+
/** Diagnostic accessor */
|
|
201
|
+
getLastNewlineOrigin() {
|
|
202
|
+
return this._lastNewlineOrigin;
|
|
203
|
+
}
|
|
204
|
+
}
|
|
205
|
+
//# sourceMappingURL=print.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"print.js","sourceRoot":"","sources":["../../../src/tree/util/print.ts"],"names":[],"mappings":"AA+DA,MAAM,UAAU,eAAe,CAAC,OAAsB;IACpD,OAAO,GAAG,OAAO,IAAI,EAAE,CAAC;IACxB,OAAO,CAAC,KAAK,KAAK,CAAC,CAAC;IACpB,OAAO,CAAC,MAAM,KAAK,IAAI,YAAY,EAAE,CAAC;IACtC,oGAAoG;IACpG,IAAI,OAAO,CAAC,eAAe,KAAK,SAAS,IAAI,OAAO,CAAC,OAAO,EAAE,IAAI,EAAE,eAAe,KAAK,SAAS,EAAE,CAAC;QAClG,OAAO,CAAC,eAAe,GAAG,OAAO,CAAC,OAAO,CAAC,OAAO,CAAC,IAAI,CAAC,eAAe,CAAC,CAAC;IAC1E,CAAC;IACD,0EAA0E;IAC1E,OAAO,CAAC,QAAQ,KAAK,EAAE,CAAC;IACxB,OAAO,CAAC,YAAY,KAAK,EAAE,CAAC;IAC5B,OAAO,CAAC,UAAU,KAAK,EAAE,CAAC;IAC1B,OAAO,CAAC,kBAAkB,KAAK,EAAE,CAAC;IAClC,OAAO,CAAC,aAAa,KAAK,KAAK,CAAC;IAChC,OAAO,CAAC,sBAAsB,KAAK,IAAI,CAAC;IACxC,OAAO,CAAC,sBAAsB,KAAK,KAAK,CAAC;IACzC,OAAO,OAA4B,CAAC;AACtC,CAAC;AAED,MAAM,OAAO,YAAY;IACf,MAAM,GAAa,EAAE,CAAC;IACtB,OAAO,GAAG,CAAC,CAAC;IACZ,KAAK,GAAG,CAAC,CAAC;IACV,OAAO,GAAG,CAAC,CAAC;IACZ,SAAS,GAAoB,EAAE,CAAC;IAChC,UAAU,GAA8E,EAAE,CAAC;IAC3F,gBAAgB,GAA4E,EAAE,CAAC;IAC/F,gBAAgB,GAAa,EAAE,CAAC;IACxC,yEAAyE;IACjE,kBAAkB,GAAY,SAAS,CAAC;IAChD,yFAAyF;IACjF,iBAAiB,GAA2B,IAAI,CAAC;IAEzD,IAAI,IAAI;QACN,OAAO,IAAI,CAAC,KAAK,CAAC;IACpB,CAAC;IAED,IAAI,MAAM;QACR,OAAO,IAAI,CAAC,OAAO,CAAC;IACtB,CAAC;IAED,GAAG,CAAC,IAAY,EAAE,WAAqB;QACrC,IAAI,CAAC,IAAI,EAAE,CAAC;YACV,OAAO;QACT,CAAC;QACD,IAAI,CAAC,MAAM,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;QACvB,IAAI,CAAC,OAAO,IAAI,IAAI,CAAC,MAAM,CAAC;QAE5B,MAAM,WAAW,GAAG,IAAI,CAAC,KAAK,CAAC;QAC/B,MAAM,aAAa,GAAG,IAAI,CAAC,OAAO,CAAC;QAEnC,2EAA2E;QAC3E,4FAA4F;QAC5F,IAAI,IAAI,CAAC,iBAAiB,IAAI,WAAW,EAAE,CAAC;YAC1C,4EAA4E;YAC5E,KAAK,MAAM,GAAG,IAAI,IAAI,CAAC,iBAAiB,EAAE,CAAC;gBACzC,qEAAqE;gBACrE,uFAAuF;gBACvF,MAAM,cAAc,GAAG,GAAG,CAAC,OAAO,KAAK,CAAC,CAAC,CAAC,CAAC,aAAa,GAAG,GAAG,CAAC,SAAS,CAAC,CAAC,CAAC,GAAG,CAAC,SAAS,CAAC;gBACzF,IAAI,CAAC,SAAS,CAAC,IAAI,CAAC;oBAClB,OAAO,EAAE,WAAW,GAAG,GAAG,CAAC,OAAO;oBAClC,SAAS,EAAE,cAAc;oBACzB,MAAM,EAAE,GAAG,CAAC,MAAM;oBAClB,QAAQ,EAAE,GAAG,CAAC,QAAQ;oBACtB,UAAU,EAAE,GAAG,CAAC,UAAU;iBAC3B,CAAC,CAAC;YACL,CAAC;YACD,IAAI,CAAC,iBAAiB,GAAG,IAAI,CAAC,CAAC,sBAAsB;QACvD,CAAC;QAED,2DAA2D;QAC3D,MAAM,MAAM,GAAQ,WAAkB,CAAC;QACvC,MAAM,GAAG,GAAQ,MAAM,IAAI,MAAM,CAAC,QAAQ,CAAC;QAC3C,IAAI,GAAG,IAAI,KAAK,CAAC,OAAO,CAAC,GAAG,CAAC,IAAI,GAAG,CAAC,MAAM,KAAK,CAAC,EAAE,CAAC;YAClD,MAAM,SAAS,GAAG,CAAC,GAAG,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,GAAG,CAAC,CAAC,CAAK,qBAAqB;YAC9D,MAAM,WAAW,GAAG,CAAC,GAAG,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,GAAG,CAAC,CAAC,CAAG,qBAAqB;YAC9D,MAAM,IAAI,GAAG,MAAM,EAAE,WAAW,EAAE,IAAI,EAAE,QAAQ,IAAI,MAAM,EAAE,WAAW,EAAE,IAAI,EAAE,IAAI,IAAI,MAAM,EAAE,WAAW,EAAE,IAAI,EAAE,IAAI,CAAC;YACvH,IAAI,CAAC,SAAS,CAAC,IAAI,CAAC;gBAClB,OAAO,EAAE,IAAI,CAAC,KAAK;gBACnB,SAAS,EAAE,IAAI,CAAC,OAAO;gBACvB,MAAM,EAAE,IAAI;gBACZ,QAAQ,EAAE,SAAS;gBACnB,UAAU,EAAE,WAAW;aACxB,CAAC,CAAC;QACL,CAAC;QAED,iFAAiF;QACjF,IAAI,IAAI,CAAC,QAAQ,CAAC,IAAI,CAAC,EAAE,CAAC;YACxB,IAAI,CAAC,kBAAkB,GAAG,WAAW,CAAC;QACxC,CAAC;QAED,yBAAyB;QACzB,IAAI,CAAC,GAAG,IAAI,CAAC,OAAO,CAAC,IAAI,CAAC,CAAC;QAC3B,IAAI,CAAC,KAAK,CAAC,CAAC,EAAE,CAAC;YACb,IAAI,CAAC,OAAO,IAAI,IAAI,CAAC,MAAM,CAAC;YAC5B,IAAI,CAAC,UAAU,CAAC,IAAI,CAAC,EAAE,IAAI,EAAE,IAAI,CAAC,KAAK,EAAE,MAAM,EAAE,IAAI,CAAC,OAAO,EAAE,QAAQ,EAAE,IAAI,CAAC,SAAS,CAAC,MAAM,EAAE,MAAM,EAAE,IAAI,CAAC,OAAO,EAAE,CAAC,CAAC;YACxH,IAAI,CAAC,gBAAgB,CAAC,IAAI,CAAC,IAAI,CAAC,gBAAgB,CAAC,MAAM,CAAC,CAAC;YACzD,wGAAwG;YACxG,IAAI,CAAC,WAAW,EAAE,CAAC;gBACjB,IAAI,CAAC,iBAAiB,GAAG,IAAI,CAAC;YAChC,CAAC;YACD,OAAO;QACT,CAAC;QAED,gEAAgE;QAChE,IAAI,CAAC,KAAK,EAAE,CAAC;QACb,SAAS,CAAC;YACR,MAAM,IAAI,GAAG,IAAI,CAAC,OAAO,CAAC,IAAI,EAAE,CAAC,GAAG,CAAC,CAAC,CAAC;YACvC,IAAI,IAAI,KAAK,CAAC,CAAC,EAAE,CAAC;gBAChB,MAAM;YACR,CAAC;YACD,IAAI,CAAC,KAAK,EAAE,CAAC;YACb,CAAC,GAAG,IAAI,CAAC;QACX,CAAC;QACD,IAAI,CAAC,OAAO,GAAG,IAAI,CAAC,MAAM,GAAG,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC;QACrC,IAAI,CAAC,UAAU,CAAC,IAAI,CAAC,EAAE,IAAI,EAAE,IAAI,CAAC,KAAK,EAAE,MAAM,EAAE,IAAI,CAAC,OAAO,EAAE,QAAQ,EAAE,IAAI,CAAC,SAAS,CAAC,MAAM,EAAE,MAAM,EAAE,IAAI,CAAC,OAAO,EAAE,CAAC,CAAC;QACxH,IAAI,CAAC,gBAAgB,CAAC,IAAI,CAAC,IAAI,CAAC,gBAAgB,CAAC,MAAM,CAAC,CAAC;QACzD,6DAA6D;QAC7D,IAAI,CAAC,WAAW,EAAE,CAAC;YACjB,IAAI,CAAC,iBAAiB,GAAG,IAAI,CAAC;QAChC,CAAC;IACH,CAAC;IAED,IAAI;QACF,OAAO,IAAI,CAAC,MAAM,CAAC,MAAM,CAAC;IAC5B,CAAC;IAED,QAAQ,CAAC,IAAY;QACnB,IAAI,IAAI,GAAG,CAAC,IAAI,IAAI,GAAG,IAAI,CAAC,MAAM,CAAC,MAAM,EAAE,CAAC;YAC1C,OAAO,EAAE,CAAC;QACZ,CAAC;QACD,OAAO,IAAI,CAAC,MAAM,CAAC,KAAK,CAAC,IAAI,CAAC,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC;IAC1C,CAAC;IAED,oFAAoF;IACpF,OAAO,CAAC,IAAY;QAClB,IAAI,IAAI,GAAG,CAAC,IAAI,IAAI,GAAG,IAAI,CAAC,MAAM,CAAC,MAAM,EAAE,CAAC;YAC1C,OAAO;QACT,CAAC;QACD,IAAI,CAAC,MAAM,CAAC,MAAM,GAAG,IAAI,CAAC;QAC1B,MAAM,GAAG,GAAG,IAAI,CAAC,UAAU,CAAC,IAAI,GAAG,CAAC,CAAC,CAAC;QACtC,IAAI,GAAG,EAAE,CAAC;YACR,IAAI,CAAC,KAAK,GAAG,GAAG,CAAC,IAAI,CAAC;YACtB,IAAI,CAAC,OAAO,GAAG,GAAG,CAAC,MAAM,CAAC;YAC1B,IAAI,CAAC,SAAS,CAAC,MAAM,GAAG,GAAG,CAAC,QAAQ,CAAC;YACrC,IAAI,CAAC,OAAO,GAAG,GAAG,CAAC,MAAM,CAAC;QAC5B,CAAC;aAAM,CAAC;YACN,IAAI,CAAC,KAAK,GAAG,CAAC,CAAC;YACf,IAAI,CAAC,OAAO,GAAG,CAAC,CAAC;YACjB,IAAI,CAAC,SAAS,CAAC,MAAM,GAAG,CAAC,CAAC;YAC1B,IAAI,CAAC,OAAO,GAAG,CAAC,CAAC;QACnB,CAAC;QACD,IAAI,CAAC,UAAU,CAAC,MAAM,GAAG,IAAI,CAAC;QAC9B,MAAM,WAAW,GAAG,IAAI,CAAC,gBAAgB,CAAC,IAAI,GAAG,CAAC,CAAC,IAAI,CAAC,CAAC;QACzD,IAAI,CAAC,gBAAgB,CAAC,MAAM,GAAG,WAAW,CAAC;QAC3C,IAAI,CAAC,gBAAgB,CAAC,MAAM,GAAG,IAAI,CAAC;IACtC,CAAC;IAED,2EAA2E;IAC3E,OAAO,CAAC,EAAc;QACpB,MAAM,CAAC,GAAG,IAAI,CAAC,IAAI,EAAE,CAAC;QACtB,MAAM,cAAc,GAAG,IAAI,CAAC,SAAS,CAAC,MAAM,CAAC;QAC7C,EAAE,EAAE,CAAC;QACL,MAAM,CAAC,GAAG,IAAI,CAAC,QAAQ,CAAC,CAAC,CAAC,CAAC;QAC3B,uEAAuE;QACvE,MAAM,eAAe,GAAG,IAAI,CAAC,SAAS,CAAC,KAAK,CAAC,cAAc,CAAC,CAAC;QAC7D,IAAI,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC;QAChB,2EAA2E;QAC3E,IAAI,CAAC,iBAAiB,GAAG,eAAe,CAAC,MAAM,GAAG,CAAC,CAAC,CAAC,CAAC,eAAe,CAAC,CAAC,CAAC,IAAI,CAAC;QAC7E,OAAO,CAAC,CAAC;IACX,CAAC;IAED,eAAe,CAAC,EAAc;QAC5B,MAAM,CAAC,GAAG,IAAI,CAAC,IAAI,EAAE,CAAC;QACtB,MAAM,cAAc,GAAG,IAAI,CAAC,SAAS,CAAC,MAAM,CAAC;QAC7C,MAAM,QAAQ,GAAG,IAAI,CAAC,OAAO,CAAC;QAC9B,MAAM,WAAW,GAAG,IAAI,CAAC,gBAAgB,CAAC,MAAM,CAAC;QACjD,EAAE,EAAE,CAAC;QACL,MAAM,IAAI,GAAG,IAAI,CAAC,QAAQ,CAAC,CAAC,CAAC,CAAC;QAC9B,MAAM,MAAM,GAAG,IAAI,CAAC,OAAO,CAAC;QAC5B,MAAM,eAAe,GAAG,IAAI,CAAC,gBAAgB,CAAC,KAAK,CAAC,WAAW,CAAC,CAAC;QACjE,MAAM,eAAe,GAAG,IAAI,CAAC,SAAS,CAAC,KAAK,CAAC,cAAc,CAAC,CAAC;QAC7D,IAAI,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC;QAChB,IAAI,CAAC,iBAAiB,GAAG,eAAe,CAAC,MAAM,GAAG,CAAC,CAAC,CAAC,CAAC,eAAe,CAAC,CAAC,CAAC,IAAI,CAAC;QAE7E,IAAI,aAAa,GAAmB,UAAU,CAAC;QAC/C,IAAI,cAAc,GAAmB,UAAU,CAAC;QAChD,KAAK,MAAM,MAAM,IAAI,eAAe,EAAE,CAAC;YACrC,IAAI,MAAM,CAAC,IAAI,KAAK,KAAK,IAAI,MAAM,CAAC,MAAM,KAAK,QAAQ,EAAE,CAAC;gBACxD,aAAa,GAAG,MAAM,CAAC,MAAM,CAAC;gBAC9B,MAAM;YACR,CAAC;QACH,CAAC;QACD,KAAK,IAAI,CAAC,GAAG,eAAe,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC,IAAI,CAAC,EAAE,CAAC,EAAE,EAAE,CAAC;YACrD,MAAM,MAAM,GAAG,eAAe,CAAC,CAAC,CAAE,CAAC;YACnC,IAAI,MAAM,CAAC,IAAI,KAAK,MAAM,IAAI,MAAM,CAAC,MAAM,KAAK,MAAM,EAAE,CAAC;gBACvD,cAAc,GAAG,MAAM,CAAC,MAAM,CAAC;gBAC/B,MAAM;YACR,CAAC;QACH,CAAC;QACD,OAAO,EAAE,IAAI,EAAE,aAAa,EAAE,cAAc,EAAE,CAAC;IACjD,CAAC;IAED,oBAAoB,CAAC,IAAoB,EAAE,MAAsB;QAC/D,IAAI,CAAC,gBAAgB,CAAC,IAAI,CAAC,EAAE,IAAI,EAAE,MAAM,EAAE,MAAM,EAAE,IAAI,CAAC,OAAO,EAAE,CAAC,CAAC;IACrE,CAAC;IAED,QAAQ;QACN,OAAO,IAAI,CAAC,MAAM,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC;IAC9B,CAAC;IAED,aAAa;QACX,OAAO,IAAI,CAAC;IACd,CAAC;IAED,WAAW;QACT,OAAO,IAAI,CAAC,SAAS,CAAC;IACxB,CAAC;IAED,0BAA0B;IAC1B,oBAAoB;QAClB,OAAO,IAAI,CAAC,kBAAkB,CAAC;IACjC,CAAC;CACF"}
|
|
@@ -0,0 +1,25 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Centralized unwrapping of generated :is() pseudo-selectors when they are
|
|
3
|
+
* the "first visual" selector (leading). Used after ruleset eval and in
|
|
4
|
+
* extend post-processing. Does NOT recurse into pseudo args; callers that
|
|
5
|
+
* need to process pseudo args (e.g. extend) call processLeadingIs for each
|
|
6
|
+
* selector they care about, including args of :is/:where at processing time.
|
|
7
|
+
*/
|
|
8
|
+
import type { Selector } from '../selector.js';
|
|
9
|
+
export type ProcessLeadingIsOptions = {
|
|
10
|
+
/** When true, unwrapping a generated :is(SelectorList) merges its items into the outer list (return array). */
|
|
11
|
+
inSelectorList?: boolean;
|
|
12
|
+
};
|
|
13
|
+
/**
|
|
14
|
+
* Unwrap a generated :is() that is the first visual selector, when safe.
|
|
15
|
+
* - If selector is a SelectorList: process each item with inSelectorList=true; flatten any array returns.
|
|
16
|
+
* - If selector is a single generated :is(): when inSelectorList and arg is SelectorList, return arg.value (array); else return arg.
|
|
17
|
+
* - If first visual component of a CompoundSelector is generated :is (arg not SelectorList): merge :is arg's last part with compound suffix into a new ComplexSelector.
|
|
18
|
+
* - If first visual component of a ComplexSelector is generated :is (arg not SelectorList): unwrap into the complex's components.
|
|
19
|
+
*
|
|
20
|
+
* Does NOT recurse into pseudo-selector args. Only considers the outer selector structure.
|
|
21
|
+
*
|
|
22
|
+
* @returns The processed selector, or an array of selectors when unwrapping :is(SelectorList) in list context (caller merges into list).
|
|
23
|
+
*/
|
|
24
|
+
export declare function processLeadingIs(selector: Selector, options?: ProcessLeadingIsOptions): Selector | Selector[];
|
|
25
|
+
//# sourceMappingURL=process-leading-is.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"process-leading-is.d.ts","sourceRoot":"","sources":["../../../src/tree/util/process-leading-is.ts"],"names":[],"mappings":"AAAA;;;;;;GAMG;AAEH,OAAO,KAAK,EAAE,QAAQ,EAAE,MAAM,gBAAgB,CAAC;AAU/C,MAAM,MAAM,uBAAuB,GAAG;IACpC,+GAA+G;IAC/G,cAAc,CAAC,EAAE,OAAO,CAAC;CAC1B,CAAC;AAEF;;;;;;;;;;GAUG;AACH,wBAAgB,gBAAgB,CAC9B,QAAQ,EAAE,QAAQ,EAClB,OAAO,GAAE,uBAA4B,GACpC,QAAQ,GAAG,QAAQ,EAAE,CAmWvB"}
|
|
@@ -0,0 +1,364 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Centralized unwrapping of generated :is() pseudo-selectors when they are
|
|
3
|
+
* the "first visual" selector (leading). Used after ruleset eval and in
|
|
4
|
+
* extend post-processing. Does NOT recurse into pseudo args; callers that
|
|
5
|
+
* need to process pseudo args (e.g. extend) call processLeadingIs for each
|
|
6
|
+
* selector they care about, including args of :is/:where at processing time.
|
|
7
|
+
*/
|
|
8
|
+
import { SelectorList } from '../selector-list.js';
|
|
9
|
+
import { ComplexSelector } from '../selector-complex.js';
|
|
10
|
+
import { CompoundSelector } from '../selector-compound.js';
|
|
11
|
+
import { F_IMPLICIT_AMPERSAND } from '../node.js';
|
|
12
|
+
import { Nil } from '../nil.js';
|
|
13
|
+
import { isNode } from './is-node.js';
|
|
14
|
+
/**
|
|
15
|
+
* Unwrap a generated :is() that is the first visual selector, when safe.
|
|
16
|
+
* - If selector is a SelectorList: process each item with inSelectorList=true; flatten any array returns.
|
|
17
|
+
* - If selector is a single generated :is(): when inSelectorList and arg is SelectorList, return arg.value (array); else return arg.
|
|
18
|
+
* - If first visual component of a CompoundSelector is generated :is (arg not SelectorList): merge :is arg's last part with compound suffix into a new ComplexSelector.
|
|
19
|
+
* - If first visual component of a ComplexSelector is generated :is (arg not SelectorList): unwrap into the complex's components.
|
|
20
|
+
*
|
|
21
|
+
* Does NOT recurse into pseudo-selector args. Only considers the outer selector structure.
|
|
22
|
+
*
|
|
23
|
+
* @returns The processed selector, or an array of selectors when unwrapping :is(SelectorList) in list context (caller merges into list).
|
|
24
|
+
*/
|
|
25
|
+
export function processLeadingIs(selector, options = {}) {
|
|
26
|
+
const { inSelectorList = false } = options;
|
|
27
|
+
const getFirstVisualIndex = (items) => {
|
|
28
|
+
for (let i = 0; i < items.length; i++) {
|
|
29
|
+
if (!isNode(items[i], 'Combinator')) {
|
|
30
|
+
return i;
|
|
31
|
+
}
|
|
32
|
+
}
|
|
33
|
+
return -1;
|
|
34
|
+
};
|
|
35
|
+
const getImplicitAmpPrefix = (complex) => {
|
|
36
|
+
for (const part of complex.value) {
|
|
37
|
+
if (isNode(part, 'Ampersand') && part.hasFlag(F_IMPLICIT_AMPERSAND)) {
|
|
38
|
+
const resolved = part.getResolvedSelector();
|
|
39
|
+
return resolved && !(resolved instanceof Nil) ? resolved.valueOf() : null;
|
|
40
|
+
}
|
|
41
|
+
}
|
|
42
|
+
return null;
|
|
43
|
+
};
|
|
44
|
+
const hasEscapedQuoted = (node, seen = new Set()) => {
|
|
45
|
+
if (!node || seen.has(node)) {
|
|
46
|
+
return false;
|
|
47
|
+
}
|
|
48
|
+
seen.add(node);
|
|
49
|
+
if (isNode(node, 'Quoted') && Boolean(node.options?.escaped)) {
|
|
50
|
+
return true;
|
|
51
|
+
}
|
|
52
|
+
const value = node.value;
|
|
53
|
+
if (Array.isArray(value)) {
|
|
54
|
+
for (const item of value) {
|
|
55
|
+
if (item && typeof item === 'object' && 'type' in item) {
|
|
56
|
+
if (hasEscapedQuoted(item, seen)) {
|
|
57
|
+
return true;
|
|
58
|
+
}
|
|
59
|
+
}
|
|
60
|
+
}
|
|
61
|
+
return false;
|
|
62
|
+
}
|
|
63
|
+
if (value && typeof value === 'object') {
|
|
64
|
+
for (const item of Object.values(value)) {
|
|
65
|
+
if (item && typeof item === 'object' && 'type' in item) {
|
|
66
|
+
if (hasEscapedQuoted(item, seen)) {
|
|
67
|
+
return true;
|
|
68
|
+
}
|
|
69
|
+
}
|
|
70
|
+
}
|
|
71
|
+
}
|
|
72
|
+
return false;
|
|
73
|
+
};
|
|
74
|
+
const stripImplicitPrefixFromItem = (item, implicitAmpPrefix) => {
|
|
75
|
+
if (!isNode(item, 'ComplexSelector')) {
|
|
76
|
+
return item.copy(true);
|
|
77
|
+
}
|
|
78
|
+
const itemComplex = item;
|
|
79
|
+
const firstVisualIndex = getFirstVisualIndex(itemComplex.value);
|
|
80
|
+
if (firstVisualIndex < 0) {
|
|
81
|
+
return item.copy(true);
|
|
82
|
+
}
|
|
83
|
+
const firstVisual = itemComplex.value[firstVisualIndex];
|
|
84
|
+
if (firstVisual.valueOf() !== implicitAmpPrefix) {
|
|
85
|
+
return item.copy(true);
|
|
86
|
+
}
|
|
87
|
+
let start = firstVisualIndex + 1;
|
|
88
|
+
if (start < itemComplex.value.length && isNode(itemComplex.value[start], 'Combinator')) {
|
|
89
|
+
start++;
|
|
90
|
+
}
|
|
91
|
+
const tail = itemComplex.value.slice(start).map(c => c.copy(true));
|
|
92
|
+
if (tail.length === 1 && !isNode(tail[0], 'Combinator')) {
|
|
93
|
+
return tail[0];
|
|
94
|
+
}
|
|
95
|
+
if (tail.length > 1) {
|
|
96
|
+
return ComplexSelector.create(tail).inherit(itemComplex);
|
|
97
|
+
}
|
|
98
|
+
return item.copy(true);
|
|
99
|
+
};
|
|
100
|
+
// SelectorList: process each item; merge list results (array or SelectorList) into one list.
|
|
101
|
+
if (isNode(selector, 'SelectorList')) {
|
|
102
|
+
const list = selector;
|
|
103
|
+
const out = [];
|
|
104
|
+
let changed = false;
|
|
105
|
+
for (const item of list.value) {
|
|
106
|
+
const result = processLeadingIs(item, { inSelectorList: true });
|
|
107
|
+
if (Array.isArray(result)) {
|
|
108
|
+
out.push(...result);
|
|
109
|
+
changed = true;
|
|
110
|
+
}
|
|
111
|
+
else if (isNode(result, 'SelectorList')) {
|
|
112
|
+
out.push(...result.value.map(s => s.copy(true)));
|
|
113
|
+
changed = true;
|
|
114
|
+
}
|
|
115
|
+
else {
|
|
116
|
+
out.push(result);
|
|
117
|
+
if (result !== item) {
|
|
118
|
+
changed = true;
|
|
119
|
+
}
|
|
120
|
+
}
|
|
121
|
+
}
|
|
122
|
+
if (!changed) {
|
|
123
|
+
return selector;
|
|
124
|
+
}
|
|
125
|
+
if (out.length === 1) {
|
|
126
|
+
return out[0];
|
|
127
|
+
}
|
|
128
|
+
return SelectorList.create(out.map(s => s.copy(true))).inherit(selector);
|
|
129
|
+
}
|
|
130
|
+
// Single PseudoSelector :is, generated
|
|
131
|
+
if (isNode(selector, 'PseudoSelector')) {
|
|
132
|
+
const pseudo = selector;
|
|
133
|
+
if (pseudo.value.name !== ':is' || !pseudo.generated) {
|
|
134
|
+
return selector;
|
|
135
|
+
}
|
|
136
|
+
const arg = pseudo.value.arg;
|
|
137
|
+
if (!arg) {
|
|
138
|
+
return selector;
|
|
139
|
+
}
|
|
140
|
+
if (hasEscapedQuoted(arg)) {
|
|
141
|
+
return selector;
|
|
142
|
+
}
|
|
143
|
+
// :is(SelectorList): in list context merge; else return array for caller to handle
|
|
144
|
+
if (isNode(arg, 'SelectorList')) {
|
|
145
|
+
if (inSelectorList) {
|
|
146
|
+
return arg.value.map(s => s.copy(true));
|
|
147
|
+
}
|
|
148
|
+
// Top-level single :is(SelectorList): unwrap to the list (or single if one item)
|
|
149
|
+
if (arg.value.length === 1) {
|
|
150
|
+
return arg.value[0].copy(true);
|
|
151
|
+
}
|
|
152
|
+
return SelectorList.create(arg.value.map(s => s.copy(true))).inherit(selector);
|
|
153
|
+
}
|
|
154
|
+
// :is(not list): unwrap to the single selector
|
|
155
|
+
return arg.copy(true);
|
|
156
|
+
}
|
|
157
|
+
// CompoundSelector: first component is generated :is (arg not list) → merge suffix into last part of :is, return ComplexSelector.
|
|
158
|
+
// GCD of complex + compound is complex (e.g. parent * b + &[e] → * b[e]), so we unwrap to that shape.
|
|
159
|
+
if (isNode(selector, 'CompoundSelector')) {
|
|
160
|
+
const compound = selector;
|
|
161
|
+
const value = compound.value;
|
|
162
|
+
if (value.length === 0) {
|
|
163
|
+
return selector;
|
|
164
|
+
}
|
|
165
|
+
const first = value[0];
|
|
166
|
+
if (!isNode(first, 'PseudoSelector')
|
|
167
|
+
|| first.value.name !== ':is'
|
|
168
|
+
|| !first.generated) {
|
|
169
|
+
return selector;
|
|
170
|
+
}
|
|
171
|
+
const arg = first.value.arg;
|
|
172
|
+
if (!arg) {
|
|
173
|
+
return selector;
|
|
174
|
+
}
|
|
175
|
+
if (hasEscapedQuoted(arg)) {
|
|
176
|
+
return selector;
|
|
177
|
+
}
|
|
178
|
+
const normalizedArg = isNode(arg, 'SelectorList') && arg.value.length === 1
|
|
179
|
+
? arg.value[0]
|
|
180
|
+
: arg;
|
|
181
|
+
if (isNode(normalizedArg, 'SelectorList')) {
|
|
182
|
+
const suffix = value.slice(1).map(s => s.copy(true));
|
|
183
|
+
if (suffix.length === 0) {
|
|
184
|
+
return SelectorList.create(normalizedArg.value.map(s => s.copy(true))).inherit(selector);
|
|
185
|
+
}
|
|
186
|
+
// Keep :is(list).suffix (e.g. :is(.one,.two).three) as one selector.
|
|
187
|
+
return selector;
|
|
188
|
+
}
|
|
189
|
+
const suffix = value.slice(1).map(s => s.copy(true));
|
|
190
|
+
if (suffix.length === 0) {
|
|
191
|
+
return arg.copy(true);
|
|
192
|
+
}
|
|
193
|
+
// Merge suffix into last component of arg (complex or compound)
|
|
194
|
+
if (isNode(normalizedArg, 'ComplexSelector')) {
|
|
195
|
+
const complex = normalizedArg;
|
|
196
|
+
const comps = complex.value.slice().map(c => c.copy(true));
|
|
197
|
+
for (let i = comps.length - 1; i >= 0; i--) {
|
|
198
|
+
const c = comps[i];
|
|
199
|
+
if (isNode(c, 'Combinator')) {
|
|
200
|
+
continue;
|
|
201
|
+
}
|
|
202
|
+
if (isNode(c, 'CompoundSelector')) {
|
|
203
|
+
const compound = c;
|
|
204
|
+
const newCompound = CompoundSelector.create([
|
|
205
|
+
...compound.value.map(s => s.copy(true)),
|
|
206
|
+
...suffix
|
|
207
|
+
]).inherit(compound);
|
|
208
|
+
comps[i] = newCompound;
|
|
209
|
+
break;
|
|
210
|
+
}
|
|
211
|
+
comps[i] = CompoundSelector.create([
|
|
212
|
+
c.copy(true),
|
|
213
|
+
...suffix
|
|
214
|
+
]);
|
|
215
|
+
break;
|
|
216
|
+
}
|
|
217
|
+
return ComplexSelector.create(comps).inherit(selector);
|
|
218
|
+
}
|
|
219
|
+
if (isNode(normalizedArg, 'CompoundSelector')) {
|
|
220
|
+
const newCompound = normalizedArg.value.slice().map(s => s.copy(true));
|
|
221
|
+
newCompound.push(...suffix);
|
|
222
|
+
return CompoundSelector.create(newCompound).inherit(selector);
|
|
223
|
+
}
|
|
224
|
+
const newCompound = CompoundSelector.create([
|
|
225
|
+
normalizedArg.copy(true),
|
|
226
|
+
...suffix
|
|
227
|
+
]).inherit(selector);
|
|
228
|
+
return ComplexSelector.create([newCompound]).inherit(selector);
|
|
229
|
+
}
|
|
230
|
+
// ComplexSelector: first visual component is generated :is (arg not list) → unwrap into complex
|
|
231
|
+
if (isNode(selector, 'ComplexSelector')) {
|
|
232
|
+
const complex = selector;
|
|
233
|
+
const implicitAmpPrefix = getImplicitAmpPrefix(complex);
|
|
234
|
+
if (implicitAmpPrefix) {
|
|
235
|
+
let changed = false;
|
|
236
|
+
const outComponents = [];
|
|
237
|
+
for (const part of complex.value) {
|
|
238
|
+
if (isNode(part, 'PseudoSelector') && part.value.name === ':is' && part.generated) {
|
|
239
|
+
const arg = part.value.arg;
|
|
240
|
+
if (arg && hasEscapedQuoted(arg)) {
|
|
241
|
+
outComponents.push(part.copy(true));
|
|
242
|
+
continue;
|
|
243
|
+
}
|
|
244
|
+
if (arg && isNode(arg, 'SelectorList')) {
|
|
245
|
+
const normalizedArgs = arg.value.map((item) => {
|
|
246
|
+
const normalized = stripImplicitPrefixFromItem(item, implicitAmpPrefix);
|
|
247
|
+
if (normalized.valueOf() !== item.valueOf()) {
|
|
248
|
+
changed = true;
|
|
249
|
+
}
|
|
250
|
+
return normalized;
|
|
251
|
+
});
|
|
252
|
+
let nonCombinatorCount = 0;
|
|
253
|
+
let hasImplicitAmpPart = false;
|
|
254
|
+
for (const c of complex.value) {
|
|
255
|
+
if (!isNode(c, 'Combinator')) {
|
|
256
|
+
nonCombinatorCount++;
|
|
257
|
+
if (isNode(c, 'Ampersand') && c.hasFlag(F_IMPLICIT_AMPERSAND)) {
|
|
258
|
+
hasImplicitAmpPart = true;
|
|
259
|
+
}
|
|
260
|
+
}
|
|
261
|
+
}
|
|
262
|
+
// `& :is(list)` under collapse should serialize as list headers.
|
|
263
|
+
if (nonCombinatorCount === 2 && hasImplicitAmpPart) {
|
|
264
|
+
return SelectorList.create(normalizedArgs).inherit(selector);
|
|
265
|
+
}
|
|
266
|
+
const list = SelectorList.create(normalizedArgs).inherit(arg);
|
|
267
|
+
outComponents.push(...list.value.map(s => s.copy(true)));
|
|
268
|
+
changed = true;
|
|
269
|
+
continue;
|
|
270
|
+
}
|
|
271
|
+
}
|
|
272
|
+
outComponents.push(part.copy(true));
|
|
273
|
+
}
|
|
274
|
+
if (changed) {
|
|
275
|
+
if (outComponents.length === 1 && !isNode(outComponents[0], 'Combinator')) {
|
|
276
|
+
return outComponents[0];
|
|
277
|
+
}
|
|
278
|
+
return ComplexSelector.create(outComponents).inherit(selector);
|
|
279
|
+
}
|
|
280
|
+
}
|
|
281
|
+
const value = complex.value;
|
|
282
|
+
const firstSelIndex = getFirstVisualIndex(value);
|
|
283
|
+
if (firstSelIndex < 0) {
|
|
284
|
+
return selector;
|
|
285
|
+
}
|
|
286
|
+
const first = value[firstSelIndex];
|
|
287
|
+
if (isNode(first, 'CompoundSelector')
|
|
288
|
+
&& isNode(first.value?.[0], 'PseudoSelector')
|
|
289
|
+
&& (first.value?.[0]).value.name === ':is'
|
|
290
|
+
&& (first.value?.[0]).generated) {
|
|
291
|
+
const unwrappedFirst = processLeadingIs(first, { inSelectorList: false });
|
|
292
|
+
if (!Array.isArray(unwrappedFirst)) {
|
|
293
|
+
const prefix = value
|
|
294
|
+
.slice(0, firstSelIndex)
|
|
295
|
+
.map(c => c.copy(true));
|
|
296
|
+
const rest = value
|
|
297
|
+
.slice(firstSelIndex + 1)
|
|
298
|
+
.map(c => c.copy(true));
|
|
299
|
+
const unwrappedComps = isNode(unwrappedFirst, 'ComplexSelector')
|
|
300
|
+
? unwrappedFirst.value.map(c => c.copy(true))
|
|
301
|
+
: [unwrappedFirst.copy(true)];
|
|
302
|
+
return ComplexSelector.create([
|
|
303
|
+
...prefix,
|
|
304
|
+
...unwrappedComps,
|
|
305
|
+
...rest
|
|
306
|
+
]).inherit(selector);
|
|
307
|
+
}
|
|
308
|
+
}
|
|
309
|
+
if (!isNode(first, 'PseudoSelector')
|
|
310
|
+
|| first.value.name !== ':is'
|
|
311
|
+
|| !first.generated) {
|
|
312
|
+
return selector;
|
|
313
|
+
}
|
|
314
|
+
const arg = first.value.arg;
|
|
315
|
+
if (!arg) {
|
|
316
|
+
return selector;
|
|
317
|
+
}
|
|
318
|
+
if (hasEscapedQuoted(arg)) {
|
|
319
|
+
return selector;
|
|
320
|
+
}
|
|
321
|
+
const normalizedArg = isNode(arg, 'SelectorList') && arg.value.length === 1
|
|
322
|
+
? arg.value[0]
|
|
323
|
+
: arg;
|
|
324
|
+
if (isNode(normalizedArg, 'SelectorList')) {
|
|
325
|
+
const rest = value.slice(firstSelIndex + 1).map(c => c.copy(true));
|
|
326
|
+
// Keep :is(list) when there is a suffix (e.g. :is(.one,.two) .three) so it serializes as one selector.
|
|
327
|
+
if (rest.length > 0) {
|
|
328
|
+
return selector;
|
|
329
|
+
}
|
|
330
|
+
const expanded = normalizedArg.value.map((item) => {
|
|
331
|
+
if (isNode(item, 'ComplexSelector')) {
|
|
332
|
+
return ComplexSelector.create([
|
|
333
|
+
...item.value.map(c => c.copy(true)),
|
|
334
|
+
...rest
|
|
335
|
+
]).inherit(selector);
|
|
336
|
+
}
|
|
337
|
+
if (rest.length === 0) {
|
|
338
|
+
return item.copy(true);
|
|
339
|
+
}
|
|
340
|
+
return ComplexSelector.create([
|
|
341
|
+
item.copy(true),
|
|
342
|
+
...rest
|
|
343
|
+
]).inherit(selector);
|
|
344
|
+
});
|
|
345
|
+
if (expanded.length === 1) {
|
|
346
|
+
return expanded[0];
|
|
347
|
+
}
|
|
348
|
+
return SelectorList.create(expanded).inherit(selector);
|
|
349
|
+
}
|
|
350
|
+
if (isNode(normalizedArg, 'ComplexSelector')) {
|
|
351
|
+
const argComplex = normalizedArg;
|
|
352
|
+
const rest = value.slice(firstSelIndex + 1);
|
|
353
|
+
const argComps = argComplex.value.slice().map(c => c.copy(true));
|
|
354
|
+
const restComps = rest.map(c => c.copy(true));
|
|
355
|
+
const newValue = [...argComps, ...restComps];
|
|
356
|
+
return ComplexSelector.create(newValue).inherit(selector);
|
|
357
|
+
}
|
|
358
|
+
const rest = value.slice(firstSelIndex + 1).map(c => c.copy(true));
|
|
359
|
+
const newValue = [normalizedArg.copy(true), ...rest];
|
|
360
|
+
return ComplexSelector.create(newValue).inherit(selector);
|
|
361
|
+
}
|
|
362
|
+
return selector;
|
|
363
|
+
}
|
|
364
|
+
//# sourceMappingURL=process-leading-is.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"process-leading-is.js","sourceRoot":"","sources":["../../../src/tree/util/process-leading-is.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,15 @@
|
|
|
1
|
+
import type { Call } from '../call.js';
|
|
2
|
+
import type { List } from '../list.js';
|
|
3
|
+
/**
|
|
4
|
+
* This memoizes arguments for a call and returns true
|
|
5
|
+
* if the call has called itself with the same arguments.
|
|
6
|
+
*
|
|
7
|
+
* It lazily indexes the arguments when there's a subsequent
|
|
8
|
+
* call.
|
|
9
|
+
*/
|
|
10
|
+
export declare class CallMap {
|
|
11
|
+
private _callMap;
|
|
12
|
+
add(call: Call, args: List | undefined): boolean;
|
|
13
|
+
delete(call: Call): boolean;
|
|
14
|
+
}
|
|
15
|
+
//# sourceMappingURL=recursion-helper.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"recursion-helper.d.ts","sourceRoot":"","sources":["../../../src/tree/util/recursion-helper.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,IAAI,EAAE,MAAM,YAAY,CAAC;AACvC,OAAO,KAAK,EAAE,IAAI,EAAE,MAAM,YAAY,CAAC;AAIvC;;;;;;GAMG;AACH,qBAAa,OAAO;IAClB,OAAO,CAAC,QAAQ,CAA8C;IAE9D,GAAG,CAAC,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,GAAG,SAAS;IAqBtC,MAAM,CAAC,IAAI,EAAE,IAAI;CAWlB"}
|