koffing 0.5.0 → 1.0.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.
Files changed (64) hide show
  1. package/LICENSE +2 -2
  2. package/README.md +6 -180
  3. package/dist/index.d.ts +106 -0
  4. package/dist/index.js +431 -0
  5. package/dist/index.mjs +400 -0
  6. package/package.json +24 -40
  7. package/Makefile +0 -21
  8. package/build/asset-manifest.json +0 -22
  9. package/build/favicon.png +0 -0
  10. package/build/index.html +0 -1
  11. package/build/precache-manifest.5382b78dea2866c8a94cee003da35d84.js +0 -26
  12. package/build/robots.txt +0 -3
  13. package/build/service-worker.js +0 -39
  14. package/build/static/css/main.102b9840.chunk.css +0 -2
  15. package/build/static/css/main.102b9840.chunk.css.map +0 -1
  16. package/build/static/js/2.4b3dd85a.chunk.js +0 -3
  17. package/build/static/js/2.4b3dd85a.chunk.js.LICENSE.txt +0 -67
  18. package/build/static/js/2.4b3dd85a.chunk.js.map +0 -1
  19. package/build/static/js/main.07f66bec.chunk.js +0 -2
  20. package/build/static/js/main.07f66bec.chunk.js.map +0 -1
  21. package/build/static/js/runtime-main.525bb0ff.js +0 -2
  22. package/build/static/js/runtime-main.525bb0ff.js.map +0 -1
  23. package/public/favicon.png +0 -0
  24. package/public/index.html +0 -30
  25. package/public/robots.txt +0 -3
  26. package/src/App.test.js +0 -9
  27. package/src/components/App.js +0 -18
  28. package/src/components/AppFooter/AppFooter.css.js +0 -12
  29. package/src/components/AppFooter/AppFooter.js +0 -31
  30. package/src/components/AppFooter/index.js +0 -3
  31. package/src/components/AppHeader/AppHeader.css.js +0 -21
  32. package/src/components/AppHeader/AppHeader.js +0 -34
  33. package/src/components/AppHeader/index.js +0 -3
  34. package/src/components/Board/Board.css.js +0 -21
  35. package/src/components/Board/Board.js +0 -110
  36. package/src/components/Board/index.js +0 -3
  37. package/src/components/BoardInput/BoardInput.css.js +0 -14
  38. package/src/components/BoardInput/BoardInput.js +0 -36
  39. package/src/components/BoardInput/index.js +0 -3
  40. package/src/components/BoardOutput/BoardOutput.css.js +0 -17
  41. package/src/components/BoardOutput/BoardOutput.js +0 -36
  42. package/src/components/BoardOutput/index.js +0 -3
  43. package/src/components/Code/Code.css.js +0 -10
  44. package/src/components/Code/Code.js +0 -28
  45. package/src/components/Code/index.js +0 -3
  46. package/src/components/StyledComponent.js +0 -24
  47. package/src/components/ThemedApp.js +0 -25
  48. package/src/core/Koffing.js +0 -71
  49. package/src/core/Pokemon.js +0 -181
  50. package/src/core/PokemonTeam.js +0 -78
  51. package/src/core/PokemonTeamSet.js +0 -52
  52. package/src/core/ShowdownParser.js +0 -280
  53. package/src/core/index.js +0 -7
  54. package/src/img/koffing-shiny.png +0 -0
  55. package/src/img/koffing.png +0 -0
  56. package/src/index.css +0 -42
  57. package/src/index.js +0 -17
  58. package/src/serviceWorker.js +0 -141
  59. package/src/setupTests.js +0 -5
  60. package/src/teams/example.koffing.js +0 -25
  61. package/src/tools/base64.js +0 -25
  62. package/src/tools/history.js +0 -17
  63. package/src/tools/index.js +0 -4
  64. package/src/variables.json +0 -5
package/dist/index.mjs ADDED
@@ -0,0 +1,400 @@
1
+ // src/Pokemon.ts
2
+ var POKEMON_STAT_NAMES = ["HP", "Atk", "Def", "SpA", "SpD", "Spe"];
3
+ var Pokemon = class {
4
+ constructor() {
5
+ this.moves = [];
6
+ }
7
+ static fromObject(obj) {
8
+ const p = new Pokemon();
9
+ p.name = obj.name;
10
+ p.nickname = obj.nickname;
11
+ p.gender = obj.gender;
12
+ p.item = obj.item;
13
+ p.ability = obj.ability;
14
+ p.level = obj.level;
15
+ p.shiny = obj.shiny;
16
+ p.happiness = obj.happiness;
17
+ p.nature = obj.nature;
18
+ p.evs = obj.evs;
19
+ p.ivs = obj.ivs;
20
+ p.teraType = obj.teraType;
21
+ p.dynamaxLevel = obj.dynamaxLevel;
22
+ p.gigantamax = obj.gigantamax;
23
+ p.pokeball = obj.pokeball;
24
+ p.moves = Array.isArray(obj.moves) ? obj.moves : [];
25
+ return p;
26
+ }
27
+ toJson(indentation = 2) {
28
+ return JSON.stringify(this, null, indentation);
29
+ }
30
+ toShowdown() {
31
+ let str = "";
32
+ if (this.nickname) {
33
+ str += `${this.nickname} (${this.name})`;
34
+ } else {
35
+ str += `${this.name}`;
36
+ }
37
+ if (this.gender && this.gender.match(/^[MF]$/i)) {
38
+ str += ` (${this.gender.toUpperCase()})`;
39
+ }
40
+ if (this.item) {
41
+ str += ` @ ${this.item}`;
42
+ }
43
+ str += "\n";
44
+ if (this.ability) {
45
+ str += `Ability: ${this.ability}
46
+ `;
47
+ }
48
+ if (!Number.isNaN(this.level)) {
49
+ str += `Level: ${this.level}
50
+ `;
51
+ }
52
+ if (this.shiny === true) {
53
+ str += `Shiny: Yes
54
+ `;
55
+ }
56
+ if (!Number.isNaN(this.happiness)) {
57
+ str += `Happiness: ${this.happiness}
58
+ `;
59
+ }
60
+ if (this.pokeball) {
61
+ str += `Pokeball: ${this.pokeball}
62
+ `;
63
+ }
64
+ if (!Number.isNaN(this.dynamaxLevel)) {
65
+ str += `Dynamax Level: ${this.dynamaxLevel}
66
+ `;
67
+ }
68
+ if (this.gigantamax === true) {
69
+ str += `Gigantamax: Yes
70
+ `;
71
+ }
72
+ if (this.teraType) {
73
+ str += `Tera Type: ${this.teraType}
74
+ `;
75
+ }
76
+ if (this.evs) {
77
+ const evs = this.evs;
78
+ str += `EVs: ` + POKEMON_STAT_NAMES.filter(function(prop) {
79
+ return !isNaN(evs[prop.toLowerCase()]);
80
+ }).map(function(prop) {
81
+ const val = evs[prop.toLowerCase()];
82
+ return `${val} ${prop}`;
83
+ }).join(" / ") + "\n";
84
+ }
85
+ if (this.nature) {
86
+ str += `${this.nature} Nature
87
+ `;
88
+ }
89
+ if (this.ivs) {
90
+ const ivs = this.ivs;
91
+ str += `IVs: ` + POKEMON_STAT_NAMES.filter(function(prop) {
92
+ return !isNaN(ivs[prop.toLowerCase()]);
93
+ }).map(function(prop) {
94
+ const val = ivs[prop.toLowerCase()];
95
+ return `${val} ${prop}`;
96
+ }).join(" / ") + "\n";
97
+ }
98
+ if (this.moves) {
99
+ str += this.moves.map(function(move) {
100
+ return `- ${move}`;
101
+ }).join("\n") + "\n";
102
+ }
103
+ return str.trim();
104
+ }
105
+ toString() {
106
+ return this.toShowdown();
107
+ }
108
+ };
109
+
110
+ // src/PokemonTeam.ts
111
+ var PokemonTeam = class {
112
+ constructor(format = "gen9", name = "Untitled", folder = void 0) {
113
+ this.pokemon = [];
114
+ this.name = name;
115
+ this.format = format;
116
+ this.folder = folder;
117
+ }
118
+ static fromObject(obj) {
119
+ const team = new PokemonTeam();
120
+ team.name = obj.name;
121
+ team.format = obj.format;
122
+ team.folder = obj.folder;
123
+ team.pokemon = obj.pokemon ? obj.pokemon.map(function(pokemon) {
124
+ return Pokemon.fromObject(pokemon);
125
+ }) : [];
126
+ return team;
127
+ }
128
+ toJson(indentation = 2) {
129
+ return JSON.stringify(this, null, indentation);
130
+ }
131
+ toShowdown() {
132
+ const name = this.folder ? `${this.folder}/${this.name}` : this.name;
133
+ let str = `=== [${this.format}] ${name} ===
134
+
135
+ `;
136
+ str += this.pokemon.map(function(p) {
137
+ return p.toString();
138
+ }).join("\n\n");
139
+ return str.trim();
140
+ }
141
+ toString() {
142
+ return this.toShowdown();
143
+ }
144
+ };
145
+
146
+ // src/PokemonTeamSet.ts
147
+ var PokemonTeamSet = class {
148
+ constructor(teams = []) {
149
+ this.teams = teams;
150
+ }
151
+ static fromObject(obj) {
152
+ const teamSet = new PokemonTeamSet();
153
+ teamSet.teams = obj.teams ? obj.teams.map(function(team) {
154
+ return PokemonTeam.fromObject(team);
155
+ }) : [];
156
+ return teamSet;
157
+ }
158
+ toJson(indentation = 2) {
159
+ return JSON.stringify(this, null, indentation);
160
+ }
161
+ toShowdown() {
162
+ return this.teams.map(function(p) {
163
+ return p.toString();
164
+ }).join("\n\n").trim();
165
+ }
166
+ toString() {
167
+ return this.toShowdown();
168
+ }
169
+ };
170
+
171
+ // src/ShowdownParser.ts
172
+ var clamp = (num, min, max) => {
173
+ if (Number.isNaN(num)) {
174
+ return min;
175
+ }
176
+ return Math.min(Math.max(num, min), max);
177
+ };
178
+ var _ShowdownParser = class {
179
+ constructor(code) {
180
+ this.code = code.toString().trim();
181
+ }
182
+ parse() {
183
+ const regexes = _ShowdownParser.regexes;
184
+ const teams = [];
185
+ const current = {
186
+ team: null,
187
+ pokemon: null
188
+ };
189
+ const lines = this.code.trim().split("\n").map(function(line) {
190
+ return line.trim();
191
+ });
192
+ lines.forEach((line) => {
193
+ if (line.match(regexes.team)) {
194
+ current.team = new PokemonTeam();
195
+ this._parseTeam(line, current.team);
196
+ teams.push(current.team);
197
+ return;
198
+ }
199
+ if (line === "" || line.match(/^[- ]+$/)) {
200
+ this._saveCurrent(teams, current);
201
+ return;
202
+ }
203
+ if (!current.pokemon) {
204
+ current.pokemon = new Pokemon();
205
+ this._parseNameLine(line, current.pokemon);
206
+ return;
207
+ }
208
+ if (this._parseKeyValuePairs(line, current.pokemon)) {
209
+ return;
210
+ }
211
+ if (this._parseEvsIvs(line, current.pokemon)) {
212
+ return;
213
+ }
214
+ if (current.pokemon.moves.length < 4 && line.match(regexes.move)) {
215
+ const moveMatches = regexes.move.exec(line);
216
+ if (moveMatches !== null) {
217
+ current.pokemon.moves.push(moveMatches[1].trim());
218
+ }
219
+ }
220
+ });
221
+ this._saveCurrent(teams, current);
222
+ return new PokemonTeamSet(teams);
223
+ }
224
+ _parseTeam(line, team) {
225
+ const rg = _ShowdownParser.regexes;
226
+ const teamDataMatches = rg.team.exec(line);
227
+ if (teamDataMatches && teamDataMatches.length >= 2) {
228
+ const teamNames = teamDataMatches[2].split("/");
229
+ let teamName, teamFolder;
230
+ if (teamNames.length > 1) {
231
+ teamFolder = teamNames.shift();
232
+ teamName = teamNames.join("/");
233
+ } else {
234
+ teamName = teamDataMatches[2];
235
+ }
236
+ team.format = teamDataMatches[1].trim();
237
+ team.name = teamName.trim();
238
+ team.folder = teamFolder ? teamFolder.trim() : void 0;
239
+ }
240
+ }
241
+ _parseNameLine(line, pokemon) {
242
+ const rg = _ShowdownParser.regexes;
243
+ if (line.match(rg.nickname_name)) {
244
+ const nameMatches = rg.nickname_name.exec(line);
245
+ if (nameMatches) {
246
+ pokemon.nickname = nameMatches[1].trim();
247
+ pokemon.name = nameMatches[2].trim();
248
+ }
249
+ } else if (line.match(rg.name)) {
250
+ const nameMatches = rg.name.exec(line);
251
+ if (nameMatches) {
252
+ pokemon.name = nameMatches[1].trim();
253
+ }
254
+ }
255
+ if (line.match(rg.gender)) {
256
+ const genderMatches = rg.gender.exec(line);
257
+ if (genderMatches) {
258
+ pokemon.gender = genderMatches[1].toUpperCase().trim();
259
+ }
260
+ }
261
+ if (line.match(rg.item)) {
262
+ const itemMatches = rg.item.exec(line);
263
+ if (itemMatches) {
264
+ pokemon.item = itemMatches[1].trim();
265
+ }
266
+ }
267
+ }
268
+ _parseEvsIvs(line, pokemon) {
269
+ const rg = _ShowdownParser.regexes;
270
+ if (line.match(rg.eivs)) {
271
+ const data = rg.eivs.exec(line);
272
+ if (data === null) {
273
+ return false;
274
+ }
275
+ const prop = data[1].toLowerCase();
276
+ const values = data[2].split("/");
277
+ const limit = prop === "evs" ? 255 : 31;
278
+ values.forEach(function(stat) {
279
+ const statData = rg.eivs_value.exec(stat.trim().toLowerCase());
280
+ if (!statData) {
281
+ console.error("Invalid syntax for " + prop + ": " + stat);
282
+ return;
283
+ }
284
+ if (!pokemon[prop]) {
285
+ pokemon[prop] = {};
286
+ }
287
+ pokemon[prop][statData[2]] = clamp(parseInt(statData[1]), 0, limit);
288
+ });
289
+ return true;
290
+ }
291
+ return false;
292
+ }
293
+ _parseKeyValuePairs(line, pokemon) {
294
+ const propNames = [
295
+ "nature",
296
+ "ability",
297
+ "level",
298
+ "shiny",
299
+ "happiness",
300
+ "pokeball",
301
+ "dynamaxLevel",
302
+ "gigantamax",
303
+ "teraType"
304
+ ];
305
+ return propNames.some(function(key) {
306
+ const matches = _ShowdownParser.regexes[key].exec(line);
307
+ if (matches === null) {
308
+ return false;
309
+ }
310
+ let value = matches[1].trim();
311
+ if (key === "happiness") {
312
+ value = clamp(parseInt(value), 0, 255);
313
+ } else if (key === "level") {
314
+ value = clamp(parseInt(value), 1, 100);
315
+ } else if (key === "dynamaxLevel") {
316
+ value = clamp(parseInt(value), 0, 10);
317
+ } else if (key.match(/^(shiny|gigantamax)$/i)) {
318
+ value = value.match(/yes/i) !== null ? true : void 0;
319
+ }
320
+ pokemon[key] = value;
321
+ return true;
322
+ });
323
+ }
324
+ _saveCurrent(teams, current) {
325
+ if (!current.team) {
326
+ current.team = new PokemonTeam();
327
+ teams.push(current.team);
328
+ }
329
+ if (current.pokemon) {
330
+ current.team.pokemon.push(current.pokemon);
331
+ current.pokemon = null;
332
+ }
333
+ return this;
334
+ }
335
+ format() {
336
+ this.code = this.parse().toString();
337
+ return this;
338
+ }
339
+ toString() {
340
+ return this.code;
341
+ }
342
+ };
343
+ var ShowdownParser = _ShowdownParser;
344
+ ShowdownParser.regexes = {
345
+ team: /^===\s+\[(.*)\]\s+(.*)\s+===$/,
346
+ nickname_name: /^([^()=@]*)\s+\(([^()=@]{2,})\)/i,
347
+ name: /^([^()=@]{2,})/i,
348
+ gender: /\((F|M)\)/i,
349
+ item: /@\s?(.*)$/i,
350
+ eivs: /^([EI]Vs):\s?(.*)$/i,
351
+ eivs_value: /^([0-9]+)\s+(hp|atk|def|spa|spd|spe)$/i,
352
+ move: /^[-~]\s?(.*)$/i,
353
+ nature: /^(.*)\s+Nature$/,
354
+ ability: /^(?:Ability|Trait):\s?(.*)$/i,
355
+ level: /^Level:\s?([0-9]{1,3})$/i,
356
+ shiny: /^Shiny:\s?(Yes|No)$/i,
357
+ happiness: /^(?:Happiness|Friendship):\s?([0-9]{1,3})$/i,
358
+ pokeball: /^(?:Pokeball|Ball):\s?(.*)$/i,
359
+ dynamaxLevel: /^Dynamax Level:\s?([0-9]{1,2})$/i,
360
+ gigantamax: /^Gigantamax:\s?(Yes|No)$/i,
361
+ teraType: /^Tera Type:\s?(.*)$/i
362
+ };
363
+
364
+ // src/Koffing.ts
365
+ var Koffing = class {
366
+ static parse(data) {
367
+ if (data instanceof PokemonTeamSet || data instanceof PokemonTeam || data instanceof Pokemon) {
368
+ return data;
369
+ }
370
+ if (data instanceof ShowdownParser) {
371
+ return data.parse();
372
+ }
373
+ return new ShowdownParser(data).parse();
374
+ }
375
+ static format(data) {
376
+ return this.parse(data).toShowdown();
377
+ }
378
+ static toJson(data) {
379
+ return this.parse(data).toJson();
380
+ }
381
+ static toShowdown(data) {
382
+ if (data instanceof PokemonTeamSet || data instanceof PokemonTeam || data instanceof Pokemon) {
383
+ return data.toShowdown();
384
+ }
385
+ if (data instanceof ShowdownParser) {
386
+ return data.parse().toShowdown();
387
+ }
388
+ if (typeof data === "string") {
389
+ data = JSON.parse(data);
390
+ }
391
+ return PokemonTeamSet.fromObject(data).toShowdown();
392
+ }
393
+ };
394
+ export {
395
+ Koffing,
396
+ Pokemon,
397
+ PokemonTeam,
398
+ PokemonTeamSet,
399
+ ShowdownParser
400
+ };
package/package.json CHANGED
@@ -1,52 +1,36 @@
1
1
  {
2
2
  "name": "koffing",
3
- "version": "0.5.0",
3
+ "version": "1.0.0",
4
4
  "repository": {
5
5
  "url": "https://github.com/itsjavi/koffing",
6
6
  "type": "git"
7
7
  },
8
- "homepage": "/koffing",
8
+ "main": "./dist/index.js",
9
+ "types": "./dist/index.d.ts",
10
+ "module": "./dist/index.mjs",
9
11
  "license": "MIT",
10
- "dependencies": {
11
- "@material-ui/core": "^4.11.0",
12
- "@material-ui/styles": "^4.10.0",
13
- "@testing-library/jest-dom": "^4.2.4",
14
- "@testing-library/react": "^9.3.2",
15
- "@testing-library/user-event": "^7.1.2",
16
- "prop-types": "^15.7.2",
17
- "qrcode.react": "^1.0.0",
18
- "react": "^16.13.1",
19
- "react-dom": "^16.13.1",
20
- "react-scripts": "3.4.3"
21
- },
12
+ "files": [
13
+ "./dist/*",
14
+ "README.md",
15
+ "LICENSE"
16
+ ],
22
17
  "scripts": {
23
- "start": "react-scripts start",
24
- "build": "react-scripts build",
25
- "test": "react-scripts test",
26
- "eject": "react-scripts eject",
27
- "deploy": "make gh-pages"
28
- },
29
- "eslintConfig": {
30
- "extends": "react-app"
31
- },
32
- "browserslist": {
33
- "production": [
34
- ">0.2%",
35
- "not dead",
36
- "not op_mini all"
37
- ],
38
- "development": [
39
- "last 1 chrome version",
40
- "last 1 firefox version",
41
- "last 1 safari version"
42
- ]
43
- },
44
- "ghPagesDeploy": {
45
- "repository": "git@github.com:itsjavi/koffing.git",
46
- "directory": "build",
47
- "commitMessage": "update gh-pages build"
18
+ "dev": "tsup src/index.ts --format=esm,cjs --watch --dts --external react",
19
+ "lint": "TIMING=1 eslint \"**/*.ts*\"",
20
+ "lint:ci": "yarn run lint",
21
+ "build": "tsup src/index.ts --format=esm,cjs --dts --external react",
22
+ "build:ci": "yarn run build",
23
+ "test": "jest --verbose --coverage --coverageDirectory=.coverage",
24
+ "test:ci": "jest --runInBand --ci --coverage --coverageDirectory=.coverage"
48
25
  },
49
26
  "devDependencies": {
50
- "gh-pages-publish": "https://github.com/itsjavi/node-gh-pages-deploy#1.2.0"
27
+ "@packages/preset-eslint": "workspace:^",
28
+ "@packages/preset-prettier": "workspace:^",
29
+ "@packages/preset-ts": "workspace:^",
30
+ "@types/jest": "^29.2.3",
31
+ "jest": "^29.3.1",
32
+ "ts-jest": "^29.0.3",
33
+ "tsup": "^6.5.0",
34
+ "typescript": "^4.9.4"
51
35
  }
52
36
  }
package/Makefile DELETED
@@ -1,21 +0,0 @@
1
- default:build
2
-
3
- clean:
4
- rm -rf ./build
5
-
6
- build:
7
- yarn build
8
-
9
- audit-fix:
10
- rm -rf package-lock.json ./node_modules
11
- npm i --package-lock-only
12
- npm audit fix
13
- rm -f yarn.lock
14
- yarn import
15
- rm -f package-lock.json
16
-
17
- gh-pages: build
18
- npx gh-pages-publish
19
-
20
- $(V).SILENT:
21
- .PHONY: build
@@ -1,22 +0,0 @@
1
- {
2
- "files": {
3
- "main.css": "/koffing/static/css/main.102b9840.chunk.css",
4
- "main.js": "/koffing/static/js/main.07f66bec.chunk.js",
5
- "main.js.map": "/koffing/static/js/main.07f66bec.chunk.js.map",
6
- "runtime-main.js": "/koffing/static/js/runtime-main.525bb0ff.js",
7
- "runtime-main.js.map": "/koffing/static/js/runtime-main.525bb0ff.js.map",
8
- "static/js/2.4b3dd85a.chunk.js": "/koffing/static/js/2.4b3dd85a.chunk.js",
9
- "static/js/2.4b3dd85a.chunk.js.map": "/koffing/static/js/2.4b3dd85a.chunk.js.map",
10
- "index.html": "/koffing/index.html",
11
- "precache-manifest.5382b78dea2866c8a94cee003da35d84.js": "/koffing/precache-manifest.5382b78dea2866c8a94cee003da35d84.js",
12
- "service-worker.js": "/koffing/service-worker.js",
13
- "static/css/main.102b9840.chunk.css.map": "/koffing/static/css/main.102b9840.chunk.css.map",
14
- "static/js/2.4b3dd85a.chunk.js.LICENSE.txt": "/koffing/static/js/2.4b3dd85a.chunk.js.LICENSE.txt"
15
- },
16
- "entrypoints": [
17
- "static/js/runtime-main.525bb0ff.js",
18
- "static/js/2.4b3dd85a.chunk.js",
19
- "static/css/main.102b9840.chunk.css",
20
- "static/js/main.07f66bec.chunk.js"
21
- ]
22
- }
package/build/favicon.png DELETED
Binary file
package/build/index.html DELETED
@@ -1 +0,0 @@
1
- <!doctype html><html lang="en"><head><meta charset="utf-8"/><meta name="viewport" content="width=device-width,initial-scale=1"/><meta name="theme-color" content="#000000"/><title>Koffing - Pokemon Showdown Team parser | Online Pokemon Showdown Team parser</title><link rel="shortcut icon" type="image/png" href="/koffing/favicon.png"/><script async src="https://www.googletagmanager.com/gtag/js?id=UA-85082661-2"></script><script>function gtag(){dataLayer.push(arguments)}window.dataLayer=window.dataLayer||[],gtag("js",new Date),gtag("config","UA-85082661-2")</script><link rel="stylesheet" href="https://fonts.googleapis.com/css?family=Exo+2:300,400,500"><link href="https://use.fontawesome.com/releases/v5.14.0/css/all.css" rel="stylesheet"><link href="/koffing/static/css/main.102b9840.chunk.css" rel="stylesheet"></head><body><noscript>You need to enable JavaScript and a modern browser to run this app.</noscript><div id="root"></div><script>!function(e){function r(r){for(var n,f,i=r[0],l=r[1],a=r[2],c=0,s=[];c<i.length;c++)f=i[c],Object.prototype.hasOwnProperty.call(o,f)&&o[f]&&s.push(o[f][0]),o[f]=0;for(n in l)Object.prototype.hasOwnProperty.call(l,n)&&(e[n]=l[n]);for(p&&p(r);s.length;)s.shift()();return u.push.apply(u,a||[]),t()}function t(){for(var e,r=0;r<u.length;r++){for(var t=u[r],n=!0,i=1;i<t.length;i++){var l=t[i];0!==o[l]&&(n=!1)}n&&(u.splice(r--,1),e=f(f.s=t[0]))}return e}var n={},o={1:0},u=[];function f(r){if(n[r])return n[r].exports;var t=n[r]={i:r,l:!1,exports:{}};return e[r].call(t.exports,t,t.exports,f),t.l=!0,t.exports}f.m=e,f.c=n,f.d=function(e,r,t){f.o(e,r)||Object.defineProperty(e,r,{enumerable:!0,get:t})},f.r=function(e){"undefined"!=typeof Symbol&&Symbol.toStringTag&&Object.defineProperty(e,Symbol.toStringTag,{value:"Module"}),Object.defineProperty(e,"__esModule",{value:!0})},f.t=function(e,r){if(1&r&&(e=f(e)),8&r)return e;if(4&r&&"object"==typeof e&&e&&e.__esModule)return e;var t=Object.create(null);if(f.r(t),Object.defineProperty(t,"default",{enumerable:!0,value:e}),2&r&&"string"!=typeof e)for(var n in e)f.d(t,n,function(r){return e[r]}.bind(null,n));return t},f.n=function(e){var r=e&&e.__esModule?function(){return e.default}:function(){return e};return f.d(r,"a",r),r},f.o=function(e,r){return Object.prototype.hasOwnProperty.call(e,r)},f.p="/koffing/";var i=this.webpackJsonpkoffing=this.webpackJsonpkoffing||[],l=i.push.bind(i);i.push=r,i=i.slice();for(var a=0;a<i.length;a++)r(i[a]);var p=l;t()}([])</script><script src="/koffing/static/js/2.4b3dd85a.chunk.js"></script><script src="/koffing/static/js/main.07f66bec.chunk.js"></script></body></html>
@@ -1,26 +0,0 @@
1
- self.__precacheManifest = (self.__precacheManifest || []).concat([
2
- {
3
- "revision": "98f25614ba5fe5e04f1e0233a92a26c7",
4
- "url": "/koffing/index.html"
5
- },
6
- {
7
- "revision": "c500eb4a5760ca0bb4bc",
8
- "url": "/koffing/static/css/main.102b9840.chunk.css"
9
- },
10
- {
11
- "revision": "a3524f4864f51e0ac239",
12
- "url": "/koffing/static/js/2.4b3dd85a.chunk.js"
13
- },
14
- {
15
- "revision": "3f0e7270d9361d86cdedbbc2d6ca185f",
16
- "url": "/koffing/static/js/2.4b3dd85a.chunk.js.LICENSE.txt"
17
- },
18
- {
19
- "revision": "c500eb4a5760ca0bb4bc",
20
- "url": "/koffing/static/js/main.07f66bec.chunk.js"
21
- },
22
- {
23
- "revision": "95c593fd36946693659b",
24
- "url": "/koffing/static/js/runtime-main.525bb0ff.js"
25
- }
26
- ]);
package/build/robots.txt DELETED
@@ -1,3 +0,0 @@
1
- # https://www.robotstxt.org/robotstxt.html
2
- User-agent: *
3
- Disallow:
@@ -1,39 +0,0 @@
1
- /**
2
- * Welcome to your Workbox-powered service worker!
3
- *
4
- * You'll need to register this file in your web app and you should
5
- * disable HTTP caching for this file too.
6
- * See https://goo.gl/nhQhGp
7
- *
8
- * The rest of the code is auto-generated. Please don't update this file
9
- * directly; instead, make changes to your Workbox build configuration
10
- * and re-run your build process.
11
- * See https://goo.gl/2aRDsh
12
- */
13
-
14
- importScripts("https://storage.googleapis.com/workbox-cdn/releases/4.3.1/workbox-sw.js");
15
-
16
- importScripts(
17
- "/koffing/precache-manifest.5382b78dea2866c8a94cee003da35d84.js"
18
- );
19
-
20
- self.addEventListener('message', (event) => {
21
- if (event.data && event.data.type === 'SKIP_WAITING') {
22
- self.skipWaiting();
23
- }
24
- });
25
-
26
- workbox.core.clientsClaim();
27
-
28
- /**
29
- * The workboxSW.precacheAndRoute() method efficiently caches and responds to
30
- * requests for URLs in the manifest.
31
- * See https://goo.gl/S9QRab
32
- */
33
- self.__precacheManifest = [].concat(self.__precacheManifest || []);
34
- workbox.precaching.precacheAndRoute(self.__precacheManifest, {});
35
-
36
- workbox.routing.registerNavigationRoute(workbox.precaching.getCacheKeyForURL("/koffing/index.html"), {
37
-
38
- blacklist: [/^\/_/,/\/[^/?]+\.[^/]+$/],
39
- });
@@ -1,2 +0,0 @@
1
- html{box-sizing:border-box;-webkit-font-smoothing:antialiased;-moz-osx-font-smoothing:grayscale}*,:after,:before{box-sizing:inherit}body{margin:0;background-color:#fafafa}@media print{body{background-color:#fff}}a{color:#6b71b8}.koffing-sprite{-webkit-animation-name:koffing-animation;animation-name:koffing-animation;-webkit-animation-duration:.7s;animation-duration:.7s;-webkit-animation-iteration-count:infinite;animation-iteration-count:infinite;-webkit-animation-direction:alternate;animation-direction:alternate;-webkit-animation-timing-function:ease-in-out;animation-timing-function:ease-in-out}@-webkit-keyframes koffing-animation{0%{-webkit-transform:translate(0);transform:translate(0)}to{-webkit-transform:translate(-2px,-3px);transform:translate(-2px,-3px)}}@keyframes koffing-animation{0%{-webkit-transform:translate(0);transform:translate(0)}to{-webkit-transform:translate(-2px,-3px);transform:translate(-2px,-3px)}}
2
- /*# sourceMappingURL=main.102b9840.chunk.css.map */
@@ -1 +0,0 @@
1
- {"version":3,"sources":["index.css"],"names":[],"mappings":"AAAA,KACE,qBAAsB,CACtB,kCAAmC,CACnC,iCACF,CAEA,iBACE,kBACF,CAEA,KACE,QAAS,CACT,wBACF,CAEA,aACE,KACE,qBACF,CACF,CAEA,EACE,aACF,CAEA,gBACE,wCAAiC,CAAjC,gCAAiC,CACjC,8BAAyB,CAAzB,sBAAyB,CACzB,0CAAmC,CAAnC,kCAAmC,CACnC,qCAA8B,CAA9B,6BAA8B,CAC9B,6CAAsC,CAAtC,qCACF,CAGA,qCACE,GACE,8BAA8B,CAA9B,sBACF,CACA,GACE,sCAAgC,CAAhC,8BACF,CACF,CAPA,6BACE,GACE,8BAA8B,CAA9B,sBACF,CACA,GACE,sCAAgC,CAAhC,8BACF,CACF","file":"main.102b9840.chunk.css","sourcesContent":["html {\n box-sizing: border-box;\n -webkit-font-smoothing: antialiased;\n -moz-osx-font-smoothing: grayscale;\n}\n\n*, *::before, *::after {\n box-sizing: inherit;\n}\n\nbody {\n margin: 0;\n background-color: #fafafa;\n}\n\n@media print {\n body {\n background-color: #fff;\n }\n}\n\na {\n color: #6B71B8;\n}\n\n.koffing-sprite {\n animation-name: koffing-animation;\n animation-duration: 700ms;\n animation-iteration-count: infinite;\n animation-direction: alternate;\n animation-timing-function: ease-in-out;\n}\n\n/* Standard syntax */\n@keyframes koffing-animation {\n 0% {\n transform: translate(0px, 0px);\n }\n 100% {\n transform: translate(-2px, -3px);\n }\n}\n"]}