@tailwindcss-obfuscator/core 1.0.3 → 1.0.4

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.
@@ -93,36 +93,45 @@ function findClassStrings(code) {
93
93
  }
94
94
 
95
95
  // src/generate-class-names.ts
96
+ var HASH_INIT = 5381;
97
+ var HASH_MULT_1 = 33;
98
+ var HASH_MULT_2 = 37;
99
+ function hashString64(str) {
100
+ let h1 = HASH_INIT;
101
+ let h2 = HASH_INIT;
102
+ for (let i = 0;i < str.length; i += 1) {
103
+ const c = str.charCodeAt(i);
104
+ h1 = h1 * HASH_MULT_1 + c | 0;
105
+ h2 = h2 * HASH_MULT_2 + c | 0;
106
+ }
107
+ return BigInt(h1 >>> 0) << 32n | BigInt(h2 >>> 0);
108
+ }
109
+ function bigintToLetters(num, alphabet) {
110
+ let result = "";
111
+ let n = num;
112
+ const base = BigInt(alphabet.length);
113
+ do {
114
+ const r = Number(n % base);
115
+ result = alphabet[r] + result;
116
+ n /= base;
117
+ } while (n > 0n);
118
+ return result;
119
+ }
120
+
96
121
  class Obfuscator {
97
- counter = 0;
98
122
  map = new Map;
99
123
  prefix;
100
124
  alphabet = "abcdefghijklmnopqrstuvwxyz";
101
125
  constructor(prefix = "az") {
102
126
  this.prefix = prefix;
103
127
  }
104
- numberToLetters(num) {
105
- let result = "";
106
- let n = num;
107
- const base = this.alphabet.length;
108
- do {
109
- result = this.alphabet[n % base] + result;
110
- n = Math.floor(n / base);
111
- } while (n > 0);
112
- return result;
113
- }
114
- generateCode() {
115
- const letters = this.numberToLetters(this.counter);
116
- const code = letters.padStart(2, "a");
117
- this.counter += 1;
118
- return this.prefix + code;
119
- }
120
128
  getObfuscatedClass(originalClass) {
121
129
  const existing = this.map.get(originalClass);
122
130
  if (existing !== undefined) {
123
131
  return existing;
124
132
  }
125
- const obfuscated = this.generateCode();
133
+ const letters = bigintToLetters(hashString64(originalClass), this.alphabet).padStart(2, "a");
134
+ const obfuscated = this.prefix + letters;
126
135
  this.map.set(originalClass, obfuscated);
127
136
  return obfuscated;
128
137
  }
@@ -130,11 +139,9 @@ class Obfuscator {
130
139
  return new Map(this.map);
131
140
  }
132
141
  reset() {
133
- this.counter = 0;
134
142
  this.map.clear();
135
143
  }
136
144
  }
137
-
138
145
  // src/apply-class-names.ts
139
146
  var RE_WHITESPACE = /\s+/;
140
147
  function stripEscapeSequence(str) {
@@ -1,14 +1,13 @@
1
- export type ClassMap = Map<string, string>;
2
- export declare class Obfuscator {
3
- private counter;
1
+ type ClassMap = Map<string, string>;
2
+ declare class Obfuscator {
4
3
  private readonly map;
5
4
  private readonly prefix;
6
5
  private readonly alphabet;
7
6
  constructor(prefix?: string);
8
- private numberToLetters;
9
- private generateCode;
10
7
  getObfuscatedClass(originalClass: string): string;
11
8
  getMap(): ClassMap;
12
9
  reset(): void;
13
10
  }
11
+ export type { ClassMap };
12
+ export { Obfuscator };
14
13
  //# sourceMappingURL=generate-class-names.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"generate-class-names.d.ts","sourceRoot":"","sources":["../src/generate-class-names.ts"],"names":[],"mappings":"AAAA,MAAM,MAAM,QAAQ,GAAG,GAAG,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC;AAE3C,qBAAa,UAAU;IACtB,OAAO,CAAC,OAAO,CAAK;IACpB,OAAO,CAAC,QAAQ,CAAC,GAAG,CAAuB;IAC3C,OAAO,CAAC,QAAQ,CAAC,MAAM,CAAS;IAChC,OAAO,CAAC,QAAQ,CAAC,QAAQ,CAAgC;gBAE7C,MAAM,SAAO;IAIzB,OAAO,CAAC,eAAe;IAavB,OAAO,CAAC,YAAY;IAOpB,kBAAkB,CAAC,aAAa,EAAE,MAAM,GAAG,MAAM;IAWjD,MAAM,IAAI,QAAQ;IAIlB,KAAK,IAAI,IAAI;CAIb"}
1
+ {"version":3,"file":"generate-class-names.d.ts","sourceRoot":"","sources":["../src/generate-class-names.ts"],"names":[],"mappings":"AAAA,KAAK,QAAQ,GAAG,GAAG,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC;AAoCpC,cAAM,UAAU;IACf,OAAO,CAAC,QAAQ,CAAC,GAAG,CAAuB;IAC3C,OAAO,CAAC,QAAQ,CAAC,MAAM,CAAS;IAChC,OAAO,CAAC,QAAQ,CAAC,QAAQ,CAAgC;gBAE7C,MAAM,SAAO;IAIzB,kBAAkB,CAAC,aAAa,EAAE,MAAM,GAAG,MAAM;IAejD,MAAM,IAAI,QAAQ;IAIlB,KAAK,IAAI,IAAI;CAGb;AAED,YAAY,EAAE,QAAQ,EAAE,CAAC;AACzB,OAAO,EAAE,UAAU,EAAE,CAAC"}
@@ -1,34 +1,43 @@
1
1
  // src/generate-class-names.ts
2
+ var HASH_INIT = 5381;
3
+ var HASH_MULT_1 = 33;
4
+ var HASH_MULT_2 = 37;
5
+ function hashString64(str) {
6
+ let h1 = HASH_INIT;
7
+ let h2 = HASH_INIT;
8
+ for (let i = 0;i < str.length; i += 1) {
9
+ const c = str.charCodeAt(i);
10
+ h1 = h1 * HASH_MULT_1 + c | 0;
11
+ h2 = h2 * HASH_MULT_2 + c | 0;
12
+ }
13
+ return BigInt(h1 >>> 0) << 32n | BigInt(h2 >>> 0);
14
+ }
15
+ function bigintToLetters(num, alphabet) {
16
+ let result = "";
17
+ let n = num;
18
+ const base = BigInt(alphabet.length);
19
+ do {
20
+ const r = Number(n % base);
21
+ result = alphabet[r] + result;
22
+ n /= base;
23
+ } while (n > 0n);
24
+ return result;
25
+ }
26
+
2
27
  class Obfuscator {
3
- counter = 0;
4
28
  map = new Map;
5
29
  prefix;
6
30
  alphabet = "abcdefghijklmnopqrstuvwxyz";
7
31
  constructor(prefix = "az") {
8
32
  this.prefix = prefix;
9
33
  }
10
- numberToLetters(num) {
11
- let result = "";
12
- let n = num;
13
- const base = this.alphabet.length;
14
- do {
15
- result = this.alphabet[n % base] + result;
16
- n = Math.floor(n / base);
17
- } while (n > 0);
18
- return result;
19
- }
20
- generateCode() {
21
- const letters = this.numberToLetters(this.counter);
22
- const code = letters.padStart(2, "a");
23
- this.counter += 1;
24
- return this.prefix + code;
25
- }
26
34
  getObfuscatedClass(originalClass) {
27
35
  const existing = this.map.get(originalClass);
28
36
  if (existing !== undefined) {
29
37
  return existing;
30
38
  }
31
- const obfuscated = this.generateCode();
39
+ const letters = bigintToLetters(hashString64(originalClass), this.alphabet).padStart(2, "a");
40
+ const obfuscated = this.prefix + letters;
32
41
  this.map.set(originalClass, obfuscated);
33
42
  return obfuscated;
34
43
  }
@@ -36,7 +45,6 @@ class Obfuscator {
36
45
  return new Map(this.map);
37
46
  }
38
47
  reset() {
39
- this.counter = 0;
40
48
  this.map.clear();
41
49
  }
42
50
  }
package/package.json CHANGED
@@ -20,5 +20,5 @@
20
20
  },
21
21
  "type": "module",
22
22
  "types": "./dist/apply-class-names.d.ts",
23
- "version": "1.0.3"
23
+ "version": "1.0.4"
24
24
  }