Skip to content

Commit 2e10800

Browse files
committed
feat: Require Analyzers to provide optimizationOptions hash.
1 parent bb1ee37 commit 2e10800

File tree

16 files changed

+107
-88
lines changed

16 files changed

+107
-88
lines changed

packages/css-blocks/src/Analyzer/Analysis.ts

Lines changed: 2 additions & 22 deletions
Original file line numberDiff line numberDiff line change
@@ -9,7 +9,6 @@ import {
99
SerializedTemplateInfo,
1010
TemplateAnalysis as OptimizationTemplateAnalysis,
1111
TemplateInfoFactory,
12-
TemplateIntegrationOptions,
1312
TemplateTypes,
1413
} from "@opticss/template-api";
1514
import { ObjectDictionary, objectValues } from "@opticss/util";
@@ -137,25 +136,6 @@ export class Analysis<K extends keyof TemplateTypes> {
137136
return c;
138137
}
139138

140-
/**
141-
* Get either the owner Analyzer's optimization options, or a default set of options.
142-
*/
143-
optimizationOptions(): TemplateIntegrationOptions {
144-
// TODO: Optimization options must be handled / propagated better.
145-
return this.parent ? this.parent.optimizationOptions : {
146-
rewriteIdents: {
147-
id: false,
148-
class: true,
149-
omitIdents: {
150-
id: [],
151-
class: [],
152-
},
153-
},
154-
analyzedAttributes: ["class"],
155-
analyzedTagnames: false,
156-
};
157-
}
158-
159139
/**
160140
* Get an Element by ID.
161141
*/
@@ -391,10 +371,10 @@ export class Analysis<K extends keyof TemplateTypes> {
391371
return analysis;
392372
}
393373

394-
forOptimizer(opts: ResolvedConfiguration): OptimizationTemplateAnalysis<K> {
374+
forOptimizer(config: ResolvedConfiguration): OptimizationTemplateAnalysis<K> {
395375
let optAnalysis = new OptimizationTemplateAnalysis<K>(this.template);
396376
for (let element of this.elements.values()) {
397-
let result = element.forOptimizer(opts);
377+
let result = element.forOptimizer(config);
398378
optAnalysis.elements.push(result[0]);
399379
}
400380
return optAnalysis;

packages/css-blocks/src/Analyzer/Analyzer.ts

Lines changed: 3 additions & 17 deletions
Original file line numberDiff line numberDiff line change
@@ -20,19 +20,6 @@ import { TemplateValidatorOptions } from "./validations";
2020

2121
const debug = debugGenerator("css-blocks:analyzer");
2222

23-
const DEFAULT_FEATURES = {
24-
rewriteIdents: {
25-
id: false,
26-
class: true,
27-
omitIdents: {
28-
id: [],
29-
class: [],
30-
},
31-
},
32-
analyzedAttributes: ["class"],
33-
analyzedTagnames: false,
34-
};
35-
3623
export interface AnalysisOptions {
3724
validations?: TemplateValidatorOptions;
3825
features?: TemplateIntegrationOptions;
@@ -46,7 +33,6 @@ export abstract class Analyzer<K extends keyof TemplateTypes> {
4633
public readonly blockFactory: BlockFactory;
4734

4835
public readonly validatorOptions: TemplateValidatorOptions;
49-
public readonly optimizationOptions: TemplateIntegrationOptions;
5036
public readonly cssBlocksOptions: ResolvedConfiguration;
5137

5238
protected analysisMap: Map<string, Analysis<K>>;
@@ -59,14 +45,14 @@ export abstract class Analyzer<K extends keyof TemplateTypes> {
5945
) {
6046
this.cssBlocksOptions = resolveConfiguration(options);
6147
this.validatorOptions = analysisOpts && analysisOpts.validations || {};
62-
this.optimizationOptions = analysisOpts && analysisOpts.features || DEFAULT_FEATURES;
6348
this.blockFactory = new BlockFactory(this.cssBlocksOptions);
6449
this.analysisMap = new Map();
6550
this.staticStyles = new MultiMap();
6651
this.dynamicStyles = new MultiMap();
6752
}
6853

6954
abstract analyze(...entryPoints: string[]): Promise<Analyzer<K>>;
55+
abstract get optimizationOptions(): TemplateIntegrationOptions;
7056

7157
// TODO: We don't really want to burn the world here.
7258
// We need more targeted Analysis / BlockFactory invalidation.
@@ -134,10 +120,10 @@ export abstract class Analyzer<K extends keyof TemplateTypes> {
134120
return { analyses };
135121
}
136122

137-
forOptimizer(opts: ResolvedConfiguration): OptimizationAnalysis<K>[] {
123+
forOptimizer(config: ResolvedConfiguration): OptimizationAnalysis<K>[] {
138124
let analyses = new Array<OptimizationAnalysis<K>>();
139125
this.eachAnalysis(a => {
140-
analyses.push(a.forOptimizer(opts));
126+
analyses.push(a.forOptimizer(config));
141127
});
142128
return analyses;
143129
}

packages/css-blocks/test/opticss-test.ts

Lines changed: 14 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -79,6 +79,20 @@ export class TemplateAnalysisTests {
7979
return this;
8080
});
8181
}
82+
get optimizationOptions() {
83+
return {
84+
rewriteIdents: {
85+
id: false,
86+
class: true,
87+
omitIdents: {
88+
id: [],
89+
class: [],
90+
},
91+
},
92+
analyzedAttributes: ["class"],
93+
analyzedTagnames: false,
94+
};
95+
}
8296
}
8397
let analyzer = new TestAnalyzer();
8498
return analyzer.analyze().then(async (analyzer: TestAnalyzer) => {

packages/css-blocks/test/template-analysis-test.ts

Lines changed: 2 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -4,22 +4,19 @@ import { assert } from "chai";
44
import { skip, suite, test } from "mocha-typescript";
55
import * as postcss from "postcss";
66

7-
import { Analyzer, ElementAnalysis, SerializedAnalysis } from "../src/Analyzer";
7+
import { ElementAnalysis, SerializedAnalysis } from "../src/Analyzer";
88
import { BlockFactory } from "../src/BlockParser";
99
import { Attribute, AttrValue, Block, BlockClass } from "../src/BlockTree";
1010
import { Options, resolveConfiguration } from "../src/configuration";
1111
import * as cssBlocks from "../src/errors";
1212

13+
import { TestAnalyzer } from "./util/TestAnalyzer";
1314
import { assertParseError } from "./util/assertError";
1415
import { setupImporting } from "./util/setupImporting";
1516

1617
type TestElement = ElementAnalysis<null, null, null>;
1718
type TemplateType = "Opticss.Template";
1819

19-
class TestAnalyzer extends Analyzer<"Opticss.Template"> {
20-
analyze() { return Promise.resolve(this); }
21-
}
22-
2320
type BlockAndRoot = [Block, postcss.Container];
2421

2522
@suite("Template Analysis")
Lines changed: 19 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,19 @@
1+
import { Analyzer } from "../../src/Analyzer";
2+
3+
export class TestAnalyzer extends Analyzer<"Opticss.Template"> {
4+
analyze() { return Promise.resolve(this); }
5+
get optimizationOptions() {
6+
return {
7+
rewriteIdents: {
8+
id: false,
9+
class: true,
10+
omitIdents: {
11+
id: [],
12+
class: [],
13+
},
14+
},
15+
analyzedAttributes: ["class"],
16+
analyzedTagnames: false,
17+
};
18+
}
19+
}

packages/css-blocks/test/validations/attribute-group-validator-test.ts

Lines changed: 2 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -3,19 +3,15 @@ import { assert } from "chai";
33
import { suite, test } from "mocha-typescript";
44
import * as postcss from "postcss";
55

6-
import { Analyzer } from "../../src/Analyzer";
76
import { BlockFactory } from "../../src/BlockParser";
87
import { Block } from "../../src/BlockTree";
98
import { Options, resolveConfiguration } from "../../src/configuration";
109
import * as cssBlocks from "../../src/errors";
10+
import { TestAnalyzer } from "../util/TestAnalyzer";
11+
import { assertParseError } from "../util/assertError";
1112
import { setupImporting } from "../util/setupImporting";
1213

13-
import { assertParseError } from "./../util/assertError";
14-
1514
type BlockAndRoot = [Block, postcss.Container];
16-
class TestAnalyzer extends Analyzer<"Opticss.Template"> {
17-
analyze() { return Promise.resolve(this); }
18-
}
1915

2016
@suite("Attribute Group Validator")
2117
export class TemplateAnalysisTests {

packages/css-blocks/test/validations/attribute-parent-validator-test.ts

Lines changed: 1 addition & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -3,19 +3,16 @@ import { assert } from "chai";
33
import { suite, test } from "mocha-typescript";
44
import * as postcss from "postcss";
55

6-
import { Analyzer } from "../../src/Analyzer";
76
import { BlockFactory } from "../../src/BlockParser";
87
import { Block, BlockClass } from "../../src/BlockTree";
98
import { Options, resolveConfiguration } from "../../src/configuration";
109
import * as cssBlocks from "../../src/errors";
1110

11+
import { TestAnalyzer } from "../util/TestAnalyzer";
1212
import { assertParseError } from "../util/assertError";
1313
import { setupImporting } from "../util/setupImporting";
1414

1515
type BlockAndRoot = [Block, postcss.Container];
16-
class TestAnalyzer extends Analyzer<"Opticss.Template"> {
17-
analyze() { return Promise.resolve(this); }
18-
}
1916

2017
@suite("State Parent Validator")
2118
export class TemplateAnalysisTests {

packages/css-blocks/test/validations/class-pairs-validator-test.ts

Lines changed: 2 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -2,17 +2,15 @@ import { Template } from "@opticss/template-api";
22
import { suite, test } from "mocha-typescript";
33
import * as postcss from "postcss";
44

5-
import { Analyzer } from "../../src/Analyzer";
65
import { BlockFactory } from "../../src/BlockParser";
76
import { Block } from "../../src/BlockTree";
87
import { Options, resolveConfiguration } from "../../src/configuration";
98
import * as cssBlocks from "../../src/errors";
9+
10+
import { TestAnalyzer } from "../util/TestAnalyzer";
1011
import { assertParseError } from "../util/assertError";
1112

1213
type BlockAndRoot = [Block, postcss.Container];
13-
class TestAnalyzer extends Analyzer<"Opticss.Template"> {
14-
analyze() { return Promise.resolve(this); }
15-
}
1614

1715
@suite("Class Pairs Validator")
1816
export class TemplateAnalysisTests {

packages/css-blocks/test/validations/property-conflict-validator-test.ts

Lines changed: 1 addition & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -3,20 +3,17 @@ import { assert } from "chai";
33
import { suite, test } from "mocha-typescript";
44
import * as postcss from "postcss";
55

6-
import { Analyzer } from "../../src/Analyzer";
76
import { BlockFactory } from "../../src/BlockParser";
87
import { AttrValue, Block, BlockClass, isAttrValue, isBlockClass } from "../../src/BlockTree";
98
import { Options, resolveConfiguration } from "../../src/configuration";
109
import { CssBlockError, TemplateAnalysisError } from "../../src/errors";
1110

1211
import { MockImportRegistry } from "../util/MockImportRegistry";
12+
import { TestAnalyzer } from "../util/TestAnalyzer";
1313
import { assertParseError } from "../util/assertError";
1414
import { indented } from "../util/indented";
1515

1616
type BlockAndRoot = [Block, postcss.Container];
17-
class TestAnalyzer extends Analyzer<"Opticss.Template"> {
18-
analyze() { return Promise.resolve(this); }
19-
}
2017

2118
@suite("Property Conflict Validator")
2219
export class TemplateAnalysisTests {

packages/css-blocks/test/validations/root-class-validator-test.ts

Lines changed: 4 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -3,19 +3,17 @@ import { assert } from "chai";
33
import { suite, test } from "mocha-typescript";
44
import * as postcss from "postcss";
55

6-
import { Analyzer, SerializedAnalysis } from "../../src/Analyzer";
6+
import { SerializedAnalysis } from "../../src/Analyzer";
77
import { BlockFactory } from "../../src/BlockParser";
88
import { Block } from "../../src/BlockTree";
99
import { Options, resolveConfiguration } from "../../src/configuration";
1010
import * as cssBlocks from "../../src/errors";
1111

12-
import { MockImportRegistry } from "./../util/MockImportRegistry";
13-
import { assertParseError } from "./../util/assertError";
12+
import { MockImportRegistry } from "../util/MockImportRegistry";
13+
import { TestAnalyzer } from "../util/TestAnalyzer";
14+
import { assertParseError } from "../util/assertError";
1415

1516
type BlockAndRoot = [Block, postcss.Container];
16-
class TestAnalyzer extends Analyzer<"Opticss.Template"> {
17-
analyze() { return Promise.resolve(this); }
18-
}
1917

2018
@suite("Root Class Validator")
2119
export class AnalysisTests {

0 commit comments

Comments
 (0)