@iconify/tools 1.3.17 → 2.0.0-dev.2

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 (147) hide show
  1. package/.editorconfig +13 -0
  2. package/.eslintignore +2 -0
  3. package/lib/colors/attribs.d.ts +16 -0
  4. package/lib/colors/attribs.js +26 -0
  5. package/lib/colors/attribs.mjs +28 -0
  6. package/lib/colors/parse.d.ts +37 -0
  7. package/lib/colors/parse.js +261 -0
  8. package/lib/colors/parse.mjs +212 -0
  9. package/lib/css/parse.d.ts +4 -0
  10. package/lib/css/parse.js +23 -0
  11. package/lib/css/parse.mjs +20 -0
  12. package/lib/css/parser/error.d.ts +11 -0
  13. package/lib/css/parser/error.js +27 -0
  14. package/lib/css/parser/error.mjs +23 -0
  15. package/lib/css/parser/export.d.ts +5 -0
  16. package/lib/css/parser/export.js +69 -0
  17. package/lib/css/parser/export.mjs +46 -0
  18. package/lib/css/parser/strings.d.ts +13 -0
  19. package/lib/css/parser/strings.js +93 -0
  20. package/lib/css/parser/strings.mjs +74 -0
  21. package/lib/css/parser/text.d.ts +17 -0
  22. package/lib/css/parser/text.js +174 -0
  23. package/lib/css/parser/text.mjs +133 -0
  24. package/lib/css/parser/tokens.d.ts +6 -0
  25. package/lib/css/parser/tokens.js +200 -0
  26. package/lib/css/parser/tokens.mjs +186 -0
  27. package/lib/css/parser/tree.d.ts +5 -0
  28. package/lib/css/parser/tree.js +44 -0
  29. package/lib/css/parser/tree.mjs +40 -0
  30. package/lib/css/parser/types.d.ts +51 -0
  31. package/lib/css/parser/types.js +2 -0
  32. package/lib/css/parser/types.mjs +0 -0
  33. package/lib/icon-set/index.d.ts +134 -0
  34. package/lib/icon-set/index.js +776 -0
  35. package/lib/icon-set/index.mjs +617 -0
  36. package/lib/icon-set/match.d.ts +6 -0
  37. package/lib/icon-set/match.js +66 -0
  38. package/lib/icon-set/match.mjs +55 -0
  39. package/lib/icon-set/merge.d.ts +5 -0
  40. package/lib/icon-set/merge.js +91 -0
  41. package/lib/icon-set/merge.mjs +75 -0
  42. package/lib/icon-set/props.d.ts +10 -0
  43. package/lib/icon-set/props.js +33 -0
  44. package/lib/icon-set/props.mjs +25 -0
  45. package/lib/icon-set/types.d.ts +68 -0
  46. package/lib/icon-set/types.js +2 -0
  47. package/lib/icon-set/types.mjs +0 -0
  48. package/lib/import/directory.d.ts +35 -0
  49. package/lib/import/directory.js +59 -0
  50. package/lib/import/directory.mjs +47 -0
  51. package/lib/misc/keyword.d.ts +4 -0
  52. package/lib/misc/keyword.js +31 -0
  53. package/lib/misc/keyword.mjs +17 -0
  54. package/lib/misc/scan.d.ts +24 -0
  55. package/lib/misc/scan.js +48 -0
  56. package/lib/misc/scan.mjs +43 -0
  57. package/lib/optimise/flags.d.ts +5 -0
  58. package/lib/optimise/flags.js +303 -0
  59. package/lib/optimise/flags.mjs +241 -0
  60. package/lib/optimise/scale.d.ts +5 -0
  61. package/lib/optimise/scale.js +42 -0
  62. package/lib/optimise/scale.mjs +22 -0
  63. package/lib/optimise/svgo.d.ts +27 -0
  64. package/lib/optimise/svgo.js +88 -0
  65. package/lib/optimise/svgo.mjs +75 -0
  66. package/lib/svg/cleanup/attribs.d.ts +5 -0
  67. package/lib/svg/cleanup/attribs.js +43 -0
  68. package/lib/svg/cleanup/attribs.mjs +36 -0
  69. package/lib/svg/cleanup/bad-tags.d.ts +5 -0
  70. package/lib/svg/cleanup/bad-tags.js +69 -0
  71. package/lib/svg/cleanup/bad-tags.mjs +68 -0
  72. package/lib/svg/cleanup/inline-style.d.ts +5 -0
  73. package/lib/svg/cleanup/inline-style.js +77 -0
  74. package/lib/svg/cleanup/inline-style.mjs +65 -0
  75. package/lib/svg/cleanup/root-svg.d.ts +5 -0
  76. package/lib/svg/cleanup/root-svg.js +106 -0
  77. package/lib/svg/cleanup/root-svg.mjs +88 -0
  78. package/lib/svg/cleanup/svgo-style.d.ts +5 -0
  79. package/lib/svg/cleanup/svgo-style.js +35 -0
  80. package/lib/svg/cleanup/svgo-style.mjs +29 -0
  81. package/lib/svg/cleanup.d.ts +5 -0
  82. package/lib/svg/cleanup.js +24 -0
  83. package/lib/svg/cleanup.mjs +16 -0
  84. package/lib/svg/data/attributes.d.ts +71 -0
  85. package/lib/svg/data/attributes.js +403 -0
  86. package/lib/svg/data/attributes.mjs +352 -0
  87. package/lib/svg/data/tags.d.ts +89 -0
  88. package/lib/svg/data/tags.js +185 -0
  89. package/lib/svg/data/tags.mjs +136 -0
  90. package/lib/svg/index.d.ts +33 -0
  91. package/lib/svg/index.js +122 -0
  92. package/lib/svg/index.mjs +85 -0
  93. package/lib/svg/parse-style.d.ts +40 -0
  94. package/lib/svg/parse-style.js +131 -0
  95. package/lib/svg/parse-style.mjs +109 -0
  96. package/lib/svg/parse.d.ts +30 -0
  97. package/lib/svg/parse.js +49 -0
  98. package/lib/svg/parse.mjs +40 -0
  99. package/package.json +167 -13
  100. package/README.md +0 -576
  101. package/license.txt +0 -21
  102. package/sample/parse.js +0 -74
  103. package/sample/source/icon-close.svg +0 -15
  104. package/sample/source/icon-confirm.svg +0 -14
  105. package/sample/source/icon-search.svg +0 -16
  106. package/src/collection.js +0 -641
  107. package/src/colors/change_palette.js +0 -227
  108. package/src/colors/get_palette.js +0 -143
  109. package/src/colors/opacify.js +0 -195
  110. package/src/export/component.js +0 -482
  111. package/src/export/dir.js +0 -109
  112. package/src/export/json.js +0 -329
  113. package/src/export/phantomjs.js +0 -76
  114. package/src/export/phantomjs_script.js +0 -125
  115. package/src/export/png.js +0 -193
  116. package/src/export/svg.js +0 -55
  117. package/src/export/templates/component.md +0 -79
  118. package/src/export/templates/info.md +0 -3
  119. package/src/export/templates/sample-react-1.md +0 -21
  120. package/src/export/templates/sample-react-2.md +0 -15
  121. package/src/export/templates/sample-react.md +0 -11
  122. package/src/export/templates/sample-svelte.md +0 -11
  123. package/src/export/templates/sample-svelte1.md +0 -22
  124. package/src/export/templates/sample-svelte2.md +0 -13
  125. package/src/export/templates/sample-vue-0.md +0 -30
  126. package/src/export/templates/sample-vue-1.md +0 -25
  127. package/src/export/templates/sample-vue-2.md +0 -27
  128. package/src/export/templates/sample-vue.md +0 -28
  129. package/src/helpers.js +0 -43
  130. package/src/import/dir.js +0 -234
  131. package/src/import/font.js +0 -402
  132. package/src/import/json.js +0 -200
  133. package/src/import/svg.js +0 -60
  134. package/src/import/web_icons.js +0 -248
  135. package/src/modules.js +0 -50
  136. package/src/optimize/crop.js +0 -554
  137. package/src/optimize/crop_script.js +0 -525
  138. package/src/optimize/flags.js +0 -430
  139. package/src/optimize/scale.js +0 -72
  140. package/src/optimize/svgo.js +0 -161
  141. package/src/optimize/tags.js +0 -522
  142. package/src/shapes/convert.js +0 -264
  143. package/src/shapes/index.js +0 -135
  144. package/src/shapes/length.js +0 -707
  145. package/src/shapes/length_script.js +0 -105
  146. package/src/shapes/options.js +0 -60
  147. package/src/svg.js +0 -162
@@ -0,0 +1,49 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.parseSVG = void 0;
4
+ /**
5
+ * Parse SVG
6
+ *
7
+ * This function finds all elements in SVG and calls callback for each element.
8
+ * Callback can be asynchronous.
9
+ */
10
+ async function parseSVG(svg, callback) {
11
+ async function checkNode(element, parents) {
12
+ if (element.type !== 'tag') {
13
+ return;
14
+ }
15
+ const $element = cheerio(element);
16
+ const tagName = element.tagName;
17
+ const item = {
18
+ tagName,
19
+ element,
20
+ $element,
21
+ svg,
22
+ parents,
23
+ testChildren: true,
24
+ removeNode: false,
25
+ };
26
+ // Run callback
27
+ const result = callback(item);
28
+ if (result instanceof Promise) {
29
+ await result;
30
+ }
31
+ // Test child nodes
32
+ const newParents = parents.slice(0);
33
+ newParents.unshift(item);
34
+ if (tagName !== 'style' && item.testChildren && !item.removeNode) {
35
+ const children = $element.children().toArray();
36
+ for (let i = 0; i < children.length; i++) {
37
+ await checkNode(children[i], newParents);
38
+ }
39
+ }
40
+ // Remove node
41
+ if (item.removeNode) {
42
+ $element.remove();
43
+ }
44
+ }
45
+ const cheerio = svg.$svg;
46
+ const $root = svg.$svg(':root');
47
+ await checkNode($root.get(0), []);
48
+ }
49
+ exports.parseSVG = parseSVG;
@@ -0,0 +1,40 @@
1
+ // src/svg/parse.ts
2
+ async function parseSVG(svg, callback) {
3
+ async function checkNode(element, parents) {
4
+ if (element.type !== "tag") {
5
+ return;
6
+ }
7
+ const $element = cheerio(element);
8
+ const tagName = element.tagName;
9
+ const item = {
10
+ tagName,
11
+ element,
12
+ $element,
13
+ svg,
14
+ parents,
15
+ testChildren: true,
16
+ removeNode: false
17
+ };
18
+ const result = callback(item);
19
+ if (result instanceof Promise) {
20
+ await result;
21
+ }
22
+ const newParents = parents.slice(0);
23
+ newParents.unshift(item);
24
+ if (tagName !== "style" && item.testChildren && !item.removeNode) {
25
+ const children = $element.children().toArray();
26
+ for (let i = 0; i < children.length; i++) {
27
+ await checkNode(children[i], newParents);
28
+ }
29
+ }
30
+ if (item.removeNode) {
31
+ $element.remove();
32
+ }
33
+ }
34
+ const cheerio = svg.$svg;
35
+ const $root = svg.$svg(":root");
36
+ await checkNode($root.get(0), []);
37
+ }
38
+ export {
39
+ parseSVG
40
+ };
package/package.json CHANGED
@@ -2,28 +2,182 @@
2
2
  "name": "@iconify/tools",
3
3
  "description": "Collection of functions for cleaning up and parsing SVG for Iconify project",
4
4
  "author": "Vjacheslav Trushkin",
5
- "version": "1.3.17",
5
+ "version": "2.0.0-dev.2",
6
6
  "license": "MIT",
7
7
  "bugs": "https://github.com/iconify/tools/issues",
8
8
  "homepage": "https://github.com/iconify/tools",
9
9
  "repository": {
10
10
  "type": "git",
11
- "url": "git+ssh://git@github.com/iconify/tools.git"
11
+ "url": "git://github.com/iconify/tools.git"
12
12
  },
13
- "main": "src/modules.js",
13
+ "main": "dist/index.js",
14
14
  "scripts": {
15
- "test": "mocha tests/**/*_test.js"
15
+ "clean": "rimraf lib tests-compiled tsconfig.tsbuildinfo",
16
+ "lint": "eslint src/**/*.ts",
17
+ "prebuild": "npm run lint && npm run clean",
18
+ "build": "node build",
19
+ "test:jest": "jest --runInBand",
20
+ "test:jasmine": "cross-env NODE_OPTIONS=--experimental-vm-modules npx jasmine",
21
+ "test": "npm run test:jest && npm run test:jasmine"
22
+ },
23
+ "dependencies": {
24
+ "@iconify/utils": "^1.0.18",
25
+ "@types/cheerio": "^0.22.30",
26
+ "cheerio": "^1.0.0-rc.10",
27
+ "pathe": "^0.2.0",
28
+ "svgo": "^2.7.0"
16
29
  },
17
30
  "devDependencies": {
18
- "chai": "^4.2.0",
19
- "mocha": "^5.2.0"
31
+ "@iconify/library-builder": "^1.0.3",
32
+ "@types/jest": "^27.0.1",
33
+ "@types/svgo": "^2.6.0",
34
+ "@typescript-eslint/eslint-plugin": "^4.31.1",
35
+ "cross-env": "^7.0.3",
36
+ "eslint": "^7.32.0",
37
+ "eslint-plugin-jasmine": "^4.1.2",
38
+ "jasmine": "^3.9.0",
39
+ "jest": "^27.2.1",
40
+ "rimraf": "^3.0.2",
41
+ "ts-jest": "^27.0.5",
42
+ "typescript": "^4.4.3"
20
43
  },
21
- "dependencies": {
22
- "@iconify/json-tools": "^1.0.9",
23
- "cheerio": "^0.22.0",
24
- "cyberalien-color": "^1.0.0",
25
- "simple-tokenizer": "^1.0.2",
26
- "svgo": "^1.3.2",
27
- "tmp": "^0.0.33"
44
+ "exports": {
45
+ "./*": "./*",
46
+ "./lib/colors/attribs": {
47
+ "require": "./lib/colors/attribs.js",
48
+ "import": "./lib/colors/attribs.mjs"
49
+ },
50
+ "./lib/colors/parse": {
51
+ "require": "./lib/colors/parse.js",
52
+ "import": "./lib/colors/parse.mjs"
53
+ },
54
+ "./lib/css/parse": {
55
+ "require": "./lib/css/parse.js",
56
+ "import": "./lib/css/parse.mjs"
57
+ },
58
+ "./lib/css/parser/error": {
59
+ "require": "./lib/css/parser/error.js",
60
+ "import": "./lib/css/parser/error.mjs"
61
+ },
62
+ "./lib/css/parser/export": {
63
+ "require": "./lib/css/parser/export.js",
64
+ "import": "./lib/css/parser/export.mjs"
65
+ },
66
+ "./lib/css/parser/strings": {
67
+ "require": "./lib/css/parser/strings.js",
68
+ "import": "./lib/css/parser/strings.mjs"
69
+ },
70
+ "./lib/css/parser/text": {
71
+ "require": "./lib/css/parser/text.js",
72
+ "import": "./lib/css/parser/text.mjs"
73
+ },
74
+ "./lib/css/parser/tokens": {
75
+ "require": "./lib/css/parser/tokens.js",
76
+ "import": "./lib/css/parser/tokens.mjs"
77
+ },
78
+ "./lib/css/parser/tree": {
79
+ "require": "./lib/css/parser/tree.js",
80
+ "import": "./lib/css/parser/tree.mjs"
81
+ },
82
+ "./lib/css/parser/types": {
83
+ "require": "./lib/css/parser/types.js",
84
+ "import": "./lib/css/parser/types.mjs"
85
+ },
86
+ "./lib/icon-set": {
87
+ "require": "./lib/icon-set/index.js",
88
+ "import": "./lib/icon-set/index.mjs"
89
+ },
90
+ "./lib/icon-set/index": {
91
+ "require": "./lib/icon-set/index.js",
92
+ "import": "./lib/icon-set/index.mjs"
93
+ },
94
+ "./lib/icon-set/match": {
95
+ "require": "./lib/icon-set/match.js",
96
+ "import": "./lib/icon-set/match.mjs"
97
+ },
98
+ "./lib/icon-set/merge": {
99
+ "require": "./lib/icon-set/merge.js",
100
+ "import": "./lib/icon-set/merge.mjs"
101
+ },
102
+ "./lib/icon-set/props": {
103
+ "require": "./lib/icon-set/props.js",
104
+ "import": "./lib/icon-set/props.mjs"
105
+ },
106
+ "./lib/icon-set/types": {
107
+ "require": "./lib/icon-set/types.js",
108
+ "import": "./lib/icon-set/types.mjs"
109
+ },
110
+ "./lib/import/directory": {
111
+ "require": "./lib/import/directory.js",
112
+ "import": "./lib/import/directory.mjs"
113
+ },
114
+ "./lib/misc/keyword": {
115
+ "require": "./lib/misc/keyword.js",
116
+ "import": "./lib/misc/keyword.mjs"
117
+ },
118
+ "./lib/misc/scan": {
119
+ "require": "./lib/misc/scan.js",
120
+ "import": "./lib/misc/scan.mjs"
121
+ },
122
+ "./lib/optimise/flags": {
123
+ "require": "./lib/optimise/flags.js",
124
+ "import": "./lib/optimise/flags.mjs"
125
+ },
126
+ "./lib/optimise/scale": {
127
+ "require": "./lib/optimise/scale.js",
128
+ "import": "./lib/optimise/scale.mjs"
129
+ },
130
+ "./lib/optimise/svgo": {
131
+ "require": "./lib/optimise/svgo.js",
132
+ "import": "./lib/optimise/svgo.mjs"
133
+ },
134
+ "./lib/svg/cleanup": {
135
+ "require": "./lib/svg/cleanup.js",
136
+ "import": "./lib/svg/cleanup.mjs"
137
+ },
138
+ "./lib/svg/cleanup/attribs": {
139
+ "require": "./lib/svg/cleanup/attribs.js",
140
+ "import": "./lib/svg/cleanup/attribs.mjs"
141
+ },
142
+ "./lib/svg/cleanup/bad-tags": {
143
+ "require": "./lib/svg/cleanup/bad-tags.js",
144
+ "import": "./lib/svg/cleanup/bad-tags.mjs"
145
+ },
146
+ "./lib/svg/cleanup/inline-style": {
147
+ "require": "./lib/svg/cleanup/inline-style.js",
148
+ "import": "./lib/svg/cleanup/inline-style.mjs"
149
+ },
150
+ "./lib/svg/cleanup/root-svg": {
151
+ "require": "./lib/svg/cleanup/root-svg.js",
152
+ "import": "./lib/svg/cleanup/root-svg.mjs"
153
+ },
154
+ "./lib/svg/cleanup/svgo-style": {
155
+ "require": "./lib/svg/cleanup/svgo-style.js",
156
+ "import": "./lib/svg/cleanup/svgo-style.mjs"
157
+ },
158
+ "./lib/svg/data/attributes": {
159
+ "require": "./lib/svg/data/attributes.js",
160
+ "import": "./lib/svg/data/attributes.mjs"
161
+ },
162
+ "./lib/svg/data/tags": {
163
+ "require": "./lib/svg/data/tags.js",
164
+ "import": "./lib/svg/data/tags.mjs"
165
+ },
166
+ "./lib/svg": {
167
+ "require": "./lib/svg/index.js",
168
+ "import": "./lib/svg/index.mjs"
169
+ },
170
+ "./lib/svg/index": {
171
+ "require": "./lib/svg/index.js",
172
+ "import": "./lib/svg/index.mjs"
173
+ },
174
+ "./lib/svg/parse": {
175
+ "require": "./lib/svg/parse.js",
176
+ "import": "./lib/svg/parse.mjs"
177
+ },
178
+ "./lib/svg/parse-style": {
179
+ "require": "./lib/svg/parse-style.js",
180
+ "import": "./lib/svg/parse-style.mjs"
181
+ }
28
182
  }
29
183
  }