Commit Graph

53 Commits

Author SHA1 Message Date
Sachin Raja
8010341b97
make building async and minify with esbuild (#6898)
* make building async and minify with esbuild

* switch from fs/promises to fs.promises

* cleanup fs.promises

* fix conflicts

* fix conflicts

* revert test file changes
2021-11-24 03:01:24 +01:00
Sachin Raja
ec75522f42
add deprecation warnings for icons/* imports (#6900)
* add deprecation warnings for icons/* imports

* do not log warnings during tests

* update message

Co-authored-by: Álvaro Mondéjar <mondejar1994@gmail.com>

* remove message formatting

* add jsdoc deprecation tags

* Update scripts/build/package.js

Co-authored-by: Álvaro Mondéjar <mondejar1994@gmail.com>

* Update scripts/build/package.js

Co-authored-by: Álvaro Mondéjar <mondejar1994@gmail.com>

* Update scripts/build/package.js

Co-authored-by: Álvaro Mondéjar <mondejar1994@gmail.com>

* Update scripts/build/package.js

Co-authored-by: Álvaro Mondéjar <mondejar1994@gmail.com>

* fix "use" for jsdoc

Co-authored-by: Álvaro Mondéjar <mondejar1994@gmail.com>
2021-11-23 12:33:37 -08:00
Eric Cornelissen
4c7b870af6
Remove .get from package's default export (#6820)
* Remove `.get` from package's default export

* Update TypeScript definitions

* Updated index.js test suite
2021-11-22 20:56:10 +01:00
Sachin Raja
7c8146e475
refactor: reorganize tests, reduce repetition (#6829)
* refactor: reorganize tests, reduce repetition

* fix conflicts

* fix conflicts

* remove unnecessary type checks and use toStrictEqual

* move index tests to separate file

* test svg values in testIcon
2021-11-08 11:55:47 +01:00
Álvaro Mondéjar
2d3485b8c1
Use getter for svg instead of path in packaged javascript version of icons (#6505)
* Use getter for 'svg' instead of 'path' in packaged javascript version of icons

* Use variable to avoid calling `escape` twice

* Convert title to HTML friendly in build script

* Update tests

* Only friendly title for SVG content

* Add equality test for SVG contents

* Add missing import

* Test using icons template

* Fix lint error

* Fix lint error in utils

* Read files synchronicly in tests

* Remove done from tests, make them pass

* Remove uneeded imports

* Remove replacements in tests

* Update with changes in develop

* Drop uneeded requirement

* Space between requirements

* Simplify encoding utility

* Fix syntax error

* Apply @ericcornelissen's suggestions

* Apply @ericcornelissen's suggestions
2021-11-06 16:03:37 +01:00
Sachin Raja
1a77d28227
export bundled icons from one entry point and add types (#6767)
* export all icons from a single file (#6189)

* fix: revert formatting, add exports to package.json

* feat: generate icons.js and add relevant exports field

* add minifyAndWrite

Co-authored-by: Eric Cornelissen <ericornelissen@gmail.com>

* fix: minifyAndWrite build

* add type: commonjs

Co-authored-by: Eric Cornelissen <ericornelissen@gmail.com>

* simplify exports

Co-authored-by: Eric Cornelissen <ericornelissen@gmail.com>

* add "require" in exports

* place objects directly in barrel file

* write exports minified

Co-authored-by: Eric Cornelissen <ericornelissen@gmail.com>

* fix formatting

Co-authored-by: Eric Cornelissen <ericornelissen@gmail.com>

* refactor slugToVariableName code into a function

* fix slugToVariableName

* change prefix to "si"

* move slugToVariableName to local helper functions

* unignore icons.js and icons.mjs

Co-authored-by: Eric Cornelissen <ericornelissen@gmail.com>

* feat: add types (#6580)

* feat: add types

* fix linting error

* export default from types/index.d.ts

* minify

* revert formatting changes

* revert formatting change

* change paths from types/index.d.ts to index.d.ts

* mark icons.get as deprecated

* move type alias to another file

* update readme

* update readme.md

Co-authored-by: Eric Cornelissen <ericornelissen@gmail.com>

* update typescript usage section

Co-authored-by: Eric Cornelissen <ericornelissen@gmail.com>

* fix conflicts

* Apply suggestions from code review

Co-authored-by: Eric Cornelissen <ericornelissen@gmail.com>

* add writeTs function

Co-authored-by: Eric Cornelissen <ericornelissen@gmail.com>
2021-10-28 16:16:34 -07:00
Eric Cornelissen
e0df400494
Setup prettier (#6758)
* Add prettier as a dependency

* Add format command and configure prettier

I opted for single quotes to be in line with other simple-icons projects

I ignore the data file because changing its formatting is quite a bit of
trouble for all open PRs.

* Run prettier

* Replace all functions by arrow functions

* Move prettier configuration to config file

Move it to a file so editors (and other software) can pick up on the
configuration. I went with .js because (a) it allows for comments and
(2) it seems most of the config files are in JavaScript already.

* Add prettier --check when running npm run lint (This adds it to the CI as well)

* Add husky and format changes before committing

* Use object destructuring for imports consistently

* Add shebang and fileoverview to jsonlint.js
2021-10-25 21:13:10 +02:00
Álvaro Mondéjar
f726999af2
Unify SVGs for HTML safe titles reporting encoding errors in linting (#6522)
* Basic implementation

* Fix error

* Update icons

* Tweak implementation

* Minor changes

* Apply suggested changes

* Don't encode 34 and 39 codepoints (double and single quotes)

* Fix comments
2021-10-02 16:46:07 +02:00
LitoMore
8283daf05a
Drop package-lock.json (#6179)
* Drop `package-lock.json`

* Drop lockfile related code

* Drop lockfile maintenance configurations
2021-08-23 19:21:03 +02:00
Eric Cornelissen
f6b60e428f
Rename 'get' to 'Get' on simpleIcons export (#5777) 2021-05-28 11:16:50 +01:00
Eric Cornelissen
c66b8bc2f3
Remove get-by-title from NPM package API (#4920) 2021-05-25 17:40:11 +01:00
Eric Cornelissen
153a029c25
Restructure the scripts/ directory (#5546)
* Restructure scripts/ directory

And update references to this scripts everywhere.

* Update names of file-level constants in bump-version.js

* Normalize quotes between all scripts

* Move "create-release.yml" scripts to scripts/release

* Move slugs table script to scripts/release

* Update relative path logic in update-slugs-table.js
2021-05-07 19:55:06 +02:00
Eric Cornelissen
e049e1d5a5
Auto update CDN URLs in README.md in release PR (#5545)
* Add script to bump major version in README

On lines 29-32, we could alternatively use `replaceAll`, I opted not to
as it is not yet(?) part of an LTS release of NodeJS.

* Bump CDN version in README automatically for new releases

* Rename "bump-cdn-version.js" to "update-cdn-urls.js"

* Update names of file-level constants in update-cdn-urls.js

* Rename workflow setp for updating CDN URLs

* Rename packageJsonFile constant in update-cdn-urls

* Remove semver dependency

* Generalize update-cdn-urls script
2021-05-05 23:29:49 +02:00
Peter Noble
ead1170a2f
Disallow Hyphens in File Names (#5121) 2021-05-05 11:22:54 +01:00
Eric Cornelissen
6c435fe741 Require Sorting by Slug (#5115)
#   Fix indentation of format function.
 #   Co-authored-by: Eric Cornelissen <ericornelissen@gmail.com>

 #   Update formatting in scripts/lint.js
 #   Co-authored-by: Eric Cornelissen <ericornelissen@gmail.com>
 #   Fix Handshake order
 #   Require Sorting by Slug
2021-04-16 18:05:44 +02:00
Álvaro Mondéjar
92006ed23e
Remove '.html' extension for SPDX license urls (#5412) 2021-04-15 17:33:25 +01:00
Eric Cornelissen
9fdbb57ccc
Add guidelines data to NPM package and documenation (#5342) 2021-03-26 09:33:04 +00:00
Eric Cornelissen
52a0c5b07b
Document slugs of brands (#5002) 2021-03-03 10:57:33 +00:00
Eric Cornelissen
95109ad629
Add license data to NPM package and documenation (#5106) 2021-03-02 12:01:31 +00:00
Eric Cornelissen
8431fd9683
Simplify how scripts get icon slugs (#5066)
* Accept icon rather than title in `iconToSlug`

This removes the need in (most of the) calls to this function to
seperately check if there is a custom slug already defined for the icon.

* Rename `titleToSlug` to `getIconSlug`

* Revert unnecessary style change

* Update function documentation

* Keep `titleToSlug` and add `getIconSlug` helper

Unfortunately `this` is not available because we're using arrow syntax
for these functions, but refering to `titleToSlug` through
`module.exports` works fine as well.

* Fix parameter name in `getIconSlug` docs
2021-02-22 14:15:37 +01:00
Eric Cornelissen
54f9ceff75
Disallow underscores in slugs & filenames (#4921) 2021-02-19 16:16:19 +00:00
Eric Cornelissen
39269e7d39
Add icon license to JSON linting (and change JSON linting dependency) (#4945)
* Add "license" object to the data file JSON schema

* Add license to GNU and GNU social

As an example, based on the discussion in:
https://github.com/simple-icons/simple-icons/issues/1167

* Use `"additionalProperties": false` in JSON schema

... to detect properties in the data file that shouldn't be there.

For more info, see:
https://json-schema.org/understanding-json-schema/reference/object.html

* Update JSON scheme descriptions

* Switch from jsonlint2 to jsonschema

This gives is better support for advanced features of JSON schema.

A couple of clarifications:
- There does exist a jsonschema-cli package, but it is rather limited
  and crucially doens't exit with a non-zero exit code if there is an
  error. (it is also pretty old and not maintained), hence the custom
  script.
- I renamed .jsonlintschema 1) for clarity (lint is no longer accurate)
  and 2) the .json extension allows easy imorting in the script and 3)
  it adds syntax highlighting.
- The script outputs the number of errors in the end because the output
  gets pretty big pretty quickly, this way you can see it easily from
  your CLI.
- We could customize how the errors are logged, but I feel that is
  beyond this PR.

* Two minor changes

* Use `oneOf` to require URL for custom licenses

The updated configuration allows the `"license"` field to be either
1) a SPDX license, optional with a URL
2) a "custom" license with a required URL

Read more about the "oneOf" feature of jsonschema at:
https://json-schema.org/understanding-json-schema/reference/combining.html#oneof

* Include license field in Contributing Guidelines
2021-02-19 15:19:22 +01:00
Eric Cornelissen
9c029bc706
Allow custom slugs (#4918) 2021-02-19 13:06:43 +00:00
Eric Cornelissen
8ecfcafeba
Refactor scripts in scripts/ (#4931)
- Rename `titleToFilename` to `titleToSlug`
- Fix indentation where necessary
- Use quotes internally consistently (to reduce the diff size, unfortunately this is the opposite quote from what we use in other projects)
- Update comments & documentation
- Construct file paths

And more...
2021-02-08 17:14:31 +01:00
Peter Noble
b9d229ff69
Add more characters to normalisation scripts (#4833)
* Update normalisation scripts

* Replace ß in index.html

Co-authored-by: Eric Cornelissen <ericornelissen@gmail.com>
2021-02-03 00:06:49 +01:00
Eric Cornelissen
a4ca74602f
Minor improvements (#4708)
* Remove .travis.yml reference from .gitattributes

* Minor refactoring of .svglintrc.js

- Remove unused variables
- Fix missing semi-colons
- Remove unneeded indentation

* Prevent error in clean command due to missing files

* Fix indentations

* Further improvements to Editorconfig and indentation

* Format YAML files

- Update indentation for array notation
- Normalize use of newlines
2021-01-15 21:47:00 +01:00
Peter Noble
41e7601a38
Remove Degree Symbol in Filenames (#4638) 2021-01-06 11:03:48 -05:00
Álvaro Mondéjar
f6bd00315a
Optimize package getter (#4356)
Remove redundant truthy check for properties of icons in index.js

We test if all icon scan be retrieved anyway, if any icon is missing these properties we would find out during testing.
2020-12-14 16:37:15 +01:00
Álvaro Mondéjar
45583efadd
Add lint to check JSON data file prettification (#4320)
* Add test for check JSON data file prettification

* Move prettification test to out linting script

* Add other newline in error message to improve readability

* Invert the diff to show the solution to the user

* Add 'jest-diff' as direct dependency

* Remove annotations and colors

* Replace CRLF newlines with LFs in JSON prettification lint

* Restore colors in JSON prettification lint
2020-12-13 21:17:41 +01:00
Eric Cornelissen
7fb4ff6395
Fix low severity issues in the JavaScript (#3342) 2020-07-28 11:33:40 +01:00
Eric Cornelissen
412ccc0a6d
Escape icon title for object key (#2710) 2020-03-02 10:49:56 +00:00
Eric Cornelissen
7ebf7f71fa
Add documentation and tooling for SVG filenames (#2601)
* Create simple CLI tool to get the filename from a brandname

https://github.com/simple-icons/simple-icons/pull/2589#issuecomment-585902427

* Update contributing guidelines on new SVGs' filenames

* Fix incorrect filename in package.json script

* Add file header to get-filename script

* Update contributing guidelines' section on SVG filenames

Co-Authored-By: YoussefRaafatNasry <youssefraafatnasry@gmail.com>
2020-02-26 17:54:54 +01:00
Peter Noble
1afbec2d84
Additional Replacements for Filenames (#2625)
* Strip colons from filenames

* Add global matching for accented characters

* Add more replacements

* Added more diacritics

Namely: č,ć, ň, ń, ś, ž, ź

Co-authored-by: Lucas Becker <runxel@users.noreply.github.com>
2020-02-21 11:01:41 +00:00
Johan Fagerberg
7b69d16efb Add CI step for ensuring alphabetical order of icons (#2334)
* Add a script for the linting that cannot be accomplished by our other linters

Currently this only contains linting for whether our icons are alphabetically sorted

* Add our own linting to Travis

* Fix Let's Encrypt being incorrectly sorted

* Intentionally break sorting to test CI

* Revert "Intentionally break sorting to test CI"

This reverts commit 55e4070b3c3294cff306fcc138ce247843130c35.

* Explain in CONTRIBUTION.md how to sort metadata
2020-01-16 12:40:46 +02:00
Eric Cornelissen
93425f8aa0 No longer require no final newline in SVGs (#1682)
* Introduce newline into a SVG

for testing purposes

* Remove potential newlines from SVGs when building the package

* Don't lint SVG files

... so it is neither required to have, or not have, a final newline

* Remove both Windows and Unix style newlines in build script

* Rever 3372ca3
2019-09-30 18:34:42 +02:00
Eric Cornelissen
87ab9c43a7 Refactor prepublish script to use template file for icon objects (#1547)
* Refactor prepublish script to use template file for icon objects

... to hopefully increase readability

* Fix build and test issues

* Add missing semi-colon

* Explicitly check for errors when writing individual static .js files
2019-08-15 13:23:35 +02:00
Eric Cornelissen
ddc3fe09d4 Fix name of "enumerable" property in Object.defineProperty
As discussed in https://github.com/simple-icons/simple-icons/pull/1555
2019-07-25 23:27:15 +01:00
Eric Cornelissen
b1b2f339b8 Don't enumerate the get method (#1555)
* Test that all elements when iterating simpleIcons are objects

* Refactor index template to hide .get method from enumeration
2019-07-24 21:17:46 +02:00
Eric Cornelissen
11cdbd7073 Add a "build" and "clean" NPM script (#1548) 2019-07-22 09:58:51 -07:00
Eric Cornelissen
77b4be945d Add error logging to prepublish script 2019-07-21 19:46:37 +01:00
Eric Cornelissen
7672bfb2db Reduce package size by replacing JSON.stringify (#1519)
* Reduce package size by replacing JSON.stringify by custom stringify func

* Escape icon's title and SVG value

... as pointed out by @birjolaxew, if they contain a "'" it will break 
the resulting object.
2019-07-14 21:15:26 +02:00
Eric Cornelissen
c6a9346985 Generic get icon function for easier access to brands with "difficult" names (#1522)
* Add URL friendy/slug/file name as property to package icon objects

* Test new property

* Build index from template

* Add .get function to index.js export

* Test new .get function in index.js export

* Use Uglify-JS to minify the code in the package's index.js

* Update API in README.md

* Renaem test using "slug" instead of "name"
2019-07-14 21:05:38 +02:00
Eric Cornelissen
9ebc626ab5 Add URL friendy/slugged name as property to package icon objects (#1520)
* Add URL friendy/slug/file name as property to package icon objects

* Test new property

* Add 'name' property to examples in README

* Rename "name" property to "slug"
2019-07-14 20:09:34 +02:00
Eric Cornelissen
39b8fdfa85 Reduce impact of path value on package size (#1521)
* Reduce package size by replacing JSON.stringify by custom stringify func

* Replace path data by getter

* Replace getter by Object.defineProperty

* Remove icon.path definition

* Revert 801c07d4

Apperantly getters have better support then Objct.defineProperty...
2019-07-14 17:07:24 +02:00
Eric Cornelissen
287317b7b6 Lint the SVG's title content (#1508)
* Add custom SVGLint rule to lint the general <title> format

i.e. the <title> should be "[ICON_NAME] icon"

* Check if there exists an entry in simple-icons.json with the icon name

... found in the <title>

* Normalize all icons <title> value

* Fix mismatch between HTML's icon title and simple-icons.json title

... due to HTML special entities (such as `&amp;`). Affected icons:

- AT&T (AT&amp;T)
- Let's Encrypt (Let&apos;s Encrypt)

* Refactor .svglintrc.js

to make the code style more in line with scripts/prepublish.js

* Add SVG with invalid <title> format

* Add SVG with unknown title

* Revert 6912816 and f002504
2019-07-03 23:33:03 +02:00
Eric Cornelissen
01b84bc2c2 Version bump
Bumped the second digit instead of the third to indicate a not backwards 
compatible change: removing the icon named Adobe Lightroom.
2019-06-30 11:55:57 +01:00
Eric Cornelissen
30cd9ecc99 Add "path" key with raw path data to NPM package (#1472)
* Update prepublish script to add path to generated .js files

* Test generated path values

* Fix Furry Network icon

The Furry Network icon used to have "e"s in the path, however the 
official SVG definition does not specify the E command.

source: https://www.w3schools.com/graphics/svg_path.asp
2019-06-15 22:31:23 +02:00
David Klebanoff
1fb7581c55 Handle accented brand names (#1439)
* Handle accented brand names.

* Update order of replacement (alphabetic).
2019-05-28 23:56:20 +02:00
Eric Cornelissen
0794f0186a Add backwards compatability for Adobe Lightroom
Because it was renamed it may result in unexpected errors --> breaking 
changes.

This is a temporary solution to circumvent the problem. This can be 
removed once some other breaking changes are also present and a major 
new version is released. I propose removing this change when 
https://github.com/simple-icons/simple-icons/issues/1362 is implemented
2019-05-03 17:16:52 +03:00
Eric Cornelissen
579d439e60
Lint file formatting (primarily whitespace) (#1349)
* Add editorconfig-checker and .editorconfig

* Fix wslint errors
2019-04-17 12:59:44 +03:00