From 2cc6fa9ff34aa1de8f7df31d54ece10163009e13 Mon Sep 17 00:00:00 2001 From: Der_Googler <54764558+DerGoogler@users.noreply.github.com> Date: Fri, 26 Jan 2024 12:29:13 +0100 Subject: [PATCH] added licenses back --- Website/licensefix.js | 40 ++ Website/package.json | 11 +- Website/src/activitys/LicensesActivity.tsx | 125 ++++ .../activitys/fragments/DrawerFragment.tsx | 11 +- Website/src/locales/de.json | 1 + Website/src/locales/en.json | 1 + Website/src/typings/global.d.ts | 24 + Website/src/util/licenses.json | 631 +++++++++++++----- 8 files changed, 647 insertions(+), 197 deletions(-) create mode 100644 Website/licensefix.js create mode 100644 Website/src/activitys/LicensesActivity.tsx diff --git a/Website/licensefix.js b/Website/licensefix.js new file mode 100644 index 00000000..38ce641a --- /dev/null +++ b/Website/licensefix.js @@ -0,0 +1,40 @@ +const fs = require("fs"); +const path = require("path"); +const package = require(path.resolve(__dirname, "package.json")); + +const NODE_MODULES_PATH = path.resolve(__dirname, "node_modules"); +const OUTPUT = path.resolve(__dirname, "src", "util", "licenses.json"); +const allDependencies = []; + +Object.keys(package.dependencies).forEach((dependency) => { + const depPackage = require(path.resolve(__dirname, NODE_MODULES_PATH, dependency, "package.json")); + + if (depPackage) { + function getSource() { + if (depPackage.repository) { + return depPackage.repository.url ? depPackage.repository.url : null; + } else { + return null; + } + } + + function getAuthor() { + if (depPackage.author) { + return depPackage.author.name ? depPackage.author.name : null; + } else { + return null; + } + } + + allDependencies.push({ + name: depPackage.name, + author: getAuthor(), + license: depPackage.license, + description: depPackage.description, + version: depPackage.version, + source: `https://www.npmjs.com/package/${depPackage.name}`, + }); + } +}); + +fs.writeFileSync(OUTPUT, JSON.stringify(allDependencies, null, 2)); diff --git a/Website/package.json b/Website/package.json index 85edd90f..fe754aa9 100644 --- a/Website/package.json +++ b/Website/package.json @@ -13,16 +13,17 @@ "author": "Der_Googler", "license": "GPL-3.0", "scripts": { - "start:dev": "webpack-dev-server --open --config webpack.dev.ts", - "start:prod": "webpack-dev-server --open --config webpack.prod.ts", + "start:dev": "npm run licensefix && webpack-dev-server --open --config webpack.dev.ts", + "start:prod": "npm run licensefix && webpack-dev-server --open --config webpack.prod.ts", "web:dev": "webpack --config webpack.dev.ts", "web:prod": "webpack --config webpack.prod.ts", - "web:dev-app": "npm run web:dev && npm run assetfix:android-clean && npm run assetfix:android-build", - "web:prod-app": "npm run web:prod && npm run assetfix:android-clean && npm run assetfix:android-build", + "web:dev-app": "npm run licensefix && npm run web:dev && npm run assetfix:android-clean && npm run assetfix:android-build", + "web:prod-app": "npm run licensefix && npm run web:prod && npm run assetfix:android-clean && npm run assetfix:android-build", "assetfix:android-build": "node assetfix.js android --build", "assetfix:android-clean": "node assetfix.js android --clean", "assetfix:web-build": "node assetfix.js web --build", - "assetfix:web-clean": "node assetfix.js web --clean" + "assetfix:web-clean": "node assetfix.js web --clean", + "licensefix": "node licensefix.js" }, "resolutions": { "react": "^18.2.0", diff --git a/Website/src/activitys/LicensesActivity.tsx b/Website/src/activitys/LicensesActivity.tsx new file mode 100644 index 00000000..aa868f0b --- /dev/null +++ b/Website/src/activitys/LicensesActivity.tsx @@ -0,0 +1,125 @@ +import { Page } from "@Components/onsenui/Page"; +import { Toolbar } from "@Components/onsenui/Toolbar"; +import { useActivity } from "@Hooks/useActivity"; +import { useStrings } from "@Hooks/useStrings"; +import Typography from "@mui/material/Typography"; +import Button from "@mui/material/Button"; +import Card from "@mui/material/Card"; +import Stack from "@mui/material/Stack"; +import { useSettings } from "@Hooks/useSettings"; +import FlatList from "flatlist-react"; + +import li from "@Util/licenses.json"; +import { os } from "@Native/Os"; +import { useTheme } from "@Hooks/useTheme"; +import FetchTextActivity from "./FetchTextActivity"; + +const DepCard = (props: { dep: (typeof li)[0] }) => { + const { theme } = useTheme(); + const { strings } = useStrings(); + const { context } = useActivity(); + const dep = props.dep; + + const handleOpenSource = () => { + os.open(dep.source, { + target: "_blank", + features: { + color: theme.palette.primary.main, + }, + }); + }; + + const handleOpenLicense = () => { + fetch(`https://spdx.org/licenses/${dep.license}.json`) + .then((res) => { + if (res.status === 200) { + return res.json(); + } else { + throw new Error("Fetching license failed"); + } + }) + .then((json: LicenseSPX) => { + context.pushPage({ + component: FetchTextActivity, + key: "license_" + dep.license, + extra: { + raw_data: json.licenseText, + modulename: json.name, + }, + }); + }) + .catch((err) => { + os.toast(err, Toast.LENGTH_SHORT); + }); + }; + + return ( + + + + + {dep.author} + + + {dep.license} + + + + + {dep.name} + + + {dep.version} + + + {dep.description} + + + + + + + + + ); +}; + +const LicensesActivity = () => { + const { strings } = useStrings(); + const { settings } = useSettings(); + const { context } = useActivity(); + const { theme } = useTheme(); + + const renderToolbar = () => { + return ( + + + + + {strings("licenses")} + + ); + }; + + return ( + + + } + renderOnScroll + display={{ + row: true, + rowGap: "8px", + }} + /> + + + ); +}; + +export default LicensesActivity; diff --git a/Website/src/activitys/fragments/DrawerFragment.tsx b/Website/src/activitys/fragments/DrawerFragment.tsx index 64ad452b..512f68b2 100644 --- a/Website/src/activitys/fragments/DrawerFragment.tsx +++ b/Website/src/activitys/fragments/DrawerFragment.tsx @@ -15,6 +15,7 @@ import { configureSample } from "@Util/configure-sample"; import { dapiSample } from "@Util/dapi-sample"; import ModConfActivity from "@Activitys/ModConfActivity"; import ConfigurePlaygroundActivity from "@Activitys/ConfigurePlaygroundActivity"; +import LicensesActivity from "@Activitys/LicensesActivity"; type Props = { renderToolbar: () => JSX.Element; @@ -122,22 +123,18 @@ export const DrawerFragment = (props: Props) => { hide(); }} > - + { pushPage({ - component: FetchTextActivity, + component: LicensesActivity, key: "license", - extra: { - title: "License", - url: "https://raw.githubusercontent.com/wiki/DerGoogler/MMRL/License.md", - }, }); hide(); }} > - + { diff --git a/Website/src/locales/de.json b/Website/src/locales/de.json index f86eb92b..b4730e5c 100644 --- a/Website/src/locales/de.json +++ b/Website/src/locales/de.json @@ -4,6 +4,7 @@ "search": "Suche", "updates": "Updates", "versions": "Versionen", + "licenses": "Lizenzen", "license": "Lizenz", "search_modules": "Module durchsuchen", "settings": "Einstellungen", diff --git a/Website/src/locales/en.json b/Website/src/locales/en.json index 51010f9e..a9f2bc48 100644 --- a/Website/src/locales/en.json +++ b/Website/src/locales/en.json @@ -4,6 +4,7 @@ "search": "Search", "updates": "Updates", "versions": "Versions", + "licenses": "Licenses", "license": "License", "search_modules": "Search modules", "settings": "Settings", diff --git a/Website/src/typings/global.d.ts b/Website/src/typings/global.d.ts index 70a93ed7..d9b41f3d 100644 --- a/Website/src/typings/global.d.ts +++ b/Website/src/typings/global.d.ts @@ -213,6 +213,30 @@ declare global { changelog: string; } + export interface LicenseSPX { + isDeprecatedLicenseId: boolean + isFsfLibre: boolean + licenseText: string + standardLicenseTemplate: string + name: string + licenseId: string + crossRef: CrossRef[] + seeAlso: string[] + isOsiApproved: boolean + licenseTextHtml: string + } + + export interface CrossRef { + match: string + url: string + isValid: boolean + isLive: boolean + timestamp: string + isWayBackLink: boolean + order: number + } + + // OnsenUI Types /** * @extends {Event} diff --git a/Website/src/util/licenses.json b/Website/src/util/licenses.json index ce21ba69..5c2ae0ee 100644 --- a/Website/src/util/licenses.json +++ b/Website/src/util/licenses.json @@ -1,186 +1,447 @@ [ - { - "name": "@emotion/react", - "description": "There is no description", - "author": "Emotion Contributors", - "version": "11.9.3", - "license": "MIT", - "repository": "https://www.npmjs.com/package/@emotion/react" - }, - { - "name": "@emotion/styled", - "description": "styled API for emotion", - "author": "null", - "version": "11.9.3", - "license": "MIT", - "repository": "https://www.npmjs.com/package/@emotion/styled" - }, - { - "name": "@js.properties/properties", - "description": "JavaScript .properties parser and stringifier", - "author": "pallxk ", - "version": "0.5.4", - "license": "MIT", - "repository": "https://www.npmjs.com/package/@js.properties/properties" - }, - { - "name": "@mui/icons-material", - "description": "Material Design icons distributed as SVG React components.", - "author": "MUI Team", - "version": "5.8.4", - "license": "MIT", - "repository": "https://www.npmjs.com/package/@mui/icons-material" - }, - { - "name": "@mui/material", - "description": "React components that implement Google's Material Design.", - "author": "MUI Team", - "version": "5.8.7", - "license": "MIT", - "repository": "https://www.npmjs.com/package/@mui/material" - }, - { - "name": "axios", - "description": "Promise based HTTP client for the browser and node.js", - "author": "Matt Zabriskie", - "version": "0.27.2", - "license": "MIT", - "repository": "https://www.npmjs.com/package/axios" - }, - { - "name": "bota64", - "description": "It's my first custom encoding :(", - "author": "Der_Googler ", - "version": "1.0.7", - "license": "MIT", - "repository": "https://www.npmjs.com/package/bota64" - }, - { - "name": "googlers-tools", - "description": "My own tools / scripts that i use.", - "author": "Der_Googler ", - "version": "1.2.8", - "license": "GPL-3.0", - "repository": "https://www.npmjs.com/package/googlers-tools" - }, - { - "name": "highlight.js", - "description": "Syntax highlighting with language autodetection.", - "author": "Josh Goebel ", - "version": "11.6.0", - "license": "BSD-3-Clause", - "repository": "https://www.npmjs.com/package/highlight.js" - }, - { - "name": "jss", - "description": "A lib for generating Style Sheets with JavaScript.", - "author": "JSS Team", - "version": "10.9.0", - "license": "MIT", - "repository": "https://www.npmjs.com/package/jss" - }, - { - "name": "jss-preset-default", - "description": "Default preset for JSS with selected plugins.", - "author": "JSS Team", - "version": "10.9.0", - "license": "MIT", - "repository": "https://www.npmjs.com/package/jss-preset-default" - }, - { - "name": "localized-strings", - "description": "Simple module to localize the strings of any JS based program using the same syntax used in the ReactLocalization and ReactNativeLocalization module, use 'npm run build' before publishing", - "author": "Stefano Falda (http://www.babisoft.com)", - "version": "0.2.4", - "license": "MIT", - "repository": "https://www.npmjs.com/package/localized-strings" - }, - { - "name": "markdown-to-jsx", - "description": "Convert markdown to JSX with ease for React and React-like projects. Super lightweight and highly configurable.", - "author": "Evan Jacobs ", - "version": "7.1.7", - "license": "MIT", - "repository": "https://www.npmjs.com/package/markdown-to-jsx" - }, - { - "name": "marked-react", - "description": "Render Markdown as React components", - "author": "sibiraj-s", - "version": "1.1.2", - "license": "MIT", - "repository": "https://www.npmjs.com/package/marked-react" - }, - { - "name": "material-icons", - "description": "Latest icon fonts and CSS for self-hosting material design icons.", - "author": "null", - "version": "1.11.4", - "license": "Apache-2.0", - "repository": "https://www.npmjs.com/package/material-icons" - }, - { - "name": "object-assign", - "description": "ES2015 `Object.assign()` ponyfill", - "author": "Sindre Sorhus", - "version": "4.1.1", - "license": "MIT", - "repository": "https://www.npmjs.com/package/object-assign" - }, - { - "name": "onsenui", - "description": "HTML5 Mobile Framework & UI Components", - "author": "null", - "version": "2.12.1", - "license": "Apache-2.0", - "repository": "https://www.npmjs.com/package/onsenui" - }, - { - "name": "react", - "description": "React is a JavaScript library for building user interfaces.", - "author": "null", - "version": "18.2.0", - "license": "MIT", - "repository": "https://www.npmjs.com/package/react" - }, - { - "name": "react-device-detect", - "description": "Detect device type and render your component according to it", - "author": "Michael Laktionov", - "version": "2.2.2", - "license": "MIT", - "repository": "https://www.npmjs.com/package/react-device-detect" - }, - { - "name": "react-disappear", - "description": "Detects if the inner children are visible", - "author": "Der_Googler", - "version": "1.0.0", - "license": "null", - "repository": "https://www.npmjs.com/package/react-disappear" - }, - { - "name": "react-dom", - "description": "React package for working with the DOM.", - "author": "null", - "version": "18.2.0", - "license": "MIT", - "repository": "https://www.npmjs.com/package/react-dom" - }, - { - "name": "react-onsenui", - "description": "Onsen UI - React Components for Hybrid Cordova/PhoneGap Apps with Material Design and iOS UI components", - "author": "Onsen UI Team ", - "version": "1.12.0", - "license": "Apache-2.0", - "repository": "https://www.npmjs.com/package/react-onsenui" - }, - { - "name": "react-syntax-highlighter", - "description": "syntax highlighting component for react with prismjs or highlightjs ast using inline styles", - "author": "Conor Hastings", - "version": "15.5.0", - "license": "MIT", - "repository": "https://www.npmjs.com/package/react-syntax-highlighter" - } -] + { + "name": "@babel/runtime", + "author": null, + "license": "MIT", + "description": "babel's modular runtime helpers", + "version": "7.23.8", + "source": "https://www.npmjs.com/package/@babel/runtime" + }, + { + "name": "@babel/standalone", + "author": null, + "license": "MIT", + "description": "Standalone build of Babel for use in non-Node.js environments.", + "version": "7.23.8", + "source": "https://www.npmjs.com/package/@babel/standalone" + }, + { + "name": "@emotion/react", + "author": null, + "license": "MIT", + "version": "11.11.3", + "source": "https://www.npmjs.com/package/@emotion/react" + }, + { + "name": "@emotion/styled", + "author": null, + "license": "MIT", + "description": "styled API for emotion", + "version": "11.11.0", + "source": "https://www.npmjs.com/package/@emotion/styled" + }, + { + "name": "@giscus/react", + "author": null, + "version": "2.4.0", + "source": "https://www.npmjs.com/package/@giscus/react" + }, + { + "name": "@monaco-editor/react", + "author": null, + "license": "MIT", + "description": "Monaco Editor for React - use the monaco-editor in any React application without needing to use webpack (or rollup/parcel/etc) configuration files / plugins", + "version": "4.6.0", + "source": "https://www.npmjs.com/package/@monaco-editor/react" + }, + { + "name": "@mui/icons-material", + "author": null, + "license": "MIT", + "description": "Material Design icons distributed as SVG React components.", + "version": "5.15.4", + "source": "https://www.npmjs.com/package/@mui/icons-material" + }, + { + "name": "@mui/lab", + "author": null, + "license": "MIT", + "description": "Laboratory for new MUI modules.", + "version": "5.0.0-alpha.160", + "source": "https://www.npmjs.com/package/@mui/lab" + }, + { + "name": "@mui/material", + "author": null, + "license": "MIT", + "description": "Material UI is an open-source React component library that implements Google's Material Design. It's comprehensive and can be used in production out of the box.", + "version": "5.15.4", + "source": "https://www.npmjs.com/package/@mui/material" + }, + { + "name": "@nyariv/sandboxjs", + "author": null, + "license": "MIT", + "description": "Javascript sandboxing library.", + "version": "0.8.23", + "source": "https://www.npmjs.com/package/@nyariv/sandboxjs" + }, + { + "name": "@primer/octicons-react", + "author": null, + "license": "MIT", + "description": "A scalable set of icons handcrafted with <3 by GitHub.", + "version": "19.8.0", + "source": "https://www.npmjs.com/package/@primer/octicons-react" + }, + { + "name": "@wasmer/wasmfs", + "author": null, + "license": "MIT", + "description": "Isomorphic library to provide a sandboxed node fs implementation for Node and Browsers. 📂", + "version": "0.12.0", + "source": "https://www.npmjs.com/package/@wasmer/wasmfs" + }, + { + "name": "ace-builds", + "author": null, + "license": "BSD-3-Clause", + "description": "Ace (Ajax.org Cloud9 Editor)", + "version": "1.32.3", + "source": "https://www.npmjs.com/package/ace-builds" + }, + { + "name": "ajv", + "author": null, + "license": "MIT", + "description": "Another JSON Schema Validator", + "version": "8.12.0", + "source": "https://www.npmjs.com/package/ajv" + }, + { + "name": "ansi-to-react", + "author": null, + "license": "BSD-3-Clause", + "description": "ANSI to React Elements", + "version": "6.1.6", + "source": "https://www.npmjs.com/package/ansi-to-react" + }, + { + "name": "axios", + "author": null, + "license": "MIT", + "description": "Promise based HTTP client for the browser and node.js", + "version": "1.6.5", + "source": "https://www.npmjs.com/package/axios" + }, + { + "name": "default-composer", + "author": null, + "license": "MIT", + "description": "A JavaScript library that allows you to set default values for nested objects", + "version": "0.6.0", + "source": "https://www.npmjs.com/package/default-composer" + }, + { + "name": "eruda", + "author": null, + "license": "MIT", + "description": "Console for Mobile Browsers", + "version": "3.0.1", + "source": "https://www.npmjs.com/package/eruda" + }, + { + "name": "flatlist-react", + "author": null, + "license": "MIT", + "description": "A helpful utility component to handle lists in react like a champ", + "version": "1.5.14", + "source": "https://www.npmjs.com/package/flatlist-react" + }, + { + "name": "framer-motion", + "author": null, + "license": "MIT", + "description": "A simple and powerful JavaScript animation library", + "version": "10.18.0", + "source": "https://www.npmjs.com/package/framer-motion" + }, + { + "name": "fs-monkey", + "author": null, + "license": "Unlicense", + "description": "Monkey patches for file system related things.", + "version": "1.0.5", + "source": "https://www.npmjs.com/package/fs-monkey" + }, + { + "name": "googlers-tools", + "author": null, + "license": "GPL-3.0", + "description": "My own tools / scripts that I use.", + "version": "1.4.5", + "source": "https://www.npmjs.com/package/googlers-tools" + }, + { + "name": "highlight.js", + "author": null, + "license": "BSD-3-Clause", + "description": "Syntax highlighting with language autodetection.", + "version": "11.9.0", + "source": "https://www.npmjs.com/package/highlight.js" + }, + { + "name": "ini", + "author": null, + "license": "ISC", + "description": "An ini encoder/decoder for node", + "version": "4.1.1", + "source": "https://www.npmjs.com/package/ini" + }, + { + "name": "install", + "author": "Ben Newman", + "license": "MIT", + "description": "Minimal JavaScript module loader", + "version": "0.13.0", + "source": "https://www.npmjs.com/package/install" + }, + { + "name": "localforage", + "author": null, + "license": "Apache-2.0", + "description": "Offline storage, improved.", + "version": "1.10.0", + "source": "https://www.npmjs.com/package/localforage" + }, + { + "name": "localized-strings", + "author": null, + "license": "MIT", + "description": "Simple module to localize the strings of any JS based program using the same syntax used in the ReactLocalization and ReactNativeLocalization module, use 'npm run build' before publishing", + "version": "0.2.4", + "source": "https://www.npmjs.com/package/localized-strings" + }, + { + "name": "markdown-to-jsx", + "author": null, + "license": "MIT", + "description": "Convert markdown to JSX with ease for React and React-like projects. Super lightweight and highly configurable.", + "version": "7.4.0", + "source": "https://www.npmjs.com/package/markdown-to-jsx" + }, + { + "name": "marked-react", + "author": null, + "license": "MIT", + "description": "Render Markdown as React components", + "version": "1.4.0", + "source": "https://www.npmjs.com/package/marked-react" + }, + { + "name": "material-icons", + "author": null, + "license": "Apache-2.0", + "description": "Latest icon fonts and CSS for self-hosting material design icons.", + "version": "1.13.12", + "source": "https://www.npmjs.com/package/material-icons" + }, + { + "name": "material-ui-confirm", + "author": null, + "license": "MIT", + "description": "Higher order component for straightforward use of @material-ui/core confirmation dialogs.", + "version": "3.0.10", + "source": "https://www.npmjs.com/package/material-ui-confirm" + }, + { + "name": "monaco-editor", + "author": null, + "license": "MIT", + "description": "A browser based code editor", + "version": "0.45.0", + "source": "https://www.npmjs.com/package/monaco-editor" + }, + { + "name": "monaco-editor-core", + "author": null, + "license": "MIT", + "description": "A browser based code editor", + "version": "0.43.0", + "source": "https://www.npmjs.com/package/monaco-editor-core" + }, + { + "name": "monaco-languageclient", + "author": "TypeFox GmbH", + "license": "MIT", + "description": "Monaco Language client implementation", + "version": "6.6.1", + "source": "https://www.npmjs.com/package/monaco-languageclient" + }, + { + "name": "npm", + "author": null, + "license": "Artistic-2.0", + "description": "a package manager for JavaScript", + "version": "9.9.2", + "source": "https://www.npmjs.com/package/npm" + }, + { + "name": "object-assign", + "author": "Sindre Sorhus", + "license": "MIT", + "description": "ES2015 `Object.assign()` ponyfill", + "version": "4.1.1", + "source": "https://www.npmjs.com/package/object-assign" + }, + { + "name": "onsenui", + "author": null, + "license": "Apache-2.0", + "description": "HTML5 Mobile Framework & UI Components", + "version": "2.12.8", + "source": "https://www.npmjs.com/package/onsenui" + }, + { + "name": "properties-file", + "author": null, + "license": "MIT", + "description": ".properties file parser, editor, formatter and Webpack loader.", + "version": "3.3.16", + "source": "https://www.npmjs.com/package/properties-file" + }, + { + "name": "react", + "author": null, + "license": "MIT", + "description": "React is a JavaScript library for building user interfaces.", + "version": "18.2.0", + "source": "https://www.npmjs.com/package/react" + }, + { + "name": "react-ace", + "author": null, + "license": "MIT", + "description": "A react component for Ace Editor", + "version": "10.1.0", + "source": "https://www.npmjs.com/package/react-ace" + }, + { + "name": "react-device-detect", + "author": "Michael Laktionov", + "license": "MIT", + "description": "Detect device type and render your component according to it", + "version": "2.2.3", + "source": "https://www.npmjs.com/package/react-device-detect" + }, + { + "name": "react-disappear", + "author": null, + "license": "MIT", + "description": "Detects if the inner children are visible", + "version": "1.1.3", + "source": "https://www.npmjs.com/package/react-disappear" + }, + { + "name": "react-dom", + "author": null, + "license": "MIT", + "description": "React package for working with the DOM.", + "version": "18.2.0", + "source": "https://www.npmjs.com/package/react-dom" + }, + { + "name": "react-fast-marquee", + "author": null, + "license": "MIT", + "description": "A lightweight React component that utilizes the power of CSS animations to create silky smooth marquees.", + "version": "1.6.2", + "source": "https://www.npmjs.com/package/react-fast-marquee" + }, + { + "name": "react-from-json", + "author": null, + "license": "MIT", + "description": "Declare your React component tree in JSON", + "version": "0.7.2", + "source": "https://www.npmjs.com/package/react-from-json" + }, + { + "name": "react-jsx-parser", + "author": null, + "license": "MIT", + "description": "A React component which can parse JSX and output rendered React Components", + "version": "1.29.0", + "source": "https://www.npmjs.com/package/react-jsx-parser" + }, + { + "name": "react-onsenui", + "author": null, + "license": "Apache-2.0", + "description": "Onsen UI - React Components for Hybrid Cordova/PhoneGap Apps with Material Design and iOS UI components", + "version": "1.13.3", + "source": "https://www.npmjs.com/package/react-onsenui" + }, + { + "name": "react-render-tools", + "author": null, + "license": "GPL-3.0", + "description": "Simple tools to make react render easier to use", + "version": "1.0.1", + "source": "https://www.npmjs.com/package/react-render-tools" + }, + { + "name": "react-router-dom", + "author": null, + "license": "MIT", + "description": "Declarative routing for React web applications", + "version": "6.21.2", + "source": "https://www.npmjs.com/package/react-router-dom" + }, + { + "name": "react-syntax-highlighter", + "author": null, + "license": "MIT", + "description": "syntax highlighting component for react with prismjs or highlightjs ast using inline styles", + "version": "15.5.0", + "source": "https://www.npmjs.com/package/react-syntax-highlighter" + }, + { + "name": "react-zoom-pan-pinch", + "author": null, + "license": "MIT", + "description": "Zoom and pan html elements in easy way", + "version": "3.3.0", + "source": "https://www.npmjs.com/package/react-zoom-pan-pinch" + }, + { + "name": "textarea-markdown-editor", + "author": null, + "license": "MIT", + "description": "UI headless React markdown editor using only textarea", + "version": "1.0.4", + "source": "https://www.npmjs.com/package/textarea-markdown-editor" + }, + { + "name": "underscore", + "author": null, + "license": "MIT", + "description": "JavaScript's functional programming helper library.", + "version": "1.13.6", + "source": "https://www.npmjs.com/package/underscore" + }, + { + "name": "uninstall", + "author": null, + "license": "MIT", + "description": "", + "version": "0.0.0", + "source": "https://www.npmjs.com/package/uninstall" + }, + { + "name": "usehooks-ts", + "author": null, + "license": "MIT", + "description": "React hook library, ready to use, written in Typescript.", + "version": "2.9.2", + "source": "https://www.npmjs.com/package/usehooks-ts" + }, + { + "name": "yaml", + "author": null, + "license": "ISC", + "description": "JavaScript parser and stringifier for YAML", + "version": "2.3.4", + "source": "https://www.npmjs.com/package/yaml" + } +] \ No newline at end of file