{"id":21414875,"url":"https://github.com/magic/core","last_synced_at":"2025-11-07T01:02:37.546Z","repository":{"id":65715289,"uuid":"163346363","full_name":"magic/core","owner":"magic","description":"jamstack (js, api, markup) generator. js + css + html boilerplate size ~10kb.","archived":false,"fork":false,"pushed_at":"2024-12-12T21:49:44.000Z","size":7719,"stargazers_count":12,"open_issues_count":14,"forks_count":2,"subscribers_count":5,"default_branch":"master","last_synced_at":"2025-06-16T11:11:58.241Z","etag":null,"topics":[],"latest_commit_sha":null,"homepage":"https://magic.github.io/core/","language":"JavaScript","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":"agpl-3.0","status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/magic.png","metadata":{"files":{"readme":"README.md","changelog":null,"contributing":null,"funding":null,"license":"LICENSE","code_of_conduct":null,"threat_model":null,"audit":null,"citation":null,"codeowners":null,"security":null,"support":null,"governance":null,"roadmap":null,"authors":null,"dei":null,"publiccode":null,"codemeta":null}},"created_at":"2018-12-28T00:03:46.000Z","updated_at":"2025-06-09T19:01:31.000Z","dependencies_parsed_at":"2024-06-18T21:12:13.023Z","dependency_job_id":"a92ba8bd-59a7-4228-9ba1-55842a5ad10a","html_url":"https://github.com/magic/core","commit_stats":null,"previous_names":[],"tags_count":137,"template":false,"template_full_name":null,"purl":"pkg:github/magic/core","repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/magic%2Fcore","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/magic%2Fcore/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/magic%2Fcore/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/magic%2Fcore/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/magic","download_url":"https://codeload.github.com/magic/core/tar.gz/refs/heads/master","sbom_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/magic%2Fcore/sbom","host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":265240084,"owners_count":23732935,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2022-07-04T15:15:14.044Z","host_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub","repositories_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories","repository_names_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repository_names","owners_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners"}},"keywords":[],"created_at":"2024-11-22T18:34:22.463Z","updated_at":"2025-11-07T01:02:37.504Z","avatar_url":"https://github.com/magic.png","language":"JavaScript","funding_links":[],"categories":[],"sub_categories":[],"readme":"## @magic/core\n\nthis is the @magic core library.\n\n[![NPM version][npm-image]][npm-url]\n[![License][license-image]][license-url]\n[![Node version][node-image]][node-url]\n[![Linux Build Status][travis-image]][travis-url]\n[![Windows Build Status][appveyor-image]][appveyor-url]\n[![Coverage Status][coveralls-image]][coveralls-url]\n[![Known Vulnerabilities][snyk-image]][snyk-url]\n\nbuilds a webapp with deeply nested component structure and globally/locally shared state and actions.\n\nclient html + css + js boilerplate = ~15kb uncompressed.\n\nto get more information,\nhead to the [docs / demo](https://magic.github.io/core/)\n\nother related github organizations:\n\n- [@magic-modules](https://magic-modules.github.io) - building blocks for your app\n- [@magic-themes](https://magic-themes.github.io) - themes for your app\n- [@magic-libraries](https://magic-libraries.github.io) - client libraries\n\n#### changelog\n\n##### 0.0.1\n\nfirst commit\n\n##### 0.0.2\n\nuse @magic npm packages instead of github for installs\n\n##### 0.0.3\n\n- update dependencies\n- make @magic actually work in the client if @magic-modules/gdpr is not installed.\n\n##### 0.0.4\n\n- dev server now correctly redirects urls if the trailing slash is missing\n- html and markdown files can include state and variables\n\n##### 0.0.5\n\n- @magic-themes can now add variables to the css colors without overwriting the default colors\n- @magic-modules/messages gets autoloaded if it is installed.\n- components now can be nested without array. div([p('text')]) can also be div(p('text'))\n- Link({ to: '#hashLink' }) is local now\n- very early blog implementation. it works, but the archive pages need more work.\n\n##### 0.0.6\n\nalways delete .tmp dir\n\n##### 0.0.7\n\nfix 404 page regression\n\n##### 0.0.8\n\n- blog/year/month archive pages are not 404'ing.\n- blog archive pages now have links in them if needed\n  (year page links to each month archive page)\n- blog posts are wrapped in BlogPost automagically.\n  BlogPost adds header and description automagically.\n- config.HOIST allows adding any module at the bottom of the page (gdpr, messages will use that)\n\n##### 0.0.9\n\n- config.HOIST can be an array or a string\n\n##### 0.0.10\n\n- config.HOIST defaults to empty array\n- app.actions.gdpr will only be added if Gdpr is included in config.HOIST\n\n##### 0.0.11\n\n- allow arbitrary, module and page level init effects for initialState\n\n##### 0.0.12\n\n- add SkipLink for screen readers. hash links to page start\n- libraries can now be named with a - in their name and get camelCased\n\n##### 0.0.13\n\n- svg tags are actually usable now. except color-profile and switch.\n\n##### 0.0.14\n\n- update @magic/css which updates postcss\n- color theme vars now export grey and bluegrey. copies gray and bluegray.\n- config.BABEL is now being used for babel build\n- config.THEME_VARS can be a function. gets passed { colors } if it is a function.\n\n##### 0.0.15\n\nregression: babel should minify files on build.\n\n##### 0.0.16\n\n- modules/MenuItem: only add submenu ul if submenu has items.length \u003e 0\n- link menu parent .to only gets prepended to link.to if link.to starts with - or #, not if it starts with /.\n- add modules/MenuLink. use it in modules/MenuItem\n\n##### 0.0.17\n\n- **commonjs support is gone.**\n- **minimum node version bumped to 13.5.0**\n- modules/Router.mjs: Link module now accepts action as prop\n- modules/Router.mjs: scroll page back to top if the clicked link points to current page root\n\n##### 0.0.18\n\ndo not error if docs/sri-hashes.json does not exist\n\n##### 0.0.19\n\n**minimum node version of dependencies bumped to 13.5.0**\n\n##### 0.0.20\n\n- update dependencies\n- update theme to show list-style for ordered lists (ol)\n- better error handling\n- remove lib/fs, use @magic/fs everywhere\n- is @magic/types for isUpperCase and isLowerCase\n\n##### 0.0.21\n\nadd viewport and ie=edge html meta tags.\n\n##### 0.0.22\n\ntasks/prepare/css: also load themes directly from node_modules/${theme_name}.\n\n##### 0.0.23\n\n- all hail eris!\n- css styles now inherit THEME_VARS from all possible source before transpiling styles.\n- colors.bluegrey now is alias for colors.bluegray instead of undefined.\n- client side routing scrolls to top in all cases, but is not animated.\n  scroll-behavior + window.scroll() = bug\n\n##### 0.0.24\n\n- Router: set document.title on pushstate if possible\n- Seo: add image for social previews\n\n##### 0.0.25\n\n- fix: do not error if none of the pages has state.title set.\n\n##### 0.0.26\n\nconfig.IGNORED_STATIC is an array. can include path ('/file.ext') or extension ('.ext') strings.\n\n##### 0.0.27\n\ndo not create sri-hashes for config.IGNORED_STATIC files\n\n##### 0.0.28\n\nthemes can export Modules now, which can overwrite builtins.\n\n##### 0.0.29\n\nfix some edgecases with exported theme modules\n\n##### 0.0.30\n\nlocal config.THEME_VARS get deep merged over theme provided THEME_VARS now.\n\n##### 0.0.31\n\nif multiple themes are installed,\nthe last imported theme will overwrite earlier imported themes and their vars.\n\n##### 0.0.32\n\nfix race condition in case of multiple themes.\nmodules did not always get overwritten in the correct order.\n\n##### 0.0.33\n\nMenuItem: fix link handling for rooted links. initial / will not be removed from links.\n\n##### 0.0.34\n\n- themes: merge state, actions, effects, and subscriptions into app.\n- maybeApp import: only suppress error if it is E_MODULE_NOT_FOUND.\n\n##### 0.0.35\n\nfix: hash routing in webkit works (chromium, brave tested)\n\n##### 0.0.36\n\nmodules/app: correctly merge maybeApp and theme state, actions, effects and subscriptions.\n\n##### 0.0.37\n\n- config: IGNORED_STATIC can be a string.\n- config: items in IGNORED_STATIC do not have to start with a dot. will be added if it is missing.\n- babel errors tell us to run `npm run format` to find the source of the error. Sourcemaps tbd\n- build worker process should always exit with process.exit(1), not panic.\n\n##### 0.0.38\n\n- babel: do not mangle toplevel names. broke builds, adds 1kb+ to js. investigate, exterminate.\n\n##### 0.0.39\n\n- only load Modules from theme if their names are CamelCased.\n- handle state as a function in all imports, call it with config param\n- @magic/transform handles @magic-modules now, which makes pure markdown pages possible.\n\n##### 0.0.40\n\nfix: HOISTing broke in 0.0.39\n\n##### 0.0.41\n\nhoisting happens in the footer.\n\n##### 0.0.42\n\nfix: theme modules are now getting imported again.\n\n##### 0.0.43\n\nupdate @magic/transmute: @magic-modules in markdown are no longer wrapped in p tags\n\n##### 0.0.44\n\nadd Credit module\n\n##### 0.0.45\n\nadd b, strong, i, and em styles (bold and italic)\n\n##### 0.0.46\n\n- no more race conditions when importing multiple themes.\n- Logo link works again.\n\n##### 0.0.47\n\nmodules/app: page.state gets inherited properly, markdown pages can see global state now.\n\n##### 0.0.48\n\nimport originalState from transmuted bundle.\n\n##### 0.0.49\n\nFIX: process would hang if a markdown or html page had no state.\n\n##### 0.0.50\n\ndocument.title does not error in client if only one page exists.\n\n##### 0.0.51\n\n##### FULL @magic-module api available from markdown.\n\n- nested state variables in template strings eg {{state.test.deep.var}} now work.\n- replace parse5 with posthtml.\n- custom markdown and custom html renderers added.\n- @magic-modules in markdown and html can have keys that are arrays or objects now.\n- state variables in template strings can be arrays (eg state.description).\n  will be join(' ')ed\n\n##### 0.0.52\n\nfix: remove admin for now\n\n##### 0.0.53\n\n- transmute now returns empty strings instead of empty arrays and objects.\n\n##### 0.0.54\n\n- transmute/render/markdown.codespan: do not show line numbers for code spans.\n- do not pass modules to transmute.\n\n##### 0.0.55\n\n@magic/transmute now correctly unescapes quot entities.\n\n##### 0.0.56\n\n- Credits module does not error if style variables are not set.\n\n##### 0.0.57\n\ntasks/prepare: module.state extends, but does not overwrite app.state when importing modules\n\n##### 0.0.58\n\nupdate @magic/transmute, which now actually replaces all occurrences of html entities in a string,\nnot just the first one.\n\n##### 0.0.59\n\n- tasks/serve/handler: use array to collect req.body data.\n  strings break unicode characters if the chunks split a character on transit\n- only create sri-hashes for static files in conf.INCLUDED_HASH_EXTENSIONS\n- update dependencies =\u003e minimist vuln\n\n##### 0.0.60\n\n- modules/Router/Link.onclick: now also resets window.location.hash if the hash did not change.\n- tasks/serve/handler: response data chunks are now always buffers.\n\n##### 0.0.61\n\nupdate babel and @magic/transmute\n\n##### 0.0.62\n\nupdate babel jsx and @magic/transmute\n\n##### 0.0.63\n\nmodules/Seo now allows arbitrary header fields.\n\n##### 0.0.64\n\nmodules/Header passes state.theme to Logo\n\n##### 0.0.65\n\nmagic can now serve a log of mime-types. see @magic/mime-types for full list\n\n##### 0.0.66\n\nupdate dependencies\n\n##### 0.0.67\n\nupdate @magic/transmute\n\n##### 0.0.68\n\n@magic/transmute does not add p tags around Link and Img elements.\n\n##### 0.0.69\n\nupdate dependencies\n\n##### 0.0.70\n\nupdate dependencies\n\n##### 0.0.71\n\n- update dependencies\n- sri-hashes.json is a flat object: key = path, value = hash\n\n##### 0.0.72\n\n- bump required node version\n- update dependencies\n- cli help expanded\n- cli flags get passed to config\n- better lib handling\n\n##### 0.0.73\n\nupdate dependencies.\n\n##### 0.0.74\n\n- src/index: export runCluster\n- pkg: add type: module, add main field\n\n##### 0.0.75\n\n- magic build --no-minify flag now works\n- themes/theme_name.mjs is now a valid theme path\n- apis can be served by @grundstein/gas and created on page, app and module level\n\n##### 0.0.76\n\n- update dependencies\n- hyperapp-render is a proper module now\n\n##### 0.0.77\n\n- add config.API_DIR. load all files in that dir and use their default exports as lambdas.\n- update babel build task\n\n##### 0.0.78\n\nupdate babel\n\n##### 0.0.79\n\n- FIX: sri-hashes for magic.js and magic.css get added to html again.\n- update dependencies\n\n##### 0.0.80\n\nupdate @magic/css\n\n##### 0.0.81\n\n- Img module now has loading=lazy as default prop.\n- update @magic/css\n\n##### 0.0.82\n\nFIX: regression, reenable custom state for pages.\n\n##### 0.0.83\n\nupdate lodash to mitigate development environment security issue.\n\n##### 0.0.84\n\nupdate deps\n\n##### 0.0.85\n\nicon sizes can be customized\n\n##### 0.0.86\n\nupdate icon size usage\n\n##### 0.0.87\n\nthemes/reset.css: add icon animation for hoisted icons\n\n##### 0.0.88\n\nupdate dependencies\n\n##### 0.0.89\n\nupdate babel\n\n##### 0.0.90\n\n- remove unused imports\n- formatting\n- split tasks/globals into separate files\n- update api to allow self-contained lambdas which load their dependencies using await import\n- update dependencies\n\n##### 0.0.91\n\nupdate dependencies\n\n##### 0.0.92\n\nupdate dependencies\n\n##### 0.0.93\n\nupdate dependencies\n\n##### 0.0.94\n\nupdate dependencies\n\n##### 0.0.95\n\n- serve/prepareApi: remove console.log\n- allow addition of third party scripts using ADD_SCRIPTS config variable\n- update dependencies\n\n##### 0.0.96\n\ngit tagged but not published\n\n##### 0.0.97\n\n- do not error if page is not a javascript module\n- update dependencies\n- add app.build task\n- update dependencies\n\n##### 0.0.98\n\n- if the app.mjs import fails because one of the app dependencies is missing,\n  throw an error instead of silently not importing the app.\n- update dependencies\n\n##### 0.0.99\n\n- use @swc/core for dev builds to make them 10 times faster.\n- update dependencies\n- only duplicate unique page.state into app.state, 20-30% bundle size reduction.\n- cluster/build task recovers from build errors, no restart needed.\n\n##### 0.0.100\n\n- config.API_DIR now actually gets used\n- api routes now 404 if they do not exist (redirected to WEB_ROOT before)\n- update deps\n\n##### 0.0.101\n\n- Router: on navigation scroll to top works in newer firefox, tradeoff: probably not in older.\n- npm i -g magic now works and loads local node_modules as well as global\n\n##### 0.0.102\n\n- further fixes regarding npm i -g magic\n- bump required node version to 14.15.4\n- update dependencies\n\n##### 0.0.103\n\nupdate dependencies\n\n##### 0.0.104\n\nupdate dependencies\n\n##### 0.0.105\n\n- Header, Menu, MenuItem and Logo arguments updated\n\n##### 0.0.106\n\nupdate dependencies (marked)\n\n##### 0.0.107\n\n- update dependencies\n- swc now handles links in pages correctly (dev)\n- babel now handles links in pages correctly (production)\n- prepare task now handles all urls in the state object,\n  no need to handle it in babel/swc or in modules.\n\n##### 0.0.108\n\ndebump hyperapp-render from 4.0.0 to 3.5.0\n\n##### 0.0.109\n\n- fix error in modules/Logo\n- tasks/prepare/stateLinks now handles #hash and -expand links without parents\n- check for broken links on build and dev\n- better link handling, should now include all images and links in pages too\n\n##### 0.0.110\n\n- update dependencies\n- restructure most of the app tasks and remove global.config.\n  this will allow us to seamlessly use @magic/core in the @magic/test library\n- libs can now be static function instead of imports\n- export renderToString\n\n##### 0.0.111\n\n- magic.init can now be an actual array of code, instead of string only\n- update dependencies\n- more robust checkLinks testing\n\n##### 0.0.112\n\n- libraries can be actual code or a string pointing to a file\n- update hyperapp and use 2.0.12\n- update hyperapp-render to 4.0.0\n- update dependencies\n- href link checkers handle mailto: links\n- import hyperapp memo instead of Lazy\n- starting to remove usages of config without explicit destructuring\n- replaceSlashSlash all urls in robots.txt and sitemap.xml\n- add ADD_TAGS to append arbitrary html after the #magic root\n- the watch task can now watch files\n- the watch task watches the config file\n\n##### 0.0.113\n\n- FIX: tasks/prepare/page: change variable name to avoid \"access before init\" error when pages do not build successfully.\n- update dependencies\n\n##### 0.0.114\n\n- to keep dev builds fast, external links only get checked on build.\n- deprecate config.mjs in favor of magic.(m)js\n- magic.js config import will now error and exit if config does not exist\n- if no config file is found, output an example config\n- show a warning if config.mjs is still being used\n- only checkLinks external links in production env\n\n##### 0.0.115\n\n- swc handles OptionalChainingExpression and Computed\n- nicer error messages\n- add Permissions-Policy interest-cohort=() to maybe avoid FLOC tracking in chrome.\n\n##### 0.0.116\n\n- add @magic/hyperapp bundle that exports hyperapp and hyperapp-render\n\n##### 0.0.117\n\ncorrectly export renderToString from index (for @magic/test)\n\n##### 0.0.118\n\nadd silent option to silence log output and apply to config.\n\n##### 0.0.119\n\n- update dependencies\n- conf.ADD_STATIC can be used to import static files from multiple directories\n- component handles prerendered hyperapp objects correctly again.\n- html pages have their href and src elements prefixed with WEB_ROOT\n\n##### 0.0.120\n\n- runConfig: bail early if config file is not found\n- lib/findConfigFile: only process.exit if args.silent is false\n\n##### 0.0.121\n\nupdate dependencies\n\n##### 0.0.122\n\n- update @babel/preset-env to avoid security issue\n\n- config: add PREPEND_SCRIPT and APPEND_SCRIPT to allow adding js script tags before and after the magic js\n- config: add PREPEND_JS and APPEND_JS to allow adding js contents before and after the magic js, directly into magic.js\n- config: add PREPEND_CSS and APPEND_CSS to allow adding css before and after magic js\n- config: add PREPEND_TAGS and APPEND_TAGS to allow adding html tags before and after #magic tag\n\n##### 0.0.123\n\n- BUG: do not try to return an undefined hashes var if PREPEND_SCRIPTS or APPEND_SCRIPTS is empty\n- swc: handle EmptyStatement\n- update dependencies\n\n##### 0.0.124\n\nmake sure all app.static[key] keys start with a slash (config.ADD_STATIC)\n\n##### 0.0.125\n\n- cluster.watch now also watches config.DIR.STATIC directories\n- update dependencies\n\n##### 0.0.126\n\nupdate dependencies\n\n##### 0.0.127\n\nupdate dependencies to avoid circular dependency in @magic/types\n\n##### 0.0.128\n\nupdate dependencies\n\n##### 0.0.129\n\nupdate dependencies\n\n##### 0.0.130\n\nupdate dependencies\n\n##### 0.0.131\n\nupdate dependencies\n\n##### 0.0.132\n\nupdate dependencies\n\n##### 0.0.133\n\n- update dependencies\n- theme: move css from html to body to prevent duplicate scrollbars in blink/webkit\n\n##### 0.0.134\n\n- update dependencies\n- config.DIR.LIB is an array and imports lib files from each of them\n\n##### 0.0.135\n\n- theme imports now throw MODULE_NOT_FOUND errors in their internal imports, they got swallowed before\n- CHECK_PROPS can be silenced\n- update dependencies\n\n##### 0.0.136\n\nupdate dependencies\n\n##### 0.0.137\n\n- allow .js files for modules and libraries\n- update dependencies\n\n##### 0.0.138\n\n- better encoding for ' characters in state strings\n- update dependencies\n\n##### 0.0.139\n\n- update dependencies\n\n##### 0.0.140\n\n- update dependencies\n- @magic/test can now test @magic/core again\n\n##### 0.0.141\n\nupdate dependencies\n\n##### 0.0.142\n\nupdate dependencies\n\n##### 0.0.143\n\nupdate dependencies\n\n##### 0.0.144\n\n- update dependencies\n- remove babel, swc can handle it by now\n  (bundle js size 88k babel to 90k swc for this page, 18 byte difference if using zopfli).\n- config.BABEL deprecation warning\n- app.helpers deprecation warning\n- propTypes no longer need to be namespaced\n\n  ```\n  // Module.mjs\n  export const propTypes = [//...propTypes]\n\n  // will turn into:\n  export const propTypes = { Module: [//..propTypes]}\n  ```\n\n##### 0.0.145\n\n- update dependencies\n- swc will prepend links in the return statements of modules with WEB_ROOT if needed.\n- CHECK_PROPS supports oneOf and someOf. added some tests.\n\n##### 0.0.146\n\n- update dependencies\n- FIX from 0.0.145: CHECK_PROPS now can handle logging and errors.\n- FIX from 0.0.145: swc can handle string literals in img src and srcset parameters\n\n##### 0.0.147\n\nswc will now remove CHECK_PROPS from magic.js production bundles.\n\n##### 0.0.148\n\n- update dependencies\n- checkLinks supports NO_CHECK_LINKS_LIST in magic.js, which allows us to ignore known broken links, for example when pages block our http requests.\n\n##### 0.0.149\n\n- update dependencies\n- better error message if a module can not be required\n- global html tags will always be defined in order to make sure they exist before requiring other Modules\n\n##### 0.0.150\n\nupdate dependencies\n\n##### 0.0.151\n\n- update dependencies\n- FIX: bug when assigning local state of modules, only the last item was written, now they all get added to state.componentname.\n- swc: add AwaitExpression and set swc.jsc.target to es2017, leading to async-await making it into the final bundle.\n- module.global can now also be called module.globals\n- tasks/prepare/js now makes sure that `import`ed modules work.\n- swc: add ForOfStatement\n\n##### 0.0.152\n\n- downgrade swc\n\n##### 0.0.153\n\n- magic now seems to work on windows.\n\n##### 0.0.154\n\n- update dependencies\n- link WEB_ROOT prefixing ignores Identifier, TemplateLiteral and BinaryExpression ast nodes, they are dynamic and should not be manipulated\n- Img module will not automatically set role=\"presentation\" when alt=\"\", props.loading will always be set to lazy unless provided\n- CheckLinks will not error if TemplateLiterals are used in the url\n- Magic exports replaceSlashSlash from library\n- modules/app will not error if state of a page is undefined in src/app.mjs\n\n##### 0.0.155\n\n- reduce @swc/core version back to 1.3.41 to prevent errors when transpiling\n\n##### 0.0.156\n\nupdate dependencies\n\n##### 0.0.157 - unreleased\n\n...\n\n[npm-image]: https://img.shields.io/npm/v/@magic/core.svg\n[npm-url]: https://www.npmjs.com/package/@magic/core\n[license-image]: https://img.shields.io/npm/l/@magic/core.svg\n[license-url]: https://www.npmjs.com/package/@magic/core\n[node-image]: https://img.shields.io/node/v/@magic/core/latest\n[node-url]: https://www.npmjs.com/package/@magic/core\n[travis-image]: https://img.shields.io/travis/com/magic/core/master\n[travis-url]: https://travis-ci.com/magic/core\n[appveyor-image]: https://img.shields.io/appveyor/ci/magic/core/master.svg\n[appveyor-url]: https://ci.appveyor.com/project/magic/core/branch/master\n[coveralls-image]: https://coveralls.io/repos/github/magic/core/badge.svg\n[coveralls-url]: https://coveralls.io/github/magic/core\n[snyk-image]: https://snyk.io/test/github/magic/core/badge.svg\n[snyk-url]: https://snyk.io/test/github/magic/core\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fmagic%2Fcore","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fmagic%2Fcore","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fmagic%2Fcore/lists"}