Skip to content

Commit b96e31a

Browse files
authored
feat: remove deprecated prefix option (#115)
BREAKING CHANGE: remove deprecated `prefix` option fix #106
1 parent f127a15 commit b96e31a

File tree

3 files changed

+1
-53
lines changed

3 files changed

+1
-53
lines changed

README.md

-14
Original file line numberDiff line numberDiff line change
@@ -110,20 +110,6 @@ b("element", { mod1: true, mod2: true });
110110
//=> "block__element block__element--mod1 block__element--mod2"
111111
```
112112

113-
### `prefix = ""`
114-
115-
**[DEPRECATED]**: Please use `namespace` and `namespaceDelimiter`.
116-
117-
```ts
118-
const b = block("block", { prefix: "pre---" });
119-
120-
b();
121-
//=> "pre---block"
122-
123-
b("element", { mod1: true, mod2: true });
124-
//=> "pre---block__element pre---block__element--mod1 pre---block__element--mod2"
125-
```
126-
127113
### `setup()`
128114

129115
Change default options.

index.ts

+1-14
Original file line numberDiff line numberDiff line change
@@ -3,15 +3,13 @@ const defaults = {
33
modifierDelimiter: "--",
44
namespace: "",
55
namespaceDelimiter: "-",
6-
prefix: "",
76
};
87

98
export function setup(options: {
109
elementDelimiter?: string;
1110
modifierDelimiter?: string;
1211
namespace?: string;
1312
namespaceDelimiter?: string;
14-
prefix?: string;
1513
}) {
1614
if (typeof options.elementDelimiter === "string") {
1715
defaults.elementDelimiter = options.elementDelimiter;
@@ -25,9 +23,6 @@ export function setup(options: {
2523
if (typeof options.namespaceDelimiter === "string") {
2624
defaults.namespaceDelimiter = options.namespaceDelimiter;
2725
}
28-
if (typeof options.prefix === "string") {
29-
defaults.prefix = options.prefix;
30-
}
3126
}
3227

3328
type Modifiers = {
@@ -41,18 +36,10 @@ export default function bem(
4136
modifierDelimiter = defaults.modifierDelimiter,
4237
namespace = defaults.namespace,
4338
namespaceDelimiter = defaults.namespaceDelimiter,
44-
prefix = defaults.prefix,
4539
} = {}
4640
) {
47-
if (namespace && prefix) {
48-
throw new TypeError(
49-
`prefix('${prefix}') is deprecated. Use namespace('${namespace}') instead.`
50-
);
51-
}
52-
5341
const nsDelim = namespace ? namespaceDelimiter : "";
54-
const pre = prefix || `${namespace}${nsDelim}`;
55-
const baseBlock = `${pre}${block}`;
42+
const baseBlock = `${namespace}${nsDelim}${block}`;
5643

5744
return function bemBlock(elementOrModifiers?: string | Modifiers, modifiers?: Modifiers) {
5845
let base = baseBlock;

test.ts

-25
Original file line numberDiff line numberDiff line change
@@ -74,18 +74,6 @@ const testCases = [
7474
"block__element block__element--mod1 block__element--mod2",
7575
],
7676
},
77-
{
78-
description: "`prefix` option",
79-
tested: () => block("block", { prefix: "pre---" }),
80-
expectations: [
81-
"pre---block",
82-
"pre---block pre---block--mod1",
83-
"pre---block pre---block--mod1 pre---block--mod2",
84-
"pre---block__element",
85-
"pre---block__element pre---block__element--mod1",
86-
"pre---block__element pre---block__element--mod1 pre---block__element--mod2",
87-
],
88-
},
8977
{
9078
description: "`setup()`",
9179
tested: () => {
@@ -152,13 +140,6 @@ testCases.forEach(({ description, tested, expectations }) => {
152140
});
153141
});
154142

155-
test("`namespace` and `prefix` at the same time", assert => {
156-
const fn = () => block("block", { namespace: "ns", prefix: "pre" });
157-
assert.throws(fn, TypeError);
158-
assert.throws(fn, "prefix('pre') is deprecated. Use namespace('ns') instead.");
159-
assert.end();
160-
});
161-
162143
// `setup()` test must be at last
163144
test("`setup()` additional case", t => {
164145
t.test("overrides options which was setup", assert => {
@@ -180,10 +161,4 @@ test("`setup()` additional case", t => {
180161
);
181162
assert.end();
182163
});
183-
184-
t.test("`prefix` option [deprecated]", assert => {
185-
setup({ prefix: "pre:", namespace: "" });
186-
assert.is(block("block")("element", { mod: true }), "pre:block_element pre:block_element-mod");
187-
assert.end();
188-
});
189164
});

0 commit comments

Comments
 (0)