diff --git a/.eslintrc.js b/.eslintrc.js deleted file mode 100644 index 4a96cb856e..0000000000 --- a/.eslintrc.js +++ /dev/null @@ -1,224 +0,0 @@ -/** @type {import('eslint').Linter.Config} */ -module.exports = { - root: true, - plugins: ['jsdoc', 'regexp'], - extends: 'eslint:recommended', - rules: { - 'no-use-before-define': ['error', { 'functions': false, 'classes': false }], - - // stylistic rules - 'brace-style': ['warn', '1tbs', { allowSingleLine: true }], - 'curly': ['warn', 'all'], - 'eol-last': 'warn', - 'no-multiple-empty-lines': ['warn', { max: 2, maxBOF: 0, maxEOF: 0 }], - 'no-tabs': ['warn', { allowIndentationTabs: true }], - 'no-var': 'error', - 'one-var': ['warn', 'never'], - 'quotes': ['warn', 'single', { avoidEscape: true, allowTemplateLiterals: true }], - 'semi': 'warn', - 'wrap-iife': 'warn', - - // spaces and indentation - 'arrow-spacing': 'warn', - 'block-spacing': 'warn', - 'comma-spacing': 'warn', - 'computed-property-spacing': 'warn', - 'func-call-spacing': 'warn', - 'generator-star-spacing': 'warn', - 'indent': ['warn', 'tab', { SwitchCase: 1 }], - 'key-spacing': 'warn', - 'keyword-spacing': 'warn', - 'no-multi-spaces': ['warn', { ignoreEOLComments: true }], - 'no-trailing-spaces': 'warn', - 'no-whitespace-before-property': 'warn', - 'object-curly-spacing': ['warn', 'always'], - 'rest-spread-spacing': 'warn', - 'semi-spacing': 'warn', - 'space-before-blocks': 'warn', - 'space-before-function-paren': ['warn', { named: 'never' }], - 'space-in-parens': 'warn', - 'space-infix-ops': ['warn', { int32Hint: true }], - 'space-unary-ops': 'warn', - 'switch-colon-spacing': 'warn', - 'template-curly-spacing': 'warn', - 'yield-star-spacing': 'warn', - - // JSDoc - 'jsdoc/check-alignment': 'warn', - 'jsdoc/check-syntax': 'warn', - 'jsdoc/check-param-names': 'warn', - 'jsdoc/require-hyphen-before-param-description': ['warn', 'never'], - 'jsdoc/check-tag-names': 'warn', - 'jsdoc/check-types': 'warn', - 'jsdoc/empty-tags': 'warn', - 'jsdoc/newline-after-description': 'warn', - 'jsdoc/require-param-name': 'warn', - 'jsdoc/require-property-name': 'warn', - - // regexp - 'regexp/no-dupe-disjunctions': 'error', - 'regexp/no-empty-alternative': 'error', - 'regexp/no-empty-capturing-group': 'error', - 'regexp/no-empty-lookarounds-assertion': 'error', - 'regexp/no-lazy-ends': 'error', - 'regexp/no-obscure-range': 'error', - 'regexp/no-optional-assertion': 'error', - 'regexp/no-standalone-backslash': 'error', - 'regexp/no-super-linear-backtracking': 'error', - 'regexp/no-unused-capturing-group': 'error', - 'regexp/no-zero-quantifier': 'error', - 'regexp/optimal-lookaround-quantifier': 'error', - - 'regexp/match-any': 'warn', - 'regexp/negation': 'warn', - 'regexp/no-dupe-characters-character-class': 'warn', - 'regexp/no-trivially-nested-assertion': 'warn', - 'regexp/no-trivially-nested-quantifier': 'warn', - 'regexp/no-useless-character-class': 'warn', - 'regexp/no-useless-flag': 'warn', - 'regexp/no-useless-lazy': 'warn', - 'regexp/no-useless-range': 'warn', - 'regexp/prefer-d': ['warn', { insideCharacterClass: 'ignore' }], - 'regexp/prefer-plus-quantifier': 'warn', - 'regexp/prefer-question-quantifier': 'warn', - 'regexp/prefer-star-quantifier': 'warn', - 'regexp/prefer-w': 'warn', - 'regexp/sort-alternatives': 'warn', - 'regexp/sort-flags': 'warn', - 'regexp/strict': 'warn', - - // I turned this rule off because we use `hasOwnProperty` in a lot of places - // TODO: Think about re-enabling this rule - 'no-prototype-builtins': 'off', - // TODO: Think about re-enabling this rule - 'no-inner-declarations': 'off', - // TODO: Think about re-enabling this rule - 'no-sparse-arrays': 'off', - - // turning off some regex rules - // these are supposed to protect against accidental use but we need those quite often - 'no-control-regex': 'off', - 'no-empty-character-class': 'off', - 'no-useless-escape': 'off' - }, - settings: { - jsdoc: { mode: 'typescript' }, - regexp: { - // allow alphanumeric and cyrillic ranges - allowedCharacterRanges: ['alphanumeric', 'а-я', 'А-Я'] - } - }, - ignorePatterns: [ - '*.min.js', - 'vendor/', - 'docs/', - 'components.js', - 'prism.js', - 'node_modules' - ], - - overrides: [ - { - // Languages and plugins - files: [ - 'components/*.js', - 'plugins/*/prism-*.js' - ], - excludedFiles: 'components/index.js', - env: { - browser: true, - node: true, - worker: true - }, - globals: { - 'Prism': true, - // Allow Set and Map. They are partially supported by IE11 - 'Set': true, - 'Map': true - }, - rules: { - 'no-var': 'off' - } - }, - { - // `loadLanguages` function for Node.js - files: 'components/index.js', - env: { - es6: true, - node: true - }, - parserOptions: { - ecmaVersion: 6 - }, - globals: { - 'Prism': true - } - }, - { - // Gulp and Danger - files: 'dependencies.js', - env: { - browser: true, - node: true - }, - rules: { - 'no-var': 'off' - } - }, - { - // The scripts that run on our website - files: 'assets/*.js', - env: { - browser: true - }, - globals: { - 'components': true, - 'getLoader': true, - 'PrefixFree': true, - 'Prism': true, - 'Promise': true, - 'saveAs': true, - '$': true, - '$$': true, - '$u': true - }, - rules: { - 'no-var': 'off' - } - }, - { - // Test files - files: 'tests/**', - env: { - es6: true, - mocha: true, - node: true - }, - parserOptions: { - ecmaVersion: 2018 - } - }, - { - // Gulp, Danger, and benchmark - files: [ - 'gulpfile.js/**', - 'dangerfile.js', - 'benchmark/**', - ], - env: { - es6: true, - node: true - }, - parserOptions: { - ecmaVersion: 2018 - } - }, - { - // This file - files: '.eslintrc.js', - env: { - node: true - } - }, - ] -}; diff --git a/.github/ISSUE_TEMPLATE/bug_report.md b/.github/ISSUE_TEMPLATE/bug_report.md index 556c3df877..5e7429fe2f 100644 --- a/.github/ISSUE_TEMPLATE/bug_report.md +++ b/.github/ISSUE_TEMPLATE/bug_report.md @@ -4,10 +4,10 @@ about: Create a report to help us improve. title: '' labels: '' assignees: '' - --- **Information:** + - Prism version: [e.g. 1.14, latest from the download page, etc.] - Plugins: [a list of plugins you are using or 'none'] - Environment: [e.g. Browser, Node, Webpack] diff --git a/.github/ISSUE_TEMPLATE/config.yml b/.github/ISSUE_TEMPLATE/config.yml index 5987d5973a..b685d31c5b 100644 --- a/.github/ISSUE_TEMPLATE/config.yml +++ b/.github/ISSUE_TEMPLATE/config.yml @@ -1,4 +1,4 @@ contact_links: - - name: Questions and Help - url: https://github.com/PrismJS/prism/discussions/categories/q-a - about: This issue tracker is not for support questions. Please refer to the Prism's Discussion tab. + - name: Questions and Help + url: https://github.com/PrismJS/prism/discussions/categories/q-a + about: This issue tracker is not for support questions. Please refer to the Prism's Discussion tab. diff --git a/.github/ISSUE_TEMPLATE/feature_request.md b/.github/ISSUE_TEMPLATE/feature_request.md index a077152dd0..b34ed4e305 100644 --- a/.github/ISSUE_TEMPLATE/feature_request.md +++ b/.github/ISSUE_TEMPLATE/feature_request.md @@ -4,7 +4,6 @@ about: Suggest a new feature for Prism. title: '' labels: enhancement assignees: '' - --- **Motivation** diff --git a/.github/ISSUE_TEMPLATE/highlighting-bug-report.md b/.github/ISSUE_TEMPLATE/highlighting-bug-report.md index 1e8c5e6fde..974d86d347 100644 --- a/.github/ISSUE_TEMPLATE/highlighting-bug-report.md +++ b/.github/ISSUE_TEMPLATE/highlighting-bug-report.md @@ -1,14 +1,14 @@ --- name: Highlighting bug report about: Does Prism highlight parts of your code incorrectly or is a language feature - not supported? + not supported? title: '' labels: language-definitions assignees: '' - --- **Information** + - Language: [e.g. C++, JavaScript, YAML, etc.] - Plugins: [a list of plugins you are using or 'none'] @@ -26,6 +26,7 @@ A clear and concise description of what is being highlighted incorrectly and how + [Test page]()
diff --git a/.github/ISSUE_TEMPLATE/new-language-request.md b/.github/ISSUE_TEMPLATE/new-language-request.md index 8b9b8ff70d..2f1b52c92e 100644 --- a/.github/ISSUE_TEMPLATE/new-language-request.md +++ b/.github/ISSUE_TEMPLATE/new-language-request.md @@ -4,7 +4,6 @@ about: Suggest a new language Prism should support. title: '' labels: language-definitions, new language assignees: '' - --- **Language** diff --git a/.github/dependabot.yml b/.github/dependabot.yml index 5ace4600a1..b18fd29357 100644 --- a/.github/dependabot.yml +++ b/.github/dependabot.yml @@ -1,6 +1,6 @@ version: 2 updates: - - package-ecosystem: "github-actions" - directory: "/" + - package-ecosystem: 'github-actions' + directory: '/' schedule: - interval: "weekly" + interval: 'weekly' diff --git a/.github/workflows/danger.yml b/.github/workflows/danger.yml index 232db269ab..66ae11a758 100644 --- a/.github/workflows/danger.yml +++ b/.github/workflows/danger.yml @@ -5,7 +5,6 @@ on: jobs: run: - runs-on: ubuntu-latest steps: diff --git a/.github/workflows/test.yml b/.github/workflows/test.yml index 3306eaa6a7..64008b0ff6 100644 --- a/.github/workflows/test.yml +++ b/.github/workflows/test.yml @@ -2,21 +2,20 @@ name: CI on: push: - branches: [ master ] + branches: [v2] pull_request: - branches: [ master ] + branches: [v2] permissions: contents: read jobs: tests: - runs-on: ubuntu-latest strategy: matrix: - node-version: [10.x, 12.x, 14.x, 16.x] + node-version: [18.x, 20.x, 22.x] steps: - uses: actions/checkout@v3 @@ -28,12 +27,11 @@ jobs: - run: npm test build: - runs-on: ubuntu-latest strategy: matrix: - node-version: [10.x, 12.x, 14.x, 16.x] + node-version: [18.x, 20.x, 22.x] steps: - uses: actions/checkout@v3 @@ -43,33 +41,27 @@ jobs: node-version: ${{ matrix.node-version }} - run: npm ci - run: npm run build - - run: | - git add --all && \ - git diff-index --cached HEAD --stat --exit-code || \ - (echo && echo "The above files changed because the build is not up to date." && echo "Please rebuild Prism." && exit 1) lint: - runs-on: ubuntu-latest steps: - uses: actions/checkout@v3 - - name: Use Node.js 14.x + - name: Use Node.js 18.x uses: actions/setup-node@v3 with: - node-version: 14.x + node-version: 18.x - run: npm ci - run: npm run lint:ci coverage: - runs-on: ubuntu-latest steps: - uses: actions/checkout@v3 - - name: Use Node.js 14.x + - name: Use Node.js 18.x uses: actions/setup-node@v3 with: - node-version: 14.x + node-version: 18.x - run: npm ci - run: npm run regex-coverage diff --git a/.github/workflows/website-rebuild.yml b/.github/workflows/website-rebuild.yml new file mode 100644 index 0000000000..556eede069 --- /dev/null +++ b/.github/workflows/website-rebuild.yml @@ -0,0 +1,14 @@ +name: Rebuild Website + +on: + push: + branches: + # FIXME: Use the main branch when v2 is out + - v2 + +jobs: + trigger-rebuild: + runs-on: ubuntu-latest + steps: + - name: Trigger Netlify Build Hook + run: curl -X POST -d "{}" "${{ secrets.WEBSITE_BUILD_HOOK_URL }}?trigger_title=The+Prism+code+has+been+updated" diff --git a/.gitignore b/.gitignore index f3e4015150..2bd7115e0c 100755 --- a/.gitignore +++ b/.gitignore @@ -3,6 +3,8 @@ node_modules .idea/ .DS_Store .eslintcache +dist/ +types/ benchmark/remotes/ benchmark/downloads/ diff --git a/.jsdoc.json b/.jsdoc.json index 3d27a4582f..a21a98c12a 100644 --- a/.jsdoc.json +++ b/.jsdoc.json @@ -1,16 +1,10 @@ { - "plugins": [ - "plugins/markdown", - "./gulpfile.js/docs.js" - ], + "plugins": ["plugins/markdown", "./gulpfile.js/docs.js"], "opts": { "destination": "./docs", "encoding": "utf8", "template": "./node_modules/docdash", - "access": [ - "public", - "protected" - ] + "access": ["public", "protected"] }, "recurseDepth": 10, "source": { @@ -19,10 +13,7 @@ }, "tags": { "allowUnknownTags": true, - "dictionaries": [ - "jsdoc", - "closure" - ] + "dictionaries": ["jsdoc", "closure"] }, "templates": { "cleverLinks": true, @@ -39,9 +30,7 @@ "wrap": false, "typedefs": true, "private": false, - "scripts": [ - "styles/overwrites.css" - ], + "scripts": ["styles/overwrites.css"], "openGraph": { "title": "Prism generated API documentation", "type": "website", diff --git a/.npmignore b/.npmignore index cece8f06da..ea5b43e059 100644 --- a/.npmignore +++ b/.npmignore @@ -6,21 +6,16 @@ hide-*.js CNAME .github/ benchmark/ -assets/ -docs/ -examples/ tests/ *.tgz *.html *.svg -bower.json composer.json dangerfile.js -gulpfile.js .editorconfig .gitattributes .travis.yml -.eslintrc.js +eslint.config.mjs .eslintcache .jsdoc.json MAINTAINERS.md diff --git a/.prettierrc.js b/.prettierrc.js new file mode 100644 index 0000000000..0c1a55adb6 --- /dev/null +++ b/.prettierrc.js @@ -0,0 +1,45 @@ +/** + * @see https://prettier.io/docs/configuration + * @type {import("prettier").Config} + */ +export default { + plugins: [ + '@ianvs/prettier-plugin-sort-imports', // Consider https://www.npmjs.com/package/prettier-plugin-organize-imports as an alternative + 'prettier-plugin-brace-style', + 'prettier-plugin-space-before-function-paren', + 'prettier-plugin-merge', + ], + importOrder: [ + '', // Node.js built-in modules + '', // Imports not matched by other special words or groups. + '^\\.\\./', // Parent imports + '^\\./', // Sibling imports + '^\\.$', // Index file + '', // Type imports + ], + braceStyle: 'stroustrup', + arrowParens: 'avoid', + bracketSpacing: true, + endOfLine: 'auto', + semi: true, + singleQuote: true, + tabWidth: 4, + useTabs: true, + trailingComma: 'es5', + quoteProps: 'preserve', + printWidth: 100, + overrides: [ + { + files: ['*.yml', '*.yaml'], + options: { + tabWidth: 2, + }, + }, + { + files: '*.css', + options: { + singleQuote: false, + }, + }, + ], +}; diff --git a/.vscode/settings.json b/.vscode/settings.json new file mode 100644 index 0000000000..b1b47354b6 --- /dev/null +++ b/.vscode/settings.json @@ -0,0 +1,6 @@ +{ + "editor.formatOnSave": true, + "editor.formatOnSaveMode": "file", + "editor.defaultFormatter": "esbenp.prettier-vscode", + "prettier.enable": true +} diff --git a/CHANGELOG.md b/CHANGELOG.md index e6a8659011..1065fa0d96 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -4,2885 +4,2912 @@ ### New components -* __BBj__ ([#3511](https://github.com/PrismJS/prism/issues/3511)) [`1134bdfc`](https://github.com/PrismJS/prism/commit/1134bdfc) -* __BQN__ ([#3515](https://github.com/PrismJS/prism/issues/3515)) [`859f99a0`](https://github.com/PrismJS/prism/commit/859f99a0) -* __Cilk/C__ & __Cilk/C++__ ([#3522](https://github.com/PrismJS/prism/issues/3522)) [`c8462a29`](https://github.com/PrismJS/prism/commit/c8462a29) -* __Gradle__ ([#3443](https://github.com/PrismJS/prism/issues/3443)) [`32119823`](https://github.com/PrismJS/prism/commit/32119823) -* __METAFONT__ ([#3465](https://github.com/PrismJS/prism/issues/3465)) [`2815f699`](https://github.com/PrismJS/prism/commit/2815f699) -* __WGSL__ ([#3455](https://github.com/PrismJS/prism/issues/3455)) [`4c87d418`](https://github.com/PrismJS/prism/commit/4c87d418) +- **BBj** ([#3511](https://github.com/PrismJS/prism/issues/3511)) [`1134bdfc`](https://github.com/PrismJS/prism/commit/1134bdfc) +- **BQN** ([#3515](https://github.com/PrismJS/prism/issues/3515)) [`859f99a0`](https://github.com/PrismJS/prism/commit/859f99a0) +- **Cilk/C** & **Cilk/C++** ([#3522](https://github.com/PrismJS/prism/issues/3522)) [`c8462a29`](https://github.com/PrismJS/prism/commit/c8462a29) +- **Gradle** ([#3443](https://github.com/PrismJS/prism/issues/3443)) [`32119823`](https://github.com/PrismJS/prism/commit/32119823) +- **METAFONT** ([#3465](https://github.com/PrismJS/prism/issues/3465)) [`2815f699`](https://github.com/PrismJS/prism/commit/2815f699) +- **WGSL** ([#3455](https://github.com/PrismJS/prism/issues/3455)) [`4c87d418`](https://github.com/PrismJS/prism/commit/4c87d418) ### Updated components -* __AsciiDoc__ - * Some regexes are too greedy ([#3481](https://github.com/PrismJS/prism/issues/3481)) [`c4cbeeaa`](https://github.com/PrismJS/prism/commit/c4cbeeaa) -* __Bash__ - * Added "sh" alias ([#3509](https://github.com/PrismJS/prism/issues/3509)) [`6b824d47`](https://github.com/PrismJS/prism/commit/6b824d47) - * Added support for parameters and the `java` and `sysctl` commands. ([#3505](https://github.com/PrismJS/prism/issues/3505)) [`b9512b22`](https://github.com/PrismJS/prism/commit/b9512b22) - * Added `cargo` command ([#3488](https://github.com/PrismJS/prism/issues/3488)) [`3e937137`](https://github.com/PrismJS/prism/commit/3e937137) -* __BBj__ - * Improve regexes ([#3512](https://github.com/PrismJS/prism/issues/3512)) [`0cad9ae5`](https://github.com/PrismJS/prism/commit/0cad9ae5) -* __CSS__ - * Fixed @-rules not accounting for strings ([#3438](https://github.com/PrismJS/prism/issues/3438)) [`0d4b6cb6`](https://github.com/PrismJS/prism/commit/0d4b6cb6) -* __CSS Extras__ - * Added support for `RebeccaPurple` color ([#3448](https://github.com/PrismJS/prism/issues/3448)) [`646b2e0a`](https://github.com/PrismJS/prism/commit/646b2e0a) -* __Hoon__ - * Fixed escaped strings ([#3473](https://github.com/PrismJS/prism/issues/3473)) [`64642716`](https://github.com/PrismJS/prism/commit/64642716) -* __Java__ - * Added support for constants ([#3507](https://github.com/PrismJS/prism/issues/3507)) [`342a0039`](https://github.com/PrismJS/prism/commit/342a0039) -* __Markup__ - * Fixed quotes in HTML attribute values ([#3442](https://github.com/PrismJS/prism/issues/3442)) [`ca8eaeee`](https://github.com/PrismJS/prism/commit/ca8eaeee) -* __NSIS__ - * Added missing commands ([#3504](https://github.com/PrismJS/prism/issues/3504)) [`b0c2a9b4`](https://github.com/PrismJS/prism/commit/b0c2a9b4) -* __Scala__ - * Updated keywords to support Scala 3 ([#3506](https://github.com/PrismJS/prism/issues/3506)) [`a090d063`](https://github.com/PrismJS/prism/commit/a090d063) -* __SCSS__ - * Fix casing in title of the `scss` lang ([#3501](https://github.com/PrismJS/prism/issues/3501)) [`2aed9ce7`](https://github.com/PrismJS/prism/commit/2aed9ce7) +- **AsciiDoc** + - Some regexes are too greedy ([#3481](https://github.com/PrismJS/prism/issues/3481)) [`c4cbeeaa`](https://github.com/PrismJS/prism/commit/c4cbeeaa) +- **Bash** + - Added "sh" alias ([#3509](https://github.com/PrismJS/prism/issues/3509)) [`6b824d47`](https://github.com/PrismJS/prism/commit/6b824d47) + - Added support for parameters and the `java` and `sysctl` commands. ([#3505](https://github.com/PrismJS/prism/issues/3505)) [`b9512b22`](https://github.com/PrismJS/prism/commit/b9512b22) + - Added `cargo` command ([#3488](https://github.com/PrismJS/prism/issues/3488)) [`3e937137`](https://github.com/PrismJS/prism/commit/3e937137) +- **BBj** + - Improve regexes ([#3512](https://github.com/PrismJS/prism/issues/3512)) [`0cad9ae5`](https://github.com/PrismJS/prism/commit/0cad9ae5) +- **CSS** + - Fixed @-rules not accounting for strings ([#3438](https://github.com/PrismJS/prism/issues/3438)) [`0d4b6cb6`](https://github.com/PrismJS/prism/commit/0d4b6cb6) +- **CSS Extras** + - Added support for `RebeccaPurple` color ([#3448](https://github.com/PrismJS/prism/issues/3448)) [`646b2e0a`](https://github.com/PrismJS/prism/commit/646b2e0a) +- **Hoon** + - Fixed escaped strings ([#3473](https://github.com/PrismJS/prism/issues/3473)) [`64642716`](https://github.com/PrismJS/prism/commit/64642716) +- **Java** + - Added support for constants ([#3507](https://github.com/PrismJS/prism/issues/3507)) [`342a0039`](https://github.com/PrismJS/prism/commit/342a0039) +- **Markup** + - Fixed quotes in HTML attribute values ([#3442](https://github.com/PrismJS/prism/issues/3442)) [`ca8eaeee`](https://github.com/PrismJS/prism/commit/ca8eaeee) +- **NSIS** + - Added missing commands ([#3504](https://github.com/PrismJS/prism/issues/3504)) [`b0c2a9b4`](https://github.com/PrismJS/prism/commit/b0c2a9b4) +- **Scala** + - Updated keywords to support Scala 3 ([#3506](https://github.com/PrismJS/prism/issues/3506)) [`a090d063`](https://github.com/PrismJS/prism/commit/a090d063) +- **SCSS** + - Fix casing in title of the `scss` lang ([#3501](https://github.com/PrismJS/prism/issues/3501)) [`2aed9ce7`](https://github.com/PrismJS/prism/commit/2aed9ce7) ### Updated plugins -* __Line Highlight__ - * Account for offset when clamping ranges ([#3518](https://github.com/PrismJS/prism/issues/3518)) [`098e3000`](https://github.com/PrismJS/prism/commit/098e3000) - * Ignore ranges outside of actual lines ([#3475](https://github.com/PrismJS/prism/issues/3475)) [`9a4e725b`](https://github.com/PrismJS/prism/commit/9a4e725b) -* __Normalize Whitespace__ - * Add configuration via attributes ([#3467](https://github.com/PrismJS/prism/issues/3467)) [`91dea0c8`](https://github.com/PrismJS/prism/commit/91dea0c8) +- **Line Highlight** + - Account for offset when clamping ranges ([#3518](https://github.com/PrismJS/prism/issues/3518)) [`098e3000`](https://github.com/PrismJS/prism/commit/098e3000) + - Ignore ranges outside of actual lines ([#3475](https://github.com/PrismJS/prism/issues/3475)) [`9a4e725b`](https://github.com/PrismJS/prism/commit/9a4e725b) +- **Normalize Whitespace** + - Add configuration via attributes ([#3467](https://github.com/PrismJS/prism/issues/3467)) [`91dea0c8`](https://github.com/PrismJS/prism/commit/91dea0c8) ### Other -* Added security policy ([#3070](https://github.com/PrismJS/prism/issues/3070)) [`05ee042a`](https://github.com/PrismJS/prism/commit/05ee042a) -* Added list of maintainers ([#3410](https://github.com/PrismJS/prism/issues/3410)) [`866b302e`](https://github.com/PrismJS/prism/commit/866b302e) -* Included githubactions in the dependabot config ([#3470](https://github.com/PrismJS/prism/issues/3470)) [`9561a9ab`](https://github.com/PrismJS/prism/commit/9561a9ab) -* Set permissions for GitHub actions ([#3468](https://github.com/PrismJS/prism/issues/3468)) [`b85e1ada`](https://github.com/PrismJS/prism/commit/b85e1ada) -* __Website__ - * Website: Added third-party tutorial for Pug template ([#3459](https://github.com/PrismJS/prism/issues/3459)) [`15272f76`](https://github.com/PrismJS/prism/commit/15272f76) - * Docs: Add missing word ([#3489](https://github.com/PrismJS/prism/issues/3489)) [`9d603ef4`](https://github.com/PrismJS/prism/commit/9d603ef4) +- Added security policy ([#3070](https://github.com/PrismJS/prism/issues/3070)) [`05ee042a`](https://github.com/PrismJS/prism/commit/05ee042a) +- Added list of maintainers ([#3410](https://github.com/PrismJS/prism/issues/3410)) [`866b302e`](https://github.com/PrismJS/prism/commit/866b302e) +- Included githubactions in the dependabot config ([#3470](https://github.com/PrismJS/prism/issues/3470)) [`9561a9ab`](https://github.com/PrismJS/prism/commit/9561a9ab) +- Set permissions for GitHub actions ([#3468](https://github.com/PrismJS/prism/issues/3468)) [`b85e1ada`](https://github.com/PrismJS/prism/commit/b85e1ada) +- **Website** + - Website: Added third-party tutorial for Pug template ([#3459](https://github.com/PrismJS/prism/issues/3459)) [`15272f76`](https://github.com/PrismJS/prism/commit/15272f76) + - Docs: Add missing word ([#3489](https://github.com/PrismJS/prism/issues/3489)) [`9d603ef4`](https://github.com/PrismJS/prism/commit/9d603ef4) ## 1.28.0 (2022-04-17) ### New components -* __Ado__ & __Mata__ (Stata) ([#3383](https://github.com/PrismJS/prism/issues/3383)) [`63806d57`](https://github.com/PrismJS/prism/commit/63806d57) -* __ARM Assembly__ ([#3376](https://github.com/PrismJS/prism/issues/3376)) [`554ff324`](https://github.com/PrismJS/prism/commit/554ff324) -* __Arturo__ ([#3403](https://github.com/PrismJS/prism/issues/3403)) [`e2fe1f79`](https://github.com/PrismJS/prism/commit/e2fe1f79) -* __AWK__ & __GAWK__ ([#3374](https://github.com/PrismJS/prism/issues/3374)) [`ea8a0f40`](https://github.com/PrismJS/prism/commit/ea8a0f40) -* __Cooklang__ ([#3337](https://github.com/PrismJS/prism/issues/3337)) [`4eb928c3`](https://github.com/PrismJS/prism/commit/4eb928c3) -* __CUE__ ([#3375](https://github.com/PrismJS/prism/issues/3375)) [`a1340666`](https://github.com/PrismJS/prism/commit/a1340666) -* __gettext__ ([#3369](https://github.com/PrismJS/prism/issues/3369)) [`dfef9b61`](https://github.com/PrismJS/prism/commit/dfef9b61) -* __GNU Linker Script__ ([#3373](https://github.com/PrismJS/prism/issues/3373)) [`33f2cf95`](https://github.com/PrismJS/prism/commit/33f2cf95) -* __Odin__ ([#3424](https://github.com/PrismJS/prism/issues/3424)) [`8a3fef6d`](https://github.com/PrismJS/prism/commit/8a3fef6d) -* __PlantUML__ ([#3372](https://github.com/PrismJS/prism/issues/3372)) [`0d49553c`](https://github.com/PrismJS/prism/commit/0d49553c) -* __ReScript__ ([#3435](https://github.com/PrismJS/prism/issues/3435)) [`cbef9af7`](https://github.com/PrismJS/prism/commit/cbef9af7) -* __SuperCollider__ ([#3371](https://github.com/PrismJS/prism/issues/3371)) [`1b1d6731`](https://github.com/PrismJS/prism/commit/1b1d6731) +- **Ado** & **Mata** (Stata) ([#3383](https://github.com/PrismJS/prism/issues/3383)) [`63806d57`](https://github.com/PrismJS/prism/commit/63806d57) +- **ARM Assembly** ([#3376](https://github.com/PrismJS/prism/issues/3376)) [`554ff324`](https://github.com/PrismJS/prism/commit/554ff324) +- **Arturo** ([#3403](https://github.com/PrismJS/prism/issues/3403)) [`e2fe1f79`](https://github.com/PrismJS/prism/commit/e2fe1f79) +- **AWK** & **GAWK** ([#3374](https://github.com/PrismJS/prism/issues/3374)) [`ea8a0f40`](https://github.com/PrismJS/prism/commit/ea8a0f40) +- **Cooklang** ([#3337](https://github.com/PrismJS/prism/issues/3337)) [`4eb928c3`](https://github.com/PrismJS/prism/commit/4eb928c3) +- **CUE** ([#3375](https://github.com/PrismJS/prism/issues/3375)) [`a1340666`](https://github.com/PrismJS/prism/commit/a1340666) +- **gettext** ([#3369](https://github.com/PrismJS/prism/issues/3369)) [`dfef9b61`](https://github.com/PrismJS/prism/commit/dfef9b61) +- **GNU Linker Script** ([#3373](https://github.com/PrismJS/prism/issues/3373)) [`33f2cf95`](https://github.com/PrismJS/prism/commit/33f2cf95) +- **Odin** ([#3424](https://github.com/PrismJS/prism/issues/3424)) [`8a3fef6d`](https://github.com/PrismJS/prism/commit/8a3fef6d) +- **PlantUML** ([#3372](https://github.com/PrismJS/prism/issues/3372)) [`0d49553c`](https://github.com/PrismJS/prism/commit/0d49553c) +- **ReScript** ([#3435](https://github.com/PrismJS/prism/issues/3435)) [`cbef9af7`](https://github.com/PrismJS/prism/commit/cbef9af7) +- **SuperCollider** ([#3371](https://github.com/PrismJS/prism/issues/3371)) [`1b1d6731`](https://github.com/PrismJS/prism/commit/1b1d6731) ### Updated components -* __.properties__ - * Use `key`, `value` for token names; `attr-name`, `attr-value` as aliases ([#3377](https://github.com/PrismJS/prism/issues/3377)) [`b94a664d`](https://github.com/PrismJS/prism/commit/b94a664d) -* __ABAP__ - * Sorted keyword list ([#3368](https://github.com/PrismJS/prism/issues/3368)) [`7bda2bf1`](https://github.com/PrismJS/prism/commit/7bda2bf1) -* __Ada__ - * Changed `attr-name` to `attribute`; Use `attr-name` as alias ([#3381](https://github.com/PrismJS/prism/issues/3381)) [`cde0b5b2`](https://github.com/PrismJS/prism/commit/cde0b5b2) - * Added `or` keyword ([#3380](https://github.com/PrismJS/prism/issues/3380)) [`c30b736f`](https://github.com/PrismJS/prism/commit/c30b736f) -* __Atmel AVR Assembly__ - * Fixed `&=` and `|=` operators ([#3395](https://github.com/PrismJS/prism/issues/3395)) [`8c4ae5a5`](https://github.com/PrismJS/prism/commit/8c4ae5a5) -* __AutoHotkey__ - * Use standard tokens ([#3385](https://github.com/PrismJS/prism/issues/3385)) [`61c460e8`](https://github.com/PrismJS/prism/commit/61c460e8) - * Use general pattern instead of name list for directives ([#3384](https://github.com/PrismJS/prism/issues/3384)) [`7ac84dda`](https://github.com/PrismJS/prism/commit/7ac84dda) -* __CFScript__ - * Simplified operator regex ([#3396](https://github.com/PrismJS/prism/issues/3396)) [`6a215fe0`](https://github.com/PrismJS/prism/commit/6a215fe0) -* __CMake__ - * Simplified `variable` and `operator` regexes ([#3398](https://github.com/PrismJS/prism/issues/3398)) [`8e59744b`](https://github.com/PrismJS/prism/commit/8e59744b) -* __Erlang__ - * Added `begin` keyword ([#3387](https://github.com/PrismJS/prism/issues/3387)) [`cf38d059`](https://github.com/PrismJS/prism/commit/cf38d059) -* __Excel Formula__ - * Use more fitting aliases for `function-name`, `range`, and `cell` ([#3391](https://github.com/PrismJS/prism/issues/3391)) [`ef0ec02a`](https://github.com/PrismJS/prism/commit/ef0ec02a) -* __Flow__ - * Changed alias of `type` to `class-name` ([#3390](https://github.com/PrismJS/prism/issues/3390)) [`ce41434d`](https://github.com/PrismJS/prism/commit/ce41434d) - * Recognise `[Ss]ymbol` as a type ([#3388](https://github.com/PrismJS/prism/issues/3388)) [`3916883a`](https://github.com/PrismJS/prism/commit/3916883a) -* __GEDCOM__ - * Update `tag` to `record` ([#3386](https://github.com/PrismJS/prism/issues/3386)) [`f8f95340`](https://github.com/PrismJS/prism/commit/f8f95340) -* __Groovy__ - * Added string interpolation without hook ([#3366](https://github.com/PrismJS/prism/issues/3366)) [`5617765f`](https://github.com/PrismJS/prism/commit/5617765f) -* __Handlebars__ - * Added Mustache alias ([#3422](https://github.com/PrismJS/prism/issues/3422)) [`cb5229af`](https://github.com/PrismJS/prism/commit/cb5229af) -* __Java__ - * Improved class name detection ([#3351](https://github.com/PrismJS/prism/issues/3351)) [`4cb3d038`](https://github.com/PrismJS/prism/commit/4cb3d038) - * Fixed `record` false positives ([#3348](https://github.com/PrismJS/prism/issues/3348)) [`3bd8fdb1`](https://github.com/PrismJS/prism/commit/3bd8fdb1) -* __JavaScript__ - * Added support for new regex syntax ([#3399](https://github.com/PrismJS/prism/issues/3399)) [`ca78cde6`](https://github.com/PrismJS/prism/commit/ca78cde6) -* __Keyman__ - * Added new keywords ([#3401](https://github.com/PrismJS/prism/issues/3401)) [`bac36827`](https://github.com/PrismJS/prism/commit/bac36827) -* __MEL__ - * Improved functions, code, and comments ([#3393](https://github.com/PrismJS/prism/issues/3393)) [`8e648dab`](https://github.com/PrismJS/prism/commit/8e648dab) -* __NEON__ - * Change alias of `key` to `property` ([#3394](https://github.com/PrismJS/prism/issues/3394)) [`1c533f4a`](https://github.com/PrismJS/prism/commit/1c533f4a) -* __PHP__ - * Added `never` return type + minor fix of named arguments ([#3421](https://github.com/PrismJS/prism/issues/3421)) [`4ffab525`](https://github.com/PrismJS/prism/commit/4ffab525) - * Added `readonly` keyword ([#3349](https://github.com/PrismJS/prism/issues/3349)) [`4c3f1969`](https://github.com/PrismJS/prism/commit/4c3f1969) -* __PureBasic__ - * Added support for pointer to string operator ([#3362](https://github.com/PrismJS/prism/issues/3362)) [`499b1fa0`](https://github.com/PrismJS/prism/commit/499b1fa0) -* __Razor C#__ - * Added support for `@helper` and inline C# inside attribute values ([#3355](https://github.com/PrismJS/prism/issues/3355)) [`31a38d0c`](https://github.com/PrismJS/prism/commit/31a38d0c) -* __VHDL__ - * Add `private`, `view` keywords; Distinguish `attribute` from `keyword` ([#3389](https://github.com/PrismJS/prism/issues/3389)) [`d1a5ce30`](https://github.com/PrismJS/prism/commit/d1a5ce30) -* __Wolfram language__ - * Simplified `operator` regex ([#3397](https://github.com/PrismJS/prism/issues/3397)) [`10ae6da3`](https://github.com/PrismJS/prism/commit/10ae6da3) +- **.properties** + - Use `key`, `value` for token names; `attr-name`, `attr-value` as aliases ([#3377](https://github.com/PrismJS/prism/issues/3377)) [`b94a664d`](https://github.com/PrismJS/prism/commit/b94a664d) +- **ABAP** + - Sorted keyword list ([#3368](https://github.com/PrismJS/prism/issues/3368)) [`7bda2bf1`](https://github.com/PrismJS/prism/commit/7bda2bf1) +- **Ada** + - Changed `attr-name` to `attribute`; Use `attr-name` as alias ([#3381](https://github.com/PrismJS/prism/issues/3381)) [`cde0b5b2`](https://github.com/PrismJS/prism/commit/cde0b5b2) + - Added `or` keyword ([#3380](https://github.com/PrismJS/prism/issues/3380)) [`c30b736f`](https://github.com/PrismJS/prism/commit/c30b736f) +- **Atmel AVR Assembly** + - Fixed `&=` and `|=` operators ([#3395](https://github.com/PrismJS/prism/issues/3395)) [`8c4ae5a5`](https://github.com/PrismJS/prism/commit/8c4ae5a5) +- **AutoHotkey** + - Use standard tokens ([#3385](https://github.com/PrismJS/prism/issues/3385)) [`61c460e8`](https://github.com/PrismJS/prism/commit/61c460e8) + - Use general pattern instead of name list for directives ([#3384](https://github.com/PrismJS/prism/issues/3384)) [`7ac84dda`](https://github.com/PrismJS/prism/commit/7ac84dda) +- **CFScript** + - Simplified operator regex ([#3396](https://github.com/PrismJS/prism/issues/3396)) [`6a215fe0`](https://github.com/PrismJS/prism/commit/6a215fe0) +- **CMake** + - Simplified `variable` and `operator` regexes ([#3398](https://github.com/PrismJS/prism/issues/3398)) [`8e59744b`](https://github.com/PrismJS/prism/commit/8e59744b) +- **Erlang** + - Added `begin` keyword ([#3387](https://github.com/PrismJS/prism/issues/3387)) [`cf38d059`](https://github.com/PrismJS/prism/commit/cf38d059) +- **Excel Formula** + - Use more fitting aliases for `function-name`, `range`, and `cell` ([#3391](https://github.com/PrismJS/prism/issues/3391)) [`ef0ec02a`](https://github.com/PrismJS/prism/commit/ef0ec02a) +- **Flow** + - Changed alias of `type` to `class-name` ([#3390](https://github.com/PrismJS/prism/issues/3390)) [`ce41434d`](https://github.com/PrismJS/prism/commit/ce41434d) + - Recognise `[Ss]ymbol` as a type ([#3388](https://github.com/PrismJS/prism/issues/3388)) [`3916883a`](https://github.com/PrismJS/prism/commit/3916883a) +- **GEDCOM** + - Update `tag` to `record` ([#3386](https://github.com/PrismJS/prism/issues/3386)) [`f8f95340`](https://github.com/PrismJS/prism/commit/f8f95340) +- **Groovy** + - Added string interpolation without hook ([#3366](https://github.com/PrismJS/prism/issues/3366)) [`5617765f`](https://github.com/PrismJS/prism/commit/5617765f) +- **Handlebars** + - Added Mustache alias ([#3422](https://github.com/PrismJS/prism/issues/3422)) [`cb5229af`](https://github.com/PrismJS/prism/commit/cb5229af) +- **Java** + - Improved class name detection ([#3351](https://github.com/PrismJS/prism/issues/3351)) [`4cb3d038`](https://github.com/PrismJS/prism/commit/4cb3d038) + - Fixed `record` false positives ([#3348](https://github.com/PrismJS/prism/issues/3348)) [`3bd8fdb1`](https://github.com/PrismJS/prism/commit/3bd8fdb1) +- **JavaScript** + - Added support for new regex syntax ([#3399](https://github.com/PrismJS/prism/issues/3399)) [`ca78cde6`](https://github.com/PrismJS/prism/commit/ca78cde6) +- **Keyman** + - Added new keywords ([#3401](https://github.com/PrismJS/prism/issues/3401)) [`bac36827`](https://github.com/PrismJS/prism/commit/bac36827) +- **MEL** + - Improved functions, code, and comments ([#3393](https://github.com/PrismJS/prism/issues/3393)) [`8e648dab`](https://github.com/PrismJS/prism/commit/8e648dab) +- **NEON** + - Change alias of `key` to `property` ([#3394](https://github.com/PrismJS/prism/issues/3394)) [`1c533f4a`](https://github.com/PrismJS/prism/commit/1c533f4a) +- **PHP** + - Added `never` return type + minor fix of named arguments ([#3421](https://github.com/PrismJS/prism/issues/3421)) [`4ffab525`](https://github.com/PrismJS/prism/commit/4ffab525) + - Added `readonly` keyword ([#3349](https://github.com/PrismJS/prism/issues/3349)) [`4c3f1969`](https://github.com/PrismJS/prism/commit/4c3f1969) +- **PureBasic** + - Added support for pointer to string operator ([#3362](https://github.com/PrismJS/prism/issues/3362)) [`499b1fa0`](https://github.com/PrismJS/prism/commit/499b1fa0) +- **Razor C#** + - Added support for `@helper` and inline C# inside attribute values ([#3355](https://github.com/PrismJS/prism/issues/3355)) [`31a38d0c`](https://github.com/PrismJS/prism/commit/31a38d0c) +- **VHDL** + - Add `private`, `view` keywords; Distinguish `attribute` from `keyword` ([#3389](https://github.com/PrismJS/prism/issues/3389)) [`d1a5ce30`](https://github.com/PrismJS/prism/commit/d1a5ce30) +- **Wolfram language** + - Simplified `operator` regex ([#3397](https://github.com/PrismJS/prism/issues/3397)) [`10ae6da3`](https://github.com/PrismJS/prism/commit/10ae6da3) ### Updated plugins -* __Autolinker__ - * Fixed URL regex to match more valid URLs ([#3358](https://github.com/PrismJS/prism/issues/3358)) [`17ed9160`](https://github.com/PrismJS/prism/commit/17ed9160) -* __Command Line__ - * Add support for command continuation prefix ([#3344](https://github.com/PrismJS/prism/issues/3344)) [`b53832cd`](https://github.com/PrismJS/prism/commit/b53832cd) - * Increased prompt opacity ([#3352](https://github.com/PrismJS/prism/issues/3352)) [`f95dd190`](https://github.com/PrismJS/prism/commit/f95dd190) -* __Keep Markup__ - * Use original nodes instead of clones ([#3365](https://github.com/PrismJS/prism/issues/3365)) [`8a843a17`](https://github.com/PrismJS/prism/commit/8a843a17) +- **Autolinker** + - Fixed URL regex to match more valid URLs ([#3358](https://github.com/PrismJS/prism/issues/3358)) [`17ed9160`](https://github.com/PrismJS/prism/commit/17ed9160) +- **Command Line** + - Add support for command continuation prefix ([#3344](https://github.com/PrismJS/prism/issues/3344)) [`b53832cd`](https://github.com/PrismJS/prism/commit/b53832cd) + - Increased prompt opacity ([#3352](https://github.com/PrismJS/prism/issues/3352)) [`f95dd190`](https://github.com/PrismJS/prism/commit/f95dd190) +- **Keep Markup** + - Use original nodes instead of clones ([#3365](https://github.com/PrismJS/prism/issues/3365)) [`8a843a17`](https://github.com/PrismJS/prism/commit/8a843a17) ### Other -* __Infrastructure__ - * Use terser ([#3407](https://github.com/PrismJS/prism/issues/3407)) [`11c54624`](https://github.com/PrismJS/prism/commit/11c54624) - * Tests: Cache results for exp backtracking check ([#3356](https://github.com/PrismJS/prism/issues/3356)) [`ead22e1e`](https://github.com/PrismJS/prism/commit/ead22e1e) -* __Website__ - * More documentation for language definitons ([#3427](https://github.com/PrismJS/prism/issues/3427)) [`333bd590`](https://github.com/PrismJS/prism/commit/333bd590) +- **Infrastructure** + - Use terser ([#3407](https://github.com/PrismJS/prism/issues/3407)) [`11c54624`](https://github.com/PrismJS/prism/commit/11c54624) + - Tests: Cache results for exp backtracking check ([#3356](https://github.com/PrismJS/prism/issues/3356)) [`ead22e1e`](https://github.com/PrismJS/prism/commit/ead22e1e) +- **Website** + - More documentation for language definitons ([#3427](https://github.com/PrismJS/prism/issues/3427)) [`333bd590`](https://github.com/PrismJS/prism/commit/333bd590) ## 1.27.0 (2022-02-17) ### New components -* __UO Razor Script__ ([#3309](https://github.com/PrismJS/prism/issues/3309)) [`3f8cc5a0`](https://github.com/PrismJS/prism/commit/3f8cc5a0) +- **UO Razor Script** ([#3309](https://github.com/PrismJS/prism/issues/3309)) [`3f8cc5a0`](https://github.com/PrismJS/prism/commit/3f8cc5a0) ### Updated components -* __AutoIt__ - * Allow hyphen in directive ([#3308](https://github.com/PrismJS/prism/issues/3308)) [`bcb2e2c8`](https://github.com/PrismJS/prism/commit/bcb2e2c8) -* __EditorConfig__ - * Change alias of `section` from `keyword` to `selector` ([#3305](https://github.com/PrismJS/prism/issues/3305)) [`e46501b9`](https://github.com/PrismJS/prism/commit/e46501b9) -* __Ini__ - * Swap out `header` for `section` ([#3304](https://github.com/PrismJS/prism/issues/3304)) [`deb3a97f`](https://github.com/PrismJS/prism/commit/deb3a97f) -* __MongoDB__ - * Added v5 support ([#3297](https://github.com/PrismJS/prism/issues/3297)) [`8458c41f`](https://github.com/PrismJS/prism/commit/8458c41f) -* __PureBasic__ - * Added missing keyword and fixed constants ending with `$` ([#3320](https://github.com/PrismJS/prism/issues/3320)) [`d6c53726`](https://github.com/PrismJS/prism/commit/d6c53726) -* __Scala__ - * Added support for interpolated strings ([#3293](https://github.com/PrismJS/prism/issues/3293)) [`441a1422`](https://github.com/PrismJS/prism/commit/441a1422) -* __Systemd configuration file__ - * Swap out `operator` for `punctuation` ([#3306](https://github.com/PrismJS/prism/issues/3306)) [`2eb89e15`](https://github.com/PrismJS/prism/commit/2eb89e15) +- **AutoIt** + - Allow hyphen in directive ([#3308](https://github.com/PrismJS/prism/issues/3308)) [`bcb2e2c8`](https://github.com/PrismJS/prism/commit/bcb2e2c8) +- **EditorConfig** + - Change alias of `section` from `keyword` to `selector` ([#3305](https://github.com/PrismJS/prism/issues/3305)) [`e46501b9`](https://github.com/PrismJS/prism/commit/e46501b9) +- **Ini** + - Swap out `header` for `section` ([#3304](https://github.com/PrismJS/prism/issues/3304)) [`deb3a97f`](https://github.com/PrismJS/prism/commit/deb3a97f) +- **MongoDB** + - Added v5 support ([#3297](https://github.com/PrismJS/prism/issues/3297)) [`8458c41f`](https://github.com/PrismJS/prism/commit/8458c41f) +- **PureBasic** + - Added missing keyword and fixed constants ending with `$` ([#3320](https://github.com/PrismJS/prism/issues/3320)) [`d6c53726`](https://github.com/PrismJS/prism/commit/d6c53726) +- **Scala** + - Added support for interpolated strings ([#3293](https://github.com/PrismJS/prism/issues/3293)) [`441a1422`](https://github.com/PrismJS/prism/commit/441a1422) +- **Systemd configuration file** + - Swap out `operator` for `punctuation` ([#3306](https://github.com/PrismJS/prism/issues/3306)) [`2eb89e15`](https://github.com/PrismJS/prism/commit/2eb89e15) ### Updated plugins -* __Command Line__ - * Escape markup in command line output ([#3341](https://github.com/PrismJS/prism/issues/3341)) [`e002e78c`](https://github.com/PrismJS/prism/commit/e002e78c) - * Add support for line continuation and improved colors ([#3326](https://github.com/PrismJS/prism/issues/3326)) [`1784b175`](https://github.com/PrismJS/prism/commit/1784b175) - * Added span around command and output ([#3312](https://github.com/PrismJS/prism/issues/3312)) [`82d0ca15`](https://github.com/PrismJS/prism/commit/82d0ca15) +- **Command Line** + - Escape markup in command line output ([#3341](https://github.com/PrismJS/prism/issues/3341)) [`e002e78c`](https://github.com/PrismJS/prism/commit/e002e78c) + - Add support for line continuation and improved colors ([#3326](https://github.com/PrismJS/prism/issues/3326)) [`1784b175`](https://github.com/PrismJS/prism/commit/1784b175) + - Added span around command and output ([#3312](https://github.com/PrismJS/prism/issues/3312)) [`82d0ca15`](https://github.com/PrismJS/prism/commit/82d0ca15) ### Other -* __Core__ - * Added better error message for missing grammars ([#3311](https://github.com/PrismJS/prism/issues/3311)) [`2cc4660b`](https://github.com/PrismJS/prism/commit/2cc4660b) +- **Core** + - Added better error message for missing grammars ([#3311](https://github.com/PrismJS/prism/issues/3311)) [`2cc4660b`](https://github.com/PrismJS/prism/commit/2cc4660b) ## 1.26.0 (2022-01-06) ### New components -* __Atmel AVR Assembly__ ([#2078](https://github.com/PrismJS/prism/issues/2078)) [`b5a70e4c`](https://github.com/PrismJS/prism/commit/b5a70e4c) -* __Go module__ ([#3209](https://github.com/PrismJS/prism/issues/3209)) [`8476a9ab`](https://github.com/PrismJS/prism/commit/8476a9ab) -* __Keepalived Configure__ ([#2417](https://github.com/PrismJS/prism/issues/2417)) [`d908e457`](https://github.com/PrismJS/prism/commit/d908e457) -* __Tremor__ & __Trickle__ & __Troy__ ([#3087](https://github.com/PrismJS/prism/issues/3087)) [`ec25ba65`](https://github.com/PrismJS/prism/commit/ec25ba65) -* __Web IDL__ ([#3107](https://github.com/PrismJS/prism/issues/3107)) [`ef53f021`](https://github.com/PrismJS/prism/commit/ef53f021) +- **Atmel AVR Assembly** ([#2078](https://github.com/PrismJS/prism/issues/2078)) [`b5a70e4c`](https://github.com/PrismJS/prism/commit/b5a70e4c) +- **Go module** ([#3209](https://github.com/PrismJS/prism/issues/3209)) [`8476a9ab`](https://github.com/PrismJS/prism/commit/8476a9ab) +- **Keepalived Configure** ([#2417](https://github.com/PrismJS/prism/issues/2417)) [`d908e457`](https://github.com/PrismJS/prism/commit/d908e457) +- **Tremor** & **Trickle** & **Troy** ([#3087](https://github.com/PrismJS/prism/issues/3087)) [`ec25ba65`](https://github.com/PrismJS/prism/commit/ec25ba65) +- **Web IDL** ([#3107](https://github.com/PrismJS/prism/issues/3107)) [`ef53f021`](https://github.com/PrismJS/prism/commit/ef53f021) ### Updated components -* Use `\d` for `[0-9]` ([#3097](https://github.com/PrismJS/prism/issues/3097)) [`9fe2f93e`](https://github.com/PrismJS/prism/commit/9fe2f93e) -* __6502 Assembly__ - * Use standard tokens and minor improvements ([#3184](https://github.com/PrismJS/prism/issues/3184)) [`929c33e0`](https://github.com/PrismJS/prism/commit/929c33e0) -* __AppleScript__ - * Use `class-name` standard token ([#3182](https://github.com/PrismJS/prism/issues/3182)) [`9f5e511d`](https://github.com/PrismJS/prism/commit/9f5e511d) -* __AQL__ - * Differentiate between strings and identifiers ([#3183](https://github.com/PrismJS/prism/issues/3183)) [`fa540ab7`](https://github.com/PrismJS/prism/commit/fa540ab7) -* __Arduino__ - * Added `ino` alias ([#2990](https://github.com/PrismJS/prism/issues/2990)) [`5b7ce5e4`](https://github.com/PrismJS/prism/commit/5b7ce5e4) -* __Avro IDL__ - * Removed char syntax ([#3185](https://github.com/PrismJS/prism/issues/3185)) [`c7809285`](https://github.com/PrismJS/prism/commit/c7809285) -* __Bash__ - * Added `node` to known commands ([#3291](https://github.com/PrismJS/prism/issues/3291)) [`4b19b502`](https://github.com/PrismJS/prism/commit/4b19b502) - * Added `vcpkg` command ([#3282](https://github.com/PrismJS/prism/issues/3282)) [`b351bc69`](https://github.com/PrismJS/prism/commit/b351bc69) - * Added `docker` and `podman` commands ([#3237](https://github.com/PrismJS/prism/issues/3237)) [`8c5ed251`](https://github.com/PrismJS/prism/commit/8c5ed251) -* __Birb__ - * Fixed class name false positives ([#3111](https://github.com/PrismJS/prism/issues/3111)) [`d7017beb`](https://github.com/PrismJS/prism/commit/d7017beb) -* __Bro__ - * Removed `variable` and minor improvements ([#3186](https://github.com/PrismJS/prism/issues/3186)) [`4cebf34c`](https://github.com/PrismJS/prism/commit/4cebf34c) -* __BSL (1C:Enterprise)__ - * Made `directive` greedy ([#3112](https://github.com/PrismJS/prism/issues/3112)) [`5c412cbb`](https://github.com/PrismJS/prism/commit/5c412cbb) -* __C__ - * Added `char` token ([#3207](https://github.com/PrismJS/prism/issues/3207)) [`d85a64ae`](https://github.com/PrismJS/prism/commit/d85a64ae) -* __C#__ - * Added `char` token ([#3270](https://github.com/PrismJS/prism/issues/3270)) [`220bc40f`](https://github.com/PrismJS/prism/commit/220bc40f) - * Move everything into the IIFE ([#3077](https://github.com/PrismJS/prism/issues/3077)) [`9ed4cf6e`](https://github.com/PrismJS/prism/commit/9ed4cf6e) -* __Clojure__ - * Added `char` token ([#3188](https://github.com/PrismJS/prism/issues/3188)) [`1c88c7da`](https://github.com/PrismJS/prism/commit/1c88c7da) -* __Concurnas__ - * Improved tokenization ([#3189](https://github.com/PrismJS/prism/issues/3189)) [`7b34e65d`](https://github.com/PrismJS/prism/commit/7b34e65d) -* __Content-Security-Policy__ - * Improved tokenization ([#3276](https://github.com/PrismJS/prism/issues/3276)) [`a943f2bb`](https://github.com/PrismJS/prism/commit/a943f2bb) -* __Coq__ - * Improved attribute pattern performance ([#3085](https://github.com/PrismJS/prism/issues/3085)) [`2f9672aa`](https://github.com/PrismJS/prism/commit/2f9672aa) -* __Crystal__ - * Improved tokenization ([#3194](https://github.com/PrismJS/prism/issues/3194)) [`51e3ecc0`](https://github.com/PrismJS/prism/commit/51e3ecc0) -* __Cypher__ - * Removed non-standard use of `symbol` token name ([#3195](https://github.com/PrismJS/prism/issues/3195)) [`6af8a644`](https://github.com/PrismJS/prism/commit/6af8a644) -* __D__ - * Added standard char token ([#3196](https://github.com/PrismJS/prism/issues/3196)) [`dafdbdec`](https://github.com/PrismJS/prism/commit/dafdbdec) -* __Dart__ - * Added string interpolation and improved metadata ([#3197](https://github.com/PrismJS/prism/issues/3197)) [`e1370357`](https://github.com/PrismJS/prism/commit/e1370357) -* __DataWeave__ - * Fixed keywords being highlighted as functions ([#3113](https://github.com/PrismJS/prism/issues/3113)) [`532212b2`](https://github.com/PrismJS/prism/commit/532212b2) -* __EditorConfig__ - * Swap out `property` for `key`; alias with `attr-name` ([#3272](https://github.com/PrismJS/prism/issues/3272)) [`bee6ad56`](https://github.com/PrismJS/prism/commit/bee6ad56) -* __Eiffel__ - * Removed non-standard use of `builtin` name ([#3198](https://github.com/PrismJS/prism/issues/3198)) [`6add768b`](https://github.com/PrismJS/prism/commit/6add768b) -* __Elm__ - * Recognize unicode escapes as valid Char ([#3105](https://github.com/PrismJS/prism/issues/3105)) [`736c581d`](https://github.com/PrismJS/prism/commit/736c581d) -* __ERB__ - * Better embedding of Ruby ([#3192](https://github.com/PrismJS/prism/issues/3192)) [`336edeea`](https://github.com/PrismJS/prism/commit/336edeea) -* __F#__ - * Added `char` token ([#3271](https://github.com/PrismJS/prism/issues/3271)) [`b58cd722`](https://github.com/PrismJS/prism/commit/b58cd722) -* __G-code__ - * Use standard-conforming alias for checksum ([#3205](https://github.com/PrismJS/prism/issues/3205)) [`ee7ab563`](https://github.com/PrismJS/prism/commit/ee7ab563) -* __GameMaker Language__ - * Fixed `operator` token and added tests ([#3114](https://github.com/PrismJS/prism/issues/3114)) [`d359eeae`](https://github.com/PrismJS/prism/commit/d359eeae) -* __Go__ - * Added `char` token and improved `string` and `number` tokens ([#3208](https://github.com/PrismJS/prism/issues/3208)) [`f11b86e2`](https://github.com/PrismJS/prism/commit/f11b86e2) -* __GraphQL__ - * Optimized regexes ([#3136](https://github.com/PrismJS/prism/issues/3136)) [`8494519e`](https://github.com/PrismJS/prism/commit/8494519e) -* __Haml__ - * Use `symbol` alias for filter names ([#3210](https://github.com/PrismJS/prism/issues/3210)) [`3d410670`](https://github.com/PrismJS/prism/commit/3d410670) - * Improved filter and interpolation tokenization ([#3191](https://github.com/PrismJS/prism/issues/3191)) [`005ba469`](https://github.com/PrismJS/prism/commit/005ba469) -* __Haxe__ - * Improved tokenization ([#3211](https://github.com/PrismJS/prism/issues/3211)) [`f41bcf23`](https://github.com/PrismJS/prism/commit/f41bcf23) -* __Hoon__ - * Simplified the language definition a little ([#3212](https://github.com/PrismJS/prism/issues/3212)) [`81920b62`](https://github.com/PrismJS/prism/commit/81920b62) -* __HTTP__ - * Added support for special header value tokenization ([#3275](https://github.com/PrismJS/prism/issues/3275)) [`3362fc79`](https://github.com/PrismJS/prism/commit/3362fc79) - * Relax pattern for body ([#3169](https://github.com/PrismJS/prism/issues/3169)) [`22d0c6ba`](https://github.com/PrismJS/prism/commit/22d0c6ba) -* __HTTP Public-Key-Pins__ - * Improved tokenization ([#3278](https://github.com/PrismJS/prism/issues/3278)) [`0f1b5810`](https://github.com/PrismJS/prism/commit/0f1b5810) -* __HTTP Strict-Transport-Security__ - * Improved tokenization ([#3277](https://github.com/PrismJS/prism/issues/3277)) [`3d708b97`](https://github.com/PrismJS/prism/commit/3d708b97) -* __Idris__ - * Fixed import statements ([#3115](https://github.com/PrismJS/prism/issues/3115)) [`15cb3b78`](https://github.com/PrismJS/prism/commit/15cb3b78) -* __Io__ - * Simplified comment token ([#3214](https://github.com/PrismJS/prism/issues/3214)) [`c2afa59b`](https://github.com/PrismJS/prism/commit/c2afa59b) -* __J__ - * Made comments greedy ([#3215](https://github.com/PrismJS/prism/issues/3215)) [`5af16014`](https://github.com/PrismJS/prism/commit/5af16014) -* __Java__ - * Added `char` token ([#3217](https://github.com/PrismJS/prism/issues/3217)) [`0a9f909c`](https://github.com/PrismJS/prism/commit/0a9f909c) -* __Java stack trace__ - * Removed unreachable parts of regexes ([#3219](https://github.com/PrismJS/prism/issues/3219)) [`fa55492b`](https://github.com/PrismJS/prism/commit/fa55492b) - * Added missing lookbehinds ([#3116](https://github.com/PrismJS/prism/issues/3116)) [`cfb2e782`](https://github.com/PrismJS/prism/commit/cfb2e782) -* __JavaScript__ - * Improved `number` pattern ([#3149](https://github.com/PrismJS/prism/issues/3149)) [`5a24cbff`](https://github.com/PrismJS/prism/commit/5a24cbff) - * Added properties ([#3099](https://github.com/PrismJS/prism/issues/3099)) [`3b2238fa`](https://github.com/PrismJS/prism/commit/3b2238fa) -* __Jolie__ - * Improved tokenization ([#3221](https://github.com/PrismJS/prism/issues/3221)) [`dfbb2020`](https://github.com/PrismJS/prism/commit/dfbb2020) -* __JQ__ - * Improved performance of strings ([#3084](https://github.com/PrismJS/prism/issues/3084)) [`233415b8`](https://github.com/PrismJS/prism/commit/233415b8) -* __JS stack trace__ - * Added missing boundary assertion ([#3117](https://github.com/PrismJS/prism/issues/3117)) [`23d9aec1`](https://github.com/PrismJS/prism/commit/23d9aec1) -* __Julia__ - * Added `char` token ([#3223](https://github.com/PrismJS/prism/issues/3223)) [`3a876df0`](https://github.com/PrismJS/prism/commit/3a876df0) -* __Keyman__ - * Improved tokenization ([#3224](https://github.com/PrismJS/prism/issues/3224)) [`baa95cab`](https://github.com/PrismJS/prism/commit/baa95cab) -* __Kotlin__ - * Added `char` token and improved string interpolation ([#3225](https://github.com/PrismJS/prism/issues/3225)) [`563cd73e`](https://github.com/PrismJS/prism/commit/563cd73e) -* __Latte__ - * Use standard token names and combined delimiter tokens ([#3226](https://github.com/PrismJS/prism/issues/3226)) [`6b168a3b`](https://github.com/PrismJS/prism/commit/6b168a3b) -* __Liquid__ - * Removed unmatchable object variants ([#3135](https://github.com/PrismJS/prism/issues/3135)) [`05e7ab04`](https://github.com/PrismJS/prism/commit/05e7ab04) -* __Lisp__ - * Improved `defun` ([#3130](https://github.com/PrismJS/prism/issues/3130)) [`e8f84a6c`](https://github.com/PrismJS/prism/commit/e8f84a6c) -* __Makefile__ - * Use standard token names correctly ([#3227](https://github.com/PrismJS/prism/issues/3227)) [`21a3c2d7`](https://github.com/PrismJS/prism/commit/21a3c2d7) -* __Markdown__ - * Fixed typo in token name ([#3101](https://github.com/PrismJS/prism/issues/3101)) [`00f77a2c`](https://github.com/PrismJS/prism/commit/00f77a2c) -* __MAXScript__ - * Various improvements ([#3181](https://github.com/PrismJS/prism/issues/3181)) [`e9b856c8`](https://github.com/PrismJS/prism/commit/e9b856c8) - * Fixed booleans not being highlighted ([#3134](https://github.com/PrismJS/prism/issues/3134)) [`c6574e6b`](https://github.com/PrismJS/prism/commit/c6574e6b) -* __Monkey__ - * Use standard tokens correctly ([#3228](https://github.com/PrismJS/prism/issues/3228)) [`c1025aa6`](https://github.com/PrismJS/prism/commit/c1025aa6) -* __N1QL__ - * Updated keywords + minor improvements ([#3229](https://github.com/PrismJS/prism/issues/3229)) [`642d93ec`](https://github.com/PrismJS/prism/commit/642d93ec) -* __nginx__ - * Made some patterns greedy ([#3230](https://github.com/PrismJS/prism/issues/3230)) [`7b72e0ad`](https://github.com/PrismJS/prism/commit/7b72e0ad) -* __Nim__ - * Added `char` token and made some tokens greedy ([#3231](https://github.com/PrismJS/prism/issues/3231)) [`2334b4b6`](https://github.com/PrismJS/prism/commit/2334b4b6) - * Fixed backtick identifier ([#3118](https://github.com/PrismJS/prism/issues/3118)) [`75331bea`](https://github.com/PrismJS/prism/commit/75331bea) -* __Nix__ - * Use standard token name correctly ([#3232](https://github.com/PrismJS/prism/issues/3232)) [`5bf6e35f`](https://github.com/PrismJS/prism/commit/5bf6e35f) - * Removed unmatchable token ([#3119](https://github.com/PrismJS/prism/issues/3119)) [`dc1e808f`](https://github.com/PrismJS/prism/commit/dc1e808f) -* __NSIS__ - * Made `comment` greedy ([#3234](https://github.com/PrismJS/prism/issues/3234)) [`969f152a`](https://github.com/PrismJS/prism/commit/969f152a) - * Update regex pattern for variables ([#3266](https://github.com/PrismJS/prism/issues/3266)) [`adcc8784`](https://github.com/PrismJS/prism/commit/adcc8784) - * Update regex for constants pattern ([#3267](https://github.com/PrismJS/prism/issues/3267)) [`55583fb2`](https://github.com/PrismJS/prism/commit/55583fb2) -* __Objective-C__ - * Improved `string` token ([#3235](https://github.com/PrismJS/prism/issues/3235)) [`8e0e95f3`](https://github.com/PrismJS/prism/commit/8e0e95f3) -* __OCaml__ - * Improved tokenization ([#3269](https://github.com/PrismJS/prism/issues/3269)) [`7bcc5da0`](https://github.com/PrismJS/prism/commit/7bcc5da0) - * Removed unmatchable punctuation variant ([#3120](https://github.com/PrismJS/prism/issues/3120)) [`314d6994`](https://github.com/PrismJS/prism/commit/314d6994) -* __Oz__ - * Improved tokenization ([#3240](https://github.com/PrismJS/prism/issues/3240)) [`a3905c04`](https://github.com/PrismJS/prism/commit/a3905c04) -* __Pascal__ - * Added support for asm and directives ([#2653](https://github.com/PrismJS/prism/issues/2653)) [`f053af13`](https://github.com/PrismJS/prism/commit/f053af13) -* __PATROL Scripting Language__ - * Added `boolean` token ([#3248](https://github.com/PrismJS/prism/issues/3248)) [`a5b6c5eb`](https://github.com/PrismJS/prism/commit/a5b6c5eb) -* __Perl__ - * Improved tokenization ([#3241](https://github.com/PrismJS/prism/issues/3241)) [`f22ea9f9`](https://github.com/PrismJS/prism/commit/f22ea9f9) -* __PHP__ - * Removed useless keyword tokens ([#3121](https://github.com/PrismJS/prism/issues/3121)) [`ee62a080`](https://github.com/PrismJS/prism/commit/ee62a080) -* __PHP Extras__ - * Improved `scope` and `this` ([#3243](https://github.com/PrismJS/prism/issues/3243)) [`59ef51db`](https://github.com/PrismJS/prism/commit/59ef51db) -* __PL/SQL__ - * Updated keywords + other improvements ([#3109](https://github.com/PrismJS/prism/issues/3109)) [`e7ba877b`](https://github.com/PrismJS/prism/commit/e7ba877b) -* __PowerQuery__ - * Improved tokenization and use standard tokens correctly ([#3244](https://github.com/PrismJS/prism/issues/3244)) [`5688f487`](https://github.com/PrismJS/prism/commit/5688f487) - * Removed useless `data-type` alternative ([#3122](https://github.com/PrismJS/prism/issues/3122)) [`eeb13996`](https://github.com/PrismJS/prism/commit/eeb13996) -* __PowerShell__ - * Fixed lookbehind + refactoring ([#3245](https://github.com/PrismJS/prism/issues/3245)) [`d30a2da6`](https://github.com/PrismJS/prism/commit/d30a2da6) -* __Processing__ - * Use standard tokens correctly ([#3246](https://github.com/PrismJS/prism/issues/3246)) [`5ee8c557`](https://github.com/PrismJS/prism/commit/5ee8c557) -* __Prolog__ - * Removed variable token + minor improvements ([#3247](https://github.com/PrismJS/prism/issues/3247)) [`bacf9ae3`](https://github.com/PrismJS/prism/commit/bacf9ae3) -* __Pug__ - * Improved filter tokenization ([#3258](https://github.com/PrismJS/prism/issues/3258)) [`0390e644`](https://github.com/PrismJS/prism/commit/0390e644) -* __PureBasic__ - * Fixed token order inside `asm` token ([#3123](https://github.com/PrismJS/prism/issues/3123)) [`f3b25786`](https://github.com/PrismJS/prism/commit/f3b25786) -* __Python__ - * Made `comment` greedy ([#3249](https://github.com/PrismJS/prism/issues/3249)) [`8ecef306`](https://github.com/PrismJS/prism/commit/8ecef306) - * Add `match` and `case` (soft) keywords ([#3142](https://github.com/PrismJS/prism/issues/3142)) [`3f24dc72`](https://github.com/PrismJS/prism/commit/3f24dc72) - * Recognize walrus operator ([#3126](https://github.com/PrismJS/prism/issues/3126)) [`18bd101c`](https://github.com/PrismJS/prism/commit/18bd101c) - * Fixed numbers ending with a dot ([#3106](https://github.com/PrismJS/prism/issues/3106)) [`2c63efa6`](https://github.com/PrismJS/prism/commit/2c63efa6) -* __QML__ - * Made `string` greedy ([#3250](https://github.com/PrismJS/prism/issues/3250)) [`1e6dcb51`](https://github.com/PrismJS/prism/commit/1e6dcb51) -* __React JSX__ - * Move alias property ([#3222](https://github.com/PrismJS/prism/issues/3222)) [`18c92048`](https://github.com/PrismJS/prism/commit/18c92048) -* __React TSX__ - * Removed `parameter` token ([#3090](https://github.com/PrismJS/prism/issues/3090)) [`0a313f4f`](https://github.com/PrismJS/prism/commit/0a313f4f) -* __Reason__ - * Use standard tokens correctly ([#3251](https://github.com/PrismJS/prism/issues/3251)) [`809af0d9`](https://github.com/PrismJS/prism/commit/809af0d9) -* __Regex__ - * Fixed char-class/char-set confusion ([#3124](https://github.com/PrismJS/prism/issues/3124)) [`4dde2e20`](https://github.com/PrismJS/prism/commit/4dde2e20) -* __Ren'py__ - * Improved language + added tests ([#3125](https://github.com/PrismJS/prism/issues/3125)) [`ede55b2c`](https://github.com/PrismJS/prism/commit/ede55b2c) -* __Rip__ - * Use standard `char` token ([#3252](https://github.com/PrismJS/prism/issues/3252)) [`2069ab0c`](https://github.com/PrismJS/prism/commit/2069ab0c) -* __Ruby__ - * Improved tokenization ([#3193](https://github.com/PrismJS/prism/issues/3193)) [`86028adb`](https://github.com/PrismJS/prism/commit/86028adb) -* __Rust__ - * Improved `type-definition` and use standard tokens correctly ([#3253](https://github.com/PrismJS/prism/issues/3253)) [`4049e5c6`](https://github.com/PrismJS/prism/commit/4049e5c6) -* __Scheme__ - * Use standard `char` token ([#3254](https://github.com/PrismJS/prism/issues/3254)) [`7d740c45`](https://github.com/PrismJS/prism/commit/7d740c45) - * Updates syntax for reals ([#3159](https://github.com/PrismJS/prism/issues/3159)) [`4eb81fa1`](https://github.com/PrismJS/prism/commit/4eb81fa1) -* __Smalltalk__ - * Use standard `char` token ([#3255](https://github.com/PrismJS/prism/issues/3255)) [`a7bb3001`](https://github.com/PrismJS/prism/commit/a7bb3001) - * Added `boolean` token ([#3100](https://github.com/PrismJS/prism/issues/3100)) [`51382524`](https://github.com/PrismJS/prism/commit/51382524) -* __Smarty__ - * Improved tokenization ([#3268](https://github.com/PrismJS/prism/issues/3268)) [`acc0bc09`](https://github.com/PrismJS/prism/commit/acc0bc09) -* __SQL__ - * Added identifier token ([#3141](https://github.com/PrismJS/prism/issues/3141)) [`4e00cddd`](https://github.com/PrismJS/prism/commit/4e00cddd) -* __Squirrel__ - * Use standard `char` token ([#3256](https://github.com/PrismJS/prism/issues/3256)) [`58a65bfd`](https://github.com/PrismJS/prism/commit/58a65bfd) -* __Stan__ - * Added missing keywords and HOFs ([#3238](https://github.com/PrismJS/prism/issues/3238)) [`afd77ed1`](https://github.com/PrismJS/prism/commit/afd77ed1) -* __Structured Text (IEC 61131-3)__ - * Structured text: Improved tokenization ([#3213](https://github.com/PrismJS/prism/issues/3213)) [`d04d166d`](https://github.com/PrismJS/prism/commit/d04d166d) -* __Swift__ - * Added support for `isolated` keyword ([#3174](https://github.com/PrismJS/prism/issues/3174)) [`18c828a6`](https://github.com/PrismJS/prism/commit/18c828a6) -* __TAP__ - * Conform to quoted-properties style ([#3127](https://github.com/PrismJS/prism/issues/3127)) [`3ef71533`](https://github.com/PrismJS/prism/commit/3ef71533) -* __Tremor__ - * Use standard `regex` token ([#3257](https://github.com/PrismJS/prism/issues/3257)) [`c56e4bf5`](https://github.com/PrismJS/prism/commit/c56e4bf5) -* __Twig__ - * Improved tokenization ([#3259](https://github.com/PrismJS/prism/issues/3259)) [`e03a7c24`](https://github.com/PrismJS/prism/commit/e03a7c24) -* __TypeScript__ - * Removed duplicate keywords ([#3132](https://github.com/PrismJS/prism/issues/3132)) [`91060fd6`](https://github.com/PrismJS/prism/commit/91060fd6) -* __URI__ - * Fixed IPv4 regex ([#3128](https://github.com/PrismJS/prism/issues/3128)) [`599e30ee`](https://github.com/PrismJS/prism/commit/599e30ee) -* __V__ - * Use standard `char` token ([#3260](https://github.com/PrismJS/prism/issues/3260)) [`e4373256`](https://github.com/PrismJS/prism/commit/e4373256) -* __Verilog__ - * Use standard tokens correctly ([#3261](https://github.com/PrismJS/prism/issues/3261)) [`43124129`](https://github.com/PrismJS/prism/commit/43124129) -* __Visual Basic__ - * Simplify regexes and use more common aliases ([#3262](https://github.com/PrismJS/prism/issues/3262)) [`aa73d448`](https://github.com/PrismJS/prism/commit/aa73d448) -* __Wolfram language__ - * Removed unmatchable punctuation variant ([#3133](https://github.com/PrismJS/prism/issues/3133)) [`a28a86ad`](https://github.com/PrismJS/prism/commit/a28a86ad) -* __Xojo (REALbasic)__ - * Proper token name for directives ([#3263](https://github.com/PrismJS/prism/issues/3263)) [`ffd8343f`](https://github.com/PrismJS/prism/commit/ffd8343f) -* __Zig__ - * Added missing keywords ([#3279](https://github.com/PrismJS/prism/issues/3279)) [`deed35e3`](https://github.com/PrismJS/prism/commit/deed35e3) - * Use standard `char` token ([#3264](https://github.com/PrismJS/prism/issues/3264)) [`c3f9fb70`](https://github.com/PrismJS/prism/commit/c3f9fb70) - * Fixed module comments and astral chars ([#3129](https://github.com/PrismJS/prism/issues/3129)) [`09a0e2ba`](https://github.com/PrismJS/prism/commit/09a0e2ba) +- Use `\d` for `[0-9]` ([#3097](https://github.com/PrismJS/prism/issues/3097)) [`9fe2f93e`](https://github.com/PrismJS/prism/commit/9fe2f93e) +- **6502 Assembly** + - Use standard tokens and minor improvements ([#3184](https://github.com/PrismJS/prism/issues/3184)) [`929c33e0`](https://github.com/PrismJS/prism/commit/929c33e0) +- **AppleScript** + - Use `class-name` standard token ([#3182](https://github.com/PrismJS/prism/issues/3182)) [`9f5e511d`](https://github.com/PrismJS/prism/commit/9f5e511d) +- **AQL** + - Differentiate between strings and identifiers ([#3183](https://github.com/PrismJS/prism/issues/3183)) [`fa540ab7`](https://github.com/PrismJS/prism/commit/fa540ab7) +- **Arduino** + - Added `ino` alias ([#2990](https://github.com/PrismJS/prism/issues/2990)) [`5b7ce5e4`](https://github.com/PrismJS/prism/commit/5b7ce5e4) +- **Avro IDL** + - Removed char syntax ([#3185](https://github.com/PrismJS/prism/issues/3185)) [`c7809285`](https://github.com/PrismJS/prism/commit/c7809285) +- **Bash** + - Added `node` to known commands ([#3291](https://github.com/PrismJS/prism/issues/3291)) [`4b19b502`](https://github.com/PrismJS/prism/commit/4b19b502) + - Added `vcpkg` command ([#3282](https://github.com/PrismJS/prism/issues/3282)) [`b351bc69`](https://github.com/PrismJS/prism/commit/b351bc69) + - Added `docker` and `podman` commands ([#3237](https://github.com/PrismJS/prism/issues/3237)) [`8c5ed251`](https://github.com/PrismJS/prism/commit/8c5ed251) +- **Birb** + - Fixed class name false positives ([#3111](https://github.com/PrismJS/prism/issues/3111)) [`d7017beb`](https://github.com/PrismJS/prism/commit/d7017beb) +- **Bro** + - Removed `variable` and minor improvements ([#3186](https://github.com/PrismJS/prism/issues/3186)) [`4cebf34c`](https://github.com/PrismJS/prism/commit/4cebf34c) +- **BSL (1C:Enterprise)** + - Made `directive` greedy ([#3112](https://github.com/PrismJS/prism/issues/3112)) [`5c412cbb`](https://github.com/PrismJS/prism/commit/5c412cbb) +- **C** + - Added `char` token ([#3207](https://github.com/PrismJS/prism/issues/3207)) [`d85a64ae`](https://github.com/PrismJS/prism/commit/d85a64ae) +- **C#** + - Added `char` token ([#3270](https://github.com/PrismJS/prism/issues/3270)) [`220bc40f`](https://github.com/PrismJS/prism/commit/220bc40f) + - Move everything into the IIFE ([#3077](https://github.com/PrismJS/prism/issues/3077)) [`9ed4cf6e`](https://github.com/PrismJS/prism/commit/9ed4cf6e) +- **Clojure** + - Added `char` token ([#3188](https://github.com/PrismJS/prism/issues/3188)) [`1c88c7da`](https://github.com/PrismJS/prism/commit/1c88c7da) +- **Concurnas** + - Improved tokenization ([#3189](https://github.com/PrismJS/prism/issues/3189)) [`7b34e65d`](https://github.com/PrismJS/prism/commit/7b34e65d) +- **Content-Security-Policy** + - Improved tokenization ([#3276](https://github.com/PrismJS/prism/issues/3276)) [`a943f2bb`](https://github.com/PrismJS/prism/commit/a943f2bb) +- **Coq** + - Improved attribute pattern performance ([#3085](https://github.com/PrismJS/prism/issues/3085)) [`2f9672aa`](https://github.com/PrismJS/prism/commit/2f9672aa) +- **Crystal** + - Improved tokenization ([#3194](https://github.com/PrismJS/prism/issues/3194)) [`51e3ecc0`](https://github.com/PrismJS/prism/commit/51e3ecc0) +- **Cypher** + - Removed non-standard use of `symbol` token name ([#3195](https://github.com/PrismJS/prism/issues/3195)) [`6af8a644`](https://github.com/PrismJS/prism/commit/6af8a644) +- **D** + - Added standard char token ([#3196](https://github.com/PrismJS/prism/issues/3196)) [`dafdbdec`](https://github.com/PrismJS/prism/commit/dafdbdec) +- **Dart** + - Added string interpolation and improved metadata ([#3197](https://github.com/PrismJS/prism/issues/3197)) [`e1370357`](https://github.com/PrismJS/prism/commit/e1370357) +- **DataWeave** + - Fixed keywords being highlighted as functions ([#3113](https://github.com/PrismJS/prism/issues/3113)) [`532212b2`](https://github.com/PrismJS/prism/commit/532212b2) +- **EditorConfig** + - Swap out `property` for `key`; alias with `attr-name` ([#3272](https://github.com/PrismJS/prism/issues/3272)) [`bee6ad56`](https://github.com/PrismJS/prism/commit/bee6ad56) +- **Eiffel** + - Removed non-standard use of `builtin` name ([#3198](https://github.com/PrismJS/prism/issues/3198)) [`6add768b`](https://github.com/PrismJS/prism/commit/6add768b) +- **Elm** + - Recognize unicode escapes as valid Char ([#3105](https://github.com/PrismJS/prism/issues/3105)) [`736c581d`](https://github.com/PrismJS/prism/commit/736c581d) +- **ERB** + - Better embedding of Ruby ([#3192](https://github.com/PrismJS/prism/issues/3192)) [`336edeea`](https://github.com/PrismJS/prism/commit/336edeea) +- **F#** + - Added `char` token ([#3271](https://github.com/PrismJS/prism/issues/3271)) [`b58cd722`](https://github.com/PrismJS/prism/commit/b58cd722) +- **G-code** + - Use standard-conforming alias for checksum ([#3205](https://github.com/PrismJS/prism/issues/3205)) [`ee7ab563`](https://github.com/PrismJS/prism/commit/ee7ab563) +- **GameMaker Language** + - Fixed `operator` token and added tests ([#3114](https://github.com/PrismJS/prism/issues/3114)) [`d359eeae`](https://github.com/PrismJS/prism/commit/d359eeae) +- **Go** + - Added `char` token and improved `string` and `number` tokens ([#3208](https://github.com/PrismJS/prism/issues/3208)) [`f11b86e2`](https://github.com/PrismJS/prism/commit/f11b86e2) +- **GraphQL** + - Optimized regexes ([#3136](https://github.com/PrismJS/prism/issues/3136)) [`8494519e`](https://github.com/PrismJS/prism/commit/8494519e) +- **Haml** + - Use `symbol` alias for filter names ([#3210](https://github.com/PrismJS/prism/issues/3210)) [`3d410670`](https://github.com/PrismJS/prism/commit/3d410670) + - Improved filter and interpolation tokenization ([#3191](https://github.com/PrismJS/prism/issues/3191)) [`005ba469`](https://github.com/PrismJS/prism/commit/005ba469) +- **Haxe** + - Improved tokenization ([#3211](https://github.com/PrismJS/prism/issues/3211)) [`f41bcf23`](https://github.com/PrismJS/prism/commit/f41bcf23) +- **Hoon** + - Simplified the language definition a little ([#3212](https://github.com/PrismJS/prism/issues/3212)) [`81920b62`](https://github.com/PrismJS/prism/commit/81920b62) +- **HTTP** + - Added support for special header value tokenization ([#3275](https://github.com/PrismJS/prism/issues/3275)) [`3362fc79`](https://github.com/PrismJS/prism/commit/3362fc79) + - Relax pattern for body ([#3169](https://github.com/PrismJS/prism/issues/3169)) [`22d0c6ba`](https://github.com/PrismJS/prism/commit/22d0c6ba) +- **HTTP Public-Key-Pins** + - Improved tokenization ([#3278](https://github.com/PrismJS/prism/issues/3278)) [`0f1b5810`](https://github.com/PrismJS/prism/commit/0f1b5810) +- **HTTP Strict-Transport-Security** + - Improved tokenization ([#3277](https://github.com/PrismJS/prism/issues/3277)) [`3d708b97`](https://github.com/PrismJS/prism/commit/3d708b97) +- **Idris** + - Fixed import statements ([#3115](https://github.com/PrismJS/prism/issues/3115)) [`15cb3b78`](https://github.com/PrismJS/prism/commit/15cb3b78) +- **Io** + - Simplified comment token ([#3214](https://github.com/PrismJS/prism/issues/3214)) [`c2afa59b`](https://github.com/PrismJS/prism/commit/c2afa59b) +- **J** + - Made comments greedy ([#3215](https://github.com/PrismJS/prism/issues/3215)) [`5af16014`](https://github.com/PrismJS/prism/commit/5af16014) +- **Java** + - Added `char` token ([#3217](https://github.com/PrismJS/prism/issues/3217)) [`0a9f909c`](https://github.com/PrismJS/prism/commit/0a9f909c) +- **Java stack trace** + - Removed unreachable parts of regexes ([#3219](https://github.com/PrismJS/prism/issues/3219)) [`fa55492b`](https://github.com/PrismJS/prism/commit/fa55492b) + - Added missing lookbehinds ([#3116](https://github.com/PrismJS/prism/issues/3116)) [`cfb2e782`](https://github.com/PrismJS/prism/commit/cfb2e782) +- **JavaScript** + - Improved `number` pattern ([#3149](https://github.com/PrismJS/prism/issues/3149)) [`5a24cbff`](https://github.com/PrismJS/prism/commit/5a24cbff) + - Added properties ([#3099](https://github.com/PrismJS/prism/issues/3099)) [`3b2238fa`](https://github.com/PrismJS/prism/commit/3b2238fa) +- **Jolie** + - Improved tokenization ([#3221](https://github.com/PrismJS/prism/issues/3221)) [`dfbb2020`](https://github.com/PrismJS/prism/commit/dfbb2020) +- **JQ** + - Improved performance of strings ([#3084](https://github.com/PrismJS/prism/issues/3084)) [`233415b8`](https://github.com/PrismJS/prism/commit/233415b8) +- **JS stack trace** + - Added missing boundary assertion ([#3117](https://github.com/PrismJS/prism/issues/3117)) [`23d9aec1`](https://github.com/PrismJS/prism/commit/23d9aec1) +- **Julia** + - Added `char` token ([#3223](https://github.com/PrismJS/prism/issues/3223)) [`3a876df0`](https://github.com/PrismJS/prism/commit/3a876df0) +- **Keyman** + - Improved tokenization ([#3224](https://github.com/PrismJS/prism/issues/3224)) [`baa95cab`](https://github.com/PrismJS/prism/commit/baa95cab) +- **Kotlin** + - Added `char` token and improved string interpolation ([#3225](https://github.com/PrismJS/prism/issues/3225)) [`563cd73e`](https://github.com/PrismJS/prism/commit/563cd73e) +- **Latte** + - Use standard token names and combined delimiter tokens ([#3226](https://github.com/PrismJS/prism/issues/3226)) [`6b168a3b`](https://github.com/PrismJS/prism/commit/6b168a3b) +- **Liquid** + - Removed unmatchable object variants ([#3135](https://github.com/PrismJS/prism/issues/3135)) [`05e7ab04`](https://github.com/PrismJS/prism/commit/05e7ab04) +- **Lisp** + - Improved `defun` ([#3130](https://github.com/PrismJS/prism/issues/3130)) [`e8f84a6c`](https://github.com/PrismJS/prism/commit/e8f84a6c) +- **Makefile** + - Use standard token names correctly ([#3227](https://github.com/PrismJS/prism/issues/3227)) [`21a3c2d7`](https://github.com/PrismJS/prism/commit/21a3c2d7) +- **Markdown** + - Fixed typo in token name ([#3101](https://github.com/PrismJS/prism/issues/3101)) [`00f77a2c`](https://github.com/PrismJS/prism/commit/00f77a2c) +- **MAXScript** + - Various improvements ([#3181](https://github.com/PrismJS/prism/issues/3181)) [`e9b856c8`](https://github.com/PrismJS/prism/commit/e9b856c8) + - Fixed booleans not being highlighted ([#3134](https://github.com/PrismJS/prism/issues/3134)) [`c6574e6b`](https://github.com/PrismJS/prism/commit/c6574e6b) +- **Monkey** + - Use standard tokens correctly ([#3228](https://github.com/PrismJS/prism/issues/3228)) [`c1025aa6`](https://github.com/PrismJS/prism/commit/c1025aa6) +- **N1QL** + - Updated keywords + minor improvements ([#3229](https://github.com/PrismJS/prism/issues/3229)) [`642d93ec`](https://github.com/PrismJS/prism/commit/642d93ec) +- **nginx** + - Made some patterns greedy ([#3230](https://github.com/PrismJS/prism/issues/3230)) [`7b72e0ad`](https://github.com/PrismJS/prism/commit/7b72e0ad) +- **Nim** + - Added `char` token and made some tokens greedy ([#3231](https://github.com/PrismJS/prism/issues/3231)) [`2334b4b6`](https://github.com/PrismJS/prism/commit/2334b4b6) + - Fixed backtick identifier ([#3118](https://github.com/PrismJS/prism/issues/3118)) [`75331bea`](https://github.com/PrismJS/prism/commit/75331bea) +- **Nix** + - Use standard token name correctly ([#3232](https://github.com/PrismJS/prism/issues/3232)) [`5bf6e35f`](https://github.com/PrismJS/prism/commit/5bf6e35f) + - Removed unmatchable token ([#3119](https://github.com/PrismJS/prism/issues/3119)) [`dc1e808f`](https://github.com/PrismJS/prism/commit/dc1e808f) +- **NSIS** + - Made `comment` greedy ([#3234](https://github.com/PrismJS/prism/issues/3234)) [`969f152a`](https://github.com/PrismJS/prism/commit/969f152a) + - Update regex pattern for variables ([#3266](https://github.com/PrismJS/prism/issues/3266)) [`adcc8784`](https://github.com/PrismJS/prism/commit/adcc8784) + - Update regex for constants pattern ([#3267](https://github.com/PrismJS/prism/issues/3267)) [`55583fb2`](https://github.com/PrismJS/prism/commit/55583fb2) +- **Objective-C** + - Improved `string` token ([#3235](https://github.com/PrismJS/prism/issues/3235)) [`8e0e95f3`](https://github.com/PrismJS/prism/commit/8e0e95f3) +- **OCaml** + - Improved tokenization ([#3269](https://github.com/PrismJS/prism/issues/3269)) [`7bcc5da0`](https://github.com/PrismJS/prism/commit/7bcc5da0) + - Removed unmatchable punctuation variant ([#3120](https://github.com/PrismJS/prism/issues/3120)) [`314d6994`](https://github.com/PrismJS/prism/commit/314d6994) +- **Oz** + - Improved tokenization ([#3240](https://github.com/PrismJS/prism/issues/3240)) [`a3905c04`](https://github.com/PrismJS/prism/commit/a3905c04) +- **Pascal** + - Added support for asm and directives ([#2653](https://github.com/PrismJS/prism/issues/2653)) [`f053af13`](https://github.com/PrismJS/prism/commit/f053af13) +- **PATROL Scripting Language** + - Added `boolean` token ([#3248](https://github.com/PrismJS/prism/issues/3248)) [`a5b6c5eb`](https://github.com/PrismJS/prism/commit/a5b6c5eb) +- **Perl** + - Improved tokenization ([#3241](https://github.com/PrismJS/prism/issues/3241)) [`f22ea9f9`](https://github.com/PrismJS/prism/commit/f22ea9f9) +- **PHP** + - Removed useless keyword tokens ([#3121](https://github.com/PrismJS/prism/issues/3121)) [`ee62a080`](https://github.com/PrismJS/prism/commit/ee62a080) +- **PHP Extras** + - Improved `scope` and `this` ([#3243](https://github.com/PrismJS/prism/issues/3243)) [`59ef51db`](https://github.com/PrismJS/prism/commit/59ef51db) +- **PL/SQL** + - Updated keywords + other improvements ([#3109](https://github.com/PrismJS/prism/issues/3109)) [`e7ba877b`](https://github.com/PrismJS/prism/commit/e7ba877b) +- **PowerQuery** + - Improved tokenization and use standard tokens correctly ([#3244](https://github.com/PrismJS/prism/issues/3244)) [`5688f487`](https://github.com/PrismJS/prism/commit/5688f487) + - Removed useless `data-type` alternative ([#3122](https://github.com/PrismJS/prism/issues/3122)) [`eeb13996`](https://github.com/PrismJS/prism/commit/eeb13996) +- **PowerShell** + - Fixed lookbehind + refactoring ([#3245](https://github.com/PrismJS/prism/issues/3245)) [`d30a2da6`](https://github.com/PrismJS/prism/commit/d30a2da6) +- **Processing** + - Use standard tokens correctly ([#3246](https://github.com/PrismJS/prism/issues/3246)) [`5ee8c557`](https://github.com/PrismJS/prism/commit/5ee8c557) +- **Prolog** + - Removed variable token + minor improvements ([#3247](https://github.com/PrismJS/prism/issues/3247)) [`bacf9ae3`](https://github.com/PrismJS/prism/commit/bacf9ae3) +- **Pug** + - Improved filter tokenization ([#3258](https://github.com/PrismJS/prism/issues/3258)) [`0390e644`](https://github.com/PrismJS/prism/commit/0390e644) +- **PureBasic** + - Fixed token order inside `asm` token ([#3123](https://github.com/PrismJS/prism/issues/3123)) [`f3b25786`](https://github.com/PrismJS/prism/commit/f3b25786) +- **Python** + - Made `comment` greedy ([#3249](https://github.com/PrismJS/prism/issues/3249)) [`8ecef306`](https://github.com/PrismJS/prism/commit/8ecef306) + - Add `match` and `case` (soft) keywords ([#3142](https://github.com/PrismJS/prism/issues/3142)) [`3f24dc72`](https://github.com/PrismJS/prism/commit/3f24dc72) + - Recognize walrus operator ([#3126](https://github.com/PrismJS/prism/issues/3126)) [`18bd101c`](https://github.com/PrismJS/prism/commit/18bd101c) + - Fixed numbers ending with a dot ([#3106](https://github.com/PrismJS/prism/issues/3106)) [`2c63efa6`](https://github.com/PrismJS/prism/commit/2c63efa6) +- **QML** + - Made `string` greedy ([#3250](https://github.com/PrismJS/prism/issues/3250)) [`1e6dcb51`](https://github.com/PrismJS/prism/commit/1e6dcb51) +- **React JSX** + - Move alias property ([#3222](https://github.com/PrismJS/prism/issues/3222)) [`18c92048`](https://github.com/PrismJS/prism/commit/18c92048) +- **React TSX** + - Removed `parameter` token ([#3090](https://github.com/PrismJS/prism/issues/3090)) [`0a313f4f`](https://github.com/PrismJS/prism/commit/0a313f4f) +- **Reason** + - Use standard tokens correctly ([#3251](https://github.com/PrismJS/prism/issues/3251)) [`809af0d9`](https://github.com/PrismJS/prism/commit/809af0d9) +- **Regex** + - Fixed char-class/char-set confusion ([#3124](https://github.com/PrismJS/prism/issues/3124)) [`4dde2e20`](https://github.com/PrismJS/prism/commit/4dde2e20) +- **Ren'py** + - Improved language + added tests ([#3125](https://github.com/PrismJS/prism/issues/3125)) [`ede55b2c`](https://github.com/PrismJS/prism/commit/ede55b2c) +- **Rip** + - Use standard `char` token ([#3252](https://github.com/PrismJS/prism/issues/3252)) [`2069ab0c`](https://github.com/PrismJS/prism/commit/2069ab0c) +- **Ruby** + - Improved tokenization ([#3193](https://github.com/PrismJS/prism/issues/3193)) [`86028adb`](https://github.com/PrismJS/prism/commit/86028adb) +- **Rust** + - Improved `type-definition` and use standard tokens correctly ([#3253](https://github.com/PrismJS/prism/issues/3253)) [`4049e5c6`](https://github.com/PrismJS/prism/commit/4049e5c6) +- **Scheme** + - Use standard `char` token ([#3254](https://github.com/PrismJS/prism/issues/3254)) [`7d740c45`](https://github.com/PrismJS/prism/commit/7d740c45) + - Updates syntax for reals ([#3159](https://github.com/PrismJS/prism/issues/3159)) [`4eb81fa1`](https://github.com/PrismJS/prism/commit/4eb81fa1) +- **Smalltalk** + - Use standard `char` token ([#3255](https://github.com/PrismJS/prism/issues/3255)) [`a7bb3001`](https://github.com/PrismJS/prism/commit/a7bb3001) + - Added `boolean` token ([#3100](https://github.com/PrismJS/prism/issues/3100)) [`51382524`](https://github.com/PrismJS/prism/commit/51382524) +- **Smarty** + - Improved tokenization ([#3268](https://github.com/PrismJS/prism/issues/3268)) [`acc0bc09`](https://github.com/PrismJS/prism/commit/acc0bc09) +- **SQL** + - Added identifier token ([#3141](https://github.com/PrismJS/prism/issues/3141)) [`4e00cddd`](https://github.com/PrismJS/prism/commit/4e00cddd) +- **Squirrel** + - Use standard `char` token ([#3256](https://github.com/PrismJS/prism/issues/3256)) [`58a65bfd`](https://github.com/PrismJS/prism/commit/58a65bfd) +- **Stan** + - Added missing keywords and HOFs ([#3238](https://github.com/PrismJS/prism/issues/3238)) [`afd77ed1`](https://github.com/PrismJS/prism/commit/afd77ed1) +- **Structured Text (IEC 61131-3)** + - Structured text: Improved tokenization ([#3213](https://github.com/PrismJS/prism/issues/3213)) [`d04d166d`](https://github.com/PrismJS/prism/commit/d04d166d) +- **Swift** + - Added support for `isolated` keyword ([#3174](https://github.com/PrismJS/prism/issues/3174)) [`18c828a6`](https://github.com/PrismJS/prism/commit/18c828a6) +- **TAP** + - Conform to quoted-properties style ([#3127](https://github.com/PrismJS/prism/issues/3127)) [`3ef71533`](https://github.com/PrismJS/prism/commit/3ef71533) +- **Tremor** + - Use standard `regex` token ([#3257](https://github.com/PrismJS/prism/issues/3257)) [`c56e4bf5`](https://github.com/PrismJS/prism/commit/c56e4bf5) +- **Twig** + - Improved tokenization ([#3259](https://github.com/PrismJS/prism/issues/3259)) [`e03a7c24`](https://github.com/PrismJS/prism/commit/e03a7c24) +- **TypeScript** + - Removed duplicate keywords ([#3132](https://github.com/PrismJS/prism/issues/3132)) [`91060fd6`](https://github.com/PrismJS/prism/commit/91060fd6) +- **URI** + - Fixed IPv4 regex ([#3128](https://github.com/PrismJS/prism/issues/3128)) [`599e30ee`](https://github.com/PrismJS/prism/commit/599e30ee) +- **V** + - Use standard `char` token ([#3260](https://github.com/PrismJS/prism/issues/3260)) [`e4373256`](https://github.com/PrismJS/prism/commit/e4373256) +- **Verilog** + - Use standard tokens correctly ([#3261](https://github.com/PrismJS/prism/issues/3261)) [`43124129`](https://github.com/PrismJS/prism/commit/43124129) +- **Visual Basic** + - Simplify regexes and use more common aliases ([#3262](https://github.com/PrismJS/prism/issues/3262)) [`aa73d448`](https://github.com/PrismJS/prism/commit/aa73d448) +- **Wolfram language** + - Removed unmatchable punctuation variant ([#3133](https://github.com/PrismJS/prism/issues/3133)) [`a28a86ad`](https://github.com/PrismJS/prism/commit/a28a86ad) +- **Xojo (REALbasic)** + - Proper token name for directives ([#3263](https://github.com/PrismJS/prism/issues/3263)) [`ffd8343f`](https://github.com/PrismJS/prism/commit/ffd8343f) +- **Zig** + - Added missing keywords ([#3279](https://github.com/PrismJS/prism/issues/3279)) [`deed35e3`](https://github.com/PrismJS/prism/commit/deed35e3) + - Use standard `char` token ([#3264](https://github.com/PrismJS/prism/issues/3264)) [`c3f9fb70`](https://github.com/PrismJS/prism/commit/c3f9fb70) + - Fixed module comments and astral chars ([#3129](https://github.com/PrismJS/prism/issues/3129)) [`09a0e2ba`](https://github.com/PrismJS/prism/commit/09a0e2ba) ### Updated plugins -* __File Highlight__ - * File highlight+data range ([#1813](https://github.com/PrismJS/prism/issues/1813)) [`d38592c5`](https://github.com/PrismJS/prism/commit/d38592c5) -* __Keep Markup__ - * Added `drop-tokens` option class ([#3166](https://github.com/PrismJS/prism/issues/3166)) [`b679cfe6`](https://github.com/PrismJS/prism/commit/b679cfe6) -* __Line Highlight__ - * Expose `highlightLines` function as `Prism.plugins.highlightLines` ([#3086](https://github.com/PrismJS/prism/issues/3086)) [`9f4c0e74`](https://github.com/PrismJS/prism/commit/9f4c0e74) -* __Toolbar__ - * Set `z-index` of `.toolbar` to 10 ([#3163](https://github.com/PrismJS/prism/issues/3163)) [`1cac3559`](https://github.com/PrismJS/prism/commit/1cac3559) +- **File Highlight** + - File highlight+data range ([#1813](https://github.com/PrismJS/prism/issues/1813)) [`d38592c5`](https://github.com/PrismJS/prism/commit/d38592c5) +- **Keep Markup** + - Added `drop-tokens` option class ([#3166](https://github.com/PrismJS/prism/issues/3166)) [`b679cfe6`](https://github.com/PrismJS/prism/commit/b679cfe6) +- **Line Highlight** + - Expose `highlightLines` function as `Prism.plugins.highlightLines` ([#3086](https://github.com/PrismJS/prism/issues/3086)) [`9f4c0e74`](https://github.com/PrismJS/prism/commit/9f4c0e74) +- **Toolbar** + - Set `z-index` of `.toolbar` to 10 ([#3163](https://github.com/PrismJS/prism/issues/3163)) [`1cac3559`](https://github.com/PrismJS/prism/commit/1cac3559) ### Updated themes -* Coy: Set `z-index` to make shadows visible in colored table cells ([#3161](https://github.com/PrismJS/prism/issues/3161)) [`79f250f3`](https://github.com/PrismJS/prism/commit/79f250f3) -* Coy: Added padding to account for box shadow ([#3143](https://github.com/PrismJS/prism/issues/3143)) [`a6a4ce7e`](https://github.com/PrismJS/prism/commit/a6a4ce7e) +- Coy: Set `z-index` to make shadows visible in colored table cells ([#3161](https://github.com/PrismJS/prism/issues/3161)) [`79f250f3`](https://github.com/PrismJS/prism/commit/79f250f3) +- Coy: Added padding to account for box shadow ([#3143](https://github.com/PrismJS/prism/issues/3143)) [`a6a4ce7e`](https://github.com/PrismJS/prism/commit/a6a4ce7e) ### Other -* __Core__ - * Added `setLanguage` util function ([#3167](https://github.com/PrismJS/prism/issues/3167)) [`b631949a`](https://github.com/PrismJS/prism/commit/b631949a) - * Fixed type error on null ([#3057](https://github.com/PrismJS/prism/issues/3057)) [`a80a68ba`](https://github.com/PrismJS/prism/commit/a80a68ba) - * Document `disableWorkerMessageHandler` ([#3088](https://github.com/PrismJS/prism/issues/3088)) [`213cf7be`](https://github.com/PrismJS/prism/commit/213cf7be) -* __Infrastructure__ - * Tests: Added `.html.test` files for replace `.js` language tests ([#3148](https://github.com/PrismJS/prism/issues/3148)) [`2e834c8c`](https://github.com/PrismJS/prism/commit/2e834c8c) - * Added regex coverage ([#3138](https://github.com/PrismJS/prism/issues/3138)) [`5333e281`](https://github.com/PrismJS/prism/commit/5333e281) - * Tests: Added `TestCaseFile` class and generalized `runTestCase` ([#3147](https://github.com/PrismJS/prism/issues/3147)) [`ae8888a0`](https://github.com/PrismJS/prism/commit/ae8888a0) - * Added even more language tests ([#3137](https://github.com/PrismJS/prism/issues/3137)) [`344d0b27`](https://github.com/PrismJS/prism/commit/344d0b27) - * Added more plugin tests ([#1969](https://github.com/PrismJS/prism/issues/1969)) [`a394a14d`](https://github.com/PrismJS/prism/commit/a394a14d) - * Added more language tests ([#3131](https://github.com/PrismJS/prism/issues/3131)) [`2f7f7364`](https://github.com/PrismJS/prism/commit/2f7f7364) - * `package.json`: Added `engines.node` field ([#3108](https://github.com/PrismJS/prism/issues/3108)) [`798ee4f6`](https://github.com/PrismJS/prism/commit/798ee4f6) - * Use tabs in `package(-lock).json` ([#3098](https://github.com/PrismJS/prism/issues/3098)) [`8daebb4a`](https://github.com/PrismJS/prism/commit/8daebb4a) - * Update `eslint-plugin-regexp@1.2.0` ([#3091](https://github.com/PrismJS/prism/issues/3091)) [`e6e1d5ae`](https://github.com/PrismJS/prism/commit/e6e1d5ae) - * Added minified CSS ([#3073](https://github.com/PrismJS/prism/issues/3073)) [`d63d6c0e`](https://github.com/PrismJS/prism/commit/d63d6c0e) -* __Website__ - * Readme: Clarify usage of our build system ([#3239](https://github.com/PrismJS/prism/issues/3239)) [`6f1d904a`](https://github.com/PrismJS/prism/commit/6f1d904a) - * Improved CDN usage URLs ([#3285](https://github.com/PrismJS/prism/issues/3285)) [`6c21b2f7`](https://github.com/PrismJS/prism/commit/6c21b2f7) - * Update download.html [`9d5424b6`](https://github.com/PrismJS/prism/commit/9d5424b6) - * Autoloader: Mention how to load grammars from URLs ([#3218](https://github.com/PrismJS/prism/issues/3218)) [`cefccdd1`](https://github.com/PrismJS/prism/commit/cefccdd1) - * Added PrismJS React and HTML tutorial link ([#3190](https://github.com/PrismJS/prism/issues/3190)) [`0ecdbdce`](https://github.com/PrismJS/prism/commit/0ecdbdce) - * Improved readability ([#3177](https://github.com/PrismJS/prism/issues/3177)) [`4433d7fe`](https://github.com/PrismJS/prism/commit/4433d7fe) - * Fixed red highlighting in Firefox ([#3178](https://github.com/PrismJS/prism/issues/3178)) [`746da79b`](https://github.com/PrismJS/prism/commit/746da79b) - * Use Keep markup to highlight code section ([#3164](https://github.com/PrismJS/prism/issues/3164)) [`ebd59e32`](https://github.com/PrismJS/prism/commit/ebd59e32) - * Document standard tokens and provide examples ([#3104](https://github.com/PrismJS/prism/issues/3104)) [`37551200`](https://github.com/PrismJS/prism/commit/37551200) - * Fixed dead link to third-party tutorial [#3155](https://github.com/PrismJS/prism/issues/3155) ([#3156](https://github.com/PrismJS/prism/issues/3156)) [`31b4c1b8`](https://github.com/PrismJS/prism/commit/31b4c1b8) - * Repositioned theme selector ([#3146](https://github.com/PrismJS/prism/issues/3146)) [`ea361e5a`](https://github.com/PrismJS/prism/commit/ea361e5a) - * Adjusted TOC's line height for better readability ([#3145](https://github.com/PrismJS/prism/issues/3145)) [`c5629706`](https://github.com/PrismJS/prism/commit/c5629706) - * Updated plugin header template ([#3144](https://github.com/PrismJS/prism/issues/3144)) [`faedfe85`](https://github.com/PrismJS/prism/commit/faedfe85) - * Update test and example pages to use Autoloader ([#1936](https://github.com/PrismJS/prism/issues/1936)) [`3d96eedc`](https://github.com/PrismJS/prism/commit/3d96eedc) +- **Core** + - Added `setLanguage` util function ([#3167](https://github.com/PrismJS/prism/issues/3167)) [`b631949a`](https://github.com/PrismJS/prism/commit/b631949a) + - Fixed type error on null ([#3057](https://github.com/PrismJS/prism/issues/3057)) [`a80a68ba`](https://github.com/PrismJS/prism/commit/a80a68ba) + - Document `disableWorkerMessageHandler` ([#3088](https://github.com/PrismJS/prism/issues/3088)) [`213cf7be`](https://github.com/PrismJS/prism/commit/213cf7be) +- **Infrastructure** + - Tests: Added `.html.test` files for replace `.js` language tests ([#3148](https://github.com/PrismJS/prism/issues/3148)) [`2e834c8c`](https://github.com/PrismJS/prism/commit/2e834c8c) + - Added regex coverage ([#3138](https://github.com/PrismJS/prism/issues/3138)) [`5333e281`](https://github.com/PrismJS/prism/commit/5333e281) + - Tests: Added `TestCaseFile` class and generalized `runTestCase` ([#3147](https://github.com/PrismJS/prism/issues/3147)) [`ae8888a0`](https://github.com/PrismJS/prism/commit/ae8888a0) + - Added even more language tests ([#3137](https://github.com/PrismJS/prism/issues/3137)) [`344d0b27`](https://github.com/PrismJS/prism/commit/344d0b27) + - Added more plugin tests ([#1969](https://github.com/PrismJS/prism/issues/1969)) [`a394a14d`](https://github.com/PrismJS/prism/commit/a394a14d) + - Added more language tests ([#3131](https://github.com/PrismJS/prism/issues/3131)) [`2f7f7364`](https://github.com/PrismJS/prism/commit/2f7f7364) + - `package.json`: Added `engines.node` field ([#3108](https://github.com/PrismJS/prism/issues/3108)) [`798ee4f6`](https://github.com/PrismJS/prism/commit/798ee4f6) + - Use tabs in `package(-lock).json` ([#3098](https://github.com/PrismJS/prism/issues/3098)) [`8daebb4a`](https://github.com/PrismJS/prism/commit/8daebb4a) + - Update `eslint-plugin-regexp@1.2.0` ([#3091](https://github.com/PrismJS/prism/issues/3091)) [`e6e1d5ae`](https://github.com/PrismJS/prism/commit/e6e1d5ae) + - Added minified CSS ([#3073](https://github.com/PrismJS/prism/issues/3073)) [`d63d6c0e`](https://github.com/PrismJS/prism/commit/d63d6c0e) +- **Website** + - Readme: Clarify usage of our build system ([#3239](https://github.com/PrismJS/prism/issues/3239)) [`6f1d904a`](https://github.com/PrismJS/prism/commit/6f1d904a) + - Improved CDN usage URLs ([#3285](https://github.com/PrismJS/prism/issues/3285)) [`6c21b2f7`](https://github.com/PrismJS/prism/commit/6c21b2f7) + - Update download.html [`9d5424b6`](https://github.com/PrismJS/prism/commit/9d5424b6) + - Autoloader: Mention how to load grammars from URLs ([#3218](https://github.com/PrismJS/prism/issues/3218)) [`cefccdd1`](https://github.com/PrismJS/prism/commit/cefccdd1) + - Added PrismJS React and HTML tutorial link ([#3190](https://github.com/PrismJS/prism/issues/3190)) [`0ecdbdce`](https://github.com/PrismJS/prism/commit/0ecdbdce) + - Improved readability ([#3177](https://github.com/PrismJS/prism/issues/3177)) [`4433d7fe`](https://github.com/PrismJS/prism/commit/4433d7fe) + - Fixed red highlighting in Firefox ([#3178](https://github.com/PrismJS/prism/issues/3178)) [`746da79b`](https://github.com/PrismJS/prism/commit/746da79b) + - Use Keep markup to highlight code section ([#3164](https://github.com/PrismJS/prism/issues/3164)) [`ebd59e32`](https://github.com/PrismJS/prism/commit/ebd59e32) + - Document standard tokens and provide examples ([#3104](https://github.com/PrismJS/prism/issues/3104)) [`37551200`](https://github.com/PrismJS/prism/commit/37551200) + - Fixed dead link to third-party tutorial [#3155](https://github.com/PrismJS/prism/issues/3155) ([#3156](https://github.com/PrismJS/prism/issues/3156)) [`31b4c1b8`](https://github.com/PrismJS/prism/commit/31b4c1b8) + - Repositioned theme selector ([#3146](https://github.com/PrismJS/prism/issues/3146)) [`ea361e5a`](https://github.com/PrismJS/prism/commit/ea361e5a) + - Adjusted TOC's line height for better readability ([#3145](https://github.com/PrismJS/prism/issues/3145)) [`c5629706`](https://github.com/PrismJS/prism/commit/c5629706) + - Updated plugin header template ([#3144](https://github.com/PrismJS/prism/issues/3144)) [`faedfe85`](https://github.com/PrismJS/prism/commit/faedfe85) + - Update test and example pages to use Autoloader ([#1936](https://github.com/PrismJS/prism/issues/1936)) [`3d96eedc`](https://github.com/PrismJS/prism/commit/3d96eedc) ## 1.25.0 (2021-09-16) ### New components -* __AviSynth__ ([#3071](https://github.com/PrismJS/prism/issues/3071)) [`746a4b1a`](https://github.com/PrismJS/prism/commit/746a4b1a) -* __Avro IDL__ ([#3051](https://github.com/PrismJS/prism/issues/3051)) [`87e5a376`](https://github.com/PrismJS/prism/commit/87e5a376) -* __Bicep__ ([#3027](https://github.com/PrismJS/prism/issues/3027)) [`c1dce998`](https://github.com/PrismJS/prism/commit/c1dce998) -* __GAP (CAS)__ ([#3054](https://github.com/PrismJS/prism/issues/3054)) [`23cd9b65`](https://github.com/PrismJS/prism/commit/23cd9b65) -* __GN__ ([#3062](https://github.com/PrismJS/prism/issues/3062)) [`4f97b82b`](https://github.com/PrismJS/prism/commit/4f97b82b) -* __Hoon__ ([#2978](https://github.com/PrismJS/prism/issues/2978)) [`ea776756`](https://github.com/PrismJS/prism/commit/ea776756) -* __Kusto__ ([#3068](https://github.com/PrismJS/prism/issues/3068)) [`e008ea05`](https://github.com/PrismJS/prism/commit/e008ea05) -* __Magma (CAS)__ ([#3055](https://github.com/PrismJS/prism/issues/3055)) [`a1b67ce3`](https://github.com/PrismJS/prism/commit/a1b67ce3) -* __MAXScript__ ([#3060](https://github.com/PrismJS/prism/issues/3060)) [`4fbdd2f8`](https://github.com/PrismJS/prism/commit/4fbdd2f8) -* __Mermaid__ ([#3050](https://github.com/PrismJS/prism/issues/3050)) [`148c1eca`](https://github.com/PrismJS/prism/commit/148c1eca) -* __Razor C#__ ([#3064](https://github.com/PrismJS/prism/issues/3064)) [`4433ccfc`](https://github.com/PrismJS/prism/commit/4433ccfc) -* __Systemd configuration file__ ([#3053](https://github.com/PrismJS/prism/issues/3053)) [`8df825e0`](https://github.com/PrismJS/prism/commit/8df825e0) -* __Wren__ ([#3063](https://github.com/PrismJS/prism/issues/3063)) [`6a356d25`](https://github.com/PrismJS/prism/commit/6a356d25) +- **AviSynth** ([#3071](https://github.com/PrismJS/prism/issues/3071)) [`746a4b1a`](https://github.com/PrismJS/prism/commit/746a4b1a) +- **Avro IDL** ([#3051](https://github.com/PrismJS/prism/issues/3051)) [`87e5a376`](https://github.com/PrismJS/prism/commit/87e5a376) +- **Bicep** ([#3027](https://github.com/PrismJS/prism/issues/3027)) [`c1dce998`](https://github.com/PrismJS/prism/commit/c1dce998) +- **GAP (CAS)** ([#3054](https://github.com/PrismJS/prism/issues/3054)) [`23cd9b65`](https://github.com/PrismJS/prism/commit/23cd9b65) +- **GN** ([#3062](https://github.com/PrismJS/prism/issues/3062)) [`4f97b82b`](https://github.com/PrismJS/prism/commit/4f97b82b) +- **Hoon** ([#2978](https://github.com/PrismJS/prism/issues/2978)) [`ea776756`](https://github.com/PrismJS/prism/commit/ea776756) +- **Kusto** ([#3068](https://github.com/PrismJS/prism/issues/3068)) [`e008ea05`](https://github.com/PrismJS/prism/commit/e008ea05) +- **Magma (CAS)** ([#3055](https://github.com/PrismJS/prism/issues/3055)) [`a1b67ce3`](https://github.com/PrismJS/prism/commit/a1b67ce3) +- **MAXScript** ([#3060](https://github.com/PrismJS/prism/issues/3060)) [`4fbdd2f8`](https://github.com/PrismJS/prism/commit/4fbdd2f8) +- **Mermaid** ([#3050](https://github.com/PrismJS/prism/issues/3050)) [`148c1eca`](https://github.com/PrismJS/prism/commit/148c1eca) +- **Razor C#** ([#3064](https://github.com/PrismJS/prism/issues/3064)) [`4433ccfc`](https://github.com/PrismJS/prism/commit/4433ccfc) +- **Systemd configuration file** ([#3053](https://github.com/PrismJS/prism/issues/3053)) [`8df825e0`](https://github.com/PrismJS/prism/commit/8df825e0) +- **Wren** ([#3063](https://github.com/PrismJS/prism/issues/3063)) [`6a356d25`](https://github.com/PrismJS/prism/commit/6a356d25) ### Updated components -* __Bicep__ - * Added support for multiline and interpolated strings and other improvements ([#3028](https://github.com/PrismJS/prism/issues/3028)) [`748bb9ac`](https://github.com/PrismJS/prism/commit/748bb9ac) -* __C#__ - * Added `with` keyword & improved record support ([#2993](https://github.com/PrismJS/prism/issues/2993)) [`fdd291c0`](https://github.com/PrismJS/prism/commit/fdd291c0) - * Added `record`, `init`, and `nullable` keyword ([#2991](https://github.com/PrismJS/prism/issues/2991)) [`9b561565`](https://github.com/PrismJS/prism/commit/9b561565) - * Added context check for `from` keyword ([#2970](https://github.com/PrismJS/prism/issues/2970)) [`158f25d4`](https://github.com/PrismJS/prism/commit/158f25d4) -* __C++__ - * Fixed generic function false positive ([#3043](https://github.com/PrismJS/prism/issues/3043)) [`5de8947f`](https://github.com/PrismJS/prism/commit/5de8947f) -* __Clojure__ - * Improved tokenization ([#3056](https://github.com/PrismJS/prism/issues/3056)) [`8d0b74b5`](https://github.com/PrismJS/prism/commit/8d0b74b5) -* __Hoon__ - * Fixed mixed-case aura tokenization ([#3002](https://github.com/PrismJS/prism/issues/3002)) [`9c8911bd`](https://github.com/PrismJS/prism/commit/9c8911bd) -* __Liquid__ - * Added all objects from Shopify reference ([#2998](https://github.com/PrismJS/prism/issues/2998)) [`693b7433`](https://github.com/PrismJS/prism/commit/693b7433) - * Added `empty` keyword ([#2997](https://github.com/PrismJS/prism/issues/2997)) [`fe3bc526`](https://github.com/PrismJS/prism/commit/fe3bc526) -* __Log file__ - * Added support for Java stack traces ([#3003](https://github.com/PrismJS/prism/issues/3003)) [`b0365e70`](https://github.com/PrismJS/prism/commit/b0365e70) -* __Markup__ - * Made most patterns greedy ([#3065](https://github.com/PrismJS/prism/issues/3065)) [`52e8cee9`](https://github.com/PrismJS/prism/commit/52e8cee9) - * Fixed ReDoS ([#3078](https://github.com/PrismJS/prism/issues/3078)) [`0ff371bb`](https://github.com/PrismJS/prism/commit/0ff371bb) -* __PureScript__ - * Made `∀` a keyword (alias for `forall`) ([#3005](https://github.com/PrismJS/prism/issues/3005)) [`b38fc89a`](https://github.com/PrismJS/prism/commit/b38fc89a) - * Improved Haskell and PureScript ([#3020](https://github.com/PrismJS/prism/issues/3020)) [`679539ec`](https://github.com/PrismJS/prism/commit/679539ec) -* __Python__ - * Support for underscores in numbers ([#3039](https://github.com/PrismJS/prism/issues/3039)) [`6f5d68f7`](https://github.com/PrismJS/prism/commit/6f5d68f7) -* __Sass__ - * Fixed issues with CSS Extras ([#2994](https://github.com/PrismJS/prism/issues/2994)) [`14fdfe32`](https://github.com/PrismJS/prism/commit/14fdfe32) -* __Shell session__ - * Fixed command false positives ([#3048](https://github.com/PrismJS/prism/issues/3048)) [`35b88fcf`](https://github.com/PrismJS/prism/commit/35b88fcf) - * Added support for the percent sign as shell symbol ([#3010](https://github.com/PrismJS/prism/issues/3010)) [`4492b62b`](https://github.com/PrismJS/prism/commit/4492b62b) -* __Swift__ - * Major improvements ([#3022](https://github.com/PrismJS/prism/issues/3022)) [`8541db2e`](https://github.com/PrismJS/prism/commit/8541db2e) - * Added support for `@propertyWrapper`, `@MainActor`, and `@globalActor` ([#3009](https://github.com/PrismJS/prism/issues/3009)) [`ce5e0f01`](https://github.com/PrismJS/prism/commit/ce5e0f01) - * Added support for new Swift 5.5 keywords ([#2988](https://github.com/PrismJS/prism/issues/2988)) [`bb93fac0`](https://github.com/PrismJS/prism/commit/bb93fac0) -* __TypeScript__ - * Fixed keyword false positives ([#3001](https://github.com/PrismJS/prism/issues/3001)) [`212e0ef2`](https://github.com/PrismJS/prism/commit/212e0ef2) +- **Bicep** + - Added support for multiline and interpolated strings and other improvements ([#3028](https://github.com/PrismJS/prism/issues/3028)) [`748bb9ac`](https://github.com/PrismJS/prism/commit/748bb9ac) +- **C#** + - Added `with` keyword & improved record support ([#2993](https://github.com/PrismJS/prism/issues/2993)) [`fdd291c0`](https://github.com/PrismJS/prism/commit/fdd291c0) + - Added `record`, `init`, and `nullable` keyword ([#2991](https://github.com/PrismJS/prism/issues/2991)) [`9b561565`](https://github.com/PrismJS/prism/commit/9b561565) + - Added context check for `from` keyword ([#2970](https://github.com/PrismJS/prism/issues/2970)) [`158f25d4`](https://github.com/PrismJS/prism/commit/158f25d4) +- **C++** + - Fixed generic function false positive ([#3043](https://github.com/PrismJS/prism/issues/3043)) [`5de8947f`](https://github.com/PrismJS/prism/commit/5de8947f) +- **Clojure** + - Improved tokenization ([#3056](https://github.com/PrismJS/prism/issues/3056)) [`8d0b74b5`](https://github.com/PrismJS/prism/commit/8d0b74b5) +- **Hoon** + - Fixed mixed-case aura tokenization ([#3002](https://github.com/PrismJS/prism/issues/3002)) [`9c8911bd`](https://github.com/PrismJS/prism/commit/9c8911bd) +- **Liquid** + - Added all objects from Shopify reference ([#2998](https://github.com/PrismJS/prism/issues/2998)) [`693b7433`](https://github.com/PrismJS/prism/commit/693b7433) + - Added `empty` keyword ([#2997](https://github.com/PrismJS/prism/issues/2997)) [`fe3bc526`](https://github.com/PrismJS/prism/commit/fe3bc526) +- **Log file** + - Added support for Java stack traces ([#3003](https://github.com/PrismJS/prism/issues/3003)) [`b0365e70`](https://github.com/PrismJS/prism/commit/b0365e70) +- **Markup** + - Made most patterns greedy ([#3065](https://github.com/PrismJS/prism/issues/3065)) [`52e8cee9`](https://github.com/PrismJS/prism/commit/52e8cee9) + - Fixed ReDoS ([#3078](https://github.com/PrismJS/prism/issues/3078)) [`0ff371bb`](https://github.com/PrismJS/prism/commit/0ff371bb) +- **PureScript** + - Made `∀` a keyword (alias for `forall`) ([#3005](https://github.com/PrismJS/prism/issues/3005)) [`b38fc89a`](https://github.com/PrismJS/prism/commit/b38fc89a) + - Improved Haskell and PureScript ([#3020](https://github.com/PrismJS/prism/issues/3020)) [`679539ec`](https://github.com/PrismJS/prism/commit/679539ec) +- **Python** + - Support for underscores in numbers ([#3039](https://github.com/PrismJS/prism/issues/3039)) [`6f5d68f7`](https://github.com/PrismJS/prism/commit/6f5d68f7) +- **Sass** + - Fixed issues with CSS Extras ([#2994](https://github.com/PrismJS/prism/issues/2994)) [`14fdfe32`](https://github.com/PrismJS/prism/commit/14fdfe32) +- **Shell session** + - Fixed command false positives ([#3048](https://github.com/PrismJS/prism/issues/3048)) [`35b88fcf`](https://github.com/PrismJS/prism/commit/35b88fcf) + - Added support for the percent sign as shell symbol ([#3010](https://github.com/PrismJS/prism/issues/3010)) [`4492b62b`](https://github.com/PrismJS/prism/commit/4492b62b) +- **Swift** + - Major improvements ([#3022](https://github.com/PrismJS/prism/issues/3022)) [`8541db2e`](https://github.com/PrismJS/prism/commit/8541db2e) + - Added support for `@propertyWrapper`, `@MainActor`, and `@globalActor` ([#3009](https://github.com/PrismJS/prism/issues/3009)) [`ce5e0f01`](https://github.com/PrismJS/prism/commit/ce5e0f01) + - Added support for new Swift 5.5 keywords ([#2988](https://github.com/PrismJS/prism/issues/2988)) [`bb93fac0`](https://github.com/PrismJS/prism/commit/bb93fac0) +- **TypeScript** + - Fixed keyword false positives ([#3001](https://github.com/PrismJS/prism/issues/3001)) [`212e0ef2`](https://github.com/PrismJS/prism/commit/212e0ef2) ### Updated plugins -* __JSONP Highlight__ - * Refactored JSONP logic ([#3018](https://github.com/PrismJS/prism/issues/3018)) [`5126d1e1`](https://github.com/PrismJS/prism/commit/5126d1e1) -* __Line Highlight__ - * Extend highlight to full line width inside scroll container ([#3011](https://github.com/PrismJS/prism/issues/3011)) [`e289ec60`](https://github.com/PrismJS/prism/commit/e289ec60) -* __Normalize Whitespace__ - * Removed unnecessary checks ([#3017](https://github.com/PrismJS/prism/issues/3017)) [`63edf14c`](https://github.com/PrismJS/prism/commit/63edf14c) -* __Previewers__ - * Ensure popup is visible across themes ([#3080](https://github.com/PrismJS/prism/issues/3080)) [`c7b6a7f6`](https://github.com/PrismJS/prism/commit/c7b6a7f6) +- **JSONP Highlight** + - Refactored JSONP logic ([#3018](https://github.com/PrismJS/prism/issues/3018)) [`5126d1e1`](https://github.com/PrismJS/prism/commit/5126d1e1) +- **Line Highlight** + - Extend highlight to full line width inside scroll container ([#3011](https://github.com/PrismJS/prism/issues/3011)) [`e289ec60`](https://github.com/PrismJS/prism/commit/e289ec60) +- **Normalize Whitespace** + - Removed unnecessary checks ([#3017](https://github.com/PrismJS/prism/issues/3017)) [`63edf14c`](https://github.com/PrismJS/prism/commit/63edf14c) +- **Previewers** + - Ensure popup is visible across themes ([#3080](https://github.com/PrismJS/prism/issues/3080)) [`c7b6a7f6`](https://github.com/PrismJS/prism/commit/c7b6a7f6) ### Updated themes -* __Twilight__ - * Increase selector specificities of plugin overrides ([#3081](https://github.com/PrismJS/prism/issues/3081)) [`ffb20439`](https://github.com/PrismJS/prism/commit/ffb20439) +- **Twilight** + - Increase selector specificities of plugin overrides ([#3081](https://github.com/PrismJS/prism/issues/3081)) [`ffb20439`](https://github.com/PrismJS/prism/commit/ffb20439) ### Other -* __Infrastructure__ - * Added benchmark suite ([#2153](https://github.com/PrismJS/prism/issues/2153)) [`44456b21`](https://github.com/PrismJS/prism/commit/44456b21) - * Tests: Insert expected JSON by Default ([#2960](https://github.com/PrismJS/prism/issues/2960)) [`e997dd35`](https://github.com/PrismJS/prism/commit/e997dd35) - * Tests: Improved dection of empty patterns ([#3058](https://github.com/PrismJS/prism/issues/3058)) [`d216e602`](https://github.com/PrismJS/prism/commit/d216e602) -* __Website__ - * Highlight Keywords: More documentation ([#3049](https://github.com/PrismJS/prism/issues/3049)) [`247fd9a3`](https://github.com/PrismJS/prism/commit/247fd9a3) - +- **Infrastructure** + - Added benchmark suite ([#2153](https://github.com/PrismJS/prism/issues/2153)) [`44456b21`](https://github.com/PrismJS/prism/commit/44456b21) + - Tests: Insert expected JSON by Default ([#2960](https://github.com/PrismJS/prism/issues/2960)) [`e997dd35`](https://github.com/PrismJS/prism/commit/e997dd35) + - Tests: Improved dection of empty patterns ([#3058](https://github.com/PrismJS/prism/issues/3058)) [`d216e602`](https://github.com/PrismJS/prism/commit/d216e602) +- **Website** + - Highlight Keywords: More documentation ([#3049](https://github.com/PrismJS/prism/issues/3049)) [`247fd9a3`](https://github.com/PrismJS/prism/commit/247fd9a3) ## 1.24.1 (2021-07-03) ### Updated components -* __Markdown__ - * Fixed Markdown not working in NodeJS ([#2977](https://github.com/PrismJS/prism/issues/2977)) [`151121cd`](https://github.com/PrismJS/prism/commit/151121cd) +- **Markdown** + - Fixed Markdown not working in NodeJS ([#2977](https://github.com/PrismJS/prism/issues/2977)) [`151121cd`](https://github.com/PrismJS/prism/commit/151121cd) ### Updated plugins -* __Toolbar__ - * Fixed styles being applies to nested elements ([#2980](https://github.com/PrismJS/prism/issues/2980)) [`748ecddc`](https://github.com/PrismJS/prism/commit/748ecddc) - +- **Toolbar** + - Fixed styles being applies to nested elements ([#2980](https://github.com/PrismJS/prism/issues/2980)) [`748ecddc`](https://github.com/PrismJS/prism/commit/748ecddc) ## 1.24.0 (2021-06-27) ### New components -* __CFScript__ ([#2771](https://github.com/PrismJS/prism/issues/2771)) [`b0a6ec85`](https://github.com/PrismJS/prism/commit/b0a6ec85) -* __ChaiScript__ ([#2706](https://github.com/PrismJS/prism/issues/2706)) [`3f7d7453`](https://github.com/PrismJS/prism/commit/3f7d7453) -* __COBOL__ ([#2800](https://github.com/PrismJS/prism/issues/2800)) [`7e5f78ff`](https://github.com/PrismJS/prism/commit/7e5f78ff) -* __Coq__ ([#2803](https://github.com/PrismJS/prism/issues/2803)) [`41e25d3c`](https://github.com/PrismJS/prism/commit/41e25d3c) -* __CSV__ ([#2794](https://github.com/PrismJS/prism/issues/2794)) [`f9b69528`](https://github.com/PrismJS/prism/commit/f9b69528) -* __DOT (Graphviz)__ ([#2690](https://github.com/PrismJS/prism/issues/2690)) [`1f91868e`](https://github.com/PrismJS/prism/commit/1f91868e) -* __False__ ([#2802](https://github.com/PrismJS/prism/issues/2802)) [`99a21dc5`](https://github.com/PrismJS/prism/commit/99a21dc5) -* __ICU Message Format__ ([#2745](https://github.com/PrismJS/prism/issues/2745)) [`bf4e7ba9`](https://github.com/PrismJS/prism/commit/bf4e7ba9) -* __Idris__ ([#2755](https://github.com/PrismJS/prism/issues/2755)) [`e9314415`](https://github.com/PrismJS/prism/commit/e9314415) -* __Jexl__ ([#2764](https://github.com/PrismJS/prism/issues/2764)) [`7e51b99c`](https://github.com/PrismJS/prism/commit/7e51b99c) -* __KuMir (КуМир)__ ([#2760](https://github.com/PrismJS/prism/issues/2760)) [`3419fb77`](https://github.com/PrismJS/prism/commit/3419fb77) -* __Log file__ ([#2796](https://github.com/PrismJS/prism/issues/2796)) [`2bc6475b`](https://github.com/PrismJS/prism/commit/2bc6475b) -* __Nevod__ ([#2798](https://github.com/PrismJS/prism/issues/2798)) [`f84c49c5`](https://github.com/PrismJS/prism/commit/f84c49c5) -* __OpenQasm__ ([#2797](https://github.com/PrismJS/prism/issues/2797)) [`1a2347a3`](https://github.com/PrismJS/prism/commit/1a2347a3) -* __PATROL Scripting Language__ ([#2739](https://github.com/PrismJS/prism/issues/2739)) [`18c67b49`](https://github.com/PrismJS/prism/commit/18c67b49) -* __Q#__ ([#2804](https://github.com/PrismJS/prism/issues/2804)) [`1b63cd01`](https://github.com/PrismJS/prism/commit/1b63cd01) -* __Rego__ ([#2624](https://github.com/PrismJS/prism/issues/2624)) [`e38986f9`](https://github.com/PrismJS/prism/commit/e38986f9) -* __Squirrel__ ([#2721](https://github.com/PrismJS/prism/issues/2721)) [`fd1081d2`](https://github.com/PrismJS/prism/commit/fd1081d2) -* __URI__ ([#2708](https://github.com/PrismJS/prism/issues/2708)) [`bbc77d19`](https://github.com/PrismJS/prism/commit/bbc77d19) -* __V__ ([#2687](https://github.com/PrismJS/prism/issues/2687)) [`72962701`](https://github.com/PrismJS/prism/commit/72962701) -* __Wolfram language__ & __Mathematica__ & __Mathematica Notebook__ ([#2921](https://github.com/PrismJS/prism/issues/2921)) [`c4f6b2cc`](https://github.com/PrismJS/prism/commit/c4f6b2cc) +- **CFScript** ([#2771](https://github.com/PrismJS/prism/issues/2771)) [`b0a6ec85`](https://github.com/PrismJS/prism/commit/b0a6ec85) +- **ChaiScript** ([#2706](https://github.com/PrismJS/prism/issues/2706)) [`3f7d7453`](https://github.com/PrismJS/prism/commit/3f7d7453) +- **COBOL** ([#2800](https://github.com/PrismJS/prism/issues/2800)) [`7e5f78ff`](https://github.com/PrismJS/prism/commit/7e5f78ff) +- **Coq** ([#2803](https://github.com/PrismJS/prism/issues/2803)) [`41e25d3c`](https://github.com/PrismJS/prism/commit/41e25d3c) +- **CSV** ([#2794](https://github.com/PrismJS/prism/issues/2794)) [`f9b69528`](https://github.com/PrismJS/prism/commit/f9b69528) +- **DOT (Graphviz)** ([#2690](https://github.com/PrismJS/prism/issues/2690)) [`1f91868e`](https://github.com/PrismJS/prism/commit/1f91868e) +- **False** ([#2802](https://github.com/PrismJS/prism/issues/2802)) [`99a21dc5`](https://github.com/PrismJS/prism/commit/99a21dc5) +- **ICU Message Format** ([#2745](https://github.com/PrismJS/prism/issues/2745)) [`bf4e7ba9`](https://github.com/PrismJS/prism/commit/bf4e7ba9) +- **Idris** ([#2755](https://github.com/PrismJS/prism/issues/2755)) [`e9314415`](https://github.com/PrismJS/prism/commit/e9314415) +- **Jexl** ([#2764](https://github.com/PrismJS/prism/issues/2764)) [`7e51b99c`](https://github.com/PrismJS/prism/commit/7e51b99c) +- **KuMir (КуМир)** ([#2760](https://github.com/PrismJS/prism/issues/2760)) [`3419fb77`](https://github.com/PrismJS/prism/commit/3419fb77) +- **Log file** ([#2796](https://github.com/PrismJS/prism/issues/2796)) [`2bc6475b`](https://github.com/PrismJS/prism/commit/2bc6475b) +- **Nevod** ([#2798](https://github.com/PrismJS/prism/issues/2798)) [`f84c49c5`](https://github.com/PrismJS/prism/commit/f84c49c5) +- **OpenQasm** ([#2797](https://github.com/PrismJS/prism/issues/2797)) [`1a2347a3`](https://github.com/PrismJS/prism/commit/1a2347a3) +- **PATROL Scripting Language** ([#2739](https://github.com/PrismJS/prism/issues/2739)) [`18c67b49`](https://github.com/PrismJS/prism/commit/18c67b49) +- **Q#** ([#2804](https://github.com/PrismJS/prism/issues/2804)) [`1b63cd01`](https://github.com/PrismJS/prism/commit/1b63cd01) +- **Rego** ([#2624](https://github.com/PrismJS/prism/issues/2624)) [`e38986f9`](https://github.com/PrismJS/prism/commit/e38986f9) +- **Squirrel** ([#2721](https://github.com/PrismJS/prism/issues/2721)) [`fd1081d2`](https://github.com/PrismJS/prism/commit/fd1081d2) +- **URI** ([#2708](https://github.com/PrismJS/prism/issues/2708)) [`bbc77d19`](https://github.com/PrismJS/prism/commit/bbc77d19) +- **V** ([#2687](https://github.com/PrismJS/prism/issues/2687)) [`72962701`](https://github.com/PrismJS/prism/commit/72962701) +- **Wolfram language** & **Mathematica** & **Mathematica Notebook** ([#2921](https://github.com/PrismJS/prism/issues/2921)) [`c4f6b2cc`](https://github.com/PrismJS/prism/commit/c4f6b2cc) ### Updated components -* Fixed problems reported by `regexp/no-dupe-disjunctions` ([#2952](https://github.com/PrismJS/prism/issues/2952)) [`f471d2d7`](https://github.com/PrismJS/prism/commit/f471d2d7) -* Fixed some cases of quadratic worst-case runtime ([#2922](https://github.com/PrismJS/prism/issues/2922)) [`79d22182`](https://github.com/PrismJS/prism/commit/79d22182) -* Fixed 2 cases of exponential backtracking ([#2774](https://github.com/PrismJS/prism/issues/2774)) [`d85e30da`](https://github.com/PrismJS/prism/commit/d85e30da) -* __AQL__ - * Update for ArangoDB 3.8 ([#2842](https://github.com/PrismJS/prism/issues/2842)) [`ea82478d`](https://github.com/PrismJS/prism/commit/ea82478d) -* __AutoHotkey__ - * Improved tag pattern ([#2920](https://github.com/PrismJS/prism/issues/2920)) [`fc2a3334`](https://github.com/PrismJS/prism/commit/fc2a3334) -* __Bash__ - * Accept hyphens in function names ([#2832](https://github.com/PrismJS/prism/issues/2832)) [`e4ad22ad`](https://github.com/PrismJS/prism/commit/e4ad22ad) - * Fixed single-quoted strings ([#2792](https://github.com/PrismJS/prism/issues/2792)) [`e5cfdb4a`](https://github.com/PrismJS/prism/commit/e5cfdb4a) -* __C++__ - * Added support for generic functions and made `::` punctuation ([#2814](https://github.com/PrismJS/prism/issues/2814)) [`3df62fd0`](https://github.com/PrismJS/prism/commit/3df62fd0) - * Added missing keywords and modules ([#2763](https://github.com/PrismJS/prism/issues/2763)) [`88fa72cf`](https://github.com/PrismJS/prism/commit/88fa72cf) -* __Dart__ - * Improved support for classes & generics ([#2810](https://github.com/PrismJS/prism/issues/2810)) [`d0bcd074`](https://github.com/PrismJS/prism/commit/d0bcd074) -* __Docker__ - * Improvements ([#2720](https://github.com/PrismJS/prism/issues/2720)) [`93dd83c2`](https://github.com/PrismJS/prism/commit/93dd83c2) -* __Elixir__ - * Added missing keywords ([#2958](https://github.com/PrismJS/prism/issues/2958)) [`114e4626`](https://github.com/PrismJS/prism/commit/114e4626) - * Added missing keyword and other improvements ([#2773](https://github.com/PrismJS/prism/issues/2773)) [`e6c0d298`](https://github.com/PrismJS/prism/commit/e6c0d298) - * Added `defdelagate` keyword and highlighting for function/module names ([#2709](https://github.com/PrismJS/prism/issues/2709)) [`59f725d7`](https://github.com/PrismJS/prism/commit/59f725d7) -* __F#__ - * Fixed comment false positive ([#2703](https://github.com/PrismJS/prism/issues/2703)) [`a5d7178c`](https://github.com/PrismJS/prism/commit/a5d7178c) -* __GraphQL__ - * Fixed `definition-query` and `definition-mutation` tokens ([#2964](https://github.com/PrismJS/prism/issues/2964)) [`bfd7fded`](https://github.com/PrismJS/prism/commit/bfd7fded) - * Added more detailed tokens ([#2939](https://github.com/PrismJS/prism/issues/2939)) [`34f24ac9`](https://github.com/PrismJS/prism/commit/34f24ac9) -* __Handlebars__ - * Added `hbs` alias ([#2874](https://github.com/PrismJS/prism/issues/2874)) [`43976351`](https://github.com/PrismJS/prism/commit/43976351) -* __HTTP__ - * Fixed body not being highlighted ([#2734](https://github.com/PrismJS/prism/issues/2734)) [`1dfc8271`](https://github.com/PrismJS/prism/commit/1dfc8271) - * More granular tokenization ([#2722](https://github.com/PrismJS/prism/issues/2722)) [`6183fd9b`](https://github.com/PrismJS/prism/commit/6183fd9b) - * Allow root path in request line ([#2711](https://github.com/PrismJS/prism/issues/2711)) [`4e7b2a82`](https://github.com/PrismJS/prism/commit/4e7b2a82) -* __Ini__ - * Consistently mimic Win32 INI parsing ([#2779](https://github.com/PrismJS/prism/issues/2779)) [`42d24fa2`](https://github.com/PrismJS/prism/commit/42d24fa2) -* __Java__ - * Improved generics ([#2812](https://github.com/PrismJS/prism/issues/2812)) [`4ec7535c`](https://github.com/PrismJS/prism/commit/4ec7535c) -* __JavaScript__ - * Added support for import assertions ([#2953](https://github.com/PrismJS/prism/issues/2953)) [`ab7c9953`](https://github.com/PrismJS/prism/commit/ab7c9953) - * Added support for RegExp Match Indices ([#2900](https://github.com/PrismJS/prism/issues/2900)) [`415651a0`](https://github.com/PrismJS/prism/commit/415651a0) - * Added hashbang and private getters/setters ([#2815](https://github.com/PrismJS/prism/issues/2815)) [`9c610ae6`](https://github.com/PrismJS/prism/commit/9c610ae6) - * Improved contextual keywords ([#2713](https://github.com/PrismJS/prism/issues/2713)) [`022f90a0`](https://github.com/PrismJS/prism/commit/022f90a0) -* __JS Templates__ - * Added SQL templates ([#2945](https://github.com/PrismJS/prism/issues/2945)) [`abab9104`](https://github.com/PrismJS/prism/commit/abab9104) -* __JSON__ - * Fixed backtracking issue in Safari ([#2691](https://github.com/PrismJS/prism/issues/2691)) [`cf28d1b2`](https://github.com/PrismJS/prism/commit/cf28d1b2) -* __Liquid__ - * Added Markup support, missing tokens, and other improvements ([#2950](https://github.com/PrismJS/prism/issues/2950)) [`ac1d12f9`](https://github.com/PrismJS/prism/commit/ac1d12f9) -* __Log file__ - * Minor improvements ([#2851](https://github.com/PrismJS/prism/issues/2851)) [`45ec4a88`](https://github.com/PrismJS/prism/commit/45ec4a88) -* __Markdown__ - * Improved code snippets ([#2967](https://github.com/PrismJS/prism/issues/2967)) [`e9477d83`](https://github.com/PrismJS/prism/commit/e9477d83) - * Workaround for incorrect highlighting due to double `wrap` hook ([#2719](https://github.com/PrismJS/prism/issues/2719)) [`2b355c98`](https://github.com/PrismJS/prism/commit/2b355c98) -* __Markup__ - * Added support for DOM event attributes ([#2702](https://github.com/PrismJS/prism/issues/2702)) [`8dbbbb35`](https://github.com/PrismJS/prism/commit/8dbbbb35) -* __nginx__ - * Complete rewrite ([#2793](https://github.com/PrismJS/prism/issues/2793)) [`5943f4cb`](https://github.com/PrismJS/prism/commit/5943f4cb) -* __PHP__ - * Fixed functions with namespaces ([#2889](https://github.com/PrismJS/prism/issues/2889)) [`87d79390`](https://github.com/PrismJS/prism/commit/87d79390) - * Fixed string interpolation ([#2864](https://github.com/PrismJS/prism/issues/2864)) [`cf3755cb`](https://github.com/PrismJS/prism/commit/cf3755cb) - * Added missing PHP 7.4 `fn` keyword ([#2858](https://github.com/PrismJS/prism/issues/2858)) [`e0ee93f1`](https://github.com/PrismJS/prism/commit/e0ee93f1) - * Fixed methods with keyword names + minor improvements ([#2818](https://github.com/PrismJS/prism/issues/2818)) [`7e8cd40d`](https://github.com/PrismJS/prism/commit/7e8cd40d) - * Improved constant support for PHP 8.1 enums ([#2770](https://github.com/PrismJS/prism/issues/2770)) [`8019e2f6`](https://github.com/PrismJS/prism/commit/8019e2f6) - * Added support for PHP 8.1 enums ([#2752](https://github.com/PrismJS/prism/issues/2752)) [`f79b0eef`](https://github.com/PrismJS/prism/commit/f79b0eef) - * Class names at the start of a string are now highlighted correctly ([#2731](https://github.com/PrismJS/prism/issues/2731)) [`04ef309c`](https://github.com/PrismJS/prism/commit/04ef309c) - * Numeral syntax improvements ([#2701](https://github.com/PrismJS/prism/issues/2701)) [`01af04ed`](https://github.com/PrismJS/prism/commit/01af04ed) -* __React JSX__ - * Added support for general spread expressions ([#2754](https://github.com/PrismJS/prism/issues/2754)) [`9f59f52d`](https://github.com/PrismJS/prism/commit/9f59f52d) - * Added support for comments inside tags ([#2728](https://github.com/PrismJS/prism/issues/2728)) [`30b0444f`](https://github.com/PrismJS/prism/commit/30b0444f) -* __reST (reStructuredText)__ - * Fixed `inline` pattern ([#2946](https://github.com/PrismJS/prism/issues/2946)) [`a7656de6`](https://github.com/PrismJS/prism/commit/a7656de6) -* __Ruby__ - * Added heredoc literals ([#2885](https://github.com/PrismJS/prism/issues/2885)) [`20b77bff`](https://github.com/PrismJS/prism/commit/20b77bff) - * Added missing regex flags ([#2845](https://github.com/PrismJS/prism/issues/2845)) [`3786f396`](https://github.com/PrismJS/prism/commit/3786f396) - * Added missing regex interpolation ([#2841](https://github.com/PrismJS/prism/issues/2841)) [`f08c2f7f`](https://github.com/PrismJS/prism/commit/f08c2f7f) -* __Scheme__ - * Added support for high Unicode characters ([#2693](https://github.com/PrismJS/prism/issues/2693)) [`0e61a7e1`](https://github.com/PrismJS/prism/commit/0e61a7e1) - * Added bracket support ([#2813](https://github.com/PrismJS/prism/issues/2813)) [`1c6c0bf3`](https://github.com/PrismJS/prism/commit/1c6c0bf3) -* __Shell session__ - * Fixed multi-line commands ([#2872](https://github.com/PrismJS/prism/issues/2872)) [`cda976b1`](https://github.com/PrismJS/prism/commit/cda976b1) - * Commands prefixed with a path are now detected ([#2686](https://github.com/PrismJS/prism/issues/2686)) [`c83fd0b8`](https://github.com/PrismJS/prism/commit/c83fd0b8) -* __SQL__ - * Added `ILIKE` operator ([#2704](https://github.com/PrismJS/prism/issues/2704)) [`6e34771f`](https://github.com/PrismJS/prism/commit/6e34771f) -* __Swift__ - * Added `some` keyword ([#2756](https://github.com/PrismJS/prism/issues/2756)) [`cf354ef5`](https://github.com/PrismJS/prism/commit/cf354ef5) -* __TypeScript__ - * Updated keywords ([#2861](https://github.com/PrismJS/prism/issues/2861)) [`fe98d536`](https://github.com/PrismJS/prism/commit/fe98d536) - * Added support for decorators ([#2820](https://github.com/PrismJS/prism/issues/2820)) [`31cc2142`](https://github.com/PrismJS/prism/commit/31cc2142) -* __VB.Net__ - * Improved strings, comments, and punctuation ([#2782](https://github.com/PrismJS/prism/issues/2782)) [`a68f1fb6`](https://github.com/PrismJS/prism/commit/a68f1fb6) -* __Xojo (REALbasic)__ - * `REM` is no longer highlighted as a keyword in comments ([#2823](https://github.com/PrismJS/prism/issues/2823)) [`ebbbfd47`](https://github.com/PrismJS/prism/commit/ebbbfd47) - * Added last missing Keyword "Selector" ([#2807](https://github.com/PrismJS/prism/issues/2807)) [`e32e043b`](https://github.com/PrismJS/prism/commit/e32e043b) - * Added missing keywords ([#2805](https://github.com/PrismJS/prism/issues/2805)) [`459365ec`](https://github.com/PrismJS/prism/commit/459365ec) +- Fixed problems reported by `regexp/no-dupe-disjunctions` ([#2952](https://github.com/PrismJS/prism/issues/2952)) [`f471d2d7`](https://github.com/PrismJS/prism/commit/f471d2d7) +- Fixed some cases of quadratic worst-case runtime ([#2922](https://github.com/PrismJS/prism/issues/2922)) [`79d22182`](https://github.com/PrismJS/prism/commit/79d22182) +- Fixed 2 cases of exponential backtracking ([#2774](https://github.com/PrismJS/prism/issues/2774)) [`d85e30da`](https://github.com/PrismJS/prism/commit/d85e30da) +- **AQL** + - Update for ArangoDB 3.8 ([#2842](https://github.com/PrismJS/prism/issues/2842)) [`ea82478d`](https://github.com/PrismJS/prism/commit/ea82478d) +- **AutoHotkey** + - Improved tag pattern ([#2920](https://github.com/PrismJS/prism/issues/2920)) [`fc2a3334`](https://github.com/PrismJS/prism/commit/fc2a3334) +- **Bash** + - Accept hyphens in function names ([#2832](https://github.com/PrismJS/prism/issues/2832)) [`e4ad22ad`](https://github.com/PrismJS/prism/commit/e4ad22ad) + - Fixed single-quoted strings ([#2792](https://github.com/PrismJS/prism/issues/2792)) [`e5cfdb4a`](https://github.com/PrismJS/prism/commit/e5cfdb4a) +- **C++** + - Added support for generic functions and made `::` punctuation ([#2814](https://github.com/PrismJS/prism/issues/2814)) [`3df62fd0`](https://github.com/PrismJS/prism/commit/3df62fd0) + - Added missing keywords and modules ([#2763](https://github.com/PrismJS/prism/issues/2763)) [`88fa72cf`](https://github.com/PrismJS/prism/commit/88fa72cf) +- **Dart** + - Improved support for classes & generics ([#2810](https://github.com/PrismJS/prism/issues/2810)) [`d0bcd074`](https://github.com/PrismJS/prism/commit/d0bcd074) +- **Docker** + - Improvements ([#2720](https://github.com/PrismJS/prism/issues/2720)) [`93dd83c2`](https://github.com/PrismJS/prism/commit/93dd83c2) +- **Elixir** + - Added missing keywords ([#2958](https://github.com/PrismJS/prism/issues/2958)) [`114e4626`](https://github.com/PrismJS/prism/commit/114e4626) + - Added missing keyword and other improvements ([#2773](https://github.com/PrismJS/prism/issues/2773)) [`e6c0d298`](https://github.com/PrismJS/prism/commit/e6c0d298) + - Added `defdelagate` keyword and highlighting for function/module names ([#2709](https://github.com/PrismJS/prism/issues/2709)) [`59f725d7`](https://github.com/PrismJS/prism/commit/59f725d7) +- **F#** + - Fixed comment false positive ([#2703](https://github.com/PrismJS/prism/issues/2703)) [`a5d7178c`](https://github.com/PrismJS/prism/commit/a5d7178c) +- **GraphQL** + - Fixed `definition-query` and `definition-mutation` tokens ([#2964](https://github.com/PrismJS/prism/issues/2964)) [`bfd7fded`](https://github.com/PrismJS/prism/commit/bfd7fded) + - Added more detailed tokens ([#2939](https://github.com/PrismJS/prism/issues/2939)) [`34f24ac9`](https://github.com/PrismJS/prism/commit/34f24ac9) +- **Handlebars** + - Added `hbs` alias ([#2874](https://github.com/PrismJS/prism/issues/2874)) [`43976351`](https://github.com/PrismJS/prism/commit/43976351) +- **HTTP** + - Fixed body not being highlighted ([#2734](https://github.com/PrismJS/prism/issues/2734)) [`1dfc8271`](https://github.com/PrismJS/prism/commit/1dfc8271) + - More granular tokenization ([#2722](https://github.com/PrismJS/prism/issues/2722)) [`6183fd9b`](https://github.com/PrismJS/prism/commit/6183fd9b) + - Allow root path in request line ([#2711](https://github.com/PrismJS/prism/issues/2711)) [`4e7b2a82`](https://github.com/PrismJS/prism/commit/4e7b2a82) +- **Ini** + - Consistently mimic Win32 INI parsing ([#2779](https://github.com/PrismJS/prism/issues/2779)) [`42d24fa2`](https://github.com/PrismJS/prism/commit/42d24fa2) +- **Java** + - Improved generics ([#2812](https://github.com/PrismJS/prism/issues/2812)) [`4ec7535c`](https://github.com/PrismJS/prism/commit/4ec7535c) +- **JavaScript** + - Added support for import assertions ([#2953](https://github.com/PrismJS/prism/issues/2953)) [`ab7c9953`](https://github.com/PrismJS/prism/commit/ab7c9953) + - Added support for RegExp Match Indices ([#2900](https://github.com/PrismJS/prism/issues/2900)) [`415651a0`](https://github.com/PrismJS/prism/commit/415651a0) + - Added hashbang and private getters/setters ([#2815](https://github.com/PrismJS/prism/issues/2815)) [`9c610ae6`](https://github.com/PrismJS/prism/commit/9c610ae6) + - Improved contextual keywords ([#2713](https://github.com/PrismJS/prism/issues/2713)) [`022f90a0`](https://github.com/PrismJS/prism/commit/022f90a0) +- **JS Templates** + - Added SQL templates ([#2945](https://github.com/PrismJS/prism/issues/2945)) [`abab9104`](https://github.com/PrismJS/prism/commit/abab9104) +- **JSON** + - Fixed backtracking issue in Safari ([#2691](https://github.com/PrismJS/prism/issues/2691)) [`cf28d1b2`](https://github.com/PrismJS/prism/commit/cf28d1b2) +- **Liquid** + - Added Markup support, missing tokens, and other improvements ([#2950](https://github.com/PrismJS/prism/issues/2950)) [`ac1d12f9`](https://github.com/PrismJS/prism/commit/ac1d12f9) +- **Log file** + - Minor improvements ([#2851](https://github.com/PrismJS/prism/issues/2851)) [`45ec4a88`](https://github.com/PrismJS/prism/commit/45ec4a88) +- **Markdown** + - Improved code snippets ([#2967](https://github.com/PrismJS/prism/issues/2967)) [`e9477d83`](https://github.com/PrismJS/prism/commit/e9477d83) + - Workaround for incorrect highlighting due to double `wrap` hook ([#2719](https://github.com/PrismJS/prism/issues/2719)) [`2b355c98`](https://github.com/PrismJS/prism/commit/2b355c98) +- **Markup** + - Added support for DOM event attributes ([#2702](https://github.com/PrismJS/prism/issues/2702)) [`8dbbbb35`](https://github.com/PrismJS/prism/commit/8dbbbb35) +- **nginx** + - Complete rewrite ([#2793](https://github.com/PrismJS/prism/issues/2793)) [`5943f4cb`](https://github.com/PrismJS/prism/commit/5943f4cb) +- **PHP** + - Fixed functions with namespaces ([#2889](https://github.com/PrismJS/prism/issues/2889)) [`87d79390`](https://github.com/PrismJS/prism/commit/87d79390) + - Fixed string interpolation ([#2864](https://github.com/PrismJS/prism/issues/2864)) [`cf3755cb`](https://github.com/PrismJS/prism/commit/cf3755cb) + - Added missing PHP 7.4 `fn` keyword ([#2858](https://github.com/PrismJS/prism/issues/2858)) [`e0ee93f1`](https://github.com/PrismJS/prism/commit/e0ee93f1) + - Fixed methods with keyword names + minor improvements ([#2818](https://github.com/PrismJS/prism/issues/2818)) [`7e8cd40d`](https://github.com/PrismJS/prism/commit/7e8cd40d) + - Improved constant support for PHP 8.1 enums ([#2770](https://github.com/PrismJS/prism/issues/2770)) [`8019e2f6`](https://github.com/PrismJS/prism/commit/8019e2f6) + - Added support for PHP 8.1 enums ([#2752](https://github.com/PrismJS/prism/issues/2752)) [`f79b0eef`](https://github.com/PrismJS/prism/commit/f79b0eef) + - Class names at the start of a string are now highlighted correctly ([#2731](https://github.com/PrismJS/prism/issues/2731)) [`04ef309c`](https://github.com/PrismJS/prism/commit/04ef309c) + - Numeral syntax improvements ([#2701](https://github.com/PrismJS/prism/issues/2701)) [`01af04ed`](https://github.com/PrismJS/prism/commit/01af04ed) +- **React JSX** + - Added support for general spread expressions ([#2754](https://github.com/PrismJS/prism/issues/2754)) [`9f59f52d`](https://github.com/PrismJS/prism/commit/9f59f52d) + - Added support for comments inside tags ([#2728](https://github.com/PrismJS/prism/issues/2728)) [`30b0444f`](https://github.com/PrismJS/prism/commit/30b0444f) +- **reST (reStructuredText)** + - Fixed `inline` pattern ([#2946](https://github.com/PrismJS/prism/issues/2946)) [`a7656de6`](https://github.com/PrismJS/prism/commit/a7656de6) +- **Ruby** + - Added heredoc literals ([#2885](https://github.com/PrismJS/prism/issues/2885)) [`20b77bff`](https://github.com/PrismJS/prism/commit/20b77bff) + - Added missing regex flags ([#2845](https://github.com/PrismJS/prism/issues/2845)) [`3786f396`](https://github.com/PrismJS/prism/commit/3786f396) + - Added missing regex interpolation ([#2841](https://github.com/PrismJS/prism/issues/2841)) [`f08c2f7f`](https://github.com/PrismJS/prism/commit/f08c2f7f) +- **Scheme** + - Added support for high Unicode characters ([#2693](https://github.com/PrismJS/prism/issues/2693)) [`0e61a7e1`](https://github.com/PrismJS/prism/commit/0e61a7e1) + - Added bracket support ([#2813](https://github.com/PrismJS/prism/issues/2813)) [`1c6c0bf3`](https://github.com/PrismJS/prism/commit/1c6c0bf3) +- **Shell session** + - Fixed multi-line commands ([#2872](https://github.com/PrismJS/prism/issues/2872)) [`cda976b1`](https://github.com/PrismJS/prism/commit/cda976b1) + - Commands prefixed with a path are now detected ([#2686](https://github.com/PrismJS/prism/issues/2686)) [`c83fd0b8`](https://github.com/PrismJS/prism/commit/c83fd0b8) +- **SQL** + - Added `ILIKE` operator ([#2704](https://github.com/PrismJS/prism/issues/2704)) [`6e34771f`](https://github.com/PrismJS/prism/commit/6e34771f) +- **Swift** + - Added `some` keyword ([#2756](https://github.com/PrismJS/prism/issues/2756)) [`cf354ef5`](https://github.com/PrismJS/prism/commit/cf354ef5) +- **TypeScript** + - Updated keywords ([#2861](https://github.com/PrismJS/prism/issues/2861)) [`fe98d536`](https://github.com/PrismJS/prism/commit/fe98d536) + - Added support for decorators ([#2820](https://github.com/PrismJS/prism/issues/2820)) [`31cc2142`](https://github.com/PrismJS/prism/commit/31cc2142) +- **VB.Net** + - Improved strings, comments, and punctuation ([#2782](https://github.com/PrismJS/prism/issues/2782)) [`a68f1fb6`](https://github.com/PrismJS/prism/commit/a68f1fb6) +- **Xojo (REALbasic)** + - `REM` is no longer highlighted as a keyword in comments ([#2823](https://github.com/PrismJS/prism/issues/2823)) [`ebbbfd47`](https://github.com/PrismJS/prism/commit/ebbbfd47) + - Added last missing Keyword "Selector" ([#2807](https://github.com/PrismJS/prism/issues/2807)) [`e32e043b`](https://github.com/PrismJS/prism/commit/e32e043b) + - Added missing keywords ([#2805](https://github.com/PrismJS/prism/issues/2805)) [`459365ec`](https://github.com/PrismJS/prism/commit/459365ec) ### Updated plugins -* Made Match Braces and Custom Class compatible ([#2947](https://github.com/PrismJS/prism/issues/2947)) [`4b55bd6a`](https://github.com/PrismJS/prism/commit/4b55bd6a) -* Consistent Prism check ([#2788](https://github.com/PrismJS/prism/issues/2788)) [`96335642`](https://github.com/PrismJS/prism/commit/96335642) -* __Command Line__ - * Don't modify empty code blocks ([#2896](https://github.com/PrismJS/prism/issues/2896)) [`c81c3319`](https://github.com/PrismJS/prism/commit/c81c3319) -* __Copy to Clipboard__ - * Removed ClipboardJS dependency ([#2784](https://github.com/PrismJS/prism/issues/2784)) [`d5e14e1a`](https://github.com/PrismJS/prism/commit/d5e14e1a) - * Fixed `clipboard.writeText` not working inside iFrames ([#2826](https://github.com/PrismJS/prism/issues/2826)) [`01b7b6f7`](https://github.com/PrismJS/prism/commit/01b7b6f7) - * Added support for custom styles ([#2789](https://github.com/PrismJS/prism/issues/2789)) [`4d7f75b0`](https://github.com/PrismJS/prism/commit/4d7f75b0) - * Make copy-to-clipboard configurable with multiple attributes ([#2723](https://github.com/PrismJS/prism/issues/2723)) [`2cb909e1`](https://github.com/PrismJS/prism/commit/2cb909e1) -* __File Highlight__ - * Fixed Prism check ([#2827](https://github.com/PrismJS/prism/issues/2827)) [`53d34b22`](https://github.com/PrismJS/prism/commit/53d34b22) -* __Line Highlight__ - * Fixed linkable line numbers not being initialized ([#2732](https://github.com/PrismJS/prism/issues/2732)) [`ccc73ab7`](https://github.com/PrismJS/prism/commit/ccc73ab7) -* __Previewers__ - * Use `classList` instead of `className` ([#2787](https://github.com/PrismJS/prism/issues/2787)) [`d298d46e`](https://github.com/PrismJS/prism/commit/d298d46e) +- Made Match Braces and Custom Class compatible ([#2947](https://github.com/PrismJS/prism/issues/2947)) [`4b55bd6a`](https://github.com/PrismJS/prism/commit/4b55bd6a) +- Consistent Prism check ([#2788](https://github.com/PrismJS/prism/issues/2788)) [`96335642`](https://github.com/PrismJS/prism/commit/96335642) +- **Command Line** + - Don't modify empty code blocks ([#2896](https://github.com/PrismJS/prism/issues/2896)) [`c81c3319`](https://github.com/PrismJS/prism/commit/c81c3319) +- **Copy to Clipboard** + - Removed ClipboardJS dependency ([#2784](https://github.com/PrismJS/prism/issues/2784)) [`d5e14e1a`](https://github.com/PrismJS/prism/commit/d5e14e1a) + - Fixed `clipboard.writeText` not working inside iFrames ([#2826](https://github.com/PrismJS/prism/issues/2826)) [`01b7b6f7`](https://github.com/PrismJS/prism/commit/01b7b6f7) + - Added support for custom styles ([#2789](https://github.com/PrismJS/prism/issues/2789)) [`4d7f75b0`](https://github.com/PrismJS/prism/commit/4d7f75b0) + - Make copy-to-clipboard configurable with multiple attributes ([#2723](https://github.com/PrismJS/prism/issues/2723)) [`2cb909e1`](https://github.com/PrismJS/prism/commit/2cb909e1) +- **File Highlight** + - Fixed Prism check ([#2827](https://github.com/PrismJS/prism/issues/2827)) [`53d34b22`](https://github.com/PrismJS/prism/commit/53d34b22) +- **Line Highlight** + - Fixed linkable line numbers not being initialized ([#2732](https://github.com/PrismJS/prism/issues/2732)) [`ccc73ab7`](https://github.com/PrismJS/prism/commit/ccc73ab7) +- **Previewers** + - Use `classList` instead of `className` ([#2787](https://github.com/PrismJS/prism/issues/2787)) [`d298d46e`](https://github.com/PrismJS/prism/commit/d298d46e) ### Other -* __Core__ - * Add `tabindex` to code blocks to enable keyboard navigation ([#2799](https://github.com/PrismJS/prism/issues/2799)) [`dbf70515`](https://github.com/PrismJS/prism/commit/dbf70515) - * Fixed greedy rematching reach bug ([#2705](https://github.com/PrismJS/prism/issues/2705)) [`b37987d3`](https://github.com/PrismJS/prism/commit/b37987d3) - * Added support for plaintext ([#2738](https://github.com/PrismJS/prism/issues/2738)) [`970674cf`](https://github.com/PrismJS/prism/commit/970674cf) -* __Infrastructure__ - * Added ESLint - * Added `npm-run-all` to clean up test command ([#2938](https://github.com/PrismJS/prism/issues/2938)) [`5d3d8088`](https://github.com/PrismJS/prism/commit/5d3d8088) - * Added link to Q&A to issue templates ([#2834](https://github.com/PrismJS/prism/issues/2834)) [`7cd9e794`](https://github.com/PrismJS/prism/commit/7cd9e794) - * CI: Run tests with NodeJS 16.x ([#2888](https://github.com/PrismJS/prism/issues/2888)) [`b77317c5`](https://github.com/PrismJS/prism/commit/b77317c5) - * Dangerfile: Trim merge base ([#2761](https://github.com/PrismJS/prism/issues/2761)) [`45b0e82a`](https://github.com/PrismJS/prism/commit/45b0e82a) - * Dangerfile: Fixed how changed files are determined ([#2757](https://github.com/PrismJS/prism/issues/2757)) [`0feb266f`](https://github.com/PrismJS/prism/commit/0feb266f) - * Deps: Updated regex tooling ([#2923](https://github.com/PrismJS/prism/issues/2923)) [`ad9878ad`](https://github.com/PrismJS/prism/commit/ad9878ad) - * Tests: Added `--language` for patterns tests ([#2929](https://github.com/PrismJS/prism/issues/2929)) [`a62ef796`](https://github.com/PrismJS/prism/commit/a62ef796) - * Tests: Fixed polynomial backtracking test ([#2891](https://github.com/PrismJS/prism/issues/2891)) [`8dbf1217`](https://github.com/PrismJS/prism/commit/8dbf1217) - * Tests: Fixed languages test discovery [`a9a199b6`](https://github.com/PrismJS/prism/commit/a9a199b6) - * Tests: Test discovery should ignore unsupported file extensions ([#2886](https://github.com/PrismJS/prism/issues/2886)) [`4492c5ce`](https://github.com/PrismJS/prism/commit/4492c5ce) - * Tests: Exhaustive pattern tests ([#2688](https://github.com/PrismJS/prism/issues/2688)) [`53151404`](https://github.com/PrismJS/prism/commit/53151404) - * Tests: Fixed pretty print incorrectly calculating print width ([#2821](https://github.com/PrismJS/prism/issues/2821)) [`5bc405e7`](https://github.com/PrismJS/prism/commit/5bc405e7) - * Tests: Automatically normalize line ends ([#2934](https://github.com/PrismJS/prism/issues/2934)) [`99f3ddcd`](https://github.com/PrismJS/prism/commit/99f3ddcd) - * Tests: Added `--insert` and `--update` parameters to language test ([#2809](https://github.com/PrismJS/prism/issues/2809)) [`4c8b855d`](https://github.com/PrismJS/prism/commit/4c8b855d) - * Tests: Stricter `components.json` tests ([#2758](https://github.com/PrismJS/prism/issues/2758)) [`933af805`](https://github.com/PrismJS/prism/commit/933af805) -* __Website__ - * Copy to clipboard: Fixed highlighting ([#2725](https://github.com/PrismJS/prism/issues/2725)) [`7a790bf9`](https://github.com/PrismJS/prism/commit/7a790bf9) - * Readme: Mention `npm ci` ([#2899](https://github.com/PrismJS/prism/issues/2899)) [`91f3aaed`](https://github.com/PrismJS/prism/commit/91f3aaed) - * Readme: Added Node and npm version requirements ([#2790](https://github.com/PrismJS/prism/issues/2790)) [`cb220168`](https://github.com/PrismJS/prism/commit/cb220168) - * Readme: Update link to Chinese translation ([#2749](https://github.com/PrismJS/prism/issues/2749)) [`266cc700`](https://github.com/PrismJS/prism/commit/266cc700) - * Replace `my.cdn` in code sample with Handlebars-like placeholder ([#2906](https://github.com/PrismJS/prism/issues/2906)) [`80471181`](https://github.com/PrismJS/prism/commit/80471181) - * Set dummy domain for CDN ([#2905](https://github.com/PrismJS/prism/issues/2905)) [`38f1d289`](https://github.com/PrismJS/prism/commit/38f1d289) - * Added MySQL to "Used by" section ([#2785](https://github.com/PrismJS/prism/issues/2785)) [`9b784ebf`](https://github.com/PrismJS/prism/commit/9b784ebf) - * Improved basic usage section ([#2777](https://github.com/PrismJS/prism/issues/2777)) [`a1209930`](https://github.com/PrismJS/prism/commit/a1209930) - * Updated URL in Autolinker example ([#2751](https://github.com/PrismJS/prism/issues/2751)) [`ec9767d6`](https://github.com/PrismJS/prism/commit/ec9767d6) - * Added React native tutorial ([#2683](https://github.com/PrismJS/prism/issues/2683)) [`1506f345`](https://github.com/PrismJS/prism/commit/1506f345) - +- **Core** + - Add `tabindex` to code blocks to enable keyboard navigation ([#2799](https://github.com/PrismJS/prism/issues/2799)) [`dbf70515`](https://github.com/PrismJS/prism/commit/dbf70515) + - Fixed greedy rematching reach bug ([#2705](https://github.com/PrismJS/prism/issues/2705)) [`b37987d3`](https://github.com/PrismJS/prism/commit/b37987d3) + - Added support for plaintext ([#2738](https://github.com/PrismJS/prism/issues/2738)) [`970674cf`](https://github.com/PrismJS/prism/commit/970674cf) +- **Infrastructure** + - Added ESLint + - Added `npm-run-all` to clean up test command ([#2938](https://github.com/PrismJS/prism/issues/2938)) [`5d3d8088`](https://github.com/PrismJS/prism/commit/5d3d8088) + - Added link to Q&A to issue templates ([#2834](https://github.com/PrismJS/prism/issues/2834)) [`7cd9e794`](https://github.com/PrismJS/prism/commit/7cd9e794) + - CI: Run tests with NodeJS 16.x ([#2888](https://github.com/PrismJS/prism/issues/2888)) [`b77317c5`](https://github.com/PrismJS/prism/commit/b77317c5) + - Dangerfile: Trim merge base ([#2761](https://github.com/PrismJS/prism/issues/2761)) [`45b0e82a`](https://github.com/PrismJS/prism/commit/45b0e82a) + - Dangerfile: Fixed how changed files are determined ([#2757](https://github.com/PrismJS/prism/issues/2757)) [`0feb266f`](https://github.com/PrismJS/prism/commit/0feb266f) + - Deps: Updated regex tooling ([#2923](https://github.com/PrismJS/prism/issues/2923)) [`ad9878ad`](https://github.com/PrismJS/prism/commit/ad9878ad) + - Tests: Added `--language` for patterns tests ([#2929](https://github.com/PrismJS/prism/issues/2929)) [`a62ef796`](https://github.com/PrismJS/prism/commit/a62ef796) + - Tests: Fixed polynomial backtracking test ([#2891](https://github.com/PrismJS/prism/issues/2891)) [`8dbf1217`](https://github.com/PrismJS/prism/commit/8dbf1217) + - Tests: Fixed languages test discovery [`a9a199b6`](https://github.com/PrismJS/prism/commit/a9a199b6) + - Tests: Test discovery should ignore unsupported file extensions ([#2886](https://github.com/PrismJS/prism/issues/2886)) [`4492c5ce`](https://github.com/PrismJS/prism/commit/4492c5ce) + - Tests: Exhaustive pattern tests ([#2688](https://github.com/PrismJS/prism/issues/2688)) [`53151404`](https://github.com/PrismJS/prism/commit/53151404) + - Tests: Fixed pretty print incorrectly calculating print width ([#2821](https://github.com/PrismJS/prism/issues/2821)) [`5bc405e7`](https://github.com/PrismJS/prism/commit/5bc405e7) + - Tests: Automatically normalize line ends ([#2934](https://github.com/PrismJS/prism/issues/2934)) [`99f3ddcd`](https://github.com/PrismJS/prism/commit/99f3ddcd) + - Tests: Added `--insert` and `--update` parameters to language test ([#2809](https://github.com/PrismJS/prism/issues/2809)) [`4c8b855d`](https://github.com/PrismJS/prism/commit/4c8b855d) + - Tests: Stricter `components.json` tests ([#2758](https://github.com/PrismJS/prism/issues/2758)) [`933af805`](https://github.com/PrismJS/prism/commit/933af805) +- **Website** + - Copy to clipboard: Fixed highlighting ([#2725](https://github.com/PrismJS/prism/issues/2725)) [`7a790bf9`](https://github.com/PrismJS/prism/commit/7a790bf9) + - Readme: Mention `npm ci` ([#2899](https://github.com/PrismJS/prism/issues/2899)) [`91f3aaed`](https://github.com/PrismJS/prism/commit/91f3aaed) + - Readme: Added Node and npm version requirements ([#2790](https://github.com/PrismJS/prism/issues/2790)) [`cb220168`](https://github.com/PrismJS/prism/commit/cb220168) + - Readme: Update link to Chinese translation ([#2749](https://github.com/PrismJS/prism/issues/2749)) [`266cc700`](https://github.com/PrismJS/prism/commit/266cc700) + - Replace `my.cdn` in code sample with Handlebars-like placeholder ([#2906](https://github.com/PrismJS/prism/issues/2906)) [`80471181`](https://github.com/PrismJS/prism/commit/80471181) + - Set dummy domain for CDN ([#2905](https://github.com/PrismJS/prism/issues/2905)) [`38f1d289`](https://github.com/PrismJS/prism/commit/38f1d289) + - Added MySQL to "Used by" section ([#2785](https://github.com/PrismJS/prism/issues/2785)) [`9b784ebf`](https://github.com/PrismJS/prism/commit/9b784ebf) + - Improved basic usage section ([#2777](https://github.com/PrismJS/prism/issues/2777)) [`a1209930`](https://github.com/PrismJS/prism/commit/a1209930) + - Updated URL in Autolinker example ([#2751](https://github.com/PrismJS/prism/issues/2751)) [`ec9767d6`](https://github.com/PrismJS/prism/commit/ec9767d6) + - Added React native tutorial ([#2683](https://github.com/PrismJS/prism/issues/2683)) [`1506f345`](https://github.com/PrismJS/prism/commit/1506f345) ## 1.23.0 (2020-12-31) ### New components -* __Apex__ ([#2622](https://github.com/PrismJS/prism/issues/2622)) [`f0e2b70e`](https://github.com/PrismJS/prism/commit/f0e2b70e) -* __DataWeave__ ([#2659](https://github.com/PrismJS/prism/issues/2659)) [`0803525b`](https://github.com/PrismJS/prism/commit/0803525b) -* __PromQL__ ([#2628](https://github.com/PrismJS/prism/issues/2628)) [`8831c706`](https://github.com/PrismJS/prism/commit/8831c706) +- **Apex** ([#2622](https://github.com/PrismJS/prism/issues/2622)) [`f0e2b70e`](https://github.com/PrismJS/prism/commit/f0e2b70e) +- **DataWeave** ([#2659](https://github.com/PrismJS/prism/issues/2659)) [`0803525b`](https://github.com/PrismJS/prism/commit/0803525b) +- **PromQL** ([#2628](https://github.com/PrismJS/prism/issues/2628)) [`8831c706`](https://github.com/PrismJS/prism/commit/8831c706) ### Updated components -* Fixed multiple vulnerable regexes ([#2584](https://github.com/PrismJS/prism/issues/2584)) [`c2f6a644`](https://github.com/PrismJS/prism/commit/c2f6a644) -* __Apache Configuration__ - * Update directive-flag to match `=` ([#2612](https://github.com/PrismJS/prism/issues/2612)) [`00bf00e3`](https://github.com/PrismJS/prism/commit/00bf00e3) -* __C-like__ - * Made all comments greedy ([#2680](https://github.com/PrismJS/prism/issues/2680)) [`0a3932fe`](https://github.com/PrismJS/prism/commit/0a3932fe) -* __C__ - * Better class name and macro name detection ([#2585](https://github.com/PrismJS/prism/issues/2585)) [`129faf5c`](https://github.com/PrismJS/prism/commit/129faf5c) -* __Content-Security-Policy__ - * Added missing directives and keywords ([#2664](https://github.com/PrismJS/prism/issues/2664)) [`f1541342`](https://github.com/PrismJS/prism/commit/f1541342) - * Do not highlight directive names with adjacent hyphens ([#2662](https://github.com/PrismJS/prism/issues/2662)) [`a7ccc16d`](https://github.com/PrismJS/prism/commit/a7ccc16d) -* __CSS__ - * Better HTML `style` attribute tokenization ([#2569](https://github.com/PrismJS/prism/issues/2569)) [`b04cbafe`](https://github.com/PrismJS/prism/commit/b04cbafe) -* __Java__ - * Improved package and class name detection ([#2599](https://github.com/PrismJS/prism/issues/2599)) [`0889bc7c`](https://github.com/PrismJS/prism/commit/0889bc7c) - * Added Java 15 keywords ([#2567](https://github.com/PrismJS/prism/issues/2567)) [`73f81c89`](https://github.com/PrismJS/prism/commit/73f81c89) -* __Java stack trace__ - * Added support stack frame element class loaders and modules ([#2658](https://github.com/PrismJS/prism/issues/2658)) [`0bb4f096`](https://github.com/PrismJS/prism/commit/0bb4f096) -* __Julia__ - * Removed constants that are not exported by default ([#2601](https://github.com/PrismJS/prism/issues/2601)) [`093c8175`](https://github.com/PrismJS/prism/commit/093c8175) -* __Kotlin__ - * Added support for backticks in function names ([#2489](https://github.com/PrismJS/prism/issues/2489)) [`a5107d5c`](https://github.com/PrismJS/prism/commit/a5107d5c) -* __Latte__ - * Fixed exponential backtracking ([#2682](https://github.com/PrismJS/prism/issues/2682)) [`89f1e182`](https://github.com/PrismJS/prism/commit/89f1e182) -* __Markdown__ - * Improved URL tokenization ([#2678](https://github.com/PrismJS/prism/issues/2678)) [`2af3e2c2`](https://github.com/PrismJS/prism/commit/2af3e2c2) - * Added support for YAML front matter ([#2634](https://github.com/PrismJS/prism/issues/2634)) [`5cf9cfbc`](https://github.com/PrismJS/prism/commit/5cf9cfbc) -* __PHP__ - * Added support for PHP 7.4 + other major improvements ([#2566](https://github.com/PrismJS/prism/issues/2566)) [`38808e64`](https://github.com/PrismJS/prism/commit/38808e64) - * Added support for PHP 8.0 features ([#2591](https://github.com/PrismJS/prism/issues/2591)) [`df922d90`](https://github.com/PrismJS/prism/commit/df922d90) - * Removed C-like dependency ([#2619](https://github.com/PrismJS/prism/issues/2619)) [`89ebb0b7`](https://github.com/PrismJS/prism/commit/89ebb0b7) - * Fixed exponential backtracking ([#2684](https://github.com/PrismJS/prism/issues/2684)) [`37b9c9a1`](https://github.com/PrismJS/prism/commit/37b9c9a1) -* __Sass (Scss)__ - * Added support for Sass modules ([#2643](https://github.com/PrismJS/prism/issues/2643)) [`deb238a6`](https://github.com/PrismJS/prism/commit/deb238a6) -* __Scheme__ - * Fixed number pattern ([#2648](https://github.com/PrismJS/prism/issues/2648)) [`e01ecd00`](https://github.com/PrismJS/prism/commit/e01ecd00) - * Fixed function and function-like false positives ([#2611](https://github.com/PrismJS/prism/issues/2611)) [`7951ca24`](https://github.com/PrismJS/prism/commit/7951ca24) -* __Shell session__ - * Fixed false positives because of links in command output ([#2649](https://github.com/PrismJS/prism/issues/2649)) [`8e76a978`](https://github.com/PrismJS/prism/commit/8e76a978) -* __TSX__ - * Temporary fix for the collisions of JSX tags and TS generics ([#2596](https://github.com/PrismJS/prism/issues/2596)) [`25bdb494`](https://github.com/PrismJS/prism/commit/25bdb494) +- Fixed multiple vulnerable regexes ([#2584](https://github.com/PrismJS/prism/issues/2584)) [`c2f6a644`](https://github.com/PrismJS/prism/commit/c2f6a644) +- **Apache Configuration** + - Update directive-flag to match `=` ([#2612](https://github.com/PrismJS/prism/issues/2612)) [`00bf00e3`](https://github.com/PrismJS/prism/commit/00bf00e3) +- **C-like** + - Made all comments greedy ([#2680](https://github.com/PrismJS/prism/issues/2680)) [`0a3932fe`](https://github.com/PrismJS/prism/commit/0a3932fe) +- **C** + - Better class name and macro name detection ([#2585](https://github.com/PrismJS/prism/issues/2585)) [`129faf5c`](https://github.com/PrismJS/prism/commit/129faf5c) +- **Content-Security-Policy** + - Added missing directives and keywords ([#2664](https://github.com/PrismJS/prism/issues/2664)) [`f1541342`](https://github.com/PrismJS/prism/commit/f1541342) + - Do not highlight directive names with adjacent hyphens ([#2662](https://github.com/PrismJS/prism/issues/2662)) [`a7ccc16d`](https://github.com/PrismJS/prism/commit/a7ccc16d) +- **CSS** + - Better HTML `style` attribute tokenization ([#2569](https://github.com/PrismJS/prism/issues/2569)) [`b04cbafe`](https://github.com/PrismJS/prism/commit/b04cbafe) +- **Java** + - Improved package and class name detection ([#2599](https://github.com/PrismJS/prism/issues/2599)) [`0889bc7c`](https://github.com/PrismJS/prism/commit/0889bc7c) + - Added Java 15 keywords ([#2567](https://github.com/PrismJS/prism/issues/2567)) [`73f81c89`](https://github.com/PrismJS/prism/commit/73f81c89) +- **Java stack trace** + - Added support stack frame element class loaders and modules ([#2658](https://github.com/PrismJS/prism/issues/2658)) [`0bb4f096`](https://github.com/PrismJS/prism/commit/0bb4f096) +- **Julia** + - Removed constants that are not exported by default ([#2601](https://github.com/PrismJS/prism/issues/2601)) [`093c8175`](https://github.com/PrismJS/prism/commit/093c8175) +- **Kotlin** + - Added support for backticks in function names ([#2489](https://github.com/PrismJS/prism/issues/2489)) [`a5107d5c`](https://github.com/PrismJS/prism/commit/a5107d5c) +- **Latte** + - Fixed exponential backtracking ([#2682](https://github.com/PrismJS/prism/issues/2682)) [`89f1e182`](https://github.com/PrismJS/prism/commit/89f1e182) +- **Markdown** + - Improved URL tokenization ([#2678](https://github.com/PrismJS/prism/issues/2678)) [`2af3e2c2`](https://github.com/PrismJS/prism/commit/2af3e2c2) + - Added support for YAML front matter ([#2634](https://github.com/PrismJS/prism/issues/2634)) [`5cf9cfbc`](https://github.com/PrismJS/prism/commit/5cf9cfbc) +- **PHP** + - Added support for PHP 7.4 + other major improvements ([#2566](https://github.com/PrismJS/prism/issues/2566)) [`38808e64`](https://github.com/PrismJS/prism/commit/38808e64) + - Added support for PHP 8.0 features ([#2591](https://github.com/PrismJS/prism/issues/2591)) [`df922d90`](https://github.com/PrismJS/prism/commit/df922d90) + - Removed C-like dependency ([#2619](https://github.com/PrismJS/prism/issues/2619)) [`89ebb0b7`](https://github.com/PrismJS/prism/commit/89ebb0b7) + - Fixed exponential backtracking ([#2684](https://github.com/PrismJS/prism/issues/2684)) [`37b9c9a1`](https://github.com/PrismJS/prism/commit/37b9c9a1) +- **Sass (Scss)** + - Added support for Sass modules ([#2643](https://github.com/PrismJS/prism/issues/2643)) [`deb238a6`](https://github.com/PrismJS/prism/commit/deb238a6) +- **Scheme** + - Fixed number pattern ([#2648](https://github.com/PrismJS/prism/issues/2648)) [`e01ecd00`](https://github.com/PrismJS/prism/commit/e01ecd00) + - Fixed function and function-like false positives ([#2611](https://github.com/PrismJS/prism/issues/2611)) [`7951ca24`](https://github.com/PrismJS/prism/commit/7951ca24) +- **Shell session** + - Fixed false positives because of links in command output ([#2649](https://github.com/PrismJS/prism/issues/2649)) [`8e76a978`](https://github.com/PrismJS/prism/commit/8e76a978) +- **TSX** + - Temporary fix for the collisions of JSX tags and TS generics ([#2596](https://github.com/PrismJS/prism/issues/2596)) [`25bdb494`](https://github.com/PrismJS/prism/commit/25bdb494) ### Updated plugins -* Made Autoloader and Diff Highlight compatible ([#2580](https://github.com/PrismJS/prism/issues/2580)) [`7a74497a`](https://github.com/PrismJS/prism/commit/7a74497a) -* __Copy to Clipboard Button__ - * Set `type="button"` attribute for copy to clipboard plugin ([#2593](https://github.com/PrismJS/prism/issues/2593)) [`f59a85f1`](https://github.com/PrismJS/prism/commit/f59a85f1) -* __File Highlight__ - * Fixed IE compatibility problem ([#2656](https://github.com/PrismJS/prism/issues/2656)) [`3f4ae00d`](https://github.com/PrismJS/prism/commit/3f4ae00d) -* __Line Highlight__ - * Fixed top offset in combination with Line numbers ([#2237](https://github.com/PrismJS/prism/issues/2237)) [`b40f8f4b`](https://github.com/PrismJS/prism/commit/b40f8f4b) - * Fixed print background color ([#2668](https://github.com/PrismJS/prism/issues/2668)) [`cdb24abe`](https://github.com/PrismJS/prism/commit/cdb24abe) -* __Line Numbers__ - * Fixed null reference ([#2605](https://github.com/PrismJS/prism/issues/2605)) [`7cdfe556`](https://github.com/PrismJS/prism/commit/7cdfe556) -* __Treeview__ - * Fixed icons on dark themes ([#2631](https://github.com/PrismJS/prism/issues/2631)) [`7266e32f`](https://github.com/PrismJS/prism/commit/7266e32f) -* __Unescaped Markup__ - * Refactoring ([#2445](https://github.com/PrismJS/prism/issues/2445)) [`fc602822`](https://github.com/PrismJS/prism/commit/fc602822) +- Made Autoloader and Diff Highlight compatible ([#2580](https://github.com/PrismJS/prism/issues/2580)) [`7a74497a`](https://github.com/PrismJS/prism/commit/7a74497a) +- **Copy to Clipboard Button** + - Set `type="button"` attribute for copy to clipboard plugin ([#2593](https://github.com/PrismJS/prism/issues/2593)) [`f59a85f1`](https://github.com/PrismJS/prism/commit/f59a85f1) +- **File Highlight** + - Fixed IE compatibility problem ([#2656](https://github.com/PrismJS/prism/issues/2656)) [`3f4ae00d`](https://github.com/PrismJS/prism/commit/3f4ae00d) +- **Line Highlight** + - Fixed top offset in combination with Line numbers ([#2237](https://github.com/PrismJS/prism/issues/2237)) [`b40f8f4b`](https://github.com/PrismJS/prism/commit/b40f8f4b) + - Fixed print background color ([#2668](https://github.com/PrismJS/prism/issues/2668)) [`cdb24abe`](https://github.com/PrismJS/prism/commit/cdb24abe) +- **Line Numbers** + - Fixed null reference ([#2605](https://github.com/PrismJS/prism/issues/2605)) [`7cdfe556`](https://github.com/PrismJS/prism/commit/7cdfe556) +- **Treeview** + - Fixed icons on dark themes ([#2631](https://github.com/PrismJS/prism/issues/2631)) [`7266e32f`](https://github.com/PrismJS/prism/commit/7266e32f) +- **Unescaped Markup** + - Refactoring ([#2445](https://github.com/PrismJS/prism/issues/2445)) [`fc602822`](https://github.com/PrismJS/prism/commit/fc602822) ### Other -* Readme: Added alternative link for Chinese translation [`071232b4`](https://github.com/PrismJS/prism/commit/071232b4) -* Readme: Removed broken icon for Chinese translation ([#2670](https://github.com/PrismJS/prism/issues/2670)) [`2ea202b9`](https://github.com/PrismJS/prism/commit/2ea202b9) -* Readme: Grammar adjustments ([#2629](https://github.com/PrismJS/prism/issues/2629)) [`f217ab75`](https://github.com/PrismJS/prism/commit/f217ab75) -* __Core__ - * Moved pattern matching + lookbehind logic into function ([#2633](https://github.com/PrismJS/prism/issues/2633)) [`24574406`](https://github.com/PrismJS/prism/commit/24574406) - * Fixed bug with greedy matching ([#2632](https://github.com/PrismJS/prism/issues/2632)) [`8fa8dd24`](https://github.com/PrismJS/prism/commit/8fa8dd24) -* __Infrastructure__ - * Migrate from TravisCI -> GitHub Actions ([#2606](https://github.com/PrismJS/prism/issues/2606)) [`69132045`](https://github.com/PrismJS/prism/commit/69132045) - * Added Dangerfile and provide bundle size info ([#2608](https://github.com/PrismJS/prism/issues/2608)) [`9df20c5e`](https://github.com/PrismJS/prism/commit/9df20c5e) - * New `start` script to start local server ([#2491](https://github.com/PrismJS/prism/issues/2491)) [`0604793c`](https://github.com/PrismJS/prism/commit/0604793c) - * Added test for exponential backtracking ([#2590](https://github.com/PrismJS/prism/issues/2590)) [`05afbb10`](https://github.com/PrismJS/prism/commit/05afbb10) - * Added test for polynomial backtracking ([#2597](https://github.com/PrismJS/prism/issues/2597)) [`e644178b`](https://github.com/PrismJS/prism/commit/e644178b) - * Tests: Better pretty print ([#2600](https://github.com/PrismJS/prism/issues/2600)) [`8bfcc819`](https://github.com/PrismJS/prism/commit/8bfcc819) - * Tests: Fixed sorted language list test ([#2623](https://github.com/PrismJS/prism/issues/2623)) [`2d3a1267`](https://github.com/PrismJS/prism/commit/2d3a1267) - * Tests: Stricter pattern for nice-token-names test ([#2588](https://github.com/PrismJS/prism/issues/2588)) [`0df60be1`](https://github.com/PrismJS/prism/commit/0df60be1) - * Tests: Added strict checks for `Prism.languages.extend` ([#2572](https://github.com/PrismJS/prism/issues/2572)) [`8828500e`](https://github.com/PrismJS/prism/commit/8828500e) -* __Website__ - * Test page: Added "Share" option ([#2575](https://github.com/PrismJS/prism/issues/2575)) [`b5f4f10e`](https://github.com/PrismJS/prism/commit/b5f4f10e) - * Test page: Don't trigger ad-blockers with class ([#2677](https://github.com/PrismJS/prism/issues/2677)) [`df0738e9`](https://github.com/PrismJS/prism/commit/df0738e9) - * Thousands -> millions [`9f82de50`](https://github.com/PrismJS/prism/commit/9f82de50) - * Unescaped Markup: More doc regarding comments ([#2652](https://github.com/PrismJS/prism/issues/2652)) [`add3736a`](https://github.com/PrismJS/prism/commit/add3736a) - * Website: Added and updated documentation ([#2654](https://github.com/PrismJS/prism/issues/2654)) [`8e660495`](https://github.com/PrismJS/prism/commit/8e660495) - * Website: Updated and improved guide on "Extending Prism" page ([#2586](https://github.com/PrismJS/prism/issues/2586)) [`8e1f38ff`](https://github.com/PrismJS/prism/commit/8e1f38ff) +- Readme: Added alternative link for Chinese translation [`071232b4`](https://github.com/PrismJS/prism/commit/071232b4) +- Readme: Removed broken icon for Chinese translation ([#2670](https://github.com/PrismJS/prism/issues/2670)) [`2ea202b9`](https://github.com/PrismJS/prism/commit/2ea202b9) +- Readme: Grammar adjustments ([#2629](https://github.com/PrismJS/prism/issues/2629)) [`f217ab75`](https://github.com/PrismJS/prism/commit/f217ab75) +- **Core** + - Moved pattern matching + lookbehind logic into function ([#2633](https://github.com/PrismJS/prism/issues/2633)) [`24574406`](https://github.com/PrismJS/prism/commit/24574406) + - Fixed bug with greedy matching ([#2632](https://github.com/PrismJS/prism/issues/2632)) [`8fa8dd24`](https://github.com/PrismJS/prism/commit/8fa8dd24) +- **Infrastructure** + - Migrate from TravisCI -> GitHub Actions ([#2606](https://github.com/PrismJS/prism/issues/2606)) [`69132045`](https://github.com/PrismJS/prism/commit/69132045) + - Added Dangerfile and provide bundle size info ([#2608](https://github.com/PrismJS/prism/issues/2608)) [`9df20c5e`](https://github.com/PrismJS/prism/commit/9df20c5e) + - New `start` script to start local server ([#2491](https://github.com/PrismJS/prism/issues/2491)) [`0604793c`](https://github.com/PrismJS/prism/commit/0604793c) + - Added test for exponential backtracking ([#2590](https://github.com/PrismJS/prism/issues/2590)) [`05afbb10`](https://github.com/PrismJS/prism/commit/05afbb10) + - Added test for polynomial backtracking ([#2597](https://github.com/PrismJS/prism/issues/2597)) [`e644178b`](https://github.com/PrismJS/prism/commit/e644178b) + - Tests: Better pretty print ([#2600](https://github.com/PrismJS/prism/issues/2600)) [`8bfcc819`](https://github.com/PrismJS/prism/commit/8bfcc819) + - Tests: Fixed sorted language list test ([#2623](https://github.com/PrismJS/prism/issues/2623)) [`2d3a1267`](https://github.com/PrismJS/prism/commit/2d3a1267) + - Tests: Stricter pattern for nice-token-names test ([#2588](https://github.com/PrismJS/prism/issues/2588)) [`0df60be1`](https://github.com/PrismJS/prism/commit/0df60be1) + - Tests: Added strict checks for `Prism.languages.extend` ([#2572](https://github.com/PrismJS/prism/issues/2572)) [`8828500e`](https://github.com/PrismJS/prism/commit/8828500e) +- **Website** + - Test page: Added "Share" option ([#2575](https://github.com/PrismJS/prism/issues/2575)) [`b5f4f10e`](https://github.com/PrismJS/prism/commit/b5f4f10e) + - Test page: Don't trigger ad-blockers with class ([#2677](https://github.com/PrismJS/prism/issues/2677)) [`df0738e9`](https://github.com/PrismJS/prism/commit/df0738e9) + - Thousands -> millions [`9f82de50`](https://github.com/PrismJS/prism/commit/9f82de50) + - Unescaped Markup: More doc regarding comments ([#2652](https://github.com/PrismJS/prism/issues/2652)) [`add3736a`](https://github.com/PrismJS/prism/commit/add3736a) + - Website: Added and updated documentation ([#2654](https://github.com/PrismJS/prism/issues/2654)) [`8e660495`](https://github.com/PrismJS/prism/commit/8e660495) + - Website: Updated and improved guide on "Extending Prism" page ([#2586](https://github.com/PrismJS/prism/issues/2586)) [`8e1f38ff`](https://github.com/PrismJS/prism/commit/8e1f38ff) ## 1.22.0 (2020-10-10) ### New components -* __Birb__ ([#2542](https://github.com/PrismJS/prism/issues/2542)) [`4d31e22a`](https://github.com/PrismJS/prism/commit/4d31e22a) -* __BSL (1C:Enterprise)__ & __OneScript__ ([#2520](https://github.com/PrismJS/prism/issues/2520)) [`5c33f0bb`](https://github.com/PrismJS/prism/commit/5c33f0bb) -* __MongoDB__ ([#2518](https://github.com/PrismJS/prism/issues/2518)) [`004eaa74`](https://github.com/PrismJS/prism/commit/004eaa74) -* __Naninovel Script__ ([#2494](https://github.com/PrismJS/prism/issues/2494)) [`388ad996`](https://github.com/PrismJS/prism/commit/388ad996) -* __PureScript__ ([#2526](https://github.com/PrismJS/prism/issues/2526)) [`ad748a00`](https://github.com/PrismJS/prism/commit/ad748a00) -* __SML__ & __SML/NJ__ ([#2537](https://github.com/PrismJS/prism/issues/2537)) [`cb75d9e2`](https://github.com/PrismJS/prism/commit/cb75d9e2) -* __Stan__ ([#2490](https://github.com/PrismJS/prism/issues/2490)) [`2da2beba`](https://github.com/PrismJS/prism/commit/2da2beba) -* __TypoScript__ & __TSConfig__ ([#2505](https://github.com/PrismJS/prism/issues/2505)) [`bf115f47`](https://github.com/PrismJS/prism/commit/bf115f47) +- **Birb** ([#2542](https://github.com/PrismJS/prism/issues/2542)) [`4d31e22a`](https://github.com/PrismJS/prism/commit/4d31e22a) +- **BSL (1C:Enterprise)** & **OneScript** ([#2520](https://github.com/PrismJS/prism/issues/2520)) [`5c33f0bb`](https://github.com/PrismJS/prism/commit/5c33f0bb) +- **MongoDB** ([#2518](https://github.com/PrismJS/prism/issues/2518)) [`004eaa74`](https://github.com/PrismJS/prism/commit/004eaa74) +- **Naninovel Script** ([#2494](https://github.com/PrismJS/prism/issues/2494)) [`388ad996`](https://github.com/PrismJS/prism/commit/388ad996) +- **PureScript** ([#2526](https://github.com/PrismJS/prism/issues/2526)) [`ad748a00`](https://github.com/PrismJS/prism/commit/ad748a00) +- **SML** & **SML/NJ** ([#2537](https://github.com/PrismJS/prism/issues/2537)) [`cb75d9e2`](https://github.com/PrismJS/prism/commit/cb75d9e2) +- **Stan** ([#2490](https://github.com/PrismJS/prism/issues/2490)) [`2da2beba`](https://github.com/PrismJS/prism/commit/2da2beba) +- **TypoScript** & **TSConfig** ([#2505](https://github.com/PrismJS/prism/issues/2505)) [`bf115f47`](https://github.com/PrismJS/prism/commit/bf115f47) ### Updated components -* Removed duplicate alternatives in various languages ([#2524](https://github.com/PrismJS/prism/issues/2524)) [`fa2225ff`](https://github.com/PrismJS/prism/commit/fa2225ff) -* __Haskell__ - * Improvements ([#2535](https://github.com/PrismJS/prism/issues/2535)) [`e023044c`](https://github.com/PrismJS/prism/commit/e023044c) -* __JS Extras__ - * Highlight import and export bindings ([#2533](https://github.com/PrismJS/prism/issues/2533)) [`c51ababb`](https://github.com/PrismJS/prism/commit/c51ababb) - * Added control-flow keywords ([#2529](https://github.com/PrismJS/prism/issues/2529)) [`bcef22af`](https://github.com/PrismJS/prism/commit/bcef22af) -* __PHP__ - * Added `match` keyword (PHP 8.0) ([#2574](https://github.com/PrismJS/prism/issues/2574)) [`1761513e`](https://github.com/PrismJS/prism/commit/1761513e) -* __Processing__ - * Fixed function pattern ([#2564](https://github.com/PrismJS/prism/issues/2564)) [`35cbc02f`](https://github.com/PrismJS/prism/commit/35cbc02f) -* __Regex__ - * Changed how languages embed regexes ([#2532](https://github.com/PrismJS/prism/issues/2532)) [`f62ca787`](https://github.com/PrismJS/prism/commit/f62ca787) -* __Rust__ - * Fixed Unicode char literals ([#2550](https://github.com/PrismJS/prism/issues/2550)) [`3b4f14ca`](https://github.com/PrismJS/prism/commit/3b4f14ca) -* __Scheme__ - * Added support for R7RS syntax ([#2525](https://github.com/PrismJS/prism/issues/2525)) [`e4f6ccac`](https://github.com/PrismJS/prism/commit/e4f6ccac) -* __Shell session__ - * Added aliases ([#2548](https://github.com/PrismJS/prism/issues/2548)) [`bfb36748`](https://github.com/PrismJS/prism/commit/bfb36748) - * Highlight all commands after the start of any Heredoc string ([#2509](https://github.com/PrismJS/prism/issues/2509)) [`6c921801`](https://github.com/PrismJS/prism/commit/6c921801) -* __YAML__ - * Improved key pattern ([#2561](https://github.com/PrismJS/prism/issues/2561)) [`59853a52`](https://github.com/PrismJS/prism/commit/59853a52) +- Removed duplicate alternatives in various languages ([#2524](https://github.com/PrismJS/prism/issues/2524)) [`fa2225ff`](https://github.com/PrismJS/prism/commit/fa2225ff) +- **Haskell** + - Improvements ([#2535](https://github.com/PrismJS/prism/issues/2535)) [`e023044c`](https://github.com/PrismJS/prism/commit/e023044c) +- **JS Extras** + - Highlight import and export bindings ([#2533](https://github.com/PrismJS/prism/issues/2533)) [`c51ababb`](https://github.com/PrismJS/prism/commit/c51ababb) + - Added control-flow keywords ([#2529](https://github.com/PrismJS/prism/issues/2529)) [`bcef22af`](https://github.com/PrismJS/prism/commit/bcef22af) +- **PHP** + - Added `match` keyword (PHP 8.0) ([#2574](https://github.com/PrismJS/prism/issues/2574)) [`1761513e`](https://github.com/PrismJS/prism/commit/1761513e) +- **Processing** + - Fixed function pattern ([#2564](https://github.com/PrismJS/prism/issues/2564)) [`35cbc02f`](https://github.com/PrismJS/prism/commit/35cbc02f) +- **Regex** + - Changed how languages embed regexes ([#2532](https://github.com/PrismJS/prism/issues/2532)) [`f62ca787`](https://github.com/PrismJS/prism/commit/f62ca787) +- **Rust** + - Fixed Unicode char literals ([#2550](https://github.com/PrismJS/prism/issues/2550)) [`3b4f14ca`](https://github.com/PrismJS/prism/commit/3b4f14ca) +- **Scheme** + - Added support for R7RS syntax ([#2525](https://github.com/PrismJS/prism/issues/2525)) [`e4f6ccac`](https://github.com/PrismJS/prism/commit/e4f6ccac) +- **Shell session** + - Added aliases ([#2548](https://github.com/PrismJS/prism/issues/2548)) [`bfb36748`](https://github.com/PrismJS/prism/commit/bfb36748) + - Highlight all commands after the start of any Heredoc string ([#2509](https://github.com/PrismJS/prism/issues/2509)) [`6c921801`](https://github.com/PrismJS/prism/commit/6c921801) +- **YAML** + - Improved key pattern ([#2561](https://github.com/PrismJS/prism/issues/2561)) [`59853a52`](https://github.com/PrismJS/prism/commit/59853a52) ### Updated plugins -* __Autoloader__ - * Fixed file detection regexes ([#2549](https://github.com/PrismJS/prism/issues/2549)) [`d36ea993`](https://github.com/PrismJS/prism/commit/d36ea993) -* __Match braces__ - * Fixed JS interpolation punctuation ([#2541](https://github.com/PrismJS/prism/issues/2541)) [`6b47133d`](https://github.com/PrismJS/prism/commit/6b47133d) -* __Show Language__ - * Added title for plain text ([#2555](https://github.com/PrismJS/prism/issues/2555)) [`a409245e`](https://github.com/PrismJS/prism/commit/a409245e) +- **Autoloader** + - Fixed file detection regexes ([#2549](https://github.com/PrismJS/prism/issues/2549)) [`d36ea993`](https://github.com/PrismJS/prism/commit/d36ea993) +- **Match braces** + - Fixed JS interpolation punctuation ([#2541](https://github.com/PrismJS/prism/issues/2541)) [`6b47133d`](https://github.com/PrismJS/prism/commit/6b47133d) +- **Show Language** + - Added title for plain text ([#2555](https://github.com/PrismJS/prism/issues/2555)) [`a409245e`](https://github.com/PrismJS/prism/commit/a409245e) ### Other -* Tests: Added an option to accept the actual token stream ([#2515](https://github.com/PrismJS/prism/issues/2515)) [`bafab634`](https://github.com/PrismJS/prism/commit/bafab634) -* __Core__ - * Docs: Minor improvement ([#2513](https://github.com/PrismJS/prism/issues/2513)) [`206dc80f`](https://github.com/PrismJS/prism/commit/206dc80f) -* __Infrastructure__ - * JSDoc: Fixed line ends ([#2523](https://github.com/PrismJS/prism/issues/2523)) [`bf169e5f`](https://github.com/PrismJS/prism/commit/bf169e5f) -* __Website__ - * Website: Added new SB101 tutorial replacing the Crambler one ([#2576](https://github.com/PrismJS/prism/issues/2576)) [`655f985c`](https://github.com/PrismJS/prism/commit/655f985c) - * Website: Fix typo on homepage by adding missing word add ([#2570](https://github.com/PrismJS/prism/issues/2570)) [`8ae6a4ba`](https://github.com/PrismJS/prism/commit/8ae6a4ba) - * Custom class: Improved doc ([#2512](https://github.com/PrismJS/prism/issues/2512)) [`5ad6cb23`](https://github.com/PrismJS/prism/commit/5ad6cb23) +- Tests: Added an option to accept the actual token stream ([#2515](https://github.com/PrismJS/prism/issues/2515)) [`bafab634`](https://github.com/PrismJS/prism/commit/bafab634) +- **Core** + - Docs: Minor improvement ([#2513](https://github.com/PrismJS/prism/issues/2513)) [`206dc80f`](https://github.com/PrismJS/prism/commit/206dc80f) +- **Infrastructure** + - JSDoc: Fixed line ends ([#2523](https://github.com/PrismJS/prism/issues/2523)) [`bf169e5f`](https://github.com/PrismJS/prism/commit/bf169e5f) +- **Website** + - Website: Added new SB101 tutorial replacing the Crambler one ([#2576](https://github.com/PrismJS/prism/issues/2576)) [`655f985c`](https://github.com/PrismJS/prism/commit/655f985c) + - Website: Fix typo on homepage by adding missing word add ([#2570](https://github.com/PrismJS/prism/issues/2570)) [`8ae6a4ba`](https://github.com/PrismJS/prism/commit/8ae6a4ba) + - Custom class: Improved doc ([#2512](https://github.com/PrismJS/prism/issues/2512)) [`5ad6cb23`](https://github.com/PrismJS/prism/commit/5ad6cb23) ## 1.21.0 (2020-08-06) ### New components -* __.ignore__ & __.gitignore__ & __.hgignore__ & __.npmignore__ ([#2481](https://github.com/PrismJS/prism/issues/2481)) [`3fcce6fe`](https://github.com/PrismJS/prism/commit/3fcce6fe) -* __Agda__ ([#2430](https://github.com/PrismJS/prism/issues/2430)) [`3a127c7d`](https://github.com/PrismJS/prism/commit/3a127c7d) -* __AL__ ([#2300](https://github.com/PrismJS/prism/issues/2300)) [`de21eb64`](https://github.com/PrismJS/prism/commit/de21eb64) -* __Cypher__ ([#2459](https://github.com/PrismJS/prism/issues/2459)) [`398e2943`](https://github.com/PrismJS/prism/commit/398e2943) -* __Dhall__ ([#2473](https://github.com/PrismJS/prism/issues/2473)) [`649e51e5`](https://github.com/PrismJS/prism/commit/649e51e5) -* __EditorConfig__ ([#2471](https://github.com/PrismJS/prism/issues/2471)) [`ed8fff91`](https://github.com/PrismJS/prism/commit/ed8fff91) -* __HLSL__ ([#2318](https://github.com/PrismJS/prism/issues/2318)) [`87a5c7ae`](https://github.com/PrismJS/prism/commit/87a5c7ae) -* __JS stack trace__ ([#2418](https://github.com/PrismJS/prism/issues/2418)) [`ae0327b3`](https://github.com/PrismJS/prism/commit/ae0327b3) -* __PeopleCode__ ([#2302](https://github.com/PrismJS/prism/issues/2302)) [`bd4d8165`](https://github.com/PrismJS/prism/commit/bd4d8165) -* __PureBasic__ ([#2369](https://github.com/PrismJS/prism/issues/2369)) [`d0c1c70d`](https://github.com/PrismJS/prism/commit/d0c1c70d) -* __Racket__ ([#2315](https://github.com/PrismJS/prism/issues/2315)) [`053016ef`](https://github.com/PrismJS/prism/commit/053016ef) -* __Smali__ ([#2419](https://github.com/PrismJS/prism/issues/2419)) [`22eb5cad`](https://github.com/PrismJS/prism/commit/22eb5cad) -* __Structured Text (IEC 61131-3)__ ([#2311](https://github.com/PrismJS/prism/issues/2311)) [`8704cdfb`](https://github.com/PrismJS/prism/commit/8704cdfb) -* __UnrealScript__ ([#2305](https://github.com/PrismJS/prism/issues/2305)) [`1093ceb3`](https://github.com/PrismJS/prism/commit/1093ceb3) -* __WarpScript__ ([#2307](https://github.com/PrismJS/prism/issues/2307)) [`cde5b0fa`](https://github.com/PrismJS/prism/commit/cde5b0fa) -* __XML doc (.net)__ ([#2340](https://github.com/PrismJS/prism/issues/2340)) [`caec5e30`](https://github.com/PrismJS/prism/commit/caec5e30) -* __YANG__ ([#2467](https://github.com/PrismJS/prism/issues/2467)) [`ed1df1e1`](https://github.com/PrismJS/prism/commit/ed1df1e1) +- **.ignore** & **.gitignore** & **.hgignore** & **.npmignore** ([#2481](https://github.com/PrismJS/prism/issues/2481)) [`3fcce6fe`](https://github.com/PrismJS/prism/commit/3fcce6fe) +- **Agda** ([#2430](https://github.com/PrismJS/prism/issues/2430)) [`3a127c7d`](https://github.com/PrismJS/prism/commit/3a127c7d) +- **AL** ([#2300](https://github.com/PrismJS/prism/issues/2300)) [`de21eb64`](https://github.com/PrismJS/prism/commit/de21eb64) +- **Cypher** ([#2459](https://github.com/PrismJS/prism/issues/2459)) [`398e2943`](https://github.com/PrismJS/prism/commit/398e2943) +- **Dhall** ([#2473](https://github.com/PrismJS/prism/issues/2473)) [`649e51e5`](https://github.com/PrismJS/prism/commit/649e51e5) +- **EditorConfig** ([#2471](https://github.com/PrismJS/prism/issues/2471)) [`ed8fff91`](https://github.com/PrismJS/prism/commit/ed8fff91) +- **HLSL** ([#2318](https://github.com/PrismJS/prism/issues/2318)) [`87a5c7ae`](https://github.com/PrismJS/prism/commit/87a5c7ae) +- **JS stack trace** ([#2418](https://github.com/PrismJS/prism/issues/2418)) [`ae0327b3`](https://github.com/PrismJS/prism/commit/ae0327b3) +- **PeopleCode** ([#2302](https://github.com/PrismJS/prism/issues/2302)) [`bd4d8165`](https://github.com/PrismJS/prism/commit/bd4d8165) +- **PureBasic** ([#2369](https://github.com/PrismJS/prism/issues/2369)) [`d0c1c70d`](https://github.com/PrismJS/prism/commit/d0c1c70d) +- **Racket** ([#2315](https://github.com/PrismJS/prism/issues/2315)) [`053016ef`](https://github.com/PrismJS/prism/commit/053016ef) +- **Smali** ([#2419](https://github.com/PrismJS/prism/issues/2419)) [`22eb5cad`](https://github.com/PrismJS/prism/commit/22eb5cad) +- **Structured Text (IEC 61131-3)** ([#2311](https://github.com/PrismJS/prism/issues/2311)) [`8704cdfb`](https://github.com/PrismJS/prism/commit/8704cdfb) +- **UnrealScript** ([#2305](https://github.com/PrismJS/prism/issues/2305)) [`1093ceb3`](https://github.com/PrismJS/prism/commit/1093ceb3) +- **WarpScript** ([#2307](https://github.com/PrismJS/prism/issues/2307)) [`cde5b0fa`](https://github.com/PrismJS/prism/commit/cde5b0fa) +- **XML doc (.net)** ([#2340](https://github.com/PrismJS/prism/issues/2340)) [`caec5e30`](https://github.com/PrismJS/prism/commit/caec5e30) +- **YANG** ([#2467](https://github.com/PrismJS/prism/issues/2467)) [`ed1df1e1`](https://github.com/PrismJS/prism/commit/ed1df1e1) ### Updated components -* Markup & JSON: Added new aliases ([#2390](https://github.com/PrismJS/prism/issues/2390)) [`9782cfe6`](https://github.com/PrismJS/prism/commit/9782cfe6) -* Fixed several cases of exponential backtracking ([#2268](https://github.com/PrismJS/prism/issues/2268)) [`7a554b5f`](https://github.com/PrismJS/prism/commit/7a554b5f) -* __APL__ - * Added `⍥` ([#2409](https://github.com/PrismJS/prism/issues/2409)) [`0255cb6a`](https://github.com/PrismJS/prism/commit/0255cb6a) -* __AutoHotkey__ - * Added missing `format` built-in ([#2450](https://github.com/PrismJS/prism/issues/2450)) [`7c66cfc4`](https://github.com/PrismJS/prism/commit/7c66cfc4) - * Improved comments and other improvements ([#2412](https://github.com/PrismJS/prism/issues/2412)) [`ddf3cc62`](https://github.com/PrismJS/prism/commit/ddf3cc62) - * Added missing definitions ([#2400](https://github.com/PrismJS/prism/issues/2400)) [`4fe03676`](https://github.com/PrismJS/prism/commit/4fe03676) -* __Bash__ - * Added `composer` command ([#2298](https://github.com/PrismJS/prism/issues/2298)) [`044dd271`](https://github.com/PrismJS/prism/commit/044dd271) -* __Batch__ - * Fix escaped double quote ([#2485](https://github.com/PrismJS/prism/issues/2485)) [`f0f8210c`](https://github.com/PrismJS/prism/commit/f0f8210c) -* __C__ - * Improved macros and expressions ([#2440](https://github.com/PrismJS/prism/issues/2440)) [`8a72fa6f`](https://github.com/PrismJS/prism/commit/8a72fa6f) - * Improved macros ([#2320](https://github.com/PrismJS/prism/issues/2320)) [`fdcf7ed2`](https://github.com/PrismJS/prism/commit/fdcf7ed2) -* __C#__ - * Improved pattern matching ([#2411](https://github.com/PrismJS/prism/issues/2411)) [`7f341fc1`](https://github.com/PrismJS/prism/commit/7f341fc1) - * Fixed adjacent string interpolations ([#2402](https://github.com/PrismJS/prism/issues/2402)) [`2a2e79ed`](https://github.com/PrismJS/prism/commit/2a2e79ed) -* __C++__ - * Added support for default comparison operator ([#2426](https://github.com/PrismJS/prism/issues/2426)) [`8e9d161c`](https://github.com/PrismJS/prism/commit/8e9d161c) - * Improved class name detection ([#2348](https://github.com/PrismJS/prism/issues/2348)) [`e3fe9040`](https://github.com/PrismJS/prism/commit/e3fe9040) - * Fixed `enum class` class names ([#2342](https://github.com/PrismJS/prism/issues/2342)) [`30b4e254`](https://github.com/PrismJS/prism/commit/30b4e254) -* __Content-Security-Policy__ - * Fixed directives ([#2461](https://github.com/PrismJS/prism/issues/2461)) [`537a9e80`](https://github.com/PrismJS/prism/commit/537a9e80) -* __CSS__ - * Improved url and added keywords ([#2432](https://github.com/PrismJS/prism/issues/2432)) [`964de5a1`](https://github.com/PrismJS/prism/commit/964de5a1) -* __CSS Extras__ - * Optimized `class` and `id` patterns ([#2359](https://github.com/PrismJS/prism/issues/2359)) [`fdbc4473`](https://github.com/PrismJS/prism/commit/fdbc4473) - * Renamed `attr-{name,value}` tokens and added tokens for combinators and selector lists ([#2373](https://github.com/PrismJS/prism/issues/2373)) [`e523f5d0`](https://github.com/PrismJS/prism/commit/e523f5d0) -* __Dart__ - * Added missing keywords ([#2355](https://github.com/PrismJS/prism/issues/2355)) [`4172ab6f`](https://github.com/PrismJS/prism/commit/4172ab6f) -* __Diff__ - * Added `prefix` token ([#2281](https://github.com/PrismJS/prism/issues/2281)) [`fd432a5b`](https://github.com/PrismJS/prism/commit/fd432a5b) -* __Docker__ - * Fixed strings inside comments ([#2428](https://github.com/PrismJS/prism/issues/2428)) [`37273a6f`](https://github.com/PrismJS/prism/commit/37273a6f) -* __EditorConfig__ - * Trim spaces before key and section title ([#2482](https://github.com/PrismJS/prism/issues/2482)) [`0c30c582`](https://github.com/PrismJS/prism/commit/0c30c582) -* __EJS__ - * Added `eta` alias ([#2282](https://github.com/PrismJS/prism/issues/2282)) [`0cfb6c5f`](https://github.com/PrismJS/prism/commit/0cfb6c5f) -* __GLSL__ - * Improvements ([#2321](https://github.com/PrismJS/prism/issues/2321)) [`33e49956`](https://github.com/PrismJS/prism/commit/33e49956) -* __GraphQL__ - * Added missing keywords ([#2407](https://github.com/PrismJS/prism/issues/2407)) [`de8ed16d`](https://github.com/PrismJS/prism/commit/de8ed16d) - * Added support for multi-line strings and descriptions ([#2406](https://github.com/PrismJS/prism/issues/2406)) [`9e64c62e`](https://github.com/PrismJS/prism/commit/9e64c62e) -* __Io__ - * Fixed operator pattern ([#2365](https://github.com/PrismJS/prism/issues/2365)) [`d6055771`](https://github.com/PrismJS/prism/commit/d6055771) -* __Java__ - * Fixed `namespace` token ([#2295](https://github.com/PrismJS/prism/issues/2295)) [`62e184bb`](https://github.com/PrismJS/prism/commit/62e184bb) -* __JavaDoc__ - * Improvements ([#2324](https://github.com/PrismJS/prism/issues/2324)) [`032910ba`](https://github.com/PrismJS/prism/commit/032910ba) -* __JavaScript__ - * Improved regex detection ([#2465](https://github.com/PrismJS/prism/issues/2465)) [`4f55052f`](https://github.com/PrismJS/prism/commit/4f55052f) - * Improved `get`/`set` and parameter detection ([#2387](https://github.com/PrismJS/prism/issues/2387)) [`ed715158`](https://github.com/PrismJS/prism/commit/ed715158) - * Added support for logical assignment operators ([#2378](https://github.com/PrismJS/prism/issues/2378)) [`b28f21b7`](https://github.com/PrismJS/prism/commit/b28f21b7) -* __JSDoc__ - * Improvements ([#2466](https://github.com/PrismJS/prism/issues/2466)) [`2805ae35`](https://github.com/PrismJS/prism/commit/2805ae35) -* __JSON__ - * Greedy comments ([#2479](https://github.com/PrismJS/prism/issues/2479)) [`158caf52`](https://github.com/PrismJS/prism/commit/158caf52) -* __Julia__ - * Improved strings, comments, and other patterns ([#2363](https://github.com/PrismJS/prism/issues/2363)) [`81cf2344`](https://github.com/PrismJS/prism/commit/81cf2344) -* __Kotlin__ - * Added `kt` and `kts` aliases ([#2474](https://github.com/PrismJS/prism/issues/2474)) [`67f97e2e`](https://github.com/PrismJS/prism/commit/67f97e2e) -* __Markup__ - * Added tokens inside DOCTYPE ([#2349](https://github.com/PrismJS/prism/issues/2349)) [`9c7bc820`](https://github.com/PrismJS/prism/commit/9c7bc820) - * Added `attr-equals` alias for the attribute `=` sign ([#2350](https://github.com/PrismJS/prism/issues/2350)) [`96a0116e`](https://github.com/PrismJS/prism/commit/96a0116e) - * Added alias for named entities ([#2351](https://github.com/PrismJS/prism/issues/2351)) [`ab1e34ae`](https://github.com/PrismJS/prism/commit/ab1e34ae) - * Added support for SSML ([#2306](https://github.com/PrismJS/prism/issues/2306)) [`eb70070d`](https://github.com/PrismJS/prism/commit/eb70070d) -* __Objective-C__ - * Added `objc` alias ([#2331](https://github.com/PrismJS/prism/issues/2331)) [`67c6b7af`](https://github.com/PrismJS/prism/commit/67c6b7af) -* __PowerShell__ - * New functions pattern bases on naming conventions ([#2301](https://github.com/PrismJS/prism/issues/2301)) [`fec39bcf`](https://github.com/PrismJS/prism/commit/fec39bcf) -* __Protocol Buffers__ - * Added support for RPC syntax ([#2414](https://github.com/PrismJS/prism/issues/2414)) [`939a17c4`](https://github.com/PrismJS/prism/commit/939a17c4) -* __Pug__ - * Improved class and id detection in tags ([#2358](https://github.com/PrismJS/prism/issues/2358)) [`7f948ecb`](https://github.com/PrismJS/prism/commit/7f948ecb) -* __Python__ - * Fixed empty multiline strings ([#2344](https://github.com/PrismJS/prism/issues/2344)) [`c9324476`](https://github.com/PrismJS/prism/commit/c9324476) -* __Regex__ - * Added aliases and minor improvements ([#2325](https://github.com/PrismJS/prism/issues/2325)) [`8a72830a`](https://github.com/PrismJS/prism/commit/8a72830a) -* __Ren'py__ - * Added `rpy` alias ([#2385](https://github.com/PrismJS/prism/issues/2385)) [`4935b5ca`](https://github.com/PrismJS/prism/commit/4935b5ca) -* __Ruby__ - * Optimized `regex` and `string` patterns ([#2354](https://github.com/PrismJS/prism/issues/2354)) [`b526e8c0`](https://github.com/PrismJS/prism/commit/b526e8c0) -* __Rust__ - * Improvements ([#2464](https://github.com/PrismJS/prism/issues/2464)) [`2ff40fe0`](https://github.com/PrismJS/prism/commit/2ff40fe0) - * Improvements ([#2332](https://github.com/PrismJS/prism/issues/2332)) [`194c5429`](https://github.com/PrismJS/prism/commit/194c5429) -* __SAS__ - * Improved macro string functions ([#2463](https://github.com/PrismJS/prism/issues/2463)) [`278316ca`](https://github.com/PrismJS/prism/commit/278316ca) - * Handle edge case of string macro functions ([#2451](https://github.com/PrismJS/prism/issues/2451)) [`a0a9f1ef`](https://github.com/PrismJS/prism/commit/a0a9f1ef) - * Improved comments in `proc groovy` and `proc lua` ([#2392](https://github.com/PrismJS/prism/issues/2392)) [`475a5903`](https://github.com/PrismJS/prism/commit/475a5903) -* __Scheme__ - * Adjusted lookbehind for literals ([#2396](https://github.com/PrismJS/prism/issues/2396)) [`1e3f542b`](https://github.com/PrismJS/prism/commit/1e3f542b) - * Improved lambda parameter ([#2346](https://github.com/PrismJS/prism/issues/2346)) [`1946918a`](https://github.com/PrismJS/prism/commit/1946918a) - * Consistent lookaheads ([#2322](https://github.com/PrismJS/prism/issues/2322)) [`d2541d54`](https://github.com/PrismJS/prism/commit/d2541d54) - * Improved boolean ([#2316](https://github.com/PrismJS/prism/issues/2316)) [`e27e65af`](https://github.com/PrismJS/prism/commit/e27e65af) - * Added missing special keywords ([#2304](https://github.com/PrismJS/prism/issues/2304)) [`ac297ba5`](https://github.com/PrismJS/prism/commit/ac297ba5) - * Improvements ([#2263](https://github.com/PrismJS/prism/issues/2263)) [`9a49f78f`](https://github.com/PrismJS/prism/commit/9a49f78f) -* __Solidity (Ethereum)__ - * Added `sol` alias ([#2382](https://github.com/PrismJS/prism/issues/2382)) [`6352213a`](https://github.com/PrismJS/prism/commit/6352213a) -* __SQL__ - * Added PostgreSQL `RETURNING` keyword ([#2476](https://github.com/PrismJS/prism/issues/2476)) [`bea7a585`](https://github.com/PrismJS/prism/commit/bea7a585) -* __Stylus__ - * Fixed comments breaking declarations + minor improvements ([#2372](https://github.com/PrismJS/prism/issues/2372)) [`6d663b6e`](https://github.com/PrismJS/prism/commit/6d663b6e) - * New tokens and other improvements ([#2368](https://github.com/PrismJS/prism/issues/2368)) [`2c10ef8a`](https://github.com/PrismJS/prism/commit/2c10ef8a) - * Fixed comments breaking strings and URLs ([#2361](https://github.com/PrismJS/prism/issues/2361)) [`0d65d6c9`](https://github.com/PrismJS/prism/commit/0d65d6c9) -* __T4 Text Templates (VB)__ - * Use the correct VB variant ([#2341](https://github.com/PrismJS/prism/issues/2341)) [`b6093339`](https://github.com/PrismJS/prism/commit/b6093339) -* __TypeScript__ - * Added `asserts` keyword and other improvements ([#2280](https://github.com/PrismJS/prism/issues/2280)) [`a197cfcd`](https://github.com/PrismJS/prism/commit/a197cfcd) -* __Visual Basic__ - * Added VBA alias ([#2469](https://github.com/PrismJS/prism/issues/2469)) [`78161d60`](https://github.com/PrismJS/prism/commit/78161d60) - * Added `until` keyword ([#2423](https://github.com/PrismJS/prism/issues/2423)) [`a13ee8d9`](https://github.com/PrismJS/prism/commit/a13ee8d9) - * Added missing keywords ([#2376](https://github.com/PrismJS/prism/issues/2376)) [`ba5ac1da`](https://github.com/PrismJS/prism/commit/ba5ac1da) +- Markup & JSON: Added new aliases ([#2390](https://github.com/PrismJS/prism/issues/2390)) [`9782cfe6`](https://github.com/PrismJS/prism/commit/9782cfe6) +- Fixed several cases of exponential backtracking ([#2268](https://github.com/PrismJS/prism/issues/2268)) [`7a554b5f`](https://github.com/PrismJS/prism/commit/7a554b5f) +- **APL** + - Added `⍥` ([#2409](https://github.com/PrismJS/prism/issues/2409)) [`0255cb6a`](https://github.com/PrismJS/prism/commit/0255cb6a) +- **AutoHotkey** + - Added missing `format` built-in ([#2450](https://github.com/PrismJS/prism/issues/2450)) [`7c66cfc4`](https://github.com/PrismJS/prism/commit/7c66cfc4) + - Improved comments and other improvements ([#2412](https://github.com/PrismJS/prism/issues/2412)) [`ddf3cc62`](https://github.com/PrismJS/prism/commit/ddf3cc62) + - Added missing definitions ([#2400](https://github.com/PrismJS/prism/issues/2400)) [`4fe03676`](https://github.com/PrismJS/prism/commit/4fe03676) +- **Bash** + - Added `composer` command ([#2298](https://github.com/PrismJS/prism/issues/2298)) [`044dd271`](https://github.com/PrismJS/prism/commit/044dd271) +- **Batch** + - Fix escaped double quote ([#2485](https://github.com/PrismJS/prism/issues/2485)) [`f0f8210c`](https://github.com/PrismJS/prism/commit/f0f8210c) +- **C** + - Improved macros and expressions ([#2440](https://github.com/PrismJS/prism/issues/2440)) [`8a72fa6f`](https://github.com/PrismJS/prism/commit/8a72fa6f) + - Improved macros ([#2320](https://github.com/PrismJS/prism/issues/2320)) [`fdcf7ed2`](https://github.com/PrismJS/prism/commit/fdcf7ed2) +- **C#** + - Improved pattern matching ([#2411](https://github.com/PrismJS/prism/issues/2411)) [`7f341fc1`](https://github.com/PrismJS/prism/commit/7f341fc1) + - Fixed adjacent string interpolations ([#2402](https://github.com/PrismJS/prism/issues/2402)) [`2a2e79ed`](https://github.com/PrismJS/prism/commit/2a2e79ed) +- **C++** + - Added support for default comparison operator ([#2426](https://github.com/PrismJS/prism/issues/2426)) [`8e9d161c`](https://github.com/PrismJS/prism/commit/8e9d161c) + - Improved class name detection ([#2348](https://github.com/PrismJS/prism/issues/2348)) [`e3fe9040`](https://github.com/PrismJS/prism/commit/e3fe9040) + - Fixed `enum class` class names ([#2342](https://github.com/PrismJS/prism/issues/2342)) [`30b4e254`](https://github.com/PrismJS/prism/commit/30b4e254) +- **Content-Security-Policy** + - Fixed directives ([#2461](https://github.com/PrismJS/prism/issues/2461)) [`537a9e80`](https://github.com/PrismJS/prism/commit/537a9e80) +- **CSS** + - Improved url and added keywords ([#2432](https://github.com/PrismJS/prism/issues/2432)) [`964de5a1`](https://github.com/PrismJS/prism/commit/964de5a1) +- **CSS Extras** + - Optimized `class` and `id` patterns ([#2359](https://github.com/PrismJS/prism/issues/2359)) [`fdbc4473`](https://github.com/PrismJS/prism/commit/fdbc4473) + - Renamed `attr-{name,value}` tokens and added tokens for combinators and selector lists ([#2373](https://github.com/PrismJS/prism/issues/2373)) [`e523f5d0`](https://github.com/PrismJS/prism/commit/e523f5d0) +- **Dart** + - Added missing keywords ([#2355](https://github.com/PrismJS/prism/issues/2355)) [`4172ab6f`](https://github.com/PrismJS/prism/commit/4172ab6f) +- **Diff** + - Added `prefix` token ([#2281](https://github.com/PrismJS/prism/issues/2281)) [`fd432a5b`](https://github.com/PrismJS/prism/commit/fd432a5b) +- **Docker** + - Fixed strings inside comments ([#2428](https://github.com/PrismJS/prism/issues/2428)) [`37273a6f`](https://github.com/PrismJS/prism/commit/37273a6f) +- **EditorConfig** + - Trim spaces before key and section title ([#2482](https://github.com/PrismJS/prism/issues/2482)) [`0c30c582`](https://github.com/PrismJS/prism/commit/0c30c582) +- **EJS** + - Added `eta` alias ([#2282](https://github.com/PrismJS/prism/issues/2282)) [`0cfb6c5f`](https://github.com/PrismJS/prism/commit/0cfb6c5f) +- **GLSL** + - Improvements ([#2321](https://github.com/PrismJS/prism/issues/2321)) [`33e49956`](https://github.com/PrismJS/prism/commit/33e49956) +- **GraphQL** + - Added missing keywords ([#2407](https://github.com/PrismJS/prism/issues/2407)) [`de8ed16d`](https://github.com/PrismJS/prism/commit/de8ed16d) + - Added support for multi-line strings and descriptions ([#2406](https://github.com/PrismJS/prism/issues/2406)) [`9e64c62e`](https://github.com/PrismJS/prism/commit/9e64c62e) +- **Io** + - Fixed operator pattern ([#2365](https://github.com/PrismJS/prism/issues/2365)) [`d6055771`](https://github.com/PrismJS/prism/commit/d6055771) +- **Java** + - Fixed `namespace` token ([#2295](https://github.com/PrismJS/prism/issues/2295)) [`62e184bb`](https://github.com/PrismJS/prism/commit/62e184bb) +- **JavaDoc** + - Improvements ([#2324](https://github.com/PrismJS/prism/issues/2324)) [`032910ba`](https://github.com/PrismJS/prism/commit/032910ba) +- **JavaScript** + - Improved regex detection ([#2465](https://github.com/PrismJS/prism/issues/2465)) [`4f55052f`](https://github.com/PrismJS/prism/commit/4f55052f) + - Improved `get`/`set` and parameter detection ([#2387](https://github.com/PrismJS/prism/issues/2387)) [`ed715158`](https://github.com/PrismJS/prism/commit/ed715158) + - Added support for logical assignment operators ([#2378](https://github.com/PrismJS/prism/issues/2378)) [`b28f21b7`](https://github.com/PrismJS/prism/commit/b28f21b7) +- **JSDoc** + - Improvements ([#2466](https://github.com/PrismJS/prism/issues/2466)) [`2805ae35`](https://github.com/PrismJS/prism/commit/2805ae35) +- **JSON** + - Greedy comments ([#2479](https://github.com/PrismJS/prism/issues/2479)) [`158caf52`](https://github.com/PrismJS/prism/commit/158caf52) +- **Julia** + - Improved strings, comments, and other patterns ([#2363](https://github.com/PrismJS/prism/issues/2363)) [`81cf2344`](https://github.com/PrismJS/prism/commit/81cf2344) +- **Kotlin** + - Added `kt` and `kts` aliases ([#2474](https://github.com/PrismJS/prism/issues/2474)) [`67f97e2e`](https://github.com/PrismJS/prism/commit/67f97e2e) +- **Markup** + - Added tokens inside DOCTYPE ([#2349](https://github.com/PrismJS/prism/issues/2349)) [`9c7bc820`](https://github.com/PrismJS/prism/commit/9c7bc820) + - Added `attr-equals` alias for the attribute `=` sign ([#2350](https://github.com/PrismJS/prism/issues/2350)) [`96a0116e`](https://github.com/PrismJS/prism/commit/96a0116e) + - Added alias for named entities ([#2351](https://github.com/PrismJS/prism/issues/2351)) [`ab1e34ae`](https://github.com/PrismJS/prism/commit/ab1e34ae) + - Added support for SSML ([#2306](https://github.com/PrismJS/prism/issues/2306)) [`eb70070d`](https://github.com/PrismJS/prism/commit/eb70070d) +- **Objective-C** + - Added `objc` alias ([#2331](https://github.com/PrismJS/prism/issues/2331)) [`67c6b7af`](https://github.com/PrismJS/prism/commit/67c6b7af) +- **PowerShell** + - New functions pattern bases on naming conventions ([#2301](https://github.com/PrismJS/prism/issues/2301)) [`fec39bcf`](https://github.com/PrismJS/prism/commit/fec39bcf) +- **Protocol Buffers** + - Added support for RPC syntax ([#2414](https://github.com/PrismJS/prism/issues/2414)) [`939a17c4`](https://github.com/PrismJS/prism/commit/939a17c4) +- **Pug** + - Improved class and id detection in tags ([#2358](https://github.com/PrismJS/prism/issues/2358)) [`7f948ecb`](https://github.com/PrismJS/prism/commit/7f948ecb) +- **Python** + - Fixed empty multiline strings ([#2344](https://github.com/PrismJS/prism/issues/2344)) [`c9324476`](https://github.com/PrismJS/prism/commit/c9324476) +- **Regex** + - Added aliases and minor improvements ([#2325](https://github.com/PrismJS/prism/issues/2325)) [`8a72830a`](https://github.com/PrismJS/prism/commit/8a72830a) +- **Ren'py** + - Added `rpy` alias ([#2385](https://github.com/PrismJS/prism/issues/2385)) [`4935b5ca`](https://github.com/PrismJS/prism/commit/4935b5ca) +- **Ruby** + - Optimized `regex` and `string` patterns ([#2354](https://github.com/PrismJS/prism/issues/2354)) [`b526e8c0`](https://github.com/PrismJS/prism/commit/b526e8c0) +- **Rust** + - Improvements ([#2464](https://github.com/PrismJS/prism/issues/2464)) [`2ff40fe0`](https://github.com/PrismJS/prism/commit/2ff40fe0) + - Improvements ([#2332](https://github.com/PrismJS/prism/issues/2332)) [`194c5429`](https://github.com/PrismJS/prism/commit/194c5429) +- **SAS** + - Improved macro string functions ([#2463](https://github.com/PrismJS/prism/issues/2463)) [`278316ca`](https://github.com/PrismJS/prism/commit/278316ca) + - Handle edge case of string macro functions ([#2451](https://github.com/PrismJS/prism/issues/2451)) [`a0a9f1ef`](https://github.com/PrismJS/prism/commit/a0a9f1ef) + - Improved comments in `proc groovy` and `proc lua` ([#2392](https://github.com/PrismJS/prism/issues/2392)) [`475a5903`](https://github.com/PrismJS/prism/commit/475a5903) +- **Scheme** + - Adjusted lookbehind for literals ([#2396](https://github.com/PrismJS/prism/issues/2396)) [`1e3f542b`](https://github.com/PrismJS/prism/commit/1e3f542b) + - Improved lambda parameter ([#2346](https://github.com/PrismJS/prism/issues/2346)) [`1946918a`](https://github.com/PrismJS/prism/commit/1946918a) + - Consistent lookaheads ([#2322](https://github.com/PrismJS/prism/issues/2322)) [`d2541d54`](https://github.com/PrismJS/prism/commit/d2541d54) + - Improved boolean ([#2316](https://github.com/PrismJS/prism/issues/2316)) [`e27e65af`](https://github.com/PrismJS/prism/commit/e27e65af) + - Added missing special keywords ([#2304](https://github.com/PrismJS/prism/issues/2304)) [`ac297ba5`](https://github.com/PrismJS/prism/commit/ac297ba5) + - Improvements ([#2263](https://github.com/PrismJS/prism/issues/2263)) [`9a49f78f`](https://github.com/PrismJS/prism/commit/9a49f78f) +- **Solidity (Ethereum)** + - Added `sol` alias ([#2382](https://github.com/PrismJS/prism/issues/2382)) [`6352213a`](https://github.com/PrismJS/prism/commit/6352213a) +- **SQL** + - Added PostgreSQL `RETURNING` keyword ([#2476](https://github.com/PrismJS/prism/issues/2476)) [`bea7a585`](https://github.com/PrismJS/prism/commit/bea7a585) +- **Stylus** + - Fixed comments breaking declarations + minor improvements ([#2372](https://github.com/PrismJS/prism/issues/2372)) [`6d663b6e`](https://github.com/PrismJS/prism/commit/6d663b6e) + - New tokens and other improvements ([#2368](https://github.com/PrismJS/prism/issues/2368)) [`2c10ef8a`](https://github.com/PrismJS/prism/commit/2c10ef8a) + - Fixed comments breaking strings and URLs ([#2361](https://github.com/PrismJS/prism/issues/2361)) [`0d65d6c9`](https://github.com/PrismJS/prism/commit/0d65d6c9) +- **T4 Text Templates (VB)** + - Use the correct VB variant ([#2341](https://github.com/PrismJS/prism/issues/2341)) [`b6093339`](https://github.com/PrismJS/prism/commit/b6093339) +- **TypeScript** + - Added `asserts` keyword and other improvements ([#2280](https://github.com/PrismJS/prism/issues/2280)) [`a197cfcd`](https://github.com/PrismJS/prism/commit/a197cfcd) +- **Visual Basic** + - Added VBA alias ([#2469](https://github.com/PrismJS/prism/issues/2469)) [`78161d60`](https://github.com/PrismJS/prism/commit/78161d60) + - Added `until` keyword ([#2423](https://github.com/PrismJS/prism/issues/2423)) [`a13ee8d9`](https://github.com/PrismJS/prism/commit/a13ee8d9) + - Added missing keywords ([#2376](https://github.com/PrismJS/prism/issues/2376)) [`ba5ac1da`](https://github.com/PrismJS/prism/commit/ba5ac1da) ### Updated plugins -* File Highlight & JSONP Highlight update ([#1974](https://github.com/PrismJS/prism/issues/1974)) [`afea17d9`](https://github.com/PrismJS/prism/commit/afea17d9) -* Added general de/activation mechanism for plugins ([#2434](https://github.com/PrismJS/prism/issues/2434)) [`a36e96ab`](https://github.com/PrismJS/prism/commit/a36e96ab) -* __Autoloader__ - * Fixed bug breaking Autoloader ([#2449](https://github.com/PrismJS/prism/issues/2449)) [`a3416bf3`](https://github.com/PrismJS/prism/commit/a3416bf3) - * Fixed `data-dependencies` and extensions ([#2326](https://github.com/PrismJS/prism/issues/2326)) [`1654b25f`](https://github.com/PrismJS/prism/commit/1654b25f) - * Improved path detection and other minor improvements ([#2245](https://github.com/PrismJS/prism/issues/2245)) [`5cdc3251`](https://github.com/PrismJS/prism/commit/5cdc3251) -* __Command Line__ - * Some refactoring ([#2290](https://github.com/PrismJS/prism/issues/2290)) [`8c9c2896`](https://github.com/PrismJS/prism/commit/8c9c2896) - * Correctly rehighlight elements ([#2291](https://github.com/PrismJS/prism/issues/2291)) [`e6b2c6fc`](https://github.com/PrismJS/prism/commit/e6b2c6fc) -* __Line Highlight__ - * Added linkable line numbers ([#2328](https://github.com/PrismJS/prism/issues/2328)) [`eb82e804`](https://github.com/PrismJS/prism/commit/eb82e804) -* __Line Numbers__ - * Improved resize performance ([#2125](https://github.com/PrismJS/prism/issues/2125)) [`b96ed225`](https://github.com/PrismJS/prism/commit/b96ed225) - * Fixed TypeError when `lineNumberWrapper` is null ([#2337](https://github.com/PrismJS/prism/issues/2337)) [`4b61661d`](https://github.com/PrismJS/prism/commit/4b61661d) - * Exposed `_resizeElement` function ([#2288](https://github.com/PrismJS/prism/issues/2288)) [`893f2a79`](https://github.com/PrismJS/prism/commit/893f2a79) -* __Previewers__ - * Fixed XSS ([#2506](https://github.com/PrismJS/prism/issues/2506)) [`8bba4880`](https://github.com/PrismJS/prism/commit/8bba4880) -* __Unescaped Markup__ - * No longer requires `Prism.languages.markup` ([#2444](https://github.com/PrismJS/prism/issues/2444)) [`af132dd3`](https://github.com/PrismJS/prism/commit/af132dd3) +- File Highlight & JSONP Highlight update ([#1974](https://github.com/PrismJS/prism/issues/1974)) [`afea17d9`](https://github.com/PrismJS/prism/commit/afea17d9) +- Added general de/activation mechanism for plugins ([#2434](https://github.com/PrismJS/prism/issues/2434)) [`a36e96ab`](https://github.com/PrismJS/prism/commit/a36e96ab) +- **Autoloader** + - Fixed bug breaking Autoloader ([#2449](https://github.com/PrismJS/prism/issues/2449)) [`a3416bf3`](https://github.com/PrismJS/prism/commit/a3416bf3) + - Fixed `data-dependencies` and extensions ([#2326](https://github.com/PrismJS/prism/issues/2326)) [`1654b25f`](https://github.com/PrismJS/prism/commit/1654b25f) + - Improved path detection and other minor improvements ([#2245](https://github.com/PrismJS/prism/issues/2245)) [`5cdc3251`](https://github.com/PrismJS/prism/commit/5cdc3251) +- **Command Line** + - Some refactoring ([#2290](https://github.com/PrismJS/prism/issues/2290)) [`8c9c2896`](https://github.com/PrismJS/prism/commit/8c9c2896) + - Correctly rehighlight elements ([#2291](https://github.com/PrismJS/prism/issues/2291)) [`e6b2c6fc`](https://github.com/PrismJS/prism/commit/e6b2c6fc) +- **Line Highlight** + - Added linkable line numbers ([#2328](https://github.com/PrismJS/prism/issues/2328)) [`eb82e804`](https://github.com/PrismJS/prism/commit/eb82e804) +- **Line Numbers** + - Improved resize performance ([#2125](https://github.com/PrismJS/prism/issues/2125)) [`b96ed225`](https://github.com/PrismJS/prism/commit/b96ed225) + - Fixed TypeError when `lineNumberWrapper` is null ([#2337](https://github.com/PrismJS/prism/issues/2337)) [`4b61661d`](https://github.com/PrismJS/prism/commit/4b61661d) + - Exposed `_resizeElement` function ([#2288](https://github.com/PrismJS/prism/issues/2288)) [`893f2a79`](https://github.com/PrismJS/prism/commit/893f2a79) +- **Previewers** + - Fixed XSS ([#2506](https://github.com/PrismJS/prism/issues/2506)) [`8bba4880`](https://github.com/PrismJS/prism/commit/8bba4880) +- **Unescaped Markup** + - No longer requires `Prism.languages.markup` ([#2444](https://github.com/PrismJS/prism/issues/2444)) [`af132dd3`](https://github.com/PrismJS/prism/commit/af132dd3) ### Updated themes -* __Coy__ - * Minor improvements ([#2176](https://github.com/PrismJS/prism/issues/2176)) [`7109c18c`](https://github.com/PrismJS/prism/commit/7109c18c) -* __Default__ - * Added a comment that declares the background color of `operator` tokens as intentional ([#2309](https://github.com/PrismJS/prism/issues/2309)) [`937e2691`](https://github.com/PrismJS/prism/commit/937e2691) -* __Okaidia__ - * Update comment text color to meet WCAG contrast recommendations to AA level ([#2292](https://github.com/PrismJS/prism/issues/2292)) [`06495f90`](https://github.com/PrismJS/prism/commit/06495f90) +- **Coy** + - Minor improvements ([#2176](https://github.com/PrismJS/prism/issues/2176)) [`7109c18c`](https://github.com/PrismJS/prism/commit/7109c18c) +- **Default** + - Added a comment that declares the background color of `operator` tokens as intentional ([#2309](https://github.com/PrismJS/prism/issues/2309)) [`937e2691`](https://github.com/PrismJS/prism/commit/937e2691) +- **Okaidia** + - Update comment text color to meet WCAG contrast recommendations to AA level ([#2292](https://github.com/PrismJS/prism/issues/2292)) [`06495f90`](https://github.com/PrismJS/prism/commit/06495f90) ### Other -* Changelog: Fixed v1.20.0 release date [`cb6349e2`](https://github.com/PrismJS/prism/commit/cb6349e2) -* __Core__ - * Fixed greedy matching bug ([#2032](https://github.com/PrismJS/prism/issues/2032)) [`40285203`](https://github.com/PrismJS/prism/commit/40285203) - * Added JSDoc ([#1782](https://github.com/PrismJS/prism/issues/1782)) [`4ff555be`](https://github.com/PrismJS/prism/commit/4ff555be) -* __Infrastructure__ - * Update Git repo URL in package.json ([#2334](https://github.com/PrismJS/prism/issues/2334)) [`10f43275`](https://github.com/PrismJS/prism/commit/10f43275) - * Added docs to ignore files ([#2437](https://github.com/PrismJS/prism/issues/2437)) [`05c9f20b`](https://github.com/PrismJS/prism/commit/05c9f20b) - * Added `npm run build` command ([#2356](https://github.com/PrismJS/prism/issues/2356)) [`ff74a610`](https://github.com/PrismJS/prism/commit/ff74a610) - * gulp: Improved `inlineRegexSource` ([#2296](https://github.com/PrismJS/prism/issues/2296)) [`abb800dd`](https://github.com/PrismJS/prism/commit/abb800dd) - * gulp: Fixed language map ([#2283](https://github.com/PrismJS/prism/issues/2283)) [`11053193`](https://github.com/PrismJS/prism/commit/11053193) - * gulp: Removed `premerge` task ([#2357](https://github.com/PrismJS/prism/issues/2357)) [`5ff7932b`](https://github.com/PrismJS/prism/commit/5ff7932b) - * Tests are now faster ([#2165](https://github.com/PrismJS/prism/issues/2165)) [`e756be3f`](https://github.com/PrismJS/prism/commit/e756be3f) - * Tests: Added extra newlines in pretty token streams ([#2070](https://github.com/PrismJS/prism/issues/2070)) [`681adeef`](https://github.com/PrismJS/prism/commit/681adeef) - * Tests: Added test for identifier support across all languages ([#2371](https://github.com/PrismJS/prism/issues/2371)) [`48fac3b2`](https://github.com/PrismJS/prism/commit/48fac3b2) - * Tests: Added test to sort the language list ([#2222](https://github.com/PrismJS/prism/issues/2222)) [`a3758728`](https://github.com/PrismJS/prism/commit/a3758728) - * Tests: Always pretty-print token streams ([#2421](https://github.com/PrismJS/prism/issues/2421)) [`583e7eb5`](https://github.com/PrismJS/prism/commit/583e7eb5) - * Tests: Always use `components.json` ([#2370](https://github.com/PrismJS/prism/issues/2370)) [`e416341f`](https://github.com/PrismJS/prism/commit/e416341f) - * Tests: Better error messages for pattern tests ([#2364](https://github.com/PrismJS/prism/issues/2364)) [`10ca6433`](https://github.com/PrismJS/prism/commit/10ca6433) - * Tests: Included `console` in VM context ([#2353](https://github.com/PrismJS/prism/issues/2353)) [`b4ed5ded`](https://github.com/PrismJS/prism/commit/b4ed5ded) -* __Website__ - * Fixed typos "Prims" ([#2455](https://github.com/PrismJS/prism/issues/2455)) [`dfa5498a`](https://github.com/PrismJS/prism/commit/dfa5498a) - * New assets directory for all web-only files ([#2180](https://github.com/PrismJS/prism/issues/2180)) [`91fdd0b1`](https://github.com/PrismJS/prism/commit/91fdd0b1) - * Improvements ([#2053](https://github.com/PrismJS/prism/issues/2053)) [`ce0fa227`](https://github.com/PrismJS/prism/commit/ce0fa227) - * Fixed Treeview page ([#2484](https://github.com/PrismJS/prism/issues/2484)) [`a0efa40b`](https://github.com/PrismJS/prism/commit/a0efa40b) - * Line Numbers: Fixed class name on website [`453079bf`](https://github.com/PrismJS/prism/commit/453079bf) - * Line Numbers: Improved documentation ([#2456](https://github.com/PrismJS/prism/issues/2456)) [`447429f0`](https://github.com/PrismJS/prism/commit/447429f0) - * Line Numbers: Style inline code on website ([#2435](https://github.com/PrismJS/prism/issues/2435)) [`ad9c13e2`](https://github.com/PrismJS/prism/commit/ad9c13e2) - * Filter highlightAll: Fixed typo ([#2391](https://github.com/PrismJS/prism/issues/2391)) [`55bf7ec1`](https://github.com/PrismJS/prism/commit/55bf7ec1) +- Changelog: Fixed v1.20.0 release date [`cb6349e2`](https://github.com/PrismJS/prism/commit/cb6349e2) +- **Core** + - Fixed greedy matching bug ([#2032](https://github.com/PrismJS/prism/issues/2032)) [`40285203`](https://github.com/PrismJS/prism/commit/40285203) + - Added JSDoc ([#1782](https://github.com/PrismJS/prism/issues/1782)) [`4ff555be`](https://github.com/PrismJS/prism/commit/4ff555be) +- **Infrastructure** + - Update Git repo URL in package.json ([#2334](https://github.com/PrismJS/prism/issues/2334)) [`10f43275`](https://github.com/PrismJS/prism/commit/10f43275) + - Added docs to ignore files ([#2437](https://github.com/PrismJS/prism/issues/2437)) [`05c9f20b`](https://github.com/PrismJS/prism/commit/05c9f20b) + - Added `npm run build` command ([#2356](https://github.com/PrismJS/prism/issues/2356)) [`ff74a610`](https://github.com/PrismJS/prism/commit/ff74a610) + - gulp: Improved `inlineRegexSource` ([#2296](https://github.com/PrismJS/prism/issues/2296)) [`abb800dd`](https://github.com/PrismJS/prism/commit/abb800dd) + - gulp: Fixed language map ([#2283](https://github.com/PrismJS/prism/issues/2283)) [`11053193`](https://github.com/PrismJS/prism/commit/11053193) + - gulp: Removed `premerge` task ([#2357](https://github.com/PrismJS/prism/issues/2357)) [`5ff7932b`](https://github.com/PrismJS/prism/commit/5ff7932b) + - Tests are now faster ([#2165](https://github.com/PrismJS/prism/issues/2165)) [`e756be3f`](https://github.com/PrismJS/prism/commit/e756be3f) + - Tests: Added extra newlines in pretty token streams ([#2070](https://github.com/PrismJS/prism/issues/2070)) [`681adeef`](https://github.com/PrismJS/prism/commit/681adeef) + - Tests: Added test for identifier support across all languages ([#2371](https://github.com/PrismJS/prism/issues/2371)) [`48fac3b2`](https://github.com/PrismJS/prism/commit/48fac3b2) + - Tests: Added test to sort the language list ([#2222](https://github.com/PrismJS/prism/issues/2222)) [`a3758728`](https://github.com/PrismJS/prism/commit/a3758728) + - Tests: Always pretty-print token streams ([#2421](https://github.com/PrismJS/prism/issues/2421)) [`583e7eb5`](https://github.com/PrismJS/prism/commit/583e7eb5) + - Tests: Always use `components.json` ([#2370](https://github.com/PrismJS/prism/issues/2370)) [`e416341f`](https://github.com/PrismJS/prism/commit/e416341f) + - Tests: Better error messages for pattern tests ([#2364](https://github.com/PrismJS/prism/issues/2364)) [`10ca6433`](https://github.com/PrismJS/prism/commit/10ca6433) + - Tests: Included `console` in VM context ([#2353](https://github.com/PrismJS/prism/issues/2353)) [`b4ed5ded`](https://github.com/PrismJS/prism/commit/b4ed5ded) +- **Website** + - Fixed typos "Prims" ([#2455](https://github.com/PrismJS/prism/issues/2455)) [`dfa5498a`](https://github.com/PrismJS/prism/commit/dfa5498a) + - New assets directory for all web-only files ([#2180](https://github.com/PrismJS/prism/issues/2180)) [`91fdd0b1`](https://github.com/PrismJS/prism/commit/91fdd0b1) + - Improvements ([#2053](https://github.com/PrismJS/prism/issues/2053)) [`ce0fa227`](https://github.com/PrismJS/prism/commit/ce0fa227) + - Fixed Treeview page ([#2484](https://github.com/PrismJS/prism/issues/2484)) [`a0efa40b`](https://github.com/PrismJS/prism/commit/a0efa40b) + - Line Numbers: Fixed class name on website [`453079bf`](https://github.com/PrismJS/prism/commit/453079bf) + - Line Numbers: Improved documentation ([#2456](https://github.com/PrismJS/prism/issues/2456)) [`447429f0`](https://github.com/PrismJS/prism/commit/447429f0) + - Line Numbers: Style inline code on website ([#2435](https://github.com/PrismJS/prism/issues/2435)) [`ad9c13e2`](https://github.com/PrismJS/prism/commit/ad9c13e2) + - Filter highlightAll: Fixed typo ([#2391](https://github.com/PrismJS/prism/issues/2391)) [`55bf7ec1`](https://github.com/PrismJS/prism/commit/55bf7ec1) ## 1.20.0 (2020-04-04) ### New components -* __Concurnas__ ([#2206](https://github.com/PrismJS/prism/issues/2206)) [`b24f7348`](https://github.com/PrismJS/prism/commit/b24f7348) -* __DAX__ ([#2248](https://github.com/PrismJS/prism/issues/2248)) [`9227853f`](https://github.com/PrismJS/prism/commit/9227853f) -* __Excel Formula__ ([#2219](https://github.com/PrismJS/prism/issues/2219)) [`bf4f7bfa`](https://github.com/PrismJS/prism/commit/bf4f7bfa) -* __Factor__ ([#2203](https://github.com/PrismJS/prism/issues/2203)) [`f941102e`](https://github.com/PrismJS/prism/commit/f941102e) -* __LLVM IR__ ([#2221](https://github.com/PrismJS/prism/issues/2221)) [`43efde2e`](https://github.com/PrismJS/prism/commit/43efde2e) -* __PowerQuery__ ([#2250](https://github.com/PrismJS/prism/issues/2250)) [`8119e57b`](https://github.com/PrismJS/prism/commit/8119e57b) -* __Solution file__ ([#2213](https://github.com/PrismJS/prism/issues/2213)) [`15983d52`](https://github.com/PrismJS/prism/commit/15983d52) +- **Concurnas** ([#2206](https://github.com/PrismJS/prism/issues/2206)) [`b24f7348`](https://github.com/PrismJS/prism/commit/b24f7348) +- **DAX** ([#2248](https://github.com/PrismJS/prism/issues/2248)) [`9227853f`](https://github.com/PrismJS/prism/commit/9227853f) +- **Excel Formula** ([#2219](https://github.com/PrismJS/prism/issues/2219)) [`bf4f7bfa`](https://github.com/PrismJS/prism/commit/bf4f7bfa) +- **Factor** ([#2203](https://github.com/PrismJS/prism/issues/2203)) [`f941102e`](https://github.com/PrismJS/prism/commit/f941102e) +- **LLVM IR** ([#2221](https://github.com/PrismJS/prism/issues/2221)) [`43efde2e`](https://github.com/PrismJS/prism/commit/43efde2e) +- **PowerQuery** ([#2250](https://github.com/PrismJS/prism/issues/2250)) [`8119e57b`](https://github.com/PrismJS/prism/commit/8119e57b) +- **Solution file** ([#2213](https://github.com/PrismJS/prism/issues/2213)) [`15983d52`](https://github.com/PrismJS/prism/commit/15983d52) ### Updated components -* __Bash__ - * Added support for escaped quotes ([#2256](https://github.com/PrismJS/prism/issues/2256)) [`328d0e0e`](https://github.com/PrismJS/prism/commit/328d0e0e) -* __BBcode__ - * Added "shortcode" alias ([#2273](https://github.com/PrismJS/prism/issues/2273)) [`57eebced`](https://github.com/PrismJS/prism/commit/57eebced) -* __C/C++/OpenCL C__ - * Improvements ([#2196](https://github.com/PrismJS/prism/issues/2196)) [`674f4b35`](https://github.com/PrismJS/prism/commit/674f4b35) -* __C__ - * Improvemed `comment` pattern ([#2229](https://github.com/PrismJS/prism/issues/2229)) [`fa630726`](https://github.com/PrismJS/prism/commit/fa630726) -* __C#__ - * Fixed keywords in type lists blocking type names ([#2277](https://github.com/PrismJS/prism/issues/2277)) [`947a55bd`](https://github.com/PrismJS/prism/commit/947a55bd) - * C# improvements ([#1444](https://github.com/PrismJS/prism/issues/1444)) [`42b15463`](https://github.com/PrismJS/prism/commit/42b15463) -* __C++__ - * Added C++20 keywords ([#2236](https://github.com/PrismJS/prism/issues/2236)) [`462ad57e`](https://github.com/PrismJS/prism/commit/462ad57e) -* __CSS__ - * Fixed `url()` containing "@" ([#2272](https://github.com/PrismJS/prism/issues/2272)) [`504a63ba`](https://github.com/PrismJS/prism/commit/504a63ba) -* __CSS Extras__ - * Added support for the selector function ([#2201](https://github.com/PrismJS/prism/issues/2201)) [`2e0eff76`](https://github.com/PrismJS/prism/commit/2e0eff76) -* __Elixir__ - * Added support for attributes names ending with `?` ([#2182](https://github.com/PrismJS/prism/issues/2182)) [`5450e24c`](https://github.com/PrismJS/prism/commit/5450e24c) -* __Java__ - * Added `record` keyword ([#2185](https://github.com/PrismJS/prism/issues/2185)) [`47910b5c`](https://github.com/PrismJS/prism/commit/47910b5c) -* __Markdown__ - * Added support for nested lists ([#2228](https://github.com/PrismJS/prism/issues/2228)) [`73c8a376`](https://github.com/PrismJS/prism/commit/73c8a376) -* __OpenCL__ - * Require C ([#2231](https://github.com/PrismJS/prism/issues/2231)) [`26626ded`](https://github.com/PrismJS/prism/commit/26626ded) -* __PHPDoc__ - * Fixed exponential backtracking ([#2198](https://github.com/PrismJS/prism/issues/2198)) [`3b42536e`](https://github.com/PrismJS/prism/commit/3b42536e) -* __Ruby__ - * Fixed exponential backtracking ([#2225](https://github.com/PrismJS/prism/issues/2225)) [`c5de5aa8`](https://github.com/PrismJS/prism/commit/c5de5aa8) -* __SAS__ - * Fixed SAS' "peerDependencies" ([#2230](https://github.com/PrismJS/prism/issues/2230)) [`7d8ff7ea`](https://github.com/PrismJS/prism/commit/7d8ff7ea) -* __Shell session__ - * Improvements ([#2208](https://github.com/PrismJS/prism/issues/2208)) [`bd16bd57`](https://github.com/PrismJS/prism/commit/bd16bd57) -* __Visual Basic__ - * Added support for comments with line continuations ([#2195](https://github.com/PrismJS/prism/issues/2195)) [`a7d67ca3`](https://github.com/PrismJS/prism/commit/a7d67ca3) -* __YAML__ - * Improvements ([#2226](https://github.com/PrismJS/prism/issues/2226)) [`5362ba16`](https://github.com/PrismJS/prism/commit/5362ba16) - * Fixed highlighting of anchors and aliases ([#2217](https://github.com/PrismJS/prism/issues/2217)) [`6124c974`](https://github.com/PrismJS/prism/commit/6124c974) +- **Bash** + - Added support for escaped quotes ([#2256](https://github.com/PrismJS/prism/issues/2256)) [`328d0e0e`](https://github.com/PrismJS/prism/commit/328d0e0e) +- **BBcode** + - Added "shortcode" alias ([#2273](https://github.com/PrismJS/prism/issues/2273)) [`57eebced`](https://github.com/PrismJS/prism/commit/57eebced) +- **C/C++/OpenCL C** + - Improvements ([#2196](https://github.com/PrismJS/prism/issues/2196)) [`674f4b35`](https://github.com/PrismJS/prism/commit/674f4b35) +- **C** + - Improvemed `comment` pattern ([#2229](https://github.com/PrismJS/prism/issues/2229)) [`fa630726`](https://github.com/PrismJS/prism/commit/fa630726) +- **C#** + - Fixed keywords in type lists blocking type names ([#2277](https://github.com/PrismJS/prism/issues/2277)) [`947a55bd`](https://github.com/PrismJS/prism/commit/947a55bd) + - C# improvements ([#1444](https://github.com/PrismJS/prism/issues/1444)) [`42b15463`](https://github.com/PrismJS/prism/commit/42b15463) +- **C++** + - Added C++20 keywords ([#2236](https://github.com/PrismJS/prism/issues/2236)) [`462ad57e`](https://github.com/PrismJS/prism/commit/462ad57e) +- **CSS** + - Fixed `url()` containing "@" ([#2272](https://github.com/PrismJS/prism/issues/2272)) [`504a63ba`](https://github.com/PrismJS/prism/commit/504a63ba) +- **CSS Extras** + - Added support for the selector function ([#2201](https://github.com/PrismJS/prism/issues/2201)) [`2e0eff76`](https://github.com/PrismJS/prism/commit/2e0eff76) +- **Elixir** + - Added support for attributes names ending with `?` ([#2182](https://github.com/PrismJS/prism/issues/2182)) [`5450e24c`](https://github.com/PrismJS/prism/commit/5450e24c) +- **Java** + - Added `record` keyword ([#2185](https://github.com/PrismJS/prism/issues/2185)) [`47910b5c`](https://github.com/PrismJS/prism/commit/47910b5c) +- **Markdown** + - Added support for nested lists ([#2228](https://github.com/PrismJS/prism/issues/2228)) [`73c8a376`](https://github.com/PrismJS/prism/commit/73c8a376) +- **OpenCL** + - Require C ([#2231](https://github.com/PrismJS/prism/issues/2231)) [`26626ded`](https://github.com/PrismJS/prism/commit/26626ded) +- **PHPDoc** + - Fixed exponential backtracking ([#2198](https://github.com/PrismJS/prism/issues/2198)) [`3b42536e`](https://github.com/PrismJS/prism/commit/3b42536e) +- **Ruby** + - Fixed exponential backtracking ([#2225](https://github.com/PrismJS/prism/issues/2225)) [`c5de5aa8`](https://github.com/PrismJS/prism/commit/c5de5aa8) +- **SAS** + - Fixed SAS' "peerDependencies" ([#2230](https://github.com/PrismJS/prism/issues/2230)) [`7d8ff7ea`](https://github.com/PrismJS/prism/commit/7d8ff7ea) +- **Shell session** + - Improvements ([#2208](https://github.com/PrismJS/prism/issues/2208)) [`bd16bd57`](https://github.com/PrismJS/prism/commit/bd16bd57) +- **Visual Basic** + - Added support for comments with line continuations ([#2195](https://github.com/PrismJS/prism/issues/2195)) [`a7d67ca3`](https://github.com/PrismJS/prism/commit/a7d67ca3) +- **YAML** + - Improvements ([#2226](https://github.com/PrismJS/prism/issues/2226)) [`5362ba16`](https://github.com/PrismJS/prism/commit/5362ba16) + - Fixed highlighting of anchors and aliases ([#2217](https://github.com/PrismJS/prism/issues/2217)) [`6124c974`](https://github.com/PrismJS/prism/commit/6124c974) ### New plugins -* __Treeview__ ([#2265](https://github.com/PrismJS/prism/issues/2265)) [`be909b18`](https://github.com/PrismJS/prism/commit/be909b18) +- **Treeview** ([#2265](https://github.com/PrismJS/prism/issues/2265)) [`be909b18`](https://github.com/PrismJS/prism/commit/be909b18) ### Updated plugins -* __Inline Color__ - * Support for (semi-)transparent colors and minor improvements ([#2223](https://github.com/PrismJS/prism/issues/2223)) [`8d2c5a3e`](https://github.com/PrismJS/prism/commit/8d2c5a3e) -* __Keep Markup__ - * Remove self & document from IIFE arguments ([#2258](https://github.com/PrismJS/prism/issues/2258)) [`3c043338`](https://github.com/PrismJS/prism/commit/3c043338) -* __Toolbar__ - * `data-toolbar-order` is now inherited ([#2205](https://github.com/PrismJS/prism/issues/2205)) [`238f1163`](https://github.com/PrismJS/prism/commit/238f1163) +- **Inline Color** + - Support for (semi-)transparent colors and minor improvements ([#2223](https://github.com/PrismJS/prism/issues/2223)) [`8d2c5a3e`](https://github.com/PrismJS/prism/commit/8d2c5a3e) +- **Keep Markup** + - Remove self & document from IIFE arguments ([#2258](https://github.com/PrismJS/prism/issues/2258)) [`3c043338`](https://github.com/PrismJS/prism/commit/3c043338) +- **Toolbar** + - `data-toolbar-order` is now inherited ([#2205](https://github.com/PrismJS/prism/issues/2205)) [`238f1163`](https://github.com/PrismJS/prism/commit/238f1163) ### Other -* Updated all `String.propotype.replace` calls for literal strings [`5d7aab56`](https://github.com/PrismJS/prism/commit/5d7aab56) -* __Core__ - * Linked list implementation for `matchGrammar` ([#1909](https://github.com/PrismJS/prism/issues/1909)) [`2d4c94cd`](https://github.com/PrismJS/prism/commit/2d4c94cd) - * Faster `Token.stringify` ([#2171](https://github.com/PrismJS/prism/issues/2171)) [`f683972e`](https://github.com/PrismJS/prism/commit/f683972e) - * Fixed scope problem in script mode ([#2184](https://github.com/PrismJS/prism/issues/2184)) [`984e5d2e`](https://github.com/PrismJS/prism/commit/984e5d2e) -* __Infrastructure__ - * Travis: Updated NodeJS versions ([#2246](https://github.com/PrismJS/prism/issues/2246)) [`e635260b`](https://github.com/PrismJS/prism/commit/e635260b) - * gulp: Inline regex source improvement ([#2227](https://github.com/PrismJS/prism/issues/2227)) [`67afc5ad`](https://github.com/PrismJS/prism/commit/67afc5ad) - * Tests: Added new pattern check for octal escapes ([#2189](https://github.com/PrismJS/prism/issues/2189)) [`81e1c3dd`](https://github.com/PrismJS/prism/commit/81e1c3dd) - * Tests: Fixed optional dependencies in pattern tests ([#2242](https://github.com/PrismJS/prism/issues/2242)) [`1e3070a2`](https://github.com/PrismJS/prism/commit/1e3070a2) - * Tests: Added test for zero-width lookbehinds ([#2220](https://github.com/PrismJS/prism/issues/2220)) [`7d03ece4`](https://github.com/PrismJS/prism/commit/7d03ece4) - * Added tests for examples ([#2216](https://github.com/PrismJS/prism/issues/2216)) [`1f7a245c`](https://github.com/PrismJS/prism/commit/1f7a245c) -* __Website__ - * Removed invalid strings from C# example ([#2266](https://github.com/PrismJS/prism/issues/2266)) [`c917a8ca`](https://github.com/PrismJS/prism/commit/c917a8ca) - * Fixed Diff highlight plugin page title ([#2233](https://github.com/PrismJS/prism/issues/2233)) [`a82770f8`](https://github.com/PrismJS/prism/commit/a82770f8) - * Added link to `prism-liquibase` Bash language extension. ([#2191](https://github.com/PrismJS/prism/issues/2191)) [`0bf73dc7`](https://github.com/PrismJS/prism/commit/0bf73dc7) - * Examples: Updated content header ([#2232](https://github.com/PrismJS/prism/issues/2232)) [`6232878b`](https://github.com/PrismJS/prism/commit/6232878b) - * Website: Added Coy bug to the known failures page. ([#2170](https://github.com/PrismJS/prism/issues/2170)) [`e9dab85e`](https://github.com/PrismJS/prism/commit/e9dab85e) +- Updated all `String.propotype.replace` calls for literal strings [`5d7aab56`](https://github.com/PrismJS/prism/commit/5d7aab56) +- **Core** + - Linked list implementation for `matchGrammar` ([#1909](https://github.com/PrismJS/prism/issues/1909)) [`2d4c94cd`](https://github.com/PrismJS/prism/commit/2d4c94cd) + - Faster `Token.stringify` ([#2171](https://github.com/PrismJS/prism/issues/2171)) [`f683972e`](https://github.com/PrismJS/prism/commit/f683972e) + - Fixed scope problem in script mode ([#2184](https://github.com/PrismJS/prism/issues/2184)) [`984e5d2e`](https://github.com/PrismJS/prism/commit/984e5d2e) +- **Infrastructure** + - Travis: Updated NodeJS versions ([#2246](https://github.com/PrismJS/prism/issues/2246)) [`e635260b`](https://github.com/PrismJS/prism/commit/e635260b) + - gulp: Inline regex source improvement ([#2227](https://github.com/PrismJS/prism/issues/2227)) [`67afc5ad`](https://github.com/PrismJS/prism/commit/67afc5ad) + - Tests: Added new pattern check for octal escapes ([#2189](https://github.com/PrismJS/prism/issues/2189)) [`81e1c3dd`](https://github.com/PrismJS/prism/commit/81e1c3dd) + - Tests: Fixed optional dependencies in pattern tests ([#2242](https://github.com/PrismJS/prism/issues/2242)) [`1e3070a2`](https://github.com/PrismJS/prism/commit/1e3070a2) + - Tests: Added test for zero-width lookbehinds ([#2220](https://github.com/PrismJS/prism/issues/2220)) [`7d03ece4`](https://github.com/PrismJS/prism/commit/7d03ece4) + - Added tests for examples ([#2216](https://github.com/PrismJS/prism/issues/2216)) [`1f7a245c`](https://github.com/PrismJS/prism/commit/1f7a245c) +- **Website** + - Removed invalid strings from C# example ([#2266](https://github.com/PrismJS/prism/issues/2266)) [`c917a8ca`](https://github.com/PrismJS/prism/commit/c917a8ca) + - Fixed Diff highlight plugin page title ([#2233](https://github.com/PrismJS/prism/issues/2233)) [`a82770f8`](https://github.com/PrismJS/prism/commit/a82770f8) + - Added link to `prism-liquibase` Bash language extension. ([#2191](https://github.com/PrismJS/prism/issues/2191)) [`0bf73dc7`](https://github.com/PrismJS/prism/commit/0bf73dc7) + - Examples: Updated content header ([#2232](https://github.com/PrismJS/prism/issues/2232)) [`6232878b`](https://github.com/PrismJS/prism/commit/6232878b) + - Website: Added Coy bug to the known failures page. ([#2170](https://github.com/PrismJS/prism/issues/2170)) [`e9dab85e`](https://github.com/PrismJS/prism/commit/e9dab85e) ## 1.19.0 (2020-01-13) ### New components -* __Latte__ ([#2140](https://github.com/PrismJS/prism/issues/2140)) [`694a81b8`](https://github.com/PrismJS/prism/commit/694a81b8) -* __Neon__ ([#2140](https://github.com/PrismJS/prism/issues/2140)) [`694a81b8`](https://github.com/PrismJS/prism/commit/694a81b8) -* __QML__ ([#2139](https://github.com/PrismJS/prism/issues/2139)) [`c40d96c6`](https://github.com/PrismJS/prism/commit/c40d96c6) +- **Latte** ([#2140](https://github.com/PrismJS/prism/issues/2140)) [`694a81b8`](https://github.com/PrismJS/prism/commit/694a81b8) +- **Neon** ([#2140](https://github.com/PrismJS/prism/issues/2140)) [`694a81b8`](https://github.com/PrismJS/prism/commit/694a81b8) +- **QML** ([#2139](https://github.com/PrismJS/prism/issues/2139)) [`c40d96c6`](https://github.com/PrismJS/prism/commit/c40d96c6) ### Updated components -* __Handlebars__ - * Added support for `:` and improved the `variable` pattern ([#2172](https://github.com/PrismJS/prism/issues/2172)) [`ef4d29d9`](https://github.com/PrismJS/prism/commit/ef4d29d9) -* __JavaScript__ - * Added support for keywords after a spread operator ([#2148](https://github.com/PrismJS/prism/issues/2148)) [`1f3f8929`](https://github.com/PrismJS/prism/commit/1f3f8929) - * Better regex detection ([#2158](https://github.com/PrismJS/prism/issues/2158)) [`a23d8f84`](https://github.com/PrismJS/prism/commit/a23d8f84) -* __Markdown__ - * Better language detection for code blocks ([#2114](https://github.com/PrismJS/prism/issues/2114)) [`d7ad48f9`](https://github.com/PrismJS/prism/commit/d7ad48f9) -* __OCaml__ - * Improvements ([#2179](https://github.com/PrismJS/prism/issues/2179)) [`2a570fd4`](https://github.com/PrismJS/prism/commit/2a570fd4) -* __PHP__ - * Fixed exponential runtime of a pattern ([#2157](https://github.com/PrismJS/prism/issues/2157)) [`24c8f833`](https://github.com/PrismJS/prism/commit/24c8f833) -* __React JSX__ - * Improved spread operator in tag attributes ([#2159](https://github.com/PrismJS/prism/issues/2159)) [`fd857e7b`](https://github.com/PrismJS/prism/commit/fd857e7b) - * Made `$` a valid character for attribute names ([#2144](https://github.com/PrismJS/prism/issues/2144)) [`f018cf04`](https://github.com/PrismJS/prism/commit/f018cf04) -* __Reason__ - * Added support for single line comments ([#2150](https://github.com/PrismJS/prism/issues/2150)) [`7f1c55b7`](https://github.com/PrismJS/prism/commit/7f1c55b7) -* __Ruby__ - * Override 'class-name' definition ([#2135](https://github.com/PrismJS/prism/issues/2135)) [`401d4b02`](https://github.com/PrismJS/prism/commit/401d4b02) -* __SAS__ - * Added CASL support ([#2112](https://github.com/PrismJS/prism/issues/2112)) [`99d979a0`](https://github.com/PrismJS/prism/commit/99d979a0) +- **Handlebars** + - Added support for `:` and improved the `variable` pattern ([#2172](https://github.com/PrismJS/prism/issues/2172)) [`ef4d29d9`](https://github.com/PrismJS/prism/commit/ef4d29d9) +- **JavaScript** + - Added support for keywords after a spread operator ([#2148](https://github.com/PrismJS/prism/issues/2148)) [`1f3f8929`](https://github.com/PrismJS/prism/commit/1f3f8929) + - Better regex detection ([#2158](https://github.com/PrismJS/prism/issues/2158)) [`a23d8f84`](https://github.com/PrismJS/prism/commit/a23d8f84) +- **Markdown** + - Better language detection for code blocks ([#2114](https://github.com/PrismJS/prism/issues/2114)) [`d7ad48f9`](https://github.com/PrismJS/prism/commit/d7ad48f9) +- **OCaml** + - Improvements ([#2179](https://github.com/PrismJS/prism/issues/2179)) [`2a570fd4`](https://github.com/PrismJS/prism/commit/2a570fd4) +- **PHP** + - Fixed exponential runtime of a pattern ([#2157](https://github.com/PrismJS/prism/issues/2157)) [`24c8f833`](https://github.com/PrismJS/prism/commit/24c8f833) +- **React JSX** + - Improved spread operator in tag attributes ([#2159](https://github.com/PrismJS/prism/issues/2159)) [`fd857e7b`](https://github.com/PrismJS/prism/commit/fd857e7b) + - Made `$` a valid character for attribute names ([#2144](https://github.com/PrismJS/prism/issues/2144)) [`f018cf04`](https://github.com/PrismJS/prism/commit/f018cf04) +- **Reason** + - Added support for single line comments ([#2150](https://github.com/PrismJS/prism/issues/2150)) [`7f1c55b7`](https://github.com/PrismJS/prism/commit/7f1c55b7) +- **Ruby** + - Override 'class-name' definition ([#2135](https://github.com/PrismJS/prism/issues/2135)) [`401d4b02`](https://github.com/PrismJS/prism/commit/401d4b02) +- **SAS** + - Added CASL support ([#2112](https://github.com/PrismJS/prism/issues/2112)) [`99d979a0`](https://github.com/PrismJS/prism/commit/99d979a0) ### Updated plugins -* __Custom Class__ - * Fixed TypeError when mapper is undefined ([#2167](https://github.com/PrismJS/prism/issues/2167)) [`543f04d7`](https://github.com/PrismJS/prism/commit/543f04d7) +- **Custom Class** + - Fixed TypeError when mapper is undefined ([#2167](https://github.com/PrismJS/prism/issues/2167)) [`543f04d7`](https://github.com/PrismJS/prism/commit/543f04d7) ### Updated themes -* Added missing `.token` selector ([#2161](https://github.com/PrismJS/prism/issues/2161)) [`86780457`](https://github.com/PrismJS/prism/commit/86780457) +- Added missing `.token` selector ([#2161](https://github.com/PrismJS/prism/issues/2161)) [`86780457`](https://github.com/PrismJS/prism/commit/86780457) ### Other -* Added a check for redundant dependency declarations ([#2142](https://github.com/PrismJS/prism/issues/2142)) [`a06aca06`](https://github.com/PrismJS/prism/commit/a06aca06) -* Added a check for examples ([#2128](https://github.com/PrismJS/prism/issues/2128)) [`0b539136`](https://github.com/PrismJS/prism/commit/0b539136) -* Added silent option to `loadLanguages` ([#2147](https://github.com/PrismJS/prism/issues/2147)) [`191b4116`](https://github.com/PrismJS/prism/commit/191b4116) -* __Infrastructure__ - * Dependencies: Improved `getLoader` ([#2151](https://github.com/PrismJS/prism/issues/2151)) [`199bdcae`](https://github.com/PrismJS/prism/commit/199bdcae) - * Updated gulp to v4.0.2 ([#2178](https://github.com/PrismJS/prism/issues/2178)) [`e5678a00`](https://github.com/PrismJS/prism/commit/e5678a00) -* __Website__ - * Custom Class: Fixed examples ([#2160](https://github.com/PrismJS/prism/issues/2160)) [`0c2fe405`](https://github.com/PrismJS/prism/commit/0c2fe405) - * Added documentation for new dependency API ([#2141](https://github.com/PrismJS/prism/issues/2141)) [`59068d67`](https://github.com/PrismJS/prism/commit/59068d67) +- Added a check for redundant dependency declarations ([#2142](https://github.com/PrismJS/prism/issues/2142)) [`a06aca06`](https://github.com/PrismJS/prism/commit/a06aca06) +- Added a check for examples ([#2128](https://github.com/PrismJS/prism/issues/2128)) [`0b539136`](https://github.com/PrismJS/prism/commit/0b539136) +- Added silent option to `loadLanguages` ([#2147](https://github.com/PrismJS/prism/issues/2147)) [`191b4116`](https://github.com/PrismJS/prism/commit/191b4116) +- **Infrastructure** + - Dependencies: Improved `getLoader` ([#2151](https://github.com/PrismJS/prism/issues/2151)) [`199bdcae`](https://github.com/PrismJS/prism/commit/199bdcae) + - Updated gulp to v4.0.2 ([#2178](https://github.com/PrismJS/prism/issues/2178)) [`e5678a00`](https://github.com/PrismJS/prism/commit/e5678a00) +- **Website** + - Custom Class: Fixed examples ([#2160](https://github.com/PrismJS/prism/issues/2160)) [`0c2fe405`](https://github.com/PrismJS/prism/commit/0c2fe405) + - Added documentation for new dependency API ([#2141](https://github.com/PrismJS/prism/issues/2141)) [`59068d67`](https://github.com/PrismJS/prism/commit/59068d67) ## 1.18.0 (2020-01-04) ### New components -* __ANTLR4__ ([#2063](https://github.com/PrismJS/prism/issues/2063)) [`aaaa29a8`](https://github.com/PrismJS/prism/commit/aaaa29a8) -* __AQL__ ([#2025](https://github.com/PrismJS/prism/issues/2025)) [`3fdb7d55`](https://github.com/PrismJS/prism/commit/3fdb7d55) -* __BBcode__ ([#2095](https://github.com/PrismJS/prism/issues/2095)) [`aaf13aa6`](https://github.com/PrismJS/prism/commit/aaf13aa6) -* __BrightScript__ ([#2096](https://github.com/PrismJS/prism/issues/2096)) [`631f1e34`](https://github.com/PrismJS/prism/commit/631f1e34) -* __Embedded Lua templating__ ([#2050](https://github.com/PrismJS/prism/issues/2050)) [`0b771c90`](https://github.com/PrismJS/prism/commit/0b771c90) -* __Firestore security rules__ ([#2010](https://github.com/PrismJS/prism/issues/2010)) [`9f722586`](https://github.com/PrismJS/prism/commit/9f722586) -* __FreeMarker Template Language__ ([#2080](https://github.com/PrismJS/prism/issues/2080)) [`2f3da7e8`](https://github.com/PrismJS/prism/commit/2f3da7e8) -* __GDScript__ ([#2006](https://github.com/PrismJS/prism/issues/2006)) [`e2b99f40`](https://github.com/PrismJS/prism/commit/e2b99f40) -* __MoonScript__ ([#2100](https://github.com/PrismJS/prism/issues/2100)) [`f31946b3`](https://github.com/PrismJS/prism/commit/f31946b3) -* __Robot Framework__ (only the plain text format) ([#2034](https://github.com/PrismJS/prism/issues/2034)) [`f7eaa618`](https://github.com/PrismJS/prism/commit/f7eaa618) -* __Solidity (Ethereum)__ ([#2031](https://github.com/PrismJS/prism/issues/2031)) [`cc2cf3f7`](https://github.com/PrismJS/prism/commit/cc2cf3f7) -* __SPARQL__ ([#2033](https://github.com/PrismJS/prism/issues/2033)) [`c42f877d`](https://github.com/PrismJS/prism/commit/c42f877d) -* __SQF: Status Quo Function (Arma 3)__ ([#2079](https://github.com/PrismJS/prism/issues/2079)) [`cfac94ec`](https://github.com/PrismJS/prism/commit/cfac94ec) -* __Turtle__ & __TriG__ ([#2012](https://github.com/PrismJS/prism/issues/2012)) [`508d57ac`](https://github.com/PrismJS/prism/commit/508d57ac) -* __Zig__ ([#2019](https://github.com/PrismJS/prism/issues/2019)) [`a7cf56b7`](https://github.com/PrismJS/prism/commit/a7cf56b7) +- **ANTLR4** ([#2063](https://github.com/PrismJS/prism/issues/2063)) [`aaaa29a8`](https://github.com/PrismJS/prism/commit/aaaa29a8) +- **AQL** ([#2025](https://github.com/PrismJS/prism/issues/2025)) [`3fdb7d55`](https://github.com/PrismJS/prism/commit/3fdb7d55) +- **BBcode** ([#2095](https://github.com/PrismJS/prism/issues/2095)) [`aaf13aa6`](https://github.com/PrismJS/prism/commit/aaf13aa6) +- **BrightScript** ([#2096](https://github.com/PrismJS/prism/issues/2096)) [`631f1e34`](https://github.com/PrismJS/prism/commit/631f1e34) +- **Embedded Lua templating** ([#2050](https://github.com/PrismJS/prism/issues/2050)) [`0b771c90`](https://github.com/PrismJS/prism/commit/0b771c90) +- **Firestore security rules** ([#2010](https://github.com/PrismJS/prism/issues/2010)) [`9f722586`](https://github.com/PrismJS/prism/commit/9f722586) +- **FreeMarker Template Language** ([#2080](https://github.com/PrismJS/prism/issues/2080)) [`2f3da7e8`](https://github.com/PrismJS/prism/commit/2f3da7e8) +- **GDScript** ([#2006](https://github.com/PrismJS/prism/issues/2006)) [`e2b99f40`](https://github.com/PrismJS/prism/commit/e2b99f40) +- **MoonScript** ([#2100](https://github.com/PrismJS/prism/issues/2100)) [`f31946b3`](https://github.com/PrismJS/prism/commit/f31946b3) +- **Robot Framework** (only the plain text format) ([#2034](https://github.com/PrismJS/prism/issues/2034)) [`f7eaa618`](https://github.com/PrismJS/prism/commit/f7eaa618) +- **Solidity (Ethereum)** ([#2031](https://github.com/PrismJS/prism/issues/2031)) [`cc2cf3f7`](https://github.com/PrismJS/prism/commit/cc2cf3f7) +- **SPARQL** ([#2033](https://github.com/PrismJS/prism/issues/2033)) [`c42f877d`](https://github.com/PrismJS/prism/commit/c42f877d) +- **SQF: Status Quo Function (Arma 3)** ([#2079](https://github.com/PrismJS/prism/issues/2079)) [`cfac94ec`](https://github.com/PrismJS/prism/commit/cfac94ec) +- **Turtle** & **TriG** ([#2012](https://github.com/PrismJS/prism/issues/2012)) [`508d57ac`](https://github.com/PrismJS/prism/commit/508d57ac) +- **Zig** ([#2019](https://github.com/PrismJS/prism/issues/2019)) [`a7cf56b7`](https://github.com/PrismJS/prism/commit/a7cf56b7) ### Updated components -* Minor improvements for C-like and Clojure ([#2064](https://github.com/PrismJS/prism/issues/2064)) [`7db0cab3`](https://github.com/PrismJS/prism/commit/7db0cab3) -* Inlined some unnecessary rest properties ([#2082](https://github.com/PrismJS/prism/issues/2082)) [`ad3fa443`](https://github.com/PrismJS/prism/commit/ad3fa443) -* __AQL__ - * Disallow unclosed multiline comments again ([#2089](https://github.com/PrismJS/prism/issues/2089)) [`717ace02`](https://github.com/PrismJS/prism/commit/717ace02) - * Allow unclosed multi-line comments ([#2058](https://github.com/PrismJS/prism/issues/2058)) [`f3c6ba59`](https://github.com/PrismJS/prism/commit/f3c6ba59) - * More pseudo keywords ([#2055](https://github.com/PrismJS/prism/issues/2055)) [`899574eb`](https://github.com/PrismJS/prism/commit/899574eb) - * Added missing keyword + minor improvements ([#2047](https://github.com/PrismJS/prism/issues/2047)) [`32a4c422`](https://github.com/PrismJS/prism/commit/32a4c422) -* __Clojure__ - * Added multiline strings (lisp style) ([#2061](https://github.com/PrismJS/prism/issues/2061)) [`8ea685b8`](https://github.com/PrismJS/prism/commit/8ea685b8) -* __CSS Extras__ - * CSS Extras & PHP: Fixed too greedy number token ([#2009](https://github.com/PrismJS/prism/issues/2009)) [`ebe363f4`](https://github.com/PrismJS/prism/commit/ebe363f4) -* __D__ - * Fixed strings ([#2029](https://github.com/PrismJS/prism/issues/2029)) [`010a0157`](https://github.com/PrismJS/prism/commit/010a0157) -* __Groovy__ - * Minor improvements ([#2036](https://github.com/PrismJS/prism/issues/2036)) [`fb618331`](https://github.com/PrismJS/prism/commit/fb618331) -* __Java__ - * Added missing `::` operator ([#2101](https://github.com/PrismJS/prism/issues/2101)) [`ee7fdbee`](https://github.com/PrismJS/prism/commit/ee7fdbee) - * Added support for new Java 13 syntax ([#2060](https://github.com/PrismJS/prism/issues/2060)) [`a7b95dd3`](https://github.com/PrismJS/prism/commit/a7b95dd3) -* __JavaScript__ - * Added Optional Chaining and Nullish Coalescing ([#2084](https://github.com/PrismJS/prism/issues/2084)) [`fdb7de0d`](https://github.com/PrismJS/prism/commit/fdb7de0d) - * Tokenize `:` as an operator ([#2073](https://github.com/PrismJS/prism/issues/2073)) [`0e5c48d1`](https://github.com/PrismJS/prism/commit/0e5c48d1) -* __Less__ - * Fixed exponential backtracking ([#2016](https://github.com/PrismJS/prism/issues/2016)) [`d03d19b4`](https://github.com/PrismJS/prism/commit/d03d19b4) -* __Markup__ - * Improved doctype pattern ([#2094](https://github.com/PrismJS/prism/issues/2094)) [`99994c58`](https://github.com/PrismJS/prism/commit/99994c58) -* __Python__ - * Fixed decorators ([#2018](https://github.com/PrismJS/prism/issues/2018)) [`5b8a16d9`](https://github.com/PrismJS/prism/commit/5b8a16d9) -* __Robot Framework__ - * Rename "robot-framework" to "robotframework" ([#2113](https://github.com/PrismJS/prism/issues/2113)) [`baa78774`](https://github.com/PrismJS/prism/commit/baa78774) -* __Ruby__ - * Made `true` and `false` booleans ([#2098](https://github.com/PrismJS/prism/issues/2098)) [`68d1c472`](https://github.com/PrismJS/prism/commit/68d1c472) - * Added missing keywords ([#2097](https://github.com/PrismJS/prism/issues/2097)) [`f460eafc`](https://github.com/PrismJS/prism/commit/f460eafc) -* __SAS__ - * Added support for embedded Groovy and Lua code ([#2091](https://github.com/PrismJS/prism/issues/2091)) [`3640b3f2`](https://github.com/PrismJS/prism/commit/3640b3f2) - * Minor improvements ([#2085](https://github.com/PrismJS/prism/issues/2085)) [`07020c7a`](https://github.com/PrismJS/prism/commit/07020c7a) - * Fixed `proc-args` token by removing backreferences from string pattern ([#2013](https://github.com/PrismJS/prism/issues/2013)) [`af5a36ae`](https://github.com/PrismJS/prism/commit/af5a36ae) - * Major improvements ([#1981](https://github.com/PrismJS/prism/issues/1981)) [`076f6155`](https://github.com/PrismJS/prism/commit/076f6155) -* __Smalltalk__ - * Fixed single quote character literal ([#2041](https://github.com/PrismJS/prism/issues/2041)) [`1aabcd17`](https://github.com/PrismJS/prism/commit/1aabcd17) -* __Turtle__ - * Minor improvements ([#2038](https://github.com/PrismJS/prism/issues/2038)) [`8ccd258b`](https://github.com/PrismJS/prism/commit/8ccd258b) -* __TypeScript__ - * Added missing keyword `undefined` ([#2088](https://github.com/PrismJS/prism/issues/2088)) [`c8b48b9f`](https://github.com/PrismJS/prism/commit/c8b48b9f) +- Minor improvements for C-like and Clojure ([#2064](https://github.com/PrismJS/prism/issues/2064)) [`7db0cab3`](https://github.com/PrismJS/prism/commit/7db0cab3) +- Inlined some unnecessary rest properties ([#2082](https://github.com/PrismJS/prism/issues/2082)) [`ad3fa443`](https://github.com/PrismJS/prism/commit/ad3fa443) +- **AQL** + - Disallow unclosed multiline comments again ([#2089](https://github.com/PrismJS/prism/issues/2089)) [`717ace02`](https://github.com/PrismJS/prism/commit/717ace02) + - Allow unclosed multi-line comments ([#2058](https://github.com/PrismJS/prism/issues/2058)) [`f3c6ba59`](https://github.com/PrismJS/prism/commit/f3c6ba59) + - More pseudo keywords ([#2055](https://github.com/PrismJS/prism/issues/2055)) [`899574eb`](https://github.com/PrismJS/prism/commit/899574eb) + - Added missing keyword + minor improvements ([#2047](https://github.com/PrismJS/prism/issues/2047)) [`32a4c422`](https://github.com/PrismJS/prism/commit/32a4c422) +- **Clojure** + - Added multiline strings (lisp style) ([#2061](https://github.com/PrismJS/prism/issues/2061)) [`8ea685b8`](https://github.com/PrismJS/prism/commit/8ea685b8) +- **CSS Extras** + - CSS Extras & PHP: Fixed too greedy number token ([#2009](https://github.com/PrismJS/prism/issues/2009)) [`ebe363f4`](https://github.com/PrismJS/prism/commit/ebe363f4) +- **D** + - Fixed strings ([#2029](https://github.com/PrismJS/prism/issues/2029)) [`010a0157`](https://github.com/PrismJS/prism/commit/010a0157) +- **Groovy** + - Minor improvements ([#2036](https://github.com/PrismJS/prism/issues/2036)) [`fb618331`](https://github.com/PrismJS/prism/commit/fb618331) +- **Java** + - Added missing `::` operator ([#2101](https://github.com/PrismJS/prism/issues/2101)) [`ee7fdbee`](https://github.com/PrismJS/prism/commit/ee7fdbee) + - Added support for new Java 13 syntax ([#2060](https://github.com/PrismJS/prism/issues/2060)) [`a7b95dd3`](https://github.com/PrismJS/prism/commit/a7b95dd3) +- **JavaScript** + - Added Optional Chaining and Nullish Coalescing ([#2084](https://github.com/PrismJS/prism/issues/2084)) [`fdb7de0d`](https://github.com/PrismJS/prism/commit/fdb7de0d) + - Tokenize `:` as an operator ([#2073](https://github.com/PrismJS/prism/issues/2073)) [`0e5c48d1`](https://github.com/PrismJS/prism/commit/0e5c48d1) +- **Less** + - Fixed exponential backtracking ([#2016](https://github.com/PrismJS/prism/issues/2016)) [`d03d19b4`](https://github.com/PrismJS/prism/commit/d03d19b4) +- **Markup** + - Improved doctype pattern ([#2094](https://github.com/PrismJS/prism/issues/2094)) [`99994c58`](https://github.com/PrismJS/prism/commit/99994c58) +- **Python** + - Fixed decorators ([#2018](https://github.com/PrismJS/prism/issues/2018)) [`5b8a16d9`](https://github.com/PrismJS/prism/commit/5b8a16d9) +- **Robot Framework** + - Rename "robot-framework" to "robotframework" ([#2113](https://github.com/PrismJS/prism/issues/2113)) [`baa78774`](https://github.com/PrismJS/prism/commit/baa78774) +- **Ruby** + - Made `true` and `false` booleans ([#2098](https://github.com/PrismJS/prism/issues/2098)) [`68d1c472`](https://github.com/PrismJS/prism/commit/68d1c472) + - Added missing keywords ([#2097](https://github.com/PrismJS/prism/issues/2097)) [`f460eafc`](https://github.com/PrismJS/prism/commit/f460eafc) +- **SAS** + - Added support for embedded Groovy and Lua code ([#2091](https://github.com/PrismJS/prism/issues/2091)) [`3640b3f2`](https://github.com/PrismJS/prism/commit/3640b3f2) + - Minor improvements ([#2085](https://github.com/PrismJS/prism/issues/2085)) [`07020c7a`](https://github.com/PrismJS/prism/commit/07020c7a) + - Fixed `proc-args` token by removing backreferences from string pattern ([#2013](https://github.com/PrismJS/prism/issues/2013)) [`af5a36ae`](https://github.com/PrismJS/prism/commit/af5a36ae) + - Major improvements ([#1981](https://github.com/PrismJS/prism/issues/1981)) [`076f6155`](https://github.com/PrismJS/prism/commit/076f6155) +- **Smalltalk** + - Fixed single quote character literal ([#2041](https://github.com/PrismJS/prism/issues/2041)) [`1aabcd17`](https://github.com/PrismJS/prism/commit/1aabcd17) +- **Turtle** + - Minor improvements ([#2038](https://github.com/PrismJS/prism/issues/2038)) [`8ccd258b`](https://github.com/PrismJS/prism/commit/8ccd258b) +- **TypeScript** + - Added missing keyword `undefined` ([#2088](https://github.com/PrismJS/prism/issues/2088)) [`c8b48b9f`](https://github.com/PrismJS/prism/commit/c8b48b9f) ### Updated plugins -* New Match Braces plugin ([#1944](https://github.com/PrismJS/prism/issues/1944)) [`365faade`](https://github.com/PrismJS/prism/commit/365faade) -* New Inline color plugin ([#2007](https://github.com/PrismJS/prism/issues/2007)) [`8403e453`](https://github.com/PrismJS/prism/commit/8403e453) -* New Filter highlightAll plugin ([#2074](https://github.com/PrismJS/prism/issues/2074)) [`a7f70090`](https://github.com/PrismJS/prism/commit/a7f70090) -* __Custom Class__ - * New class adder feature ([#2075](https://github.com/PrismJS/prism/issues/2075)) [`dab7998e`](https://github.com/PrismJS/prism/commit/dab7998e) -* __File Highlight__ - * Made the download button its own plugin ([#1840](https://github.com/PrismJS/prism/issues/1840)) [`c6c62a69`](https://github.com/PrismJS/prism/commit/c6c62a69) +- New Match Braces plugin ([#1944](https://github.com/PrismJS/prism/issues/1944)) [`365faade`](https://github.com/PrismJS/prism/commit/365faade) +- New Inline color plugin ([#2007](https://github.com/PrismJS/prism/issues/2007)) [`8403e453`](https://github.com/PrismJS/prism/commit/8403e453) +- New Filter highlightAll plugin ([#2074](https://github.com/PrismJS/prism/issues/2074)) [`a7f70090`](https://github.com/PrismJS/prism/commit/a7f70090) +- **Custom Class** + - New class adder feature ([#2075](https://github.com/PrismJS/prism/issues/2075)) [`dab7998e`](https://github.com/PrismJS/prism/commit/dab7998e) +- **File Highlight** + - Made the download button its own plugin ([#1840](https://github.com/PrismJS/prism/issues/1840)) [`c6c62a69`](https://github.com/PrismJS/prism/commit/c6c62a69) ### Other -* Issue template improvements ([#2069](https://github.com/PrismJS/prism/issues/2069)) [`53f07b1b`](https://github.com/PrismJS/prism/commit/53f07b1b) -* Readme: Links now use HTTPS if available ([#2045](https://github.com/PrismJS/prism/issues/2045)) [`6cd0738a`](https://github.com/PrismJS/prism/commit/6cd0738a) -* __Core__ - * Fixed null reference ([#2106](https://github.com/PrismJS/prism/issues/2106)) [`0fd062d5`](https://github.com/PrismJS/prism/commit/0fd062d5) - * Fixed race condition caused by deferring the script ([#2103](https://github.com/PrismJS/prism/issues/2103)) [`a3785ec9`](https://github.com/PrismJS/prism/commit/a3785ec9) - * Minor improvements ([#1973](https://github.com/PrismJS/prism/issues/1973)) [`2d858e0a`](https://github.com/PrismJS/prism/commit/2d858e0a) - * Fixed greedy partial lookbehinds not working ([#2030](https://github.com/PrismJS/prism/issues/2030)) [`174ed103`](https://github.com/PrismJS/prism/commit/174ed103) - * Fixed greedy targeting bug ([#1932](https://github.com/PrismJS/prism/issues/1932)) [`e864d518`](https://github.com/PrismJS/prism/commit/e864d518) - * Doubly check the `manual` flag ([#1957](https://github.com/PrismJS/prism/issues/1957)) [`d49f0f26`](https://github.com/PrismJS/prism/commit/d49f0f26) - * IE11 workaround for `currentScript` ([#2104](https://github.com/PrismJS/prism/issues/2104)) [`2108c60f`](https://github.com/PrismJS/prism/commit/2108c60f) -* __Infrastructure__ - * gulp: Fixed changes task [`2f495905`](https://github.com/PrismJS/prism/commit/2f495905) - * npm: Added `.github` folder to npm ignore ([#2052](https://github.com/PrismJS/prism/issues/2052)) [`1af89e06`](https://github.com/PrismJS/prism/commit/1af89e06) - * npm: Updated dependencies to fix 122 vulnerabilities ([#1997](https://github.com/PrismJS/prism/issues/1997)) [`3af5d744`](https://github.com/PrismJS/prism/commit/3af5d744) - * Tests: New test for unused capturing groups ([#1996](https://github.com/PrismJS/prism/issues/1996)) [`c187e229`](https://github.com/PrismJS/prism/commit/c187e229) - * Tests: Simplified error message format ([#2056](https://github.com/PrismJS/prism/issues/2056)) [`007c9af4`](https://github.com/PrismJS/prism/commit/007c9af4) - * Tests: New test for nice names ([#1911](https://github.com/PrismJS/prism/issues/1911)) [`3fda5c95`](https://github.com/PrismJS/prism/commit/3fda5c95) - * Standardized dependency logic implementation ([#1998](https://github.com/PrismJS/prism/issues/1998)) [`7a4a0c7c`](https://github.com/PrismJS/prism/commit/7a4a0c7c) -* __Website__ - * Added @mAAdhaTTah and @RunDevelopment to credits and footer [`5d07aa7c`](https://github.com/PrismJS/prism/commit/5d07aa7c) - * Added plugin descriptions to plugin list ([#2076](https://github.com/PrismJS/prism/issues/2076)) [`cdfa60ac`](https://github.com/PrismJS/prism/commit/cdfa60ac) - * Use HTTPS link to alistapart.com ([#2044](https://github.com/PrismJS/prism/issues/2044)) [`8bcc1b85`](https://github.com/PrismJS/prism/commit/8bcc1b85) - * Fixed the Toolbar plugin's overflow issue ([#1966](https://github.com/PrismJS/prism/issues/1966)) [`56a8711c`](https://github.com/PrismJS/prism/commit/56a8711c) - * FAQ update ([#1977](https://github.com/PrismJS/prism/issues/1977)) [`8a572af5`](https://github.com/PrismJS/prism/commit/8a572af5) - * Use modern JavaScript in the NodeJS usage section ([#1942](https://github.com/PrismJS/prism/issues/1942)) [`5c68a556`](https://github.com/PrismJS/prism/commit/5c68a556) - * Improved test page performance for Chromium ([#2020](https://github.com/PrismJS/prism/issues/2020)) [`3509f3e5`](https://github.com/PrismJS/prism/commit/3509f3e5) - * Fixed alias example in extending page ([#2011](https://github.com/PrismJS/prism/issues/2011)) [`7cb65eec`](https://github.com/PrismJS/prism/commit/7cb65eec) - * Robot Framework: Renamed example file ([#2126](https://github.com/PrismJS/prism/issues/2126)) [`9908ca69`](https://github.com/PrismJS/prism/commit/9908ca69) +- Issue template improvements ([#2069](https://github.com/PrismJS/prism/issues/2069)) [`53f07b1b`](https://github.com/PrismJS/prism/commit/53f07b1b) +- Readme: Links now use HTTPS if available ([#2045](https://github.com/PrismJS/prism/issues/2045)) [`6cd0738a`](https://github.com/PrismJS/prism/commit/6cd0738a) +- **Core** + - Fixed null reference ([#2106](https://github.com/PrismJS/prism/issues/2106)) [`0fd062d5`](https://github.com/PrismJS/prism/commit/0fd062d5) + - Fixed race condition caused by deferring the script ([#2103](https://github.com/PrismJS/prism/issues/2103)) [`a3785ec9`](https://github.com/PrismJS/prism/commit/a3785ec9) + - Minor improvements ([#1973](https://github.com/PrismJS/prism/issues/1973)) [`2d858e0a`](https://github.com/PrismJS/prism/commit/2d858e0a) + - Fixed greedy partial lookbehinds not working ([#2030](https://github.com/PrismJS/prism/issues/2030)) [`174ed103`](https://github.com/PrismJS/prism/commit/174ed103) + - Fixed greedy targeting bug ([#1932](https://github.com/PrismJS/prism/issues/1932)) [`e864d518`](https://github.com/PrismJS/prism/commit/e864d518) + - Doubly check the `manual` flag ([#1957](https://github.com/PrismJS/prism/issues/1957)) [`d49f0f26`](https://github.com/PrismJS/prism/commit/d49f0f26) + - IE11 workaround for `currentScript` ([#2104](https://github.com/PrismJS/prism/issues/2104)) [`2108c60f`](https://github.com/PrismJS/prism/commit/2108c60f) +- **Infrastructure** + - gulp: Fixed changes task [`2f495905`](https://github.com/PrismJS/prism/commit/2f495905) + - npm: Added `.github` folder to npm ignore ([#2052](https://github.com/PrismJS/prism/issues/2052)) [`1af89e06`](https://github.com/PrismJS/prism/commit/1af89e06) + - npm: Updated dependencies to fix 122 vulnerabilities ([#1997](https://github.com/PrismJS/prism/issues/1997)) [`3af5d744`](https://github.com/PrismJS/prism/commit/3af5d744) + - Tests: New test for unused capturing groups ([#1996](https://github.com/PrismJS/prism/issues/1996)) [`c187e229`](https://github.com/PrismJS/prism/commit/c187e229) + - Tests: Simplified error message format ([#2056](https://github.com/PrismJS/prism/issues/2056)) [`007c9af4`](https://github.com/PrismJS/prism/commit/007c9af4) + - Tests: New test for nice names ([#1911](https://github.com/PrismJS/prism/issues/1911)) [`3fda5c95`](https://github.com/PrismJS/prism/commit/3fda5c95) + - Standardized dependency logic implementation ([#1998](https://github.com/PrismJS/prism/issues/1998)) [`7a4a0c7c`](https://github.com/PrismJS/prism/commit/7a4a0c7c) +- **Website** + - Added @mAAdhaTTah and @RunDevelopment to credits and footer [`5d07aa7c`](https://github.com/PrismJS/prism/commit/5d07aa7c) + - Added plugin descriptions to plugin list ([#2076](https://github.com/PrismJS/prism/issues/2076)) [`cdfa60ac`](https://github.com/PrismJS/prism/commit/cdfa60ac) + - Use HTTPS link to alistapart.com ([#2044](https://github.com/PrismJS/prism/issues/2044)) [`8bcc1b85`](https://github.com/PrismJS/prism/commit/8bcc1b85) + - Fixed the Toolbar plugin's overflow issue ([#1966](https://github.com/PrismJS/prism/issues/1966)) [`56a8711c`](https://github.com/PrismJS/prism/commit/56a8711c) + - FAQ update ([#1977](https://github.com/PrismJS/prism/issues/1977)) [`8a572af5`](https://github.com/PrismJS/prism/commit/8a572af5) + - Use modern JavaScript in the NodeJS usage section ([#1942](https://github.com/PrismJS/prism/issues/1942)) [`5c68a556`](https://github.com/PrismJS/prism/commit/5c68a556) + - Improved test page performance for Chromium ([#2020](https://github.com/PrismJS/prism/issues/2020)) [`3509f3e5`](https://github.com/PrismJS/prism/commit/3509f3e5) + - Fixed alias example in extending page ([#2011](https://github.com/PrismJS/prism/issues/2011)) [`7cb65eec`](https://github.com/PrismJS/prism/commit/7cb65eec) + - Robot Framework: Renamed example file ([#2126](https://github.com/PrismJS/prism/issues/2126)) [`9908ca69`](https://github.com/PrismJS/prism/commit/9908ca69) ## 1.17.1 (2019-07-21) ### Other -* __Infrastructure__ - * Add .DS_Store to npmignore [`c2229ec2`](https://github.com/PrismJS/prism/commit/c2229ec2) +- **Infrastructure** + - Add .DS_Store to npmignore [`c2229ec2`](https://github.com/PrismJS/prism/commit/c2229ec2) ## 1.17.0 (2019-07-21) ### New components -* __DNS zone file__ ([#1961](https://github.com/PrismJS/prism/issues/1961)) [`bb84f98c`](https://github.com/PrismJS/prism/commit/bb84f98c) -* __JQ__ ([#1896](https://github.com/PrismJS/prism/issues/1896)) [`73d964be`](https://github.com/PrismJS/prism/commit/73d964be) -* __JS Templates__: Syntax highlighting inside tagged template literals ([#1931](https://github.com/PrismJS/prism/issues/1931)) [`c8844286`](https://github.com/PrismJS/prism/commit/c8844286) -* __LilyPond__ ([#1967](https://github.com/PrismJS/prism/issues/1967)) [`5d992fc5`](https://github.com/PrismJS/prism/commit/5d992fc5) -* __PascaLIGO__ ([#1947](https://github.com/PrismJS/prism/issues/1947)) [`858201c7`](https://github.com/PrismJS/prism/commit/858201c7) -* __PC-Axis__ ([#1940](https://github.com/PrismJS/prism/issues/1940)) [`473f7fbd`](https://github.com/PrismJS/prism/commit/473f7fbd) -* __Shell session__ ([#1892](https://github.com/PrismJS/prism/issues/1892)) [`96044979`](https://github.com/PrismJS/prism/commit/96044979) -* __Splunk SPL__ ([#1962](https://github.com/PrismJS/prism/issues/1962)) [`c93c066b`](https://github.com/PrismJS/prism/commit/c93c066b) +- **DNS zone file** ([#1961](https://github.com/PrismJS/prism/issues/1961)) [`bb84f98c`](https://github.com/PrismJS/prism/commit/bb84f98c) +- **JQ** ([#1896](https://github.com/PrismJS/prism/issues/1896)) [`73d964be`](https://github.com/PrismJS/prism/commit/73d964be) +- **JS Templates**: Syntax highlighting inside tagged template literals ([#1931](https://github.com/PrismJS/prism/issues/1931)) [`c8844286`](https://github.com/PrismJS/prism/commit/c8844286) +- **LilyPond** ([#1967](https://github.com/PrismJS/prism/issues/1967)) [`5d992fc5`](https://github.com/PrismJS/prism/commit/5d992fc5) +- **PascaLIGO** ([#1947](https://github.com/PrismJS/prism/issues/1947)) [`858201c7`](https://github.com/PrismJS/prism/commit/858201c7) +- **PC-Axis** ([#1940](https://github.com/PrismJS/prism/issues/1940)) [`473f7fbd`](https://github.com/PrismJS/prism/commit/473f7fbd) +- **Shell session** ([#1892](https://github.com/PrismJS/prism/issues/1892)) [`96044979`](https://github.com/PrismJS/prism/commit/96044979) +- **Splunk SPL** ([#1962](https://github.com/PrismJS/prism/issues/1962)) [`c93c066b`](https://github.com/PrismJS/prism/commit/c93c066b) ### New plugins -* __Diff Highlight__: Syntax highlighting inside diff blocks ([#1889](https://github.com/PrismJS/prism/issues/1889)) [`e7702ae1`](https://github.com/PrismJS/prism/commit/e7702ae1) +- **Diff Highlight**: Syntax highlighting inside diff blocks ([#1889](https://github.com/PrismJS/prism/issues/1889)) [`e7702ae1`](https://github.com/PrismJS/prism/commit/e7702ae1) ### Updated components -* __Bash__ - * Major improvements ([#1443](https://github.com/PrismJS/prism/issues/1443)) [`363281b3`](https://github.com/PrismJS/prism/commit/363281b3) -* __C#__ - * Added `cs` alias ([#1899](https://github.com/PrismJS/prism/issues/1899)) [`a8164559`](https://github.com/PrismJS/prism/commit/a8164559) -* __C++__ - * Fixed number pattern ([#1887](https://github.com/PrismJS/prism/issues/1887)) [`3de29e72`](https://github.com/PrismJS/prism/commit/3de29e72) -* __CSS__ - * Extended `url` inside ([#1874](https://github.com/PrismJS/prism/issues/1874)) [`f0a10669`](https://github.com/PrismJS/prism/commit/f0a10669) - * Removed unnecessary flag and modifier ([#1875](https://github.com/PrismJS/prism/issues/1875)) [`74050c68`](https://github.com/PrismJS/prism/commit/74050c68) -* __CSS Extras__ - * Added `even` & `odd` keywords to `n-th` pattern ([#1872](https://github.com/PrismJS/prism/issues/1872)) [`5e5a3e00`](https://github.com/PrismJS/prism/commit/5e5a3e00) -* __F#__ - * Improved character literals ([#1956](https://github.com/PrismJS/prism/issues/1956)) [`d58d2aeb`](https://github.com/PrismJS/prism/commit/d58d2aeb) -* __JavaScript__ - * Fixed escaped template interpolation ([#1931](https://github.com/PrismJS/prism/issues/1931)) [`c8844286`](https://github.com/PrismJS/prism/commit/c8844286) - * Added support for private fields ([#1950](https://github.com/PrismJS/prism/issues/1950)) [`7bd08327`](https://github.com/PrismJS/prism/commit/7bd08327) - * Added support for numeric separators ([#1895](https://github.com/PrismJS/prism/issues/1895)) [`6068bf18`](https://github.com/PrismJS/prism/commit/6068bf18) - * Increased bracket count of interpolation expressions in template strings ([#1845](https://github.com/PrismJS/prism/issues/1845)) [`c13d6e7d`](https://github.com/PrismJS/prism/commit/c13d6e7d) - * Added support for the `s` regex flag ([#1846](https://github.com/PrismJS/prism/issues/1846)) [`9e164935`](https://github.com/PrismJS/prism/commit/9e164935) - * Formatting: Added missing semicolon ([#1856](https://github.com/PrismJS/prism/issues/1856)) [`e2683959`](https://github.com/PrismJS/prism/commit/e2683959) -* __JSON__ - * Kinda fixed comment issue ([#1853](https://github.com/PrismJS/prism/issues/1853)) [`cbe05ec3`](https://github.com/PrismJS/prism/commit/cbe05ec3) -* __Julia__ - * Added `struct` keyword ([#1941](https://github.com/PrismJS/prism/issues/1941)) [`feb1b6f5`](https://github.com/PrismJS/prism/commit/feb1b6f5) - * Highlight `Inf` and `NaN` as constants ([#1921](https://github.com/PrismJS/prism/issues/1921)) [`2141129f`](https://github.com/PrismJS/prism/commit/2141129f) - * Added `in` keyword ([#1918](https://github.com/PrismJS/prism/issues/1918)) [`feb3187f`](https://github.com/PrismJS/prism/commit/feb3187f) -* __LaTeX__ - * Added TeX and ConTeXt alias ([#1915](https://github.com/PrismJS/prism/issues/1915)) [`5ad58a75`](https://github.com/PrismJS/prism/commit/5ad58a75) - * Added support for $$ equations [`6f53f749`](https://github.com/PrismJS/prism/commit/6f53f749) -* __Markdown__ - * Markdown: Added support for auto-loading code block languages ([#1898](https://github.com/PrismJS/prism/issues/1898)) [`05823e88`](https://github.com/PrismJS/prism/commit/05823e88) - * Improved URLs ([#1955](https://github.com/PrismJS/prism/issues/1955)) [`b9ec6fd8`](https://github.com/PrismJS/prism/commit/b9ec6fd8) - * Added support for nested bold and italic expressions ([#1897](https://github.com/PrismJS/prism/issues/1897)) [`11903721`](https://github.com/PrismJS/prism/commit/11903721) - * Added support for tables ([#1848](https://github.com/PrismJS/prism/issues/1848)) [`cedb8e84`](https://github.com/PrismJS/prism/commit/cedb8e84) -* __Perl__ - * Added `return` keyword ([#1943](https://github.com/PrismJS/prism/issues/1943)) [`2f39de97`](https://github.com/PrismJS/prism/commit/2f39de97) -* __Protocol Buffers__ - * Full support for PB2 and PB3 syntax + numerous other improvements ([#1948](https://github.com/PrismJS/prism/issues/1948)) [`de10bd1d`](https://github.com/PrismJS/prism/commit/de10bd1d) -* __reST (reStructuredText)__ - * Fixed exponentially backtracking pattern ([#1986](https://github.com/PrismJS/prism/issues/1986)) [`8b5d67a3`](https://github.com/PrismJS/prism/commit/8b5d67a3) -* __Rust__ - * Added `async` and `await` keywords. ([#1882](https://github.com/PrismJS/prism/issues/1882)) [`4faa3314`](https://github.com/PrismJS/prism/commit/4faa3314) - * Improved punctuation and operators ([#1839](https://github.com/PrismJS/prism/issues/1839)) [`a42b1557`](https://github.com/PrismJS/prism/commit/a42b1557) -* __Sass (Scss)__ - * Fixed exponential url pattern ([#1938](https://github.com/PrismJS/prism/issues/1938)) [`4b6b6e8b`](https://github.com/PrismJS/prism/commit/4b6b6e8b) -* __Scheme__ - * Added support for rational number literals ([#1964](https://github.com/PrismJS/prism/issues/1964)) [`e8811d22`](https://github.com/PrismJS/prism/commit/e8811d22) -* __TOML__ - * Minor improvements ([#1917](https://github.com/PrismJS/prism/issues/1917)) [`3e181241`](https://github.com/PrismJS/prism/commit/3e181241) -* __Visual Basic__ - * Added support for interpolation strings ([#1971](https://github.com/PrismJS/prism/issues/1971)) [`4a2c90c1`](https://github.com/PrismJS/prism/commit/4a2c90c1) +- **Bash** + - Major improvements ([#1443](https://github.com/PrismJS/prism/issues/1443)) [`363281b3`](https://github.com/PrismJS/prism/commit/363281b3) +- **C#** + - Added `cs` alias ([#1899](https://github.com/PrismJS/prism/issues/1899)) [`a8164559`](https://github.com/PrismJS/prism/commit/a8164559) +- **C++** + - Fixed number pattern ([#1887](https://github.com/PrismJS/prism/issues/1887)) [`3de29e72`](https://github.com/PrismJS/prism/commit/3de29e72) +- **CSS** + - Extended `url` inside ([#1874](https://github.com/PrismJS/prism/issues/1874)) [`f0a10669`](https://github.com/PrismJS/prism/commit/f0a10669) + - Removed unnecessary flag and modifier ([#1875](https://github.com/PrismJS/prism/issues/1875)) [`74050c68`](https://github.com/PrismJS/prism/commit/74050c68) +- **CSS Extras** + - Added `even` & `odd` keywords to `n-th` pattern ([#1872](https://github.com/PrismJS/prism/issues/1872)) [`5e5a3e00`](https://github.com/PrismJS/prism/commit/5e5a3e00) +- **F#** + - Improved character literals ([#1956](https://github.com/PrismJS/prism/issues/1956)) [`d58d2aeb`](https://github.com/PrismJS/prism/commit/d58d2aeb) +- **JavaScript** + - Fixed escaped template interpolation ([#1931](https://github.com/PrismJS/prism/issues/1931)) [`c8844286`](https://github.com/PrismJS/prism/commit/c8844286) + - Added support for private fields ([#1950](https://github.com/PrismJS/prism/issues/1950)) [`7bd08327`](https://github.com/PrismJS/prism/commit/7bd08327) + - Added support for numeric separators ([#1895](https://github.com/PrismJS/prism/issues/1895)) [`6068bf18`](https://github.com/PrismJS/prism/commit/6068bf18) + - Increased bracket count of interpolation expressions in template strings ([#1845](https://github.com/PrismJS/prism/issues/1845)) [`c13d6e7d`](https://github.com/PrismJS/prism/commit/c13d6e7d) + - Added support for the `s` regex flag ([#1846](https://github.com/PrismJS/prism/issues/1846)) [`9e164935`](https://github.com/PrismJS/prism/commit/9e164935) + - Formatting: Added missing semicolon ([#1856](https://github.com/PrismJS/prism/issues/1856)) [`e2683959`](https://github.com/PrismJS/prism/commit/e2683959) +- **JSON** + - Kinda fixed comment issue ([#1853](https://github.com/PrismJS/prism/issues/1853)) [`cbe05ec3`](https://github.com/PrismJS/prism/commit/cbe05ec3) +- **Julia** + - Added `struct` keyword ([#1941](https://github.com/PrismJS/prism/issues/1941)) [`feb1b6f5`](https://github.com/PrismJS/prism/commit/feb1b6f5) + - Highlight `Inf` and `NaN` as constants ([#1921](https://github.com/PrismJS/prism/issues/1921)) [`2141129f`](https://github.com/PrismJS/prism/commit/2141129f) + - Added `in` keyword ([#1918](https://github.com/PrismJS/prism/issues/1918)) [`feb3187f`](https://github.com/PrismJS/prism/commit/feb3187f) +- **LaTeX** + - Added TeX and ConTeXt alias ([#1915](https://github.com/PrismJS/prism/issues/1915)) [`5ad58a75`](https://github.com/PrismJS/prism/commit/5ad58a75) + - Added support for $$ equations [`6f53f749`](https://github.com/PrismJS/prism/commit/6f53f749) +- **Markdown** + - Markdown: Added support for auto-loading code block languages ([#1898](https://github.com/PrismJS/prism/issues/1898)) [`05823e88`](https://github.com/PrismJS/prism/commit/05823e88) + - Improved URLs ([#1955](https://github.com/PrismJS/prism/issues/1955)) [`b9ec6fd8`](https://github.com/PrismJS/prism/commit/b9ec6fd8) + - Added support for nested bold and italic expressions ([#1897](https://github.com/PrismJS/prism/issues/1897)) [`11903721`](https://github.com/PrismJS/prism/commit/11903721) + - Added support for tables ([#1848](https://github.com/PrismJS/prism/issues/1848)) [`cedb8e84`](https://github.com/PrismJS/prism/commit/cedb8e84) +- **Perl** + - Added `return` keyword ([#1943](https://github.com/PrismJS/prism/issues/1943)) [`2f39de97`](https://github.com/PrismJS/prism/commit/2f39de97) +- **Protocol Buffers** + - Full support for PB2 and PB3 syntax + numerous other improvements ([#1948](https://github.com/PrismJS/prism/issues/1948)) [`de10bd1d`](https://github.com/PrismJS/prism/commit/de10bd1d) +- **reST (reStructuredText)** + - Fixed exponentially backtracking pattern ([#1986](https://github.com/PrismJS/prism/issues/1986)) [`8b5d67a3`](https://github.com/PrismJS/prism/commit/8b5d67a3) +- **Rust** + - Added `async` and `await` keywords. ([#1882](https://github.com/PrismJS/prism/issues/1882)) [`4faa3314`](https://github.com/PrismJS/prism/commit/4faa3314) + - Improved punctuation and operators ([#1839](https://github.com/PrismJS/prism/issues/1839)) [`a42b1557`](https://github.com/PrismJS/prism/commit/a42b1557) +- **Sass (Scss)** + - Fixed exponential url pattern ([#1938](https://github.com/PrismJS/prism/issues/1938)) [`4b6b6e8b`](https://github.com/PrismJS/prism/commit/4b6b6e8b) +- **Scheme** + - Added support for rational number literals ([#1964](https://github.com/PrismJS/prism/issues/1964)) [`e8811d22`](https://github.com/PrismJS/prism/commit/e8811d22) +- **TOML** + - Minor improvements ([#1917](https://github.com/PrismJS/prism/issues/1917)) [`3e181241`](https://github.com/PrismJS/prism/commit/3e181241) +- **Visual Basic** + - Added support for interpolation strings ([#1971](https://github.com/PrismJS/prism/issues/1971)) [`4a2c90c1`](https://github.com/PrismJS/prism/commit/4a2c90c1) ### Updated plugins -* __Autolinker__ - * Improved component path guessing ([#1928](https://github.com/PrismJS/prism/issues/1928)) [`452d5c7d`](https://github.com/PrismJS/prism/commit/452d5c7d) - * Improved URL regex ([#1842](https://github.com/PrismJS/prism/issues/1842)) [`eb28b62b`](https://github.com/PrismJS/prism/commit/eb28b62b) -* __Autoloader__ - * Fixed and improved callbacks ([#1935](https://github.com/PrismJS/prism/issues/1935)) [`b19f512f`](https://github.com/PrismJS/prism/commit/b19f512f) -* __Command Line__ - * Fix for uncaught errors for empty 'commandLine' object. ([#1862](https://github.com/PrismJS/prism/issues/1862)) [`c24831b5`](https://github.com/PrismJS/prism/commit/c24831b5) -* __Copy to Clipboard Button__ - * Switch anchor to button ([#1926](https://github.com/PrismJS/prism/issues/1926)) [`79880197`](https://github.com/PrismJS/prism/commit/79880197) -* __Custom Class__ - * Added mapper functions for language specific transformations ([#1873](https://github.com/PrismJS/prism/issues/1873)) [`acceb3b5`](https://github.com/PrismJS/prism/commit/acceb3b5) -* __Line Highlight__ - * Batching DOM read/writes to avoid reflows ([#1865](https://github.com/PrismJS/prism/issues/1865)) [`632ce00c`](https://github.com/PrismJS/prism/commit/632ce00c) -* __Toolbar__ - * Added `className` option for toolbar items ([#1951](https://github.com/PrismJS/prism/issues/1951)) [`5ab28bbe`](https://github.com/PrismJS/prism/commit/5ab28bbe) - * Set opacity to 1 when focus is within ([#1927](https://github.com/PrismJS/prism/issues/1927)) [`0b1662dd`](https://github.com/PrismJS/prism/commit/0b1662dd) +- **Autolinker** + - Improved component path guessing ([#1928](https://github.com/PrismJS/prism/issues/1928)) [`452d5c7d`](https://github.com/PrismJS/prism/commit/452d5c7d) + - Improved URL regex ([#1842](https://github.com/PrismJS/prism/issues/1842)) [`eb28b62b`](https://github.com/PrismJS/prism/commit/eb28b62b) +- **Autoloader** + - Fixed and improved callbacks ([#1935](https://github.com/PrismJS/prism/issues/1935)) [`b19f512f`](https://github.com/PrismJS/prism/commit/b19f512f) +- **Command Line** + - Fix for uncaught errors for empty 'commandLine' object. ([#1862](https://github.com/PrismJS/prism/issues/1862)) [`c24831b5`](https://github.com/PrismJS/prism/commit/c24831b5) +- **Copy to Clipboard Button** + - Switch anchor to button ([#1926](https://github.com/PrismJS/prism/issues/1926)) [`79880197`](https://github.com/PrismJS/prism/commit/79880197) +- **Custom Class** + - Added mapper functions for language specific transformations ([#1873](https://github.com/PrismJS/prism/issues/1873)) [`acceb3b5`](https://github.com/PrismJS/prism/commit/acceb3b5) +- **Line Highlight** + - Batching DOM read/writes to avoid reflows ([#1865](https://github.com/PrismJS/prism/issues/1865)) [`632ce00c`](https://github.com/PrismJS/prism/commit/632ce00c) +- **Toolbar** + - Added `className` option for toolbar items ([#1951](https://github.com/PrismJS/prism/issues/1951)) [`5ab28bbe`](https://github.com/PrismJS/prism/commit/5ab28bbe) + - Set opacity to 1 when focus is within ([#1927](https://github.com/PrismJS/prism/issues/1927)) [`0b1662dd`](https://github.com/PrismJS/prism/commit/0b1662dd) ### Updated themes -* __Funky__ - * Fixed typo ([#1960](https://github.com/PrismJS/prism/issues/1960)) [`7d056591`](https://github.com/PrismJS/prism/commit/7d056591) +- **Funky** + - Fixed typo ([#1960](https://github.com/PrismJS/prism/issues/1960)) [`7d056591`](https://github.com/PrismJS/prism/commit/7d056591) ### Other -* README: Added npm downloads badge ([#1934](https://github.com/PrismJS/prism/issues/1934)) [`d673d701`](https://github.com/PrismJS/prism/commit/d673d701) -* README: Minor changes ([#1857](https://github.com/PrismJS/prism/issues/1857)) [`77e403cb`](https://github.com/PrismJS/prism/commit/77e403cb) -* Clearer description for the highlighting bug report template ([#1850](https://github.com/PrismJS/prism/issues/1850)) [`2f9c9261`](https://github.com/PrismJS/prism/commit/2f9c9261) -* More language examples ([#1917](https://github.com/PrismJS/prism/issues/1917)) [`3e181241`](https://github.com/PrismJS/prism/commit/3e181241) -* __Core__ - * Removed `env.elements` from `before-highlightall` hook ([#1968](https://github.com/PrismJS/prism/issues/1968)) [`9d9e2ca4`](https://github.com/PrismJS/prism/commit/9d9e2ca4) - * Made `language-none` the default language ([#1858](https://github.com/PrismJS/prism/issues/1858)) [`fd691c52`](https://github.com/PrismJS/prism/commit/fd691c52) - * Removed `parent` from the `wrap` hook's environment ([#1837](https://github.com/PrismJS/prism/issues/1837)) [`65a4e894`](https://github.com/PrismJS/prism/commit/65a4e894) -* __Infrastructure__ - * gulp: Split `gulpfile.js` and expanded `changes` task ([#1835](https://github.com/PrismJS/prism/issues/1835)) [`033c5ad8`](https://github.com/PrismJS/prism/commit/033c5ad8) - * gulp: JSON formatting for partly generated files ([#1933](https://github.com/PrismJS/prism/issues/1933)) [`d4373f3a`](https://github.com/PrismJS/prism/commit/d4373f3a) - * gulp: Use `async` functions & drop testing on Node v6 ([#1783](https://github.com/PrismJS/prism/issues/1783)) [`0dd44d53`](https://github.com/PrismJS/prism/commit/0dd44d53) - * Tests: `lookbehind` test for patterns ([#1890](https://github.com/PrismJS/prism/issues/1890)) [`3ba786cd`](https://github.com/PrismJS/prism/commit/3ba786cd) - * Tests: Added test for empty regexes ([#1847](https://github.com/PrismJS/prism/issues/1847)) [`c1e6a7fd`](https://github.com/PrismJS/prism/commit/c1e6a7fd) -* __Website__ - * Added tutorial for using PrismJS with React ([#1979](https://github.com/PrismJS/prism/issues/1979)) [`f1e16c7b`](https://github.com/PrismJS/prism/commit/f1e16c7b) - * Update footer's GitHub repository URL and capitalisation of "GitHub" ([#1983](https://github.com/PrismJS/prism/issues/1983)) [`bab744a6`](https://github.com/PrismJS/prism/commit/bab744a6) - * Added known failures page ([#1876](https://github.com/PrismJS/prism/issues/1876)) [`36a5fa0e`](https://github.com/PrismJS/prism/commit/36a5fa0e) - * Added basic usage for CDNs ([#1924](https://github.com/PrismJS/prism/issues/1924)) [`922ec555`](https://github.com/PrismJS/prism/commit/922ec555) - * New tutorial for Drupal ([#1859](https://github.com/PrismJS/prism/issues/1859)) [`d2089d83`](https://github.com/PrismJS/prism/commit/d2089d83) - * Updated website page styles to not interfere with themes ([#1952](https://github.com/PrismJS/prism/issues/1952)) [`b6543853`](https://github.com/PrismJS/prism/commit/b6543853) - * Download page: Improved performance for Chromium-based browsers ([#1907](https://github.com/PrismJS/prism/issues/1907)) [`11f18e36`](https://github.com/PrismJS/prism/commit/11f18e36) - * Download page: Fixed Edge's word wrap ([#1920](https://github.com/PrismJS/prism/issues/1920)) [`5d191b92`](https://github.com/PrismJS/prism/commit/5d191b92) - * Examples page: Minor improvements ([#1919](https://github.com/PrismJS/prism/issues/1919)) [`a16d4a25`](https://github.com/PrismJS/prism/commit/a16d4a25) - * Extending page: Fixed typo + new alias section ([#1949](https://github.com/PrismJS/prism/issues/1949)) [`24c8e717`](https://github.com/PrismJS/prism/commit/24c8e717) - * Extending page: Added "Creating a new language definition" section ([#1925](https://github.com/PrismJS/prism/issues/1925)) [`ddf81233`](https://github.com/PrismJS/prism/commit/ddf81233) - * Test page: Use `prism-core.js` instead of `prism.js` ([#1908](https://github.com/PrismJS/prism/issues/1908)) [`0853e694`](https://github.com/PrismJS/prism/commit/0853e694) - * Copy to clipboard: Fixed typo ([#1869](https://github.com/PrismJS/prism/issues/1869)) [`59d4323f`](https://github.com/PrismJS/prism/commit/59d4323f) - * JSONP Highlight: Fixed examples ([#1877](https://github.com/PrismJS/prism/issues/1877)) [`f8ae465d`](https://github.com/PrismJS/prism/commit/f8ae465d) - * Line numbers: Fixed typo on webpage ([#1838](https://github.com/PrismJS/prism/issues/1838)) [`0f16eb87`](https://github.com/PrismJS/prism/commit/0f16eb87) +- README: Added npm downloads badge ([#1934](https://github.com/PrismJS/prism/issues/1934)) [`d673d701`](https://github.com/PrismJS/prism/commit/d673d701) +- README: Minor changes ([#1857](https://github.com/PrismJS/prism/issues/1857)) [`77e403cb`](https://github.com/PrismJS/prism/commit/77e403cb) +- Clearer description for the highlighting bug report template ([#1850](https://github.com/PrismJS/prism/issues/1850)) [`2f9c9261`](https://github.com/PrismJS/prism/commit/2f9c9261) +- More language examples ([#1917](https://github.com/PrismJS/prism/issues/1917)) [`3e181241`](https://github.com/PrismJS/prism/commit/3e181241) +- **Core** + - Removed `env.elements` from `before-highlightall` hook ([#1968](https://github.com/PrismJS/prism/issues/1968)) [`9d9e2ca4`](https://github.com/PrismJS/prism/commit/9d9e2ca4) + - Made `language-none` the default language ([#1858](https://github.com/PrismJS/prism/issues/1858)) [`fd691c52`](https://github.com/PrismJS/prism/commit/fd691c52) + - Removed `parent` from the `wrap` hook's environment ([#1837](https://github.com/PrismJS/prism/issues/1837)) [`65a4e894`](https://github.com/PrismJS/prism/commit/65a4e894) +- **Infrastructure** + - gulp: Split `gulpfile.js` and expanded `changes` task ([#1835](https://github.com/PrismJS/prism/issues/1835)) [`033c5ad8`](https://github.com/PrismJS/prism/commit/033c5ad8) + - gulp: JSON formatting for partly generated files ([#1933](https://github.com/PrismJS/prism/issues/1933)) [`d4373f3a`](https://github.com/PrismJS/prism/commit/d4373f3a) + - gulp: Use `async` functions & drop testing on Node v6 ([#1783](https://github.com/PrismJS/prism/issues/1783)) [`0dd44d53`](https://github.com/PrismJS/prism/commit/0dd44d53) + - Tests: `lookbehind` test for patterns ([#1890](https://github.com/PrismJS/prism/issues/1890)) [`3ba786cd`](https://github.com/PrismJS/prism/commit/3ba786cd) + - Tests: Added test for empty regexes ([#1847](https://github.com/PrismJS/prism/issues/1847)) [`c1e6a7fd`](https://github.com/PrismJS/prism/commit/c1e6a7fd) +- **Website** + - Added tutorial for using PrismJS with React ([#1979](https://github.com/PrismJS/prism/issues/1979)) [`f1e16c7b`](https://github.com/PrismJS/prism/commit/f1e16c7b) + - Update footer's GitHub repository URL and capitalisation of "GitHub" ([#1983](https://github.com/PrismJS/prism/issues/1983)) [`bab744a6`](https://github.com/PrismJS/prism/commit/bab744a6) + - Added known failures page ([#1876](https://github.com/PrismJS/prism/issues/1876)) [`36a5fa0e`](https://github.com/PrismJS/prism/commit/36a5fa0e) + - Added basic usage for CDNs ([#1924](https://github.com/PrismJS/prism/issues/1924)) [`922ec555`](https://github.com/PrismJS/prism/commit/922ec555) + - New tutorial for Drupal ([#1859](https://github.com/PrismJS/prism/issues/1859)) [`d2089d83`](https://github.com/PrismJS/prism/commit/d2089d83) + - Updated website page styles to not interfere with themes ([#1952](https://github.com/PrismJS/prism/issues/1952)) [`b6543853`](https://github.com/PrismJS/prism/commit/b6543853) + - Download page: Improved performance for Chromium-based browsers ([#1907](https://github.com/PrismJS/prism/issues/1907)) [`11f18e36`](https://github.com/PrismJS/prism/commit/11f18e36) + - Download page: Fixed Edge's word wrap ([#1920](https://github.com/PrismJS/prism/issues/1920)) [`5d191b92`](https://github.com/PrismJS/prism/commit/5d191b92) + - Examples page: Minor improvements ([#1919](https://github.com/PrismJS/prism/issues/1919)) [`a16d4a25`](https://github.com/PrismJS/prism/commit/a16d4a25) + - Extending page: Fixed typo + new alias section ([#1949](https://github.com/PrismJS/prism/issues/1949)) [`24c8e717`](https://github.com/PrismJS/prism/commit/24c8e717) + - Extending page: Added "Creating a new language definition" section ([#1925](https://github.com/PrismJS/prism/issues/1925)) [`ddf81233`](https://github.com/PrismJS/prism/commit/ddf81233) + - Test page: Use `prism-core.js` instead of `prism.js` ([#1908](https://github.com/PrismJS/prism/issues/1908)) [`0853e694`](https://github.com/PrismJS/prism/commit/0853e694) + - Copy to clipboard: Fixed typo ([#1869](https://github.com/PrismJS/prism/issues/1869)) [`59d4323f`](https://github.com/PrismJS/prism/commit/59d4323f) + - JSONP Highlight: Fixed examples ([#1877](https://github.com/PrismJS/prism/issues/1877)) [`f8ae465d`](https://github.com/PrismJS/prism/commit/f8ae465d) + - Line numbers: Fixed typo on webpage ([#1838](https://github.com/PrismJS/prism/issues/1838)) [`0f16eb87`](https://github.com/PrismJS/prism/commit/0f16eb87) ## 1.16.0 (2019-03-24) ### New components -* __ANBF__ ([#1753](https://github.com/PrismJS/prism/issues/1753)) [`6d98f0e7`](https://github.com/PrismJS/prism/commit/6d98f0e7) -* __BNF__ & __RBNF__ ([#1754](https://github.com/PrismJS/prism/issues/1754)) [`1df96c55`](https://github.com/PrismJS/prism/commit/1df96c55) -* __CIL__ ([#1593](https://github.com/PrismJS/prism/issues/1593)) [`38def334`](https://github.com/PrismJS/prism/commit/38def334) -* __CMake__ ([#1820](https://github.com/PrismJS/prism/issues/1820)) [`30779976`](https://github.com/PrismJS/prism/commit/30779976) -* __Doc comment__ ([#1541](https://github.com/PrismJS/prism/issues/1541)) [`493d19ef`](https://github.com/PrismJS/prism/commit/493d19ef) -* __EBNF__ ([#1756](https://github.com/PrismJS/prism/issues/1756)) [`13e1c97d`](https://github.com/PrismJS/prism/commit/13e1c97d) -* __EJS__ ([#1769](https://github.com/PrismJS/prism/issues/1769)) [`c37c90df`](https://github.com/PrismJS/prism/commit/c37c90df) -* __G-code__ ([#1572](https://github.com/PrismJS/prism/issues/1572)) [`2288c25e`](https://github.com/PrismJS/prism/commit/2288c25e) -* __GameMaker Language__ ([#1551](https://github.com/PrismJS/prism/issues/1551)) [`e529edd8`](https://github.com/PrismJS/prism/commit/e529edd8) -* __HCL__ ([#1594](https://github.com/PrismJS/prism/issues/1594)) [`c939df8e`](https://github.com/PrismJS/prism/commit/c939df8e) -* __Java stack trace__ ([#1520](https://github.com/PrismJS/prism/issues/1520)) [`4a8219a4`](https://github.com/PrismJS/prism/commit/4a8219a4) -* __JavaScript Extras__ ([#1743](https://github.com/PrismJS/prism/issues/1743)) [`bb628606`](https://github.com/PrismJS/prism/commit/bb628606) -* __JSON5__ ([#1744](https://github.com/PrismJS/prism/issues/1744)) [`64dc049d`](https://github.com/PrismJS/prism/commit/64dc049d) -* __N1QL__ ([#1620](https://github.com/PrismJS/prism/issues/1620)) [`7def8f5c`](https://github.com/PrismJS/prism/commit/7def8f5c) -* __Nand To Tetris HDL__ ([#1710](https://github.com/PrismJS/prism/issues/1710)) [`b94b56c1`](https://github.com/PrismJS/prism/commit/b94b56c1) -* __Regex__ ([#1682](https://github.com/PrismJS/prism/issues/1682)) [`571704cb`](https://github.com/PrismJS/prism/commit/571704cb) -* __T4__ ([#1699](https://github.com/PrismJS/prism/issues/1699)) [`16f2ad06`](https://github.com/PrismJS/prism/commit/16f2ad06) -* __TOML__ ([#1488](https://github.com/PrismJS/prism/issues/1488)) [`5b6ad70d`](https://github.com/PrismJS/prism/commit/5b6ad70d) -* __Vala__ ([#1658](https://github.com/PrismJS/prism/issues/1658)) [`b48c012c`](https://github.com/PrismJS/prism/commit/b48c012c) +- **ANBF** ([#1753](https://github.com/PrismJS/prism/issues/1753)) [`6d98f0e7`](https://github.com/PrismJS/prism/commit/6d98f0e7) +- **BNF** & **RBNF** ([#1754](https://github.com/PrismJS/prism/issues/1754)) [`1df96c55`](https://github.com/PrismJS/prism/commit/1df96c55) +- **CIL** ([#1593](https://github.com/PrismJS/prism/issues/1593)) [`38def334`](https://github.com/PrismJS/prism/commit/38def334) +- **CMake** ([#1820](https://github.com/PrismJS/prism/issues/1820)) [`30779976`](https://github.com/PrismJS/prism/commit/30779976) +- **Doc comment** ([#1541](https://github.com/PrismJS/prism/issues/1541)) [`493d19ef`](https://github.com/PrismJS/prism/commit/493d19ef) +- **EBNF** ([#1756](https://github.com/PrismJS/prism/issues/1756)) [`13e1c97d`](https://github.com/PrismJS/prism/commit/13e1c97d) +- **EJS** ([#1769](https://github.com/PrismJS/prism/issues/1769)) [`c37c90df`](https://github.com/PrismJS/prism/commit/c37c90df) +- **G-code** ([#1572](https://github.com/PrismJS/prism/issues/1572)) [`2288c25e`](https://github.com/PrismJS/prism/commit/2288c25e) +- **GameMaker Language** ([#1551](https://github.com/PrismJS/prism/issues/1551)) [`e529edd8`](https://github.com/PrismJS/prism/commit/e529edd8) +- **HCL** ([#1594](https://github.com/PrismJS/prism/issues/1594)) [`c939df8e`](https://github.com/PrismJS/prism/commit/c939df8e) +- **Java stack trace** ([#1520](https://github.com/PrismJS/prism/issues/1520)) [`4a8219a4`](https://github.com/PrismJS/prism/commit/4a8219a4) +- **JavaScript Extras** ([#1743](https://github.com/PrismJS/prism/issues/1743)) [`bb628606`](https://github.com/PrismJS/prism/commit/bb628606) +- **JSON5** ([#1744](https://github.com/PrismJS/prism/issues/1744)) [`64dc049d`](https://github.com/PrismJS/prism/commit/64dc049d) +- **N1QL** ([#1620](https://github.com/PrismJS/prism/issues/1620)) [`7def8f5c`](https://github.com/PrismJS/prism/commit/7def8f5c) +- **Nand To Tetris HDL** ([#1710](https://github.com/PrismJS/prism/issues/1710)) [`b94b56c1`](https://github.com/PrismJS/prism/commit/b94b56c1) +- **Regex** ([#1682](https://github.com/PrismJS/prism/issues/1682)) [`571704cb`](https://github.com/PrismJS/prism/commit/571704cb) +- **T4** ([#1699](https://github.com/PrismJS/prism/issues/1699)) [`16f2ad06`](https://github.com/PrismJS/prism/commit/16f2ad06) +- **TOML** ([#1488](https://github.com/PrismJS/prism/issues/1488)) [`5b6ad70d`](https://github.com/PrismJS/prism/commit/5b6ad70d) +- **Vala** ([#1658](https://github.com/PrismJS/prism/issues/1658)) [`b48c012c`](https://github.com/PrismJS/prism/commit/b48c012c) ### Updated components -* Fixed dependencies of Pug and Pure ([#1759](https://github.com/PrismJS/prism/issues/1759)) [`c9a32674`](https://github.com/PrismJS/prism/commit/c9a32674) -* Add file extensions support for major languages ([#1478](https://github.com/PrismJS/prism/issues/1478)) [`0c8f6504`](https://github.com/PrismJS/prism/commit/0c8f6504) -* Fixed patterns which can match the empty string ([#1775](https://github.com/PrismJS/prism/issues/1775)) [`86dd3e42`](https://github.com/PrismJS/prism/commit/86dd3e42) -* More variables for better code compression ([#1489](https://github.com/PrismJS/prism/issues/1489)) [`bc53e093`](https://github.com/PrismJS/prism/commit/bc53e093) -* Added missing aliases ([#1830](https://github.com/PrismJS/prism/issues/1830)) [`8d28c74c`](https://github.com/PrismJS/prism/commit/8d28c74c) -* Replaced all occurrences of `new RegExp` with `RegExp` ([#1493](https://github.com/PrismJS/prism/issues/1493)) [`44fed4d3`](https://github.com/PrismJS/prism/commit/44fed4d3) -* Added missing aliases to components.json ([#1503](https://github.com/PrismJS/prism/issues/1503)) [`2fb66e04`](https://github.com/PrismJS/prism/commit/2fb66e04) -* __Apacheconf__ - * Apache config: Minor improvements + new keyword ([#1823](https://github.com/PrismJS/prism/issues/1823)) [`a91be7b2`](https://github.com/PrismJS/prism/commit/a91be7b2) -* __AsciiDoc__ - * Added `adoc` alias for AsciiDoc ([#1685](https://github.com/PrismJS/prism/issues/1685)) [`88434f7a`](https://github.com/PrismJS/prism/commit/88434f7a) -* __Bash__ - * Add additional commands to bash ([#1577](https://github.com/PrismJS/prism/issues/1577)) [`a2230c38`](https://github.com/PrismJS/prism/commit/a2230c38) - * Added `yarn add` to bash functions ([#1731](https://github.com/PrismJS/prism/issues/1731)) [`3a32cb75`](https://github.com/PrismJS/prism/commit/3a32cb75) - * Added `pnpm` function to Bash ([#1734](https://github.com/PrismJS/prism/issues/1734)) [`fccfb98d`](https://github.com/PrismJS/prism/commit/fccfb98d) -* __Batch__ - * Remove batch's shell alias ([#1543](https://github.com/PrismJS/prism/issues/1543)) [`7155e60f`](https://github.com/PrismJS/prism/commit/7155e60f) -* __C__ - * Improve C language ([#1697](https://github.com/PrismJS/prism/issues/1697)) [`7eccea5c`](https://github.com/PrismJS/prism/commit/7eccea5c) -* __C-like__ - * Simplify function pattern of C-like language ([#1552](https://github.com/PrismJS/prism/issues/1552)) [`b520e1b6`](https://github.com/PrismJS/prism/commit/b520e1b6) -* __C/C++/Java__ - * Operator fixes ([#1528](https://github.com/PrismJS/prism/issues/1528)) [`7af8f8be`](https://github.com/PrismJS/prism/commit/7af8f8be) -* __C#__ - * Improvements to C# operator and punctuation ([#1532](https://github.com/PrismJS/prism/issues/1532)) [`3b1e0916`](https://github.com/PrismJS/prism/commit/3b1e0916) -* __CSS__ - * Fix tokenizing !important ([#1585](https://github.com/PrismJS/prism/issues/1585)) [`c1d6cb85`](https://github.com/PrismJS/prism/commit/c1d6cb85) - * Added the comma to the list of CSS punctuation [`7ea2ff28`](https://github.com/PrismJS/prism/commit/7ea2ff28) - * CSS: Comma punctuation ([#1632](https://github.com/PrismJS/prism/issues/1632)) [`1b812386`](https://github.com/PrismJS/prism/commit/1b812386) - * Reuse CSS selector pattern in CSS Extras ([#1637](https://github.com/PrismJS/prism/issues/1637)) [`e2f2fd19`](https://github.com/PrismJS/prism/commit/e2f2fd19) - * Fixed CSS extra variable ([#1649](https://github.com/PrismJS/prism/issues/1649)) [`9de47d3a`](https://github.com/PrismJS/prism/commit/9de47d3a) - * Identify CSS units and variables ([#1450](https://github.com/PrismJS/prism/issues/1450)) [`5fcee966`](https://github.com/PrismJS/prism/commit/5fcee966) - * Allow multiline CSS at-rules ([#1676](https://github.com/PrismJS/prism/issues/1676)) [`4f6f3c7d`](https://github.com/PrismJS/prism/commit/4f6f3c7d) - * CSS: Highlight attribute selector ([#1671](https://github.com/PrismJS/prism/issues/1671)) [`245b59d4`](https://github.com/PrismJS/prism/commit/245b59d4) - * CSS: Selectors can contain any string ([#1638](https://github.com/PrismJS/prism/issues/1638)) [`a2d445d0`](https://github.com/PrismJS/prism/commit/a2d445d0) - * CSS extras: Highlighting for pseudo class arguments ([#1650](https://github.com/PrismJS/prism/issues/1650)) [`70a40414`](https://github.com/PrismJS/prism/commit/70a40414) -* __Django__ - * Django/Jinja2 improvements ([#1800](https://github.com/PrismJS/prism/issues/1800)) [`f2467488`](https://github.com/PrismJS/prism/commit/f2467488) -* __F#__ - * Chars can only contain one character ([#1570](https://github.com/PrismJS/prism/issues/1570)) [`f96b083a`](https://github.com/PrismJS/prism/commit/f96b083a) - * Improve F# ([#1573](https://github.com/PrismJS/prism/issues/1573)) [`00bfc969`](https://github.com/PrismJS/prism/commit/00bfc969) -* __GraphQL__ - * Improved field highlighting for GraphQL ([#1711](https://github.com/PrismJS/prism/issues/1711)) [`44aeffb9`](https://github.com/PrismJS/prism/commit/44aeffb9) - * Added GraphQL improvements and tests ([#1788](https://github.com/PrismJS/prism/issues/1788)) [`b2298b12`](https://github.com/PrismJS/prism/commit/b2298b12) -* __Haskell__ - * Added `hs` alias for Haskell ([#1831](https://github.com/PrismJS/prism/issues/1831)) [`64baec3c`](https://github.com/PrismJS/prism/commit/64baec3c) -* __HTTP__ - * Improved HTTP content highlighting ([#1598](https://github.com/PrismJS/prism/issues/1598)) [`1b75da90`](https://github.com/PrismJS/prism/commit/1b75da90) -* __Ini__ - * Add support for # comments to INI language ([#1730](https://github.com/PrismJS/prism/issues/1730)) [`baf6bb0c`](https://github.com/PrismJS/prism/commit/baf6bb0c) -* __Java__ - * Add Java 10 support ([#1549](https://github.com/PrismJS/prism/issues/1549)) [`8c981a22`](https://github.com/PrismJS/prism/commit/8c981a22) - * Added module keywords to Java. ([#1655](https://github.com/PrismJS/prism/issues/1655)) [`6e250a5f`](https://github.com/PrismJS/prism/commit/6e250a5f) - * Improve Java ([#1474](https://github.com/PrismJS/prism/issues/1474)) [`81bd8f0b`](https://github.com/PrismJS/prism/commit/81bd8f0b) -* __JavaScript__ - * Fix regex for `catch` and `finally` ([#1527](https://github.com/PrismJS/prism/issues/1527)) [`ebd1b9a6`](https://github.com/PrismJS/prism/commit/ebd1b9a6) - * Highlighting of supposed classes and functions ([#1482](https://github.com/PrismJS/prism/issues/1482)) [`c40f6047`](https://github.com/PrismJS/prism/commit/c40f6047) - * Added support for JS BigInt literals ([#1542](https://github.com/PrismJS/prism/issues/1542)) [`2b62e57b`](https://github.com/PrismJS/prism/commit/2b62e57b) - * Fixed lowercase supposed class names ([#1544](https://github.com/PrismJS/prism/issues/1544)) [`a47c05ad`](https://github.com/PrismJS/prism/commit/a47c05ad) - * Fixes regex for JS examples ([#1591](https://github.com/PrismJS/prism/issues/1591)) [`b41fb8f1`](https://github.com/PrismJS/prism/commit/b41fb8f1) - * Improve regex detection in JS ([#1473](https://github.com/PrismJS/prism/issues/1473)) [`2a4758ab`](https://github.com/PrismJS/prism/commit/2a4758ab) - * Identify JavaScript function parameters ([#1446](https://github.com/PrismJS/prism/issues/1446)) [`0cc8c56a`](https://github.com/PrismJS/prism/commit/0cc8c56a) - * Improved JavaScript parameter recognization ([#1722](https://github.com/PrismJS/prism/issues/1722)) [`57a92035`](https://github.com/PrismJS/prism/commit/57a92035) - * Make `undefined` a keyword in JS ([#1740](https://github.com/PrismJS/prism/issues/1740)) [`d9fa29a8`](https://github.com/PrismJS/prism/commit/d9fa29a8) - * Fix `function-variable` in JS ([#1739](https://github.com/PrismJS/prism/issues/1739)) [`bfbea4d6`](https://github.com/PrismJS/prism/commit/bfbea4d6) - * Improved JS constant pattern ([#1737](https://github.com/PrismJS/prism/issues/1737)) [`7bcec584`](https://github.com/PrismJS/prism/commit/7bcec584) - * Improved JS function pattern ([#1736](https://github.com/PrismJS/prism/issues/1736)) [`8378ac83`](https://github.com/PrismJS/prism/commit/8378ac83) - * JS: Fixed variables named "async" ([#1738](https://github.com/PrismJS/prism/issues/1738)) [`3560c643`](https://github.com/PrismJS/prism/commit/3560c643) - * JS: Keyword fix ([#1808](https://github.com/PrismJS/prism/issues/1808)) [`f2d8e1c7`](https://github.com/PrismJS/prism/commit/f2d8e1c7) -* __JSON__ / __JSONP__ - * Fix bugs in JSON language ([#1479](https://github.com/PrismJS/prism/issues/1479)) [`74fe81c6`](https://github.com/PrismJS/prism/commit/74fe81c6) - * Adds support for comments in JSON ([#1595](https://github.com/PrismJS/prism/issues/1595)) [`8720b3e6`](https://github.com/PrismJS/prism/commit/8720b3e6) - * Cleaned up JSON ([#1596](https://github.com/PrismJS/prism/issues/1596)) [`da474c77`](https://github.com/PrismJS/prism/commit/da474c77) - * Added `keyword` alias to JSON's `null` ([#1733](https://github.com/PrismJS/prism/issues/1733)) [`eee06649`](https://github.com/PrismJS/prism/commit/eee06649) - * Fix JSONP support ([#1745](https://github.com/PrismJS/prism/issues/1745)) [`b5041cf9`](https://github.com/PrismJS/prism/commit/b5041cf9) - * Fixed JSON/JSONP examples ([#1765](https://github.com/PrismJS/prism/issues/1765)) [`ae4842db`](https://github.com/PrismJS/prism/commit/ae4842db) -* __JSX__ - * React component tags are styled as classes in JSX ([#1519](https://github.com/PrismJS/prism/issues/1519)) [`3e1a9a3d`](https://github.com/PrismJS/prism/commit/3e1a9a3d) - * Support JSX/TSX class-name with dot ([#1725](https://github.com/PrismJS/prism/issues/1725)) [`4362e42c`](https://github.com/PrismJS/prism/commit/4362e42c) -* __Less__ - * Remove useless insertBefore in LESS ([#1629](https://github.com/PrismJS/prism/issues/1629)) [`86d31793`](https://github.com/PrismJS/prism/commit/86d31793) -* __Lisp__ - * Fix Lisp exponential string pattern ([#1763](https://github.com/PrismJS/prism/issues/1763)) [`5bd182c0`](https://github.com/PrismJS/prism/commit/5bd182c0)) -* __Markdown__ - * Added strike support to markdown ([#1563](https://github.com/PrismJS/prism/issues/1563)) [`9d2fddc2`](https://github.com/PrismJS/prism/commit/9d2fddc2) - * Fixed Markdown headers ([#1557](https://github.com/PrismJS/prism/issues/1557)) [`c6584290`](https://github.com/PrismJS/prism/commit/c6584290) - * Add support for code blocks in Markdown ([#1562](https://github.com/PrismJS/prism/issues/1562)) [`b0717e70`](https://github.com/PrismJS/prism/commit/b0717e70) - * Markdown: The 'md' alias is now recognized by hooks ([#1771](https://github.com/PrismJS/prism/issues/1771)) [`8ca3d65b`](https://github.com/PrismJS/prism/commit/8ca3d65b) -* __Markup__ - * Decouple XML from Markup ([#1603](https://github.com/PrismJS/prism/issues/1603)) [`0030a4ef`](https://github.com/PrismJS/prism/commit/0030a4ef) - * Fix for markup attributes ([#1752](https://github.com/PrismJS/prism/issues/1752)) [`c3862a24`](https://github.com/PrismJS/prism/commit/c3862a24) - * Markup: Added support for CSS and JS inside of CDATAs ([#1660](https://github.com/PrismJS/prism/issues/1660)) [`57127701`](https://github.com/PrismJS/prism/commit/57127701) - * Markup `addInline` improvements ([#1798](https://github.com/PrismJS/prism/issues/1798)) [`af67c32e`](https://github.com/PrismJS/prism/commit/af67c32e) -* __Markup Templating__ - * Markup-templating improvements ([#1653](https://github.com/PrismJS/prism/issues/1653)) [`b62e282b`](https://github.com/PrismJS/prism/commit/b62e282b) -* __nginx__ - * Add new keywords to nginx ([#1587](https://github.com/PrismJS/prism/issues/1587)) [`0d73f7f5`](https://github.com/PrismJS/prism/commit/0d73f7f5) -* __PHP__ - * Update PHP keywords ([#1690](https://github.com/PrismJS/prism/issues/1690)) [`55fb0f8e`](https://github.com/PrismJS/prism/commit/55fb0f8e) - * Improve recognition of constants in PHP ([#1688](https://github.com/PrismJS/prism/issues/1688)) [`f1026b4b`](https://github.com/PrismJS/prism/commit/f1026b4b) - * Made false, true, and null constants in PHP ([#1694](https://github.com/PrismJS/prism/issues/1694)) [`439e3bd7`](https://github.com/PrismJS/prism/commit/439e3bd7) - * PHP: Fixed closing tag issue ([#1652](https://github.com/PrismJS/prism/issues/1652)) [`289ddd9b`](https://github.com/PrismJS/prism/commit/289ddd9b) -* __Python__ - * Operator keywords are now keywords ([#1617](https://github.com/PrismJS/prism/issues/1617)) [`1d1fb800`](https://github.com/PrismJS/prism/commit/1d1fb800) - * Add decorator support to Python ([#1639](https://github.com/PrismJS/prism/issues/1639)) [`2577b6e6`](https://github.com/PrismJS/prism/commit/2577b6e6) - * Improvements to Python F-strings and string prefixes ([#1642](https://github.com/PrismJS/prism/issues/1642)) [`a69c2b62`](https://github.com/PrismJS/prism/commit/a69c2b62) -* __Reason__ - * Added additional operators to Reason ([#1648](https://github.com/PrismJS/prism/issues/1648)) [`8b1bb469`](https://github.com/PrismJS/prism/commit/8b1bb469) -* __Ruby__ - * Consistent Ruby method highlighting ([#1523](https://github.com/PrismJS/prism/issues/1523)) [`72775919`](https://github.com/PrismJS/prism/commit/72775919) - * Ruby/ERB: Fixed block comments ([#1768](https://github.com/PrismJS/prism/issues/1768)) [`c805f859`](https://github.com/PrismJS/prism/commit/c805f859) -* __Rust__ - * Add missing keywords ([#1634](https://github.com/PrismJS/prism/issues/1634)) [`3590edde`](https://github.com/PrismJS/prism/commit/3590edde) -* __SAS__ - * Added new SAS keywords ([#1784](https://github.com/PrismJS/prism/issues/1784)) [`3b396ef5`](https://github.com/PrismJS/prism/commit/3b396ef5) -* __Scheme__ - * Fix function without arguments in scheme language ([#1463](https://github.com/PrismJS/prism/issues/1463)) [`12a827e7`](https://github.com/PrismJS/prism/commit/12a827e7) - * Scheme improvements ([#1556](https://github.com/PrismJS/prism/issues/1556)) [`225dd3f7`](https://github.com/PrismJS/prism/commit/225dd3f7) - * Fixed operator-like functions in Scheme ([#1467](https://github.com/PrismJS/prism/issues/1467)) [`f8c8add2`](https://github.com/PrismJS/prism/commit/f8c8add2) - * Scheme: Minor improvements ([#1814](https://github.com/PrismJS/prism/issues/1814)) [`191830f2`](https://github.com/PrismJS/prism/commit/191830f2) -* __SCSS__ - * Fixed that selector pattern can take exponential time ([#1499](https://github.com/PrismJS/prism/issues/1499)) [`0f75d9d4`](https://github.com/PrismJS/prism/commit/0f75d9d4) - * Move SCSS `property` definition ([#1633](https://github.com/PrismJS/prism/issues/1633)) [`0536fb14`](https://github.com/PrismJS/prism/commit/0536fb14) - * Add `keyword` alias for SCSS' `null` ([#1735](https://github.com/PrismJS/prism/issues/1735)) [`bd0378f0`](https://github.com/PrismJS/prism/commit/bd0378f0) -* __Smalltalk__ - * Allowed empty strings and comments ([#1747](https://github.com/PrismJS/prism/issues/1747)) [`5fd7577a`](https://github.com/PrismJS/prism/commit/5fd7577a) -* __Smarty__ - * Removed useless `insertBefore` call in Smarty ([#1677](https://github.com/PrismJS/prism/issues/1677)) [`bc49c361`](https://github.com/PrismJS/prism/commit/bc49c361) -* __SQL__ - * Added support for quote escapes to SQL strings ([#1500](https://github.com/PrismJS/prism/issues/1500)) [`a59a7926`](https://github.com/PrismJS/prism/commit/a59a7926) - * SQL Quoted variables are now greedy ([#1510](https://github.com/PrismJS/prism/issues/1510)) [`42d119a2`](https://github.com/PrismJS/prism/commit/42d119a2) -* __TypeScript__ - * Enhance definitions in TypeScript component ([#1522](https://github.com/PrismJS/prism/issues/1522)) [`11695629`](https://github.com/PrismJS/prism/commit/11695629) -* __YAML__ - * Allow YAML strings to have trailing comments ([#1602](https://github.com/PrismJS/prism/issues/1602)) [`1c5f28a9`](https://github.com/PrismJS/prism/commit/1c5f28a9) +- Fixed dependencies of Pug and Pure ([#1759](https://github.com/PrismJS/prism/issues/1759)) [`c9a32674`](https://github.com/PrismJS/prism/commit/c9a32674) +- Add file extensions support for major languages ([#1478](https://github.com/PrismJS/prism/issues/1478)) [`0c8f6504`](https://github.com/PrismJS/prism/commit/0c8f6504) +- Fixed patterns which can match the empty string ([#1775](https://github.com/PrismJS/prism/issues/1775)) [`86dd3e42`](https://github.com/PrismJS/prism/commit/86dd3e42) +- More variables for better code compression ([#1489](https://github.com/PrismJS/prism/issues/1489)) [`bc53e093`](https://github.com/PrismJS/prism/commit/bc53e093) +- Added missing aliases ([#1830](https://github.com/PrismJS/prism/issues/1830)) [`8d28c74c`](https://github.com/PrismJS/prism/commit/8d28c74c) +- Replaced all occurrences of `new RegExp` with `RegExp` ([#1493](https://github.com/PrismJS/prism/issues/1493)) [`44fed4d3`](https://github.com/PrismJS/prism/commit/44fed4d3) +- Added missing aliases to components.json ([#1503](https://github.com/PrismJS/prism/issues/1503)) [`2fb66e04`](https://github.com/PrismJS/prism/commit/2fb66e04) +- **Apacheconf** + - Apache config: Minor improvements + new keyword ([#1823](https://github.com/PrismJS/prism/issues/1823)) [`a91be7b2`](https://github.com/PrismJS/prism/commit/a91be7b2) +- **AsciiDoc** + - Added `adoc` alias for AsciiDoc ([#1685](https://github.com/PrismJS/prism/issues/1685)) [`88434f7a`](https://github.com/PrismJS/prism/commit/88434f7a) +- **Bash** + - Add additional commands to bash ([#1577](https://github.com/PrismJS/prism/issues/1577)) [`a2230c38`](https://github.com/PrismJS/prism/commit/a2230c38) + - Added `yarn add` to bash functions ([#1731](https://github.com/PrismJS/prism/issues/1731)) [`3a32cb75`](https://github.com/PrismJS/prism/commit/3a32cb75) + - Added `pnpm` function to Bash ([#1734](https://github.com/PrismJS/prism/issues/1734)) [`fccfb98d`](https://github.com/PrismJS/prism/commit/fccfb98d) +- **Batch** + - Remove batch's shell alias ([#1543](https://github.com/PrismJS/prism/issues/1543)) [`7155e60f`](https://github.com/PrismJS/prism/commit/7155e60f) +- **C** + - Improve C language ([#1697](https://github.com/PrismJS/prism/issues/1697)) [`7eccea5c`](https://github.com/PrismJS/prism/commit/7eccea5c) +- **C-like** + - Simplify function pattern of C-like language ([#1552](https://github.com/PrismJS/prism/issues/1552)) [`b520e1b6`](https://github.com/PrismJS/prism/commit/b520e1b6) +- **C/C++/Java** + - Operator fixes ([#1528](https://github.com/PrismJS/prism/issues/1528)) [`7af8f8be`](https://github.com/PrismJS/prism/commit/7af8f8be) +- **C#** + - Improvements to C# operator and punctuation ([#1532](https://github.com/PrismJS/prism/issues/1532)) [`3b1e0916`](https://github.com/PrismJS/prism/commit/3b1e0916) +- **CSS** + - Fix tokenizing !important ([#1585](https://github.com/PrismJS/prism/issues/1585)) [`c1d6cb85`](https://github.com/PrismJS/prism/commit/c1d6cb85) + - Added the comma to the list of CSS punctuation [`7ea2ff28`](https://github.com/PrismJS/prism/commit/7ea2ff28) + - CSS: Comma punctuation ([#1632](https://github.com/PrismJS/prism/issues/1632)) [`1b812386`](https://github.com/PrismJS/prism/commit/1b812386) + - Reuse CSS selector pattern in CSS Extras ([#1637](https://github.com/PrismJS/prism/issues/1637)) [`e2f2fd19`](https://github.com/PrismJS/prism/commit/e2f2fd19) + - Fixed CSS extra variable ([#1649](https://github.com/PrismJS/prism/issues/1649)) [`9de47d3a`](https://github.com/PrismJS/prism/commit/9de47d3a) + - Identify CSS units and variables ([#1450](https://github.com/PrismJS/prism/issues/1450)) [`5fcee966`](https://github.com/PrismJS/prism/commit/5fcee966) + - Allow multiline CSS at-rules ([#1676](https://github.com/PrismJS/prism/issues/1676)) [`4f6f3c7d`](https://github.com/PrismJS/prism/commit/4f6f3c7d) + - CSS: Highlight attribute selector ([#1671](https://github.com/PrismJS/prism/issues/1671)) [`245b59d4`](https://github.com/PrismJS/prism/commit/245b59d4) + - CSS: Selectors can contain any string ([#1638](https://github.com/PrismJS/prism/issues/1638)) [`a2d445d0`](https://github.com/PrismJS/prism/commit/a2d445d0) + - CSS extras: Highlighting for pseudo class arguments ([#1650](https://github.com/PrismJS/prism/issues/1650)) [`70a40414`](https://github.com/PrismJS/prism/commit/70a40414) +- **Django** + - Django/Jinja2 improvements ([#1800](https://github.com/PrismJS/prism/issues/1800)) [`f2467488`](https://github.com/PrismJS/prism/commit/f2467488) +- **F#** + - Chars can only contain one character ([#1570](https://github.com/PrismJS/prism/issues/1570)) [`f96b083a`](https://github.com/PrismJS/prism/commit/f96b083a) + - Improve F# ([#1573](https://github.com/PrismJS/prism/issues/1573)) [`00bfc969`](https://github.com/PrismJS/prism/commit/00bfc969) +- **GraphQL** + - Improved field highlighting for GraphQL ([#1711](https://github.com/PrismJS/prism/issues/1711)) [`44aeffb9`](https://github.com/PrismJS/prism/commit/44aeffb9) + - Added GraphQL improvements and tests ([#1788](https://github.com/PrismJS/prism/issues/1788)) [`b2298b12`](https://github.com/PrismJS/prism/commit/b2298b12) +- **Haskell** + - Added `hs` alias for Haskell ([#1831](https://github.com/PrismJS/prism/issues/1831)) [`64baec3c`](https://github.com/PrismJS/prism/commit/64baec3c) +- **HTTP** + - Improved HTTP content highlighting ([#1598](https://github.com/PrismJS/prism/issues/1598)) [`1b75da90`](https://github.com/PrismJS/prism/commit/1b75da90) +- **Ini** + - Add support for # comments to INI language ([#1730](https://github.com/PrismJS/prism/issues/1730)) [`baf6bb0c`](https://github.com/PrismJS/prism/commit/baf6bb0c) +- **Java** + - Add Java 10 support ([#1549](https://github.com/PrismJS/prism/issues/1549)) [`8c981a22`](https://github.com/PrismJS/prism/commit/8c981a22) + - Added module keywords to Java. ([#1655](https://github.com/PrismJS/prism/issues/1655)) [`6e250a5f`](https://github.com/PrismJS/prism/commit/6e250a5f) + - Improve Java ([#1474](https://github.com/PrismJS/prism/issues/1474)) [`81bd8f0b`](https://github.com/PrismJS/prism/commit/81bd8f0b) +- **JavaScript** + - Fix regex for `catch` and `finally` ([#1527](https://github.com/PrismJS/prism/issues/1527)) [`ebd1b9a6`](https://github.com/PrismJS/prism/commit/ebd1b9a6) + - Highlighting of supposed classes and functions ([#1482](https://github.com/PrismJS/prism/issues/1482)) [`c40f6047`](https://github.com/PrismJS/prism/commit/c40f6047) + - Added support for JS BigInt literals ([#1542](https://github.com/PrismJS/prism/issues/1542)) [`2b62e57b`](https://github.com/PrismJS/prism/commit/2b62e57b) + - Fixed lowercase supposed class names ([#1544](https://github.com/PrismJS/prism/issues/1544)) [`a47c05ad`](https://github.com/PrismJS/prism/commit/a47c05ad) + - Fixes regex for JS examples ([#1591](https://github.com/PrismJS/prism/issues/1591)) [`b41fb8f1`](https://github.com/PrismJS/prism/commit/b41fb8f1) + - Improve regex detection in JS ([#1473](https://github.com/PrismJS/prism/issues/1473)) [`2a4758ab`](https://github.com/PrismJS/prism/commit/2a4758ab) + - Identify JavaScript function parameters ([#1446](https://github.com/PrismJS/prism/issues/1446)) [`0cc8c56a`](https://github.com/PrismJS/prism/commit/0cc8c56a) + - Improved JavaScript parameter recognization ([#1722](https://github.com/PrismJS/prism/issues/1722)) [`57a92035`](https://github.com/PrismJS/prism/commit/57a92035) + - Make `undefined` a keyword in JS ([#1740](https://github.com/PrismJS/prism/issues/1740)) [`d9fa29a8`](https://github.com/PrismJS/prism/commit/d9fa29a8) + - Fix `function-variable` in JS ([#1739](https://github.com/PrismJS/prism/issues/1739)) [`bfbea4d6`](https://github.com/PrismJS/prism/commit/bfbea4d6) + - Improved JS constant pattern ([#1737](https://github.com/PrismJS/prism/issues/1737)) [`7bcec584`](https://github.com/PrismJS/prism/commit/7bcec584) + - Improved JS function pattern ([#1736](https://github.com/PrismJS/prism/issues/1736)) [`8378ac83`](https://github.com/PrismJS/prism/commit/8378ac83) + - JS: Fixed variables named "async" ([#1738](https://github.com/PrismJS/prism/issues/1738)) [`3560c643`](https://github.com/PrismJS/prism/commit/3560c643) + - JS: Keyword fix ([#1808](https://github.com/PrismJS/prism/issues/1808)) [`f2d8e1c7`](https://github.com/PrismJS/prism/commit/f2d8e1c7) +- **JSON** / **JSONP** + - Fix bugs in JSON language ([#1479](https://github.com/PrismJS/prism/issues/1479)) [`74fe81c6`](https://github.com/PrismJS/prism/commit/74fe81c6) + - Adds support for comments in JSON ([#1595](https://github.com/PrismJS/prism/issues/1595)) [`8720b3e6`](https://github.com/PrismJS/prism/commit/8720b3e6) + - Cleaned up JSON ([#1596](https://github.com/PrismJS/prism/issues/1596)) [`da474c77`](https://github.com/PrismJS/prism/commit/da474c77) + - Added `keyword` alias to JSON's `null` ([#1733](https://github.com/PrismJS/prism/issues/1733)) [`eee06649`](https://github.com/PrismJS/prism/commit/eee06649) + - Fix JSONP support ([#1745](https://github.com/PrismJS/prism/issues/1745)) [`b5041cf9`](https://github.com/PrismJS/prism/commit/b5041cf9) + - Fixed JSON/JSONP examples ([#1765](https://github.com/PrismJS/prism/issues/1765)) [`ae4842db`](https://github.com/PrismJS/prism/commit/ae4842db) +- **JSX** + - React component tags are styled as classes in JSX ([#1519](https://github.com/PrismJS/prism/issues/1519)) [`3e1a9a3d`](https://github.com/PrismJS/prism/commit/3e1a9a3d) + - Support JSX/TSX class-name with dot ([#1725](https://github.com/PrismJS/prism/issues/1725)) [`4362e42c`](https://github.com/PrismJS/prism/commit/4362e42c) +- **Less** + - Remove useless insertBefore in LESS ([#1629](https://github.com/PrismJS/prism/issues/1629)) [`86d31793`](https://github.com/PrismJS/prism/commit/86d31793) +- **Lisp** + - Fix Lisp exponential string pattern ([#1763](https://github.com/PrismJS/prism/issues/1763)) [`5bd182c0`](https://github.com/PrismJS/prism/commit/5bd182c0)) +- **Markdown** + - Added strike support to markdown ([#1563](https://github.com/PrismJS/prism/issues/1563)) [`9d2fddc2`](https://github.com/PrismJS/prism/commit/9d2fddc2) + - Fixed Markdown headers ([#1557](https://github.com/PrismJS/prism/issues/1557)) [`c6584290`](https://github.com/PrismJS/prism/commit/c6584290) + - Add support for code blocks in Markdown ([#1562](https://github.com/PrismJS/prism/issues/1562)) [`b0717e70`](https://github.com/PrismJS/prism/commit/b0717e70) + - Markdown: The 'md' alias is now recognized by hooks ([#1771](https://github.com/PrismJS/prism/issues/1771)) [`8ca3d65b`](https://github.com/PrismJS/prism/commit/8ca3d65b) +- **Markup** + - Decouple XML from Markup ([#1603](https://github.com/PrismJS/prism/issues/1603)) [`0030a4ef`](https://github.com/PrismJS/prism/commit/0030a4ef) + - Fix for markup attributes ([#1752](https://github.com/PrismJS/prism/issues/1752)) [`c3862a24`](https://github.com/PrismJS/prism/commit/c3862a24) + - Markup: Added support for CSS and JS inside of CDATAs ([#1660](https://github.com/PrismJS/prism/issues/1660)) [`57127701`](https://github.com/PrismJS/prism/commit/57127701) + - Markup `addInline` improvements ([#1798](https://github.com/PrismJS/prism/issues/1798)) [`af67c32e`](https://github.com/PrismJS/prism/commit/af67c32e) +- **Markup Templating** + - Markup-templating improvements ([#1653](https://github.com/PrismJS/prism/issues/1653)) [`b62e282b`](https://github.com/PrismJS/prism/commit/b62e282b) +- **nginx** + - Add new keywords to nginx ([#1587](https://github.com/PrismJS/prism/issues/1587)) [`0d73f7f5`](https://github.com/PrismJS/prism/commit/0d73f7f5) +- **PHP** + - Update PHP keywords ([#1690](https://github.com/PrismJS/prism/issues/1690)) [`55fb0f8e`](https://github.com/PrismJS/prism/commit/55fb0f8e) + - Improve recognition of constants in PHP ([#1688](https://github.com/PrismJS/prism/issues/1688)) [`f1026b4b`](https://github.com/PrismJS/prism/commit/f1026b4b) + - Made false, true, and null constants in PHP ([#1694](https://github.com/PrismJS/prism/issues/1694)) [`439e3bd7`](https://github.com/PrismJS/prism/commit/439e3bd7) + - PHP: Fixed closing tag issue ([#1652](https://github.com/PrismJS/prism/issues/1652)) [`289ddd9b`](https://github.com/PrismJS/prism/commit/289ddd9b) +- **Python** + - Operator keywords are now keywords ([#1617](https://github.com/PrismJS/prism/issues/1617)) [`1d1fb800`](https://github.com/PrismJS/prism/commit/1d1fb800) + - Add decorator support to Python ([#1639](https://github.com/PrismJS/prism/issues/1639)) [`2577b6e6`](https://github.com/PrismJS/prism/commit/2577b6e6) + - Improvements to Python F-strings and string prefixes ([#1642](https://github.com/PrismJS/prism/issues/1642)) [`a69c2b62`](https://github.com/PrismJS/prism/commit/a69c2b62) +- **Reason** + - Added additional operators to Reason ([#1648](https://github.com/PrismJS/prism/issues/1648)) [`8b1bb469`](https://github.com/PrismJS/prism/commit/8b1bb469) +- **Ruby** + - Consistent Ruby method highlighting ([#1523](https://github.com/PrismJS/prism/issues/1523)) [`72775919`](https://github.com/PrismJS/prism/commit/72775919) + - Ruby/ERB: Fixed block comments ([#1768](https://github.com/PrismJS/prism/issues/1768)) [`c805f859`](https://github.com/PrismJS/prism/commit/c805f859) +- **Rust** + - Add missing keywords ([#1634](https://github.com/PrismJS/prism/issues/1634)) [`3590edde`](https://github.com/PrismJS/prism/commit/3590edde) +- **SAS** + - Added new SAS keywords ([#1784](https://github.com/PrismJS/prism/issues/1784)) [`3b396ef5`](https://github.com/PrismJS/prism/commit/3b396ef5) +- **Scheme** + - Fix function without arguments in scheme language ([#1463](https://github.com/PrismJS/prism/issues/1463)) [`12a827e7`](https://github.com/PrismJS/prism/commit/12a827e7) + - Scheme improvements ([#1556](https://github.com/PrismJS/prism/issues/1556)) [`225dd3f7`](https://github.com/PrismJS/prism/commit/225dd3f7) + - Fixed operator-like functions in Scheme ([#1467](https://github.com/PrismJS/prism/issues/1467)) [`f8c8add2`](https://github.com/PrismJS/prism/commit/f8c8add2) + - Scheme: Minor improvements ([#1814](https://github.com/PrismJS/prism/issues/1814)) [`191830f2`](https://github.com/PrismJS/prism/commit/191830f2) +- **SCSS** + - Fixed that selector pattern can take exponential time ([#1499](https://github.com/PrismJS/prism/issues/1499)) [`0f75d9d4`](https://github.com/PrismJS/prism/commit/0f75d9d4) + - Move SCSS `property` definition ([#1633](https://github.com/PrismJS/prism/issues/1633)) [`0536fb14`](https://github.com/PrismJS/prism/commit/0536fb14) + - Add `keyword` alias for SCSS' `null` ([#1735](https://github.com/PrismJS/prism/issues/1735)) [`bd0378f0`](https://github.com/PrismJS/prism/commit/bd0378f0) +- **Smalltalk** + - Allowed empty strings and comments ([#1747](https://github.com/PrismJS/prism/issues/1747)) [`5fd7577a`](https://github.com/PrismJS/prism/commit/5fd7577a) +- **Smarty** + - Removed useless `insertBefore` call in Smarty ([#1677](https://github.com/PrismJS/prism/issues/1677)) [`bc49c361`](https://github.com/PrismJS/prism/commit/bc49c361) +- **SQL** + - Added support for quote escapes to SQL strings ([#1500](https://github.com/PrismJS/prism/issues/1500)) [`a59a7926`](https://github.com/PrismJS/prism/commit/a59a7926) + - SQL Quoted variables are now greedy ([#1510](https://github.com/PrismJS/prism/issues/1510)) [`42d119a2`](https://github.com/PrismJS/prism/commit/42d119a2) +- **TypeScript** + - Enhance definitions in TypeScript component ([#1522](https://github.com/PrismJS/prism/issues/1522)) [`11695629`](https://github.com/PrismJS/prism/commit/11695629) +- **YAML** + - Allow YAML strings to have trailing comments ([#1602](https://github.com/PrismJS/prism/issues/1602)) [`1c5f28a9`](https://github.com/PrismJS/prism/commit/1c5f28a9) ### Updated plugins -* Better class name detection for plugins ([#1772](https://github.com/PrismJS/prism/issues/1772)) [`c9762c6f`](https://github.com/PrismJS/prism/commit/c9762c6f) -* __Autolinker__ - * Fix Autolinker url-decoding all tokens ([#1723](https://github.com/PrismJS/prism/issues/1723)) [`8cf20d49`](https://github.com/PrismJS/prism/commit/8cf20d49) -* __Autoloader__ - * Resolved variable name clash ([#1568](https://github.com/PrismJS/prism/issues/1568)) [`bfa5a8d9`](https://github.com/PrismJS/prism/commit/bfa5a8d9) - * Autoloader: Fixed the directory of scripts ([#1828](https://github.com/PrismJS/prism/issues/1828)) [`fd4c764f`](https://github.com/PrismJS/prism/commit/fd4c764f) - * Autoloader: Added support for aliases ([#1829](https://github.com/PrismJS/prism/issues/1829)) [`52889b5b`](https://github.com/PrismJS/prism/commit/52889b5b) -* __Command Line__ - * Fixed class regex for Command Line plugin ([#1566](https://github.com/PrismJS/prism/issues/1566)) [`9f6e5026`](https://github.com/PrismJS/prism/commit/9f6e5026) -* __File Highlight__ - * Prevent double-loading & add scope to File Highlight ([#1586](https://github.com/PrismJS/prism/issues/1586)) [`10239c14`](https://github.com/PrismJS/prism/commit/10239c14) -* __JSONP Highlight__ - * Cleanup JSONP highlight code ([#1674](https://github.com/PrismJS/prism/issues/1674)) [`28489698`](https://github.com/PrismJS/prism/commit/28489698) - * Fix typos & other issues in JSONP docs ([#1672](https://github.com/PrismJS/prism/issues/1672)) [`cd058a91`](https://github.com/PrismJS/prism/commit/cd058a91) - * JSONP highlight: Fixed minified adapter names ([#1793](https://github.com/PrismJS/prism/issues/1793)) [`5dd8f916`](https://github.com/PrismJS/prism/commit/5dd8f916) -* __Keep Markup__ - * Add unit tests to the Keep Markup plugin ([#1646](https://github.com/PrismJS/prism/issues/1646)) [`a944c418`](https://github.com/PrismJS/prism/commit/a944c418) -* __Line Numbers__ - * Added inheritance for the `line-numbers` class ([#1799](https://github.com/PrismJS/prism/issues/1799)) [`14be7489`](https://github.com/PrismJS/prism/commit/14be7489) -* __Previewers__ - * Fixed Previewers bug [#1496](https://github.com/PrismJS/prism/issues/1496) ([#1497](https://github.com/PrismJS/prism/issues/1497)) [`4b56f3c1`](https://github.com/PrismJS/prism/commit/4b56f3c1) -* __Show Invisibles__ - * Updated styles of show invisibles ([#1607](https://github.com/PrismJS/prism/issues/1607)) [`2ba62268`](https://github.com/PrismJS/prism/commit/2ba62268) - * Corrected load order of Show Invisibles ([#1612](https://github.com/PrismJS/prism/issues/1612)) [`6e0c6e86`](https://github.com/PrismJS/prism/commit/6e0c6e86) - * Show invisibles inside tokens ([#1610](https://github.com/PrismJS/prism/issues/1610)) [`1090b253`](https://github.com/PrismJS/prism/commit/1090b253) -* __Show Language__ - * Show Language plugin alias support and improvements ([#1683](https://github.com/PrismJS/prism/issues/1683)) [`4c66d72c`](https://github.com/PrismJS/prism/commit/4c66d72c) -* __Toolbar__ - * Toolbar: Minor improvements ([#1818](https://github.com/PrismJS/prism/issues/1818)) [`3ad47047`](https://github.com/PrismJS/prism/commit/3ad47047) +- Better class name detection for plugins ([#1772](https://github.com/PrismJS/prism/issues/1772)) [`c9762c6f`](https://github.com/PrismJS/prism/commit/c9762c6f) +- **Autolinker** + - Fix Autolinker url-decoding all tokens ([#1723](https://github.com/PrismJS/prism/issues/1723)) [`8cf20d49`](https://github.com/PrismJS/prism/commit/8cf20d49) +- **Autoloader** + - Resolved variable name clash ([#1568](https://github.com/PrismJS/prism/issues/1568)) [`bfa5a8d9`](https://github.com/PrismJS/prism/commit/bfa5a8d9) + - Autoloader: Fixed the directory of scripts ([#1828](https://github.com/PrismJS/prism/issues/1828)) [`fd4c764f`](https://github.com/PrismJS/prism/commit/fd4c764f) + - Autoloader: Added support for aliases ([#1829](https://github.com/PrismJS/prism/issues/1829)) [`52889b5b`](https://github.com/PrismJS/prism/commit/52889b5b) +- **Command Line** + - Fixed class regex for Command Line plugin ([#1566](https://github.com/PrismJS/prism/issues/1566)) [`9f6e5026`](https://github.com/PrismJS/prism/commit/9f6e5026) +- **File Highlight** + - Prevent double-loading & add scope to File Highlight ([#1586](https://github.com/PrismJS/prism/issues/1586)) [`10239c14`](https://github.com/PrismJS/prism/commit/10239c14) +- **JSONP Highlight** + - Cleanup JSONP highlight code ([#1674](https://github.com/PrismJS/prism/issues/1674)) [`28489698`](https://github.com/PrismJS/prism/commit/28489698) + - Fix typos & other issues in JSONP docs ([#1672](https://github.com/PrismJS/prism/issues/1672)) [`cd058a91`](https://github.com/PrismJS/prism/commit/cd058a91) + - JSONP highlight: Fixed minified adapter names ([#1793](https://github.com/PrismJS/prism/issues/1793)) [`5dd8f916`](https://github.com/PrismJS/prism/commit/5dd8f916) +- **Keep Markup** + - Add unit tests to the Keep Markup plugin ([#1646](https://github.com/PrismJS/prism/issues/1646)) [`a944c418`](https://github.com/PrismJS/prism/commit/a944c418) +- **Line Numbers** + - Added inheritance for the `line-numbers` class ([#1799](https://github.com/PrismJS/prism/issues/1799)) [`14be7489`](https://github.com/PrismJS/prism/commit/14be7489) +- **Previewers** + - Fixed Previewers bug [#1496](https://github.com/PrismJS/prism/issues/1496) ([#1497](https://github.com/PrismJS/prism/issues/1497)) [`4b56f3c1`](https://github.com/PrismJS/prism/commit/4b56f3c1) +- **Show Invisibles** + - Updated styles of show invisibles ([#1607](https://github.com/PrismJS/prism/issues/1607)) [`2ba62268`](https://github.com/PrismJS/prism/commit/2ba62268) + - Corrected load order of Show Invisibles ([#1612](https://github.com/PrismJS/prism/issues/1612)) [`6e0c6e86`](https://github.com/PrismJS/prism/commit/6e0c6e86) + - Show invisibles inside tokens ([#1610](https://github.com/PrismJS/prism/issues/1610)) [`1090b253`](https://github.com/PrismJS/prism/commit/1090b253) +- **Show Language** + - Show Language plugin alias support and improvements ([#1683](https://github.com/PrismJS/prism/issues/1683)) [`4c66d72c`](https://github.com/PrismJS/prism/commit/4c66d72c) +- **Toolbar** + - Toolbar: Minor improvements ([#1818](https://github.com/PrismJS/prism/issues/1818)) [`3ad47047`](https://github.com/PrismJS/prism/commit/3ad47047) ### Updated themes -* Normalized the font-size of pre and code ([#1791](https://github.com/PrismJS/prism/issues/1791)) [`878ef295`](https://github.com/PrismJS/prism/commit/878ef295) -* __Coy__ - * Correct typo ([#1508](https://github.com/PrismJS/prism/issues/1508)) [`c322fc80`](https://github.com/PrismJS/prism/commit/c322fc80) +- Normalized the font-size of pre and code ([#1791](https://github.com/PrismJS/prism/issues/1791)) [`878ef295`](https://github.com/PrismJS/prism/commit/878ef295) +- **Coy** + - Correct typo ([#1508](https://github.com/PrismJS/prism/issues/1508)) [`c322fc80`](https://github.com/PrismJS/prism/commit/c322fc80) ### Other changes -* __Core__ - * `insertBefore` now correctly updates references ([#1531](https://github.com/PrismJS/prism/issues/1531)) [`9dfec340`](https://github.com/PrismJS/prism/commit/9dfec340) - * Invoke `callback` after `after-highlight` hook ([#1588](https://github.com/PrismJS/prism/issues/1588)) [`bfbe4464`](https://github.com/PrismJS/prism/commit/bfbe4464) - * Improve `Prism.util.type` performance ([#1545](https://github.com/PrismJS/prism/issues/1545)) [`2864fe24`](https://github.com/PrismJS/prism/commit/2864fe24) - * Remove unused `insertBefore` overload ([#1631](https://github.com/PrismJS/prism/issues/1631)) [`39686e12`](https://github.com/PrismJS/prism/commit/39686e12) - * Ignore duplicates in insertBefore ([#1628](https://github.com/PrismJS/prism/issues/1628)) [`d33d259c`](https://github.com/PrismJS/prism/commit/d33d259c) - * Remove the Prism.tokenize language parameter ([#1654](https://github.com/PrismJS/prism/issues/1654)) [`fbf0b094`](https://github.com/PrismJS/prism/commit/fbf0b094) - * Call `insert-before` hook properly ([#1709](https://github.com/PrismJS/prism/issues/1709)) [`393ab164`](https://github.com/PrismJS/prism/commit/393ab164) - * Improved languages.DFS and util.clone ([#1506](https://github.com/PrismJS/prism/issues/1506)) [`152a68ef`](https://github.com/PrismJS/prism/commit/152a68ef) - * Core: Avoid redeclaring variables in util.clone ([#1778](https://github.com/PrismJS/prism/issues/1778)) [`b06f532f`](https://github.com/PrismJS/prism/commit/b06f532f) - * Made prism-core a little more editor friendly ([#1776](https://github.com/PrismJS/prism/issues/1776)) [`bac09f0a`](https://github.com/PrismJS/prism/commit/bac09f0a) - * Applied Array.isArray ([#1804](https://github.com/PrismJS/prism/issues/1804)) [`11d0f75e`](https://github.com/PrismJS/prism/commit/11d0f75e) -* __Infrastructure__ - * Linkify changelog more + add missing PR references [`2a100db7`](https://github.com/PrismJS/prism/commit/2a100db7) - * Set default indentation size ([#1516](https://github.com/PrismJS/prism/issues/1516)) [`e63d1597`](https://github.com/PrismJS/prism/commit/e63d1597) - * Add travis repo badge to readme ([#1561](https://github.com/PrismJS/prism/issues/1561)) [`716923f4`](https://github.com/PrismJS/prism/commit/716923f4) - * Update README.md ([#1553](https://github.com/PrismJS/prism/issues/1553)) [`6d1a2c61`](https://github.com/PrismJS/prism/commit/6d1a2c61) - * Mention Prism Themes in README ([#1625](https://github.com/PrismJS/prism/issues/1625)) [`5db04656`](https://github.com/PrismJS/prism/commit/5db04656) - * Fixed CHANGELOG.md ([#1707](https://github.com/PrismJS/prism/issues/1707)) [`b1f8a65d`](https://github.com/PrismJS/prism/commit/b1f8a65d) ([#1704](https://github.com/PrismJS/prism/issues/1704)) [`66d2104a`](https://github.com/PrismJS/prism/commit/66d2104a) - * Change tested NodeJS versions ([#1651](https://github.com/PrismJS/prism/issues/1651)) [`6ec71e0b`](https://github.com/PrismJS/prism/commit/6ec71e0b) - * Inline regex source with gulp ([#1537](https://github.com/PrismJS/prism/issues/1537)) [`e894fc89`](https://github.com/PrismJS/prism/commit/e894fc89) ([#1716](https://github.com/PrismJS/prism/issues/1716)) [`217a6ea4`](https://github.com/PrismJS/prism/commit/217a6ea4) - * Improve gulp error messages with pump ([#1741](https://github.com/PrismJS/prism/issues/1741)) [`671f4ca0`](https://github.com/PrismJS/prism/commit/671f4ca0) - * Update gulp to version 4.0.0 ([#1779](https://github.com/PrismJS/prism/issues/1779)) [`06627f6a`](https://github.com/PrismJS/prism/commit/06627f6a) - * gulp: Refactoring ([#1780](https://github.com/PrismJS/prism/issues/1780)) [`6c9fe257`](https://github.com/PrismJS/prism/commit/6c9fe257) - * npm: Updated all dependencies ([#1742](https://github.com/PrismJS/prism/issues/1742)) [`9d908d5a`](https://github.com/PrismJS/prism/commit/9d908d5a) - * Tests: Pretty-printed token stream ([#1801](https://github.com/PrismJS/prism/issues/1801)) [`9ea6d600`](https://github.com/PrismJS/prism/commit/9ea6d600) - * Refactored tests ([#1795](https://github.com/PrismJS/prism/issues/1795)) [`832a9643`](https://github.com/PrismJS/prism/commit/832a9643) - * Added issue templates ([#1805](https://github.com/PrismJS/prism/issues/1805)) [`dedb475f`](https://github.com/PrismJS/prism/commit/dedb475f) - * npm: Fixed `test` script ([#1809](https://github.com/PrismJS/prism/issues/1809)) [`bc649dfa`](https://github.com/PrismJS/prism/commit/bc649dfa) - * Add command to generate CHANGELOG [`212666d3`](https://github.com/PrismJS/prism/commit/212666d3) - * Name in composer.json set to lowercase ([#1824](https://github.com/PrismJS/prism/issues/1824)) [`4f78f1d6`](https://github.com/PrismJS/prism/commit/4f78f1d6) - * Added alias tests ([#1832](https://github.com/PrismJS/prism/issues/1832)) [`5c1a6fb2`](https://github.com/PrismJS/prism/commit/5c1a6fb2) - * Travis: Fail when changed files are detected ([#1819](https://github.com/PrismJS/prism/issues/1819)) [`66b44e3b`](https://github.com/PrismJS/prism/commit/66b44e3b) - * Tests: Additional checks for Prism functions ([#1803](https://github.com/PrismJS/prism/issues/1803)) [`c3e74ea3`](https://github.com/PrismJS/prism/commit/c3e74ea3) - * Adjusted .npmignore ([#1834](https://github.com/PrismJS/prism/issues/1834)) [`29a30c62`](https://github.com/PrismJS/prism/commit/29a30c62) -* __Website__ - * Add Python triple-quoted strings "known failure" ([#1449](https://github.com/PrismJS/prism/issues/1449)) [`334c7bca`](https://github.com/PrismJS/prism/commit/334c7bca) - * Updated index.html to fix broken instructions ([#1462](https://github.com/PrismJS/prism/issues/1462)) [`7418dfdd`](https://github.com/PrismJS/prism/commit/7418dfdd) - * Improve download page typography ([#1484](https://github.com/PrismJS/prism/issues/1484)) [`b1c2f4df`](https://github.com/PrismJS/prism/commit/b1c2f4df) - * Fixed peer dependencies in download page ([#1491](https://github.com/PrismJS/prism/issues/1491)) [`9d15ff6e`](https://github.com/PrismJS/prism/commit/9d15ff6e) - * Fixed empty link in extending ([#1507](https://github.com/PrismJS/prism/issues/1507)) [`74916d48`](https://github.com/PrismJS/prism/commit/74916d48) - * Display language aliases ([#1626](https://github.com/PrismJS/prism/issues/1626)) [`654b527b`](https://github.com/PrismJS/prism/commit/654b527b) - * Clean up Previewers' page ([#1630](https://github.com/PrismJS/prism/issues/1630)) [`b0d1823c`](https://github.com/PrismJS/prism/commit/b0d1823c) - * Updated website table of contents styles ([#1681](https://github.com/PrismJS/prism/issues/1681)) [`efdd96c3`](https://github.com/PrismJS/prism/commit/efdd96c3) - * Added new third-party tutorial for using Prism in Gutenberg ([#1701](https://github.com/PrismJS/prism/issues/1701)) [`ff9ccbe5`](https://github.com/PrismJS/prism/commit/ff9ccbe5) - * Remove dead tutorial ([#1702](https://github.com/PrismJS/prism/issues/1702)) [`e2d3bc7e`](https://github.com/PrismJS/prism/commit/e2d3bc7e) - * Fix downloads page fetching from GitHub([#1684](https://github.com/PrismJS/prism/issues/1684)) [`dbd3555e`](https://github.com/PrismJS/prism/commit/dbd3555e) - * Remove parentheses from download page ([#1627](https://github.com/PrismJS/prism/issues/1627)) [`2ce0666d`](https://github.com/PrismJS/prism/commit/2ce0666d) - * Line Numbers plugin instructions clarifications ([#1719](https://github.com/PrismJS/prism/issues/1719)) [`00f4f04f`](https://github.com/PrismJS/prism/commit/00f4f04f) - * Fixed Toolbar plugin example ([#1726](https://github.com/PrismJS/prism/issues/1726)) [`5311ca32`](https://github.com/PrismJS/prism/commit/5311ca32) - * Test page: Show tokens option ([#1757](https://github.com/PrismJS/prism/issues/1757)) [`729cb28b`](https://github.com/PrismJS/prism/commit/729cb28b) - * Some encouragement for visitors of PrismJS.com to request new languages ([#1760](https://github.com/PrismJS/prism/issues/1760)) [`ea769e0b`](https://github.com/PrismJS/prism/commit/ea769e0b) - * Docs: Added missing parameter ([#1774](https://github.com/PrismJS/prism/issues/1774)) [`18f2921d`](https://github.com/PrismJS/prism/commit/18f2921d) - * More persistent test page ([#1529](https://github.com/PrismJS/prism/issues/1529)) [`3100fa31`](https://github.com/PrismJS/prism/commit/3100fa31) - * Added scripts directory ([#1781](https://github.com/PrismJS/prism/issues/1781)) [`439ea1ee`](https://github.com/PrismJS/prism/commit/439ea1ee) - * Fixed download page ([#1811](https://github.com/PrismJS/prism/issues/1811)) [`77c57446`](https://github.com/PrismJS/prism/commit/77c57446) +- **Core** + - `insertBefore` now correctly updates references ([#1531](https://github.com/PrismJS/prism/issues/1531)) [`9dfec340`](https://github.com/PrismJS/prism/commit/9dfec340) + - Invoke `callback` after `after-highlight` hook ([#1588](https://github.com/PrismJS/prism/issues/1588)) [`bfbe4464`](https://github.com/PrismJS/prism/commit/bfbe4464) + - Improve `Prism.util.type` performance ([#1545](https://github.com/PrismJS/prism/issues/1545)) [`2864fe24`](https://github.com/PrismJS/prism/commit/2864fe24) + - Remove unused `insertBefore` overload ([#1631](https://github.com/PrismJS/prism/issues/1631)) [`39686e12`](https://github.com/PrismJS/prism/commit/39686e12) + - Ignore duplicates in insertBefore ([#1628](https://github.com/PrismJS/prism/issues/1628)) [`d33d259c`](https://github.com/PrismJS/prism/commit/d33d259c) + - Remove the Prism.tokenize language parameter ([#1654](https://github.com/PrismJS/prism/issues/1654)) [`fbf0b094`](https://github.com/PrismJS/prism/commit/fbf0b094) + - Call `insert-before` hook properly ([#1709](https://github.com/PrismJS/prism/issues/1709)) [`393ab164`](https://github.com/PrismJS/prism/commit/393ab164) + - Improved languages.DFS and util.clone ([#1506](https://github.com/PrismJS/prism/issues/1506)) [`152a68ef`](https://github.com/PrismJS/prism/commit/152a68ef) + - Core: Avoid redeclaring variables in util.clone ([#1778](https://github.com/PrismJS/prism/issues/1778)) [`b06f532f`](https://github.com/PrismJS/prism/commit/b06f532f) + - Made prism-core a little more editor friendly ([#1776](https://github.com/PrismJS/prism/issues/1776)) [`bac09f0a`](https://github.com/PrismJS/prism/commit/bac09f0a) + - Applied Array.isArray ([#1804](https://github.com/PrismJS/prism/issues/1804)) [`11d0f75e`](https://github.com/PrismJS/prism/commit/11d0f75e) +- **Infrastructure** + - Linkify changelog more + add missing PR references [`2a100db7`](https://github.com/PrismJS/prism/commit/2a100db7) + - Set default indentation size ([#1516](https://github.com/PrismJS/prism/issues/1516)) [`e63d1597`](https://github.com/PrismJS/prism/commit/e63d1597) + - Add travis repo badge to readme ([#1561](https://github.com/PrismJS/prism/issues/1561)) [`716923f4`](https://github.com/PrismJS/prism/commit/716923f4) + - Update README.md ([#1553](https://github.com/PrismJS/prism/issues/1553)) [`6d1a2c61`](https://github.com/PrismJS/prism/commit/6d1a2c61) + - Mention Prism Themes in README ([#1625](https://github.com/PrismJS/prism/issues/1625)) [`5db04656`](https://github.com/PrismJS/prism/commit/5db04656) + - Fixed CHANGELOG.md ([#1707](https://github.com/PrismJS/prism/issues/1707)) [`b1f8a65d`](https://github.com/PrismJS/prism/commit/b1f8a65d) ([#1704](https://github.com/PrismJS/prism/issues/1704)) [`66d2104a`](https://github.com/PrismJS/prism/commit/66d2104a) + - Change tested NodeJS versions ([#1651](https://github.com/PrismJS/prism/issues/1651)) [`6ec71e0b`](https://github.com/PrismJS/prism/commit/6ec71e0b) + - Inline regex source with gulp ([#1537](https://github.com/PrismJS/prism/issues/1537)) [`e894fc89`](https://github.com/PrismJS/prism/commit/e894fc89) ([#1716](https://github.com/PrismJS/prism/issues/1716)) [`217a6ea4`](https://github.com/PrismJS/prism/commit/217a6ea4) + - Improve gulp error messages with pump ([#1741](https://github.com/PrismJS/prism/issues/1741)) [`671f4ca0`](https://github.com/PrismJS/prism/commit/671f4ca0) + - Update gulp to version 4.0.0 ([#1779](https://github.com/PrismJS/prism/issues/1779)) [`06627f6a`](https://github.com/PrismJS/prism/commit/06627f6a) + - gulp: Refactoring ([#1780](https://github.com/PrismJS/prism/issues/1780)) [`6c9fe257`](https://github.com/PrismJS/prism/commit/6c9fe257) + - npm: Updated all dependencies ([#1742](https://github.com/PrismJS/prism/issues/1742)) [`9d908d5a`](https://github.com/PrismJS/prism/commit/9d908d5a) + - Tests: Pretty-printed token stream ([#1801](https://github.com/PrismJS/prism/issues/1801)) [`9ea6d600`](https://github.com/PrismJS/prism/commit/9ea6d600) + - Refactored tests ([#1795](https://github.com/PrismJS/prism/issues/1795)) [`832a9643`](https://github.com/PrismJS/prism/commit/832a9643) + - Added issue templates ([#1805](https://github.com/PrismJS/prism/issues/1805)) [`dedb475f`](https://github.com/PrismJS/prism/commit/dedb475f) + - npm: Fixed `test` script ([#1809](https://github.com/PrismJS/prism/issues/1809)) [`bc649dfa`](https://github.com/PrismJS/prism/commit/bc649dfa) + - Add command to generate CHANGELOG [`212666d3`](https://github.com/PrismJS/prism/commit/212666d3) + - Name in composer.json set to lowercase ([#1824](https://github.com/PrismJS/prism/issues/1824)) [`4f78f1d6`](https://github.com/PrismJS/prism/commit/4f78f1d6) + - Added alias tests ([#1832](https://github.com/PrismJS/prism/issues/1832)) [`5c1a6fb2`](https://github.com/PrismJS/prism/commit/5c1a6fb2) + - Travis: Fail when changed files are detected ([#1819](https://github.com/PrismJS/prism/issues/1819)) [`66b44e3b`](https://github.com/PrismJS/prism/commit/66b44e3b) + - Tests: Additional checks for Prism functions ([#1803](https://github.com/PrismJS/prism/issues/1803)) [`c3e74ea3`](https://github.com/PrismJS/prism/commit/c3e74ea3) + - Adjusted .npmignore ([#1834](https://github.com/PrismJS/prism/issues/1834)) [`29a30c62`](https://github.com/PrismJS/prism/commit/29a30c62) +- **Website** + - Add Python triple-quoted strings "known failure" ([#1449](https://github.com/PrismJS/prism/issues/1449)) [`334c7bca`](https://github.com/PrismJS/prism/commit/334c7bca) + - Updated index.html to fix broken instructions ([#1462](https://github.com/PrismJS/prism/issues/1462)) [`7418dfdd`](https://github.com/PrismJS/prism/commit/7418dfdd) + - Improve download page typography ([#1484](https://github.com/PrismJS/prism/issues/1484)) [`b1c2f4df`](https://github.com/PrismJS/prism/commit/b1c2f4df) + - Fixed peer dependencies in download page ([#1491](https://github.com/PrismJS/prism/issues/1491)) [`9d15ff6e`](https://github.com/PrismJS/prism/commit/9d15ff6e) + - Fixed empty link in extending ([#1507](https://github.com/PrismJS/prism/issues/1507)) [`74916d48`](https://github.com/PrismJS/prism/commit/74916d48) + - Display language aliases ([#1626](https://github.com/PrismJS/prism/issues/1626)) [`654b527b`](https://github.com/PrismJS/prism/commit/654b527b) + - Clean up Previewers' page ([#1630](https://github.com/PrismJS/prism/issues/1630)) [`b0d1823c`](https://github.com/PrismJS/prism/commit/b0d1823c) + - Updated website table of contents styles ([#1681](https://github.com/PrismJS/prism/issues/1681)) [`efdd96c3`](https://github.com/PrismJS/prism/commit/efdd96c3) + - Added new third-party tutorial for using Prism in Gutenberg ([#1701](https://github.com/PrismJS/prism/issues/1701)) [`ff9ccbe5`](https://github.com/PrismJS/prism/commit/ff9ccbe5) + - Remove dead tutorial ([#1702](https://github.com/PrismJS/prism/issues/1702)) [`e2d3bc7e`](https://github.com/PrismJS/prism/commit/e2d3bc7e) + - Fix downloads page fetching from GitHub([#1684](https://github.com/PrismJS/prism/issues/1684)) [`dbd3555e`](https://github.com/PrismJS/prism/commit/dbd3555e) + - Remove parentheses from download page ([#1627](https://github.com/PrismJS/prism/issues/1627)) [`2ce0666d`](https://github.com/PrismJS/prism/commit/2ce0666d) + - Line Numbers plugin instructions clarifications ([#1719](https://github.com/PrismJS/prism/issues/1719)) [`00f4f04f`](https://github.com/PrismJS/prism/commit/00f4f04f) + - Fixed Toolbar plugin example ([#1726](https://github.com/PrismJS/prism/issues/1726)) [`5311ca32`](https://github.com/PrismJS/prism/commit/5311ca32) + - Test page: Show tokens option ([#1757](https://github.com/PrismJS/prism/issues/1757)) [`729cb28b`](https://github.com/PrismJS/prism/commit/729cb28b) + - Some encouragement for visitors of PrismJS.com to request new languages ([#1760](https://github.com/PrismJS/prism/issues/1760)) [`ea769e0b`](https://github.com/PrismJS/prism/commit/ea769e0b) + - Docs: Added missing parameter ([#1774](https://github.com/PrismJS/prism/issues/1774)) [`18f2921d`](https://github.com/PrismJS/prism/commit/18f2921d) + - More persistent test page ([#1529](https://github.com/PrismJS/prism/issues/1529)) [`3100fa31`](https://github.com/PrismJS/prism/commit/3100fa31) + - Added scripts directory ([#1781](https://github.com/PrismJS/prism/issues/1781)) [`439ea1ee`](https://github.com/PrismJS/prism/commit/439ea1ee) + - Fixed download page ([#1811](https://github.com/PrismJS/prism/issues/1811)) [`77c57446`](https://github.com/PrismJS/prism/commit/77c57446) ## 1.15.0 (2018-06-16) ### New components -* __Template Tookit 2__ ([#1418](https://github.com/PrismJS/prism/issues/1418)) [[`e063992`](https://github.com/PrismJS/prism/commit/e063992)] -* __XQuery__ ([#1411](https://github.com/PrismJS/prism/issues/1411)) [[`e326cb0`](https://github.com/PrismJS/prism/commit/e326cb0)] -* __TAP__ ([#1430](https://github.com/PrismJS/prism/issues/1430)) [[`8c2b71f`](https://github.com/PrismJS/prism/commit/8c2b71f)] +- **Template Tookit 2** ([#1418](https://github.com/PrismJS/prism/issues/1418)) [[`e063992`](https://github.com/PrismJS/prism/commit/e063992)] +- **XQuery** ([#1411](https://github.com/PrismJS/prism/issues/1411)) [[`e326cb0`](https://github.com/PrismJS/prism/commit/e326cb0)] +- **TAP** ([#1430](https://github.com/PrismJS/prism/issues/1430)) [[`8c2b71f`](https://github.com/PrismJS/prism/commit/8c2b71f)] ### Updated components -* __HTTP__ - * Absolute path is a valid request uri ([#1388](https://github.com/PrismJS/prism/issues/1388)) [[`f6e81cb`](https://github.com/PrismJS/prism/commit/f6e81cb)] -* __Kotlin__ - * Add keywords of Kotlin and modify it's number pattern. ([#1389](https://github.com/PrismJS/prism/issues/1389)) [[`1bf73b0`](https://github.com/PrismJS/prism/commit/1bf73b0)] - * Add `typealias` keyword ([#1437](https://github.com/PrismJS/prism/issues/1437)) [[`a21fdee`](https://github.com/PrismJS/prism/commit/a21fdee)] -* __JavaScript__ - * Improve Regexp pattern [[`5b043cf`](https://github.com/PrismJS/prism/commit/5b043cf)] - * Add support for one level of nesting inside template strings. Fix [#1397](https://github.com/PrismJS/prism/issues/1397) [[`db2d0eb`](https://github.com/PrismJS/prism/commit/db2d0eb)] -* __Elixir__ - * Elixir: Fix attributes consuming punctuation. Fix [#1392](https://github.com/PrismJS/prism/issues/1392) [[`dac0485`](https://github.com/PrismJS/prism/commit/dac0485)] -* __Bash__ - * Change reserved keyword reference ([#1396](https://github.com/PrismJS/prism/issues/1396)) [[`b94f01f`](https://github.com/PrismJS/prism/commit/b94f01f)] -* __PowerShell__ - * Allow for one level of nesting in expressions inside strings. Fix [#1407](https://github.com/PrismJS/prism/issues/1407) [[`9272d6f`](https://github.com/PrismJS/prism/commit/9272d6f)] -* __JSX__ - * Allow for two levels of nesting inside JSX tags. Fix [#1408](https://github.com/PrismJS/prism/issues/1408) [[`f1cd7c5`](https://github.com/PrismJS/prism/commit/f1cd7c5)] - * Add support for fragments short syntax. Fix [#1421](https://github.com/PrismJS/prism/issues/1421) [[`38ce121`](https://github.com/PrismJS/prism/commit/38ce121)] -* __Pascal__ - * Add `objectpascal` as an alias to `pascal` ([#1426](https://github.com/PrismJS/prism/issues/1426)) [[`a0bfc84`](https://github.com/PrismJS/prism/commit/a0bfc84)] -* __Swift__ - * Fix Swift 'protocol' keyword ([#1440](https://github.com/PrismJS/prism/issues/1440)) [[`081e318`](https://github.com/PrismJS/prism/commit/081e318)] +- **HTTP** + - Absolute path is a valid request uri ([#1388](https://github.com/PrismJS/prism/issues/1388)) [[`f6e81cb`](https://github.com/PrismJS/prism/commit/f6e81cb)] +- **Kotlin** + - Add keywords of Kotlin and modify it's number pattern. ([#1389](https://github.com/PrismJS/prism/issues/1389)) [[`1bf73b0`](https://github.com/PrismJS/prism/commit/1bf73b0)] + - Add `typealias` keyword ([#1437](https://github.com/PrismJS/prism/issues/1437)) [[`a21fdee`](https://github.com/PrismJS/prism/commit/a21fdee)] +- **JavaScript** + - Improve Regexp pattern [[`5b043cf`](https://github.com/PrismJS/prism/commit/5b043cf)] + - Add support for one level of nesting inside template strings. Fix [#1397](https://github.com/PrismJS/prism/issues/1397) [[`db2d0eb`](https://github.com/PrismJS/prism/commit/db2d0eb)] +- **Elixir** + - Elixir: Fix attributes consuming punctuation. Fix [#1392](https://github.com/PrismJS/prism/issues/1392) [[`dac0485`](https://github.com/PrismJS/prism/commit/dac0485)] +- **Bash** + - Change reserved keyword reference ([#1396](https://github.com/PrismJS/prism/issues/1396)) [[`b94f01f`](https://github.com/PrismJS/prism/commit/b94f01f)] +- **PowerShell** + - Allow for one level of nesting in expressions inside strings. Fix [#1407](https://github.com/PrismJS/prism/issues/1407) [[`9272d6f`](https://github.com/PrismJS/prism/commit/9272d6f)] +- **JSX** + - Allow for two levels of nesting inside JSX tags. Fix [#1408](https://github.com/PrismJS/prism/issues/1408) [[`f1cd7c5`](https://github.com/PrismJS/prism/commit/f1cd7c5)] + - Add support for fragments short syntax. Fix [#1421](https://github.com/PrismJS/prism/issues/1421) [[`38ce121`](https://github.com/PrismJS/prism/commit/38ce121)] +- **Pascal** + - Add `objectpascal` as an alias to `pascal` ([#1426](https://github.com/PrismJS/prism/issues/1426)) [[`a0bfc84`](https://github.com/PrismJS/prism/commit/a0bfc84)] +- **Swift** + - Fix Swift 'protocol' keyword ([#1440](https://github.com/PrismJS/prism/issues/1440)) [[`081e318`](https://github.com/PrismJS/prism/commit/081e318)] ### Updated plugins -* __File Highlight__ - * Fix issue causing the Download button to show up on every code blocks. [[`cd22499`](https://github.com/PrismJS/prism/commit/cd22499)] - * Simplify lang regex on File Highlight plugin ([#1399](https://github.com/PrismJS/prism/issues/1399)) [[`7bc9a4a`](https://github.com/PrismJS/prism/commit/7bc9a4a)] -* __Show Language__ - * Don't process language if block language not set ([#1410](https://github.com/PrismJS/prism/issues/1410)) [[`c111869`](https://github.com/PrismJS/prism/commit/c111869)] -* __Autoloader__ - * ASP.NET should require C# [[`fa328bb`](https://github.com/PrismJS/prism/commit/fa328bb)] -* __Line Numbers__ - * Make line-numbers styles more specific ([#1434](https://github.com/PrismJS/prism/issues/1434), [#1435](https://github.com/PrismJS/prism/issues/1435)) [[`9ee4f54`](https://github.com/PrismJS/prism/commit/9ee4f54)] +- **File Highlight** + - Fix issue causing the Download button to show up on every code blocks. [[`cd22499`](https://github.com/PrismJS/prism/commit/cd22499)] + - Simplify lang regex on File Highlight plugin ([#1399](https://github.com/PrismJS/prism/issues/1399)) [[`7bc9a4a`](https://github.com/PrismJS/prism/commit/7bc9a4a)] +- **Show Language** + - Don't process language if block language not set ([#1410](https://github.com/PrismJS/prism/issues/1410)) [[`c111869`](https://github.com/PrismJS/prism/commit/c111869)] +- **Autoloader** + - ASP.NET should require C# [[`fa328bb`](https://github.com/PrismJS/prism/commit/fa328bb)] +- **Line Numbers** + - Make line-numbers styles more specific ([#1434](https://github.com/PrismJS/prism/issues/1434), [#1435](https://github.com/PrismJS/prism/issues/1435)) [[`9ee4f54`](https://github.com/PrismJS/prism/commit/9ee4f54)] ### Updated themes -* Add .token.class-name to rest of themes ([#1360](https://github.com/PrismJS/prism/issues/1360)) [[`f356dfe`](https://github.com/PrismJS/prism/commit/f356dfe)] +- Add .token.class-name to rest of themes ([#1360](https://github.com/PrismJS/prism/issues/1360)) [[`f356dfe`](https://github.com/PrismJS/prism/commit/f356dfe)] ### Other changes -* __Website__ - * Site now loads over HTTPS! - * Use HTTPS / canonical URLs ([#1390](https://github.com/PrismJS/prism/issues/1390)) [[`95146c8`](https://github.com/PrismJS/prism/commit/95146c8)] - * Added Angular tutorial link [[`c436a7c`](https://github.com/PrismJS/prism/commit/c436a7c)] - * Use rel="icon" instead of rel="shortcut icon" ([#1398](https://github.com/PrismJS/prism/issues/1398)) [[`d95f8fb`](https://github.com/PrismJS/prism/commit/d95f8fb)] - * Fix Download page not handling multiple dependencies when from Redownload URL [[`c2ff248`](https://github.com/PrismJS/prism/commit/c2ff248)] - * Update documentation for node & webpack usage [[`1e99e96`](https://github.com/PrismJS/prism/commit/1e99e96)] -* Handle optional dependencies in `loadLanguages()` ([#1417](https://github.com/PrismJS/prism/issues/1417)) [[`84935ac`](https://github.com/PrismJS/prism/commit/84935ac)] -* Add Chinese translation [[`f2b1964`](https://github.com/PrismJS/prism/commit/f2b1964)] +- **Website** + - Site now loads over HTTPS! + - Use HTTPS / canonical URLs ([#1390](https://github.com/PrismJS/prism/issues/1390)) [[`95146c8`](https://github.com/PrismJS/prism/commit/95146c8)] + - Added Angular tutorial link [[`c436a7c`](https://github.com/PrismJS/prism/commit/c436a7c)] + - Use rel="icon" instead of rel="shortcut icon" ([#1398](https://github.com/PrismJS/prism/issues/1398)) [[`d95f8fb`](https://github.com/PrismJS/prism/commit/d95f8fb)] + - Fix Download page not handling multiple dependencies when from Redownload URL [[`c2ff248`](https://github.com/PrismJS/prism/commit/c2ff248)] + - Update documentation for node & webpack usage [[`1e99e96`](https://github.com/PrismJS/prism/commit/1e99e96)] +- Handle optional dependencies in `loadLanguages()` ([#1417](https://github.com/PrismJS/prism/issues/1417)) [[`84935ac`](https://github.com/PrismJS/prism/commit/84935ac)] +- Add Chinese translation [[`f2b1964`](https://github.com/PrismJS/prism/commit/f2b1964)] ## 1.14.0 (2018-04-11) ### New components -* __GEDCOM__ ([#1385](https://github.com/PrismJS/prism/issues/1385)) [[`6e0b20a`](https://github.com/PrismJS/prism/commit/6e0b20a)] -* __Lisp__ ([#1297](https://github.com/PrismJS/prism/issues/1297)) [[`46468f8`](https://github.com/PrismJS/prism/commit/46468f8)] -* __Markup Templating__ ([#1367](https://github.com/PrismJS/prism/issues/1367)) [[`5f9c078`](https://github.com/PrismJS/prism/commit/5f9c078)] -* __Soy__ ([#1387](https://github.com/PrismJS/prism/issues/1387)) [[`b4509bf`](https://github.com/PrismJS/prism/commit/b4509bf)] -* __Velocity__ ([#1378](https://github.com/PrismJS/prism/issues/1378)) [[`5a524f7`](https://github.com/PrismJS/prism/commit/5a524f7)] -* __Visual Basic__ ([#1382](https://github.com/PrismJS/prism/issues/1382)) [[`c673ec2`](https://github.com/PrismJS/prism/commit/c673ec2)] -* __WebAssembly__ ([#1386](https://github.com/PrismJS/prism/issues/1386)) [[`c28d8c5`](https://github.com/PrismJS/prism/commit/c28d8c5)] + +- **GEDCOM** ([#1385](https://github.com/PrismJS/prism/issues/1385)) [[`6e0b20a`](https://github.com/PrismJS/prism/commit/6e0b20a)] +- **Lisp** ([#1297](https://github.com/PrismJS/prism/issues/1297)) [[`46468f8`](https://github.com/PrismJS/prism/commit/46468f8)] +- **Markup Templating** ([#1367](https://github.com/PrismJS/prism/issues/1367)) [[`5f9c078`](https://github.com/PrismJS/prism/commit/5f9c078)] +- **Soy** ([#1387](https://github.com/PrismJS/prism/issues/1387)) [[`b4509bf`](https://github.com/PrismJS/prism/commit/b4509bf)] +- **Velocity** ([#1378](https://github.com/PrismJS/prism/issues/1378)) [[`5a524f7`](https://github.com/PrismJS/prism/commit/5a524f7)] +- **Visual Basic** ([#1382](https://github.com/PrismJS/prism/issues/1382)) [[`c673ec2`](https://github.com/PrismJS/prism/commit/c673ec2)] +- **WebAssembly** ([#1386](https://github.com/PrismJS/prism/issues/1386)) [[`c28d8c5`](https://github.com/PrismJS/prism/commit/c28d8c5)] ### Updated components -* __Bash__: - * Add curl to the list of common functions. Close [#1160](https://github.com/PrismJS/prism/issues/1160) [[`1bfc084`](https://github.com/PrismJS/prism/commit/1bfc084)] -* __C-like__: - * Make single-line comments greedy. Fix [#1337](https://github.com/PrismJS/prism/issues/1337). Make sure [#1340](https://github.com/PrismJS/prism/issues/1340) stays fixed. [[`571f2c5`](https://github.com/PrismJS/prism/commit/571f2c5)] -* __C#__: - * More generic class-name highlighting. Fix [#1365](https://github.com/PrismJS/prism/issues/1365) [[`a6837d2`](https://github.com/PrismJS/prism/commit/a6837d2)] - * More specific class-name highlighting. Fix [#1371](https://github.com/PrismJS/prism/issues/1371) [[`0a95f69`](https://github.com/PrismJS/prism/commit/0a95f69)] -* __Eiffel__: - * Fix verbatim strings. Fix [#1379](https://github.com/PrismJS/prism/issues/1379) [[`04df41b`](https://github.com/PrismJS/prism/commit/04df41b)] -* __Elixir__ - * Make regexps greedy, remove comment hacks. Update known failures and tests. [[`e93d61f`](https://github.com/PrismJS/prism/commit/e93d61f)] -* __ERB__: - * Make highlighting work properly in NodeJS ([#1367](https://github.com/PrismJS/prism/issues/1367)) [[`5f9c078`](https://github.com/PrismJS/prism/commit/5f9c078)] -* __Fortran__: - * Make single-line comments greedy. Update known failures and tests. [[`c083b78`](https://github.com/PrismJS/prism/commit/c083b78)] -* __Handlebars__: - * Make highlighting work properly in NodeJS ([#1367](https://github.com/PrismJS/prism/issues/1367)) [[`5f9c078`](https://github.com/PrismJS/prism/commit/5f9c078)] -* __Java__: - * Add support for generics. Fix [#1351](https://github.com/PrismJS/prism/issues/1351) [[`a5cf302`](https://github.com/PrismJS/prism/commit/a5cf302)] -* __JavaScript__: - * Add support for constants. Fix [#1348](https://github.com/PrismJS/prism/issues/1348) [[`9084481`](https://github.com/PrismJS/prism/commit/9084481)] - * Improve Regex matching [[`172d351`](https://github.com/PrismJS/prism/commit/172d351)] -* __JSX__: - * Fix highlighting of empty objects. Fix [#1364](https://github.com/PrismJS/prism/issues/1364) [[`b26bbb8`](https://github.com/PrismJS/prism/commit/b26bbb8)] -* __Monkey__: - * Make comments greedy. Update known failures and tests. [[`d7b2b43`](https://github.com/PrismJS/prism/commit/d7b2b43)] -* __PHP__: - * Make highlighting work properly in NodeJS ([#1367](https://github.com/PrismJS/prism/issues/1367)) [[`5f9c078`](https://github.com/PrismJS/prism/commit/5f9c078)] -* __Puppet__: - * Make heredoc, comments, regexps and strings greedy. Update known failures and tests. [[`0c139d1`](https://github.com/PrismJS/prism/commit/0c139d1)] -* __Q__: - * Make comments greedy. Update known failures and tests. [[`a0f5081`](https://github.com/PrismJS/prism/commit/a0f5081)] -* __Ruby__: - * Make multi-line comments greedy, remove single-line comment hack. Update known failures and tests. [[`b0e34fb`](https://github.com/PrismJS/prism/commit/b0e34fb)] -* __SQL__: - * Add missing keywords. Fix [#1374](https://github.com/PrismJS/prism/issues/1374) [[`238b195`](https://github.com/PrismJS/prism/commit/238b195)] + +- **Bash**: + - Add curl to the list of common functions. Close [#1160](https://github.com/PrismJS/prism/issues/1160) [[`1bfc084`](https://github.com/PrismJS/prism/commit/1bfc084)] +- **C-like**: + - Make single-line comments greedy. Fix [#1337](https://github.com/PrismJS/prism/issues/1337). Make sure [#1340](https://github.com/PrismJS/prism/issues/1340) stays fixed. [[`571f2c5`](https://github.com/PrismJS/prism/commit/571f2c5)] +- **C#**: + - More generic class-name highlighting. Fix [#1365](https://github.com/PrismJS/prism/issues/1365) [[`a6837d2`](https://github.com/PrismJS/prism/commit/a6837d2)] + - More specific class-name highlighting. Fix [#1371](https://github.com/PrismJS/prism/issues/1371) [[`0a95f69`](https://github.com/PrismJS/prism/commit/0a95f69)] +- **Eiffel**: + - Fix verbatim strings. Fix [#1379](https://github.com/PrismJS/prism/issues/1379) [[`04df41b`](https://github.com/PrismJS/prism/commit/04df41b)] +- **Elixir** + - Make regexps greedy, remove comment hacks. Update known failures and tests. [[`e93d61f`](https://github.com/PrismJS/prism/commit/e93d61f)] +- **ERB**: + - Make highlighting work properly in NodeJS ([#1367](https://github.com/PrismJS/prism/issues/1367)) [[`5f9c078`](https://github.com/PrismJS/prism/commit/5f9c078)] +- **Fortran**: + - Make single-line comments greedy. Update known failures and tests. [[`c083b78`](https://github.com/PrismJS/prism/commit/c083b78)] +- **Handlebars**: + - Make highlighting work properly in NodeJS ([#1367](https://github.com/PrismJS/prism/issues/1367)) [[`5f9c078`](https://github.com/PrismJS/prism/commit/5f9c078)] +- **Java**: + - Add support for generics. Fix [#1351](https://github.com/PrismJS/prism/issues/1351) [[`a5cf302`](https://github.com/PrismJS/prism/commit/a5cf302)] +- **JavaScript**: + - Add support for constants. Fix [#1348](https://github.com/PrismJS/prism/issues/1348) [[`9084481`](https://github.com/PrismJS/prism/commit/9084481)] + - Improve Regex matching [[`172d351`](https://github.com/PrismJS/prism/commit/172d351)] +- **JSX**: + - Fix highlighting of empty objects. Fix [#1364](https://github.com/PrismJS/prism/issues/1364) [[`b26bbb8`](https://github.com/PrismJS/prism/commit/b26bbb8)] +- **Monkey**: + - Make comments greedy. Update known failures and tests. [[`d7b2b43`](https://github.com/PrismJS/prism/commit/d7b2b43)] +- **PHP**: + - Make highlighting work properly in NodeJS ([#1367](https://github.com/PrismJS/prism/issues/1367)) [[`5f9c078`](https://github.com/PrismJS/prism/commit/5f9c078)] +- **Puppet**: + - Make heredoc, comments, regexps and strings greedy. Update known failures and tests. [[`0c139d1`](https://github.com/PrismJS/prism/commit/0c139d1)] +- **Q**: + - Make comments greedy. Update known failures and tests. [[`a0f5081`](https://github.com/PrismJS/prism/commit/a0f5081)] +- **Ruby**: + - Make multi-line comments greedy, remove single-line comment hack. Update known failures and tests. [[`b0e34fb`](https://github.com/PrismJS/prism/commit/b0e34fb)] +- **SQL**: + - Add missing keywords. Fix [#1374](https://github.com/PrismJS/prism/issues/1374) [[`238b195`](https://github.com/PrismJS/prism/commit/238b195)] ### Updated plugins -* __Command Line__: - * Command Line: Allow specifying output prefix using data-filter-output attribute. ([#856](https://github.com/PrismJS/prism/issues/856)) [[`094d546`](https://github.com/PrismJS/prism/commit/094d546)] -* __File Highlight__: - * Add option to provide a download button, when used with the Toolbar plugin. Fix [#1030](https://github.com/PrismJS/prism/issues/1030) [[`9f22952`](https://github.com/PrismJS/prism/commit/9f22952)] + +- **Command Line**: + - Command Line: Allow specifying output prefix using data-filter-output attribute. ([#856](https://github.com/PrismJS/prism/issues/856)) [[`094d546`](https://github.com/PrismJS/prism/commit/094d546)] +- **File Highlight**: + - Add option to provide a download button, when used with the Toolbar plugin. Fix [#1030](https://github.com/PrismJS/prism/issues/1030) [[`9f22952`](https://github.com/PrismJS/prism/commit/9f22952)] ### Updated themes -* __Default__: - * Reach AA contrast ratio level ([#1296](https://github.com/PrismJS/prism/issues/1296)) [[`8aea939`](https://github.com/PrismJS/prism/commit/8aea939)] + +- **Default**: + - Reach AA contrast ratio level ([#1296](https://github.com/PrismJS/prism/issues/1296)) [[`8aea939`](https://github.com/PrismJS/prism/commit/8aea939)] ### Other changes -* Website: Remove broken third-party tutorials from homepage [[`0efd6e1`](https://github.com/PrismJS/prism/commit/0efd6e1)] -* Docs: Mention `loadLanguages()` function on homepage in the nodeJS section. Close [#972](https://github.com/PrismJS/prism/issues/972), close [#593](https://github.com/PrismJS/prism/issues/593) [[`4a14d20`](https://github.com/PrismJS/prism/commit/4a14d20)] -* Core: Greedy patterns should always be matched against the full string. Fix [#1355](https://github.com/PrismJS/prism/issues/1355) [[`294efaa`](https://github.com/PrismJS/prism/commit/294efaa)] -* Crystal: Update known failures. [[`e1d2d42`](https://github.com/PrismJS/prism/commit/e1d2d42)] -* D: Update known failures and tests. [[`13d9991`](https://github.com/PrismJS/prism/commit/13d9991)] -* Markdown: Update known failures. [[`5b6c76d`](https://github.com/PrismJS/prism/commit/5b6c76d)] -* Matlab: Update known failures. [[`259b6fc`](https://github.com/PrismJS/prism/commit/259b6fc)] -* Website: Remove non-existent anchor to failures. Reword on homepage to make is less misleading. [[`8c0911a`](https://github.com/PrismJS/prism/commit/8c0911a)] -* Website: Add link to Keep Markup plugin in FAQ [[`e8cb6d4`](https://github.com/PrismJS/prism/commit/e8cb6d4)] -* Test suite: Memory leak in vm.runInNewContext() seems fixed. Revert [[`9a4b6fa`](https://github.com/PrismJS/prism/commit/9a4b6fa)] to drastically improve tests execution time. [[`9bceece`](https://github.com/PrismJS/prism/commit/9bceece), [`7c7602b`](https://github.com/PrismJS/prism/commit/7c7602b)] -* Gulp: Don't minify `components/index.js` [[`689227b`](https://github.com/PrismJS/prism/commit/689227b)] -* Website: Fix theme selection on Download page, when theme is in query string or hash. [[`b4d3063`](https://github.com/PrismJS/prism/commit/b4d3063)] -* Update JSPM config to also include unminified components. Close [#995](https://github.com/PrismJS/prism/issues/995) [[`218f160`](https://github.com/PrismJS/prism/commit/218f160)] -* Core: Fix support for language alias containing dash `-` [[`659ea31`](https://github.com/PrismJS/prism/commit/659ea31)] + +- Website: Remove broken third-party tutorials from homepage [[`0efd6e1`](https://github.com/PrismJS/prism/commit/0efd6e1)] +- Docs: Mention `loadLanguages()` function on homepage in the nodeJS section. Close [#972](https://github.com/PrismJS/prism/issues/972), close [#593](https://github.com/PrismJS/prism/issues/593) [[`4a14d20`](https://github.com/PrismJS/prism/commit/4a14d20)] +- Core: Greedy patterns should always be matched against the full string. Fix [#1355](https://github.com/PrismJS/prism/issues/1355) [[`294efaa`](https://github.com/PrismJS/prism/commit/294efaa)] +- Crystal: Update known failures. [[`e1d2d42`](https://github.com/PrismJS/prism/commit/e1d2d42)] +- D: Update known failures and tests. [[`13d9991`](https://github.com/PrismJS/prism/commit/13d9991)] +- Markdown: Update known failures. [[`5b6c76d`](https://github.com/PrismJS/prism/commit/5b6c76d)] +- Matlab: Update known failures. [[`259b6fc`](https://github.com/PrismJS/prism/commit/259b6fc)] +- Website: Remove non-existent anchor to failures. Reword on homepage to make is less misleading. [[`8c0911a`](https://github.com/PrismJS/prism/commit/8c0911a)] +- Website: Add link to Keep Markup plugin in FAQ [[`e8cb6d4`](https://github.com/PrismJS/prism/commit/e8cb6d4)] +- Test suite: Memory leak in vm.runInNewContext() seems fixed. Revert [[`9a4b6fa`](https://github.com/PrismJS/prism/commit/9a4b6fa)] to drastically improve tests execution time. [[`9bceece`](https://github.com/PrismJS/prism/commit/9bceece), [`7c7602b`](https://github.com/PrismJS/prism/commit/7c7602b)] +- Gulp: Don't minify `components/index.js` [[`689227b`](https://github.com/PrismJS/prism/commit/689227b)] +- Website: Fix theme selection on Download page, when theme is in query string or hash. [[`b4d3063`](https://github.com/PrismJS/prism/commit/b4d3063)] +- Update JSPM config to also include unminified components. Close [#995](https://github.com/PrismJS/prism/issues/995) [[`218f160`](https://github.com/PrismJS/prism/commit/218f160)] +- Core: Fix support for language alias containing dash `-` [[`659ea31`](https://github.com/PrismJS/prism/commit/659ea31)] ## 1.13.0 (2018-03-21) ### New components -* __ERB__ [[`e6213ac`](https://github.com/PrismJS/prism/commit/e6213ac)] -* __PL/SQL__ ([#1338](https://github.com/PrismJS/prism/issues/1338)) [[`3599e6a`](https://github.com/PrismJS/prism/commit/3599e6a)] + +- **ERB** [[`e6213ac`](https://github.com/PrismJS/prism/commit/e6213ac)] +- **PL/SQL** ([#1338](https://github.com/PrismJS/prism/issues/1338)) [[`3599e6a`](https://github.com/PrismJS/prism/commit/3599e6a)] ### Updated components -* __JSX__: - * Add support for plain text inside tags ([#1357](https://github.com/PrismJS/prism/issues/1357)) [[`2b8321d`](https://github.com/PrismJS/prism/commit/2b8321d)] -* __Markup__: - * Make tags greedy. Fix [#1356](https://github.com/PrismJS/prism/issues/1356) [[`af834be`](https://github.com/PrismJS/prism/commit/af834be)] -* __Powershell__: - * Add lookbehind to fix function interpolation inside strings. Fix [#1361](https://github.com/PrismJS/prism/issues/1361) [[`d2c026e`](https://github.com/PrismJS/prism/commit/d2c026e)] -* __Rust__: - * Improve char pattern so that lifetime annotations are matched better. Fix [#1353](https://github.com/PrismJS/prism/issues/1353) [[`efdccbf`](https://github.com/PrismJS/prism/commit/efdccbf)] + +- **JSX**: + - Add support for plain text inside tags ([#1357](https://github.com/PrismJS/prism/issues/1357)) [[`2b8321d`](https://github.com/PrismJS/prism/commit/2b8321d)] +- **Markup**: + - Make tags greedy. Fix [#1356](https://github.com/PrismJS/prism/issues/1356) [[`af834be`](https://github.com/PrismJS/prism/commit/af834be)] +- **Powershell**: + - Add lookbehind to fix function interpolation inside strings. Fix [#1361](https://github.com/PrismJS/prism/issues/1361) [[`d2c026e`](https://github.com/PrismJS/prism/commit/d2c026e)] +- **Rust**: + - Improve char pattern so that lifetime annotations are matched better. Fix [#1353](https://github.com/PrismJS/prism/issues/1353) [[`efdccbf`](https://github.com/PrismJS/prism/commit/efdccbf)] ### Updated themes -* __Default__: - * Add color for class names [[`8572474`](https://github.com/PrismJS/prism/commit/8572474)] -* __Coy__: - * Inherit pre's height on code, so it does not break on Download page. [[`c6c7fd1`](https://github.com/PrismJS/prism/commit/c6c7fd1)] + +- **Default**: + - Add color for class names [[`8572474`](https://github.com/PrismJS/prism/commit/8572474)] +- **Coy**: + - Inherit pre's height on code, so it does not break on Download page. [[`c6c7fd1`](https://github.com/PrismJS/prism/commit/c6c7fd1)] ### Other changes -* Website: Auto-generate example headers [[`c3ed5b5`](https://github.com/PrismJS/prism/commit/c3ed5b5)] -* Core: Allow cloning of circular structures. ([#1345](https://github.com/PrismJS/prism/issues/1345)) [[`f90d555`](https://github.com/PrismJS/prism/commit/f90d555)] -* Core: Generate components.js from components.json and make it exportable to nodeJS. ([#1354](https://github.com/PrismJS/prism/issues/1354)) [[`ba60df0`](https://github.com/PrismJS/prism/commit/ba60df0)] -* Website: Improve appearance of theme selector [[`0460cad`](https://github.com/PrismJS/prism/commit/0460cad)] -* Website: Check stored theme by default + link both theme selectors together. Close [#1038](https://github.com/PrismJS/prism/issues/1038) [[`212dd4e`](https://github.com/PrismJS/prism/commit/212dd4e)] -* Tests: Use the new components.js file directly [[`0e1a8b7`](https://github.com/PrismJS/prism/commit/0e1a8b7)] -* Update .npmignore Close [#1274](https://github.com/PrismJS/prism/issues/1274) [[`a52319a`](https://github.com/PrismJS/prism/commit/a52319a)] -* Add a loadLanguages() function for easy component loading on NodeJS ([#1359](https://github.com/PrismJS/prism/issues/1359)) [[`a5331a6`](https://github.com/PrismJS/prism/commit/a5331a6)] + +- Website: Auto-generate example headers [[`c3ed5b5`](https://github.com/PrismJS/prism/commit/c3ed5b5)] +- Core: Allow cloning of circular structures. ([#1345](https://github.com/PrismJS/prism/issues/1345)) [[`f90d555`](https://github.com/PrismJS/prism/commit/f90d555)] +- Core: Generate components.js from components.json and make it exportable to nodeJS. ([#1354](https://github.com/PrismJS/prism/issues/1354)) [[`ba60df0`](https://github.com/PrismJS/prism/commit/ba60df0)] +- Website: Improve appearance of theme selector [[`0460cad`](https://github.com/PrismJS/prism/commit/0460cad)] +- Website: Check stored theme by default + link both theme selectors together. Close [#1038](https://github.com/PrismJS/prism/issues/1038) [[`212dd4e`](https://github.com/PrismJS/prism/commit/212dd4e)] +- Tests: Use the new components.js file directly [[`0e1a8b7`](https://github.com/PrismJS/prism/commit/0e1a8b7)] +- Update .npmignore Close [#1274](https://github.com/PrismJS/prism/issues/1274) [[`a52319a`](https://github.com/PrismJS/prism/commit/a52319a)] +- Add a loadLanguages() function for easy component loading on NodeJS ([#1359](https://github.com/PrismJS/prism/issues/1359)) [[`a5331a6`](https://github.com/PrismJS/prism/commit/a5331a6)] ## 1.12.2 (2018-03-08) ### Other changes -* Test against NodeJS 4, 6, 8 and 9 ([#1329](https://github.com/PrismJS/prism/issues/1329)) [[`97b7d0a`](https://github.com/PrismJS/prism/commit/97b7d0a)] -* Stop testing against NodeJS 0.10 and 0.12 [[`df01b1b`](https://github.com/PrismJS/prism/commit/df01b1b)] + +- Test against NodeJS 4, 6, 8 and 9 ([#1329](https://github.com/PrismJS/prism/issues/1329)) [[`97b7d0a`](https://github.com/PrismJS/prism/commit/97b7d0a)] +- Stop testing against NodeJS 0.10 and 0.12 [[`df01b1b`](https://github.com/PrismJS/prism/commit/df01b1b)] ## 1.12.1 (2018-03-08) ### Updated components -* __C-like__: - * Revert [[`b98e5b9`](https://github.com/PrismJS/prism/commit/b98e5b9)] to fix [#1340](https://github.com/PrismJS/prism/issues/1340). Reopened [#1337](https://github.com/PrismJS/prism/issues/1337). [[`cebacdf`](https://github.com/PrismJS/prism/commit/cebacdf)] -* __JSX__: - * Allow for one level of nested curly braces inside tag attribute value. Fix [#1335](https://github.com/PrismJS/prism/issues/1335) [[`05bf67d`](https://github.com/PrismJS/prism/commit/05bf67d)] -* __Ruby__: - * Ensure module syntax is not confused with symbols. Fix [#1336](https://github.com/PrismJS/prism/issues/1336) [[`31a2a69`](https://github.com/PrismJS/prism/commit/31a2a69)] + +- **C-like**: + - Revert [[`b98e5b9`](https://github.com/PrismJS/prism/commit/b98e5b9)] to fix [#1340](https://github.com/PrismJS/prism/issues/1340). Reopened [#1337](https://github.com/PrismJS/prism/issues/1337). [[`cebacdf`](https://github.com/PrismJS/prism/commit/cebacdf)] +- **JSX**: + - Allow for one level of nested curly braces inside tag attribute value. Fix [#1335](https://github.com/PrismJS/prism/issues/1335) [[`05bf67d`](https://github.com/PrismJS/prism/commit/05bf67d)] +- **Ruby**: + - Ensure module syntax is not confused with symbols. Fix [#1336](https://github.com/PrismJS/prism/issues/1336) [[`31a2a69`](https://github.com/PrismJS/prism/commit/31a2a69)] ## 1.12.0 (2018-03-07) ### New components -* __ARFF__ ([#1327](https://github.com/PrismJS/prism/issues/1327)) [[`0bc98ac`](https://github.com/PrismJS/prism/commit/0bc98ac)] -* __Clojure__ ([#1311](https://github.com/PrismJS/prism/issues/1311)) [[`8b4d3bd`](https://github.com/PrismJS/prism/commit/8b4d3bd)] -* __Liquid__ ([#1326](https://github.com/PrismJS/prism/issues/1326)) [[`f0b2c9e`](https://github.com/PrismJS/prism/commit/f0b2c9e)] + +- **ARFF** ([#1327](https://github.com/PrismJS/prism/issues/1327)) [[`0bc98ac`](https://github.com/PrismJS/prism/commit/0bc98ac)] +- **Clojure** ([#1311](https://github.com/PrismJS/prism/issues/1311)) [[`8b4d3bd`](https://github.com/PrismJS/prism/commit/8b4d3bd)] +- **Liquid** ([#1326](https://github.com/PrismJS/prism/issues/1326)) [[`f0b2c9e`](https://github.com/PrismJS/prism/commit/f0b2c9e)] ### Updated components -* __Bash__: - * Add shell as an alias ([#1321](https://github.com/PrismJS/prism/issues/1321)) [[`67e16a2`](https://github.com/PrismJS/prism/commit/67e16a2)] - * Add support for quoted command substitution. Fix [#1287](https://github.com/PrismJS/prism/issues/1287) [[`63fc215`](https://github.com/PrismJS/prism/commit/63fc215)] -* __C#__: - * Add "dotnet" alias. [[`405867c`](https://github.com/PrismJS/prism/commit/405867c)] -* __C-like__: - * Change order of comment patterns and make multi-line one greedy. Fix [#1337](https://github.com/PrismJS/prism/issues/1337) [[`b98e5b9`](https://github.com/PrismJS/prism/commit/b98e5b9)] -* __NSIS__: - * Add support for NSIS 3.03 ([#1288](https://github.com/PrismJS/prism/issues/1288)) [[`bd1e98b`](https://github.com/PrismJS/prism/commit/bd1e98b)] - * Add missing NSIS commands ([#1289](https://github.com/PrismJS/prism/issues/1289)) [[`ad2948f`](https://github.com/PrismJS/prism/commit/ad2948f)] -* __PHP__: - * Add support for string interpolation inside double-quoted strings. Fix [#1146](https://github.com/PrismJS/prism/issues/1146) [[`9f1f8d6`](https://github.com/PrismJS/prism/commit/9f1f8d6)] - * Add support for Heredoc and Nowdoc strings [[`5d7223c`](https://github.com/PrismJS/prism/commit/5d7223c)] - * Fix shell-comment failure now that strings are greedy [[`ad25d22`](https://github.com/PrismJS/prism/commit/ad25d22)] -* __PowerShell__: - * Add support for two levels of nested brackets inside namespace pattern. Fixes [#1317](https://github.com/PrismJS/prism/issues/1317) [[`3bc3e9c`](https://github.com/PrismJS/prism/commit/3bc3e9c)] -* __Ruby__: - * Add keywords "protected", "private" and "public" [[`4593837`](https://github.com/PrismJS/prism/commit/4593837)] -* __Rust__: - * Add support for lifetime-annotation and => operator. Fix [#1339](https://github.com/PrismJS/prism/issues/1339) [[`926f6f8`](https://github.com/PrismJS/prism/commit/926f6f8)] -* __Scheme__: - * Don't highlight first number of a list as a function. Fix [#1331](https://github.com/PrismJS/prism/issues/1331) [[`51bff80`](https://github.com/PrismJS/prism/commit/51bff80)] -* __SQL__: - * Add missing keywords and functions, fix numbers [[`de29d4a`](https://github.com/PrismJS/prism/commit/de29d4a)] + +- **Bash**: + - Add shell as an alias ([#1321](https://github.com/PrismJS/prism/issues/1321)) [[`67e16a2`](https://github.com/PrismJS/prism/commit/67e16a2)] + - Add support for quoted command substitution. Fix [#1287](https://github.com/PrismJS/prism/issues/1287) [[`63fc215`](https://github.com/PrismJS/prism/commit/63fc215)] +- **C#**: + - Add "dotnet" alias. [[`405867c`](https://github.com/PrismJS/prism/commit/405867c)] +- **C-like**: + - Change order of comment patterns and make multi-line one greedy. Fix [#1337](https://github.com/PrismJS/prism/issues/1337) [[`b98e5b9`](https://github.com/PrismJS/prism/commit/b98e5b9)] +- **NSIS**: + - Add support for NSIS 3.03 ([#1288](https://github.com/PrismJS/prism/issues/1288)) [[`bd1e98b`](https://github.com/PrismJS/prism/commit/bd1e98b)] + - Add missing NSIS commands ([#1289](https://github.com/PrismJS/prism/issues/1289)) [[`ad2948f`](https://github.com/PrismJS/prism/commit/ad2948f)] +- **PHP**: + - Add support for string interpolation inside double-quoted strings. Fix [#1146](https://github.com/PrismJS/prism/issues/1146) [[`9f1f8d6`](https://github.com/PrismJS/prism/commit/9f1f8d6)] + - Add support for Heredoc and Nowdoc strings [[`5d7223c`](https://github.com/PrismJS/prism/commit/5d7223c)] + - Fix shell-comment failure now that strings are greedy [[`ad25d22`](https://github.com/PrismJS/prism/commit/ad25d22)] +- **PowerShell**: + - Add support for two levels of nested brackets inside namespace pattern. Fixes [#1317](https://github.com/PrismJS/prism/issues/1317) [[`3bc3e9c`](https://github.com/PrismJS/prism/commit/3bc3e9c)] +- **Ruby**: + - Add keywords "protected", "private" and "public" [[`4593837`](https://github.com/PrismJS/prism/commit/4593837)] +- **Rust**: + - Add support for lifetime-annotation and => operator. Fix [#1339](https://github.com/PrismJS/prism/issues/1339) [[`926f6f8`](https://github.com/PrismJS/prism/commit/926f6f8)] +- **Scheme**: + - Don't highlight first number of a list as a function. Fix [#1331](https://github.com/PrismJS/prism/issues/1331) [[`51bff80`](https://github.com/PrismJS/prism/commit/51bff80)] +- **SQL**: + - Add missing keywords and functions, fix numbers [[`de29d4a`](https://github.com/PrismJS/prism/commit/de29d4a)] ### Updated plugins -* __Autolinker__: - * Allow more chars in query string and hash to match more URLs. Fix [#1142](https://github.com/PrismJS/prism/issues/1142) [[`109bd6f`](https://github.com/PrismJS/prism/commit/109bd6f)] -* __Copy to Clipboard__: - * Bump ClipboardJS to 2.0.0 and remove hack ([#1314](https://github.com/PrismJS/prism/issues/1314)) [[`e9f410e`](https://github.com/PrismJS/prism/commit/e9f410e)] -* __Toolbar__: - * Prevent scrolling toolbar with content ([#1305](https://github.com/PrismJS/prism/issues/1305), [#1314](https://github.com/PrismJS/prism/issues/1314)) [[`84eeb89`](https://github.com/PrismJS/prism/commit/84eeb89)] -* __Unescaped Markup__: - * Use msMatchesSelector for IE11 and below. Fix [#1302](https://github.com/PrismJS/prism/issues/1302) [[`c246c1a`](https://github.com/PrismJS/prism/commit/c246c1a)] -* __WebPlatform Docs__: - * WebPlatform Docs plugin: Fix links. Fixes [#1290](https://github.com/PrismJS/prism/issues/1290) [[`7a9dbe0`](https://github.com/PrismJS/prism/commit/7a9dbe0)] + +- **Autolinker**: + - Allow more chars in query string and hash to match more URLs. Fix [#1142](https://github.com/PrismJS/prism/issues/1142) [[`109bd6f`](https://github.com/PrismJS/prism/commit/109bd6f)] +- **Copy to Clipboard**: + - Bump ClipboardJS to 2.0.0 and remove hack ([#1314](https://github.com/PrismJS/prism/issues/1314)) [[`e9f410e`](https://github.com/PrismJS/prism/commit/e9f410e)] +- **Toolbar**: + - Prevent scrolling toolbar with content ([#1305](https://github.com/PrismJS/prism/issues/1305), [#1314](https://github.com/PrismJS/prism/issues/1314)) [[`84eeb89`](https://github.com/PrismJS/prism/commit/84eeb89)] +- **Unescaped Markup**: + - Use msMatchesSelector for IE11 and below. Fix [#1302](https://github.com/PrismJS/prism/issues/1302) [[`c246c1a`](https://github.com/PrismJS/prism/commit/c246c1a)] +- **WebPlatform Docs**: + - WebPlatform Docs plugin: Fix links. Fixes [#1290](https://github.com/PrismJS/prism/issues/1290) [[`7a9dbe0`](https://github.com/PrismJS/prism/commit/7a9dbe0)] ### Other changes -* Fix Autoloader's demo page [[`3dddac9`](https://github.com/PrismJS/prism/commit/3dddac9)] -* Download page: Use hash instead of query-string for redownload URL. Fix [#1263](https://github.com/PrismJS/prism/issues/1263) [[`b03c02a`](https://github.com/PrismJS/prism/commit/b03c02a)] -* Core: Don't thow an error if lookbehing is used without anything matching. [[`e0cd47f`](https://github.com/PrismJS/prism/commit/e0cd47f)] -* Docs: Fix link to the `` element specification in HTML5 [[`a84263f`](https://github.com/PrismJS/prism/commit/a84263f)] -* Docs: Mention support for `lang-xxxx` class. Close [#1312](https://github.com/PrismJS/prism/issues/1312) [[`a9e76db`](https://github.com/PrismJS/prism/commit/a9e76db)] -* Docs: Add note on `async` parameter to clarify the requirement of using a single bundled file. Closes [#1249](https://github.com/PrismJS/prism/issues/1249) [[`eba0235`](https://github.com/PrismJS/prism/commit/eba0235)] + +- Fix Autoloader's demo page [[`3dddac9`](https://github.com/PrismJS/prism/commit/3dddac9)] +- Download page: Use hash instead of query-string for redownload URL. Fix [#1263](https://github.com/PrismJS/prism/issues/1263) [[`b03c02a`](https://github.com/PrismJS/prism/commit/b03c02a)] +- Core: Don't thow an error if lookbehing is used without anything matching. [[`e0cd47f`](https://github.com/PrismJS/prism/commit/e0cd47f)] +- Docs: Fix link to the `` element specification in HTML5 [[`a84263f`](https://github.com/PrismJS/prism/commit/a84263f)] +- Docs: Mention support for `lang-xxxx` class. Close [#1312](https://github.com/PrismJS/prism/issues/1312) [[`a9e76db`](https://github.com/PrismJS/prism/commit/a9e76db)] +- Docs: Add note on `async` parameter to clarify the requirement of using a single bundled file. Closes [#1249](https://github.com/PrismJS/prism/issues/1249) [[`eba0235`](https://github.com/PrismJS/prism/commit/eba0235)] ## 1.11.0 (2018-02-05) ### New components -* __Content-Security-Policy (CSP)__ ([#1275](https://github.com/PrismJS/prism/issues/1275)) [[`b08cae5`](https://github.com/PrismJS/prism/commit/b08cae5)] -* __HTTP Public-Key-Pins (HPKP)__ ([#1275](https://github.com/PrismJS/prism/issues/1275)) [[`b08cae5`](https://github.com/PrismJS/prism/commit/b08cae5)] -* __HTTP String-Transport-Security (HSTS)__ ([#1275](https://github.com/PrismJS/prism/issues/1275)) [[`b08cae5`](https://github.com/PrismJS/prism/commit/b08cae5)] -* __React TSX__ ([#1280](https://github.com/PrismJS/prism/issues/1280)) [[`fbe82b8`](https://github.com/PrismJS/prism/commit/fbe82b8)] + +- **Content-Security-Policy (CSP)** ([#1275](https://github.com/PrismJS/prism/issues/1275)) [[`b08cae5`](https://github.com/PrismJS/prism/commit/b08cae5)] +- **HTTP Public-Key-Pins (HPKP)** ([#1275](https://github.com/PrismJS/prism/issues/1275)) [[`b08cae5`](https://github.com/PrismJS/prism/commit/b08cae5)] +- **HTTP String-Transport-Security (HSTS)** ([#1275](https://github.com/PrismJS/prism/issues/1275)) [[`b08cae5`](https://github.com/PrismJS/prism/commit/b08cae5)] +- **React TSX** ([#1280](https://github.com/PrismJS/prism/issues/1280)) [[`fbe82b8`](https://github.com/PrismJS/prism/commit/fbe82b8)] ### Updated components -* __C++__: - * Add C++ platform-independent types ([#1271](https://github.com/PrismJS/prism/issues/1271)) [[`3da238f`](https://github.com/PrismJS/prism/commit/3da238f)] -* __TypeScript__: - * Improve typescript with builtins ([#1277](https://github.com/PrismJS/prism/issues/1277)) [[`5de1b1f`](https://github.com/PrismJS/prism/commit/5de1b1f)] + +- **C++**: + - Add C++ platform-independent types ([#1271](https://github.com/PrismJS/prism/issues/1271)) [[`3da238f`](https://github.com/PrismJS/prism/commit/3da238f)] +- **TypeScript**: + - Improve typescript with builtins ([#1277](https://github.com/PrismJS/prism/issues/1277)) [[`5de1b1f`](https://github.com/PrismJS/prism/commit/5de1b1f)] ### Other changes -* Fix passing of non-enumerable Error properties from the child test runner ([#1276](https://github.com/PrismJS/prism/issues/1276)) [[`38df653`](https://github.com/PrismJS/prism/commit/38df653)] + +- Fix passing of non-enumerable Error properties from the child test runner ([#1276](https://github.com/PrismJS/prism/issues/1276)) [[`38df653`](https://github.com/PrismJS/prism/commit/38df653)] ## 1.10.0 (2018-01-17) ### New components -* __6502 Assembly__ ([#1245](https://github.com/PrismJS/prism/issues/1245)) [[`2ece18b`](https://github.com/PrismJS/prism/commit/2ece18b)] -* __Elm__ ([#1174](https://github.com/PrismJS/prism/issues/1174)) [[`d6da70e`](https://github.com/PrismJS/prism/commit/d6da70e)] -* __IchigoJam BASIC__ ([#1246](https://github.com/PrismJS/prism/issues/1246)) [[`cf840be`](https://github.com/PrismJS/prism/commit/cf840be)] -* __Io__ ([#1251](https://github.com/PrismJS/prism/issues/1251)) [[`84ed3ed`](https://github.com/PrismJS/prism/commit/84ed3ed)] + +- **6502 Assembly** ([#1245](https://github.com/PrismJS/prism/issues/1245)) [[`2ece18b`](https://github.com/PrismJS/prism/commit/2ece18b)] +- **Elm** ([#1174](https://github.com/PrismJS/prism/issues/1174)) [[`d6da70e`](https://github.com/PrismJS/prism/commit/d6da70e)] +- **IchigoJam BASIC** ([#1246](https://github.com/PrismJS/prism/issues/1246)) [[`cf840be`](https://github.com/PrismJS/prism/commit/cf840be)] +- **Io** ([#1251](https://github.com/PrismJS/prism/issues/1251)) [[`84ed3ed`](https://github.com/PrismJS/prism/commit/84ed3ed)] ### Updated components -* __BASIC__: - * Make strings greedy [[`60114d0`](https://github.com/PrismJS/prism/commit/60114d0)] -* __C++__: - * Add C++11 raw string feature ([#1254](https://github.com/PrismJS/prism/issues/1254)) [[`71595be`](https://github.com/PrismJS/prism/commit/71595be)] + +- **BASIC**: + - Make strings greedy [[`60114d0`](https://github.com/PrismJS/prism/commit/60114d0)] +- **C++**: + - Add C++11 raw string feature ([#1254](https://github.com/PrismJS/prism/issues/1254)) [[`71595be`](https://github.com/PrismJS/prism/commit/71595be)] ### Updated plugins -* __Autoloader__: - * Add support for `data-autoloader-path` ([#1242](https://github.com/PrismJS/prism/issues/1242)) [[`39360d6`](https://github.com/PrismJS/prism/commit/39360d6)] -* __Previewers__: - * New plugin combining previous plugins Previewer: Base, Previewer: Angle, Previewer: Color, Previewer: Easing, Previewer: Gradient and Previewer: Time. ([#1244](https://github.com/PrismJS/prism/issues/1244)) [[`28e4b4c`](https://github.com/PrismJS/prism/commit/28e4b4c)] -* __Unescaped Markup__: - * Make it work with any language ([#1265](https://github.com/PrismJS/prism/issues/1265)) [[`7bcdae7`](https://github.com/PrismJS/prism/commit/7bcdae7)] + +- **Autoloader**: + - Add support for `data-autoloader-path` ([#1242](https://github.com/PrismJS/prism/issues/1242)) [[`39360d6`](https://github.com/PrismJS/prism/commit/39360d6)] +- **Previewers**: + - New plugin combining previous plugins Previewer: Base, Previewer: Angle, Previewer: Color, Previewer: Easing, Previewer: Gradient and Previewer: Time. ([#1244](https://github.com/PrismJS/prism/issues/1244)) [[`28e4b4c`](https://github.com/PrismJS/prism/commit/28e4b4c)] +- **Unescaped Markup**: + - Make it work with any language ([#1265](https://github.com/PrismJS/prism/issues/1265)) [[`7bcdae7`](https://github.com/PrismJS/prism/commit/7bcdae7)] ### Other changes -* Add attribute `style` in `package.json` ([#1256](https://github.com/PrismJS/prism/issues/1256)) [[`a9b6785`](https://github.com/PrismJS/prism/commit/a9b6785)] + +- Add attribute `style` in `package.json` ([#1256](https://github.com/PrismJS/prism/issues/1256)) [[`a9b6785`](https://github.com/PrismJS/prism/commit/a9b6785)] ## 1.9.0 (2017-12-06) ### New components -* __Flow__ [[`d27b70d`](https://github.com/PrismJS/prism/commit/d27b70d)] + +- **Flow** [[`d27b70d`](https://github.com/PrismJS/prism/commit/d27b70d)] ### Updated components -* __CSS__: - * Unicode characters in CSS properties ([#1227](https://github.com/PrismJS/prism/issues/1227)) [[`f234ea4`](https://github.com/PrismJS/prism/commit/f234ea4)] -* __JSX__: - * JSX: Improve highlighting support. Fix [#1235](https://github.com/PrismJS/prism/issues/1235) and [#1236](https://github.com/PrismJS/prism/issues/1236) [[`f41c5cd`](https://github.com/PrismJS/prism/commit/f41c5cd)] -* __Markup__: - * Make CSS and JS inclusions in Markup greedy. Fix [#1240](https://github.com/PrismJS/prism/issues/1240) [[`7dc1e45`](https://github.com/PrismJS/prism/commit/7dc1e45)] -* __PHP__: - * Add support for multi-line strings. Fix [#1233](https://github.com/PrismJS/prism/issues/1233) [[`9a542a0`](https://github.com/PrismJS/prism/commit/9a542a0)] + +- **CSS**: + - Unicode characters in CSS properties ([#1227](https://github.com/PrismJS/prism/issues/1227)) [[`f234ea4`](https://github.com/PrismJS/prism/commit/f234ea4)] +- **JSX**: + - JSX: Improve highlighting support. Fix [#1235](https://github.com/PrismJS/prism/issues/1235) and [#1236](https://github.com/PrismJS/prism/issues/1236) [[`f41c5cd`](https://github.com/PrismJS/prism/commit/f41c5cd)] +- **Markup**: + - Make CSS and JS inclusions in Markup greedy. Fix [#1240](https://github.com/PrismJS/prism/issues/1240) [[`7dc1e45`](https://github.com/PrismJS/prism/commit/7dc1e45)] +- **PHP**: + - Add support for multi-line strings. Fix [#1233](https://github.com/PrismJS/prism/issues/1233) [[`9a542a0`](https://github.com/PrismJS/prism/commit/9a542a0)] ### Updated plugins -* __Copy to clipboard__: - * Fix test for native Clipboard. Fix [#1241](https://github.com/PrismJS/prism/issues/1241) [[`e7b5e82`](https://github.com/PrismJS/prism/commit/e7b5e82)] - * Copy to clipboard: Update to v1.7.1. Fix [#1220](https://github.com/PrismJS/prism/issues/1220) [[`a1b85e3`](https://github.com/PrismJS/prism/commit/a1b85e3), [`af50e44`](https://github.com/PrismJS/prism/commit/af50e44)] -* __Line highlight__: - * Fixes to compatibility of line number and line higlight plugins ([#1194](https://github.com/PrismJS/prism/issues/1194)) [[`e63058f`](https://github.com/PrismJS/prism/commit/e63058f), [`3842a91`](https://github.com/PrismJS/prism/commit/3842a91)] -* __Unescaped Markup__: - * Fix ambiguity in documentation by improving examples. Fix [#1197](https://github.com/PrismJS/prism/issues/1197) [[`924784a`](https://github.com/PrismJS/prism/commit/924784a)] + +- **Copy to clipboard**: + - Fix test for native Clipboard. Fix [#1241](https://github.com/PrismJS/prism/issues/1241) [[`e7b5e82`](https://github.com/PrismJS/prism/commit/e7b5e82)] + - Copy to clipboard: Update to v1.7.1. Fix [#1220](https://github.com/PrismJS/prism/issues/1220) [[`a1b85e3`](https://github.com/PrismJS/prism/commit/a1b85e3), [`af50e44`](https://github.com/PrismJS/prism/commit/af50e44)] +- **Line highlight**: + - Fixes to compatibility of line number and line higlight plugins ([#1194](https://github.com/PrismJS/prism/issues/1194)) [[`e63058f`](https://github.com/PrismJS/prism/commit/e63058f), [`3842a91`](https://github.com/PrismJS/prism/commit/3842a91)] +- **Unescaped Markup**: + - Fix ambiguity in documentation by improving examples. Fix [#1197](https://github.com/PrismJS/prism/issues/1197) [[`924784a`](https://github.com/PrismJS/prism/commit/924784a)] ### Other changes -* Allow any element being root instead of document. ([#1230](https://github.com/PrismJS/prism/issues/1230)) [[`69f2e2c`](https://github.com/PrismJS/prism/commit/69f2e2c), [`6e50d44`](https://github.com/PrismJS/prism/commit/6e50d44)] -* Coy Theme: The 'height' element makes code blocks the height of the browser canvas. ([#1224](https://github.com/PrismJS/prism/issues/1224)) [[`ac219d7`](https://github.com/PrismJS/prism/commit/ac219d7)] -* Download page: Fix implicitly declared variable [[`f986551`](https://github.com/PrismJS/prism/commit/f986551)] -* Download page: Add version number at the beginning of the generated files. Fix [#788](https://github.com/PrismJS/prism/issues/788) [[`928790d`](https://github.com/PrismJS/prism/commit/928790d)] + +- Allow any element being root instead of document. ([#1230](https://github.com/PrismJS/prism/issues/1230)) [[`69f2e2c`](https://github.com/PrismJS/prism/commit/69f2e2c), [`6e50d44`](https://github.com/PrismJS/prism/commit/6e50d44)] +- Coy Theme: The 'height' element makes code blocks the height of the browser canvas. ([#1224](https://github.com/PrismJS/prism/issues/1224)) [[`ac219d7`](https://github.com/PrismJS/prism/commit/ac219d7)] +- Download page: Fix implicitly declared variable [[`f986551`](https://github.com/PrismJS/prism/commit/f986551)] +- Download page: Add version number at the beginning of the generated files. Fix [#788](https://github.com/PrismJS/prism/issues/788) [[`928790d`](https://github.com/PrismJS/prism/commit/928790d)] ## 1.8.4 (2017-11-05) ### Updated components -* __ABAP__: - * Regexp optimisation [[`e7b411e`](https://github.com/PrismJS/prism/commit/e7b411e)] -* __ActionScript__: - * Fix XML regex + optimise [[`75d00d7`](https://github.com/PrismJS/prism/commit/75d00d7)] -* __Ada__: - * Regexp simplification [[`e881fe3`](https://github.com/PrismJS/prism/commit/e881fe3)] -* __Apacheconf__: - * Regexp optimisation [[`a065e61`](https://github.com/PrismJS/prism/commit/a065e61)] -* __APL__: - * Regexp simplification [[`33297c4`](https://github.com/PrismJS/prism/commit/33297c4)] -* __AppleScript__: - * Regexp optimisation [[`d879f36`](https://github.com/PrismJS/prism/commit/d879f36)] -* __Arduino__: - * Don't use captures if not needed [[`16b338f`](https://github.com/PrismJS/prism/commit/16b338f)] -* __ASP.NET__: - * Regexp optimisation [[`438926c`](https://github.com/PrismJS/prism/commit/438926c)] -* __AutoHotkey__: - * Regexp simplification + don't use captures if not needed [[`5edfd2f`](https://github.com/PrismJS/prism/commit/5edfd2f)] -* __Bash__: - * Regexp optimisation and simplification [[`75b9b29`](https://github.com/PrismJS/prism/commit/75b9b29)] -* __Bro__: - * Regexp simplification + don't use captures if not needed [[`d4b9003`](https://github.com/PrismJS/prism/commit/d4b9003)] -* __C__: - * Regexp optimisation + don't use captures if not needed [[`f61d487`](https://github.com/PrismJS/prism/commit/f61d487)] -* __C++__: - * Fix operator regexp + regexp simplification + don't use captures if not needed [[`ffeb26e`](https://github.com/PrismJS/prism/commit/ffeb26e)] -* __C#__: - * Remove duplicates in keywords + regexp optimisation + don't use captures if not needed [[`d28d178`](https://github.com/PrismJS/prism/commit/d28d178)] -* __C-like__: - * Regexp simplification + don't use captures if not needed [[`918e0ff`](https://github.com/PrismJS/prism/commit/918e0ff)] -* __CoffeeScript__: - * Regexp optimisation + don't use captures if not needed [[`5895978`](https://github.com/PrismJS/prism/commit/5895978)] -* __Crystal__: - * Remove trailing comma [[`16979a3`](https://github.com/PrismJS/prism/commit/16979a3)] -* __CSS__: - * Regexp simplification + don't use captures if not needed + handle multi-line style attributes [[`43d9f36`](https://github.com/PrismJS/prism/commit/43d9f36)] -* __CSS Extras__: - * Regexp simplification [[`134ed70`](https://github.com/PrismJS/prism/commit/134ed70)] -* __D__: - * Regexp optimisation [[`fbe39c9`](https://github.com/PrismJS/prism/commit/fbe39c9)] -* __Dart__: - * Regexp optimisation [[`f24e919`](https://github.com/PrismJS/prism/commit/f24e919)] -* __Django__: - * Regexp optimisation [[`a95c51d`](https://github.com/PrismJS/prism/commit/a95c51d)] -* __Docker__: - * Regexp optimisation [[`27f99ff`](https://github.com/PrismJS/prism/commit/27f99ff)] -* __Eiffel__: - * Regexp optimisation [[`b7cdea2`](https://github.com/PrismJS/prism/commit/b7cdea2)] -* __Elixir__: - * Regexp optimisation + uniform behavior between ~r and ~s [[`5d12e80`](https://github.com/PrismJS/prism/commit/5d12e80)] -* __Erlang__: - * Regexp optimisation [[`7547f83`](https://github.com/PrismJS/prism/commit/7547f83)] -* __F#__: - * Regexp optimisation + don't use captures if not needed [[`7753fc4`](https://github.com/PrismJS/prism/commit/7753fc4)] -* __Gherkin__: - * Regexp optimisation + don't use captures if not needed + added explanation comment on table-body regexp [[`f26197a`](https://github.com/PrismJS/prism/commit/f26197a)] -* __Git__: - * Regexp optimisation [[`b9483b9`](https://github.com/PrismJS/prism/commit/b9483b9)] -* __GLSL__: - * Regexp optimisation [[`e66d21b`](https://github.com/PrismJS/prism/commit/e66d21b)] -* __Go__: - * Regexp optimisation + don't use captures if not needed [[`88caabb`](https://github.com/PrismJS/prism/commit/88caabb)] -* __GraphQL__: - * Regexp optimisation and simplification [[`2474f06`](https://github.com/PrismJS/prism/commit/2474f06)] -* __Groovy__: - * Regexp optimisation + don't use captures if not needed [[`e74e00c`](https://github.com/PrismJS/prism/commit/e74e00c)] -* __Haml__: - * Regexp optimisation + don't use captures if not needed + fix typo in comment [[`23e3b43`](https://github.com/PrismJS/prism/commit/23e3b43)] -* __Handlebars__: - * Regexp optimisation + don't use captures if not needed [[`09dbfce`](https://github.com/PrismJS/prism/commit/09dbfce)] -* __Haskell__: - * Regexp simplification + don't use captures if not needed [[`f11390a`](https://github.com/PrismJS/prism/commit/f11390a)] -* __HTTP__: - * Regexp simplification + don't use captures if not needed [[`37ef24e`](https://github.com/PrismJS/prism/commit/37ef24e)] -* __Icon__: - * Regexp optimisation [[`9cf64a0`](https://github.com/PrismJS/prism/commit/9cf64a0)] -* __J__: - * Regexp simplification [[`de15150`](https://github.com/PrismJS/prism/commit/de15150)] -* __Java__: - * Don't use captures if not needed [[`96b35c8`](https://github.com/PrismJS/prism/commit/96b35c8)] -* __JavaScript__: - * Regexp optimisation + don't use captures if not needed [[`93d4002`](https://github.com/PrismJS/prism/commit/93d4002)] -* __Jolie__: - * Regexp optimisation + don't use captures if not needed + remove duplicates in keywords [[`a491f9e`](https://github.com/PrismJS/prism/commit/a491f9e)] -* __JSON__: - * Make strings greedy, remove negative look-ahead for ":". Fix [#1204](https://github.com/PrismJS/prism/issues/1204) [[`98acd2d`](https://github.com/PrismJS/prism/commit/98acd2d)] - * Regexp optimisation + don't use captures if not needed [[`8fc1b03`](https://github.com/PrismJS/prism/commit/8fc1b03)] -* __JSX__: - * Regexp optimisation + handle spread operator as a whole [[`28de4e2`](https://github.com/PrismJS/prism/commit/28de4e2)] -* __Julia__: - * Regexp optimisation and simplification [[`12684c0`](https://github.com/PrismJS/prism/commit/12684c0)] -* __Keyman__: - * Regexp optimisation + don't use captures if not needed [[`9726087`](https://github.com/PrismJS/prism/commit/9726087)] -* __Kotlin__: - * Regexp simplification [[`12ff8dc`](https://github.com/PrismJS/prism/commit/12ff8dc)] -* __LaTeX__: - * Regexp optimisation and simplification [[`aa426b0`](https://github.com/PrismJS/prism/commit/aa426b0)] -* __LiveScript__: - * Make interpolated strings greedy + fix variable and identifier regexps [[`c581049`](https://github.com/PrismJS/prism/commit/c581049)] -* __LOLCODE__: - * Don't use captures if not needed [[`52903af`](https://github.com/PrismJS/prism/commit/52903af)] -* __Makefile__: - * Regexp optimisation [[`20ae2e5`](https://github.com/PrismJS/prism/commit/20ae2e5)] -* __Markdown__: - * Don't use captures if not needed [[`f489a1e`](https://github.com/PrismJS/prism/commit/f489a1e)] -* __Markup__: - * Regexp optimisation + fix punctuation inside attr-value [[`ea380c6`](https://github.com/PrismJS/prism/commit/ea380c6)] -* __MATLAB__: - * Make strings greedy + handle line feeds better [[`4cd4f01`](https://github.com/PrismJS/prism/commit/4cd4f01)] -* __Monkey__: - * Don't use captures if not needed [[`7f47140`](https://github.com/PrismJS/prism/commit/7f47140)] -* __N4JS__: - * Don't use captures if not needed [[`2d3f9df`](https://github.com/PrismJS/prism/commit/2d3f9df)] -* __NASM__: - * Regexp optimisation and simplification + don't use captures if not needed [[`9937428`](https://github.com/PrismJS/prism/commit/9937428)] -* __nginx__: - * Remove trailing comma + remove duplicates in keywords [[`c6e7195`](https://github.com/PrismJS/prism/commit/c6e7195)] -* __NSIS__: - * Regexp optimisation + don't use captures if not needed [[`beeb107`](https://github.com/PrismJS/prism/commit/beeb107)] -* __Objective-C__: - * Don't use captures if not needed [[`9be0f88`](https://github.com/PrismJS/prism/commit/9be0f88)] -* __OCaml__: - * Regexp simplification [[`5f5f38c`](https://github.com/PrismJS/prism/commit/5f5f38c)] -* __OpenCL__: - * Don't use captures if not needed [[`5e70f1d`](https://github.com/PrismJS/prism/commit/5e70f1d)] -* __Oz__: - * Fix atom regexp [[`9320e92`](https://github.com/PrismJS/prism/commit/9320e92)] -* __PARI/GP__: - * Regexp optimisation [[`2c7b59b`](https://github.com/PrismJS/prism/commit/2c7b59b)] -* __Parser__: - * Regexp simplification [[`569d511`](https://github.com/PrismJS/prism/commit/569d511)] -* __Perl__: - * Regexp optimisation and simplification + don't use captures if not needed [[`0fe4cf6`](https://github.com/PrismJS/prism/commit/0fe4cf6)] -* __PHP__: - * Don't use captures if not needed Golmote [[`5235f18`](https://github.com/PrismJS/prism/commit/5235f18)] -* __PHP Extras__: - * Add word boundary after global keywords + don't use captures if not needed [[`9049a2a`](https://github.com/PrismJS/prism/commit/9049a2a)] -* __PowerShell__: - * Regexp optimisation + don't use captures if not needed [[`0d05957`](https://github.com/PrismJS/prism/commit/0d05957)] -* __Processing__: - * Regexp simplification [[`8110d38`](https://github.com/PrismJS/prism/commit/8110d38)] -* __.properties__: - * Regexp optimisation [[`678b621`](https://github.com/PrismJS/prism/commit/678b621)] -* __Protocol Buffers__: - * Don't use captures if not needed [[`3e256d8`](https://github.com/PrismJS/prism/commit/3e256d8)] -* __Pug__: - * Don't use captures if not needed [[`76dc925`](https://github.com/PrismJS/prism/commit/76dc925)] -* __Pure__: - * Make inline-lang greedy [[`92318b0`](https://github.com/PrismJS/prism/commit/92318b0)] -* __Python__: - * Add Python builtin function highlighting ([#1205](https://github.com/PrismJS/prism/issues/1205)) [[`2169c99`](https://github.com/PrismJS/prism/commit/2169c99)] - * Python: Add highlighting to functions with space between name and parentheses ([#1207](https://github.com/PrismJS/prism/issues/1207)) [[`3badd8a`](https://github.com/PrismJS/prism/commit/3badd8a)] - * Make triple-quoted strings greedy + regexp optimisation and simplification [[`f09f9f5`](https://github.com/PrismJS/prism/commit/f09f9f5)] -* __Qore__: - * Regexp simplification [[`69459f0`](https://github.com/PrismJS/prism/commit/69459f0)] -* __R__: - * Regexp optimisation [[`06a9da4`](https://github.com/PrismJS/prism/commit/06a9da4)] -* __Reason__: - * Regexp optimisation + don't use capture if not needed [[`19d79b4`](https://github.com/PrismJS/prism/commit/19d79b4)] -* __Ren'py__: - * Make strings greedy + don't use captures if not needed [[`91d84d9`](https://github.com/PrismJS/prism/commit/91d84d9)] -* __reST__: - * Regexp simplification + don't use captures if not needed [[`1a8b3e9`](https://github.com/PrismJS/prism/commit/1a8b3e9)] -* __Rip__: - * Regexp optimisation [[`d7f0ee8`](https://github.com/PrismJS/prism/commit/d7f0ee8)] -* __Ruby__: - * Regexp optimisation and simplification + don't use captures if not needed [[`4902ed4`](https://github.com/PrismJS/prism/commit/4902ed4)] -* __Rust__: - * Regexp optimisation and simplification + don't use captures if not needed [[`cc9d874`](https://github.com/PrismJS/prism/commit/cc9d874)] -* __Sass__: - * Regexp simplification Golmote [[`165d957`](https://github.com/PrismJS/prism/commit/165d957)] -* __Scala__: - * Regexp optimisation Golmote [[`5f50c12`](https://github.com/PrismJS/prism/commit/5f50c12)] -* __Scheme__: - * Regexp optimisation [[`bd19b04`](https://github.com/PrismJS/prism/commit/bd19b04)] -* __SCSS__: - * Regexp simplification [[`c60b7d4`](https://github.com/PrismJS/prism/commit/c60b7d4)] -* __Smalltalk__: - * Regexp simplification [[`41a2c76`](https://github.com/PrismJS/prism/commit/41a2c76)] -* __Smarty__: - * Regexp optimisation and simplification [[`e169be9`](https://github.com/PrismJS/prism/commit/e169be9)] -* __SQL__: - * Regexp optimisation [[`a6244a4`](https://github.com/PrismJS/prism/commit/a6244a4)] -* __Stylus__: - * Regexp optimisation [[`df9506c`](https://github.com/PrismJS/prism/commit/df9506c)] -* __Swift__: - * Don't use captures if not needed [[`a2d737a`](https://github.com/PrismJS/prism/commit/a2d737a)] -* __Tcl__: - * Regexp simplification + don't use captures if not needed [[`f0b8a33`](https://github.com/PrismJS/prism/commit/f0b8a33)] -* __Textile__: - * Regexp optimisation + don't use captures if not needed [[`08139ad`](https://github.com/PrismJS/prism/commit/08139ad)] -* __Twig__: - * Regexp optimisation and simplification + don't use captures if not needed [[`0b10fd0`](https://github.com/PrismJS/prism/commit/0b10fd0)] -* __TypeScript__: - * Don't use captures if not needed [[`e296caf`](https://github.com/PrismJS/prism/commit/e296caf)] -* __Verilog__: - * Regexp simplification [[`1b24b34`](https://github.com/PrismJS/prism/commit/1b24b34)] -* __VHDL__: - * Regexp optimisation and simplification [[`7af36df`](https://github.com/PrismJS/prism/commit/7af36df)] -* __vim__: - * Remove duplicates in keywords [[`700505e`](https://github.com/PrismJS/prism/commit/700505e)] -* __Wiki markup__: - * Fix escaping consistency [[`1fd690d`](https://github.com/PrismJS/prism/commit/1fd690d)] -* __YAML__: - * Regexp optimisation + don't use captures if not needed [[`1fd690d`](https://github.com/PrismJS/prism/commit/1fd690d)] +- **ABAP**: + - Regexp optimisation [[`e7b411e`](https://github.com/PrismJS/prism/commit/e7b411e)] +- **ActionScript**: + - Fix XML regex + optimise [[`75d00d7`](https://github.com/PrismJS/prism/commit/75d00d7)] +- **Ada**: + - Regexp simplification [[`e881fe3`](https://github.com/PrismJS/prism/commit/e881fe3)] +- **Apacheconf**: + - Regexp optimisation [[`a065e61`](https://github.com/PrismJS/prism/commit/a065e61)] +- **APL**: + - Regexp simplification [[`33297c4`](https://github.com/PrismJS/prism/commit/33297c4)] +- **AppleScript**: + - Regexp optimisation [[`d879f36`](https://github.com/PrismJS/prism/commit/d879f36)] +- **Arduino**: + - Don't use captures if not needed [[`16b338f`](https://github.com/PrismJS/prism/commit/16b338f)] +- **ASP.NET**: + - Regexp optimisation [[`438926c`](https://github.com/PrismJS/prism/commit/438926c)] +- **AutoHotkey**: + - Regexp simplification + don't use captures if not needed [[`5edfd2f`](https://github.com/PrismJS/prism/commit/5edfd2f)] +- **Bash**: + - Regexp optimisation and simplification [[`75b9b29`](https://github.com/PrismJS/prism/commit/75b9b29)] +- **Bro**: + - Regexp simplification + don't use captures if not needed [[`d4b9003`](https://github.com/PrismJS/prism/commit/d4b9003)] +- **C**: + - Regexp optimisation + don't use captures if not needed [[`f61d487`](https://github.com/PrismJS/prism/commit/f61d487)] +- **C++**: + - Fix operator regexp + regexp simplification + don't use captures if not needed [[`ffeb26e`](https://github.com/PrismJS/prism/commit/ffeb26e)] +- **C#**: + - Remove duplicates in keywords + regexp optimisation + don't use captures if not needed [[`d28d178`](https://github.com/PrismJS/prism/commit/d28d178)] +- **C-like**: + - Regexp simplification + don't use captures if not needed [[`918e0ff`](https://github.com/PrismJS/prism/commit/918e0ff)] +- **CoffeeScript**: + - Regexp optimisation + don't use captures if not needed [[`5895978`](https://github.com/PrismJS/prism/commit/5895978)] +- **Crystal**: + - Remove trailing comma [[`16979a3`](https://github.com/PrismJS/prism/commit/16979a3)] +- **CSS**: + - Regexp simplification + don't use captures if not needed + handle multi-line style attributes [[`43d9f36`](https://github.com/PrismJS/prism/commit/43d9f36)] +- **CSS Extras**: + - Regexp simplification [[`134ed70`](https://github.com/PrismJS/prism/commit/134ed70)] +- **D**: + - Regexp optimisation [[`fbe39c9`](https://github.com/PrismJS/prism/commit/fbe39c9)] +- **Dart**: + - Regexp optimisation [[`f24e919`](https://github.com/PrismJS/prism/commit/f24e919)] +- **Django**: + - Regexp optimisation [[`a95c51d`](https://github.com/PrismJS/prism/commit/a95c51d)] +- **Docker**: + - Regexp optimisation [[`27f99ff`](https://github.com/PrismJS/prism/commit/27f99ff)] +- **Eiffel**: + - Regexp optimisation [[`b7cdea2`](https://github.com/PrismJS/prism/commit/b7cdea2)] +- **Elixir**: + - Regexp optimisation + uniform behavior between ~r and ~s [[`5d12e80`](https://github.com/PrismJS/prism/commit/5d12e80)] +- **Erlang**: + - Regexp optimisation [[`7547f83`](https://github.com/PrismJS/prism/commit/7547f83)] +- **F#**: + - Regexp optimisation + don't use captures if not needed [[`7753fc4`](https://github.com/PrismJS/prism/commit/7753fc4)] +- **Gherkin**: + - Regexp optimisation + don't use captures if not needed + added explanation comment on table-body regexp [[`f26197a`](https://github.com/PrismJS/prism/commit/f26197a)] +- **Git**: + - Regexp optimisation [[`b9483b9`](https://github.com/PrismJS/prism/commit/b9483b9)] +- **GLSL**: + - Regexp optimisation [[`e66d21b`](https://github.com/PrismJS/prism/commit/e66d21b)] +- **Go**: + - Regexp optimisation + don't use captures if not needed [[`88caabb`](https://github.com/PrismJS/prism/commit/88caabb)] +- **GraphQL**: + - Regexp optimisation and simplification [[`2474f06`](https://github.com/PrismJS/prism/commit/2474f06)] +- **Groovy**: + - Regexp optimisation + don't use captures if not needed [[`e74e00c`](https://github.com/PrismJS/prism/commit/e74e00c)] +- **Haml**: + - Regexp optimisation + don't use captures if not needed + fix typo in comment [[`23e3b43`](https://github.com/PrismJS/prism/commit/23e3b43)] +- **Handlebars**: + - Regexp optimisation + don't use captures if not needed [[`09dbfce`](https://github.com/PrismJS/prism/commit/09dbfce)] +- **Haskell**: + - Regexp simplification + don't use captures if not needed [[`f11390a`](https://github.com/PrismJS/prism/commit/f11390a)] +- **HTTP**: + - Regexp simplification + don't use captures if not needed [[`37ef24e`](https://github.com/PrismJS/prism/commit/37ef24e)] +- **Icon**: + - Regexp optimisation [[`9cf64a0`](https://github.com/PrismJS/prism/commit/9cf64a0)] +- **J**: + - Regexp simplification [[`de15150`](https://github.com/PrismJS/prism/commit/de15150)] +- **Java**: + - Don't use captures if not needed [[`96b35c8`](https://github.com/PrismJS/prism/commit/96b35c8)] +- **JavaScript**: + - Regexp optimisation + don't use captures if not needed [[`93d4002`](https://github.com/PrismJS/prism/commit/93d4002)] +- **Jolie**: + - Regexp optimisation + don't use captures if not needed + remove duplicates in keywords [[`a491f9e`](https://github.com/PrismJS/prism/commit/a491f9e)] +- **JSON**: + - Make strings greedy, remove negative look-ahead for ":". Fix [#1204](https://github.com/PrismJS/prism/issues/1204) [[`98acd2d`](https://github.com/PrismJS/prism/commit/98acd2d)] + - Regexp optimisation + don't use captures if not needed [[`8fc1b03`](https://github.com/PrismJS/prism/commit/8fc1b03)] +- **JSX**: + - Regexp optimisation + handle spread operator as a whole [[`28de4e2`](https://github.com/PrismJS/prism/commit/28de4e2)] +- **Julia**: + - Regexp optimisation and simplification [[`12684c0`](https://github.com/PrismJS/prism/commit/12684c0)] +- **Keyman**: + - Regexp optimisation + don't use captures if not needed [[`9726087`](https://github.com/PrismJS/prism/commit/9726087)] +- **Kotlin**: + - Regexp simplification [[`12ff8dc`](https://github.com/PrismJS/prism/commit/12ff8dc)] +- **LaTeX**: + - Regexp optimisation and simplification [[`aa426b0`](https://github.com/PrismJS/prism/commit/aa426b0)] +- **LiveScript**: + - Make interpolated strings greedy + fix variable and identifier regexps [[`c581049`](https://github.com/PrismJS/prism/commit/c581049)] +- **LOLCODE**: + - Don't use captures if not needed [[`52903af`](https://github.com/PrismJS/prism/commit/52903af)] +- **Makefile**: + - Regexp optimisation [[`20ae2e5`](https://github.com/PrismJS/prism/commit/20ae2e5)] +- **Markdown**: + - Don't use captures if not needed [[`f489a1e`](https://github.com/PrismJS/prism/commit/f489a1e)] +- **Markup**: + - Regexp optimisation + fix punctuation inside attr-value [[`ea380c6`](https://github.com/PrismJS/prism/commit/ea380c6)] +- **MATLAB**: + - Make strings greedy + handle line feeds better [[`4cd4f01`](https://github.com/PrismJS/prism/commit/4cd4f01)] +- **Monkey**: + - Don't use captures if not needed [[`7f47140`](https://github.com/PrismJS/prism/commit/7f47140)] +- **N4JS**: + - Don't use captures if not needed [[`2d3f9df`](https://github.com/PrismJS/prism/commit/2d3f9df)] +- **NASM**: + - Regexp optimisation and simplification + don't use captures if not needed [[`9937428`](https://github.com/PrismJS/prism/commit/9937428)] +- **nginx**: + - Remove trailing comma + remove duplicates in keywords [[`c6e7195`](https://github.com/PrismJS/prism/commit/c6e7195)] +- **NSIS**: + - Regexp optimisation + don't use captures if not needed [[`beeb107`](https://github.com/PrismJS/prism/commit/beeb107)] +- **Objective-C**: + - Don't use captures if not needed [[`9be0f88`](https://github.com/PrismJS/prism/commit/9be0f88)] +- **OCaml**: + - Regexp simplification [[`5f5f38c`](https://github.com/PrismJS/prism/commit/5f5f38c)] +- **OpenCL**: + - Don't use captures if not needed [[`5e70f1d`](https://github.com/PrismJS/prism/commit/5e70f1d)] +- **Oz**: + - Fix atom regexp [[`9320e92`](https://github.com/PrismJS/prism/commit/9320e92)] +- **PARI/GP**: + - Regexp optimisation [[`2c7b59b`](https://github.com/PrismJS/prism/commit/2c7b59b)] +- **Parser**: + - Regexp simplification [[`569d511`](https://github.com/PrismJS/prism/commit/569d511)] +- **Perl**: + - Regexp optimisation and simplification + don't use captures if not needed [[`0fe4cf6`](https://github.com/PrismJS/prism/commit/0fe4cf6)] +- **PHP**: + - Don't use captures if not needed Golmote [[`5235f18`](https://github.com/PrismJS/prism/commit/5235f18)] +- **PHP Extras**: + - Add word boundary after global keywords + don't use captures if not needed [[`9049a2a`](https://github.com/PrismJS/prism/commit/9049a2a)] +- **PowerShell**: + - Regexp optimisation + don't use captures if not needed [[`0d05957`](https://github.com/PrismJS/prism/commit/0d05957)] +- **Processing**: + - Regexp simplification [[`8110d38`](https://github.com/PrismJS/prism/commit/8110d38)] +- **.properties**: + - Regexp optimisation [[`678b621`](https://github.com/PrismJS/prism/commit/678b621)] +- **Protocol Buffers**: + - Don't use captures if not needed [[`3e256d8`](https://github.com/PrismJS/prism/commit/3e256d8)] +- **Pug**: + - Don't use captures if not needed [[`76dc925`](https://github.com/PrismJS/prism/commit/76dc925)] +- **Pure**: + - Make inline-lang greedy [[`92318b0`](https://github.com/PrismJS/prism/commit/92318b0)] +- **Python**: + - Add Python builtin function highlighting ([#1205](https://github.com/PrismJS/prism/issues/1205)) [[`2169c99`](https://github.com/PrismJS/prism/commit/2169c99)] + - Python: Add highlighting to functions with space between name and parentheses ([#1207](https://github.com/PrismJS/prism/issues/1207)) [[`3badd8a`](https://github.com/PrismJS/prism/commit/3badd8a)] + - Make triple-quoted strings greedy + regexp optimisation and simplification [[`f09f9f5`](https://github.com/PrismJS/prism/commit/f09f9f5)] +- **Qore**: + - Regexp simplification [[`69459f0`](https://github.com/PrismJS/prism/commit/69459f0)] +- **R**: + - Regexp optimisation [[`06a9da4`](https://github.com/PrismJS/prism/commit/06a9da4)] +- **Reason**: + - Regexp optimisation + don't use capture if not needed [[`19d79b4`](https://github.com/PrismJS/prism/commit/19d79b4)] +- **Ren'py**: + - Make strings greedy + don't use captures if not needed [[`91d84d9`](https://github.com/PrismJS/prism/commit/91d84d9)] +- **reST**: + - Regexp simplification + don't use captures if not needed [[`1a8b3e9`](https://github.com/PrismJS/prism/commit/1a8b3e9)] +- **Rip**: + - Regexp optimisation [[`d7f0ee8`](https://github.com/PrismJS/prism/commit/d7f0ee8)] +- **Ruby**: + - Regexp optimisation and simplification + don't use captures if not needed [[`4902ed4`](https://github.com/PrismJS/prism/commit/4902ed4)] +- **Rust**: + - Regexp optimisation and simplification + don't use captures if not needed [[`cc9d874`](https://github.com/PrismJS/prism/commit/cc9d874)] +- **Sass**: + - Regexp simplification Golmote [[`165d957`](https://github.com/PrismJS/prism/commit/165d957)] +- **Scala**: + - Regexp optimisation Golmote [[`5f50c12`](https://github.com/PrismJS/prism/commit/5f50c12)] +- **Scheme**: + - Regexp optimisation [[`bd19b04`](https://github.com/PrismJS/prism/commit/bd19b04)] +- **SCSS**: + - Regexp simplification [[`c60b7d4`](https://github.com/PrismJS/prism/commit/c60b7d4)] +- **Smalltalk**: + - Regexp simplification [[`41a2c76`](https://github.com/PrismJS/prism/commit/41a2c76)] +- **Smarty**: + - Regexp optimisation and simplification [[`e169be9`](https://github.com/PrismJS/prism/commit/e169be9)] +- **SQL**: + - Regexp optimisation [[`a6244a4`](https://github.com/PrismJS/prism/commit/a6244a4)] +- **Stylus**: + - Regexp optimisation [[`df9506c`](https://github.com/PrismJS/prism/commit/df9506c)] +- **Swift**: + - Don't use captures if not needed [[`a2d737a`](https://github.com/PrismJS/prism/commit/a2d737a)] +- **Tcl**: + - Regexp simplification + don't use captures if not needed [[`f0b8a33`](https://github.com/PrismJS/prism/commit/f0b8a33)] +- **Textile**: + - Regexp optimisation + don't use captures if not needed [[`08139ad`](https://github.com/PrismJS/prism/commit/08139ad)] +- **Twig**: + - Regexp optimisation and simplification + don't use captures if not needed [[`0b10fd0`](https://github.com/PrismJS/prism/commit/0b10fd0)] +- **TypeScript**: + - Don't use captures if not needed [[`e296caf`](https://github.com/PrismJS/prism/commit/e296caf)] +- **Verilog**: + - Regexp simplification [[`1b24b34`](https://github.com/PrismJS/prism/commit/1b24b34)] +- **VHDL**: + - Regexp optimisation and simplification [[`7af36df`](https://github.com/PrismJS/prism/commit/7af36df)] +- **vim**: + - Remove duplicates in keywords [[`700505e`](https://github.com/PrismJS/prism/commit/700505e)] +- **Wiki markup**: + - Fix escaping consistency [[`1fd690d`](https://github.com/PrismJS/prism/commit/1fd690d)] +- **YAML**: + - Regexp optimisation + don't use captures if not needed [[`1fd690d`](https://github.com/PrismJS/prism/commit/1fd690d)] ### Other changes -* Remove comments spellcheck for AMP validation ([#1106](https://github.com/PrismJS/prism/issues/1106)) [[`de996d7`](https://github.com/PrismJS/prism/commit/de996d7)] -* Prevent error from throwing when element does not have a parentNode in highlightElement. [[`c33be19`](https://github.com/PrismJS/prism/commit/c33be19)] -* Provide a way to load Prism from inside a Worker without listening to messages. ([#1188](https://github.com/PrismJS/prism/issues/1188)) [[`d09982d`](https://github.com/PrismJS/prism/commit/d09982d)] + +- Remove comments spellcheck for AMP validation ([#1106](https://github.com/PrismJS/prism/issues/1106)) [[`de996d7`](https://github.com/PrismJS/prism/commit/de996d7)] +- Prevent error from throwing when element does not have a parentNode in highlightElement. [[`c33be19`](https://github.com/PrismJS/prism/commit/c33be19)] +- Provide a way to load Prism from inside a Worker without listening to messages. ([#1188](https://github.com/PrismJS/prism/issues/1188)) [[`d09982d`](https://github.com/PrismJS/prism/commit/d09982d)] ## 1.8.3 (2017-10-19) ### Other changes -* Fix inclusion tests for Pug [[`955c2ab`](https://github.com/PrismJS/prism/commit/955c2ab)] +- Fix inclusion tests for Pug [[`955c2ab`](https://github.com/PrismJS/prism/commit/955c2ab)] ## 1.8.2 (2017-10-19) ### Updated components -* __Jade__: - * Jade has been renamed to __Pug__ ([#1201](https://github.com/PrismJS/prism/issues/1201)) [[`bcfef7c`](https://github.com/PrismJS/prism/commit/bcfef7c)] -* __JavaScript__: - * Better highlighting of functions ([#1190](https://github.com/PrismJS/prism/issues/1190)) [[`8ee2cd3`](https://github.com/PrismJS/prism/commit/8ee2cd3)] + +- **Jade**: + - Jade has been renamed to **Pug** ([#1201](https://github.com/PrismJS/prism/issues/1201)) [[`bcfef7c`](https://github.com/PrismJS/prism/commit/bcfef7c)] +- **JavaScript**: + - Better highlighting of functions ([#1190](https://github.com/PrismJS/prism/issues/1190)) [[`8ee2cd3`](https://github.com/PrismJS/prism/commit/8ee2cd3)] ### Update plugins -* __Copy to clipboard__: - * Fix error occurring when using in Chrome 61+ ([#1206](https://github.com/PrismJS/prism/issues/1206)) [[`b41d571`](https://github.com/PrismJS/prism/commit/b41d571)] -* __Show invisibles__: - * Prevent error when using with Autoloader plugin ([#1195](https://github.com/PrismJS/prism/issues/1195)) [[`ed8bdb5`](https://github.com/PrismJS/prism/commit/ed8bdb5)] + +- **Copy to clipboard**: + - Fix error occurring when using in Chrome 61+ ([#1206](https://github.com/PrismJS/prism/issues/1206)) [[`b41d571`](https://github.com/PrismJS/prism/commit/b41d571)] +- **Show invisibles**: + - Prevent error when using with Autoloader plugin ([#1195](https://github.com/PrismJS/prism/issues/1195)) [[`ed8bdb5`](https://github.com/PrismJS/prism/commit/ed8bdb5)] ## 1.8.1 (2017-09-16) ### Other changes -* Add Arduino to components.js [[`290a3c6`](https://github.com/PrismJS/prism/commit/290a3c6)] +- Add Arduino to components.js [[`290a3c6`](https://github.com/PrismJS/prism/commit/290a3c6)] ## 1.8.0 (2017-09-16) ### New components -* __Arduino__ ([#1184](https://github.com/PrismJS/prism/issues/1184)) [[`edf2454`](https://github.com/PrismJS/prism/commit/edf2454)] -* __OpenCL__ ([#1175](https://github.com/PrismJS/prism/issues/1175)) [[`131e8fa`](https://github.com/PrismJS/prism/commit/131e8fa)] +- **Arduino** ([#1184](https://github.com/PrismJS/prism/issues/1184)) [[`edf2454`](https://github.com/PrismJS/prism/commit/edf2454)] +- **OpenCL** ([#1175](https://github.com/PrismJS/prism/issues/1175)) [[`131e8fa`](https://github.com/PrismJS/prism/commit/131e8fa)] ### Updated plugins -* __Autolinker__: - * Silently catch any error thrown by decodeURIComponent. Fixes [#1186](https://github.com/PrismJS/prism/issues/1186) [[`2e43fcf`](https://github.com/PrismJS/prism/commit/2e43fcf)] +- **Autolinker**: + - Silently catch any error thrown by decodeURIComponent. Fixes [#1186](https://github.com/PrismJS/prism/issues/1186) [[`2e43fcf`](https://github.com/PrismJS/prism/commit/2e43fcf)] ## 1.7.0 (2017-09-09) ### New components -* __Django/Jinja2__ ([#1085](https://github.com/PrismJS/prism/issues/1085)) [[`345b1b2`](https://github.com/PrismJS/prism/commit/345b1b2)] -* __N4JS__ ([#1141](https://github.com/PrismJS/prism/issues/1141)) [[`eaa8ebb`](https://github.com/PrismJS/prism/commit/eaa8ebb)] -* __Ren'py__ ([#658](https://github.com/PrismJS/prism/issues/658)) [[`7ab4013`](https://github.com/PrismJS/prism/commit/7ab4013)] -* __VB.Net__ ([#1122](https://github.com/PrismJS/prism/issues/1122)) [[`5400651`](https://github.com/PrismJS/prism/commit/5400651)] +- **Django/Jinja2** ([#1085](https://github.com/PrismJS/prism/issues/1085)) [[`345b1b2`](https://github.com/PrismJS/prism/commit/345b1b2)] +- **N4JS** ([#1141](https://github.com/PrismJS/prism/issues/1141)) [[`eaa8ebb`](https://github.com/PrismJS/prism/commit/eaa8ebb)] +- **Ren'py** ([#658](https://github.com/PrismJS/prism/issues/658)) [[`7ab4013`](https://github.com/PrismJS/prism/commit/7ab4013)] +- **VB.Net** ([#1122](https://github.com/PrismJS/prism/issues/1122)) [[`5400651`](https://github.com/PrismJS/prism/commit/5400651)] ### Updated components -* __APL__: - * Add left shoe underbar and right shoe underbar ([#1072](https://github.com/PrismJS/prism/issues/1072)) [[`12238c5`](https://github.com/PrismJS/prism/commit/12238c5)] - * Update prism-apl.js ([#1126](https://github.com/PrismJS/prism/issues/1126)) [[`a5f3cdb`](https://github.com/PrismJS/prism/commit/a5f3cdb)] -* __C__: - * Add more keywords and constants for C. ([#1029](https://github.com/PrismJS/prism/issues/1029)) [[`43a388e`](https://github.com/PrismJS/prism/commit/43a388e)] -* __C#__: - * Fix wrong highlighting when three slashes appear inside string. Fix [#1091](https://github.com/PrismJS/prism/issues/1091) [[`dfb6f17`](https://github.com/PrismJS/prism/commit/dfb6f17)] -* __C-like__: - * Add support for unclosed block comments. Close [#828](https://github.com/PrismJS/prism/issues/828) [[`3426ed1`](https://github.com/PrismJS/prism/commit/3426ed1)] -* __Crystal__: - * Update Crystal keywords ([#1092](https://github.com/PrismJS/prism/issues/1092)) [[`125bff1`](https://github.com/PrismJS/prism/commit/125bff1)] -* __CSS Extras__: - * Support CSS #RRGGBBAA ([#1139](https://github.com/PrismJS/prism/issues/1139)) [[`07a6806`](https://github.com/PrismJS/prism/commit/07a6806)] -* __Docker__: - * Add dockerfile alias for docker language ([#1164](https://github.com/PrismJS/prism/issues/1164)) [[`601c47f`](https://github.com/PrismJS/prism/commit/601c47f)] - * Update the list of keywords for dockerfiles ([#1180](https://github.com/PrismJS/prism/issues/1180)) [[`f0d73e0`](https://github.com/PrismJS/prism/commit/f0d73e0)] -* __Eiffel__: - * Add class-name highlighting for Eiffel ([#471](https://github.com/PrismJS/prism/issues/471)) [[`cd03587`](https://github.com/PrismJS/prism/commit/cd03587)] -* __Handlebars__: - * Check for possible pre-existing marker strings in Handlebars [[`7a1a404`](https://github.com/PrismJS/prism/commit/7a1a404)] -* __JavaScript__: - * Properly match every operator as a whole token. Fix [#1133](https://github.com/PrismJS/prism/issues/1133) [[`9f649fb`](https://github.com/PrismJS/prism/commit/9f649fb)] - * Allows uppercase prefixes in JS number literals ([#1151](https://github.com/PrismJS/prism/issues/1151)) [[`d4ee904`](https://github.com/PrismJS/prism/commit/d4ee904)] - * Reduced backtracking in regex pattern. Fix [#1159](https://github.com/PrismJS/prism/issues/1159) [[`ac09e97`](https://github.com/PrismJS/prism/commit/ac09e97)] -* __JSON__: - * Fix property and string patterns performance. Fix [#1080](https://github.com/PrismJS/prism/issues/1080) [[`0ca1353`](https://github.com/PrismJS/prism/commit/0ca1353)] -* __JSX__: - * JSX spread operator break. Fixes [#1061](https://github.com/PrismJS/prism/issues/1061) ([#1094](https://github.com/PrismJS/prism/issues/1094)) [[`561bceb`](https://github.com/PrismJS/prism/commit/561bceb)] - * Fix highlighting of attributes containing spaces [[`867ea42`](https://github.com/PrismJS/prism/commit/867ea42)] - * Improved performance for tags (when not matching) Fix [#1152](https://github.com/PrismJS/prism/issues/1152) [[`b0fe103`](https://github.com/PrismJS/prism/commit/b0fe103)] -* __LOLCODE__: - * Make strings greedy Golmote [[`1a5e7a4`](https://github.com/PrismJS/prism/commit/1a5e7a4)] -* __Markup__: - * Support HTML entities in attribute values ([#1143](https://github.com/PrismJS/prism/issues/1143)) [[`1d5047d`](https://github.com/PrismJS/prism/commit/1d5047d)] -* __NSIS__: - * Update patterns ([#1033](https://github.com/PrismJS/prism/issues/1033)) [[`01a59d8`](https://github.com/PrismJS/prism/commit/01a59d8)] - * Add support for NSIS 3.02 ([#1169](https://github.com/PrismJS/prism/issues/1169)) [[`393b5f7`](https://github.com/PrismJS/prism/commit/393b5f7)] -* __PHP__: - * Fix the PHP language ([#1100](https://github.com/PrismJS/prism/issues/1100)) [[`1453fa7`](https://github.com/PrismJS/prism/commit/1453fa7)] - * Check for possible pre-existing marker strings in PHP [[`36bc560`](https://github.com/PrismJS/prism/commit/36bc560)] -* __Ruby__: - * Fix slash regex performance. Fix [#1083](https://github.com/PrismJS/prism/issues/1083) [[`a708730`](https://github.com/PrismJS/prism/commit/a708730)] - * Add support for =begin =end comments. Manual merge of [#1121](https://github.com/PrismJS/prism/issues/1121). [[`62cdaf8`](https://github.com/PrismJS/prism/commit/62cdaf8)] -* __Smarty__: - * Check for possible pre-existing marker strings in Smarty [[`5df26e2`](https://github.com/PrismJS/prism/commit/5df26e2)] -* __TypeScript__: - * Update typescript keywords ([#1064](https://github.com/PrismJS/prism/issues/1064)) [[`52020a0`](https://github.com/PrismJS/prism/commit/52020a0)] - * Chmod -x prism-typescript component ([#1145](https://github.com/PrismJS/prism/issues/1145)) [[`afe0542`](https://github.com/PrismJS/prism/commit/afe0542)] -* __YAML__: - * Make strings greedy (partial fix for [#1075](https://github.com/PrismJS/prism/issues/1075)) [[`565a2cc`](https://github.com/PrismJS/prism/commit/565a2cc)] +- **APL**: + - Add left shoe underbar and right shoe underbar ([#1072](https://github.com/PrismJS/prism/issues/1072)) [[`12238c5`](https://github.com/PrismJS/prism/commit/12238c5)] + - Update prism-apl.js ([#1126](https://github.com/PrismJS/prism/issues/1126)) [[`a5f3cdb`](https://github.com/PrismJS/prism/commit/a5f3cdb)] +- **C**: + - Add more keywords and constants for C. ([#1029](https://github.com/PrismJS/prism/issues/1029)) [[`43a388e`](https://github.com/PrismJS/prism/commit/43a388e)] +- **C#**: + - Fix wrong highlighting when three slashes appear inside string. Fix [#1091](https://github.com/PrismJS/prism/issues/1091) [[`dfb6f17`](https://github.com/PrismJS/prism/commit/dfb6f17)] +- **C-like**: + - Add support for unclosed block comments. Close [#828](https://github.com/PrismJS/prism/issues/828) [[`3426ed1`](https://github.com/PrismJS/prism/commit/3426ed1)] +- **Crystal**: + - Update Crystal keywords ([#1092](https://github.com/PrismJS/prism/issues/1092)) [[`125bff1`](https://github.com/PrismJS/prism/commit/125bff1)] +- **CSS Extras**: + - Support CSS #RRGGBBAA ([#1139](https://github.com/PrismJS/prism/issues/1139)) [[`07a6806`](https://github.com/PrismJS/prism/commit/07a6806)] +- **Docker**: + - Add dockerfile alias for docker language ([#1164](https://github.com/PrismJS/prism/issues/1164)) [[`601c47f`](https://github.com/PrismJS/prism/commit/601c47f)] + - Update the list of keywords for dockerfiles ([#1180](https://github.com/PrismJS/prism/issues/1180)) [[`f0d73e0`](https://github.com/PrismJS/prism/commit/f0d73e0)] +- **Eiffel**: + - Add class-name highlighting for Eiffel ([#471](https://github.com/PrismJS/prism/issues/471)) [[`cd03587`](https://github.com/PrismJS/prism/commit/cd03587)] +- **Handlebars**: + - Check for possible pre-existing marker strings in Handlebars [[`7a1a404`](https://github.com/PrismJS/prism/commit/7a1a404)] +- **JavaScript**: + - Properly match every operator as a whole token. Fix [#1133](https://github.com/PrismJS/prism/issues/1133) [[`9f649fb`](https://github.com/PrismJS/prism/commit/9f649fb)] + - Allows uppercase prefixes in JS number literals ([#1151](https://github.com/PrismJS/prism/issues/1151)) [[`d4ee904`](https://github.com/PrismJS/prism/commit/d4ee904)] + - Reduced backtracking in regex pattern. Fix [#1159](https://github.com/PrismJS/prism/issues/1159) [[`ac09e97`](https://github.com/PrismJS/prism/commit/ac09e97)] +- **JSON**: + - Fix property and string patterns performance. Fix [#1080](https://github.com/PrismJS/prism/issues/1080) [[`0ca1353`](https://github.com/PrismJS/prism/commit/0ca1353)] +- **JSX**: + - JSX spread operator break. Fixes [#1061](https://github.com/PrismJS/prism/issues/1061) ([#1094](https://github.com/PrismJS/prism/issues/1094)) [[`561bceb`](https://github.com/PrismJS/prism/commit/561bceb)] + - Fix highlighting of attributes containing spaces [[`867ea42`](https://github.com/PrismJS/prism/commit/867ea42)] + - Improved performance for tags (when not matching) Fix [#1152](https://github.com/PrismJS/prism/issues/1152) [[`b0fe103`](https://github.com/PrismJS/prism/commit/b0fe103)] +- **LOLCODE**: + - Make strings greedy Golmote [[`1a5e7a4`](https://github.com/PrismJS/prism/commit/1a5e7a4)] +- **Markup**: + - Support HTML entities in attribute values ([#1143](https://github.com/PrismJS/prism/issues/1143)) [[`1d5047d`](https://github.com/PrismJS/prism/commit/1d5047d)] +- **NSIS**: + - Update patterns ([#1033](https://github.com/PrismJS/prism/issues/1033)) [[`01a59d8`](https://github.com/PrismJS/prism/commit/01a59d8)] + - Add support for NSIS 3.02 ([#1169](https://github.com/PrismJS/prism/issues/1169)) [[`393b5f7`](https://github.com/PrismJS/prism/commit/393b5f7)] +- **PHP**: + - Fix the PHP language ([#1100](https://github.com/PrismJS/prism/issues/1100)) [[`1453fa7`](https://github.com/PrismJS/prism/commit/1453fa7)] + - Check for possible pre-existing marker strings in PHP [[`36bc560`](https://github.com/PrismJS/prism/commit/36bc560)] +- **Ruby**: + - Fix slash regex performance. Fix [#1083](https://github.com/PrismJS/prism/issues/1083) [[`a708730`](https://github.com/PrismJS/prism/commit/a708730)] + - Add support for =begin =end comments. Manual merge of [#1121](https://github.com/PrismJS/prism/issues/1121). [[`62cdaf8`](https://github.com/PrismJS/prism/commit/62cdaf8)] +- **Smarty**: + - Check for possible pre-existing marker strings in Smarty [[`5df26e2`](https://github.com/PrismJS/prism/commit/5df26e2)] +- **TypeScript**: + - Update typescript keywords ([#1064](https://github.com/PrismJS/prism/issues/1064)) [[`52020a0`](https://github.com/PrismJS/prism/commit/52020a0)] + - Chmod -x prism-typescript component ([#1145](https://github.com/PrismJS/prism/issues/1145)) [[`afe0542`](https://github.com/PrismJS/prism/commit/afe0542)] +- **YAML**: + - Make strings greedy (partial fix for [#1075](https://github.com/PrismJS/prism/issues/1075)) [[`565a2cc`](https://github.com/PrismJS/prism/commit/565a2cc)] ### Updated plugins -* __Autolinker__: - * Fixed an rendering issue for encoded urls ([#1173](https://github.com/PrismJS/prism/issues/1173)) [[`abc007f`](https://github.com/PrismJS/prism/commit/abc007f)] -* __Custom Class__: - * Add missing noCSS property for the Custom Class plugin [[`ba64f8d`](https://github.com/PrismJS/prism/commit/ba64f8d)] - * Added a default for classMap. Fixes [#1137](https://github.com/PrismJS/prism/issues/1137). ([#1157](https://github.com/PrismJS/prism/issues/1157)) [[`5400af9`](https://github.com/PrismJS/prism/commit/5400af9)] -* __Keep Markup__: - * Store highlightedCode after reinserting markup. Fix [#1127](https://github.com/PrismJS/prism/issues/1127) [[`6df2ceb`](https://github.com/PrismJS/prism/commit/6df2ceb)] -* __Line Highlight__: - * Cleanup left-over line-highlight tags before other plugins run [[`79b723d`](https://github.com/PrismJS/prism/commit/79b723d)] - * Avoid conflict between line-highlight and other plugins [[`224fdb8`](https://github.com/PrismJS/prism/commit/224fdb8)] -* __Line Numbers__: - * Support soft wrap for line numbers plugin ([#584](https://github.com/PrismJS/prism/issues/584)) [[`849f1d6`](https://github.com/PrismJS/prism/commit/849f1d6)] - * Plugins fixes (unescaped-markup, line-numbers) ([#1012](https://github.com/PrismJS/prism/issues/1012)) [[`3fb7cf8`](https://github.com/PrismJS/prism/commit/3fb7cf8)] -* __Normalize Whitespace__: - * Add Node.js support for the normalize-whitespace plugin [[`6c7dae2`](https://github.com/PrismJS/prism/commit/6c7dae2)] -* __Unescaped Markup__: - * Plugins fixes (unescaped-markup, line-numbers) ([#1012](https://github.com/PrismJS/prism/issues/1012)) [[`3fb7cf8`](https://github.com/PrismJS/prism/commit/3fb7cf8)] +- **Autolinker**: + - Fixed an rendering issue for encoded urls ([#1173](https://github.com/PrismJS/prism/issues/1173)) [[`abc007f`](https://github.com/PrismJS/prism/commit/abc007f)] +- **Custom Class**: + - Add missing noCSS property for the Custom Class plugin [[`ba64f8d`](https://github.com/PrismJS/prism/commit/ba64f8d)] + - Added a default for classMap. Fixes [#1137](https://github.com/PrismJS/prism/issues/1137). ([#1157](https://github.com/PrismJS/prism/issues/1157)) [[`5400af9`](https://github.com/PrismJS/prism/commit/5400af9)] +- **Keep Markup**: + - Store highlightedCode after reinserting markup. Fix [#1127](https://github.com/PrismJS/prism/issues/1127) [[`6df2ceb`](https://github.com/PrismJS/prism/commit/6df2ceb)] +- **Line Highlight**: + - Cleanup left-over line-highlight tags before other plugins run [[`79b723d`](https://github.com/PrismJS/prism/commit/79b723d)] + - Avoid conflict between line-highlight and other plugins [[`224fdb8`](https://github.com/PrismJS/prism/commit/224fdb8)] +- **Line Numbers**: + - Support soft wrap for line numbers plugin ([#584](https://github.com/PrismJS/prism/issues/584)) [[`849f1d6`](https://github.com/PrismJS/prism/commit/849f1d6)] + - Plugins fixes (unescaped-markup, line-numbers) ([#1012](https://github.com/PrismJS/prism/issues/1012)) [[`3fb7cf8`](https://github.com/PrismJS/prism/commit/3fb7cf8)] +- **Normalize Whitespace**: + - Add Node.js support for the normalize-whitespace plugin [[`6c7dae2`](https://github.com/PrismJS/prism/commit/6c7dae2)] +- **Unescaped Markup**: + - Plugins fixes (unescaped-markup, line-numbers) ([#1012](https://github.com/PrismJS/prism/issues/1012)) [[`3fb7cf8`](https://github.com/PrismJS/prism/commit/3fb7cf8)] ### Updated themes -* __Coy__: - * Scroll 'Coy' background with contents ([#1163](https://github.com/PrismJS/prism/issues/1163)) [[`310990b`](https://github.com/PrismJS/prism/commit/310990b)] + +- **Coy**: + - Scroll 'Coy' background with contents ([#1163](https://github.com/PrismJS/prism/issues/1163)) [[`310990b`](https://github.com/PrismJS/prism/commit/310990b)] ### Other changes -* Initial implementation of manual highlighting ([#1087](https://github.com/PrismJS/prism/issues/1087)) [[`bafc4cb`](https://github.com/PrismJS/prism/commit/bafc4cb)] -* Remove dead link in Third-party tutorials section. Fixes [#1028](https://github.com/PrismJS/prism/issues/1028) [[`dffadc6`](https://github.com/PrismJS/prism/commit/dffadc6)] -* Most languages now use the greedy flag for better highlighting [[`7549ecc`](https://github.com/PrismJS/prism/commit/7549ecc)] -* .npmignore: Unignore components.js ([#1108](https://github.com/PrismJS/prism/issues/1108)) [[`1f699e7`](https://github.com/PrismJS/prism/commit/1f699e7)] -* Run before-highlight and after-highlight hooks even when no grammar is found. Fix [#1134](https://github.com/PrismJS/prism/issues/1134) [[`70cb472`](https://github.com/PrismJS/prism/commit/70cb472)] -* Replace [\w\W] with [\s\S] and [0-9] with \d in regexes ([#1107](https://github.com/PrismJS/prism/issues/1107)) [[`8aa2cc4`](https://github.com/PrismJS/prism/commit/8aa2cc4)] -* Fix corner cases for the greedy flag ([#1095](https://github.com/PrismJS/prism/issues/1095)) [[`6530709`](https://github.com/PrismJS/prism/commit/6530709)] -* Add Third Party Tutorial ([#1156](https://github.com/PrismJS/prism/issues/1156)) [[`c34e57b`](https://github.com/PrismJS/prism/commit/c34e57b)] -* Add Composer support ([#648](https://github.com/PrismJS/prism/issues/648)) [[`2989633`](https://github.com/PrismJS/prism/commit/2989633)] -* Remove IE8 plugin ([#992](https://github.com/PrismJS/prism/issues/992)) [[`25788eb`](https://github.com/PrismJS/prism/commit/25788eb)] -* Website: remove width and height on logo.svg, so it becomes scalable. Close [#1005](https://github.com/PrismJS/prism/issues/1005) [[`0621ff7`](https://github.com/PrismJS/prism/commit/0621ff7)] -* Remove yarn.lock ([#1098](https://github.com/PrismJS/prism/issues/1098)) [[`11eed25`](https://github.com/PrismJS/prism/commit/11eed25)] +- Initial implementation of manual highlighting ([#1087](https://github.com/PrismJS/prism/issues/1087)) [[`bafc4cb`](https://github.com/PrismJS/prism/commit/bafc4cb)] +- Remove dead link in Third-party tutorials section. Fixes [#1028](https://github.com/PrismJS/prism/issues/1028) [[`dffadc6`](https://github.com/PrismJS/prism/commit/dffadc6)] +- Most languages now use the greedy flag for better highlighting [[`7549ecc`](https://github.com/PrismJS/prism/commit/7549ecc)] +- .npmignore: Unignore components.js ([#1108](https://github.com/PrismJS/prism/issues/1108)) [[`1f699e7`](https://github.com/PrismJS/prism/commit/1f699e7)] +- Run before-highlight and after-highlight hooks even when no grammar is found. Fix [#1134](https://github.com/PrismJS/prism/issues/1134) [[`70cb472`](https://github.com/PrismJS/prism/commit/70cb472)] +- Replace [\w\W] with [\s\S] and [0-9] with \d in regexes ([#1107](https://github.com/PrismJS/prism/issues/1107)) [[`8aa2cc4`](https://github.com/PrismJS/prism/commit/8aa2cc4)] +- Fix corner cases for the greedy flag ([#1095](https://github.com/PrismJS/prism/issues/1095)) [[`6530709`](https://github.com/PrismJS/prism/commit/6530709)] +- Add Third Party Tutorial ([#1156](https://github.com/PrismJS/prism/issues/1156)) [[`c34e57b`](https://github.com/PrismJS/prism/commit/c34e57b)] +- Add Composer support ([#648](https://github.com/PrismJS/prism/issues/648)) [[`2989633`](https://github.com/PrismJS/prism/commit/2989633)] +- Remove IE8 plugin ([#992](https://github.com/PrismJS/prism/issues/992)) [[`25788eb`](https://github.com/PrismJS/prism/commit/25788eb)] +- Website: remove width and height on logo.svg, so it becomes scalable. Close [#1005](https://github.com/PrismJS/prism/issues/1005) [[`0621ff7`](https://github.com/PrismJS/prism/commit/0621ff7)] +- Remove yarn.lock ([#1098](https://github.com/PrismJS/prism/issues/1098)) [[`11eed25`](https://github.com/PrismJS/prism/commit/11eed25)] ## 1.6.0 (2016-12-03) ### New components -* __.properties__ ([#980](https://github.com/PrismJS/prism/issues/980)) [[`be6219a`](https://github.com/PrismJS/prism/commit/be6219a)] -* __Ada__ ([#949](https://github.com/PrismJS/prism/issues/949)) [[`65619f7`](https://github.com/PrismJS/prism/commit/65619f7)] -* __GraphQL__ ([#971](https://github.com/PrismJS/prism/issues/971)) [[`e018087`](https://github.com/PrismJS/prism/commit/e018087)] -* __Jolie__ ([#1014](https://github.com/PrismJS/prism/issues/1014)) [[`dfc1941`](https://github.com/PrismJS/prism/commit/dfc1941)] -* __LiveScript__ ([#982](https://github.com/PrismJS/prism/issues/982)) [[`62e258c`](https://github.com/PrismJS/prism/commit/62e258c)] -* __Reason__ (Fixes [#1046](https://github.com/PrismJS/prism/issues/1046)) [[`3cae6ce`](https://github.com/PrismJS/prism/commit/3cae6ce)] -* __Xojo__ ([#994](https://github.com/PrismJS/prism/issues/994)) [[`0224b7c`](https://github.com/PrismJS/prism/commit/0224b7c)] +- **.properties** ([#980](https://github.com/PrismJS/prism/issues/980)) [[`be6219a`](https://github.com/PrismJS/prism/commit/be6219a)] +- **Ada** ([#949](https://github.com/PrismJS/prism/issues/949)) [[`65619f7`](https://github.com/PrismJS/prism/commit/65619f7)] +- **GraphQL** ([#971](https://github.com/PrismJS/prism/issues/971)) [[`e018087`](https://github.com/PrismJS/prism/commit/e018087)] +- **Jolie** ([#1014](https://github.com/PrismJS/prism/issues/1014)) [[`dfc1941`](https://github.com/PrismJS/prism/commit/dfc1941)] +- **LiveScript** ([#982](https://github.com/PrismJS/prism/issues/982)) [[`62e258c`](https://github.com/PrismJS/prism/commit/62e258c)] +- **Reason** (Fixes [#1046](https://github.com/PrismJS/prism/issues/1046)) [[`3cae6ce`](https://github.com/PrismJS/prism/commit/3cae6ce)] +- **Xojo** ([#994](https://github.com/PrismJS/prism/issues/994)) [[`0224b7c`](https://github.com/PrismJS/prism/commit/0224b7c)] ### Updated components -* __APL__: - * Add iota underbar ([#1024](https://github.com/PrismJS/prism/issues/1024)) [[`3c5c89a`](https://github.com/PrismJS/prism/commit/3c5c89a), [`ac21d33`](https://github.com/PrismJS/prism/commit/ac21d33)] -* __AsciiDoc__: - * Optimized block regexps to prevent struggling on large files. Fixes [#1001](https://github.com/PrismJS/prism/issues/1001). [[`1a86d34`](https://github.com/PrismJS/prism/commit/1a86d34)] -* __Bash__: - * Add `npm` to function list ([#969](https://github.com/PrismJS/prism/issues/969)) [[`912bdfe`](https://github.com/PrismJS/prism/commit/912bdfe)] -* __CSS__: - * Make CSS strings greedy. Fix [#1013](https://github.com/PrismJS/prism/issues/1013). [[`e57e26d`](https://github.com/PrismJS/prism/commit/e57e26d)] -* __CSS Extras__: - * Match attribute inside selectors [[`13fed76`](https://github.com/PrismJS/prism/commit/13fed76)] -* __Groovy__: - * Fix order of decoding entities in groovy. Fixes [#1049](https://github.com/PrismJS/prism/issues/1049) ([#1050](https://github.com/PrismJS/prism/issues/1050)) [[`d75da8e`](https://github.com/PrismJS/prism/commit/d75da8e)] -* __Ini__: - * Remove important token in ini definition ([#1047](https://github.com/PrismJS/prism/issues/1047)) [[`fe8ad8b`](https://github.com/PrismJS/prism/commit/fe8ad8b)] -* __JavaScript__: - * Add exponentiation & spread/rest operator ([#991](https://github.com/PrismJS/prism/issues/991)) [[`b2de65a`](https://github.com/PrismJS/prism/commit/b2de65a), [`268d01e`](https://github.com/PrismJS/prism/commit/268d01e)] -* __JSON__: - * JSON: Fixed issues with properties and strings + added tests. Fix [#1025](https://github.com/PrismJS/prism/issues/1025) [[`25a541d`](https://github.com/PrismJS/prism/commit/25a541d)] -* __Markup__: - * Allow for dots in Markup tag names, but not in HTML tags included in Textile. Fixes [#888](https://github.com/PrismJS/prism/issues/888). [[`31ea66b`](https://github.com/PrismJS/prism/commit/31ea66b)] - * Make doctype case-insensitive ([#1009](https://github.com/PrismJS/prism/issues/1009)) [[`3dd7219`](https://github.com/PrismJS/prism/commit/3dd7219)] -* __NSIS__: - * Updated patterns ([#1032](https://github.com/PrismJS/prism/issues/1032)) [[`76ba1b8`](https://github.com/PrismJS/prism/commit/76ba1b8)] -* __PHP__: - * Make comments greedy. Fix [#197](https://github.com/PrismJS/prism/issues/197) [[`318aab3`](https://github.com/PrismJS/prism/commit/318aab3)] -* __PowerShell__: - * Fix highlighting of empty comments ([#977](https://github.com/PrismJS/prism/issues/977)) [[`4fda477`](https://github.com/PrismJS/prism/commit/4fda477)] -* __Puppet__: - * Fix over-greedy regexp detection ([#978](https://github.com/PrismJS/prism/issues/978)) [[`105be25`](https://github.com/PrismJS/prism/commit/105be25)] -* __Ruby__: - * Fix typo `Fload` to `Float` in prism-ruby.js ([#1023](https://github.com/PrismJS/prism/issues/1023)) [[`22cb018`](https://github.com/PrismJS/prism/commit/22cb018)] - * Make strings greedy. Fixes [#1048](https://github.com/PrismJS/prism/issues/1048) [[`8b0520a`](https://github.com/PrismJS/prism/commit/8b0520a)] -* __SCSS__: - * Alias statement as keyword. Fix [#246](https://github.com/PrismJS/prism/issues/246) [[`fd09391`](https://github.com/PrismJS/prism/commit/fd09391)] - * Highlight variables inside selectors and properties. [[`d6b5c2f`](https://github.com/PrismJS/prism/commit/d6b5c2f)] - * Highlight parent selector [[`8f5f1fa`](https://github.com/PrismJS/prism/commit/8f5f1fa)] -* __TypeScript__: - * Add missing `from` keyword to typescript & set `ts` as alias. ([#1042](https://github.com/PrismJS/prism/issues/1042)) [[`cba78f3`](https://github.com/PrismJS/prism/commit/cba78f3)] +- **APL**: + - Add iota underbar ([#1024](https://github.com/PrismJS/prism/issues/1024)) [[`3c5c89a`](https://github.com/PrismJS/prism/commit/3c5c89a), [`ac21d33`](https://github.com/PrismJS/prism/commit/ac21d33)] +- **AsciiDoc**: + - Optimized block regexps to prevent struggling on large files. Fixes [#1001](https://github.com/PrismJS/prism/issues/1001). [[`1a86d34`](https://github.com/PrismJS/prism/commit/1a86d34)] +- **Bash**: + - Add `npm` to function list ([#969](https://github.com/PrismJS/prism/issues/969)) [[`912bdfe`](https://github.com/PrismJS/prism/commit/912bdfe)] +- **CSS**: + - Make CSS strings greedy. Fix [#1013](https://github.com/PrismJS/prism/issues/1013). [[`e57e26d`](https://github.com/PrismJS/prism/commit/e57e26d)] +- **CSS Extras**: + - Match attribute inside selectors [[`13fed76`](https://github.com/PrismJS/prism/commit/13fed76)] +- **Groovy**: + - Fix order of decoding entities in groovy. Fixes [#1049](https://github.com/PrismJS/prism/issues/1049) ([#1050](https://github.com/PrismJS/prism/issues/1050)) [[`d75da8e`](https://github.com/PrismJS/prism/commit/d75da8e)] +- **Ini**: + - Remove important token in ini definition ([#1047](https://github.com/PrismJS/prism/issues/1047)) [[`fe8ad8b`](https://github.com/PrismJS/prism/commit/fe8ad8b)] +- **JavaScript**: + - Add exponentiation & spread/rest operator ([#991](https://github.com/PrismJS/prism/issues/991)) [[`b2de65a`](https://github.com/PrismJS/prism/commit/b2de65a), [`268d01e`](https://github.com/PrismJS/prism/commit/268d01e)] +- **JSON**: + - JSON: Fixed issues with properties and strings + added tests. Fix [#1025](https://github.com/PrismJS/prism/issues/1025) [[`25a541d`](https://github.com/PrismJS/prism/commit/25a541d)] +- **Markup**: + - Allow for dots in Markup tag names, but not in HTML tags included in Textile. Fixes [#888](https://github.com/PrismJS/prism/issues/888). [[`31ea66b`](https://github.com/PrismJS/prism/commit/31ea66b)] + - Make doctype case-insensitive ([#1009](https://github.com/PrismJS/prism/issues/1009)) [[`3dd7219`](https://github.com/PrismJS/prism/commit/3dd7219)] +- **NSIS**: + - Updated patterns ([#1032](https://github.com/PrismJS/prism/issues/1032)) [[`76ba1b8`](https://github.com/PrismJS/prism/commit/76ba1b8)] +- **PHP**: + - Make comments greedy. Fix [#197](https://github.com/PrismJS/prism/issues/197) [[`318aab3`](https://github.com/PrismJS/prism/commit/318aab3)] +- **PowerShell**: + - Fix highlighting of empty comments ([#977](https://github.com/PrismJS/prism/issues/977)) [[`4fda477`](https://github.com/PrismJS/prism/commit/4fda477)] +- **Puppet**: + - Fix over-greedy regexp detection ([#978](https://github.com/PrismJS/prism/issues/978)) [[`105be25`](https://github.com/PrismJS/prism/commit/105be25)] +- **Ruby**: + - Fix typo `Fload` to `Float` in prism-ruby.js ([#1023](https://github.com/PrismJS/prism/issues/1023)) [[`22cb018`](https://github.com/PrismJS/prism/commit/22cb018)] + - Make strings greedy. Fixes [#1048](https://github.com/PrismJS/prism/issues/1048) [[`8b0520a`](https://github.com/PrismJS/prism/commit/8b0520a)] +- **SCSS**: + - Alias statement as keyword. Fix [#246](https://github.com/PrismJS/prism/issues/246) [[`fd09391`](https://github.com/PrismJS/prism/commit/fd09391)] + - Highlight variables inside selectors and properties. [[`d6b5c2f`](https://github.com/PrismJS/prism/commit/d6b5c2f)] + - Highlight parent selector [[`8f5f1fa`](https://github.com/PrismJS/prism/commit/8f5f1fa)] +- **TypeScript**: + - Add missing `from` keyword to typescript & set `ts` as alias. ([#1042](https://github.com/PrismJS/prism/issues/1042)) [[`cba78f3`](https://github.com/PrismJS/prism/commit/cba78f3)] ### New plugins -* __Copy to Clipboard__ ([#891](https://github.com/PrismJS/prism/issues/891)) [[`07b81ac`](https://github.com/PrismJS/prism/commit/07b81ac)] -* __Custom Class__ ([#950](https://github.com/PrismJS/prism/issues/950)) [[`a0bd686`](https://github.com/PrismJS/prism/commit/a0bd686)] -* __Data-URI Highlight__ ([#996](https://github.com/PrismJS/prism/issues/996)) [[`bdca61b`](https://github.com/PrismJS/prism/commit/bdca61b)] -* __Toolbar__ ([#891](https://github.com/PrismJS/prism/issues/891)) [[`07b81ac`](https://github.com/PrismJS/prism/commit/07b81ac)] +- **Copy to Clipboard** ([#891](https://github.com/PrismJS/prism/issues/891)) [[`07b81ac`](https://github.com/PrismJS/prism/commit/07b81ac)] +- **Custom Class** ([#950](https://github.com/PrismJS/prism/issues/950)) [[`a0bd686`](https://github.com/PrismJS/prism/commit/a0bd686)] +- **Data-URI Highlight** ([#996](https://github.com/PrismJS/prism/issues/996)) [[`bdca61b`](https://github.com/PrismJS/prism/commit/bdca61b)] +- **Toolbar** ([#891](https://github.com/PrismJS/prism/issues/891)) [[`07b81ac`](https://github.com/PrismJS/prism/commit/07b81ac)] ### Updated plugins -* __Autoloader__: - * Updated documentation for Autoloader plugin [[`b4f3423`](https://github.com/PrismJS/prism/commit/b4f3423)] - * Download all grammars as a zip from Autoloader plugin page ([#981](https://github.com/PrismJS/prism/issues/981)) [[`0d0a007`](https://github.com/PrismJS/prism/commit/0d0a007), [`5c815d3`](https://github.com/PrismJS/prism/commit/5c815d3)] - * Removed duplicated script on Autoloader plugin page [[`9671996`](https://github.com/PrismJS/prism/commit/9671996)] - * Don't try to load "none" component. Fix [#1000](https://github.com/PrismJS/prism/issues/1000) [[`f89b0b9`](https://github.com/PrismJS/prism/commit/f89b0b9)] -* __WPD__: - * Fix at-rule detection + don't process if language is not handled [[`2626728`](https://github.com/PrismJS/prism/commit/2626728)] +- **Autoloader**: + - Updated documentation for Autoloader plugin [[`b4f3423`](https://github.com/PrismJS/prism/commit/b4f3423)] + - Download all grammars as a zip from Autoloader plugin page ([#981](https://github.com/PrismJS/prism/issues/981)) [[`0d0a007`](https://github.com/PrismJS/prism/commit/0d0a007), [`5c815d3`](https://github.com/PrismJS/prism/commit/5c815d3)] + - Removed duplicated script on Autoloader plugin page [[`9671996`](https://github.com/PrismJS/prism/commit/9671996)] + - Don't try to load "none" component. Fix [#1000](https://github.com/PrismJS/prism/issues/1000) [[`f89b0b9`](https://github.com/PrismJS/prism/commit/f89b0b9)] +- **WPD**: + - Fix at-rule detection + don't process if language is not handled [[`2626728`](https://github.com/PrismJS/prism/commit/2626728)] ### Other changes -* Improvement to greedy-flag ([#967](https://github.com/PrismJS/prism/issues/967)) [[`500121b`](https://github.com/PrismJS/prism/commit/500121b), [`9893489`](https://github.com/PrismJS/prism/commit/9893489)] -* Add setTimeout fallback for requestAnimationFrame. Fixes [#987](https://github.com/PrismJS/prism/issues/987). ([#988](https://github.com/PrismJS/prism/issues/988)) [[`c9bdcd3`](https://github.com/PrismJS/prism/commit/c9bdcd3)] -* Added aria-hidden attributes on elements created by the Line Highlight and Line Numbers plugins. Fixes [#574](https://github.com/PrismJS/prism/issues/574). [[`e5587a7`](https://github.com/PrismJS/prism/commit/e5587a7)] -* Don't insert space before ">" when there is no attributes [[`3dc8c9e`](https://github.com/PrismJS/prism/commit/3dc8c9e)] -* Added missing hooks-related tests for AsciiDoc, Groovy, Handlebars, Markup, PHP and Smarty [[`c1a0c1b`](https://github.com/PrismJS/prism/commit/c1a0c1b)] -* Fix issue when using Line numbers plugin and Normalise whitespace plugin together with Handlebars, PHP or Smarty. Fix [#1018](https://github.com/PrismJS/prism/issues/1018), [#997](https://github.com/PrismJS/prism/issues/997), [#935](https://github.com/PrismJS/prism/issues/935). Revert [#998](https://github.com/PrismJS/prism/issues/998). [[`86aa3d2`](https://github.com/PrismJS/prism/commit/86aa3d2)] -* Optimized logo ([#990](https://github.com/PrismJS/prism/issues/990)) ([#1002](https://github.com/PrismJS/prism/issues/1002)) [[`f69e570`](https://github.com/PrismJS/prism/commit/f69e570), [`218fd25`](https://github.com/PrismJS/prism/commit/218fd25)] -* Remove unneeded prefixed CSS ([#989](https://github.com/PrismJS/prism/issues/989)) [[`5e56833`](https://github.com/PrismJS/prism/commit/5e56833)] -* Optimize images ([#1007](https://github.com/PrismJS/prism/issues/1007)) [[`b2fa6d5`](https://github.com/PrismJS/prism/commit/b2fa6d5)] -* Add yarn.lock to .gitignore ([#1035](https://github.com/PrismJS/prism/issues/1035)) [[`03ecf74`](https://github.com/PrismJS/prism/commit/03ecf74)] -* Fix greedy flag bug. Fixes [#1039](https://github.com/PrismJS/prism/issues/1039) [[`32cd99f`](https://github.com/PrismJS/prism/commit/32cd99f)] -* Ruby: Fix test after [#1023](https://github.com/PrismJS/prism/issues/1023) [[`b15d43b`](https://github.com/PrismJS/prism/commit/b15d43b)] -* Ini: Fix test after [#1047](https://github.com/PrismJS/prism/issues/1047) [[`25cdd3f`](https://github.com/PrismJS/prism/commit/25cdd3f)] -* Reduce risk of XSS ([#1051](https://github.com/PrismJS/prism/issues/1051)) [[`17e33bc`](https://github.com/PrismJS/prism/commit/17e33bc)] -* env.code can be modified by before-sanity-check hook even when using language-none. Fix [#1066](https://github.com/PrismJS/prism/issues/1066) [[`83bafbd`](https://github.com/PrismJS/prism/commit/83bafbd)] - +- Improvement to greedy-flag ([#967](https://github.com/PrismJS/prism/issues/967)) [[`500121b`](https://github.com/PrismJS/prism/commit/500121b), [`9893489`](https://github.com/PrismJS/prism/commit/9893489)] +- Add setTimeout fallback for requestAnimationFrame. Fixes [#987](https://github.com/PrismJS/prism/issues/987). ([#988](https://github.com/PrismJS/prism/issues/988)) [[`c9bdcd3`](https://github.com/PrismJS/prism/commit/c9bdcd3)] +- Added aria-hidden attributes on elements created by the Line Highlight and Line Numbers plugins. Fixes [#574](https://github.com/PrismJS/prism/issues/574). [[`e5587a7`](https://github.com/PrismJS/prism/commit/e5587a7)] +- Don't insert space before ">" when there is no attributes [[`3dc8c9e`](https://github.com/PrismJS/prism/commit/3dc8c9e)] +- Added missing hooks-related tests for AsciiDoc, Groovy, Handlebars, Markup, PHP and Smarty [[`c1a0c1b`](https://github.com/PrismJS/prism/commit/c1a0c1b)] +- Fix issue when using Line numbers plugin and Normalise whitespace plugin together with Handlebars, PHP or Smarty. Fix [#1018](https://github.com/PrismJS/prism/issues/1018), [#997](https://github.com/PrismJS/prism/issues/997), [#935](https://github.com/PrismJS/prism/issues/935). Revert [#998](https://github.com/PrismJS/prism/issues/998). [[`86aa3d2`](https://github.com/PrismJS/prism/commit/86aa3d2)] +- Optimized logo ([#990](https://github.com/PrismJS/prism/issues/990)) ([#1002](https://github.com/PrismJS/prism/issues/1002)) [[`f69e570`](https://github.com/PrismJS/prism/commit/f69e570), [`218fd25`](https://github.com/PrismJS/prism/commit/218fd25)] +- Remove unneeded prefixed CSS ([#989](https://github.com/PrismJS/prism/issues/989)) [[`5e56833`](https://github.com/PrismJS/prism/commit/5e56833)] +- Optimize images ([#1007](https://github.com/PrismJS/prism/issues/1007)) [[`b2fa6d5`](https://github.com/PrismJS/prism/commit/b2fa6d5)] +- Add yarn.lock to .gitignore ([#1035](https://github.com/PrismJS/prism/issues/1035)) [[`03ecf74`](https://github.com/PrismJS/prism/commit/03ecf74)] +- Fix greedy flag bug. Fixes [#1039](https://github.com/PrismJS/prism/issues/1039) [[`32cd99f`](https://github.com/PrismJS/prism/commit/32cd99f)] +- Ruby: Fix test after [#1023](https://github.com/PrismJS/prism/issues/1023) [[`b15d43b`](https://github.com/PrismJS/prism/commit/b15d43b)] +- Ini: Fix test after [#1047](https://github.com/PrismJS/prism/issues/1047) [[`25cdd3f`](https://github.com/PrismJS/prism/commit/25cdd3f)] +- Reduce risk of XSS ([#1051](https://github.com/PrismJS/prism/issues/1051)) [[`17e33bc`](https://github.com/PrismJS/prism/commit/17e33bc)] +- env.code can be modified by before-sanity-check hook even when using language-none. Fix [#1066](https://github.com/PrismJS/prism/issues/1066) [[`83bafbd`](https://github.com/PrismJS/prism/commit/83bafbd)] ## 1.5.1 (2016-06-05) ### Updated components -* __Normalize Whitespace__: - * Add class that disables the normalize whitespace plugin [[`9385c54`](https://github.com/PrismJS/prism/commit/9385c54)] -* __JavaScript Language__: - * Rearrange the `string` and `template-string` token in JavaScript [[`1158e46`](https://github.com/PrismJS/prism/commit/1158e46)] -* __SQL Language__: - * add delimeter and delimeters keywords to sql ([#958](https://github.com/PrismJS/prism/pull/958)) [[`a9ef24e`](https://github.com/PrismJS/prism/commit/a9ef24e)] - * add AUTO_INCREMENT and DATE keywords to sql ([#954](https://github.com/PrismJS/prism/pull/954)) [[`caea2af`](https://github.com/PrismJS/prism/commit/caea2af)] -* __Diff Language__: - * Highlight diff lines with only + or - ([#952](https://github.com/PrismJS/prism/pull/952)) [[`4d0526f`](https://github.com/PrismJS/prism/commit/4d0526f)] +- **Normalize Whitespace**: + - Add class that disables the normalize whitespace plugin [[`9385c54`](https://github.com/PrismJS/prism/commit/9385c54)] +- **JavaScript Language**: + - Rearrange the `string` and `template-string` token in JavaScript [[`1158e46`](https://github.com/PrismJS/prism/commit/1158e46)] +- **SQL Language**: + - add delimeter and delimeters keywords to sql ([#958](https://github.com/PrismJS/prism/pull/958)) [[`a9ef24e`](https://github.com/PrismJS/prism/commit/a9ef24e)] + - add AUTO_INCREMENT and DATE keywords to sql ([#954](https://github.com/PrismJS/prism/pull/954)) [[`caea2af`](https://github.com/PrismJS/prism/commit/caea2af)] +- **Diff Language**: + - Highlight diff lines with only + or - ([#952](https://github.com/PrismJS/prism/pull/952)) [[`4d0526f`](https://github.com/PrismJS/prism/commit/4d0526f)] ### Other changes -* Allow for asynchronous loading of prism.js ([#959](https://github.com/PrismJS/prism/pull/959)) -* Use toLowerCase on language names ([#957](https://github.com/PrismJS/prism/pull/957)) [[`acd9508`](https://github.com/PrismJS/prism/commit/acd9508)] -* link to index for basic usage - fixes [#945](https://github.com/PrismJS/prism/issues/945) ([#946](https://github.com/PrismJS/prism/pull/946)) [[`6c772d8`](https://github.com/PrismJS/prism/commit/6c772d8)] -* Fixed monospace typo ([#953](https://github.com/PrismJS/prism/pull/953)) [[`e6c3498`](https://github.com/PrismJS/prism/commit/e6c3498)] +- Allow for asynchronous loading of prism.js ([#959](https://github.com/PrismJS/prism/pull/959)) +- Use toLowerCase on language names ([#957](https://github.com/PrismJS/prism/pull/957)) [[`acd9508`](https://github.com/PrismJS/prism/commit/acd9508)] +- link to index for basic usage - fixes [#945](https://github.com/PrismJS/prism/issues/945) ([#946](https://github.com/PrismJS/prism/pull/946)) [[`6c772d8`](https://github.com/PrismJS/prism/commit/6c772d8)] +- Fixed monospace typo ([#953](https://github.com/PrismJS/prism/pull/953)) [[`e6c3498`](https://github.com/PrismJS/prism/commit/e6c3498)] ## 1.5.0 (2016-05-01) ### New components -* __Bro Language__ ([#925](https://github.com/PrismJS/prism/pull/925)) -* __Protocol Buffers Language__ ([#938](https://github.com/PrismJS/prism/pull/938)) [[`ae4a4f2`](https://github.com/PrismJS/prism/commit/ae4a4f2)] +- **Bro Language** ([#925](https://github.com/PrismJS/prism/pull/925)) +- **Protocol Buffers Language** ([#938](https://github.com/PrismJS/prism/pull/938)) [[`ae4a4f2`](https://github.com/PrismJS/prism/commit/ae4a4f2)] ### Updated components -* __Keep Markup__: - * Fix Keep Markup plugin incorrect highlighting ([#880](https://github.com/PrismJS/prism/pull/880)) [[`24841ef`](https://github.com/PrismJS/prism/commit/24841ef)] -* __Groovy Language__: - * Fix double HTML-encoding bug in Groovy language [[`24a0936`](https://github.com/PrismJS/prism/commit/24a0936)] -* __Java Language__: - * Adding annotation token for Java ([#905](https://github.com/PrismJS/prism/pull/905)) [[`367ace6`](https://github.com/PrismJS/prism/commit/367ace6)] -* __SAS Language__: - * Add missing keywords for SAS ([#922](https://github.com/PrismJS/prism/pull/922)) -* __YAML Language__: - * fix hilighting of YAML keys on first line of code block ([#943](https://github.com/PrismJS/prism/pull/943)) [[`f19db81`](https://github.com/PrismJS/prism/commit/f19db81)] -* __C# Language__: - * Support for generic methods in csharp [[`6f75735`](https://github.com/PrismJS/prism/commit/6f75735)] +- **Keep Markup**: + - Fix Keep Markup plugin incorrect highlighting ([#880](https://github.com/PrismJS/prism/pull/880)) [[`24841ef`](https://github.com/PrismJS/prism/commit/24841ef)] +- **Groovy Language**: + - Fix double HTML-encoding bug in Groovy language [[`24a0936`](https://github.com/PrismJS/prism/commit/24a0936)] +- **Java Language**: + - Adding annotation token for Java ([#905](https://github.com/PrismJS/prism/pull/905)) [[`367ace6`](https://github.com/PrismJS/prism/commit/367ace6)] +- **SAS Language**: + - Add missing keywords for SAS ([#922](https://github.com/PrismJS/prism/pull/922)) +- **YAML Language**: + - fix hilighting of YAML keys on first line of code block ([#943](https://github.com/PrismJS/prism/pull/943)) [[`f19db81`](https://github.com/PrismJS/prism/commit/f19db81)] +- **C# Language**: + - Support for generic methods in csharp [[`6f75735`](https://github.com/PrismJS/prism/commit/6f75735)] ### New plugins -* __Unescaped Markup__ [[`07d77e5`](https://github.com/PrismJS/prism/commit/07d77e5)] -* __Normalize Whitespace__ ([#847](https://github.com/PrismJS/prism/pull/847)) [[`e86ec01`](https://github.com/PrismJS/prism/commit/e86ec01)] +- **Unescaped Markup** [[`07d77e5`](https://github.com/PrismJS/prism/commit/07d77e5)] +- **Normalize Whitespace** ([#847](https://github.com/PrismJS/prism/pull/847)) [[`e86ec01`](https://github.com/PrismJS/prism/commit/e86ec01)] ### Other changes -* Add JSPM support [[`ad048ab`](https://github.com/PrismJS/prism/commit/ad048ab)] -* update linear-gradient syntax from `left` to `to right` [[`cd234dc`](https://github.com/PrismJS/prism/commit/cd234dc)] -* Add after-property to allow ordering of plugins [[`224b7a1`](https://github.com/PrismJS/prism/commit/224b7a1)] -* Partial solution for the "Comment-like substrings"-problem [[`2705c50`](https://github.com/PrismJS/prism/commit/2705c50)] -* Add property 'aliasTitles' to components.js [[`54400fb`](https://github.com/PrismJS/prism/commit/54400fb)] -* Add before-highlightall hook [[`70a8602`](https://github.com/PrismJS/prism/commit/70a8602)] -* Fix catastrophic backtracking regex issues in JavaScript [[`ab65be2`](https://github.com/PrismJS/prism/commit/ab65be2)] +- Add JSPM support [[`ad048ab`](https://github.com/PrismJS/prism/commit/ad048ab)] +- update linear-gradient syntax from `left` to `to right` [[`cd234dc`](https://github.com/PrismJS/prism/commit/cd234dc)] +- Add after-property to allow ordering of plugins [[`224b7a1`](https://github.com/PrismJS/prism/commit/224b7a1)] +- Partial solution for the "Comment-like substrings"-problem [[`2705c50`](https://github.com/PrismJS/prism/commit/2705c50)] +- Add property 'aliasTitles' to components.js [[`54400fb`](https://github.com/PrismJS/prism/commit/54400fb)] +- Add before-highlightall hook [[`70a8602`](https://github.com/PrismJS/prism/commit/70a8602)] +- Fix catastrophic backtracking regex issues in JavaScript [[`ab65be2`](https://github.com/PrismJS/prism/commit/ab65be2)] ## 1.4.1 (2016-02-03) ### Other changes -* Fix DFS bug in Prism core [[`b86c727`](https://github.com/PrismJS/prism/commit/b86c727)] +- Fix DFS bug in Prism core [[`b86c727`](https://github.com/PrismJS/prism/commit/b86c727)] ## 1.4.0 (2016-02-03) ### New components -* __Solarized Light__ ([#855](https://github.com/PrismJS/prism/pull/855)) [[`70846ba`](https://github.com/PrismJS/prism/commit/70846ba)] -* __JSON__ ([#370](https://github.com/PrismJS/prism/pull/370)) [[`ad2fcd0`](https://github.com/PrismJS/prism/commit/ad2fcd0)] +- **Solarized Light** ([#855](https://github.com/PrismJS/prism/pull/855)) [[`70846ba`](https://github.com/PrismJS/prism/commit/70846ba)] +- **JSON** ([#370](https://github.com/PrismJS/prism/pull/370)) [[`ad2fcd0`](https://github.com/PrismJS/prism/commit/ad2fcd0)] ### Updated components -* __Show Language__: - * Remove data-language attribute ([#840](https://github.com/PrismJS/prism/pull/840)) [[`eb9a83c`](https://github.com/PrismJS/prism/commit/eb9a83c)] - * Allow custom label without a language mapping ([#837](https://github.com/PrismJS/prism/pull/837)) [[`7e74aef`](https://github.com/PrismJS/prism/commit/7e74aef)] -* __JSX__: - * Better Nesting in JSX attributes ([#842](https://github.com/PrismJS/prism/pull/842)) [[`971dda7`](https://github.com/PrismJS/prism/commit/971dda7)] -* __File Highlight__: - * Defer File Highlight until the full DOM has loaded. ([#844](https://github.com/PrismJS/prism/pull/844)) [[`6f995ef`](https://github.com/PrismJS/prism/commit/6f995ef)] -* __Coy Theme__: - * Fix coy theme shadows ([#865](https://github.com/PrismJS/prism/pull/865)) [[`58d2337`](https://github.com/PrismJS/prism/commit/58d2337)] -* __Show Invisibles__: - * Ensure show-invisibles compat with autoloader ([#874](https://github.com/PrismJS/prism/pull/874)) [[`c3cfb1f`](https://github.com/PrismJS/prism/commit/c3cfb1f)] - * Add support for the space character for the show-invisibles plugin ([#876](https://github.com/PrismJS/prism/pull/876)) [[`05442d3`](https://github.com/PrismJS/prism/commit/05442d3)] +- **Show Language**: + - Remove data-language attribute ([#840](https://github.com/PrismJS/prism/pull/840)) [[`eb9a83c`](https://github.com/PrismJS/prism/commit/eb9a83c)] + - Allow custom label without a language mapping ([#837](https://github.com/PrismJS/prism/pull/837)) [[`7e74aef`](https://github.com/PrismJS/prism/commit/7e74aef)] +- **JSX**: + - Better Nesting in JSX attributes ([#842](https://github.com/PrismJS/prism/pull/842)) [[`971dda7`](https://github.com/PrismJS/prism/commit/971dda7)] +- **File Highlight**: + - Defer File Highlight until the full DOM has loaded. ([#844](https://github.com/PrismJS/prism/pull/844)) [[`6f995ef`](https://github.com/PrismJS/prism/commit/6f995ef)] +- **Coy Theme**: + - Fix coy theme shadows ([#865](https://github.com/PrismJS/prism/pull/865)) [[`58d2337`](https://github.com/PrismJS/prism/commit/58d2337)] +- **Show Invisibles**: + - Ensure show-invisibles compat with autoloader ([#874](https://github.com/PrismJS/prism/pull/874)) [[`c3cfb1f`](https://github.com/PrismJS/prism/commit/c3cfb1f)] + - Add support for the space character for the show-invisibles plugin ([#876](https://github.com/PrismJS/prism/pull/876)) [[`05442d3`](https://github.com/PrismJS/prism/commit/05442d3)] ### New plugins -* __Command Line__ ([#831](https://github.com/PrismJS/prism/pull/831)) [[`8378906`](https://github.com/PrismJS/prism/commit/8378906)] +- **Command Line** ([#831](https://github.com/PrismJS/prism/pull/831)) [[`8378906`](https://github.com/PrismJS/prism/commit/8378906)] ### Other changes -* Use document.currentScript instead of document.getElementsByTagName() [[`fa98743`](https://github.com/PrismJS/prism/commit/fa98743)] -* Add prefix for Firefox selection and move prefixed rule first [[`6d54717`](https://github.com/PrismJS/prism/commit/6d54717)] -* No background for `` in `
` [[`8c310bc`](https://github.com/PrismJS/prism/commit/8c310bc)]
-* Fixing to initial copyright year [[`69cbf7a`](https://github.com/PrismJS/prism/commit/69cbf7a)]
-* Simplify the “lang” regex [[`417f54a`](https://github.com/PrismJS/prism/commit/417f54a)]
-* Fix broken heading links [[`a7f9e62`](https://github.com/PrismJS/prism/commit/a7f9e62)]
-* Prevent infinite recursion in DFS [[`02894e1`](https://github.com/PrismJS/prism/commit/02894e1)]
-* Fix incorrect page title [[`544b56f`](https://github.com/PrismJS/prism/commit/544b56f)]
-* Link scss to webplatform wiki [[`08d979a`](https://github.com/PrismJS/prism/commit/08d979a)]
-* Revert white-space to normal when code is inline instead of in a pre [[`1a971b5`](https://github.com/PrismJS/prism/commit/1a971b5)]
+- Use document.currentScript instead of document.getElementsByTagName() [[`fa98743`](https://github.com/PrismJS/prism/commit/fa98743)]
+- Add prefix for Firefox selection and move prefixed rule first [[`6d54717`](https://github.com/PrismJS/prism/commit/6d54717)]
+- No background for `` in `
` [[`8c310bc`](https://github.com/PrismJS/prism/commit/8c310bc)]
+- Fixing to initial copyright year [[`69cbf7a`](https://github.com/PrismJS/prism/commit/69cbf7a)]
+- Simplify the “lang” regex [[`417f54a`](https://github.com/PrismJS/prism/commit/417f54a)]
+- Fix broken heading links [[`a7f9e62`](https://github.com/PrismJS/prism/commit/a7f9e62)]
+- Prevent infinite recursion in DFS [[`02894e1`](https://github.com/PrismJS/prism/commit/02894e1)]
+- Fix incorrect page title [[`544b56f`](https://github.com/PrismJS/prism/commit/544b56f)]
+- Link scss to webplatform wiki [[`08d979a`](https://github.com/PrismJS/prism/commit/08d979a)]
+- Revert white-space to normal when code is inline instead of in a pre [[`1a971b5`](https://github.com/PrismJS/prism/commit/1a971b5)]
 
 ## 1.3.0 (2015-10-26)
 
 ### New components
 
-* __AsciiDoc__ ([#800](https://github.com/PrismJS/prism/issues/800)) [[`6803ca0`](https://github.com/PrismJS/prism/commit/6803ca0)]
-* __Haxe__ ([#811](https://github.com/PrismJS/prism/issues/811)) [[`bd44341`](https://github.com/PrismJS/prism/commit/bd44341)]
-* __Icon__ ([#803](https://github.com/PrismJS/prism/issues/803)) [[`b43c5f3`](https://github.com/PrismJS/prism/commit/b43c5f3)]
-* __Kotlin__ ([#814](https://github.com/PrismJS/prism/issues/814)) [[`e8a31a5`](https://github.com/PrismJS/prism/commit/e8a31a5)]
-* __Lua__ ([#804](https://github.com/PrismJS/prism/issues/804)) [[`a36bc4a`](https://github.com/PrismJS/prism/commit/a36bc4a)]
-* __Nix__ ([#795](https://github.com/PrismJS/prism/issues/795)) [[`9b275c8`](https://github.com/PrismJS/prism/commit/9b275c8)]
-* __Oz__ ([#805](https://github.com/PrismJS/prism/issues/805)) [[`388c53f`](https://github.com/PrismJS/prism/commit/388c53f)]
-* __PARI/GP__ ([#802](https://github.com/PrismJS/prism/issues/802)) [[`253c035`](https://github.com/PrismJS/prism/commit/253c035)]
-* __Parser__ ([#808](https://github.com/PrismJS/prism/issues/808)) [[`a953b3a`](https://github.com/PrismJS/prism/commit/a953b3a)]
-* __Puppet__ ([#813](https://github.com/PrismJS/prism/issues/813)) [[`81933ee`](https://github.com/PrismJS/prism/commit/81933ee)]
-* __Roboconf__ ([#812](https://github.com/PrismJS/prism/issues/812)) [[`f5db346`](https://github.com/PrismJS/prism/commit/f5db346)]
+- **AsciiDoc** ([#800](https://github.com/PrismJS/prism/issues/800)) [[`6803ca0`](https://github.com/PrismJS/prism/commit/6803ca0)]
+- **Haxe** ([#811](https://github.com/PrismJS/prism/issues/811)) [[`bd44341`](https://github.com/PrismJS/prism/commit/bd44341)]
+- **Icon** ([#803](https://github.com/PrismJS/prism/issues/803)) [[`b43c5f3`](https://github.com/PrismJS/prism/commit/b43c5f3)]
+- **Kotlin** ([#814](https://github.com/PrismJS/prism/issues/814)) [[`e8a31a5`](https://github.com/PrismJS/prism/commit/e8a31a5)]
+- **Lua** ([#804](https://github.com/PrismJS/prism/issues/804)) [[`a36bc4a`](https://github.com/PrismJS/prism/commit/a36bc4a)]
+- **Nix** ([#795](https://github.com/PrismJS/prism/issues/795)) [[`9b275c8`](https://github.com/PrismJS/prism/commit/9b275c8)]
+- **Oz** ([#805](https://github.com/PrismJS/prism/issues/805)) [[`388c53f`](https://github.com/PrismJS/prism/commit/388c53f)]
+- **PARI/GP** ([#802](https://github.com/PrismJS/prism/issues/802)) [[`253c035`](https://github.com/PrismJS/prism/commit/253c035)]
+- **Parser** ([#808](https://github.com/PrismJS/prism/issues/808)) [[`a953b3a`](https://github.com/PrismJS/prism/commit/a953b3a)]
+- **Puppet** ([#813](https://github.com/PrismJS/prism/issues/813)) [[`81933ee`](https://github.com/PrismJS/prism/commit/81933ee)]
+- **Roboconf** ([#812](https://github.com/PrismJS/prism/issues/812)) [[`f5db346`](https://github.com/PrismJS/prism/commit/f5db346)]
 
 ### Updated components
 
-* __C__:
-	* Highlight directives in preprocessor lines ([#801](https://github.com/PrismJS/prism/issues/801)) [[`ad316a3`](https://github.com/PrismJS/prism/commit/ad316a3)]
-* __C#__:
-	* Highlight directives in preprocessor lines ([#801](https://github.com/PrismJS/prism/issues/801)) [[`ad316a3`](https://github.com/PrismJS/prism/commit/ad316a3)]
-	* Fix detection of float numbers ([#806](https://github.com/PrismJS/prism/issues/806)) [[`1dae72b`](https://github.com/PrismJS/prism/commit/1dae72b)]
-* __F#__:
-	* Highlight directives in preprocessor lines ([#801](https://github.com/PrismJS/prism/issues/801)) [[`ad316a3`](https://github.com/PrismJS/prism/commit/ad316a3)]
-* __JavaScript__:
-	* Highlight true and false as booleans ([#801](https://github.com/PrismJS/prism/issues/801)) [[`ad316a3`](https://github.com/PrismJS/prism/commit/ad316a3)]
-* __Python__:
-	* Highlight triple-quoted strings before comments. Fix [#815](https://github.com/PrismJS/prism/issues/815) [[`90fbf0b`](https://github.com/PrismJS/prism/commit/90fbf0b)]
+- **C**:
+    - Highlight directives in preprocessor lines ([#801](https://github.com/PrismJS/prism/issues/801)) [[`ad316a3`](https://github.com/PrismJS/prism/commit/ad316a3)]
+- **C#**:
+    - Highlight directives in preprocessor lines ([#801](https://github.com/PrismJS/prism/issues/801)) [[`ad316a3`](https://github.com/PrismJS/prism/commit/ad316a3)]
+    - Fix detection of float numbers ([#806](https://github.com/PrismJS/prism/issues/806)) [[`1dae72b`](https://github.com/PrismJS/prism/commit/1dae72b)]
+- **F#**:
+    - Highlight directives in preprocessor lines ([#801](https://github.com/PrismJS/prism/issues/801)) [[`ad316a3`](https://github.com/PrismJS/prism/commit/ad316a3)]
+- **JavaScript**:
+    - Highlight true and false as booleans ([#801](https://github.com/PrismJS/prism/issues/801)) [[`ad316a3`](https://github.com/PrismJS/prism/commit/ad316a3)]
+- **Python**:
+    - Highlight triple-quoted strings before comments. Fix [#815](https://github.com/PrismJS/prism/issues/815) [[`90fbf0b`](https://github.com/PrismJS/prism/commit/90fbf0b)]
 
 ### New plugins
 
-* __Previewer: Time__ ([#790](https://github.com/PrismJS/prism/issues/790)) [[`88173de`](https://github.com/PrismJS/prism/commit/88173de)]
-* __Previewer: Angle__ ([#791](https://github.com/PrismJS/prism/issues/791)) [[`a434c86`](https://github.com/PrismJS/prism/commit/a434c86)]
+- **Previewer: Time** ([#790](https://github.com/PrismJS/prism/issues/790)) [[`88173de`](https://github.com/PrismJS/prism/commit/88173de)]
+- **Previewer: Angle** ([#791](https://github.com/PrismJS/prism/issues/791)) [[`a434c86`](https://github.com/PrismJS/prism/commit/a434c86)]
 
 ### Other changes
 
-* Increase mocha's timeout [[`f1c41db`](https://github.com/PrismJS/prism/commit/f1c41db)]
-* Prevent most errors in IE8. Fix [#9](https://github.com/PrismJS/prism/issues/9) [[`9652d75`](https://github.com/PrismJS/prism/commit/9652d75)]
-* Add U.S. Web Design Standards on homepage. Fix [#785](https://github.com/PrismJS/prism/issues/785) [[`e10d48b`](https://github.com/PrismJS/prism/commit/e10d48b), [`79ebbf8`](https://github.com/PrismJS/prism/commit/79ebbf8), [`2f7088d`](https://github.com/PrismJS/prism/commit/2f7088d)]
-* Added gulp task to autolink PRs and commits in changelog [[`5ec4e4d`](https://github.com/PrismJS/prism/commit/5ec4e4d)]
-* Use child processes to run each set of tests, in order to deal with the memory leak in vm.runInNewContext() [[`9a4b6fa`](https://github.com/PrismJS/prism/commit/9a4b6fa)]
+- Increase mocha's timeout [[`f1c41db`](https://github.com/PrismJS/prism/commit/f1c41db)]
+- Prevent most errors in IE8. Fix [#9](https://github.com/PrismJS/prism/issues/9) [[`9652d75`](https://github.com/PrismJS/prism/commit/9652d75)]
+- Add U.S. Web Design Standards on homepage. Fix [#785](https://github.com/PrismJS/prism/issues/785) [[`e10d48b`](https://github.com/PrismJS/prism/commit/e10d48b), [`79ebbf8`](https://github.com/PrismJS/prism/commit/79ebbf8), [`2f7088d`](https://github.com/PrismJS/prism/commit/2f7088d)]
+- Added gulp task to autolink PRs and commits in changelog [[`5ec4e4d`](https://github.com/PrismJS/prism/commit/5ec4e4d)]
+- Use child processes to run each set of tests, in order to deal with the memory leak in vm.runInNewContext() [[`9a4b6fa`](https://github.com/PrismJS/prism/commit/9a4b6fa)]
 
 ## 1.2.0 (2015-10-07)
 
 ### New components
 
-* __Batch__ ([#781](https://github.com/PrismJS/prism/issues/781)) [[`eab5b06`](https://github.com/PrismJS/prism/commit/eab5b06)]
+- **Batch** ([#781](https://github.com/PrismJS/prism/issues/781)) [[`eab5b06`](https://github.com/PrismJS/prism/commit/eab5b06)]
 
 ### Updated components
 
-* __ASP.NET__:
-	* Simplified pattern for `
-
-
-
-
-
-
-
-
- -

Benchmark

-

Prism has a benchmark suite which can be run and extended similar to the test suite.

-
- -
-

Running a benchmark

- -
npm run benchmark
- -

By default, the benchmark will be run for the current local version of your repository (the one which is currently checkout) and the PrismJS master branch.

- -

All options in benchmark/config.json can be changed by either directly editing the file or by passing arguments to the run command. I.e. you can overwrite the default maxTime value with 10s by running the following command:

- -
npm run benchmark -- --maxTime=10
- -
-

Running a benchmark for specific languages

- -

To run the tests only for a certain set of languages, you can use the language option:

-
npm run benchmark -- --language=javascript,markup
-
-
- -
-

Remotes

- -

Remotes all you to compare different branches from different repos or the same repo. Repos can be the PrismJS repo or any your fork.

- -

All remotes are specified under the remotes section in benchmark/config.json. To add a new remote, add an object with the repo and branch properties to the array. Note: if the branch property is not specified, the master branch will be used.
- Example:

- -
{
-	repo: 'https://github.com/MyUserName/prism.git',
-	branch: 'feature-1'
-}
- -

To remove a remote, simply remove (delete or comment out) its entry in the remotes array.

-
- -
-

Cases

- -

A case is a collection of files where each file will be benchmarked with all candidates (local + remotes) and a specific language.

- -

The language of a case is determined by its key in the cases object in benchmark/config.json where the key has to have the same format as the directory names in tests/languages/. Example:

-
cases: {
-	'css!+css-extras': ...
-}
- -

The files of a case can be specified by:

- -
    -
  • -

    Specifying the URI of files. A URI is either an HTTPS URL or a file path relative to ./benchmark/.

    -
    cases: {
    -	'css': {
    -		files: [
    -			'style.css',
    -			'https://foo.com/main.css'
    -		]
    -	}
    -}
    -
  • -
  • -

    Using extends to copy all files from another case.

    -
    cases: {
    -	'css': { files: [ 'style.css' ] },
    -	'css!+css-extras': {
    -		extends: 'css'
    -	}
    -}
    -
  • -
-
- -
-

Output explained

- -

The output of a benchmark might look like this:

- -
Found 1 cases with 2 files in total.
-Test 3 candidates on tokenize
-Estimated duration: 1m 0s
- -

The first few lines give some information on the benchmark which is about to be run. This includes the number of cases (here 1), the total number of files in all cases (here 2), the number of candidates (here 3), the test function (here tokenize), and a time estimate for how long the benchmark will take (here 1 minute).

- -

What follows are the results for all cases and their files:

- -
json
-
-  components.json (25 kB)
-  | local                         5.45ms ± 13% 138smp
-  | PrismJS@master                4.92ms ±  2% 145smp
-  | RunDevelopment@greedy-fix     5.62ms ±  4% 128smp
-  package-lock.json (189 kB)
-  | local                       117.75ms ± 27% 27smp
-  | PrismJS@master              121.40ms ± 32% 29smp
-  | RunDevelopment@greedy-fix   190.79ms ± 41% 20smp
- -

A case starts with its key (here json) and is followed by all of its files (here components.json and package-lock.json). Under each file, the results for local and all remotes are shown. To explain the meaning of the values, let's pick a single line:

- - PrismJS@master 121.40ms ± 32% 29smp - -

First comes the name of the remote (here PrismJS@master) followed by the mean of all samples, the relative margin of error, and the number of samples.

- -

The last part of the output is a small summary of all cases which simply counts how many times a candidate has been the best or worst for a file.

- -
summary
-                             best  worst
-  local                         1      1
-  PrismJS@master                0      1
-  RunDevelopment@greedy-fix     1      0
-
- - -
- - - - - - - - - diff --git a/benchmark/benchmark.js b/benchmark/benchmark.js index 21d37e6b37..fb56329746 100644 --- a/benchmark/benchmark.js +++ b/benchmark/benchmark.js @@ -1,19 +1,64 @@ -// @ts-check +import crypto from 'crypto'; +import fs from 'fs'; +import path from 'path'; +import { fileURLToPath } from 'url'; +import Benchmark from 'benchmark'; +import fetch from 'cross-fetch'; +import { gitP } from 'simple-git'; +import yargs from 'yargs'; +import { hideBin } from 'yargs/helpers'; +import { parseLanguageNames } from '../tests/helper/test-case.js'; +import { config as baseConfig } from './config.js'; -const fs = require('fs'); -const path = require('path'); -const crypto = require('crypto'); -const { argv } = require('yargs'); -const fetch = require('node-fetch').default; -const Benchmark = require('benchmark'); -const simpleGit = require('simple-git'); -const { parseLanguageNames } = require('../tests/helper/test-case'); +/** + * @typedef {import('../src/core.js').Prism} Prism + */ + +/** + * @typedef {import('./config.js').Config} Config + * @typedef {import('./config.js').ConfigOptions} ConfigOptions + */ +/** + * @typedef {import('benchmark').Options} Options + * @typedef {import('benchmark').Stats} Stats + */ + +/** + * @typedef {object} Summary + * @property {number} best + * @property {number} worst + * @property {number[]} relative + * @property {number} [avgRelative] + */ + +/** + * @typedef {object} Case + * @property {string} id + * @property {string} language The main language. + * @property {string[]} languages All languages that have to be loaded. + * @property {FileInfo[]} files + */ /** - * @param {import("./config").Config} config + * @typedef {object} FileInfo + * @property {string} uri + * @property {string} path + * @property {number} size */ -async function runBenchmark(config) { + +/** + * @typedef {object} Result + * @property {string} name + * @property {Stats} stats + */ + +const __dirname = path.dirname(fileURLToPath(import.meta.url)); + +/** + * @param {Config} config + */ +async function runBenchmark (config) { const cases = await getCases(config); const candidates = await getCandidates(config); const maxCandidateNameLength = candidates.reduce((a, c) => Math.max(a, c.name.length), 0); @@ -24,46 +69,51 @@ async function runBenchmark(config) { const estimate = candidates.length * totalNumberOfCaseFiles * config.options.maxTime; console.log(`Estimated duration: ${Math.floor(estimate / 60)}m ${Math.floor(estimate % 60)}s`); - /** - * @type {Summary[]} - * - * @typedef {{ best: number; worst: number, relative: number[], avgRelative?: number }} Summary - */ - const totalSummary = Array.from({ length: candidates.length }, () => ({ best: 0, worst: 0, relative: [] })); + /** @type {Summary[]} */ + const totalSummary = Array.from({ length: candidates.length }, () => ({ + best: 0, + worst: 0, + relative: [], + })); for (const $case of cases) { - console.log(); console.log(`\x1b[90m${'-'.repeat(60)}\x1b[0m`); console.log(); if ($case.id !== $case.language) { console.log(`${$case.id} (${$case.language})`); - } else { + } + else { console.log($case.id); } console.log(); // prepare candidates const warmupCode = await fs.promises.readFile($case.files[0].path, 'utf8'); - /** @type {[string, (code: string) => void][]} */ - const candidateFunctions = candidates.map(({ name, setup }) => { - const fn = setup($case.language, $case.languages); - fn(warmupCode); // warmup - return [name, fn]; - }); - + const candidateFunctions = await Promise.all( + candidates.map(async ({ name, setup }) => { + const fn = await setup($case.language, $case.languages); + fn(warmupCode); // warmup + return [name, fn]; + }) + ); // bench all files for (const caseFile of $case.files) { - console.log(` ${caseFile.uri} \x1b[90m(${Math.round(caseFile.size / 1024)} kB)\x1b[0m`); + console.log( + ` ${caseFile.uri} \x1b[90m(${Math.round(caseFile.size / 1024)} kB)\x1b[0m` + ); const code = await fs.promises.readFile(caseFile.path, 'utf8'); - const results = measureCandidates(candidateFunctions.map(([name, fn]) => [name, () => fn(code)]), { - maxTime: config.options.maxTime, - minSamples: 1, - delay: 0, - }); + const results = measureCandidates( + candidateFunctions.map(([name, fn]) => [name, () => fn(code)]), + { + maxTime: config.options.maxTime, + minSamples: 1, + delay: 0, + } + ); const min = results.reduce((a, c) => Math.min(a, c.stats.mean), Infinity); const max = results.reduce((a, c) => Math.max(a, c.stats.mean), -Infinity); @@ -79,16 +129,21 @@ async function runBenchmark(config) { results.forEach((r, index) => { const name = r.name.padEnd(maxCandidateNameLength, ' '); const mean = (r.stats.mean * 1000).toFixed(2).padStart(8) + 'ms'; - const r_moe = (100 * r.stats.moe / r.stats.mean).toFixed(0).padStart(3) + '%'; + const r_moe = ((100 * r.stats.moe) / r.stats.mean).toFixed(0).padStart(3) + '%'; const smp = r.stats.sample.length.toString().padStart(4) + 'smp'; const relativeMean = r.stats.mean / min; totalSummary[index].relative.push(relativeMean); - const relative = relativeMean === 1 ? ' '.repeat(5) : (relativeMean.toFixed(2) + 'x').padStart(5); + const relative = + relativeMean === 1 + ? ' '.repeat(5) + : (relativeMean.toFixed(2) + 'x').padStart(5); const color = r === best ? '\x1b[32m' : r === worst ? '\x1b[31m' : '\x1b[0m'; - console.log(` \x1b[90m| ${color}${name} ${mean} ±${r_moe} ${smp} ${relative}\x1b[0m`); + console.log( + ` \x1b[90m| ${color}${name} ${mean} ±${r_moe} ${smp} ${relative}\x1b[0m` + ); }); } } @@ -103,63 +158,64 @@ async function runBenchmark(config) { totalSummary.forEach(s => { s.avgRelative = s.relative.reduce((a, c) => a + c, 0) / s.relative.length; }); - const minAvgRelative = totalSummary.reduce((a, c) => Math.min(a, c.avgRelative), Infinity); + const minAvgRelative = totalSummary.reduce( + (a, c) => Math.min(a, c.avgRelative ?? Infinity), + Infinity + ); totalSummary.forEach((s, i) => { const name = candidates[i].name.padEnd(maxCandidateNameLength, ' '); const best = String(s.best).padStart('best'.length); const worst = String(s.worst).padStart('worst'.length); - const relative = ((s.avgRelative / minAvgRelative).toFixed(2) + 'x').padStart('relative'.length); + const relative = ((s.avgRelative / minAvgRelative).toFixed(2) + 'x').padStart( + 'relative'.length + ); console.log(` ${name} ${best} ${worst} ${relative}`); }); } -function getConfig() { - const base = require('./config.js'); +/** + * @returns {Config} + */ +function getConfig () { + const base = baseConfig; - const args = /** @type {Record} */(argv); + const args = yargs(hideBin(process.argv)).argv; if (typeof args.testFunction === 'string') { - // @ts-ignore - base.options.testFunction = args.testFunction; + /** @type {ConfigOptions['testFunction']} */ + baseConfig.options.testFunction = args.testFunction; } if (typeof args.maxTime === 'number') { - base.options.maxTime = args.maxTime; + baseConfig.options.maxTime = args.maxTime; } if (typeof args.language === 'string') { - base.options.language = args.language; + baseConfig.options.language = args.language; } if (typeof args.remotesOnly === 'boolean') { - base.options.remotesOnly = args.remotesOnly; + baseConfig.options.remotesOnly = args.remotesOnly; } return base; } /** - * @param {import("./config").Config} config - * @returns {Promise} - * - * @typedef Case - * @property {string} id - * @property {string} language The main language. - * @property {string[]} languages All languages that have to be loaded. - * @property {FileInfo[]} files + * @param {Config} config */ -async function getCases(config) { - /** @type {Map>} */ +async function getCases (config) { + /** @type {Map>} */ const caseFileCache = new Map(); /** * Returns all files of the test case with the given id. * * @param {string} id - * @returns {Promise>} */ - async function getCaseFiles(id) { - if (caseFileCache.has(id)) { - return caseFileCache.get(id); + async function getCaseFiles (id) { + const cached = caseFileCache.get(id); + if (cached) { + return cached; } const caseEntry = config.cases[id]; @@ -171,9 +227,11 @@ async function getCases(config) { const files = new Set(); caseFileCache.set(id, files); - await Promise.all(toArray(caseEntry.files).map(async uri => { - files.add(await getFileInfo(uri)); - })); + await Promise.all( + toArray(caseEntry.files).map(async uri => { + files.add(await getFileInfo(uri)); + }) + ); for (const extendId of toArray(caseEntry.extends)) { (await getCaseFiles(extendId)).forEach(info => files.add(info)); } @@ -187,10 +245,10 @@ async function getCases(config) { * @param {string[]} languages * @returns {boolean} */ - function isEnabled(languages) { + function isEnabled (languages) { if (config.options.language) { // test whether the given languages contain any of the required languages - const required = new Set(config.options.language.split(/,/g).filter(Boolean)); + const required = new Set(config.options.language.split(/,/).filter(Boolean)); return languages.some(l => required.has(l)); } @@ -210,7 +268,7 @@ async function getCases(config) { id, language: parsed.mainLanguage, languages: parsed.languages, - files: [...await getCaseFiles(id)].sort((a, b) => a.uri.localeCompare(b.uri)), + files: [...(await getCaseFiles(id))].sort((a, b) => a.uri.localeCompare(b.uri)), }); } @@ -225,11 +283,8 @@ const fileInfoCache = new Map(); * Returns the path and other information for the given file identifier. * * @param {string} uri - * @returns {Promise} - * - * @typedef {{ uri: string, path: string, size: number }} FileInfo */ -function getFileInfo(uri) { +function getFileInfo (uri) { let info = fileInfoCache.get(uri); if (info === undefined) { info = getFileInfoUncached(uri); @@ -237,20 +292,22 @@ function getFileInfo(uri) { } return info; } + /** * @param {string} uri * @returns {Promise} */ -async function getFileInfoUncached(uri) { +async function getFileInfoUncached (uri) { const p = await getFilePath(uri); const stat = await fs.promises.stat(p); if (stat.isFile()) { return { uri, path: p, - size: stat.size + size: stat.size, }; - } else { + } + else { throw new Error(`Unknown file "${uri}"`); } } @@ -258,9 +315,8 @@ async function getFileInfoUncached(uri) { * Returns the local path of the given file identifier. * * @param {string} uri - * @returns {Promise} */ -async function getFilePath(uri) { +async function getFilePath (uri) { if (/^https:\/\//.test(uri)) { // it's a URL, so let's download the file (if not downloaded already) const downloadDir = path.join(__dirname, 'downloads'); @@ -284,13 +340,12 @@ async function getFilePath(uri) { } /** + * * @param {Iterable<[string, () => void]>} candidates - * @param {import("benchmark").Options} [options] + * @param {Options} options * @returns {Result[]} - * - * @typedef {{ name: string, stats: import("benchmark").Stats }} Result */ -function measureCandidates(candidates, options) { +function measureCandidates (candidates, options) { const suite = new Benchmark.Suite('temp name'); for (const [name, fn] of candidates) { @@ -300,12 +355,19 @@ function measureCandidates(candidates, options) { /** @type {Result[]} */ const results = []; - suite.on('cycle', event => { - results.push({ - name: event.target.name, - stats: event.target.stats - }); - }).run(); + /** + * @typedef {object} Event + * @property {Result} target + */ + + suite + .on('cycle', (/** @type {Event} */ event) => { + results.push({ + name: event.target.name, + stats: event.target.stats, + }); + }) + .run(); return results; } @@ -314,7 +376,7 @@ function measureCandidates(candidates, options) { * @param {Result[]} results * @returns {Result | null} */ -function getBest(results) { +function getBest (results) { if (results.length >= 2) { const sorted = [...results].sort((a, b) => a.stats.mean - b.stats.mean); const best = sorted[0].stats; @@ -328,11 +390,12 @@ function getBest(results) { return null; } + /** * @param {Result[]} results * @returns {Result | null} */ -function getWorst(results) { +function getWorst (results) { if (results.length >= 2) { const sorted = [...results].sort((a, b) => b.stats.mean - a.stats.mean); const worst = sorted[0].stats; @@ -351,47 +414,52 @@ function getWorst(results) { /** * Create a new test function from the given Prism instance. * - * @param {any} Prism + * @param {Prism} Prism * @param {string} mainLanguage * @param {string} testFunction * @returns {(code: string) => void} */ -function createTestFunction(Prism, mainLanguage, testFunction) { +function createTestFunction (Prism, mainLanguage, testFunction) { if (testFunction === 'tokenize') { - return (code) => { - Prism.tokenize(code, Prism.languages[mainLanguage]); + return code => { + const grammar = Prism.components.getLanguage(mainLanguage); + Prism.tokenize(code, grammar); }; - } else if (testFunction === 'highlight') { - return (code) => { - Prism.highlight(code, Prism.languages[mainLanguage], mainLanguage); + } + else if (testFunction === 'highlight') { + return code => { + Prism.highlight(code, mainLanguage); }; - } else { + } + else { throw new Error(`Unknown test function "${testFunction}"`); } - } /** - * @param {import("./config").Config} config - * @returns {Promise} - * - * @typedef Candidate + * @typedef {object} Candidate * @property {string} name - * @property {(mainLanguage: string, languages: string[]) => (code: string) => void} setup + * @property {(mainLanguage: string, languages: string[]) => Promise<(code: string) => void>} setup + */ + +/** + * + * @param {Config} config + * @returns {Promise} */ -async function getCandidates(config) { +async function getCandidates (config) { /** @type {Candidate[]} */ const candidates = []; // local if (!config.options.remotesOnly) { - const localPrismLoader = require('../tests/helper/prism-loader'); + const localPrismLoader = await import('../tests/helper/prism-loader.js'); candidates.push({ name: 'local', - setup(mainLanguage, languages) { - const Prism = localPrismLoader.createInstance(languages); + async setup (mainLanguage, languages) { + const Prism = await localPrismLoader.createInstance(languages); return createTestFunction(Prism, mainLanguage, config.options.testFunction); - } + }, }); } @@ -401,11 +469,11 @@ async function getCandidates(config) { const remoteBaseDir = path.join(__dirname, 'remotes'); await fs.promises.mkdir(remoteBaseDir, { recursive: true }); - const baseGit = simpleGit.gitP(remoteBaseDir); + const baseGit = gitP(remoteBaseDir); for (const remote of config.remotes) { - const user = /[^/]+(?=\/prism.git)/.exec(remote.repo); - const branch = remote.branch || 'master'; + const user = /[^/]+(?=\/prism.git)/.exec(remote.repo)[0]; + const branch = remote.branch || 'main'; const remoteName = `${user}@${branch}`; const remoteDir = path.join(remoteBaseDir, `${user}@${branch}`); @@ -413,20 +481,23 @@ async function getCandidates(config) { if (!fs.existsSync(remoteDir)) { console.log(`Cloning ${remote.repo}`); await baseGit.clone(remote.repo, remoteName); - remoteGit = simpleGit.gitP(remoteDir); - } else { - remoteGit = simpleGit.gitP(remoteDir); + remoteGit = gitP(remoteDir); + } + else { + remoteGit = gitP(remoteDir); await remoteGit.fetch('origin', branch); // get latest version of branch } await remoteGit.checkout(branch); // switch to branch - const remotePrismLoader = require(path.join(remoteDir, 'tests/helper/prism-loader')); + const remotePrismLoader = await import( + path.join(remoteDir, 'tests/helper/prism-loader.js') + ); candidates.push({ name: remoteName, - setup(mainLanguage, languages) { - const Prism = remotePrismLoader.createInstance(languages); + async setup (mainLanguage, languages) { + const Prism = await remotePrismLoader.createInstance(languages); return createTestFunction(Prism, mainLanguage, config.options.testFunction); - } + }, }); } @@ -436,19 +507,20 @@ async function getCandidates(config) { /** * A utility function that converts the given optional array-like value into an array. * + * @template {{}} T * @param {T[] | T | undefined | null} value - * @returns {readonly T[]} - * @template T + * @returns {T[]} */ -function toArray(value) { +function toArray (value) { if (Array.isArray(value)) { return value; - } else if (value != undefined) { + } + else if (value != null) { return [value]; - } else { + } + else { return []; } } - -runBenchmark(getConfig()); +runBenchmark(getConfig()).catch(error => console.error(error)); diff --git a/benchmark/config.js b/benchmark/config.js index 1fcf386bf2..8c7f0f551b 100644 --- a/benchmark/config.js +++ b/benchmark/config.js @@ -1,43 +1,48 @@ /** - * @type {Config} - * - * @typedef Config + * @typedef {object} Config * @property {ConfigOptions} options * @property {ConfigRemote[]} remotes - * @property {Object} cases - * - * @typedef ConfigOptions + * @property {object} cases + */ + +/** + * @typedef {object} ConfigOptions * @property {'tokenize' | 'highlight'} testFunction * @property {number} maxTime in seconds - * @property {string} [language] An optional comma separated list of languages than, if defined, will be the only - * languages for which the benchmark will be run. - * @property {boolean} [remotesOnly=false] Whether the benchmark will only run with remotes. If `true`, the local - * project will be ignored - * - * @typedef ConfigRemote + * @property {string} [language] An optional comma separated list of languages than, if defined, will be the only languages for which the benchmark will be run + * @property {boolean} [remotesOnly=false] Whether the benchmark will only run with remotes. If `true`, the local project will be ignored + */ + +/** + * @typedef {object} ConfigRemote * @property {string} repo - * @property {string} [branch='master'] - * - * @typedef ConfigCase + * @property {string} [branch='main'] + */ + +/** + * @typedef {object} ConfigCase * @property {string | string[]} [extends] * @property {string | string[]} [files] */ -const config = { + +/** @type {Config} */ +export const config = { options: { testFunction: 'tokenize', maxTime: 3, - remotesOnly: false + remotesOnly: false, }, remotes: [ /** * This will checkout a specific branch from a given repo. * - * If no branch is specified, the master branch will be used. + * If no branch is specified, the main branch will be used. */ { - repo: 'https://github.com/PrismJS/prism.git' + repo: 'https://github.com/PrismJS/prism.git', + branch: 'v2', // TODO: remove this once we have a new version of Prism }, /*{ repo: 'https://github.com//prism.git', @@ -47,9 +52,7 @@ const config = { cases: { 'css': { - files: [ - '../assets/style.css' - ] + files: ['https://prismjs.com/assets/style.css'], }, 'css!+css-extras': { extends: 'css' }, 'javascript': { @@ -59,21 +62,17 @@ const config = { 'https://cdnjs.cloudflare.com/ajax/libs/prism/1.20.0/prism.min.js', 'https://code.jquery.com/jquery-3.4.1.js', 'https://code.jquery.com/jquery-3.4.1.min.js', - '../assets/vendor/utopia.js' - ] + ], }, 'json': { - files: [ - '../components.json', - '../package-lock.json' - ] + files: ['../src/components.json', '../package-lock.json'], }, 'markup': { files: [ - '../download.html', - '../index.html', + 'https://prismjs.com/download.html', + 'https://prismjs.com/index.html', 'https://github.com/PrismJS/prism', // the PrismJS/prism GitHub page - ] + ], }, 'markup!+css+javascript': { extends: 'markup' }, 'c': { @@ -81,24 +80,22 @@ const config = { 'https://raw.githubusercontent.com/git/git/master/remote.h', 'https://raw.githubusercontent.com/git/git/master/remote.c', 'https://raw.githubusercontent.com/git/git/master/mergesort.c', - 'https://raw.githubusercontent.com/git/git/master/mergesort.h' - ] + 'https://raw.githubusercontent.com/git/git/master/mergesort.h', + ], }, 'ruby': { files: [ 'https://raw.githubusercontent.com/rails/rails/master/actionview/lib/action_view/base.rb', 'https://raw.githubusercontent.com/rails/rails/master/actionview/lib/action_view/layouts.rb', 'https://raw.githubusercontent.com/rails/rails/master/actionview/lib/action_view/template.rb', - ] + ], }, 'rust': { files: [ 'https://raw.githubusercontent.com/rust-lang/regex/master/src/utf8.rs', 'https://raw.githubusercontent.com/rust-lang/regex/master/src/compile.rs', - 'https://raw.githubusercontent.com/rust-lang/regex/master/src/lib.rs' - ] - } - } + 'https://raw.githubusercontent.com/rust-lang/regex/master/src/lib.rs', + ], + }, + }, }; - -module.exports = config; diff --git a/bower.json b/bower.json deleted file mode 100644 index 86b55dd2d3..0000000000 --- a/bower.json +++ /dev/null @@ -1,25 +0,0 @@ -{ - "name": "prism", - "main": [ - "prism.js", - "themes/prism.css" - ], - "homepage": "http://prismjs.com", - "authors": "Lea Verou", - "description": "Lightweight, robust, elegant syntax highlighting. A spin-off project from Dabblet.", - "license": "MIT", - "repository": { - "type": "git", - "url": "https://github.com/PrismJS/prism.git" - }, - "ignore": [ - "**/.*", - "assets", - "docs", - "tests", - "benchmark", - "CNAME", - "*.html", - "*.svg" - ] -} diff --git a/components.js b/components.js deleted file mode 100644 index 896f23e53b..0000000000 --- a/components.js +++ /dev/null @@ -1,2 +0,0 @@ -var components = {"core":{"meta":{"path":"components/prism-core.js","option":"mandatory"},"core":"Core"},"themes":{"meta":{"path":"themes/{id}.css","link":"index.html?theme={id}","exclusive":true},"prism":{"title":"Default","option":"default"},"prism-dark":"Dark","prism-funky":"Funky","prism-okaidia":{"title":"Okaidia","owner":"ocodia"},"prism-twilight":{"title":"Twilight","owner":"remybach"},"prism-coy":{"title":"Coy","owner":"tshedor"},"prism-solarizedlight":{"title":"Solarized Light","owner":"hectormatos2011 "},"prism-tomorrow":{"title":"Tomorrow Night","owner":"Rosey"}},"languages":{"meta":{"path":"components/prism-{id}","noCSS":true,"examplesPath":"examples/prism-{id}","addCheckAll":true},"markup":{"title":"Markup","alias":["html","xml","svg","mathml","ssml","atom","rss"],"aliasTitles":{"html":"HTML","xml":"XML","svg":"SVG","mathml":"MathML","ssml":"SSML","atom":"Atom","rss":"RSS"},"option":"default"},"css":{"title":"CSS","option":"default","modify":"markup"},"clike":{"title":"C-like","option":"default"},"javascript":{"title":"JavaScript","require":"clike","modify":"markup","optional":"regex","alias":"js","option":"default"},"abap":{"title":"ABAP","owner":"dellagustin"},"abnf":{"title":"ABNF","owner":"RunDevelopment"},"actionscript":{"title":"ActionScript","require":"javascript","modify":"markup","owner":"Golmote"},"ada":{"title":"Ada","owner":"Lucretia"},"agda":{"title":"Agda","owner":"xy-ren"},"al":{"title":"AL","owner":"RunDevelopment"},"antlr4":{"title":"ANTLR4","alias":"g4","owner":"RunDevelopment"},"apacheconf":{"title":"Apache Configuration","owner":"GuiTeK"},"apex":{"title":"Apex","require":["clike","sql"],"owner":"RunDevelopment"},"apl":{"title":"APL","owner":"ngn"},"applescript":{"title":"AppleScript","owner":"Golmote"},"aql":{"title":"AQL","owner":"RunDevelopment"},"arduino":{"title":"Arduino","require":"cpp","alias":"ino","owner":"dkern"},"arff":{"title":"ARFF","owner":"Golmote"},"armasm":{"title":"ARM Assembly","alias":"arm-asm","owner":"RunDevelopment"},"arturo":{"title":"Arturo","alias":"art","optional":["bash","css","javascript","markup","markdown","sql"],"owner":"drkameleon"},"asciidoc":{"alias":"adoc","title":"AsciiDoc","owner":"Golmote"},"aspnet":{"title":"ASP.NET (C#)","require":["markup","csharp"],"owner":"nauzilus"},"asm6502":{"title":"6502 Assembly","owner":"kzurawel"},"asmatmel":{"title":"Atmel AVR Assembly","owner":"cerkit"},"autohotkey":{"title":"AutoHotkey","owner":"aviaryan"},"autoit":{"title":"AutoIt","owner":"Golmote"},"avisynth":{"title":"AviSynth","alias":"avs","owner":"Zinfidel"},"avro-idl":{"title":"Avro IDL","alias":"avdl","owner":"RunDevelopment"},"awk":{"title":"AWK","alias":"gawk","aliasTitles":{"gawk":"GAWK"},"owner":"RunDevelopment"},"bash":{"title":"Bash","alias":["sh","shell"],"aliasTitles":{"sh":"Shell","shell":"Shell"},"owner":"zeitgeist87"},"basic":{"title":"BASIC","owner":"Golmote"},"batch":{"title":"Batch","owner":"Golmote"},"bbcode":{"title":"BBcode","alias":"shortcode","aliasTitles":{"shortcode":"Shortcode"},"owner":"RunDevelopment"},"bbj":{"title":"BBj","owner":"hyyan"},"bicep":{"title":"Bicep","owner":"johnnyreilly"},"birb":{"title":"Birb","require":"clike","owner":"Calamity210"},"bison":{"title":"Bison","require":"c","owner":"Golmote"},"bnf":{"title":"BNF","alias":"rbnf","aliasTitles":{"rbnf":"RBNF"},"owner":"RunDevelopment"},"bqn":{"title":"BQN","owner":"yewscion"},"brainfuck":{"title":"Brainfuck","owner":"Golmote"},"brightscript":{"title":"BrightScript","owner":"RunDevelopment"},"bro":{"title":"Bro","owner":"wayward710"},"bsl":{"title":"BSL (1C:Enterprise)","alias":"oscript","aliasTitles":{"oscript":"OneScript"},"owner":"Diversus23"},"c":{"title":"C","require":"clike","owner":"zeitgeist87"},"csharp":{"title":"C#","require":"clike","alias":["cs","dotnet"],"owner":"mvalipour"},"cpp":{"title":"C++","require":"c","owner":"zeitgeist87"},"cfscript":{"title":"CFScript","require":"clike","alias":"cfc","owner":"mjclemente"},"chaiscript":{"title":"ChaiScript","require":["clike","cpp"],"owner":"RunDevelopment"},"cil":{"title":"CIL","owner":"sbrl"},"cilkc":{"title":"Cilk/C","require":"c","alias":"cilk-c","owner":"OpenCilk"},"cilkcpp":{"title":"Cilk/C++","require":"cpp","alias":["cilk-cpp","cilk"],"owner":"OpenCilk"},"clojure":{"title":"Clojure","owner":"troglotit"},"cmake":{"title":"CMake","owner":"mjrogozinski"},"cobol":{"title":"COBOL","owner":"RunDevelopment"},"coffeescript":{"title":"CoffeeScript","require":"javascript","alias":"coffee","owner":"R-osey"},"concurnas":{"title":"Concurnas","alias":"conc","owner":"jasontatton"},"csp":{"title":"Content-Security-Policy","owner":"ScottHelme"},"cooklang":{"title":"Cooklang","owner":"ahue"},"coq":{"title":"Coq","owner":"RunDevelopment"},"crystal":{"title":"Crystal","require":"ruby","owner":"MakeNowJust"},"css-extras":{"title":"CSS Extras","require":"css","modify":"css","owner":"milesj"},"csv":{"title":"CSV","owner":"RunDevelopment"},"cue":{"title":"CUE","owner":"RunDevelopment"},"cypher":{"title":"Cypher","owner":"RunDevelopment"},"d":{"title":"D","require":"clike","owner":"Golmote"},"dart":{"title":"Dart","require":"clike","owner":"Golmote"},"dataweave":{"title":"DataWeave","owner":"machaval"},"dax":{"title":"DAX","owner":"peterbud"},"dhall":{"title":"Dhall","owner":"RunDevelopment"},"diff":{"title":"Diff","owner":"uranusjr"},"django":{"title":"Django/Jinja2","require":"markup-templating","alias":"jinja2","owner":"romanvm"},"dns-zone-file":{"title":"DNS zone file","owner":"RunDevelopment","alias":"dns-zone"},"docker":{"title":"Docker","alias":"dockerfile","owner":"JustinBeckwith"},"dot":{"title":"DOT (Graphviz)","alias":"gv","optional":"markup","owner":"RunDevelopment"},"ebnf":{"title":"EBNF","owner":"RunDevelopment"},"editorconfig":{"title":"EditorConfig","owner":"osipxd"},"eiffel":{"title":"Eiffel","owner":"Conaclos"},"ejs":{"title":"EJS","require":["javascript","markup-templating"],"owner":"RunDevelopment","alias":"eta","aliasTitles":{"eta":"Eta"}},"elixir":{"title":"Elixir","owner":"Golmote"},"elm":{"title":"Elm","owner":"zwilias"},"etlua":{"title":"Embedded Lua templating","require":["lua","markup-templating"],"owner":"RunDevelopment"},"erb":{"title":"ERB","require":["ruby","markup-templating"],"owner":"Golmote"},"erlang":{"title":"Erlang","owner":"Golmote"},"excel-formula":{"title":"Excel Formula","alias":["xlsx","xls"],"owner":"RunDevelopment"},"fsharp":{"title":"F#","require":"clike","owner":"simonreynolds7"},"factor":{"title":"Factor","owner":"catb0t"},"false":{"title":"False","owner":"edukisto"},"firestore-security-rules":{"title":"Firestore security rules","require":"clike","owner":"RunDevelopment"},"flow":{"title":"Flow","require":"javascript","owner":"Golmote"},"fortran":{"title":"Fortran","owner":"Golmote"},"ftl":{"title":"FreeMarker Template Language","require":"markup-templating","owner":"RunDevelopment"},"gml":{"title":"GameMaker Language","alias":"gamemakerlanguage","require":"clike","owner":"LiarOnce"},"gap":{"title":"GAP (CAS)","owner":"RunDevelopment"},"gcode":{"title":"G-code","owner":"RunDevelopment"},"gdscript":{"title":"GDScript","owner":"RunDevelopment"},"gedcom":{"title":"GEDCOM","owner":"Golmote"},"gettext":{"title":"gettext","alias":"po","owner":"RunDevelopment"},"gherkin":{"title":"Gherkin","owner":"hason"},"git":{"title":"Git","owner":"lgiraudel"},"glsl":{"title":"GLSL","require":"c","owner":"Golmote"},"gn":{"title":"GN","alias":"gni","owner":"RunDevelopment"},"linker-script":{"title":"GNU Linker Script","alias":"ld","owner":"RunDevelopment"},"go":{"title":"Go","require":"clike","owner":"arnehormann"},"go-module":{"title":"Go module","alias":"go-mod","owner":"RunDevelopment"},"gradle":{"title":"Gradle","require":"clike","owner":"zeabdelkhalek-badido18"},"graphql":{"title":"GraphQL","optional":"markdown","owner":"Golmote"},"groovy":{"title":"Groovy","require":"clike","owner":"robfletcher"},"haml":{"title":"Haml","require":"ruby","optional":["css","css-extras","coffeescript","erb","javascript","less","markdown","scss","textile"],"owner":"Golmote"},"handlebars":{"title":"Handlebars","require":"markup-templating","alias":["hbs","mustache"],"aliasTitles":{"mustache":"Mustache"},"owner":"Golmote"},"haskell":{"title":"Haskell","alias":"hs","owner":"bholst"},"haxe":{"title":"Haxe","require":"clike","optional":"regex","owner":"Golmote"},"hcl":{"title":"HCL","owner":"outsideris"},"hlsl":{"title":"HLSL","require":"c","owner":"RunDevelopment"},"hoon":{"title":"Hoon","owner":"matildepark"},"http":{"title":"HTTP","optional":["csp","css","hpkp","hsts","javascript","json","markup","uri"],"owner":"danielgtaylor"},"hpkp":{"title":"HTTP Public-Key-Pins","owner":"ScottHelme"},"hsts":{"title":"HTTP Strict-Transport-Security","owner":"ScottHelme"},"ichigojam":{"title":"IchigoJam","owner":"BlueCocoa"},"icon":{"title":"Icon","owner":"Golmote"},"icu-message-format":{"title":"ICU Message Format","owner":"RunDevelopment"},"idris":{"title":"Idris","alias":"idr","owner":"KeenS","require":"haskell"},"ignore":{"title":".ignore","owner":"osipxd","alias":["gitignore","hgignore","npmignore"],"aliasTitles":{"gitignore":".gitignore","hgignore":".hgignore","npmignore":".npmignore"}},"inform7":{"title":"Inform 7","owner":"Golmote"},"ini":{"title":"Ini","owner":"aviaryan"},"io":{"title":"Io","owner":"AlesTsurko"},"j":{"title":"J","owner":"Golmote"},"java":{"title":"Java","require":"clike","owner":"sherblot"},"javadoc":{"title":"JavaDoc","require":["markup","java","javadoclike"],"modify":"java","optional":"scala","owner":"RunDevelopment"},"javadoclike":{"title":"JavaDoc-like","modify":["java","javascript","php"],"owner":"RunDevelopment"},"javastacktrace":{"title":"Java stack trace","owner":"RunDevelopment"},"jexl":{"title":"Jexl","owner":"czosel"},"jolie":{"title":"Jolie","require":"clike","owner":"thesave"},"jq":{"title":"JQ","owner":"RunDevelopment"},"jsdoc":{"title":"JSDoc","require":["javascript","javadoclike","typescript"],"modify":"javascript","optional":["actionscript","coffeescript"],"owner":"RunDevelopment"},"js-extras":{"title":"JS Extras","require":"javascript","modify":"javascript","optional":["actionscript","coffeescript","flow","n4js","typescript"],"owner":"RunDevelopment"},"json":{"title":"JSON","alias":"webmanifest","aliasTitles":{"webmanifest":"Web App Manifest"},"owner":"CupOfTea696"},"json5":{"title":"JSON5","require":"json","owner":"RunDevelopment"},"jsonp":{"title":"JSONP","require":"json","owner":"RunDevelopment"},"jsstacktrace":{"title":"JS stack trace","owner":"sbrl"},"js-templates":{"title":"JS Templates","require":"javascript","modify":"javascript","optional":["css","css-extras","graphql","markdown","markup","sql"],"owner":"RunDevelopment"},"julia":{"title":"Julia","owner":"cdagnino"},"keepalived":{"title":"Keepalived Configure","owner":"dev-itsheng"},"keyman":{"title":"Keyman","owner":"mcdurdin"},"kotlin":{"title":"Kotlin","alias":["kt","kts"],"aliasTitles":{"kts":"Kotlin Script"},"require":"clike","owner":"Golmote"},"kumir":{"title":"KuMir (КуМир)","alias":"kum","owner":"edukisto"},"kusto":{"title":"Kusto","owner":"RunDevelopment"},"latex":{"title":"LaTeX","alias":["tex","context"],"aliasTitles":{"tex":"TeX","context":"ConTeXt"},"owner":"japborst"},"latte":{"title":"Latte","require":["clike","markup-templating","php"],"owner":"nette"},"less":{"title":"Less","require":"css","optional":"css-extras","owner":"Golmote"},"lilypond":{"title":"LilyPond","require":"scheme","alias":"ly","owner":"RunDevelopment"},"liquid":{"title":"Liquid","require":"markup-templating","owner":"cinhtau"},"lisp":{"title":"Lisp","alias":["emacs","elisp","emacs-lisp"],"owner":"JuanCaicedo"},"livescript":{"title":"LiveScript","owner":"Golmote"},"llvm":{"title":"LLVM IR","owner":"porglezomp"},"log":{"title":"Log file","optional":"javastacktrace","owner":"RunDevelopment"},"lolcode":{"title":"LOLCODE","owner":"Golmote"},"lua":{"title":"Lua","owner":"Golmote"},"magma":{"title":"Magma (CAS)","owner":"RunDevelopment"},"makefile":{"title":"Makefile","owner":"Golmote"},"markdown":{"title":"Markdown","require":"markup","optional":"yaml","alias":"md","owner":"Golmote"},"markup-templating":{"title":"Markup templating","require":"markup","owner":"Golmote"},"mata":{"title":"Mata","owner":"RunDevelopment"},"matlab":{"title":"MATLAB","owner":"Golmote"},"maxscript":{"title":"MAXScript","owner":"RunDevelopment"},"mel":{"title":"MEL","owner":"Golmote"},"mermaid":{"title":"Mermaid","owner":"RunDevelopment"},"metafont":{"title":"METAFONT","owner":"LaeriExNihilo"},"mizar":{"title":"Mizar","owner":"Golmote"},"mongodb":{"title":"MongoDB","owner":"airs0urce","require":"javascript"},"monkey":{"title":"Monkey","owner":"Golmote"},"moonscript":{"title":"MoonScript","alias":"moon","owner":"RunDevelopment"},"n1ql":{"title":"N1QL","owner":"TMWilds"},"n4js":{"title":"N4JS","require":"javascript","optional":"jsdoc","alias":"n4jsd","owner":"bsmith-n4"},"nand2tetris-hdl":{"title":"Nand To Tetris HDL","owner":"stephanmax"},"naniscript":{"title":"Naninovel Script","owner":"Elringus","alias":"nani"},"nasm":{"title":"NASM","owner":"rbmj"},"neon":{"title":"NEON","owner":"nette"},"nevod":{"title":"Nevod","owner":"nezaboodka"},"nginx":{"title":"nginx","owner":"volado"},"nim":{"title":"Nim","owner":"Golmote"},"nix":{"title":"Nix","owner":"Golmote"},"nsis":{"title":"NSIS","owner":"idleberg"},"objectivec":{"title":"Objective-C","require":"c","alias":"objc","owner":"uranusjr"},"ocaml":{"title":"OCaml","owner":"Golmote"},"odin":{"title":"Odin","owner":"edukisto"},"opencl":{"title":"OpenCL","require":"c","modify":["c","cpp"],"owner":"Milania1"},"openqasm":{"title":"OpenQasm","alias":"qasm","owner":"RunDevelopment"},"oz":{"title":"Oz","owner":"Golmote"},"parigp":{"title":"PARI/GP","owner":"Golmote"},"parser":{"title":"Parser","require":"markup","owner":"Golmote"},"pascal":{"title":"Pascal","alias":"objectpascal","aliasTitles":{"objectpascal":"Object Pascal"},"owner":"Golmote"},"pascaligo":{"title":"Pascaligo","owner":"DefinitelyNotAGoat"},"psl":{"title":"PATROL Scripting Language","owner":"bertysentry"},"pcaxis":{"title":"PC-Axis","alias":"px","owner":"RunDevelopment"},"peoplecode":{"title":"PeopleCode","alias":"pcode","owner":"RunDevelopment"},"perl":{"title":"Perl","owner":"Golmote"},"php":{"title":"PHP","require":"markup-templating","owner":"milesj"},"phpdoc":{"title":"PHPDoc","require":["php","javadoclike"],"modify":"php","owner":"RunDevelopment"},"php-extras":{"title":"PHP Extras","require":"php","modify":"php","owner":"milesj"},"plant-uml":{"title":"PlantUML","alias":"plantuml","owner":"RunDevelopment"},"plsql":{"title":"PL/SQL","require":"sql","owner":"Golmote"},"powerquery":{"title":"PowerQuery","alias":["pq","mscript"],"owner":"peterbud"},"powershell":{"title":"PowerShell","owner":"nauzilus"},"processing":{"title":"Processing","require":"clike","owner":"Golmote"},"prolog":{"title":"Prolog","owner":"Golmote"},"promql":{"title":"PromQL","owner":"arendjr"},"properties":{"title":".properties","owner":"Golmote"},"protobuf":{"title":"Protocol Buffers","require":"clike","owner":"just-boris"},"pug":{"title":"Pug","require":["markup","javascript"],"optional":["coffeescript","ejs","handlebars","less","livescript","markdown","scss","stylus","twig"],"owner":"Golmote"},"puppet":{"title":"Puppet","owner":"Golmote"},"pure":{"title":"Pure","optional":["c","cpp","fortran"],"owner":"Golmote"},"purebasic":{"title":"PureBasic","require":"clike","alias":"pbfasm","owner":"HeX0R101"},"purescript":{"title":"PureScript","require":"haskell","alias":"purs","owner":"sriharshachilakapati"},"python":{"title":"Python","alias":"py","owner":"multipetros"},"qsharp":{"title":"Q#","require":"clike","alias":"qs","owner":"fedonman"},"q":{"title":"Q (kdb+ database)","owner":"Golmote"},"qml":{"title":"QML","require":"javascript","owner":"RunDevelopment"},"qore":{"title":"Qore","require":"clike","owner":"temnroegg"},"r":{"title":"R","owner":"Golmote"},"racket":{"title":"Racket","require":"scheme","alias":"rkt","owner":"RunDevelopment"},"cshtml":{"title":"Razor C#","alias":"razor","require":["markup","csharp"],"optional":["css","css-extras","javascript","js-extras"],"owner":"RunDevelopment"},"jsx":{"title":"React JSX","require":["markup","javascript"],"optional":["jsdoc","js-extras","js-templates"],"owner":"vkbansal"},"tsx":{"title":"React TSX","require":["jsx","typescript"]},"reason":{"title":"Reason","require":"clike","owner":"Golmote"},"regex":{"title":"Regex","owner":"RunDevelopment"},"rego":{"title":"Rego","owner":"JordanSh"},"renpy":{"title":"Ren'py","alias":"rpy","owner":"HyuchiaDiego"},"rescript":{"title":"ReScript","alias":"res","owner":"vmarcosp"},"rest":{"title":"reST (reStructuredText)","owner":"Golmote"},"rip":{"title":"Rip","owner":"ravinggenius"},"roboconf":{"title":"Roboconf","owner":"Golmote"},"robotframework":{"title":"Robot Framework","alias":"robot","owner":"RunDevelopment"},"ruby":{"title":"Ruby","require":"clike","alias":"rb","owner":"samflores"},"rust":{"title":"Rust","owner":"Golmote"},"sas":{"title":"SAS","optional":["groovy","lua","sql"],"owner":"Golmote"},"sass":{"title":"Sass (Sass)","require":"css","optional":"css-extras","owner":"Golmote"},"scss":{"title":"Sass (SCSS)","require":"css","optional":"css-extras","owner":"MoOx"},"scala":{"title":"Scala","require":"java","owner":"jozic"},"scheme":{"title":"Scheme","owner":"bacchus123"},"shell-session":{"title":"Shell session","require":"bash","alias":["sh-session","shellsession"],"owner":"RunDevelopment"},"smali":{"title":"Smali","owner":"RunDevelopment"},"smalltalk":{"title":"Smalltalk","owner":"Golmote"},"smarty":{"title":"Smarty","require":"markup-templating","optional":"php","owner":"Golmote"},"sml":{"title":"SML","alias":"smlnj","aliasTitles":{"smlnj":"SML/NJ"},"owner":"RunDevelopment"},"solidity":{"title":"Solidity (Ethereum)","alias":"sol","require":"clike","owner":"glachaud"},"solution-file":{"title":"Solution file","alias":"sln","owner":"RunDevelopment"},"soy":{"title":"Soy (Closure Template)","require":"markup-templating","owner":"Golmote"},"sparql":{"title":"SPARQL","require":"turtle","owner":"Triply-Dev","alias":"rq"},"splunk-spl":{"title":"Splunk SPL","owner":"RunDevelopment"},"sqf":{"title":"SQF: Status Quo Function (Arma 3)","require":"clike","owner":"RunDevelopment"},"sql":{"title":"SQL","owner":"multipetros"},"squirrel":{"title":"Squirrel","require":"clike","owner":"RunDevelopment"},"stan":{"title":"Stan","owner":"RunDevelopment"},"stata":{"title":"Stata Ado","require":["mata","java","python"],"owner":"RunDevelopment"},"iecst":{"title":"Structured Text (IEC 61131-3)","owner":"serhioromano"},"stylus":{"title":"Stylus","owner":"vkbansal"},"supercollider":{"title":"SuperCollider","alias":"sclang","owner":"RunDevelopment"},"swift":{"title":"Swift","owner":"chrischares"},"systemd":{"title":"Systemd configuration file","owner":"RunDevelopment"},"t4-templating":{"title":"T4 templating","owner":"RunDevelopment"},"t4-cs":{"title":"T4 Text Templates (C#)","require":["t4-templating","csharp"],"alias":"t4","owner":"RunDevelopment"},"t4-vb":{"title":"T4 Text Templates (VB)","require":["t4-templating","vbnet"],"owner":"RunDevelopment"},"tap":{"title":"TAP","owner":"isaacs","require":"yaml"},"tcl":{"title":"Tcl","owner":"PeterChaplin"},"tt2":{"title":"Template Toolkit 2","require":["clike","markup-templating"],"owner":"gflohr"},"textile":{"title":"Textile","require":"markup","optional":"css","owner":"Golmote"},"toml":{"title":"TOML","owner":"RunDevelopment"},"tremor":{"title":"Tremor","alias":["trickle","troy"],"owner":"darach","aliasTitles":{"trickle":"trickle","troy":"troy"}},"turtle":{"title":"Turtle","alias":"trig","aliasTitles":{"trig":"TriG"},"owner":"jakubklimek"},"twig":{"title":"Twig","require":"markup-templating","owner":"brandonkelly"},"typescript":{"title":"TypeScript","require":"javascript","optional":"js-templates","alias":"ts","owner":"vkbansal"},"typoscript":{"title":"TypoScript","alias":"tsconfig","aliasTitles":{"tsconfig":"TSConfig"},"owner":"dkern"},"unrealscript":{"title":"UnrealScript","alias":["uscript","uc"],"owner":"RunDevelopment"},"uorazor":{"title":"UO Razor Script","owner":"jaseowns"},"uri":{"title":"URI","alias":"url","aliasTitles":{"url":"URL"},"owner":"RunDevelopment"},"v":{"title":"V","require":"clike","owner":"taggon"},"vala":{"title":"Vala","require":"clike","optional":"regex","owner":"TemplarVolk"},"vbnet":{"title":"VB.Net","require":"basic","owner":"Bigsby"},"velocity":{"title":"Velocity","require":"markup","owner":"Golmote"},"verilog":{"title":"Verilog","owner":"a-rey"},"vhdl":{"title":"VHDL","owner":"a-rey"},"vim":{"title":"vim","owner":"westonganger"},"visual-basic":{"title":"Visual Basic","alias":["vb","vba"],"aliasTitles":{"vba":"VBA"},"owner":"Golmote"},"warpscript":{"title":"WarpScript","owner":"RunDevelopment"},"wasm":{"title":"WebAssembly","owner":"Golmote"},"web-idl":{"title":"Web IDL","alias":"webidl","owner":"RunDevelopment"},"wgsl":{"title":"WGSL","owner":"Dr4gonthree"},"wiki":{"title":"Wiki markup","require":"markup","owner":"Golmote"},"wolfram":{"title":"Wolfram language","alias":["mathematica","nb","wl"],"aliasTitles":{"mathematica":"Mathematica","nb":"Mathematica Notebook"},"owner":"msollami"},"wren":{"title":"Wren","owner":"clsource"},"xeora":{"title":"Xeora","require":"markup","alias":"xeoracube","aliasTitles":{"xeoracube":"XeoraCube"},"owner":"freakmaxi"},"xml-doc":{"title":"XML doc (.net)","require":"markup","modify":["csharp","fsharp","vbnet"],"owner":"RunDevelopment"},"xojo":{"title":"Xojo (REALbasic)","owner":"Golmote"},"xquery":{"title":"XQuery","require":"markup","owner":"Golmote"},"yaml":{"title":"YAML","alias":"yml","owner":"hason"},"yang":{"title":"YANG","owner":"RunDevelopment"},"zig":{"title":"Zig","owner":"RunDevelopment"}},"plugins":{"meta":{"path":"plugins/{id}/prism-{id}","link":"plugins/{id}/"},"line-highlight":{"title":"Line Highlight","description":"Highlights specific lines and/or line ranges."},"line-numbers":{"title":"Line Numbers","description":"Line number at the beginning of code lines.","owner":"kuba-kubula"},"show-invisibles":{"title":"Show Invisibles","description":"Show hidden characters such as tabs and line breaks.","optional":["autolinker","data-uri-highlight"]},"autolinker":{"title":"Autolinker","description":"Converts URLs and emails in code to clickable links. Parses Markdown links in comments."},"wpd":{"title":"WebPlatform Docs","description":"Makes tokens link to WebPlatform.org documentation. The links open in a new tab."},"custom-class":{"title":"Custom Class","description":"This plugin allows you to prefix Prism's default classes (.comment can become .namespace--comment) or replace them with your defined ones (like .editor__comment). You can even add new classes.","owner":"dvkndn","noCSS":true},"file-highlight":{"title":"File Highlight","description":"Fetch external files and highlight them with Prism. Used on the Prism website itself.","noCSS":true},"show-language":{"title":"Show Language","description":"Display the highlighted language in code blocks (inline code does not show the label).","owner":"nauzilus","noCSS":true,"require":"toolbar"},"jsonp-highlight":{"title":"JSONP Highlight","description":"Fetch content with JSONP and highlight some interesting content (e.g. GitHub/Gists or Bitbucket API).","noCSS":true,"owner":"nauzilus"},"highlight-keywords":{"title":"Highlight Keywords","description":"Adds special CSS classes for each keyword for fine-grained highlighting.","owner":"vkbansal","noCSS":true},"remove-initial-line-feed":{"title":"Remove initial line feed","description":"Removes the initial line feed in code blocks.","owner":"Golmote","noCSS":true},"inline-color":{"title":"Inline color","description":"Adds a small inline preview for colors in style sheets.","require":"css-extras","owner":"RunDevelopment"},"previewers":{"title":"Previewers","description":"Previewers for angles, colors, gradients, easing and time.","require":"css-extras","owner":"Golmote"},"autoloader":{"title":"Autoloader","description":"Automatically loads the needed languages to highlight the code blocks.","owner":"Golmote","noCSS":true},"keep-markup":{"title":"Keep Markup","description":"Prevents custom markup from being dropped out during highlighting.","owner":"Golmote","optional":"normalize-whitespace","noCSS":true},"command-line":{"title":"Command Line","description":"Display a command line with a prompt and, optionally, the output/response from the commands.","owner":"chriswells0"},"unescaped-markup":{"title":"Unescaped Markup","description":"Write markup without having to escape anything."},"normalize-whitespace":{"title":"Normalize Whitespace","description":"Supports multiple operations to normalize whitespace in code blocks.","owner":"zeitgeist87","optional":"unescaped-markup","noCSS":true},"data-uri-highlight":{"title":"Data-URI Highlight","description":"Highlights data-URI contents.","owner":"Golmote","noCSS":true},"toolbar":{"title":"Toolbar","description":"Attach a toolbar for plugins to easily register buttons on the top of a code block.","owner":"mAAdhaTTah"},"copy-to-clipboard":{"title":"Copy to Clipboard Button","description":"Add a button that copies the code block to the clipboard when clicked.","owner":"mAAdhaTTah","require":"toolbar","noCSS":true},"download-button":{"title":"Download Button","description":"A button in the toolbar of a code block adding a convenient way to download a code file.","owner":"Golmote","require":"toolbar","noCSS":true},"match-braces":{"title":"Match braces","description":"Highlights matching braces.","owner":"RunDevelopment"},"diff-highlight":{"title":"Diff Highlight","description":"Highlights the code inside diff blocks.","owner":"RunDevelopment","require":"diff"},"filter-highlight-all":{"title":"Filter highlightAll","description":"Filters the elements the highlightAll and highlightAllUnder methods actually highlight.","owner":"RunDevelopment","noCSS":true},"treeview":{"title":"Treeview","description":"A language with special styles to highlight file system tree structures.","owner":"Golmote"}}}; -if (typeof module !== 'undefined' && module.exports) { module.exports = components; } \ No newline at end of file diff --git a/components/index.js b/components/index.js deleted file mode 100644 index b2edcc2abc..0000000000 --- a/components/index.js +++ /dev/null @@ -1,56 +0,0 @@ -const components = require('../components.js'); -const getLoader = require('../dependencies'); - - -/** - * The set of all languages which have been loaded using the below function. - * - * @type {Set} - */ -const loadedLanguages = new Set(); - -/** - * Loads the given languages and adds them to the current Prism instance. - * - * If no languages are provided, __all__ Prism languages will be loaded. - * - * @param {string|string[]} [languages] - * @returns {void} - */ -function loadLanguages(languages) { - if (languages === undefined) { - languages = Object.keys(components.languages).filter(l => l != 'meta'); - } else if (!Array.isArray(languages)) { - languages = [languages]; - } - - // the user might have loaded languages via some other way or used `prism.js` which already includes some - // we don't need to validate the ids because `getLoader` will ignore invalid ones - const loaded = [...loadedLanguages, ...Object.keys(Prism.languages)]; - - getLoader(components, languages, loaded).load(lang => { - if (!(lang in components.languages)) { - if (!loadLanguages.silent) { - console.warn('Language does not exist: ' + lang); - } - return; - } - - const pathToLanguage = './prism-' + lang; - - // remove from require cache and from Prism - delete require.cache[require.resolve(pathToLanguage)]; - delete Prism.languages[lang]; - - require(pathToLanguage); - - loadedLanguages.add(lang); - }); -} - -/** - * Set this to `true` to prevent all warning messages `loadLanguages` logs. - */ -loadLanguages.silent = false; - -module.exports = loadLanguages; diff --git a/components/prism-abap.js b/components/prism-abap.js deleted file mode 100644 index f086acd788..0000000000 --- a/components/prism-abap.js +++ /dev/null @@ -1,48 +0,0 @@ -Prism.languages.abap = { - 'comment': /^\*.*/m, - 'string': /(`|')(?:\\.|(?!\1)[^\\\r\n])*\1/, - 'string-template': { - pattern: /([|}])(?:\\.|[^\\|{\r\n])*(?=[|{])/, - lookbehind: true, - alias: 'string' - }, - /* End Of Line comments should not interfere with strings when the - quote character occurs within them. We assume a string being highlighted - inside an EOL comment is more acceptable than the opposite. - */ - 'eol-comment': { - pattern: /(^|\s)".*/m, - lookbehind: true, - alias: 'comment' - }, - 'keyword': { - pattern: /(\s|\.|^)(?:\*-INPUT|\?TO|ABAP-SOURCE|ABBREVIATED|ABS|ABSTRACT|ACCEPT|ACCEPTING|ACCESSPOLICY|ACCORDING|ACOS|ACTIVATION|ACTUAL|ADD|ADD-CORRESPONDING|ADJACENT|AFTER|ALIAS|ALIASES|ALIGN|ALL|ALLOCATE|ALPHA|ANALYSIS|ANALYZER|AND|ANY|APPEND|APPENDAGE|APPENDING|APPLICATION|ARCHIVE|AREA|ARITHMETIC|AS|ASCENDING|ASIN|ASPECT|ASSERT|ASSIGN|ASSIGNED|ASSIGNING|ASSOCIATION|ASYNCHRONOUS|AT|ATAN|ATTRIBUTES|AUTHORITY|AUTHORITY-CHECK|AVG|BACK|BACKGROUND|BACKUP|BACKWARD|BADI|BASE|BEFORE|BEGIN|BETWEEN|BIG|BINARY|BINDING|BIT|BIT-AND|BIT-NOT|BIT-OR|BIT-XOR|BLACK|BLANK|BLANKS|BLOB|BLOCK|BLOCKS|BLUE|BOUND|BOUNDARIES|BOUNDS|BOXED|BREAK-POINT|BT|BUFFER|BY|BYPASSING|BYTE|BYTE-CA|BYTE-CN|BYTE-CO|BYTE-CS|BYTE-NA|BYTE-NS|BYTE-ORDER|C|CA|CALL|CALLING|CASE|CAST|CASTING|CATCH|CEIL|CENTER|CENTERED|CHAIN|CHAIN-INPUT|CHAIN-REQUEST|CHANGE|CHANGING|CHANNELS|CHAR-TO-HEX|CHARACTER|CHARLEN|CHECK|CHECKBOX|CIRCULAR|CI_|CLASS|CLASS-CODING|CLASS-DATA|CLASS-EVENTS|CLASS-METHODS|CLASS-POOL|CLEANUP|CLEAR|CLIENT|CLOB|CLOCK|CLOSE|CN|CNT|CO|COALESCE|CODE|CODING|COLLECT|COLOR|COLUMN|COLUMNS|COL_BACKGROUND|COL_GROUP|COL_HEADING|COL_KEY|COL_NEGATIVE|COL_NORMAL|COL_POSITIVE|COL_TOTAL|COMMENT|COMMENTS|COMMIT|COMMON|COMMUNICATION|COMPARING|COMPONENT|COMPONENTS|COMPRESSION|COMPUTE|CONCAT|CONCATENATE|COND|CONDENSE|CONDITION|CONNECT|CONNECTION|CONSTANTS|CONTEXT|CONTEXTS|CONTINUE|CONTROL|CONTROLS|CONV|CONVERSION|CONVERT|COPIES|COPY|CORRESPONDING|COS|COSH|COUNT|COUNTRY|COVER|CP|CPI|CREATE|CREATING|CRITICAL|CS|CURRENCY|CURRENCY_CONVERSION|CURRENT|CURSOR|CURSOR-SELECTION|CUSTOMER|CUSTOMER-FUNCTION|DANGEROUS|DATA|DATABASE|DATAINFO|DATASET|DATE|DAYLIGHT|DBMAXLEN|DD\/MM\/YY|DD\/MM\/YYYY|DDMMYY|DEALLOCATE|DECIMALS|DECIMAL_SHIFT|DECLARATIONS|DEEP|DEFAULT|DEFERRED|DEFINE|DEFINING|DEFINITION|DELETE|DELETING|DEMAND|DEPARTMENT|DESCENDING|DESCRIBE|DESTINATION|DETAIL|DIALOG|DIRECTORY|DISCONNECT|DISPLAY|DISPLAY-MODE|DISTANCE|DISTINCT|DIV|DIVIDE|DIVIDE-CORRESPONDING|DIVISION|DO|DUMMY|DUPLICATE|DUPLICATES|DURATION|DURING|DYNAMIC|DYNPRO|E|EACH|EDIT|EDITOR-CALL|ELSE|ELSEIF|EMPTY|ENABLED|ENABLING|ENCODING|END|END-ENHANCEMENT-SECTION|END-LINES|END-OF-DEFINITION|END-OF-FILE|END-OF-PAGE|END-OF-SELECTION|ENDAT|ENDCASE|ENDCATCH|ENDCHAIN|ENDCLASS|ENDDO|ENDENHANCEMENT|ENDEXEC|ENDFOR|ENDFORM|ENDFUNCTION|ENDIAN|ENDIF|ENDING|ENDINTERFACE|ENDLOOP|ENDMETHOD|ENDMODULE|ENDON|ENDPROVIDE|ENDSELECT|ENDTRY|ENDWHILE|ENGINEERING|ENHANCEMENT|ENHANCEMENT-POINT|ENHANCEMENT-SECTION|ENHANCEMENTS|ENTRIES|ENTRY|ENVIRONMENT|EQ|EQUAL|EQUIV|ERRORMESSAGE|ERRORS|ESCAPE|ESCAPING|EVENT|EVENTS|EXACT|EXCEPT|EXCEPTION|EXCEPTION-TABLE|EXCEPTIONS|EXCLUDE|EXCLUDING|EXEC|EXECUTE|EXISTS|EXIT|EXIT-COMMAND|EXP|EXPAND|EXPANDING|EXPIRATION|EXPLICIT|EXPONENT|EXPORT|EXPORTING|EXTEND|EXTENDED|EXTENSION|EXTRACT|FAIL|FETCH|FIELD|FIELD-GROUPS|FIELD-SYMBOL|FIELD-SYMBOLS|FIELDS|FILE|FILTER|FILTER-TABLE|FILTERS|FINAL|FIND|FIRST|FIRST-LINE|FIXED-POINT|FKEQ|FKGE|FLOOR|FLUSH|FONT|FOR|FORM|FORMAT|FORWARD|FOUND|FRAC|FRAME|FRAMES|FREE|FRIENDS|FROM|FUNCTION|FUNCTION-POOL|FUNCTIONALITY|FURTHER|GAPS|GE|GENERATE|GET|GIVING|GKEQ|GKGE|GLOBAL|GRANT|GREATER|GREEN|GROUP|GROUPS|GT|HANDLE|HANDLER|HARMLESS|HASHED|HAVING|HDB|HEAD-LINES|HEADER|HEADERS|HEADING|HELP-ID|HELP-REQUEST|HIDE|HIGH|HINT|HOLD|HOTSPOT|I|ICON|ID|IDENTIFICATION|IDENTIFIER|IDS|IF|IGNORE|IGNORING|IMMEDIATELY|IMPLEMENTATION|IMPLEMENTATIONS|IMPLEMENTED|IMPLICIT|IMPORT|IMPORTING|IN|INACTIVE|INCL|INCLUDE|INCLUDES|INCLUDING|INCREMENT|INDEX|INDEX-LINE|INFOTYPES|INHERITING|INIT|INITIAL|INITIALIZATION|INNER|INOUT|INPUT|INSERT|INSTANCES|INTENSIFIED|INTERFACE|INTERFACE-POOL|INTERFACES|INTERNAL|INTERVALS|INTO|INVERSE|INVERTED-DATE|IS|ISO|ITERATOR|ITNO|JOB|JOIN|KEEP|KEEPING|KERNEL|KEY|KEYS|KEYWORDS|KIND|LANGUAGE|LAST|LATE|LAYOUT|LE|LEADING|LEAVE|LEFT|LEFT-JUSTIFIED|LEFTPLUS|LEFTSPACE|LEGACY|LENGTH|LESS|LET|LEVEL|LEVELS|LIKE|LINE|LINE-COUNT|LINE-SELECTION|LINE-SIZE|LINEFEED|LINES|LIST|LIST-PROCESSING|LISTBOX|LITTLE|LLANG|LOAD|LOAD-OF-PROGRAM|LOB|LOCAL|LOCALE|LOCATOR|LOG|LOG-POINT|LOG10|LOGFILE|LOGICAL|LONG|LOOP|LOW|LOWER|LPAD|LPI|LT|M|MAIL|MAIN|MAJOR-ID|MAPPING|MARGIN|MARK|MASK|MATCH|MATCHCODE|MAX|MAXIMUM|MEDIUM|MEMBERS|MEMORY|MESH|MESSAGE|MESSAGE-ID|MESSAGES|MESSAGING|METHOD|METHODS|MIN|MINIMUM|MINOR-ID|MM\/DD\/YY|MM\/DD\/YYYY|MMDDYY|MOD|MODE|MODIF|MODIFIER|MODIFY|MODULE|MOVE|MOVE-CORRESPONDING|MULTIPLY|MULTIPLY-CORRESPONDING|NA|NAME|NAMETAB|NATIVE|NB|NE|NESTED|NESTING|NEW|NEW-LINE|NEW-PAGE|NEW-SECTION|NEXT|NO|NO-DISPLAY|NO-EXTENSION|NO-GAP|NO-GAPS|NO-GROUPING|NO-HEADING|NO-SCROLLING|NO-SIGN|NO-TITLE|NO-TOPOFPAGE|NO-ZERO|NODE|NODES|NON-UNICODE|NON-UNIQUE|NOT|NP|NS|NULL|NUMBER|NUMOFCHAR|O|OBJECT|OBJECTS|OBLIGATORY|OCCURRENCE|OCCURRENCES|OCCURS|OF|OFF|OFFSET|OLE|ON|ONLY|OPEN|OPTION|OPTIONAL|OPTIONS|OR|ORDER|OTHER|OTHERS|OUT|OUTER|OUTPUT|OUTPUT-LENGTH|OVERFLOW|OVERLAY|PACK|PACKAGE|PAD|PADDING|PAGE|PAGES|PARAMETER|PARAMETER-TABLE|PARAMETERS|PART|PARTIALLY|PATTERN|PERCENTAGE|PERFORM|PERFORMING|PERSON|PF|PF-STATUS|PINK|PLACES|POOL|POSITION|POS_HIGH|POS_LOW|PRAGMAS|PRECOMPILED|PREFERRED|PRESERVING|PRIMARY|PRINT|PRINT-CONTROL|PRIORITY|PRIVATE|PROCEDURE|PROCESS|PROGRAM|PROPERTY|PROTECTED|PROVIDE|PUBLIC|PUSHBUTTON|PUT|QUEUE-ONLY|QUICKINFO|RADIOBUTTON|RAISE|RAISING|RANGE|RANGES|RAW|READ|READ-ONLY|READER|RECEIVE|RECEIVED|RECEIVER|RECEIVING|RED|REDEFINITION|REDUCE|REDUCED|REF|REFERENCE|REFRESH|REGEX|REJECT|REMOTE|RENAMING|REPLACE|REPLACEMENT|REPLACING|REPORT|REQUEST|REQUESTED|RESERVE|RESET|RESOLUTION|RESPECTING|RESPONSIBLE|RESULT|RESULTS|RESUMABLE|RESUME|RETRY|RETURN|RETURNCODE|RETURNING|RIGHT|RIGHT-JUSTIFIED|RIGHTPLUS|RIGHTSPACE|RISK|RMC_COMMUNICATION_FAILURE|RMC_INVALID_STATUS|RMC_SYSTEM_FAILURE|ROLE|ROLLBACK|ROUND|ROWS|RTTI|RUN|SAP|SAP-SPOOL|SAVING|SCALE_PRESERVING|SCALE_PRESERVING_SCIENTIFIC|SCAN|SCIENTIFIC|SCIENTIFIC_WITH_LEADING_ZERO|SCREEN|SCROLL|SCROLL-BOUNDARY|SCROLLING|SEARCH|SECONDARY|SECONDS|SECTION|SELECT|SELECT-OPTIONS|SELECTION|SELECTION-SCREEN|SELECTION-SET|SELECTION-SETS|SELECTION-TABLE|SELECTIONS|SELECTOR|SEND|SEPARATE|SEPARATED|SET|SHARED|SHIFT|SHORT|SHORTDUMP-ID|SIGN|SIGN_AS_POSTFIX|SIMPLE|SIN|SINGLE|SINH|SIZE|SKIP|SKIPPING|SMART|SOME|SORT|SORTABLE|SORTED|SOURCE|SPACE|SPECIFIED|SPLIT|SPOOL|SPOTS|SQL|SQLSCRIPT|SQRT|STABLE|STAMP|STANDARD|START-OF-SELECTION|STARTING|STATE|STATEMENT|STATEMENTS|STATIC|STATICS|STATUSINFO|STEP-LOOP|STOP|STRLEN|STRUCTURE|STRUCTURES|STYLE|SUBKEY|SUBMATCHES|SUBMIT|SUBROUTINE|SUBSCREEN|SUBSTRING|SUBTRACT|SUBTRACT-CORRESPONDING|SUFFIX|SUM|SUMMARY|SUMMING|SUPPLIED|SUPPLY|SUPPRESS|SWITCH|SWITCHSTATES|SYMBOL|SYNCPOINTS|SYNTAX|SYNTAX-CHECK|SYNTAX-TRACE|SYSTEM-CALL|SYSTEM-EXCEPTIONS|SYSTEM-EXIT|TAB|TABBED|TABLE|TABLES|TABLEVIEW|TABSTRIP|TAN|TANH|TARGET|TASK|TASKS|TEST|TESTING|TEXT|TEXTPOOL|THEN|THROW|TIME|TIMES|TIMESTAMP|TIMEZONE|TITLE|TITLE-LINES|TITLEBAR|TO|TOKENIZATION|TOKENS|TOP-LINES|TOP-OF-PAGE|TRACE-FILE|TRACE-TABLE|TRAILING|TRANSACTION|TRANSFER|TRANSFORMATION|TRANSLATE|TRANSPORTING|TRMAC|TRUNC|TRUNCATE|TRUNCATION|TRY|TYPE|TYPE-POOL|TYPE-POOLS|TYPES|ULINE|UNASSIGN|UNDER|UNICODE|UNION|UNIQUE|UNIT|UNIT_CONVERSION|UNIX|UNPACK|UNTIL|UNWIND|UP|UPDATE|UPPER|USER|USER-COMMAND|USING|UTF-8|VALID|VALUE|VALUE-REQUEST|VALUES|VARY|VARYING|VERIFICATION-MESSAGE|VERSION|VIA|VIEW|VISIBLE|WAIT|WARNING|WHEN|WHENEVER|WHERE|WHILE|WIDTH|WINDOW|WINDOWS|WITH|WITH-HEADING|WITH-TITLE|WITHOUT|WORD|WORK|WRITE|WRITER|X|XML|XOR|XSD|XSTRLEN|YELLOW|YES|YYMMDD|Z|ZERO|ZONE)(?![\w-])/i, - lookbehind: true - }, - /* Numbers can be only integers. Decimal or Hex appear only as strings */ - 'number': /\b\d+\b/, - /* Operators must always be surrounded by whitespace, they cannot be put - adjacent to operands. - */ - 'operator': { - pattern: /(\s)(?:\*\*?|<[=>]?|>=?|\?=|[-+\/=])(?=\s)/, - lookbehind: true - }, - 'string-operator': { - pattern: /(\s)&&?(?=\s)/, - lookbehind: true, - /* The official editor highlights */ - alias: 'keyword' - }, - 'token-operator': [{ - /* Special operators used to access structure components, class methods/attributes, etc. */ - pattern: /(\w)(?:->?|=>|[~|{}])(?=\w)/, - lookbehind: true, - alias: 'punctuation' - }, { - /* Special tokens used do delimit string templates */ - pattern: /[|{}]/, - alias: 'punctuation' - }], - 'punctuation': /[,.:()]/ -}; diff --git a/components/prism-abap.min.js b/components/prism-abap.min.js deleted file mode 100644 index d803a51ba0..0000000000 --- a/components/prism-abap.min.js +++ /dev/null @@ -1 +0,0 @@ -Prism.languages.abap={comment:/^\*.*/m,string:/(`|')(?:\\.|(?!\1)[^\\\r\n])*\1/,"string-template":{pattern:/([|}])(?:\\.|[^\\|{\r\n])*(?=[|{])/,lookbehind:!0,alias:"string"},"eol-comment":{pattern:/(^|\s)".*/m,lookbehind:!0,alias:"comment"},keyword:{pattern:/(\s|\.|^)(?:\*-INPUT|\?TO|ABAP-SOURCE|ABBREVIATED|ABS|ABSTRACT|ACCEPT|ACCEPTING|ACCESSPOLICY|ACCORDING|ACOS|ACTIVATION|ACTUAL|ADD|ADD-CORRESPONDING|ADJACENT|AFTER|ALIAS|ALIASES|ALIGN|ALL|ALLOCATE|ALPHA|ANALYSIS|ANALYZER|AND|ANY|APPEND|APPENDAGE|APPENDING|APPLICATION|ARCHIVE|AREA|ARITHMETIC|AS|ASCENDING|ASIN|ASPECT|ASSERT|ASSIGN|ASSIGNED|ASSIGNING|ASSOCIATION|ASYNCHRONOUS|AT|ATAN|ATTRIBUTES|AUTHORITY|AUTHORITY-CHECK|AVG|BACK|BACKGROUND|BACKUP|BACKWARD|BADI|BASE|BEFORE|BEGIN|BETWEEN|BIG|BINARY|BINDING|BIT|BIT-AND|BIT-NOT|BIT-OR|BIT-XOR|BLACK|BLANK|BLANKS|BLOB|BLOCK|BLOCKS|BLUE|BOUND|BOUNDARIES|BOUNDS|BOXED|BREAK-POINT|BT|BUFFER|BY|BYPASSING|BYTE|BYTE-CA|BYTE-CN|BYTE-CO|BYTE-CS|BYTE-NA|BYTE-NS|BYTE-ORDER|C|CA|CALL|CALLING|CASE|CAST|CASTING|CATCH|CEIL|CENTER|CENTERED|CHAIN|CHAIN-INPUT|CHAIN-REQUEST|CHANGE|CHANGING|CHANNELS|CHAR-TO-HEX|CHARACTER|CHARLEN|CHECK|CHECKBOX|CIRCULAR|CI_|CLASS|CLASS-CODING|CLASS-DATA|CLASS-EVENTS|CLASS-METHODS|CLASS-POOL|CLEANUP|CLEAR|CLIENT|CLOB|CLOCK|CLOSE|CN|CNT|CO|COALESCE|CODE|CODING|COLLECT|COLOR|COLUMN|COLUMNS|COL_BACKGROUND|COL_GROUP|COL_HEADING|COL_KEY|COL_NEGATIVE|COL_NORMAL|COL_POSITIVE|COL_TOTAL|COMMENT|COMMENTS|COMMIT|COMMON|COMMUNICATION|COMPARING|COMPONENT|COMPONENTS|COMPRESSION|COMPUTE|CONCAT|CONCATENATE|COND|CONDENSE|CONDITION|CONNECT|CONNECTION|CONSTANTS|CONTEXT|CONTEXTS|CONTINUE|CONTROL|CONTROLS|CONV|CONVERSION|CONVERT|COPIES|COPY|CORRESPONDING|COS|COSH|COUNT|COUNTRY|COVER|CP|CPI|CREATE|CREATING|CRITICAL|CS|CURRENCY|CURRENCY_CONVERSION|CURRENT|CURSOR|CURSOR-SELECTION|CUSTOMER|CUSTOMER-FUNCTION|DANGEROUS|DATA|DATABASE|DATAINFO|DATASET|DATE|DAYLIGHT|DBMAXLEN|DD\/MM\/YY|DD\/MM\/YYYY|DDMMYY|DEALLOCATE|DECIMALS|DECIMAL_SHIFT|DECLARATIONS|DEEP|DEFAULT|DEFERRED|DEFINE|DEFINING|DEFINITION|DELETE|DELETING|DEMAND|DEPARTMENT|DESCENDING|DESCRIBE|DESTINATION|DETAIL|DIALOG|DIRECTORY|DISCONNECT|DISPLAY|DISPLAY-MODE|DISTANCE|DISTINCT|DIV|DIVIDE|DIVIDE-CORRESPONDING|DIVISION|DO|DUMMY|DUPLICATE|DUPLICATES|DURATION|DURING|DYNAMIC|DYNPRO|E|EACH|EDIT|EDITOR-CALL|ELSE|ELSEIF|EMPTY|ENABLED|ENABLING|ENCODING|END|END-ENHANCEMENT-SECTION|END-LINES|END-OF-DEFINITION|END-OF-FILE|END-OF-PAGE|END-OF-SELECTION|ENDAT|ENDCASE|ENDCATCH|ENDCHAIN|ENDCLASS|ENDDO|ENDENHANCEMENT|ENDEXEC|ENDFOR|ENDFORM|ENDFUNCTION|ENDIAN|ENDIF|ENDING|ENDINTERFACE|ENDLOOP|ENDMETHOD|ENDMODULE|ENDON|ENDPROVIDE|ENDSELECT|ENDTRY|ENDWHILE|ENGINEERING|ENHANCEMENT|ENHANCEMENT-POINT|ENHANCEMENT-SECTION|ENHANCEMENTS|ENTRIES|ENTRY|ENVIRONMENT|EQ|EQUAL|EQUIV|ERRORMESSAGE|ERRORS|ESCAPE|ESCAPING|EVENT|EVENTS|EXACT|EXCEPT|EXCEPTION|EXCEPTION-TABLE|EXCEPTIONS|EXCLUDE|EXCLUDING|EXEC|EXECUTE|EXISTS|EXIT|EXIT-COMMAND|EXP|EXPAND|EXPANDING|EXPIRATION|EXPLICIT|EXPONENT|EXPORT|EXPORTING|EXTEND|EXTENDED|EXTENSION|EXTRACT|FAIL|FETCH|FIELD|FIELD-GROUPS|FIELD-SYMBOL|FIELD-SYMBOLS|FIELDS|FILE|FILTER|FILTER-TABLE|FILTERS|FINAL|FIND|FIRST|FIRST-LINE|FIXED-POINT|FKEQ|FKGE|FLOOR|FLUSH|FONT|FOR|FORM|FORMAT|FORWARD|FOUND|FRAC|FRAME|FRAMES|FREE|FRIENDS|FROM|FUNCTION|FUNCTION-POOL|FUNCTIONALITY|FURTHER|GAPS|GE|GENERATE|GET|GIVING|GKEQ|GKGE|GLOBAL|GRANT|GREATER|GREEN|GROUP|GROUPS|GT|HANDLE|HANDLER|HARMLESS|HASHED|HAVING|HDB|HEAD-LINES|HEADER|HEADERS|HEADING|HELP-ID|HELP-REQUEST|HIDE|HIGH|HINT|HOLD|HOTSPOT|I|ICON|ID|IDENTIFICATION|IDENTIFIER|IDS|IF|IGNORE|IGNORING|IMMEDIATELY|IMPLEMENTATION|IMPLEMENTATIONS|IMPLEMENTED|IMPLICIT|IMPORT|IMPORTING|IN|INACTIVE|INCL|INCLUDE|INCLUDES|INCLUDING|INCREMENT|INDEX|INDEX-LINE|INFOTYPES|INHERITING|INIT|INITIAL|INITIALIZATION|INNER|INOUT|INPUT|INSERT|INSTANCES|INTENSIFIED|INTERFACE|INTERFACE-POOL|INTERFACES|INTERNAL|INTERVALS|INTO|INVERSE|INVERTED-DATE|IS|ISO|ITERATOR|ITNO|JOB|JOIN|KEEP|KEEPING|KERNEL|KEY|KEYS|KEYWORDS|KIND|LANGUAGE|LAST|LATE|LAYOUT|LE|LEADING|LEAVE|LEFT|LEFT-JUSTIFIED|LEFTPLUS|LEFTSPACE|LEGACY|LENGTH|LESS|LET|LEVEL|LEVELS|LIKE|LINE|LINE-COUNT|LINE-SELECTION|LINE-SIZE|LINEFEED|LINES|LIST|LIST-PROCESSING|LISTBOX|LITTLE|LLANG|LOAD|LOAD-OF-PROGRAM|LOB|LOCAL|LOCALE|LOCATOR|LOG|LOG-POINT|LOG10|LOGFILE|LOGICAL|LONG|LOOP|LOW|LOWER|LPAD|LPI|LT|M|MAIL|MAIN|MAJOR-ID|MAPPING|MARGIN|MARK|MASK|MATCH|MATCHCODE|MAX|MAXIMUM|MEDIUM|MEMBERS|MEMORY|MESH|MESSAGE|MESSAGE-ID|MESSAGES|MESSAGING|METHOD|METHODS|MIN|MINIMUM|MINOR-ID|MM\/DD\/YY|MM\/DD\/YYYY|MMDDYY|MOD|MODE|MODIF|MODIFIER|MODIFY|MODULE|MOVE|MOVE-CORRESPONDING|MULTIPLY|MULTIPLY-CORRESPONDING|NA|NAME|NAMETAB|NATIVE|NB|NE|NESTED|NESTING|NEW|NEW-LINE|NEW-PAGE|NEW-SECTION|NEXT|NO|NO-DISPLAY|NO-EXTENSION|NO-GAP|NO-GAPS|NO-GROUPING|NO-HEADING|NO-SCROLLING|NO-SIGN|NO-TITLE|NO-TOPOFPAGE|NO-ZERO|NODE|NODES|NON-UNICODE|NON-UNIQUE|NOT|NP|NS|NULL|NUMBER|NUMOFCHAR|O|OBJECT|OBJECTS|OBLIGATORY|OCCURRENCE|OCCURRENCES|OCCURS|OF|OFF|OFFSET|OLE|ON|ONLY|OPEN|OPTION|OPTIONAL|OPTIONS|OR|ORDER|OTHER|OTHERS|OUT|OUTER|OUTPUT|OUTPUT-LENGTH|OVERFLOW|OVERLAY|PACK|PACKAGE|PAD|PADDING|PAGE|PAGES|PARAMETER|PARAMETER-TABLE|PARAMETERS|PART|PARTIALLY|PATTERN|PERCENTAGE|PERFORM|PERFORMING|PERSON|PF|PF-STATUS|PINK|PLACES|POOL|POSITION|POS_HIGH|POS_LOW|PRAGMAS|PRECOMPILED|PREFERRED|PRESERVING|PRIMARY|PRINT|PRINT-CONTROL|PRIORITY|PRIVATE|PROCEDURE|PROCESS|PROGRAM|PROPERTY|PROTECTED|PROVIDE|PUBLIC|PUSHBUTTON|PUT|QUEUE-ONLY|QUICKINFO|RADIOBUTTON|RAISE|RAISING|RANGE|RANGES|RAW|READ|READ-ONLY|READER|RECEIVE|RECEIVED|RECEIVER|RECEIVING|RED|REDEFINITION|REDUCE|REDUCED|REF|REFERENCE|REFRESH|REGEX|REJECT|REMOTE|RENAMING|REPLACE|REPLACEMENT|REPLACING|REPORT|REQUEST|REQUESTED|RESERVE|RESET|RESOLUTION|RESPECTING|RESPONSIBLE|RESULT|RESULTS|RESUMABLE|RESUME|RETRY|RETURN|RETURNCODE|RETURNING|RIGHT|RIGHT-JUSTIFIED|RIGHTPLUS|RIGHTSPACE|RISK|RMC_COMMUNICATION_FAILURE|RMC_INVALID_STATUS|RMC_SYSTEM_FAILURE|ROLE|ROLLBACK|ROUND|ROWS|RTTI|RUN|SAP|SAP-SPOOL|SAVING|SCALE_PRESERVING|SCALE_PRESERVING_SCIENTIFIC|SCAN|SCIENTIFIC|SCIENTIFIC_WITH_LEADING_ZERO|SCREEN|SCROLL|SCROLL-BOUNDARY|SCROLLING|SEARCH|SECONDARY|SECONDS|SECTION|SELECT|SELECT-OPTIONS|SELECTION|SELECTION-SCREEN|SELECTION-SET|SELECTION-SETS|SELECTION-TABLE|SELECTIONS|SELECTOR|SEND|SEPARATE|SEPARATED|SET|SHARED|SHIFT|SHORT|SHORTDUMP-ID|SIGN|SIGN_AS_POSTFIX|SIMPLE|SIN|SINGLE|SINH|SIZE|SKIP|SKIPPING|SMART|SOME|SORT|SORTABLE|SORTED|SOURCE|SPACE|SPECIFIED|SPLIT|SPOOL|SPOTS|SQL|SQLSCRIPT|SQRT|STABLE|STAMP|STANDARD|START-OF-SELECTION|STARTING|STATE|STATEMENT|STATEMENTS|STATIC|STATICS|STATUSINFO|STEP-LOOP|STOP|STRLEN|STRUCTURE|STRUCTURES|STYLE|SUBKEY|SUBMATCHES|SUBMIT|SUBROUTINE|SUBSCREEN|SUBSTRING|SUBTRACT|SUBTRACT-CORRESPONDING|SUFFIX|SUM|SUMMARY|SUMMING|SUPPLIED|SUPPLY|SUPPRESS|SWITCH|SWITCHSTATES|SYMBOL|SYNCPOINTS|SYNTAX|SYNTAX-CHECK|SYNTAX-TRACE|SYSTEM-CALL|SYSTEM-EXCEPTIONS|SYSTEM-EXIT|TAB|TABBED|TABLE|TABLES|TABLEVIEW|TABSTRIP|TAN|TANH|TARGET|TASK|TASKS|TEST|TESTING|TEXT|TEXTPOOL|THEN|THROW|TIME|TIMES|TIMESTAMP|TIMEZONE|TITLE|TITLE-LINES|TITLEBAR|TO|TOKENIZATION|TOKENS|TOP-LINES|TOP-OF-PAGE|TRACE-FILE|TRACE-TABLE|TRAILING|TRANSACTION|TRANSFER|TRANSFORMATION|TRANSLATE|TRANSPORTING|TRMAC|TRUNC|TRUNCATE|TRUNCATION|TRY|TYPE|TYPE-POOL|TYPE-POOLS|TYPES|ULINE|UNASSIGN|UNDER|UNICODE|UNION|UNIQUE|UNIT|UNIT_CONVERSION|UNIX|UNPACK|UNTIL|UNWIND|UP|UPDATE|UPPER|USER|USER-COMMAND|USING|UTF-8|VALID|VALUE|VALUE-REQUEST|VALUES|VARY|VARYING|VERIFICATION-MESSAGE|VERSION|VIA|VIEW|VISIBLE|WAIT|WARNING|WHEN|WHENEVER|WHERE|WHILE|WIDTH|WINDOW|WINDOWS|WITH|WITH-HEADING|WITH-TITLE|WITHOUT|WORD|WORK|WRITE|WRITER|X|XML|XOR|XSD|XSTRLEN|YELLOW|YES|YYMMDD|Z|ZERO|ZONE)(?![\w-])/i,lookbehind:!0},number:/\b\d+\b/,operator:{pattern:/(\s)(?:\*\*?|<[=>]?|>=?|\?=|[-+\/=])(?=\s)/,lookbehind:!0},"string-operator":{pattern:/(\s)&&?(?=\s)/,lookbehind:!0,alias:"keyword"},"token-operator":[{pattern:/(\w)(?:->?|=>|[~|{}])(?=\w)/,lookbehind:!0,alias:"punctuation"},{pattern:/[|{}]/,alias:"punctuation"}],punctuation:/[,.:()]/}; \ No newline at end of file diff --git a/components/prism-abnf.js b/components/prism-abnf.js deleted file mode 100644 index 4b8fcab795..0000000000 --- a/components/prism-abnf.js +++ /dev/null @@ -1,54 +0,0 @@ -(function (Prism) { - - var coreRules = '(?:ALPHA|BIT|CHAR|CR|CRLF|CTL|DIGIT|DQUOTE|HEXDIG|HTAB|LF|LWSP|OCTET|SP|VCHAR|WSP)'; - - Prism.languages.abnf = { - 'comment': /;.*/, - 'string': { - pattern: /(?:%[is])?"[^"\n\r]*"/, - greedy: true, - inside: { - 'punctuation': /^%[is]/ - } - }, - 'range': { - pattern: /%(?:b[01]+-[01]+|d\d+-\d+|x[A-F\d]+-[A-F\d]+)/i, - alias: 'number' - }, - 'terminal': { - pattern: /%(?:b[01]+(?:\.[01]+)*|d\d+(?:\.\d+)*|x[A-F\d]+(?:\.[A-F\d]+)*)/i, - alias: 'number' - }, - 'repetition': { - pattern: /(^|[^\w-])(?:\d*\*\d*|\d+)/, - lookbehind: true, - alias: 'operator' - }, - 'definition': { - pattern: /(^[ \t]*)(?:[a-z][\w-]*|<[^<>\r\n]*>)(?=\s*=)/m, - lookbehind: true, - alias: 'keyword', - inside: { - 'punctuation': /<|>/ - } - }, - 'core-rule': { - pattern: RegExp('(?:(^|[^<\\w-])' + coreRules + '|<' + coreRules + '>)(?![\\w-])', 'i'), - lookbehind: true, - alias: ['rule', 'constant'], - inside: { - 'punctuation': /<|>/ - } - }, - 'rule': { - pattern: /(^|[^<\w-])[a-z][\w-]*|<[^<>\r\n]*>/i, - lookbehind: true, - inside: { - 'punctuation': /<|>/ - } - }, - 'operator': /=\/?|\//, - 'punctuation': /[()\[\]]/ - }; - -}(Prism)); diff --git a/components/prism-abnf.min.js b/components/prism-abnf.min.js deleted file mode 100644 index a57731024c..0000000000 --- a/components/prism-abnf.min.js +++ /dev/null @@ -1 +0,0 @@ -!function(n){var i="(?:ALPHA|BIT|CHAR|CR|CRLF|CTL|DIGIT|DQUOTE|HEXDIG|HTAB|LF|LWSP|OCTET|SP|VCHAR|WSP)";n.languages.abnf={comment:/;.*/,string:{pattern:/(?:%[is])?"[^"\n\r]*"/,greedy:!0,inside:{punctuation:/^%[is]/}},range:{pattern:/%(?:b[01]+-[01]+|d\d+-\d+|x[A-F\d]+-[A-F\d]+)/i,alias:"number"},terminal:{pattern:/%(?:b[01]+(?:\.[01]+)*|d\d+(?:\.\d+)*|x[A-F\d]+(?:\.[A-F\d]+)*)/i,alias:"number"},repetition:{pattern:/(^|[^\w-])(?:\d*\*\d*|\d+)/,lookbehind:!0,alias:"operator"},definition:{pattern:/(^[ \t]*)(?:[a-z][\w-]*|<[^<>\r\n]*>)(?=\s*=)/m,lookbehind:!0,alias:"keyword",inside:{punctuation:/<|>/}},"core-rule":{pattern:RegExp("(?:(^|[^<\\w-])"+i+"|<"+i+">)(?![\\w-])","i"),lookbehind:!0,alias:["rule","constant"],inside:{punctuation:/<|>/}},rule:{pattern:/(^|[^<\w-])[a-z][\w-]*|<[^<>\r\n]*>/i,lookbehind:!0,inside:{punctuation:/<|>/}},operator:/=\/?|\//,punctuation:/[()\[\]]/}}(Prism); \ No newline at end of file diff --git a/components/prism-actionscript.js b/components/prism-actionscript.js deleted file mode 100644 index 72a4d232be..0000000000 --- a/components/prism-actionscript.js +++ /dev/null @@ -1,19 +0,0 @@ -Prism.languages.actionscript = Prism.languages.extend('javascript', { - 'keyword': /\b(?:as|break|case|catch|class|const|default|delete|do|dynamic|each|else|extends|final|finally|for|function|get|if|implements|import|in|include|instanceof|interface|internal|is|namespace|native|new|null|override|package|private|protected|public|return|set|static|super|switch|this|throw|try|typeof|use|var|void|while|with)\b/, - 'operator': /\+\+|--|(?:[+\-*\/%^]|&&?|\|\|?|<>?>?|[!=]=?)=?|[~?@]/ -}); -Prism.languages.actionscript['class-name'].alias = 'function'; - -// doesn't work with AS because AS is too complex -delete Prism.languages.actionscript['parameter']; -delete Prism.languages.actionscript['literal-property']; - -if (Prism.languages.markup) { - Prism.languages.insertBefore('actionscript', 'string', { - 'xml': { - pattern: /(^|[^.])<\/?\w+(?:\s+[^\s>\/=]+=("|')(?:\\[\s\S]|(?!\2)[^\\])*\2)*\s*\/?>/, - lookbehind: true, - inside: Prism.languages.markup - } - }); -} diff --git a/components/prism-actionscript.min.js b/components/prism-actionscript.min.js deleted file mode 100644 index 30844f1fa8..0000000000 --- a/components/prism-actionscript.min.js +++ /dev/null @@ -1 +0,0 @@ -Prism.languages.actionscript=Prism.languages.extend("javascript",{keyword:/\b(?:as|break|case|catch|class|const|default|delete|do|dynamic|each|else|extends|final|finally|for|function|get|if|implements|import|in|include|instanceof|interface|internal|is|namespace|native|new|null|override|package|private|protected|public|return|set|static|super|switch|this|throw|try|typeof|use|var|void|while|with)\b/,operator:/\+\+|--|(?:[+\-*\/%^]|&&?|\|\|?|<>?>?|[!=]=?)=?|[~?@]/}),Prism.languages.actionscript["class-name"].alias="function",delete Prism.languages.actionscript.parameter,delete Prism.languages.actionscript["literal-property"],Prism.languages.markup&&Prism.languages.insertBefore("actionscript","string",{xml:{pattern:/(^|[^.])<\/?\w+(?:\s+[^\s>\/=]+=("|')(?:\\[\s\S]|(?!\2)[^\\])*\2)*\s*\/?>/,lookbehind:!0,inside:Prism.languages.markup}}); \ No newline at end of file diff --git a/components/prism-ada.js b/components/prism-ada.js deleted file mode 100644 index a537f39b0a..0000000000 --- a/components/prism-ada.js +++ /dev/null @@ -1,22 +0,0 @@ -Prism.languages.ada = { - 'comment': /--.*/, - 'string': /"(?:""|[^"\r\f\n])*"/, - 'number': [ - { - pattern: /\b\d(?:_?\d)*#[\dA-F](?:_?[\dA-F])*(?:\.[\dA-F](?:_?[\dA-F])*)?#(?:E[+-]?\d(?:_?\d)*)?/i - }, - { - pattern: /\b\d(?:_?\d)*(?:\.\d(?:_?\d)*)?(?:E[+-]?\d(?:_?\d)*)?\b/i - } - ], - 'attribute': { - pattern: /\b'\w+/, - alias: 'attr-name' - }, - 'keyword': /\b(?:abort|abs|abstract|accept|access|aliased|all|and|array|at|begin|body|case|constant|declare|delay|delta|digits|do|else|elsif|end|entry|exception|exit|for|function|generic|goto|if|in|interface|is|limited|loop|mod|new|not|null|of|or|others|out|overriding|package|pragma|private|procedure|protected|raise|range|record|rem|renames|requeue|return|reverse|select|separate|some|subtype|synchronized|tagged|task|terminate|then|type|until|use|when|while|with|xor)\b/i, - 'boolean': /\b(?:false|true)\b/i, - 'operator': /<[=>]?|>=?|=>?|:=|\/=?|\*\*?|[&+-]/, - 'punctuation': /\.\.?|[,;():]/, - 'char': /'.'/, - 'variable': /\b[a-z](?:\w)*\b/i -}; diff --git a/components/prism-ada.min.js b/components/prism-ada.min.js deleted file mode 100644 index 57de170363..0000000000 --- a/components/prism-ada.min.js +++ /dev/null @@ -1 +0,0 @@ -Prism.languages.ada={comment:/--.*/,string:/"(?:""|[^"\r\f\n])*"/,number:[{pattern:/\b\d(?:_?\d)*#[\dA-F](?:_?[\dA-F])*(?:\.[\dA-F](?:_?[\dA-F])*)?#(?:E[+-]?\d(?:_?\d)*)?/i},{pattern:/\b\d(?:_?\d)*(?:\.\d(?:_?\d)*)?(?:E[+-]?\d(?:_?\d)*)?\b/i}],attribute:{pattern:/\b'\w+/,alias:"attr-name"},keyword:/\b(?:abort|abs|abstract|accept|access|aliased|all|and|array|at|begin|body|case|constant|declare|delay|delta|digits|do|else|elsif|end|entry|exception|exit|for|function|generic|goto|if|in|interface|is|limited|loop|mod|new|not|null|of|or|others|out|overriding|package|pragma|private|procedure|protected|raise|range|record|rem|renames|requeue|return|reverse|select|separate|some|subtype|synchronized|tagged|task|terminate|then|type|until|use|when|while|with|xor)\b/i,boolean:/\b(?:false|true)\b/i,operator:/<[=>]?|>=?|=>?|:=|\/=?|\*\*?|[&+-]/,punctuation:/\.\.?|[,;():]/,char:/'.'/,variable:/\b[a-z](?:\w)*\b/i}; \ No newline at end of file diff --git a/components/prism-agda.js b/components/prism-agda.js deleted file mode 100644 index a807d1ada6..0000000000 --- a/components/prism-agda.js +++ /dev/null @@ -1,24 +0,0 @@ -(function (Prism) { - - Prism.languages.agda = { - 'comment': /\{-[\s\S]*?(?:-\}|$)|--.*/, - 'string': { - pattern: /"(?:\\(?:\r\n|[\s\S])|[^\\\r\n"])*"/, - greedy: true, - }, - 'punctuation': /[(){}⦃⦄.;@]/, - 'class-name': { - pattern: /((?:data|record) +)\S+/, - lookbehind: true, - }, - 'function': { - pattern: /(^[ \t]*)(?!\s)[^:\r\n]+(?=:)/m, - lookbehind: true, - }, - 'operator': { - pattern: /(^\s*|\s)(?:[=|:∀→λ\\?_]|->)(?=\s)/, - lookbehind: true, - }, - 'keyword': /\b(?:Set|abstract|constructor|data|eta-equality|field|forall|hiding|import|in|inductive|infix|infixl|infixr|instance|let|macro|module|mutual|no-eta-equality|open|overlap|pattern|postulate|primitive|private|public|quote|quoteContext|quoteGoal|quoteTerm|record|renaming|rewrite|syntax|tactic|unquote|unquoteDecl|unquoteDef|using|variable|where|with)\b/, - }; -}(Prism)); diff --git a/components/prism-agda.min.js b/components/prism-agda.min.js deleted file mode 100644 index 62f8d1ca23..0000000000 --- a/components/prism-agda.min.js +++ /dev/null @@ -1 +0,0 @@ -!function(t){t.languages.agda={comment:/\{-[\s\S]*?(?:-\}|$)|--.*/,string:{pattern:/"(?:\\(?:\r\n|[\s\S])|[^\\\r\n"])*"/,greedy:!0},punctuation:/[(){}⦃⦄.;@]/,"class-name":{pattern:/((?:data|record) +)\S+/,lookbehind:!0},function:{pattern:/(^[ \t]*)(?!\s)[^:\r\n]+(?=:)/m,lookbehind:!0},operator:{pattern:/(^\s*|\s)(?:[=|:∀→λ\\?_]|->)(?=\s)/,lookbehind:!0},keyword:/\b(?:Set|abstract|constructor|data|eta-equality|field|forall|hiding|import|in|inductive|infix|infixl|infixr|instance|let|macro|module|mutual|no-eta-equality|open|overlap|pattern|postulate|primitive|private|public|quote|quoteContext|quoteGoal|quoteTerm|record|renaming|rewrite|syntax|tactic|unquote|unquoteDecl|unquoteDef|using|variable|where|with)\b/}}(Prism); \ No newline at end of file diff --git a/components/prism-al.js b/components/prism-al.js deleted file mode 100644 index 77ebcc4316..0000000000 --- a/components/prism-al.js +++ /dev/null @@ -1,25 +0,0 @@ -// based on https://github.com/microsoft/AL/blob/master/grammar/alsyntax.tmlanguage - -Prism.languages.al = { - 'comment': /\/\/.*|\/\*[\s\S]*?\*\//, - 'string': { - pattern: /'(?:''|[^'\r\n])*'(?!')|"(?:""|[^"\r\n])*"(?!")/, - greedy: true - }, - 'function': { - pattern: /(\b(?:event|procedure|trigger)\s+|(?:^|[^.])\.\s*)[a-z_]\w*(?=\s*\()/i, - lookbehind: true - }, - 'keyword': [ - // keywords - /\b(?:array|asserterror|begin|break|case|do|downto|else|end|event|exit|for|foreach|function|if|implements|in|indataset|interface|internal|local|of|procedure|program|protected|repeat|runonclient|securityfiltering|suppressdispose|temporary|then|to|trigger|until|var|while|with|withevents)\b/i, - // objects and metadata that are used like keywords - /\b(?:action|actions|addafter|addbefore|addfirst|addlast|area|assembly|chartpart|codeunit|column|controladdin|cuegroup|customizes|dataitem|dataset|dotnet|elements|enum|enumextension|extends|field|fieldattribute|fieldelement|fieldgroup|fieldgroups|fields|filter|fixed|grid|group|key|keys|label|labels|layout|modify|moveafter|movebefore|movefirst|movelast|page|pagecustomization|pageextension|part|profile|query|repeater|report|requestpage|schema|separator|systempart|table|tableelement|tableextension|textattribute|textelement|type|usercontrol|value|xmlport)\b/i - ], - 'number': /\b(?:0x[\da-f]+|(?:\d+(?:\.\d*)?|\.\d+)(?:e[+-]?\d+)?)(?:F|LL?|U(?:LL?)?)?\b/i, - 'boolean': /\b(?:false|true)\b/i, - 'variable': /\b(?:Curr(?:FieldNo|Page|Report)|x?Rec|RequestOptionsPage)\b/, - 'class-name': /\b(?:automation|biginteger|bigtext|blob|boolean|byte|char|clienttype|code|completiontriggererrorlevel|connectiontype|database|dataclassification|datascope|date|dateformula|datetime|decimal|defaultlayout|dialog|dictionary|dotnetassembly|dotnettypedeclaration|duration|errorinfo|errortype|executioncontext|executionmode|fieldclass|fieldref|fieldtype|file|filterpagebuilder|guid|httpclient|httpcontent|httpheaders|httprequestmessage|httpresponsemessage|instream|integer|joker|jsonarray|jsonobject|jsontoken|jsonvalue|keyref|list|moduledependencyinfo|moduleinfo|none|notification|notificationscope|objecttype|option|outstream|pageresult|record|recordid|recordref|reportformat|securityfilter|sessionsettings|tableconnectiontype|tablefilter|testaction|testfield|testfilterfield|testpage|testpermissions|testrequestpage|text|textbuilder|textconst|textencoding|time|transactionmodel|transactiontype|variant|verbosity|version|view|views|webserviceactioncontext|webserviceactionresultcode|xmlattribute|xmlattributecollection|xmlcdata|xmlcomment|xmldeclaration|xmldocument|xmldocumenttype|xmlelement|xmlnamespacemanager|xmlnametable|xmlnode|xmlnodelist|xmlprocessinginstruction|xmlreadoptions|xmltext|xmlwriteoptions)\b/i, - 'operator': /\.\.|:[=:]|[-+*/]=?|<>|[<>]=?|=|\b(?:and|div|mod|not|or|xor)\b/i, - 'punctuation': /[()\[\]{}:.;,]/ -}; diff --git a/components/prism-al.min.js b/components/prism-al.min.js deleted file mode 100644 index 9651f880f0..0000000000 --- a/components/prism-al.min.js +++ /dev/null @@ -1 +0,0 @@ -Prism.languages.al={comment:/\/\/.*|\/\*[\s\S]*?\*\//,string:{pattern:/'(?:''|[^'\r\n])*'(?!')|"(?:""|[^"\r\n])*"(?!")/,greedy:!0},function:{pattern:/(\b(?:event|procedure|trigger)\s+|(?:^|[^.])\.\s*)[a-z_]\w*(?=\s*\()/i,lookbehind:!0},keyword:[/\b(?:array|asserterror|begin|break|case|do|downto|else|end|event|exit|for|foreach|function|if|implements|in|indataset|interface|internal|local|of|procedure|program|protected|repeat|runonclient|securityfiltering|suppressdispose|temporary|then|to|trigger|until|var|while|with|withevents)\b/i,/\b(?:action|actions|addafter|addbefore|addfirst|addlast|area|assembly|chartpart|codeunit|column|controladdin|cuegroup|customizes|dataitem|dataset|dotnet|elements|enum|enumextension|extends|field|fieldattribute|fieldelement|fieldgroup|fieldgroups|fields|filter|fixed|grid|group|key|keys|label|labels|layout|modify|moveafter|movebefore|movefirst|movelast|page|pagecustomization|pageextension|part|profile|query|repeater|report|requestpage|schema|separator|systempart|table|tableelement|tableextension|textattribute|textelement|type|usercontrol|value|xmlport)\b/i],number:/\b(?:0x[\da-f]+|(?:\d+(?:\.\d*)?|\.\d+)(?:e[+-]?\d+)?)(?:F|LL?|U(?:LL?)?)?\b/i,boolean:/\b(?:false|true)\b/i,variable:/\b(?:Curr(?:FieldNo|Page|Report)|x?Rec|RequestOptionsPage)\b/,"class-name":/\b(?:automation|biginteger|bigtext|blob|boolean|byte|char|clienttype|code|completiontriggererrorlevel|connectiontype|database|dataclassification|datascope|date|dateformula|datetime|decimal|defaultlayout|dialog|dictionary|dotnetassembly|dotnettypedeclaration|duration|errorinfo|errortype|executioncontext|executionmode|fieldclass|fieldref|fieldtype|file|filterpagebuilder|guid|httpclient|httpcontent|httpheaders|httprequestmessage|httpresponsemessage|instream|integer|joker|jsonarray|jsonobject|jsontoken|jsonvalue|keyref|list|moduledependencyinfo|moduleinfo|none|notification|notificationscope|objecttype|option|outstream|pageresult|record|recordid|recordref|reportformat|securityfilter|sessionsettings|tableconnectiontype|tablefilter|testaction|testfield|testfilterfield|testpage|testpermissions|testrequestpage|text|textbuilder|textconst|textencoding|time|transactionmodel|transactiontype|variant|verbosity|version|view|views|webserviceactioncontext|webserviceactionresultcode|xmlattribute|xmlattributecollection|xmlcdata|xmlcomment|xmldeclaration|xmldocument|xmldocumenttype|xmlelement|xmlnamespacemanager|xmlnametable|xmlnode|xmlnodelist|xmlprocessinginstruction|xmlreadoptions|xmltext|xmlwriteoptions)\b/i,operator:/\.\.|:[=:]|[-+*/]=?|<>|[<>]=?|=|\b(?:and|div|mod|not|or|xor)\b/i,punctuation:/[()\[\]{}:.;,]/}; \ No newline at end of file diff --git a/components/prism-antlr4.js b/components/prism-antlr4.js deleted file mode 100644 index d5c446b1f3..0000000000 --- a/components/prism-antlr4.js +++ /dev/null @@ -1,65 +0,0 @@ -Prism.languages.antlr4 = { - 'comment': /\/\/.*|\/\*[\s\S]*?(?:\*\/|$)/, - 'string': { - pattern: /'(?:\\.|[^\\'\r\n])*'/, - greedy: true - }, - 'character-class': { - pattern: /\[(?:\\.|[^\\\]\r\n])*\]/, - greedy: true, - alias: 'regex', - inside: { - 'range': { - pattern: /([^[]|(?:^|[^\\])(?:\\\\)*\\\[)-(?!\])/, - lookbehind: true, - alias: 'punctuation' - }, - 'escape': /\\(?:u(?:[a-fA-F\d]{4}|\{[a-fA-F\d]+\})|[pP]\{[=\w-]+\}|[^\r\nupP])/, - 'punctuation': /[\[\]]/ - } - }, - 'action': { - pattern: /\{(?:[^{}]|\{(?:[^{}]|\{(?:[^{}]|\{[^{}]*\})*\})*\})*\}/, - greedy: true, - inside: { - 'content': { - // this might be C, C++, Python, Java, C#, or any other language ANTLR4 compiles to - pattern: /(\{)[\s\S]+(?=\})/, - lookbehind: true - }, - 'punctuation': /[{}]/ - } - }, - 'command': { - pattern: /(->\s*(?!\s))(?:\s*(?:,\s*)?\b[a-z]\w*(?:\s*\([^()\r\n]*\))?)+(?=\s*;)/i, - lookbehind: true, - inside: { - 'function': /\b\w+(?=\s*(?:[,(]|$))/, - 'punctuation': /[,()]/ - } - }, - 'annotation': { - pattern: /@\w+(?:::\w+)*/, - alias: 'keyword' - }, - 'label': { - pattern: /#[ \t]*\w+/, - alias: 'punctuation' - }, - 'keyword': /\b(?:catch|channels|finally|fragment|grammar|import|lexer|locals|mode|options|parser|returns|throws|tokens)\b/, - 'definition': [ - { - pattern: /\b[a-z]\w*(?=\s*:)/, - alias: ['rule', 'class-name'] - }, - { - pattern: /\b[A-Z]\w*(?=\s*:)/, - alias: ['token', 'constant'] - }, - ], - 'constant': /\b[A-Z][A-Z_]*\b/, - 'operator': /\.\.|->|[|~]|[*+?]\??/, - 'punctuation': /[;:()=]/ -}; - -Prism.languages.g4 = Prism.languages.antlr4; diff --git a/components/prism-antlr4.min.js b/components/prism-antlr4.min.js deleted file mode 100644 index 8bb4bda735..0000000000 --- a/components/prism-antlr4.min.js +++ /dev/null @@ -1 +0,0 @@ -Prism.languages.antlr4={comment:/\/\/.*|\/\*[\s\S]*?(?:\*\/|$)/,string:{pattern:/'(?:\\.|[^\\'\r\n])*'/,greedy:!0},"character-class":{pattern:/\[(?:\\.|[^\\\]\r\n])*\]/,greedy:!0,alias:"regex",inside:{range:{pattern:/([^[]|(?:^|[^\\])(?:\\\\)*\\\[)-(?!\])/,lookbehind:!0,alias:"punctuation"},escape:/\\(?:u(?:[a-fA-F\d]{4}|\{[a-fA-F\d]+\})|[pP]\{[=\w-]+\}|[^\r\nupP])/,punctuation:/[\[\]]/}},action:{pattern:/\{(?:[^{}]|\{(?:[^{}]|\{(?:[^{}]|\{[^{}]*\})*\})*\})*\}/,greedy:!0,inside:{content:{pattern:/(\{)[\s\S]+(?=\})/,lookbehind:!0},punctuation:/[{}]/}},command:{pattern:/(->\s*(?!\s))(?:\s*(?:,\s*)?\b[a-z]\w*(?:\s*\([^()\r\n]*\))?)+(?=\s*;)/i,lookbehind:!0,inside:{function:/\b\w+(?=\s*(?:[,(]|$))/,punctuation:/[,()]/}},annotation:{pattern:/@\w+(?:::\w+)*/,alias:"keyword"},label:{pattern:/#[ \t]*\w+/,alias:"punctuation"},keyword:/\b(?:catch|channels|finally|fragment|grammar|import|lexer|locals|mode|options|parser|returns|throws|tokens)\b/,definition:[{pattern:/\b[a-z]\w*(?=\s*:)/,alias:["rule","class-name"]},{pattern:/\b[A-Z]\w*(?=\s*:)/,alias:["token","constant"]}],constant:/\b[A-Z][A-Z_]*\b/,operator:/\.\.|->|[|~]|[*+?]\??/,punctuation:/[;:()=]/},Prism.languages.g4=Prism.languages.antlr4; \ No newline at end of file diff --git a/components/prism-apacheconf.js b/components/prism-apacheconf.js deleted file mode 100644 index 84aeafaa47..0000000000 --- a/components/prism-apacheconf.js +++ /dev/null @@ -1,47 +0,0 @@ -Prism.languages.apacheconf = { - 'comment': /#.*/, - 'directive-inline': { - pattern: /(^[\t ]*)\b(?:AcceptFilter|AcceptPathInfo|AccessFileName|Action|Add(?:Alt|AltByEncoding|AltByType|Charset|DefaultCharset|Description|Encoding|Handler|Icon|IconByEncoding|IconByType|InputFilter|Language|ModuleInfo|OutputFilter|OutputFilterByType|Type)|Alias|AliasMatch|Allow(?:CONNECT|EncodedSlashes|Methods|Override|OverrideList)?|Anonymous(?:_LogEmail|_MustGiveEmail|_NoUserID|_VerifyEmail)?|AsyncRequestWorkerFactor|Auth(?:BasicAuthoritative|BasicFake|BasicProvider|BasicUseDigestAlgorithm|DBDUserPWQuery|DBDUserRealmQuery|DBMGroupFile|DBMType|DBMUserFile|Digest(?:Algorithm|Domain|NonceLifetime|Provider|Qop|ShmemSize)|Form(?:Authoritative|Body|DisableNoStore|FakeBasicAuth|Location|LoginRequiredLocation|LoginSuccessLocation|LogoutLocation|Method|Mimetype|Password|Provider|SitePassphrase|Size|Username)|GroupFile|LDAP(?:AuthorizePrefix|BindAuthoritative|BindDN|BindPassword|CharsetConfig|CompareAsUser|CompareDNOnServer|DereferenceAliases|GroupAttribute|GroupAttributeIsDN|InitialBindAsUser|InitialBindPattern|MaxSubGroupDepth|RemoteUserAttribute|RemoteUserIsDN|SearchAsUser|SubGroupAttribute|SubGroupClass|Url)|Merging|Name|nCache(?:Context|Enable|ProvideFor|SOCache|Timeout)|nzFcgiCheckAuthnProvider|nzFcgiDefineProvider|Type|UserFile|zDBDLoginToReferer|zDBDQuery|zDBDRedirectQuery|zDBMType|zSendForbiddenOnFailure)|BalancerGrowth|BalancerInherit|BalancerMember|BalancerPersist|BrowserMatch|BrowserMatchNoCase|BufferedLogs|BufferSize|Cache(?:DefaultExpire|DetailHeader|DirLength|DirLevels|Disable|Enable|File|Header|IgnoreCacheControl|IgnoreHeaders|IgnoreNoLastMod|IgnoreQueryString|IgnoreURLSessionIdentifiers|KeyBaseURL|LastModifiedFactor|Lock|LockMaxAge|LockPath|MaxExpire|MaxFileSize|MinExpire|MinFileSize|NegotiatedDocs|QuickHandler|ReadSize|ReadTime|Root|Socache(?:MaxSize|MaxTime|MinTime|ReadSize|ReadTime)?|StaleOnError|StoreExpired|StoreNoStore|StorePrivate)|CGIDScriptTimeout|CGIMapExtension|CharsetDefault|CharsetOptions|CharsetSourceEnc|CheckCaseOnly|CheckSpelling|ChrootDir|ContentDigest|CookieDomain|CookieExpires|CookieName|CookieStyle|CookieTracking|CoreDumpDirectory|CustomLog|Dav|DavDepthInfinity|DavGenericLockDB|DavLockDB|DavMinTimeout|DBDExptime|DBDInitSQL|DBDKeep|DBDMax|DBDMin|DBDParams|DBDPersist|DBDPrepareSQL|DBDriver|DefaultIcon|DefaultLanguage|DefaultRuntimeDir|DefaultType|Define|Deflate(?:BufferSize|CompressionLevel|FilterNote|InflateLimitRequestBody|InflateRatio(?:Burst|Limit)|MemLevel|WindowSize)|Deny|DirectoryCheckHandler|DirectoryIndex|DirectoryIndexRedirect|DirectorySlash|DocumentRoot|DTracePrivileges|DumpIOInput|DumpIOOutput|EnableExceptionHook|EnableMMAP|EnableSendfile|Error|ErrorDocument|ErrorLog|ErrorLogFormat|Example|ExpiresActive|ExpiresByType|ExpiresDefault|ExtendedStatus|ExtFilterDefine|ExtFilterOptions|FallbackResource|FileETag|FilterChain|FilterDeclare|FilterProtocol|FilterProvider|FilterTrace|ForceLanguagePriority|ForceType|ForensicLog|GprofDir|GracefulShutdownTimeout|Group|Header|HeaderName|Heartbeat(?:Address|Listen|MaxServers|Storage)|HostnameLookups|IdentityCheck|IdentityCheckTimeout|ImapBase|ImapDefault|ImapMenu|Include|IncludeOptional|Index(?:HeadInsert|Ignore|IgnoreReset|Options|OrderDefault|StyleSheet)|InputSed|ISAPI(?:AppendLogToErrors|AppendLogToQuery|CacheFile|FakeAsync|LogNotSupported|ReadAheadBuffer)|KeepAlive|KeepAliveTimeout|KeptBodySize|LanguagePriority|LDAP(?:CacheEntries|CacheTTL|ConnectionPoolTTL|ConnectionTimeout|LibraryDebug|OpCacheEntries|OpCacheTTL|ReferralHopLimit|Referrals|Retries|RetryDelay|SharedCacheFile|SharedCacheSize|Timeout|TrustedClientCert|TrustedGlobalCert|TrustedMode|VerifyServerCert)|Limit(?:InternalRecursion|Request(?:Body|Fields|FieldSize|Line)|XMLRequestBody)|Listen|ListenBackLog|LoadFile|LoadModule|LogFormat|LogLevel|LogMessage|LuaAuthzProvider|LuaCodeCache|Lua(?:Hook(?:AccessChecker|AuthChecker|CheckUserID|Fixups|InsertFilter|Log|MapToStorage|TranslateName|TypeChecker)|Inherit|InputFilter|MapHandler|OutputFilter|PackageCPath|PackagePath|QuickHandler|Root|Scope)|Max(?:ConnectionsPerChild|KeepAliveRequests|MemFree|RangeOverlaps|RangeReversals|Ranges|RequestWorkers|SpareServers|SpareThreads|Threads)|MergeTrailers|MetaDir|MetaFiles|MetaSuffix|MimeMagicFile|MinSpareServers|MinSpareThreads|MMapFile|ModemStandard|ModMimeUsePathInfo|MultiviewsMatch|Mutex|NameVirtualHost|NoProxy|NWSSLTrustedCerts|NWSSLUpgradeable|Options|Order|OutputSed|PassEnv|PidFile|PrivilegesMode|Protocol|ProtocolEcho|Proxy(?:AddHeaders|BadHeader|Block|Domain|ErrorOverride|ExpressDBMFile|ExpressDBMType|ExpressEnable|FtpDirCharset|FtpEscapeWildcards|FtpListOnWildcard|HTML(?:BufSize|CharsetOut|DocType|Enable|Events|Extended|Fixups|Interp|Links|Meta|StripComments|URLMap)|IOBufferSize|MaxForwards|Pass(?:Inherit|InterpolateEnv|Match|Reverse|ReverseCookieDomain|ReverseCookiePath)?|PreserveHost|ReceiveBufferSize|Remote|RemoteMatch|Requests|SCGIInternalRedirect|SCGISendfile|Set|SourceAddress|Status|Timeout|Via)|ReadmeName|ReceiveBufferSize|Redirect|RedirectMatch|RedirectPermanent|RedirectTemp|ReflectorHeader|RemoteIP(?:Header|InternalProxy|InternalProxyList|ProxiesHeader|TrustedProxy|TrustedProxyList)|RemoveCharset|RemoveEncoding|RemoveHandler|RemoveInputFilter|RemoveLanguage|RemoveOutputFilter|RemoveType|RequestHeader|RequestReadTimeout|Require|Rewrite(?:Base|Cond|Engine|Map|Options|Rule)|RLimitCPU|RLimitMEM|RLimitNPROC|Satisfy|ScoreBoardFile|Script(?:Alias|AliasMatch|InterpreterSource|Log|LogBuffer|LogLength|Sock)?|SecureListen|SeeRequestTail|SendBufferSize|Server(?:Admin|Alias|Limit|Name|Path|Root|Signature|Tokens)|Session(?:Cookie(?:Name|Name2|Remove)|Crypto(?:Cipher|Driver|Passphrase|PassphraseFile)|DBD(?:CookieName|CookieName2|CookieRemove|DeleteLabel|InsertLabel|PerUser|SelectLabel|UpdateLabel)|Env|Exclude|Header|Include|MaxAge)?|SetEnv|SetEnvIf|SetEnvIfExpr|SetEnvIfNoCase|SetHandler|SetInputFilter|SetOutputFilter|SSIEndTag|SSIErrorMsg|SSIETag|SSILastModified|SSILegacyExprParser|SSIStartTag|SSITimeFormat|SSIUndefinedEcho|SSL(?:CACertificateFile|CACertificatePath|CADNRequestFile|CADNRequestPath|CARevocationCheck|CARevocationFile|CARevocationPath|CertificateChainFile|CertificateFile|CertificateKeyFile|CipherSuite|Compression|CryptoDevice|Engine|FIPS|HonorCipherOrder|InsecureRenegotiation|OCSP(?:DefaultResponder|Enable|OverrideResponder|ResponderTimeout|ResponseMaxAge|ResponseTimeSkew|UseRequestNonce)|OpenSSLConfCmd|Options|PassPhraseDialog|Protocol|Proxy(?:CACertificateFile|CACertificatePath|CARevocation(?:Check|File|Path)|CheckPeer(?:CN|Expire|Name)|CipherSuite|Engine|MachineCertificate(?:ChainFile|File|Path)|Protocol|Verify|VerifyDepth)|RandomSeed|RenegBufferSize|Require|RequireSSL|Session(?:Cache|CacheTimeout|TicketKeyFile|Tickets)|SRPUnknownUserSeed|SRPVerifierFile|Stapling(?:Cache|ErrorCacheTimeout|FakeTryLater|ForceURL|ResponderTimeout|ResponseMaxAge|ResponseTimeSkew|ReturnResponderErrors|StandardCacheTimeout)|StrictSNIVHostCheck|UserName|UseStapling|VerifyClient|VerifyDepth)|StartServers|StartThreads|Substitute|Suexec|SuexecUserGroup|ThreadLimit|ThreadsPerChild|ThreadStackSize|TimeOut|TraceEnable|TransferLog|TypesConfig|UnDefine|UndefMacro|UnsetEnv|Use|UseCanonicalName|UseCanonicalPhysicalPort|User|UserDir|VHostCGIMode|VHostCGIPrivs|VHostGroup|VHostPrivs|VHostSecure|VHostUser|Virtual(?:DocumentRoot|ScriptAlias)(?:IP)?|WatchdogInterval|XBitHack|xml2EncAlias|xml2EncDefault|xml2StartParse)\b/im, - lookbehind: true, - alias: 'property' - }, - 'directive-block': { - pattern: /<\/?\b(?:Auth[nz]ProviderAlias|Directory|DirectoryMatch|Else|ElseIf|Files|FilesMatch|If|IfDefine|IfModule|IfVersion|Limit|LimitExcept|Location|LocationMatch|Macro|Proxy|Require(?:All|Any|None)|VirtualHost)\b.*>/i, - inside: { - 'directive-block': { - pattern: /^<\/?\w+/, - inside: { - 'punctuation': /^<\/?/ - }, - alias: 'tag' - }, - 'directive-block-parameter': { - pattern: /.*[^>]/, - inside: { - 'punctuation': /:/, - 'string': { - pattern: /("|').*\1/, - inside: { - 'variable': /[$%]\{?(?:\w\.?[-+:]?)+\}?/ - } - } - }, - alias: 'attr-value' - }, - 'punctuation': />/ - }, - alias: 'tag' - }, - 'directive-flags': { - pattern: /\[(?:[\w=],?)+\]/, - alias: 'keyword' - }, - 'string': { - pattern: /("|').*\1/, - inside: { - 'variable': /[$%]\{?(?:\w\.?[-+:]?)+\}?/ - } - }, - 'variable': /[$%]\{?(?:\w\.?[-+:]?)+\}?/, - 'regex': /\^?.*\$|\^.*\$?/ -}; diff --git a/components/prism-apacheconf.min.js b/components/prism-apacheconf.min.js deleted file mode 100644 index 8ed203d14a..0000000000 --- a/components/prism-apacheconf.min.js +++ /dev/null @@ -1 +0,0 @@ -Prism.languages.apacheconf={comment:/#.*/,"directive-inline":{pattern:/(^[\t ]*)\b(?:AcceptFilter|AcceptPathInfo|AccessFileName|Action|Add(?:Alt|AltByEncoding|AltByType|Charset|DefaultCharset|Description|Encoding|Handler|Icon|IconByEncoding|IconByType|InputFilter|Language|ModuleInfo|OutputFilter|OutputFilterByType|Type)|Alias|AliasMatch|Allow(?:CONNECT|EncodedSlashes|Methods|Override|OverrideList)?|Anonymous(?:_LogEmail|_MustGiveEmail|_NoUserID|_VerifyEmail)?|AsyncRequestWorkerFactor|Auth(?:BasicAuthoritative|BasicFake|BasicProvider|BasicUseDigestAlgorithm|DBDUserPWQuery|DBDUserRealmQuery|DBMGroupFile|DBMType|DBMUserFile|Digest(?:Algorithm|Domain|NonceLifetime|Provider|Qop|ShmemSize)|Form(?:Authoritative|Body|DisableNoStore|FakeBasicAuth|Location|LoginRequiredLocation|LoginSuccessLocation|LogoutLocation|Method|Mimetype|Password|Provider|SitePassphrase|Size|Username)|GroupFile|LDAP(?:AuthorizePrefix|BindAuthoritative|BindDN|BindPassword|CharsetConfig|CompareAsUser|CompareDNOnServer|DereferenceAliases|GroupAttribute|GroupAttributeIsDN|InitialBindAsUser|InitialBindPattern|MaxSubGroupDepth|RemoteUserAttribute|RemoteUserIsDN|SearchAsUser|SubGroupAttribute|SubGroupClass|Url)|Merging|Name|nCache(?:Context|Enable|ProvideFor|SOCache|Timeout)|nzFcgiCheckAuthnProvider|nzFcgiDefineProvider|Type|UserFile|zDBDLoginToReferer|zDBDQuery|zDBDRedirectQuery|zDBMType|zSendForbiddenOnFailure)|BalancerGrowth|BalancerInherit|BalancerMember|BalancerPersist|BrowserMatch|BrowserMatchNoCase|BufferedLogs|BufferSize|Cache(?:DefaultExpire|DetailHeader|DirLength|DirLevels|Disable|Enable|File|Header|IgnoreCacheControl|IgnoreHeaders|IgnoreNoLastMod|IgnoreQueryString|IgnoreURLSessionIdentifiers|KeyBaseURL|LastModifiedFactor|Lock|LockMaxAge|LockPath|MaxExpire|MaxFileSize|MinExpire|MinFileSize|NegotiatedDocs|QuickHandler|ReadSize|ReadTime|Root|Socache(?:MaxSize|MaxTime|MinTime|ReadSize|ReadTime)?|StaleOnError|StoreExpired|StoreNoStore|StorePrivate)|CGIDScriptTimeout|CGIMapExtension|CharsetDefault|CharsetOptions|CharsetSourceEnc|CheckCaseOnly|CheckSpelling|ChrootDir|ContentDigest|CookieDomain|CookieExpires|CookieName|CookieStyle|CookieTracking|CoreDumpDirectory|CustomLog|Dav|DavDepthInfinity|DavGenericLockDB|DavLockDB|DavMinTimeout|DBDExptime|DBDInitSQL|DBDKeep|DBDMax|DBDMin|DBDParams|DBDPersist|DBDPrepareSQL|DBDriver|DefaultIcon|DefaultLanguage|DefaultRuntimeDir|DefaultType|Define|Deflate(?:BufferSize|CompressionLevel|FilterNote|InflateLimitRequestBody|InflateRatio(?:Burst|Limit)|MemLevel|WindowSize)|Deny|DirectoryCheckHandler|DirectoryIndex|DirectoryIndexRedirect|DirectorySlash|DocumentRoot|DTracePrivileges|DumpIOInput|DumpIOOutput|EnableExceptionHook|EnableMMAP|EnableSendfile|Error|ErrorDocument|ErrorLog|ErrorLogFormat|Example|ExpiresActive|ExpiresByType|ExpiresDefault|ExtendedStatus|ExtFilterDefine|ExtFilterOptions|FallbackResource|FileETag|FilterChain|FilterDeclare|FilterProtocol|FilterProvider|FilterTrace|ForceLanguagePriority|ForceType|ForensicLog|GprofDir|GracefulShutdownTimeout|Group|Header|HeaderName|Heartbeat(?:Address|Listen|MaxServers|Storage)|HostnameLookups|IdentityCheck|IdentityCheckTimeout|ImapBase|ImapDefault|ImapMenu|Include|IncludeOptional|Index(?:HeadInsert|Ignore|IgnoreReset|Options|OrderDefault|StyleSheet)|InputSed|ISAPI(?:AppendLogToErrors|AppendLogToQuery|CacheFile|FakeAsync|LogNotSupported|ReadAheadBuffer)|KeepAlive|KeepAliveTimeout|KeptBodySize|LanguagePriority|LDAP(?:CacheEntries|CacheTTL|ConnectionPoolTTL|ConnectionTimeout|LibraryDebug|OpCacheEntries|OpCacheTTL|ReferralHopLimit|Referrals|Retries|RetryDelay|SharedCacheFile|SharedCacheSize|Timeout|TrustedClientCert|TrustedGlobalCert|TrustedMode|VerifyServerCert)|Limit(?:InternalRecursion|Request(?:Body|Fields|FieldSize|Line)|XMLRequestBody)|Listen|ListenBackLog|LoadFile|LoadModule|LogFormat|LogLevel|LogMessage|LuaAuthzProvider|LuaCodeCache|Lua(?:Hook(?:AccessChecker|AuthChecker|CheckUserID|Fixups|InsertFilter|Log|MapToStorage|TranslateName|TypeChecker)|Inherit|InputFilter|MapHandler|OutputFilter|PackageCPath|PackagePath|QuickHandler|Root|Scope)|Max(?:ConnectionsPerChild|KeepAliveRequests|MemFree|RangeOverlaps|RangeReversals|Ranges|RequestWorkers|SpareServers|SpareThreads|Threads)|MergeTrailers|MetaDir|MetaFiles|MetaSuffix|MimeMagicFile|MinSpareServers|MinSpareThreads|MMapFile|ModemStandard|ModMimeUsePathInfo|MultiviewsMatch|Mutex|NameVirtualHost|NoProxy|NWSSLTrustedCerts|NWSSLUpgradeable|Options|Order|OutputSed|PassEnv|PidFile|PrivilegesMode|Protocol|ProtocolEcho|Proxy(?:AddHeaders|BadHeader|Block|Domain|ErrorOverride|ExpressDBMFile|ExpressDBMType|ExpressEnable|FtpDirCharset|FtpEscapeWildcards|FtpListOnWildcard|HTML(?:BufSize|CharsetOut|DocType|Enable|Events|Extended|Fixups|Interp|Links|Meta|StripComments|URLMap)|IOBufferSize|MaxForwards|Pass(?:Inherit|InterpolateEnv|Match|Reverse|ReverseCookieDomain|ReverseCookiePath)?|PreserveHost|ReceiveBufferSize|Remote|RemoteMatch|Requests|SCGIInternalRedirect|SCGISendfile|Set|SourceAddress|Status|Timeout|Via)|ReadmeName|ReceiveBufferSize|Redirect|RedirectMatch|RedirectPermanent|RedirectTemp|ReflectorHeader|RemoteIP(?:Header|InternalProxy|InternalProxyList|ProxiesHeader|TrustedProxy|TrustedProxyList)|RemoveCharset|RemoveEncoding|RemoveHandler|RemoveInputFilter|RemoveLanguage|RemoveOutputFilter|RemoveType|RequestHeader|RequestReadTimeout|Require|Rewrite(?:Base|Cond|Engine|Map|Options|Rule)|RLimitCPU|RLimitMEM|RLimitNPROC|Satisfy|ScoreBoardFile|Script(?:Alias|AliasMatch|InterpreterSource|Log|LogBuffer|LogLength|Sock)?|SecureListen|SeeRequestTail|SendBufferSize|Server(?:Admin|Alias|Limit|Name|Path|Root|Signature|Tokens)|Session(?:Cookie(?:Name|Name2|Remove)|Crypto(?:Cipher|Driver|Passphrase|PassphraseFile)|DBD(?:CookieName|CookieName2|CookieRemove|DeleteLabel|InsertLabel|PerUser|SelectLabel|UpdateLabel)|Env|Exclude|Header|Include|MaxAge)?|SetEnv|SetEnvIf|SetEnvIfExpr|SetEnvIfNoCase|SetHandler|SetInputFilter|SetOutputFilter|SSIEndTag|SSIErrorMsg|SSIETag|SSILastModified|SSILegacyExprParser|SSIStartTag|SSITimeFormat|SSIUndefinedEcho|SSL(?:CACertificateFile|CACertificatePath|CADNRequestFile|CADNRequestPath|CARevocationCheck|CARevocationFile|CARevocationPath|CertificateChainFile|CertificateFile|CertificateKeyFile|CipherSuite|Compression|CryptoDevice|Engine|FIPS|HonorCipherOrder|InsecureRenegotiation|OCSP(?:DefaultResponder|Enable|OverrideResponder|ResponderTimeout|ResponseMaxAge|ResponseTimeSkew|UseRequestNonce)|OpenSSLConfCmd|Options|PassPhraseDialog|Protocol|Proxy(?:CACertificateFile|CACertificatePath|CARevocation(?:Check|File|Path)|CheckPeer(?:CN|Expire|Name)|CipherSuite|Engine|MachineCertificate(?:ChainFile|File|Path)|Protocol|Verify|VerifyDepth)|RandomSeed|RenegBufferSize|Require|RequireSSL|Session(?:Cache|CacheTimeout|TicketKeyFile|Tickets)|SRPUnknownUserSeed|SRPVerifierFile|Stapling(?:Cache|ErrorCacheTimeout|FakeTryLater|ForceURL|ResponderTimeout|ResponseMaxAge|ResponseTimeSkew|ReturnResponderErrors|StandardCacheTimeout)|StrictSNIVHostCheck|UserName|UseStapling|VerifyClient|VerifyDepth)|StartServers|StartThreads|Substitute|Suexec|SuexecUserGroup|ThreadLimit|ThreadsPerChild|ThreadStackSize|TimeOut|TraceEnable|TransferLog|TypesConfig|UnDefine|UndefMacro|UnsetEnv|Use|UseCanonicalName|UseCanonicalPhysicalPort|User|UserDir|VHostCGIMode|VHostCGIPrivs|VHostGroup|VHostPrivs|VHostSecure|VHostUser|Virtual(?:DocumentRoot|ScriptAlias)(?:IP)?|WatchdogInterval|XBitHack|xml2EncAlias|xml2EncDefault|xml2StartParse)\b/im,lookbehind:!0,alias:"property"},"directive-block":{pattern:/<\/?\b(?:Auth[nz]ProviderAlias|Directory|DirectoryMatch|Else|ElseIf|Files|FilesMatch|If|IfDefine|IfModule|IfVersion|Limit|LimitExcept|Location|LocationMatch|Macro|Proxy|Require(?:All|Any|None)|VirtualHost)\b.*>/i,inside:{"directive-block":{pattern:/^<\/?\w+/,inside:{punctuation:/^<\/?/},alias:"tag"},"directive-block-parameter":{pattern:/.*[^>]/,inside:{punctuation:/:/,string:{pattern:/("|').*\1/,inside:{variable:/[$%]\{?(?:\w\.?[-+:]?)+\}?/}}},alias:"attr-value"},punctuation:/>/},alias:"tag"},"directive-flags":{pattern:/\[(?:[\w=],?)+\]/,alias:"keyword"},string:{pattern:/("|').*\1/,inside:{variable:/[$%]\{?(?:\w\.?[-+:]?)+\}?/}},variable:/[$%]\{?(?:\w\.?[-+:]?)+\}?/,regex:/\^?.*\$|\^.*\$?/}; \ No newline at end of file diff --git a/components/prism-apex.js b/components/prism-apex.js deleted file mode 100644 index dbb7f0dcd6..0000000000 --- a/components/prism-apex.js +++ /dev/null @@ -1,65 +0,0 @@ -(function (Prism) { - - var keywords = /\b(?:(?:after|before)(?=\s+[a-z])|abstract|activate|and|any|array|as|asc|autonomous|begin|bigdecimal|blob|boolean|break|bulk|by|byte|case|cast|catch|char|class|collect|commit|const|continue|currency|date|datetime|decimal|default|delete|desc|do|double|else|end|enum|exception|exit|export|extends|final|finally|float|for|from|get(?=\s*[{};])|global|goto|group|having|hint|if|implements|import|in|inner|insert|instanceof|int|integer|interface|into|join|like|limit|list|long|loop|map|merge|new|not|null|nulls|number|object|of|on|or|outer|override|package|parallel|pragma|private|protected|public|retrieve|return|rollback|select|set|short|sObject|sort|static|string|super|switch|synchronized|system|testmethod|then|this|throw|time|transaction|transient|trigger|try|undelete|update|upsert|using|virtual|void|webservice|when|where|while|(?:inherited|with|without)\s+sharing)\b/i; - - var className = /\b(?:(?=[a-z_]\w*\s*[<\[])|(?!))[A-Z_]\w*(?:\s*\.\s*[A-Z_]\w*)*\b(?:\s*(?:\[\s*\]|<(?:[^<>]|<(?:[^<>]|<[^<>]*>)*>)*>))*/.source - .replace(//g, function () { return keywords.source; }); - /** @param {string} pattern */ - function insertClassName(pattern) { - return RegExp(pattern.replace(//g, function () { return className; }), 'i'); - } - - var classNameInside = { - 'keyword': keywords, - 'punctuation': /[()\[\]{};,:.<>]/ - }; - - Prism.languages.apex = { - 'comment': Prism.languages.clike.comment, - 'string': Prism.languages.clike.string, - 'sql': { - pattern: /((?:[=,({:]|\breturn)\s*)\[[^\[\]]*\]/i, - lookbehind: true, - greedy: true, - alias: 'language-sql', - inside: Prism.languages.sql - }, - - 'annotation': { - pattern: /@\w+\b/, - alias: 'punctuation' - }, - 'class-name': [ - { - pattern: insertClassName(/(\b(?:class|enum|extends|implements|instanceof|interface|new|trigger\s+\w+\s+on)\s+)/.source), - lookbehind: true, - inside: classNameInside - }, - { - // cast - pattern: insertClassName(/(\(\s*)(?=\s*\)\s*[\w(])/.source), - lookbehind: true, - inside: classNameInside - }, - { - // variable/parameter declaration and return types - pattern: insertClassName(/(?=\s*\w+\s*[;=,(){:])/.source), - inside: classNameInside - } - ], - 'trigger': { - pattern: /(\btrigger\s+)\w+\b/i, - lookbehind: true, - alias: 'class-name' - }, - 'keyword': keywords, - 'function': /\b[a-z_]\w*(?=\s*\()/i, - - 'boolean': /\b(?:false|true)\b/i, - - 'number': /(?:\B\.\d+|\b\d+(?:\.\d+|L)?)\b/i, - 'operator': /[!=](?:==?)?|\?\.?|&&|\|\||--|\+\+|[-+*/^&|]=?|:|<{1,3}=?/, - 'punctuation': /[()\[\]{};,.]/ - }; - -}(Prism)); diff --git a/components/prism-apex.min.js b/components/prism-apex.min.js deleted file mode 100644 index 3cb0f96bec..0000000000 --- a/components/prism-apex.min.js +++ /dev/null @@ -1 +0,0 @@ -!function(e){var t=/\b(?:(?:after|before)(?=\s+[a-z])|abstract|activate|and|any|array|as|asc|autonomous|begin|bigdecimal|blob|boolean|break|bulk|by|byte|case|cast|catch|char|class|collect|commit|const|continue|currency|date|datetime|decimal|default|delete|desc|do|double|else|end|enum|exception|exit|export|extends|final|finally|float|for|from|get(?=\s*[{};])|global|goto|group|having|hint|if|implements|import|in|inner|insert|instanceof|int|integer|interface|into|join|like|limit|list|long|loop|map|merge|new|not|null|nulls|number|object|of|on|or|outer|override|package|parallel|pragma|private|protected|public|retrieve|return|rollback|select|set|short|sObject|sort|static|string|super|switch|synchronized|system|testmethod|then|this|throw|time|transaction|transient|trigger|try|undelete|update|upsert|using|virtual|void|webservice|when|where|while|(?:inherited|with|without)\s+sharing)\b/i,n="\\b(?:(?=[a-z_]\\w*\\s*[<\\[])|(?!))[A-Z_]\\w*(?:\\s*\\.\\s*[A-Z_]\\w*)*\\b(?:\\s*(?:\\[\\s*\\]|<(?:[^<>]|<(?:[^<>]|<[^<>]*>)*>)*>))*".replace(//g,(function(){return t.source}));function i(e){return RegExp(e.replace(//g,(function(){return n})),"i")}var a={keyword:t,punctuation:/[()\[\]{};,:.<>]/};e.languages.apex={comment:e.languages.clike.comment,string:e.languages.clike.string,sql:{pattern:/((?:[=,({:]|\breturn)\s*)\[[^\[\]]*\]/i,lookbehind:!0,greedy:!0,alias:"language-sql",inside:e.languages.sql},annotation:{pattern:/@\w+\b/,alias:"punctuation"},"class-name":[{pattern:i("(\\b(?:class|enum|extends|implements|instanceof|interface|new|trigger\\s+\\w+\\s+on)\\s+)"),lookbehind:!0,inside:a},{pattern:i("(\\(\\s*)(?=\\s*\\)\\s*[\\w(])"),lookbehind:!0,inside:a},{pattern:i("(?=\\s*\\w+\\s*[;=,(){:])"),inside:a}],trigger:{pattern:/(\btrigger\s+)\w+\b/i,lookbehind:!0,alias:"class-name"},keyword:t,function:/\b[a-z_]\w*(?=\s*\()/i,boolean:/\b(?:false|true)\b/i,number:/(?:\B\.\d+|\b\d+(?:\.\d+|L)?)\b/i,operator:/[!=](?:==?)?|\?\.?|&&|\|\||--|\+\+|[-+*/^&|]=?|:|<{1,3}=?/,punctuation:/[()\[\]{};,.]/}}(Prism); \ No newline at end of file diff --git a/components/prism-apl.js b/components/prism-apl.js deleted file mode 100644 index 900f84a904..0000000000 --- a/components/prism-apl.js +++ /dev/null @@ -1,32 +0,0 @@ -Prism.languages.apl = { - 'comment': /(?:⍝|#[! ]).*$/m, - 'string': { - pattern: /'(?:[^'\r\n]|'')*'/, - greedy: true - }, - 'number': /¯?(?:\d*\.?\b\d+(?:e[+¯]?\d+)?|¯|∞)(?:j¯?(?:(?:\d+(?:\.\d+)?|\.\d+)(?:e[+¯]?\d+)?|¯|∞))?/i, - 'statement': /:[A-Z][a-z][A-Za-z]*\b/, - 'system-function': { - pattern: /⎕[A-Z]+/i, - alias: 'function' - }, - 'constant': /[⍬⌾#⎕⍞]/, - 'function': /[-+×÷⌈⌊∣|⍳⍸?*⍟○!⌹<≤=>≥≠≡≢∊⍷∪∩~∨∧⍱⍲⍴,⍪⌽⊖⍉↑↓⊂⊃⊆⊇⌷⍋⍒⊤⊥⍕⍎⊣⊢⍁⍂≈⍯↗¤→]/, - 'monadic-operator': { - pattern: /[\\\/⌿⍀¨⍨⌶&∥]/, - alias: 'operator' - }, - 'dyadic-operator': { - pattern: /[.⍣⍠⍤∘⌸@⌺⍥]/, - alias: 'operator' - }, - 'assignment': { - pattern: /←/, - alias: 'keyword' - }, - 'punctuation': /[\[;\]()◇⋄]/, - 'dfn': { - pattern: /[{}⍺⍵⍶⍹∇⍫:]/, - alias: 'builtin' - } -}; diff --git a/components/prism-apl.min.js b/components/prism-apl.min.js deleted file mode 100644 index 0fd5cf4737..0000000000 --- a/components/prism-apl.min.js +++ /dev/null @@ -1 +0,0 @@ -Prism.languages.apl={comment:/(?:⍝|#[! ]).*$/m,string:{pattern:/'(?:[^'\r\n]|'')*'/,greedy:!0},number:/¯?(?:\d*\.?\b\d+(?:e[+¯]?\d+)?|¯|∞)(?:j¯?(?:(?:\d+(?:\.\d+)?|\.\d+)(?:e[+¯]?\d+)?|¯|∞))?/i,statement:/:[A-Z][a-z][A-Za-z]*\b/,"system-function":{pattern:/⎕[A-Z]+/i,alias:"function"},constant:/[⍬⌾#⎕⍞]/,function:/[-+×÷⌈⌊∣|⍳⍸?*⍟○!⌹<≤=>≥≠≡≢∊⍷∪∩~∨∧⍱⍲⍴,⍪⌽⊖⍉↑↓⊂⊃⊆⊇⌷⍋⍒⊤⊥⍕⍎⊣⊢⍁⍂≈⍯↗¤→]/,"monadic-operator":{pattern:/[\\\/⌿⍀¨⍨⌶&∥]/,alias:"operator"},"dyadic-operator":{pattern:/[.⍣⍠⍤∘⌸@⌺⍥]/,alias:"operator"},assignment:{pattern:/←/,alias:"keyword"},punctuation:/[\[;\]()◇⋄]/,dfn:{pattern:/[{}⍺⍵⍶⍹∇⍫:]/,alias:"builtin"}}; \ No newline at end of file diff --git a/components/prism-applescript.js b/components/prism-applescript.js deleted file mode 100644 index 3d688b4a8d..0000000000 --- a/components/prism-applescript.js +++ /dev/null @@ -1,17 +0,0 @@ -Prism.languages.applescript = { - 'comment': [ - // Allow one level of nesting - /\(\*(?:\(\*(?:[^*]|\*(?!\)))*\*\)|(?!\(\*)[\s\S])*?\*\)/, - /--.+/, - /#.+/ - ], - 'string': /"(?:\\.|[^"\\\r\n])*"/, - 'number': /(?:\b\d+(?:\.\d*)?|\B\.\d+)(?:e-?\d+)?\b/i, - 'operator': [ - /[&=≠≤≥*+\-\/÷^]|[<>]=?/, - /\b(?:(?:begin|end|start)s? with|(?:contains?|(?:does not|doesn't) contain)|(?:is|isn't|is not) (?:contained by|in)|(?:(?:is|isn't|is not) )?(?:greater|less) than(?: or equal)?(?: to)?|(?:comes|(?:does not|doesn't) come) (?:after|before)|(?:is|isn't|is not) equal(?: to)?|(?:(?:does not|doesn't) equal|equal to|equals|is not|isn't)|(?:a )?(?:ref(?: to)?|reference to)|(?:and|as|div|mod|not|or))\b/ - ], - 'keyword': /\b(?:about|above|after|against|apart from|around|aside from|at|back|before|beginning|behind|below|beneath|beside|between|but|by|considering|continue|copy|does|eighth|else|end|equal|error|every|exit|false|fifth|first|for|fourth|from|front|get|given|global|if|ignoring|in|instead of|into|is|it|its|last|local|me|middle|my|ninth|of|on|onto|out of|over|prop|property|put|repeat|return|returning|second|set|seventh|since|sixth|some|tell|tenth|that|the|then|third|through|thru|timeout|times|to|transaction|true|try|until|where|while|whose|with|without)\b/, - 'class-name': /\b(?:POSIX file|RGB color|alias|application|boolean|centimeters|centimetres|class|constant|cubic centimeters|cubic centimetres|cubic feet|cubic inches|cubic meters|cubic metres|cubic yards|date|degrees Celsius|degrees Fahrenheit|degrees Kelvin|feet|file|gallons|grams|inches|integer|kilograms|kilometers|kilometres|list|liters|litres|meters|metres|miles|number|ounces|pounds|quarts|real|record|reference|script|square feet|square kilometers|square kilometres|square meters|square metres|square miles|square yards|text|yards)\b/, - 'punctuation': /[{}():,¬«»《》]/ -}; diff --git a/components/prism-applescript.min.js b/components/prism-applescript.min.js deleted file mode 100644 index 57635ecf26..0000000000 --- a/components/prism-applescript.min.js +++ /dev/null @@ -1 +0,0 @@ -Prism.languages.applescript={comment:[/\(\*(?:\(\*(?:[^*]|\*(?!\)))*\*\)|(?!\(\*)[\s\S])*?\*\)/,/--.+/,/#.+/],string:/"(?:\\.|[^"\\\r\n])*"/,number:/(?:\b\d+(?:\.\d*)?|\B\.\d+)(?:e-?\d+)?\b/i,operator:[/[&=≠≤≥*+\-\/÷^]|[<>]=?/,/\b(?:(?:begin|end|start)s? with|(?:contains?|(?:does not|doesn't) contain)|(?:is|isn't|is not) (?:contained by|in)|(?:(?:is|isn't|is not) )?(?:greater|less) than(?: or equal)?(?: to)?|(?:comes|(?:does not|doesn't) come) (?:after|before)|(?:is|isn't|is not) equal(?: to)?|(?:(?:does not|doesn't) equal|equal to|equals|is not|isn't)|(?:a )?(?:ref(?: to)?|reference to)|(?:and|as|div|mod|not|or))\b/],keyword:/\b(?:about|above|after|against|apart from|around|aside from|at|back|before|beginning|behind|below|beneath|beside|between|but|by|considering|continue|copy|does|eighth|else|end|equal|error|every|exit|false|fifth|first|for|fourth|from|front|get|given|global|if|ignoring|in|instead of|into|is|it|its|last|local|me|middle|my|ninth|of|on|onto|out of|over|prop|property|put|repeat|return|returning|second|set|seventh|since|sixth|some|tell|tenth|that|the|then|third|through|thru|timeout|times|to|transaction|true|try|until|where|while|whose|with|without)\b/,"class-name":/\b(?:POSIX file|RGB color|alias|application|boolean|centimeters|centimetres|class|constant|cubic centimeters|cubic centimetres|cubic feet|cubic inches|cubic meters|cubic metres|cubic yards|date|degrees Celsius|degrees Fahrenheit|degrees Kelvin|feet|file|gallons|grams|inches|integer|kilograms|kilometers|kilometres|list|liters|litres|meters|metres|miles|number|ounces|pounds|quarts|real|record|reference|script|square feet|square kilometers|square kilometres|square meters|square metres|square miles|square yards|text|yards)\b/,punctuation:/[{}():,¬«»《》]/}; \ No newline at end of file diff --git a/components/prism-aql.js b/components/prism-aql.js deleted file mode 100644 index 42868dd6cc..0000000000 --- a/components/prism-aql.js +++ /dev/null @@ -1,49 +0,0 @@ -Prism.languages.aql = { - 'comment': /\/\/.*|\/\*[\s\S]*?\*\//, - 'property': { - pattern: /([{,]\s*)(?:(?!\d)\w+|(["'´`])(?:(?!\2)[^\\\r\n]|\\.)*\2)(?=\s*:)/, - lookbehind: true, - greedy: true - }, - 'string': { - pattern: /(["'])(?:(?!\1)[^\\\r\n]|\\.)*\1/, - greedy: true - }, - 'identifier': { - pattern: /([´`])(?:(?!\1)[^\\\r\n]|\\.)*\1/, - greedy: true - }, - 'variable': /@@?\w+/, - 'keyword': [ - { - pattern: /(\bWITH\s+)COUNT(?=\s+INTO\b)/i, - lookbehind: true - }, - /\b(?:AGGREGATE|ALL|AND|ANY|ASC|COLLECT|DESC|DISTINCT|FILTER|FOR|GRAPH|IN|INBOUND|INSERT|INTO|K_PATHS|K_SHORTEST_PATHS|LET|LIKE|LIMIT|NONE|NOT|NULL|OR|OUTBOUND|REMOVE|REPLACE|RETURN|SHORTEST_PATH|SORT|UPDATE|UPSERT|WINDOW|WITH)\b/i, - // pseudo keywords get a lookbehind to avoid false positives - { - pattern: /(^|[^\w.[])(?:KEEP|PRUNE|SEARCH|TO)\b/i, - lookbehind: true - }, - { - pattern: /(^|[^\w.[])(?:CURRENT|NEW|OLD)\b/, - lookbehind: true - }, - { - pattern: /\bOPTIONS(?=\s*\{)/i - } - ], - 'function': /\b(?!\d)\w+(?=\s*\()/, - 'boolean': /\b(?:false|true)\b/i, - 'range': { - pattern: /\.\./, - alias: 'operator' - }, - 'number': [ - /\b0b[01]+/i, - /\b0x[0-9a-f]+/i, - /(?:\B\.\d+|\b(?:0|[1-9]\d*)(?:\.\d+)?)(?:e[+-]?\d+)?/i - ], - 'operator': /\*{2,}|[=!]~|[!=<>]=?|&&|\|\||[-+*/%]/, - 'punctuation': /::|[?.:,;()[\]{}]/ -}; diff --git a/components/prism-aql.min.js b/components/prism-aql.min.js deleted file mode 100644 index 9ed85972d2..0000000000 --- a/components/prism-aql.min.js +++ /dev/null @@ -1 +0,0 @@ -Prism.languages.aql={comment:/\/\/.*|\/\*[\s\S]*?\*\//,property:{pattern:/([{,]\s*)(?:(?!\d)\w+|(["'´`])(?:(?!\2)[^\\\r\n]|\\.)*\2)(?=\s*:)/,lookbehind:!0,greedy:!0},string:{pattern:/(["'])(?:(?!\1)[^\\\r\n]|\\.)*\1/,greedy:!0},identifier:{pattern:/([´`])(?:(?!\1)[^\\\r\n]|\\.)*\1/,greedy:!0},variable:/@@?\w+/,keyword:[{pattern:/(\bWITH\s+)COUNT(?=\s+INTO\b)/i,lookbehind:!0},/\b(?:AGGREGATE|ALL|AND|ANY|ASC|COLLECT|DESC|DISTINCT|FILTER|FOR|GRAPH|IN|INBOUND|INSERT|INTO|K_PATHS|K_SHORTEST_PATHS|LET|LIKE|LIMIT|NONE|NOT|NULL|OR|OUTBOUND|REMOVE|REPLACE|RETURN|SHORTEST_PATH|SORT|UPDATE|UPSERT|WINDOW|WITH)\b/i,{pattern:/(^|[^\w.[])(?:KEEP|PRUNE|SEARCH|TO)\b/i,lookbehind:!0},{pattern:/(^|[^\w.[])(?:CURRENT|NEW|OLD)\b/,lookbehind:!0},{pattern:/\bOPTIONS(?=\s*\{)/i}],function:/\b(?!\d)\w+(?=\s*\()/,boolean:/\b(?:false|true)\b/i,range:{pattern:/\.\./,alias:"operator"},number:[/\b0b[01]+/i,/\b0x[0-9a-f]+/i,/(?:\B\.\d+|\b(?:0|[1-9]\d*)(?:\.\d+)?)(?:e[+-]?\d+)?/i],operator:/\*{2,}|[=!]~|[!=<>]=?|&&|\|\||[-+*/%]/,punctuation:/::|[?.:,;()[\]{}]/}; \ No newline at end of file diff --git a/components/prism-arduino.js b/components/prism-arduino.js deleted file mode 100644 index 9620f058ab..0000000000 --- a/components/prism-arduino.js +++ /dev/null @@ -1,7 +0,0 @@ -Prism.languages.arduino = Prism.languages.extend('cpp', { - 'keyword': /\b(?:String|array|bool|boolean|break|byte|case|catch|continue|default|do|double|else|finally|for|function|goto|if|in|instanceof|int|integer|long|loop|new|null|return|setup|string|switch|throw|try|void|while|word)\b/, - 'constant': /\b(?:ANALOG_MESSAGE|DEFAULT|DIGITAL_MESSAGE|EXTERNAL|FIRMATA_STRING|HIGH|INPUT|INPUT_PULLUP|INTERNAL|INTERNAL1V1|INTERNAL2V56|LED_BUILTIN|LOW|OUTPUT|REPORT_ANALOG|REPORT_DIGITAL|SET_PIN_MODE|SYSEX_START|SYSTEM_RESET)\b/, - 'builtin': /\b(?:Audio|BSSID|Bridge|Client|Console|EEPROM|Esplora|EsploraTFT|Ethernet|EthernetClient|EthernetServer|EthernetUDP|File|FileIO|FileSystem|Firmata|GPRS|GSM|GSMBand|GSMClient|GSMModem|GSMPIN|GSMScanner|GSMServer|GSMVoiceCall|GSM_SMS|HttpClient|IPAddress|IRread|Keyboard|KeyboardController|LiquidCrystal|LiquidCrystal_I2C|Mailbox|Mouse|MouseController|PImage|Process|RSSI|RobotControl|RobotMotor|SD|SPI|SSID|Scheduler|Serial|Server|Servo|SoftwareSerial|Stepper|Stream|TFT|Task|USBHost|WiFi|WiFiClient|WiFiServer|WiFiUDP|Wire|YunClient|YunServer|abs|addParameter|analogRead|analogReadResolution|analogReference|analogWrite|analogWriteResolution|answerCall|attach|attachGPRS|attachInterrupt|attached|autoscroll|available|background|beep|begin|beginPacket|beginSD|beginSMS|beginSpeaker|beginTFT|beginTransmission|beginWrite|bit|bitClear|bitRead|bitSet|bitWrite|blink|blinkVersion|buffer|changePIN|checkPIN|checkPUK|checkReg|circle|cityNameRead|cityNameWrite|clear|clearScreen|click|close|compassRead|config|connect|connected|constrain|cos|countryNameRead|countryNameWrite|createChar|cursor|debugPrint|delay|delayMicroseconds|detach|detachInterrupt|digitalRead|digitalWrite|disconnect|display|displayLogos|drawBMP|drawCompass|encryptionType|end|endPacket|endSMS|endTransmission|endWrite|exists|exitValue|fill|find|findUntil|flush|gatewayIP|get|getAsynchronously|getBand|getButton|getCurrentCarrier|getIMEI|getKey|getModifiers|getOemKey|getPINUsed|getResult|getSignalStrength|getSocket|getVoiceCallStatus|getXChange|getYChange|hangCall|height|highByte|home|image|interrupts|isActionDone|isDirectory|isListening|isPIN|isPressed|isValid|keyPressed|keyReleased|keyboardRead|knobRead|leftToRight|line|lineFollowConfig|listen|listenOnLocalhost|loadImage|localIP|lowByte|macAddress|maintain|map|max|messageAvailable|micros|millis|min|mkdir|motorsStop|motorsWrite|mouseDragged|mouseMoved|mousePressed|mouseReleased|move|noAutoscroll|noBlink|noBuffer|noCursor|noDisplay|noFill|noInterrupts|noListenOnLocalhost|noStroke|noTone|onReceive|onRequest|open|openNextFile|overflow|parseCommand|parseFloat|parseInt|parsePacket|pauseMode|peek|pinMode|playFile|playMelody|point|pointTo|position|pow|prepare|press|print|printFirmwareVersion|printVersion|println|process|processInput|pulseIn|put|random|randomSeed|read|readAccelerometer|readBlue|readButton|readBytes|readBytesUntil|readGreen|readJoystickButton|readJoystickSwitch|readJoystickX|readJoystickY|readLightSensor|readMessage|readMicrophone|readNetworks|readRed|readSlider|readString|readStringUntil|readTemperature|ready|rect|release|releaseAll|remoteIP|remoteNumber|remotePort|remove|requestFrom|retrieveCallingNumber|rewindDirectory|rightToLeft|rmdir|robotNameRead|robotNameWrite|run|runAsynchronously|runShellCommand|runShellCommandAsynchronously|running|scanNetworks|scrollDisplayLeft|scrollDisplayRight|seek|sendAnalog|sendDigitalPortPair|sendDigitalPorts|sendString|sendSysex|serialEvent|setBand|setBitOrder|setClockDivider|setCursor|setDNS|setDataMode|setFirmwareVersion|setMode|setPINUsed|setSpeed|setTextSize|setTimeout|shiftIn|shiftOut|shutdown|sin|size|sqrt|startLoop|step|stop|stroke|subnetMask|switchPIN|tan|tempoWrite|text|tone|transfer|tuneWrite|turn|updateIR|userNameRead|userNameWrite|voiceCall|waitContinue|width|write|writeBlue|writeGreen|writeJSON|writeMessage|writeMicroseconds|writeRGB|writeRed|yield)\b/ -}); - -Prism.languages.ino = Prism.languages.arduino; diff --git a/components/prism-arduino.min.js b/components/prism-arduino.min.js deleted file mode 100644 index adb7fe92bd..0000000000 --- a/components/prism-arduino.min.js +++ /dev/null @@ -1 +0,0 @@ -Prism.languages.arduino=Prism.languages.extend("cpp",{keyword:/\b(?:String|array|bool|boolean|break|byte|case|catch|continue|default|do|double|else|finally|for|function|goto|if|in|instanceof|int|integer|long|loop|new|null|return|setup|string|switch|throw|try|void|while|word)\b/,constant:/\b(?:ANALOG_MESSAGE|DEFAULT|DIGITAL_MESSAGE|EXTERNAL|FIRMATA_STRING|HIGH|INPUT|INPUT_PULLUP|INTERNAL|INTERNAL1V1|INTERNAL2V56|LED_BUILTIN|LOW|OUTPUT|REPORT_ANALOG|REPORT_DIGITAL|SET_PIN_MODE|SYSEX_START|SYSTEM_RESET)\b/,builtin:/\b(?:Audio|BSSID|Bridge|Client|Console|EEPROM|Esplora|EsploraTFT|Ethernet|EthernetClient|EthernetServer|EthernetUDP|File|FileIO|FileSystem|Firmata|GPRS|GSM|GSMBand|GSMClient|GSMModem|GSMPIN|GSMScanner|GSMServer|GSMVoiceCall|GSM_SMS|HttpClient|IPAddress|IRread|Keyboard|KeyboardController|LiquidCrystal|LiquidCrystal_I2C|Mailbox|Mouse|MouseController|PImage|Process|RSSI|RobotControl|RobotMotor|SD|SPI|SSID|Scheduler|Serial|Server|Servo|SoftwareSerial|Stepper|Stream|TFT|Task|USBHost|WiFi|WiFiClient|WiFiServer|WiFiUDP|Wire|YunClient|YunServer|abs|addParameter|analogRead|analogReadResolution|analogReference|analogWrite|analogWriteResolution|answerCall|attach|attachGPRS|attachInterrupt|attached|autoscroll|available|background|beep|begin|beginPacket|beginSD|beginSMS|beginSpeaker|beginTFT|beginTransmission|beginWrite|bit|bitClear|bitRead|bitSet|bitWrite|blink|blinkVersion|buffer|changePIN|checkPIN|checkPUK|checkReg|circle|cityNameRead|cityNameWrite|clear|clearScreen|click|close|compassRead|config|connect|connected|constrain|cos|countryNameRead|countryNameWrite|createChar|cursor|debugPrint|delay|delayMicroseconds|detach|detachInterrupt|digitalRead|digitalWrite|disconnect|display|displayLogos|drawBMP|drawCompass|encryptionType|end|endPacket|endSMS|endTransmission|endWrite|exists|exitValue|fill|find|findUntil|flush|gatewayIP|get|getAsynchronously|getBand|getButton|getCurrentCarrier|getIMEI|getKey|getModifiers|getOemKey|getPINUsed|getResult|getSignalStrength|getSocket|getVoiceCallStatus|getXChange|getYChange|hangCall|height|highByte|home|image|interrupts|isActionDone|isDirectory|isListening|isPIN|isPressed|isValid|keyPressed|keyReleased|keyboardRead|knobRead|leftToRight|line|lineFollowConfig|listen|listenOnLocalhost|loadImage|localIP|lowByte|macAddress|maintain|map|max|messageAvailable|micros|millis|min|mkdir|motorsStop|motorsWrite|mouseDragged|mouseMoved|mousePressed|mouseReleased|move|noAutoscroll|noBlink|noBuffer|noCursor|noDisplay|noFill|noInterrupts|noListenOnLocalhost|noStroke|noTone|onReceive|onRequest|open|openNextFile|overflow|parseCommand|parseFloat|parseInt|parsePacket|pauseMode|peek|pinMode|playFile|playMelody|point|pointTo|position|pow|prepare|press|print|printFirmwareVersion|printVersion|println|process|processInput|pulseIn|put|random|randomSeed|read|readAccelerometer|readBlue|readButton|readBytes|readBytesUntil|readGreen|readJoystickButton|readJoystickSwitch|readJoystickX|readJoystickY|readLightSensor|readMessage|readMicrophone|readNetworks|readRed|readSlider|readString|readStringUntil|readTemperature|ready|rect|release|releaseAll|remoteIP|remoteNumber|remotePort|remove|requestFrom|retrieveCallingNumber|rewindDirectory|rightToLeft|rmdir|robotNameRead|robotNameWrite|run|runAsynchronously|runShellCommand|runShellCommandAsynchronously|running|scanNetworks|scrollDisplayLeft|scrollDisplayRight|seek|sendAnalog|sendDigitalPortPair|sendDigitalPorts|sendString|sendSysex|serialEvent|setBand|setBitOrder|setClockDivider|setCursor|setDNS|setDataMode|setFirmwareVersion|setMode|setPINUsed|setSpeed|setTextSize|setTimeout|shiftIn|shiftOut|shutdown|sin|size|sqrt|startLoop|step|stop|stroke|subnetMask|switchPIN|tan|tempoWrite|text|tone|transfer|tuneWrite|turn|updateIR|userNameRead|userNameWrite|voiceCall|waitContinue|width|write|writeBlue|writeGreen|writeJSON|writeMessage|writeMicroseconds|writeRGB|writeRed|yield)\b/}),Prism.languages.ino=Prism.languages.arduino; \ No newline at end of file diff --git a/components/prism-arff.js b/components/prism-arff.js deleted file mode 100644 index 6a366b55a9..0000000000 --- a/components/prism-arff.js +++ /dev/null @@ -1,10 +0,0 @@ -Prism.languages.arff = { - 'comment': /%.*/, - 'string': { - pattern: /(["'])(?:\\.|(?!\1)[^\\\r\n])*\1/, - greedy: true - }, - 'keyword': /@(?:attribute|data|end|relation)\b/i, - 'number': /\b\d+(?:\.\d+)?\b/, - 'punctuation': /[{},]/ -}; diff --git a/components/prism-arff.min.js b/components/prism-arff.min.js deleted file mode 100644 index 533e8d1109..0000000000 --- a/components/prism-arff.min.js +++ /dev/null @@ -1 +0,0 @@ -Prism.languages.arff={comment:/%.*/,string:{pattern:/(["'])(?:\\.|(?!\1)[^\\\r\n])*\1/,greedy:!0},keyword:/@(?:attribute|data|end|relation)\b/i,number:/\b\d+(?:\.\d+)?\b/,punctuation:/[{},]/}; \ No newline at end of file diff --git a/components/prism-armasm.js b/components/prism-armasm.js deleted file mode 100644 index 07e93221d4..0000000000 --- a/components/prism-armasm.js +++ /dev/null @@ -1,49 +0,0 @@ -Prism.languages.armasm = { - 'comment': { - pattern: /;.*/, - greedy: true - }, - 'string': { - pattern: /"(?:[^"\r\n]|"")*"/, - greedy: true, - inside: { - 'variable': { - pattern: /((?:^|[^$])(?:\${2})*)\$\w+/, - lookbehind: true - } - } - }, - 'char': { - pattern: /'(?:[^'\r\n]{0,4}|'')'/, - greedy: true - }, - 'version-symbol': { - pattern: /\|[\w@]+\|/, - greedy: true, - alias: 'property' - }, - - 'boolean': /\b(?:FALSE|TRUE)\b/, - 'directive': { - pattern: /\b(?:ALIAS|ALIGN|AREA|ARM|ASSERT|ATTR|CN|CODE|CODE16|CODE32|COMMON|CP|DATA|DCB|DCD|DCDO|DCDU|DCFD|DCFDU|DCI|DCQ|DCQU|DCW|DCWU|DN|ELIF|ELSE|END|ENDFUNC|ENDIF|ENDP|ENTRY|EQU|EXPORT|EXPORTAS|EXTERN|FIELD|FILL|FN|FUNCTION|GBLA|GBLL|GBLS|GET|GLOBAL|IF|IMPORT|INCBIN|INCLUDE|INFO|KEEP|LCLA|LCLL|LCLS|LTORG|MACRO|MAP|MEND|MEXIT|NOFP|OPT|PRESERVE8|PROC|QN|READONLY|RELOC|REQUIRE|REQUIRE8|RLIST|ROUT|SETA|SETL|SETS|SN|SPACE|SUBT|THUMB|THUMBX|TTL|WEND|WHILE)\b/, - alias: 'property' - }, - 'instruction': { - pattern: /((?:^|(?:^|[^\\])(?:\r\n?|\n))[ \t]*(?:(?:[A-Z][A-Z0-9_]*[a-z]\w*|[a-z]\w*|\d+)[ \t]+)?)\b[A-Z.]+\b/, - lookbehind: true, - alias: 'keyword' - }, - 'variable': /\$\w+/, - - 'number': /(?:\b[2-9]_\d+|(?:\b\d+(?:\.\d+)?|\B\.\d+)(?:e-?\d+)?|\b0(?:[fd]_|x)[0-9a-f]+|&[0-9a-f]+)\b/i, - - 'register': { - pattern: /\b(?:r\d|lr)\b/, - alias: 'symbol' - }, - - 'operator': /<>|<<|>>|&&|\|\||[=!<>/]=?|[+\-*%#?&|^]|:[A-Z]+:/, - 'punctuation': /[()[\],]/ -}; - -Prism.languages['arm-asm'] = Prism.languages.armasm; diff --git a/components/prism-armasm.min.js b/components/prism-armasm.min.js deleted file mode 100644 index 620549bd32..0000000000 --- a/components/prism-armasm.min.js +++ /dev/null @@ -1 +0,0 @@ -Prism.languages.armasm={comment:{pattern:/;.*/,greedy:!0},string:{pattern:/"(?:[^"\r\n]|"")*"/,greedy:!0,inside:{variable:{pattern:/((?:^|[^$])(?:\${2})*)\$\w+/,lookbehind:!0}}},char:{pattern:/'(?:[^'\r\n]{0,4}|'')'/,greedy:!0},"version-symbol":{pattern:/\|[\w@]+\|/,greedy:!0,alias:"property"},boolean:/\b(?:FALSE|TRUE)\b/,directive:{pattern:/\b(?:ALIAS|ALIGN|AREA|ARM|ASSERT|ATTR|CN|CODE|CODE16|CODE32|COMMON|CP|DATA|DCB|DCD|DCDO|DCDU|DCFD|DCFDU|DCI|DCQ|DCQU|DCW|DCWU|DN|ELIF|ELSE|END|ENDFUNC|ENDIF|ENDP|ENTRY|EQU|EXPORT|EXPORTAS|EXTERN|FIELD|FILL|FN|FUNCTION|GBLA|GBLL|GBLS|GET|GLOBAL|IF|IMPORT|INCBIN|INCLUDE|INFO|KEEP|LCLA|LCLL|LCLS|LTORG|MACRO|MAP|MEND|MEXIT|NOFP|OPT|PRESERVE8|PROC|QN|READONLY|RELOC|REQUIRE|REQUIRE8|RLIST|ROUT|SETA|SETL|SETS|SN|SPACE|SUBT|THUMB|THUMBX|TTL|WEND|WHILE)\b/,alias:"property"},instruction:{pattern:/((?:^|(?:^|[^\\])(?:\r\n?|\n))[ \t]*(?:(?:[A-Z][A-Z0-9_]*[a-z]\w*|[a-z]\w*|\d+)[ \t]+)?)\b[A-Z.]+\b/,lookbehind:!0,alias:"keyword"},variable:/\$\w+/,number:/(?:\b[2-9]_\d+|(?:\b\d+(?:\.\d+)?|\B\.\d+)(?:e-?\d+)?|\b0(?:[fd]_|x)[0-9a-f]+|&[0-9a-f]+)\b/i,register:{pattern:/\b(?:r\d|lr)\b/,alias:"symbol"},operator:/<>|<<|>>|&&|\|\||[=!<>/]=?|[+\-*%#?&|^]|:[A-Z]+:/,punctuation:/[()[\],]/},Prism.languages["arm-asm"]=Prism.languages.armasm; \ No newline at end of file diff --git a/components/prism-arturo.js b/components/prism-arturo.js deleted file mode 100644 index d09b5e27ef..0000000000 --- a/components/prism-arturo.js +++ /dev/null @@ -1,105 +0,0 @@ -(function (Prism) { - /** - * @param {string} lang - * @param {string} pattern - */ - var createLanguageString = function (lang, pattern) { - return { - pattern: RegExp(/\{!/.source + '(?:' + (pattern || lang) + ')' + /$[\s\S]*\}/.source, 'm'), - greedy: true, - inside: { - 'embedded': { - pattern: /(^\{!\w+\b)[\s\S]+(?=\}$)/, - lookbehind: true, - alias: 'language-' + lang, - inside: Prism.languages[lang] - }, - 'string': /[\s\S]+/ - } - }; - }; - - Prism.languages.arturo = { - 'comment': { - pattern: /;.*/, - greedy: true - }, - - 'character': { - pattern: /`.`/, - alias: 'char', - greedy: true - }, - - 'number': { - pattern: /\b\d+(?:\.\d+(?:\.\d+(?:-[\w+-]+)?)?)?\b/, - }, - - 'string': { - pattern: /"(?:[^"\\\r\n]|\\.)*"/, - greedy: true - }, - - 'regex': { - pattern: /\{\/.*?\/\}/, - greedy: true - }, - - 'html-string': createLanguageString('html'), - 'css-string': createLanguageString('css'), - 'js-string': createLanguageString('js'), - 'md-string': createLanguageString('md'), - 'sql-string': createLanguageString('sql'), - 'sh-string': createLanguageString('shell', 'sh'), - - 'multistring': { - pattern: /».*|\{:[\s\S]*?:\}|\{[\s\S]*?\}|^-{6}$[\s\S]*/m, - alias: 'string', - greedy: true - }, - - 'label': { - pattern: /\w+\b\??:/, - alias: 'property' - }, - - 'literal': { - pattern: /'(?:\w+\b\??:?)/, - alias: 'constant' - }, - - 'type': { - pattern: /:(?:\w+\b\??:?)/, - alias: 'class-name' - }, - - 'color': /#\w+/, - - 'predicate': { - pattern: /\b(?:all|and|any|ascii|attr|attribute|attributeLabel|binary|block|char|contains|database|date|dictionary|empty|equal|even|every|exists|false|floating|function|greater|greaterOrEqual|if|in|inline|integer|is|key|label|leap|less|lessOrEqual|literal|logical|lower|nand|negative|nor|not|notEqual|null|numeric|odd|or|path|pathLabel|positive|prefix|prime|regex|same|set|some|sorted|standalone|string|subset|suffix|superset|symbol|symbolLiteral|true|try|type|unless|upper|when|whitespace|word|xnor|xor|zero)\?/, - alias: 'keyword' - }, - - 'builtin-function': { - pattern: /\b(?:abs|acos|acosh|acsec|acsech|actan|actanh|add|after|alert|alias|and|angle|append|arg|args|arity|array|as|asec|asech|asin|asinh|atan|atan2|atanh|attr|attrs|average|before|benchmark|blend|break|call|capitalize|case|ceil|chop|clear|clip|close|color|combine|conj|continue|copy|cos|cosh|crc|csec|csech|ctan|ctanh|cursor|darken|dec|decode|define|delete|desaturate|deviation|dialog|dictionary|difference|digest|digits|div|do|download|drop|dup|e|else|empty|encode|ensure|env|escape|execute|exit|exp|extend|extract|factors|fdiv|filter|first|flatten|floor|fold|from|function|gamma|gcd|get|goto|hash|hypot|if|inc|indent|index|infinity|info|input|insert|inspect|intersection|invert|jaro|join|keys|kurtosis|last|let|levenshtein|lighten|list|ln|log|loop|lower|mail|map|match|max|median|min|mod|module|mul|nand|neg|new|nor|normalize|not|now|null|open|or|outdent|pad|palette|panic|path|pause|permissions|permutate|pi|pop|popup|pow|powerset|powmod|prefix|print|prints|process|product|query|random|range|read|relative|remove|rename|render|repeat|replace|request|return|reverse|round|sample|saturate|script|sec|sech|select|serve|set|shl|shr|shuffle|sin|sinh|size|skewness|slice|sort|spin|split|sqrt|squeeze|stack|strip|sub|suffix|sum|switch|symbols|symlink|sys|take|tan|tanh|terminal|terminate|to|truncate|try|type|unclip|union|unique|unless|until|unzip|upper|values|var|variance|volume|webview|while|with|wordwrap|write|xnor|xor|zip)\b/, - alias: 'keyword' - }, - - 'sugar': { - pattern: /->|=>|\||::/, - alias: 'operator' - }, - - 'punctuation': /[()[\],]/, - - 'symbol': { - pattern: /<:|-:|ø|@|#|\+|\||\*|\$|---|-|%|\/|\.\.|\^|~|=|<|>|\\/ - }, - - 'boolean': { - pattern: /\b(?:false|maybe|true)\b/ - } - }; - - Prism.languages.art = Prism.languages['arturo']; -}(Prism)); diff --git a/components/prism-arturo.min.js b/components/prism-arturo.min.js deleted file mode 100644 index f17b130a17..0000000000 --- a/components/prism-arturo.min.js +++ /dev/null @@ -1 +0,0 @@ -!function(e){var a=function(a,t){return{pattern:RegExp("\\{!(?:"+(t||a)+")$[^]*\\}","m"),greedy:!0,inside:{embedded:{pattern:/(^\{!\w+\b)[\s\S]+(?=\}$)/,lookbehind:!0,alias:"language-"+a,inside:e.languages[a]},string:/[\s\S]+/}}};e.languages.arturo={comment:{pattern:/;.*/,greedy:!0},character:{pattern:/`.`/,alias:"char",greedy:!0},number:{pattern:/\b\d+(?:\.\d+(?:\.\d+(?:-[\w+-]+)?)?)?\b/},string:{pattern:/"(?:[^"\\\r\n]|\\.)*"/,greedy:!0},regex:{pattern:/\{\/.*?\/\}/,greedy:!0},"html-string":a("html"),"css-string":a("css"),"js-string":a("js"),"md-string":a("md"),"sql-string":a("sql"),"sh-string":a("shell","sh"),multistring:{pattern:/».*|\{:[\s\S]*?:\}|\{[\s\S]*?\}|^-{6}$[\s\S]*/m,alias:"string",greedy:!0},label:{pattern:/\w+\b\??:/,alias:"property"},literal:{pattern:/'(?:\w+\b\??:?)/,alias:"constant"},type:{pattern:/:(?:\w+\b\??:?)/,alias:"class-name"},color:/#\w+/,predicate:{pattern:/\b(?:all|and|any|ascii|attr|attribute|attributeLabel|binary|block|char|contains|database|date|dictionary|empty|equal|even|every|exists|false|floating|function|greater|greaterOrEqual|if|in|inline|integer|is|key|label|leap|less|lessOrEqual|literal|logical|lower|nand|negative|nor|not|notEqual|null|numeric|odd|or|path|pathLabel|positive|prefix|prime|regex|same|set|some|sorted|standalone|string|subset|suffix|superset|symbol|symbolLiteral|true|try|type|unless|upper|when|whitespace|word|xnor|xor|zero)\?/,alias:"keyword"},"builtin-function":{pattern:/\b(?:abs|acos|acosh|acsec|acsech|actan|actanh|add|after|alert|alias|and|angle|append|arg|args|arity|array|as|asec|asech|asin|asinh|atan|atan2|atanh|attr|attrs|average|before|benchmark|blend|break|call|capitalize|case|ceil|chop|clear|clip|close|color|combine|conj|continue|copy|cos|cosh|crc|csec|csech|ctan|ctanh|cursor|darken|dec|decode|define|delete|desaturate|deviation|dialog|dictionary|difference|digest|digits|div|do|download|drop|dup|e|else|empty|encode|ensure|env|escape|execute|exit|exp|extend|extract|factors|fdiv|filter|first|flatten|floor|fold|from|function|gamma|gcd|get|goto|hash|hypot|if|inc|indent|index|infinity|info|input|insert|inspect|intersection|invert|jaro|join|keys|kurtosis|last|let|levenshtein|lighten|list|ln|log|loop|lower|mail|map|match|max|median|min|mod|module|mul|nand|neg|new|nor|normalize|not|now|null|open|or|outdent|pad|palette|panic|path|pause|permissions|permutate|pi|pop|popup|pow|powerset|powmod|prefix|print|prints|process|product|query|random|range|read|relative|remove|rename|render|repeat|replace|request|return|reverse|round|sample|saturate|script|sec|sech|select|serve|set|shl|shr|shuffle|sin|sinh|size|skewness|slice|sort|spin|split|sqrt|squeeze|stack|strip|sub|suffix|sum|switch|symbols|symlink|sys|take|tan|tanh|terminal|terminate|to|truncate|try|type|unclip|union|unique|unless|until|unzip|upper|values|var|variance|volume|webview|while|with|wordwrap|write|xnor|xor|zip)\b/,alias:"keyword"},sugar:{pattern:/->|=>|\||::/,alias:"operator"},punctuation:/[()[\],]/,symbol:{pattern:/<:|-:|ø|@|#|\+|\||\*|\$|---|-|%|\/|\.\.|\^|~|=|<|>|\\/},boolean:{pattern:/\b(?:false|maybe|true)\b/}},e.languages.art=e.languages.arturo}(Prism); \ No newline at end of file diff --git a/components/prism-asciidoc.js b/components/prism-asciidoc.js deleted file mode 100644 index b639a1756e..0000000000 --- a/components/prism-asciidoc.js +++ /dev/null @@ -1,234 +0,0 @@ -(function (Prism) { - - var attributes = { - pattern: /(^[ \t]*)\[(?!\[)(?:(["'$`])(?:(?!\2)[^\\]|\\.)*\2|\[(?:[^\[\]\\]|\\.)*\]|[^\[\]\\"'$`]|\\.)*\]/m, - lookbehind: true, - inside: { - 'quoted': { - pattern: /([$`])(?:(?!\1)[^\\]|\\.)*\1/, - inside: { - 'punctuation': /^[$`]|[$`]$/ - } - }, - 'interpreted': { - pattern: /'(?:[^'\\]|\\.)*'/, - inside: { - 'punctuation': /^'|'$/ - // See rest below - } - }, - 'string': /"(?:[^"\\]|\\.)*"/, - 'variable': /\w+(?==)/, - 'punctuation': /^\[|\]$|,/, - 'operator': /=/, - // The negative look-ahead prevents blank matches - 'attr-value': /(?!^\s+$).+/ - } - }; - - var asciidoc = Prism.languages.asciidoc = { - 'comment-block': { - pattern: /^(\/{4,})$[\s\S]*?^\1/m, - alias: 'comment' - }, - 'table': { - pattern: /^\|={3,}(?:(?:\r?\n|\r(?!\n)).*)*?(?:\r?\n|\r)\|={3,}$/m, - inside: { - 'specifiers': { - pattern: /(?:(?:(?:\d+(?:\.\d+)?|\.\d+)[+*](?:[<^>](?:\.[<^>])?|\.[<^>])?|[<^>](?:\.[<^>])?|\.[<^>])[a-z]*|[a-z]+)(?=\|)/, - alias: 'attr-value' - }, - 'punctuation': { - pattern: /(^|[^\\])[|!]=*/, - lookbehind: true - } - // See rest below - } - }, - - 'passthrough-block': { - pattern: /^(\+{4,})$[\s\S]*?^\1$/m, - inside: { - 'punctuation': /^\++|\++$/ - // See rest below - } - }, - // Literal blocks and listing blocks - 'literal-block': { - pattern: /^(-{4,}|\.{4,})$[\s\S]*?^\1$/m, - inside: { - 'punctuation': /^(?:-+|\.+)|(?:-+|\.+)$/ - // See rest below - } - }, - // Sidebar blocks, quote blocks, example blocks and open blocks - 'other-block': { - pattern: /^(--|\*{4,}|_{4,}|={4,})$[\s\S]*?^\1$/m, - inside: { - 'punctuation': /^(?:-+|\*+|_+|=+)|(?:-+|\*+|_+|=+)$/ - // See rest below - } - }, - - // list-punctuation and list-label must appear before indented-block - 'list-punctuation': { - pattern: /(^[ \t]*)(?:-|\*{1,5}|\.{1,5}|(?:[a-z]|\d+)\.|[xvi]+\))(?= )/im, - lookbehind: true, - alias: 'punctuation' - }, - 'list-label': { - pattern: /(^[ \t]*)[a-z\d].+(?::{2,4}|;;)(?=\s)/im, - lookbehind: true, - alias: 'symbol' - }, - 'indented-block': { - pattern: /((\r?\n|\r)\2)([ \t]+)\S.*(?:(?:\r?\n|\r)\3.+)*(?=\2{2}|$)/, - lookbehind: true - }, - - 'comment': /^\/\/.*/m, - 'title': { - pattern: /^.+(?:\r?\n|\r)(?:={3,}|-{3,}|~{3,}|\^{3,}|\+{3,})$|^={1,5} .+|^\.(?![\s.]).*/m, - alias: 'important', - inside: { - 'punctuation': /^(?:\.|=+)|(?:=+|-+|~+|\^+|\++)$/ - // See rest below - } - }, - 'attribute-entry': { - pattern: /^:[^:\r\n]+:(?: .*?(?: \+(?:\r?\n|\r).*?)*)?$/m, - alias: 'tag' - }, - 'attributes': attributes, - 'hr': { - pattern: /^'{3,}$/m, - alias: 'punctuation' - }, - 'page-break': { - pattern: /^<{3,}$/m, - alias: 'punctuation' - }, - 'admonition': { - pattern: /^(?:CAUTION|IMPORTANT|NOTE|TIP|WARNING):/m, - alias: 'keyword' - }, - 'callout': [ - { - pattern: /(^[ \t]*)/m, - lookbehind: true, - alias: 'symbol' - }, - { - pattern: /<\d+>/, - alias: 'symbol' - } - ], - 'macro': { - pattern: /\b[a-z\d][a-z\d-]*::?(?:[^\s\[\]]*\[(?:[^\]\\"']|(["'])(?:(?!\1)[^\\]|\\.)*\1|\\.)*\])/, - inside: { - 'function': /^[a-z\d-]+(?=:)/, - 'punctuation': /^::?/, - 'attributes': { - pattern: /(?:\[(?:[^\]\\"']|(["'])(?:(?!\1)[^\\]|\\.)*\1|\\.)*\])/, - inside: attributes.inside - } - } - }, - 'inline': { - /* - The initial look-behind prevents the highlighting of escaped quoted text. - - Quoted text can be multi-line but cannot span an empty line. - All quoted text can have attributes before [foobar, 'foobar', baz="bar"]. - - First, we handle the constrained quotes. - Those must be bounded by non-word chars and cannot have spaces between the delimiter and the first char. - They are, in order: _emphasis_, ``double quotes'', `single quotes', `monospace`, 'emphasis', *strong*, +monospace+ and #unquoted# - - Then we handle the unconstrained quotes. - Those do not have the restrictions of the constrained quotes. - They are, in order: __emphasis__, **strong**, ++monospace++, +++passthrough+++, ##unquoted##, $$passthrough$$, ~subscript~, ^superscript^, {attribute-reference}, [[anchor]], [[[bibliography anchor]]], <>, (((indexes))) and ((indexes)) - */ - pattern: /(^|[^\\])(?:(?:\B\[(?:[^\]\\"']|(["'])(?:(?!\2)[^\\]|\\.)*\2|\\.)*\])?(?:\b_(?!\s)(?: _|[^_\\\r\n]|\\.)+(?:(?:\r?\n|\r)(?: _|[^_\\\r\n]|\\.)+)*_\b|\B``(?!\s).+?(?:(?:\r?\n|\r).+?)*''\B|\B`(?!\s)(?:[^`'\s]|\s+\S)+['`]\B|\B(['*+#])(?!\s)(?: \3|(?!\3)[^\\\r\n]|\\.)+(?:(?:\r?\n|\r)(?: \3|(?!\3)[^\\\r\n]|\\.)+)*\3\B)|(?:\[(?:[^\]\\"']|(["'])(?:(?!\4)[^\\]|\\.)*\4|\\.)*\])?(?:(__|\*\*|\+\+\+?|##|\$\$|[~^]).+?(?:(?:\r?\n|\r).+?)*\5|\{[^}\r\n]+\}|\[\[\[?.+?(?:(?:\r?\n|\r).+?)*\]?\]\]|<<.+?(?:(?:\r?\n|\r).+?)*>>|\(\(\(?.+?(?:(?:\r?\n|\r).+?)*\)?\)\)))/m, - lookbehind: true, - inside: { - 'attributes': attributes, - 'url': { - pattern: /^(?:\[\[\[?.+?\]?\]\]|<<.+?>>)$/, - inside: { - 'punctuation': /^(?:\[\[\[?|<<)|(?:\]\]\]?|>>)$/ - } - }, - 'attribute-ref': { - pattern: /^\{.+\}$/, - inside: { - 'variable': { - pattern: /(^\{)[a-z\d,+_-]+/, - lookbehind: true - }, - 'operator': /^[=?!#%@$]|!(?=[:}])/, - 'punctuation': /^\{|\}$|::?/ - } - }, - 'italic': { - pattern: /^(['_])[\s\S]+\1$/, - inside: { - 'punctuation': /^(?:''?|__?)|(?:''?|__?)$/ - } - }, - 'bold': { - pattern: /^\*[\s\S]+\*$/, - inside: { - punctuation: /^\*\*?|\*\*?$/ - } - }, - 'punctuation': /^(?:``?|\+{1,3}|##?|\$\$|[~^]|\(\(\(?)|(?:''?|\+{1,3}|##?|\$\$|[~^`]|\)?\)\))$/ - } - }, - 'replacement': { - pattern: /\((?:C|R|TM)\)/, - alias: 'builtin' - }, - 'entity': /&#?[\da-z]{1,8};/i, - 'line-continuation': { - pattern: /(^| )\+$/m, - lookbehind: true, - alias: 'punctuation' - } - }; - - - // Allow some nesting. There is no recursion though, so cloning should not be needed. - - function copyFromAsciiDoc(keys) { - keys = keys.split(' '); - - var o = {}; - for (var i = 0, l = keys.length; i < l; i++) { - o[keys[i]] = asciidoc[keys[i]]; - } - return o; - } - - attributes.inside['interpreted'].inside.rest = copyFromAsciiDoc('macro inline replacement entity'); - - asciidoc['passthrough-block'].inside.rest = copyFromAsciiDoc('macro'); - - asciidoc['literal-block'].inside.rest = copyFromAsciiDoc('callout'); - - asciidoc['table'].inside.rest = copyFromAsciiDoc('comment-block passthrough-block literal-block other-block list-punctuation indented-block comment title attribute-entry attributes hr page-break admonition list-label callout macro inline replacement entity line-continuation'); - - asciidoc['other-block'].inside.rest = copyFromAsciiDoc('table list-punctuation indented-block comment attribute-entry attributes hr page-break admonition list-label macro inline replacement entity line-continuation'); - - asciidoc['title'].inside.rest = copyFromAsciiDoc('macro inline replacement entity'); - - - // Plugin to make entity title show the real entity, idea by Roman Komarov - Prism.hooks.add('wrap', function (env) { - if (env.type === 'entity') { - env.attributes['title'] = env.content.replace(/&/, '&'); - } - }); - - Prism.languages.adoc = Prism.languages.asciidoc; -}(Prism)); diff --git a/components/prism-asciidoc.min.js b/components/prism-asciidoc.min.js deleted file mode 100644 index 6ca04ca364..0000000000 --- a/components/prism-asciidoc.min.js +++ /dev/null @@ -1 +0,0 @@ -!function(t){var n={pattern:/(^[ \t]*)\[(?!\[)(?:(["'$`])(?:(?!\2)[^\\]|\\.)*\2|\[(?:[^\[\]\\]|\\.)*\]|[^\[\]\\"'$`]|\\.)*\]/m,lookbehind:!0,inside:{quoted:{pattern:/([$`])(?:(?!\1)[^\\]|\\.)*\1/,inside:{punctuation:/^[$`]|[$`]$/}},interpreted:{pattern:/'(?:[^'\\]|\\.)*'/,inside:{punctuation:/^'|'$/}},string:/"(?:[^"\\]|\\.)*"/,variable:/\w+(?==)/,punctuation:/^\[|\]$|,/,operator:/=/,"attr-value":/(?!^\s+$).+/}},i=t.languages.asciidoc={"comment-block":{pattern:/^(\/{4,})$[\s\S]*?^\1/m,alias:"comment"},table:{pattern:/^\|={3,}(?:(?:\r?\n|\r(?!\n)).*)*?(?:\r?\n|\r)\|={3,}$/m,inside:{specifiers:{pattern:/(?:(?:(?:\d+(?:\.\d+)?|\.\d+)[+*](?:[<^>](?:\.[<^>])?|\.[<^>])?|[<^>](?:\.[<^>])?|\.[<^>])[a-z]*|[a-z]+)(?=\|)/,alias:"attr-value"},punctuation:{pattern:/(^|[^\\])[|!]=*/,lookbehind:!0}}},"passthrough-block":{pattern:/^(\+{4,})$[\s\S]*?^\1$/m,inside:{punctuation:/^\++|\++$/}},"literal-block":{pattern:/^(-{4,}|\.{4,})$[\s\S]*?^\1$/m,inside:{punctuation:/^(?:-+|\.+)|(?:-+|\.+)$/}},"other-block":{pattern:/^(--|\*{4,}|_{4,}|={4,})$[\s\S]*?^\1$/m,inside:{punctuation:/^(?:-+|\*+|_+|=+)|(?:-+|\*+|_+|=+)$/}},"list-punctuation":{pattern:/(^[ \t]*)(?:-|\*{1,5}|\.{1,5}|(?:[a-z]|\d+)\.|[xvi]+\))(?= )/im,lookbehind:!0,alias:"punctuation"},"list-label":{pattern:/(^[ \t]*)[a-z\d].+(?::{2,4}|;;)(?=\s)/im,lookbehind:!0,alias:"symbol"},"indented-block":{pattern:/((\r?\n|\r)\2)([ \t]+)\S.*(?:(?:\r?\n|\r)\3.+)*(?=\2{2}|$)/,lookbehind:!0},comment:/^\/\/.*/m,title:{pattern:/^.+(?:\r?\n|\r)(?:={3,}|-{3,}|~{3,}|\^{3,}|\+{3,})$|^={1,5} .+|^\.(?![\s.]).*/m,alias:"important",inside:{punctuation:/^(?:\.|=+)|(?:=+|-+|~+|\^+|\++)$/}},"attribute-entry":{pattern:/^:[^:\r\n]+:(?: .*?(?: \+(?:\r?\n|\r).*?)*)?$/m,alias:"tag"},attributes:n,hr:{pattern:/^'{3,}$/m,alias:"punctuation"},"page-break":{pattern:/^<{3,}$/m,alias:"punctuation"},admonition:{pattern:/^(?:CAUTION|IMPORTANT|NOTE|TIP|WARNING):/m,alias:"keyword"},callout:[{pattern:/(^[ \t]*)/m,lookbehind:!0,alias:"symbol"},{pattern:/<\d+>/,alias:"symbol"}],macro:{pattern:/\b[a-z\d][a-z\d-]*::?(?:[^\s\[\]]*\[(?:[^\]\\"']|(["'])(?:(?!\1)[^\\]|\\.)*\1|\\.)*\])/,inside:{function:/^[a-z\d-]+(?=:)/,punctuation:/^::?/,attributes:{pattern:/(?:\[(?:[^\]\\"']|(["'])(?:(?!\1)[^\\]|\\.)*\1|\\.)*\])/,inside:n.inside}}},inline:{pattern:/(^|[^\\])(?:(?:\B\[(?:[^\]\\"']|(["'])(?:(?!\2)[^\\]|\\.)*\2|\\.)*\])?(?:\b_(?!\s)(?: _|[^_\\\r\n]|\\.)+(?:(?:\r?\n|\r)(?: _|[^_\\\r\n]|\\.)+)*_\b|\B``(?!\s).+?(?:(?:\r?\n|\r).+?)*''\B|\B`(?!\s)(?:[^`'\s]|\s+\S)+['`]\B|\B(['*+#])(?!\s)(?: \3|(?!\3)[^\\\r\n]|\\.)+(?:(?:\r?\n|\r)(?: \3|(?!\3)[^\\\r\n]|\\.)+)*\3\B)|(?:\[(?:[^\]\\"']|(["'])(?:(?!\4)[^\\]|\\.)*\4|\\.)*\])?(?:(__|\*\*|\+\+\+?|##|\$\$|[~^]).+?(?:(?:\r?\n|\r).+?)*\5|\{[^}\r\n]+\}|\[\[\[?.+?(?:(?:\r?\n|\r).+?)*\]?\]\]|<<.+?(?:(?:\r?\n|\r).+?)*>>|\(\(\(?.+?(?:(?:\r?\n|\r).+?)*\)?\)\)))/m,lookbehind:!0,inside:{attributes:n,url:{pattern:/^(?:\[\[\[?.+?\]?\]\]|<<.+?>>)$/,inside:{punctuation:/^(?:\[\[\[?|<<)|(?:\]\]\]?|>>)$/}},"attribute-ref":{pattern:/^\{.+\}$/,inside:{variable:{pattern:/(^\{)[a-z\d,+_-]+/,lookbehind:!0},operator:/^[=?!#%@$]|!(?=[:}])/,punctuation:/^\{|\}$|::?/}},italic:{pattern:/^(['_])[\s\S]+\1$/,inside:{punctuation:/^(?:''?|__?)|(?:''?|__?)$/}},bold:{pattern:/^\*[\s\S]+\*$/,inside:{punctuation:/^\*\*?|\*\*?$/}},punctuation:/^(?:``?|\+{1,3}|##?|\$\$|[~^]|\(\(\(?)|(?:''?|\+{1,3}|##?|\$\$|[~^`]|\)?\)\))$/}},replacement:{pattern:/\((?:C|R|TM)\)/,alias:"builtin"},entity:/&#?[\da-z]{1,8};/i,"line-continuation":{pattern:/(^| )\+$/m,lookbehind:!0,alias:"punctuation"}};function e(t){for(var n={},e=0,a=(t=t.split(" ")).length;e>=?|<<=?|&[&=]?|\|[\|=]?|[-+*/%^!=<>?]=?/, - 'punctuation': /[(),:]/ -}; diff --git a/components/prism-asmatmel.min.js b/components/prism-asmatmel.min.js deleted file mode 100644 index 8c021f9ead..0000000000 --- a/components/prism-asmatmel.min.js +++ /dev/null @@ -1 +0,0 @@ -Prism.languages.asmatmel={comment:{pattern:/;.*/,greedy:!0},string:{pattern:/(["'`])(?:\\.|(?!\1)[^\\\r\n])*\1/,greedy:!0},constant:/\b(?:PORT[A-Z]|DDR[A-Z]|(?:DD|P)[A-Z](?:\d|[0-2]\d|3[01]))\b/,directive:{pattern:/\.\w+(?= )/,alias:"property"},"r-register":{pattern:/\br(?:\d|[12]\d|3[01])\b/,alias:"variable"},"op-code":{pattern:/\b(?:ADC|ADD|ADIW|AND|ANDI|ASR|BCLR|BLD|BRBC|BRBS|BRCC|BRCS|BREAK|BREQ|BRGE|BRHC|BRHS|BRID|BRIE|BRLO|BRLT|BRMI|BRNE|BRPL|BRSH|BRTC|BRTS|BRVC|BRVS|BSET|BST|CALL|CBI|CBR|CLC|CLH|CLI|CLN|CLR|CLS|CLT|CLV|CLZ|COM|CP|CPC|CPI|CPSE|DEC|DES|EICALL|EIJMP|ELPM|EOR|FMUL|FMULS|FMULSU|ICALL|IJMP|IN|INC|JMP|LAC|LAS|LAT|LD|LD[A-Za-z0-9]|LPM|LSL|LSR|MOV|MOVW|MUL|MULS|MULSU|NEG|NOP|OR|ORI|OUT|POP|PUSH|RCALL|RET|RETI|RJMP|ROL|ROR|SBC|SBCI|SBI|SBIC|SBIS|SBIW|SBR|SBRC|SBRS|SEC|SEH|SEI|SEN|SER|SES|SET|SEV|SEZ|SLEEP|SPM|ST|ST[A-Z0-9]|SUB|SUBI|SWAP|TST|WDR|XCH|adc|add|adiw|and|andi|asr|bclr|bld|brbc|brbs|brcc|brcs|break|breq|brge|brhc|brhs|brid|brie|brlo|brlt|brmi|brne|brpl|brsh|brtc|brts|brvc|brvs|bset|bst|call|cbi|cbr|clc|clh|cli|cln|clr|cls|clt|clv|clz|com|cp|cpc|cpi|cpse|dec|des|eicall|eijmp|elpm|eor|fmul|fmuls|fmulsu|icall|ijmp|in|inc|jmp|lac|las|lat|ld|ld[a-z0-9]|lpm|lsl|lsr|mov|movw|mul|muls|mulsu|neg|nop|or|ori|out|pop|push|rcall|ret|reti|rjmp|rol|ror|sbc|sbci|sbi|sbic|sbis|sbiw|sbr|sbrc|sbrs|sec|seh|sei|sen|ser|ses|set|sev|sez|sleep|spm|st|st[a-zA-Z0-9]|sub|subi|swap|tst|wdr|xch)\b/,alias:"keyword"},"hex-number":{pattern:/#?\$[\da-f]{2,4}\b/i,alias:"number"},"binary-number":{pattern:/#?%[01]+\b/,alias:"number"},"decimal-number":{pattern:/#?\b\d+\b/,alias:"number"},register:{pattern:/\b[acznvshtixy]\b/i,alias:"variable"},operator:/>>=?|<<=?|&[&=]?|\|[\|=]?|[-+*/%^!=<>?]=?/,punctuation:/[(),:]/}; \ No newline at end of file diff --git a/components/prism-aspnet.js b/components/prism-aspnet.js deleted file mode 100644 index 1b1348c5d1..0000000000 --- a/components/prism-aspnet.js +++ /dev/null @@ -1,48 +0,0 @@ -Prism.languages.aspnet = Prism.languages.extend('markup', { - 'page-directive': { - pattern: /<%\s*@.*%>/, - alias: 'tag', - inside: { - 'page-directive': { - pattern: /<%\s*@\s*(?:Assembly|Control|Implements|Import|Master(?:Type)?|OutputCache|Page|PreviousPageType|Reference|Register)?|%>/i, - alias: 'tag' - }, - rest: Prism.languages.markup.tag.inside - } - }, - 'directive': { - pattern: /<%.*%>/, - alias: 'tag', - inside: { - 'directive': { - pattern: /<%\s*?[$=%#:]{0,2}|%>/, - alias: 'tag' - }, - rest: Prism.languages.csharp - } - } -}); -// Regexp copied from prism-markup, with a negative look-ahead added -Prism.languages.aspnet.tag.pattern = /<(?!%)\/?[^\s>\/]+(?:\s+[^\s>\/=]+(?:=(?:("|')(?:\\[\s\S]|(?!\1)[^\\])*\1|[^\s'">=]+))?)*\s*\/?>/; - -// match directives of attribute value foo="<% Bar %>" -Prism.languages.insertBefore('inside', 'punctuation', { - 'directive': Prism.languages.aspnet['directive'] -}, Prism.languages.aspnet.tag.inside['attr-value']); - -Prism.languages.insertBefore('aspnet', 'comment', { - 'asp-comment': { - pattern: /<%--[\s\S]*?--%>/, - alias: ['asp', 'comment'] - } -}); - -// script runat="server" contains csharp, not javascript -Prism.languages.insertBefore('aspnet', Prism.languages.javascript ? 'script' : 'tag', { - 'asp-script': { - pattern: /(]*>)[\s\S]*?(?=<\/script>)/i, - lookbehind: true, - alias: ['asp', 'script'], - inside: Prism.languages.csharp || {} - } -}); diff --git a/components/prism-aspnet.min.js b/components/prism-aspnet.min.js deleted file mode 100644 index f9161fc659..0000000000 --- a/components/prism-aspnet.min.js +++ /dev/null @@ -1 +0,0 @@ -Prism.languages.aspnet=Prism.languages.extend("markup",{"page-directive":{pattern:/<%\s*@.*%>/,alias:"tag",inside:{"page-directive":{pattern:/<%\s*@\s*(?:Assembly|Control|Implements|Import|Master(?:Type)?|OutputCache|Page|PreviousPageType|Reference|Register)?|%>/i,alias:"tag"},rest:Prism.languages.markup.tag.inside}},directive:{pattern:/<%.*%>/,alias:"tag",inside:{directive:{pattern:/<%\s*?[$=%#:]{0,2}|%>/,alias:"tag"},rest:Prism.languages.csharp}}}),Prism.languages.aspnet.tag.pattern=/<(?!%)\/?[^\s>\/]+(?:\s+[^\s>\/=]+(?:=(?:("|')(?:\\[\s\S]|(?!\1)[^\\])*\1|[^\s'">=]+))?)*\s*\/?>/,Prism.languages.insertBefore("inside","punctuation",{directive:Prism.languages.aspnet.directive},Prism.languages.aspnet.tag.inside["attr-value"]),Prism.languages.insertBefore("aspnet","comment",{"asp-comment":{pattern:/<%--[\s\S]*?--%>/,alias:["asp","comment"]}}),Prism.languages.insertBefore("aspnet",Prism.languages.javascript?"script":"tag",{"asp-script":{pattern:/(]*>)[\s\S]*?(?=<\/script>)/i,lookbehind:!0,alias:["asp","script"],inside:Prism.languages.csharp||{}}}); \ No newline at end of file diff --git a/components/prism-autohotkey.js b/components/prism-autohotkey.js deleted file mode 100644 index eb68d154d2..0000000000 --- a/components/prism-autohotkey.js +++ /dev/null @@ -1,44 +0,0 @@ -// NOTES - follows first-first highlight method, block is locked after highlight, different from SyntaxHl -Prism.languages.autohotkey = { - 'comment': [ - { - pattern: /(^|\s);.*/, - lookbehind: true - }, - { - pattern: /(^[\t ]*)\/\*(?:[\r\n](?![ \t]*\*\/)|[^\r\n])*(?:[\r\n][ \t]*\*\/)?/m, - lookbehind: true, - greedy: true - } - ], - 'tag': { - // labels - pattern: /^([ \t]*)[^\s,`":]+(?=:[ \t]*$)/m, - lookbehind: true - }, - 'string': /"(?:[^"\n\r]|"")*"/, - 'variable': /%\w+%/, - 'number': /\b0x[\dA-Fa-f]+\b|(?:\b\d+(?:\.\d*)?|\B\.\d+)(?:[Ee]-?\d+)?/, - 'operator': /\?|\/\/?=?|:=|\|[=|]?|&[=&]?|\+[=+]?|-[=-]?|\*[=*]?|<(?:<=?|>|=)?|>>?=?|[.^!=~]=?|\b(?:AND|NOT|OR)\b/, - 'boolean': /\b(?:false|true)\b/, - - 'command': { - pattern: /\b(?:AutoTrim|BlockInput|Break|Click|ClipWait|Continue|Control|ControlClick|ControlFocus|ControlGet|ControlGetFocus|ControlGetPos|ControlGetText|ControlMove|ControlSend|ControlSendRaw|ControlSetText|CoordMode|Critical|DetectHiddenText|DetectHiddenWindows|Drive|DriveGet|DriveSpaceFree|EnvAdd|EnvDiv|EnvGet|EnvMult|EnvSet|EnvSub|EnvUpdate|Exit|ExitApp|FileAppend|FileCopy|FileCopyDir|FileCreateDir|FileCreateShortcut|FileDelete|FileEncoding|FileGetAttrib|FileGetShortcut|FileGetSize|FileGetTime|FileGetVersion|FileInstall|FileMove|FileMoveDir|FileRead|FileReadLine|FileRecycle|FileRecycleEmpty|FileRemoveDir|FileSelectFile|FileSelectFolder|FileSetAttrib|FileSetTime|FormatTime|GetKeyState|Gosub|Goto|GroupActivate|GroupAdd|GroupClose|GroupDeactivate|Gui|GuiControl|GuiControlGet|Hotkey|ImageSearch|IniDelete|IniRead|IniWrite|Input|InputBox|KeyWait|ListHotkeys|ListLines|ListVars|Loop|Menu|MouseClick|MouseClickDrag|MouseGetPos|MouseMove|MsgBox|OnExit|OutputDebug|Pause|PixelGetColor|PixelSearch|PostMessage|Process|Progress|Random|RegDelete|RegRead|RegWrite|Reload|Repeat|Return|Run|RunAs|RunWait|Send|SendEvent|SendInput|SendMessage|SendMode|SendPlay|SendRaw|SetBatchLines|SetCapslockState|SetControlDelay|SetDefaultMouseSpeed|SetEnv|SetFormat|SetKeyDelay|SetMouseDelay|SetNumlockState|SetRegView|SetScrollLockState|SetStoreCapslockMode|SetTimer|SetTitleMatchMode|SetWinDelay|SetWorkingDir|Shutdown|Sleep|Sort|SoundBeep|SoundGet|SoundGetWaveVolume|SoundPlay|SoundSet|SoundSetWaveVolume|SplashImage|SplashTextOff|SplashTextOn|SplitPath|StatusBarGetText|StatusBarWait|StringCaseSense|StringGetPos|StringLeft|StringLen|StringLower|StringMid|StringReplace|StringRight|StringSplit|StringTrimLeft|StringTrimRight|StringUpper|Suspend|SysGet|Thread|ToolTip|Transform|TrayTip|URLDownloadToFile|WinActivate|WinActivateBottom|WinClose|WinGet|WinGetActiveStats|WinGetActiveTitle|WinGetClass|WinGetPos|WinGetText|WinGetTitle|WinHide|WinKill|WinMaximize|WinMenuSelectItem|WinMinimize|WinMinimizeAll|WinMinimizeAllUndo|WinMove|WinRestore|WinSet|WinSetTitle|WinShow|WinWait|WinWaitActive|WinWaitClose|WinWaitNotActive)\b/i, - alias: 'selector' - }, - - 'constant': /\b(?:a_ahkpath|a_ahkversion|a_appdata|a_appdatacommon|a_autotrim|a_batchlines|a_caretx|a_carety|a_computername|a_controldelay|a_cursor|a_dd|a_ddd|a_dddd|a_defaultmousespeed|a_desktop|a_desktopcommon|a_detecthiddentext|a_detecthiddenwindows|a_endchar|a_eventinfo|a_exitreason|a_fileencoding|a_formatfloat|a_formatinteger|a_gui|a_guicontrol|a_guicontrolevent|a_guievent|a_guiheight|a_guiwidth|a_guix|a_guiy|a_hour|a_iconfile|a_iconhidden|a_iconnumber|a_icontip|a_index|a_ipaddress1|a_ipaddress2|a_ipaddress3|a_ipaddress4|a_is64bitos|a_isadmin|a_iscompiled|a_iscritical|a_ispaused|a_issuspended|a_isunicode|a_keydelay|a_language|a_lasterror|a_linefile|a_linenumber|a_loopfield|a_loopfileattrib|a_loopfiledir|a_loopfileext|a_loopfilefullpath|a_loopfilelongpath|a_loopfilename|a_loopfileshortname|a_loopfileshortpath|a_loopfilesize|a_loopfilesizekb|a_loopfilesizemb|a_loopfiletimeaccessed|a_loopfiletimecreated|a_loopfiletimemodified|a_loopreadline|a_loopregkey|a_loopregname|a_loopregsubkey|a_loopregtimemodified|a_loopregtype|a_mday|a_min|a_mm|a_mmm|a_mmmm|a_mon|a_mousedelay|a_msec|a_mydocuments|a_now|a_nowutc|a_numbatchlines|a_ostype|a_osversion|a_priorhotkey|a_priorkey|a_programfiles|a_programs|a_programscommon|a_ptrsize|a_regview|a_screendpi|a_screenheight|a_screenwidth|a_scriptdir|a_scriptfullpath|a_scripthwnd|a_scriptname|a_sec|a_space|a_startmenu|a_startmenucommon|a_startup|a_startupcommon|a_stringcasesense|a_tab|a_temp|a_thisfunc|a_thishotkey|a_thislabel|a_thismenu|a_thismenuitem|a_thismenuitempos|a_tickcount|a_timeidle|a_timeidlephysical|a_timesincepriorhotkey|a_timesincethishotkey|a_titlematchmode|a_titlematchmodespeed|a_username|a_wday|a_windelay|a_windir|a_workingdir|a_yday|a_year|a_yweek|a_yyyy|clipboard|clipboardall|comspec|errorlevel|programfiles)\b/i, - - 'builtin': /\b(?:abs|acos|asc|asin|atan|ceil|chr|class|comobjactive|comobjarray|comobjconnect|comobjcreate|comobjerror|comobjflags|comobjget|comobjquery|comobjtype|comobjvalue|cos|dllcall|exp|fileexist|Fileopen|floor|format|il_add|il_create|il_destroy|instr|isfunc|islabel|IsObject|ln|log|ltrim|lv_add|lv_delete|lv_deletecol|lv_getcount|lv_getnext|lv_gettext|lv_insert|lv_insertcol|lv_modify|lv_modifycol|lv_setimagelist|mod|numget|numput|onmessage|regexmatch|regexreplace|registercallback|round|rtrim|sb_seticon|sb_setparts|sb_settext|sin|sqrt|strlen|strreplace|strsplit|substr|tan|tv_add|tv_delete|tv_get|tv_getchild|tv_getcount|tv_getnext|tv_getparent|tv_getprev|tv_getselection|tv_gettext|tv_modify|varsetcapacity|winactive|winexist|__Call|__Get|__New|__Set)\b/i, - - 'symbol': /\b(?:alt|altdown|altup|appskey|backspace|browser_back|browser_favorites|browser_forward|browser_home|browser_refresh|browser_search|browser_stop|bs|capslock|ctrl|ctrlbreak|ctrldown|ctrlup|del|delete|down|end|enter|esc|escape|f1|f10|f11|f12|f13|f14|f15|f16|f17|f18|f19|f2|f20|f21|f22|f23|f24|f3|f4|f5|f6|f7|f8|f9|home|ins|insert|joy1|joy10|joy11|joy12|joy13|joy14|joy15|joy16|joy17|joy18|joy19|joy2|joy20|joy21|joy22|joy23|joy24|joy25|joy26|joy27|joy28|joy29|joy3|joy30|joy31|joy32|joy4|joy5|joy6|joy7|joy8|joy9|joyaxes|joybuttons|joyinfo|joyname|joypov|joyr|joyu|joyv|joyx|joyy|joyz|lalt|launch_app1|launch_app2|launch_mail|launch_media|lbutton|lcontrol|lctrl|left|lshift|lwin|lwindown|lwinup|mbutton|media_next|media_play_pause|media_prev|media_stop|numlock|numpad0|numpad1|numpad2|numpad3|numpad4|numpad5|numpad6|numpad7|numpad8|numpad9|numpadadd|numpadclear|numpaddel|numpaddiv|numpaddot|numpaddown|numpadend|numpadenter|numpadhome|numpadins|numpadleft|numpadmult|numpadpgdn|numpadpgup|numpadright|numpadsub|numpadup|pgdn|pgup|printscreen|ralt|rbutton|rcontrol|rctrl|right|rshift|rwin|rwindown|rwinup|scrolllock|shift|shiftdown|shiftup|space|tab|up|volume_down|volume_mute|volume_up|wheeldown|wheelleft|wheelright|wheelup|xbutton1|xbutton2)\b/i, - - 'directive': { - pattern: /#[a-z]+\b/i, - alias: 'important' - }, - - 'keyword': /\b(?:Abort|AboveNormal|Add|ahk_class|ahk_exe|ahk_group|ahk_id|ahk_pid|All|Alnum|Alpha|AltSubmit|AltTab|AltTabAndMenu|AltTabMenu|AltTabMenuDismiss|AlwaysOnTop|AutoSize|Background|BackgroundTrans|BelowNormal|between|BitAnd|BitNot|BitOr|BitShiftLeft|BitShiftRight|BitXOr|Bold|Border|Button|ByRef|Catch|Checkbox|Checked|CheckedGray|Choose|ChooseString|Close|Color|ComboBox|Contains|ControlList|Count|Date|DateTime|Days|DDL|Default|DeleteAll|Delimiter|Deref|Destroy|Digit|Disable|Disabled|DropDownList|Edit|Eject|Else|Enable|Enabled|Error|Exist|Expand|ExStyle|FileSystem|Finally|First|Flash|Float|FloatFast|Focus|Font|for|global|Grid|Group|GroupBox|GuiClose|GuiContextMenu|GuiDropFiles|GuiEscape|GuiSize|Hdr|Hidden|Hide|High|HKCC|HKCR|HKCU|HKEY_CLASSES_ROOT|HKEY_CURRENT_CONFIG|HKEY_CURRENT_USER|HKEY_LOCAL_MACHINE|HKEY_USERS|HKLM|HKU|Hours|HScroll|Icon|IconSmall|ID|IDLast|If|IfEqual|IfExist|IfGreater|IfGreaterOrEqual|IfInString|IfLess|IfLessOrEqual|IfMsgBox|IfNotEqual|IfNotExist|IfNotInString|IfWinActive|IfWinExist|IfWinNotActive|IfWinNotExist|Ignore|ImageList|in|Integer|IntegerFast|Interrupt|is|italic|Join|Label|LastFound|LastFoundExist|Limit|Lines|List|ListBox|ListView|local|Lock|Logoff|Low|Lower|Lowercase|MainWindow|Margin|Maximize|MaximizeBox|MaxSize|Minimize|MinimizeBox|MinMax|MinSize|Minutes|MonthCal|Mouse|Move|Multi|NA|No|NoActivate|NoDefault|NoHide|NoIcon|NoMainWindow|norm|Normal|NoSort|NoSortHdr|NoStandard|Not|NoTab|NoTimers|Number|Off|Ok|On|OwnDialogs|Owner|Parse|Password|Picture|Pixel|Pos|Pow|Priority|ProcessName|Radio|Range|Read|ReadOnly|Realtime|Redraw|Region|REG_BINARY|REG_DWORD|REG_EXPAND_SZ|REG_MULTI_SZ|REG_SZ|Relative|Rename|Report|Resize|Restore|Retry|RGB|Screen|Seconds|Section|Serial|SetLabel|ShiftAltTab|Show|Single|Slider|SortDesc|Standard|static|Status|StatusBar|StatusCD|strike|Style|Submit|SysMenu|Tab2|TabStop|Text|Theme|Throw|Tile|ToggleCheck|ToggleEnable|ToolWindow|Top|Topmost|TransColor|Transparent|Tray|TreeView|Try|TryAgain|Type|UnCheck|underline|Unicode|Unlock|Until|UpDown|Upper|Uppercase|UseErrorLevel|Vis|VisFirst|Visible|VScroll|Wait|WaitClose|WantCtrlA|WantF2|WantReturn|While|Wrap|Xdigit|xm|xp|xs|Yes|ym|yp|ys)\b/i, - 'function': /[^(); \t,\n+*\-=?>:\\\/<&%\[\]]+(?=\()/, - 'punctuation': /[{}[\]():,]/ -}; diff --git a/components/prism-autohotkey.min.js b/components/prism-autohotkey.min.js deleted file mode 100644 index 79e06a1a4f..0000000000 --- a/components/prism-autohotkey.min.js +++ /dev/null @@ -1 +0,0 @@ -Prism.languages.autohotkey={comment:[{pattern:/(^|\s);.*/,lookbehind:!0},{pattern:/(^[\t ]*)\/\*(?:[\r\n](?![ \t]*\*\/)|[^\r\n])*(?:[\r\n][ \t]*\*\/)?/m,lookbehind:!0,greedy:!0}],tag:{pattern:/^([ \t]*)[^\s,`":]+(?=:[ \t]*$)/m,lookbehind:!0},string:/"(?:[^"\n\r]|"")*"/,variable:/%\w+%/,number:/\b0x[\dA-Fa-f]+\b|(?:\b\d+(?:\.\d*)?|\B\.\d+)(?:[Ee]-?\d+)?/,operator:/\?|\/\/?=?|:=|\|[=|]?|&[=&]?|\+[=+]?|-[=-]?|\*[=*]?|<(?:<=?|>|=)?|>>?=?|[.^!=~]=?|\b(?:AND|NOT|OR)\b/,boolean:/\b(?:false|true)\b/,command:{pattern:/\b(?:AutoTrim|BlockInput|Break|Click|ClipWait|Continue|Control|ControlClick|ControlFocus|ControlGet|ControlGetFocus|ControlGetPos|ControlGetText|ControlMove|ControlSend|ControlSendRaw|ControlSetText|CoordMode|Critical|DetectHiddenText|DetectHiddenWindows|Drive|DriveGet|DriveSpaceFree|EnvAdd|EnvDiv|EnvGet|EnvMult|EnvSet|EnvSub|EnvUpdate|Exit|ExitApp|FileAppend|FileCopy|FileCopyDir|FileCreateDir|FileCreateShortcut|FileDelete|FileEncoding|FileGetAttrib|FileGetShortcut|FileGetSize|FileGetTime|FileGetVersion|FileInstall|FileMove|FileMoveDir|FileRead|FileReadLine|FileRecycle|FileRecycleEmpty|FileRemoveDir|FileSelectFile|FileSelectFolder|FileSetAttrib|FileSetTime|FormatTime|GetKeyState|Gosub|Goto|GroupActivate|GroupAdd|GroupClose|GroupDeactivate|Gui|GuiControl|GuiControlGet|Hotkey|ImageSearch|IniDelete|IniRead|IniWrite|Input|InputBox|KeyWait|ListHotkeys|ListLines|ListVars|Loop|Menu|MouseClick|MouseClickDrag|MouseGetPos|MouseMove|MsgBox|OnExit|OutputDebug|Pause|PixelGetColor|PixelSearch|PostMessage|Process|Progress|Random|RegDelete|RegRead|RegWrite|Reload|Repeat|Return|Run|RunAs|RunWait|Send|SendEvent|SendInput|SendMessage|SendMode|SendPlay|SendRaw|SetBatchLines|SetCapslockState|SetControlDelay|SetDefaultMouseSpeed|SetEnv|SetFormat|SetKeyDelay|SetMouseDelay|SetNumlockState|SetRegView|SetScrollLockState|SetStoreCapslockMode|SetTimer|SetTitleMatchMode|SetWinDelay|SetWorkingDir|Shutdown|Sleep|Sort|SoundBeep|SoundGet|SoundGetWaveVolume|SoundPlay|SoundSet|SoundSetWaveVolume|SplashImage|SplashTextOff|SplashTextOn|SplitPath|StatusBarGetText|StatusBarWait|StringCaseSense|StringGetPos|StringLeft|StringLen|StringLower|StringMid|StringReplace|StringRight|StringSplit|StringTrimLeft|StringTrimRight|StringUpper|Suspend|SysGet|Thread|ToolTip|Transform|TrayTip|URLDownloadToFile|WinActivate|WinActivateBottom|WinClose|WinGet|WinGetActiveStats|WinGetActiveTitle|WinGetClass|WinGetPos|WinGetText|WinGetTitle|WinHide|WinKill|WinMaximize|WinMenuSelectItem|WinMinimize|WinMinimizeAll|WinMinimizeAllUndo|WinMove|WinRestore|WinSet|WinSetTitle|WinShow|WinWait|WinWaitActive|WinWaitClose|WinWaitNotActive)\b/i,alias:"selector"},constant:/\b(?:a_ahkpath|a_ahkversion|a_appdata|a_appdatacommon|a_autotrim|a_batchlines|a_caretx|a_carety|a_computername|a_controldelay|a_cursor|a_dd|a_ddd|a_dddd|a_defaultmousespeed|a_desktop|a_desktopcommon|a_detecthiddentext|a_detecthiddenwindows|a_endchar|a_eventinfo|a_exitreason|a_fileencoding|a_formatfloat|a_formatinteger|a_gui|a_guicontrol|a_guicontrolevent|a_guievent|a_guiheight|a_guiwidth|a_guix|a_guiy|a_hour|a_iconfile|a_iconhidden|a_iconnumber|a_icontip|a_index|a_ipaddress1|a_ipaddress2|a_ipaddress3|a_ipaddress4|a_is64bitos|a_isadmin|a_iscompiled|a_iscritical|a_ispaused|a_issuspended|a_isunicode|a_keydelay|a_language|a_lasterror|a_linefile|a_linenumber|a_loopfield|a_loopfileattrib|a_loopfiledir|a_loopfileext|a_loopfilefullpath|a_loopfilelongpath|a_loopfilename|a_loopfileshortname|a_loopfileshortpath|a_loopfilesize|a_loopfilesizekb|a_loopfilesizemb|a_loopfiletimeaccessed|a_loopfiletimecreated|a_loopfiletimemodified|a_loopreadline|a_loopregkey|a_loopregname|a_loopregsubkey|a_loopregtimemodified|a_loopregtype|a_mday|a_min|a_mm|a_mmm|a_mmmm|a_mon|a_mousedelay|a_msec|a_mydocuments|a_now|a_nowutc|a_numbatchlines|a_ostype|a_osversion|a_priorhotkey|a_priorkey|a_programfiles|a_programs|a_programscommon|a_ptrsize|a_regview|a_screendpi|a_screenheight|a_screenwidth|a_scriptdir|a_scriptfullpath|a_scripthwnd|a_scriptname|a_sec|a_space|a_startmenu|a_startmenucommon|a_startup|a_startupcommon|a_stringcasesense|a_tab|a_temp|a_thisfunc|a_thishotkey|a_thislabel|a_thismenu|a_thismenuitem|a_thismenuitempos|a_tickcount|a_timeidle|a_timeidlephysical|a_timesincepriorhotkey|a_timesincethishotkey|a_titlematchmode|a_titlematchmodespeed|a_username|a_wday|a_windelay|a_windir|a_workingdir|a_yday|a_year|a_yweek|a_yyyy|clipboard|clipboardall|comspec|errorlevel|programfiles)\b/i,builtin:/\b(?:abs|acos|asc|asin|atan|ceil|chr|class|comobjactive|comobjarray|comobjconnect|comobjcreate|comobjerror|comobjflags|comobjget|comobjquery|comobjtype|comobjvalue|cos|dllcall|exp|fileexist|Fileopen|floor|format|il_add|il_create|il_destroy|instr|isfunc|islabel|IsObject|ln|log|ltrim|lv_add|lv_delete|lv_deletecol|lv_getcount|lv_getnext|lv_gettext|lv_insert|lv_insertcol|lv_modify|lv_modifycol|lv_setimagelist|mod|numget|numput|onmessage|regexmatch|regexreplace|registercallback|round|rtrim|sb_seticon|sb_setparts|sb_settext|sin|sqrt|strlen|strreplace|strsplit|substr|tan|tv_add|tv_delete|tv_get|tv_getchild|tv_getcount|tv_getnext|tv_getparent|tv_getprev|tv_getselection|tv_gettext|tv_modify|varsetcapacity|winactive|winexist|__Call|__Get|__New|__Set)\b/i,symbol:/\b(?:alt|altdown|altup|appskey|backspace|browser_back|browser_favorites|browser_forward|browser_home|browser_refresh|browser_search|browser_stop|bs|capslock|ctrl|ctrlbreak|ctrldown|ctrlup|del|delete|down|end|enter|esc|escape|f1|f10|f11|f12|f13|f14|f15|f16|f17|f18|f19|f2|f20|f21|f22|f23|f24|f3|f4|f5|f6|f7|f8|f9|home|ins|insert|joy1|joy10|joy11|joy12|joy13|joy14|joy15|joy16|joy17|joy18|joy19|joy2|joy20|joy21|joy22|joy23|joy24|joy25|joy26|joy27|joy28|joy29|joy3|joy30|joy31|joy32|joy4|joy5|joy6|joy7|joy8|joy9|joyaxes|joybuttons|joyinfo|joyname|joypov|joyr|joyu|joyv|joyx|joyy|joyz|lalt|launch_app1|launch_app2|launch_mail|launch_media|lbutton|lcontrol|lctrl|left|lshift|lwin|lwindown|lwinup|mbutton|media_next|media_play_pause|media_prev|media_stop|numlock|numpad0|numpad1|numpad2|numpad3|numpad4|numpad5|numpad6|numpad7|numpad8|numpad9|numpadadd|numpadclear|numpaddel|numpaddiv|numpaddot|numpaddown|numpadend|numpadenter|numpadhome|numpadins|numpadleft|numpadmult|numpadpgdn|numpadpgup|numpadright|numpadsub|numpadup|pgdn|pgup|printscreen|ralt|rbutton|rcontrol|rctrl|right|rshift|rwin|rwindown|rwinup|scrolllock|shift|shiftdown|shiftup|space|tab|up|volume_down|volume_mute|volume_up|wheeldown|wheelleft|wheelright|wheelup|xbutton1|xbutton2)\b/i,directive:{pattern:/#[a-z]+\b/i,alias:"important"},keyword:/\b(?:Abort|AboveNormal|Add|ahk_class|ahk_exe|ahk_group|ahk_id|ahk_pid|All|Alnum|Alpha|AltSubmit|AltTab|AltTabAndMenu|AltTabMenu|AltTabMenuDismiss|AlwaysOnTop|AutoSize|Background|BackgroundTrans|BelowNormal|between|BitAnd|BitNot|BitOr|BitShiftLeft|BitShiftRight|BitXOr|Bold|Border|Button|ByRef|Catch|Checkbox|Checked|CheckedGray|Choose|ChooseString|Close|Color|ComboBox|Contains|ControlList|Count|Date|DateTime|Days|DDL|Default|DeleteAll|Delimiter|Deref|Destroy|Digit|Disable|Disabled|DropDownList|Edit|Eject|Else|Enable|Enabled|Error|Exist|Expand|ExStyle|FileSystem|Finally|First|Flash|Float|FloatFast|Focus|Font|for|global|Grid|Group|GroupBox|GuiClose|GuiContextMenu|GuiDropFiles|GuiEscape|GuiSize|Hdr|Hidden|Hide|High|HKCC|HKCR|HKCU|HKEY_CLASSES_ROOT|HKEY_CURRENT_CONFIG|HKEY_CURRENT_USER|HKEY_LOCAL_MACHINE|HKEY_USERS|HKLM|HKU|Hours|HScroll|Icon|IconSmall|ID|IDLast|If|IfEqual|IfExist|IfGreater|IfGreaterOrEqual|IfInString|IfLess|IfLessOrEqual|IfMsgBox|IfNotEqual|IfNotExist|IfNotInString|IfWinActive|IfWinExist|IfWinNotActive|IfWinNotExist|Ignore|ImageList|in|Integer|IntegerFast|Interrupt|is|italic|Join|Label|LastFound|LastFoundExist|Limit|Lines|List|ListBox|ListView|local|Lock|Logoff|Low|Lower|Lowercase|MainWindow|Margin|Maximize|MaximizeBox|MaxSize|Minimize|MinimizeBox|MinMax|MinSize|Minutes|MonthCal|Mouse|Move|Multi|NA|No|NoActivate|NoDefault|NoHide|NoIcon|NoMainWindow|norm|Normal|NoSort|NoSortHdr|NoStandard|Not|NoTab|NoTimers|Number|Off|Ok|On|OwnDialogs|Owner|Parse|Password|Picture|Pixel|Pos|Pow|Priority|ProcessName|Radio|Range|Read|ReadOnly|Realtime|Redraw|Region|REG_BINARY|REG_DWORD|REG_EXPAND_SZ|REG_MULTI_SZ|REG_SZ|Relative|Rename|Report|Resize|Restore|Retry|RGB|Screen|Seconds|Section|Serial|SetLabel|ShiftAltTab|Show|Single|Slider|SortDesc|Standard|static|Status|StatusBar|StatusCD|strike|Style|Submit|SysMenu|Tab2|TabStop|Text|Theme|Throw|Tile|ToggleCheck|ToggleEnable|ToolWindow|Top|Topmost|TransColor|Transparent|Tray|TreeView|Try|TryAgain|Type|UnCheck|underline|Unicode|Unlock|Until|UpDown|Upper|Uppercase|UseErrorLevel|Vis|VisFirst|Visible|VScroll|Wait|WaitClose|WantCtrlA|WantF2|WantReturn|While|Wrap|Xdigit|xm|xp|xs|Yes|ym|yp|ys)\b/i,function:/[^(); \t,\n+*\-=?>:\\\/<&%\[\]]+(?=\()/,punctuation:/[{}[\]():,]/}; \ No newline at end of file diff --git a/components/prism-autoit.js b/components/prism-autoit.js deleted file mode 100644 index 151c657690..0000000000 --- a/components/prism-autoit.js +++ /dev/null @@ -1,34 +0,0 @@ -Prism.languages.autoit = { - 'comment': [ - /;.*/, - { - // The multi-line comments delimiters can actually be commented out with ";" - pattern: /(^[\t ]*)#(?:comments-start|cs)[\s\S]*?^[ \t]*#(?:ce|comments-end)/m, - lookbehind: true - } - ], - 'url': { - pattern: /(^[\t ]*#include\s+)(?:<[^\r\n>]+>|"[^\r\n"]+")/m, - lookbehind: true - }, - 'string': { - pattern: /(["'])(?:\1\1|(?!\1)[^\r\n])*\1/, - greedy: true, - inside: { - 'variable': /([%$@])\w+\1/ - } - }, - 'directive': { - pattern: /(^[\t ]*)#[\w-]+/m, - lookbehind: true, - alias: 'keyword' - }, - 'function': /\b\w+(?=\()/, - // Variables and macros - 'variable': /[$@]\w+/, - 'keyword': /\b(?:Case|Const|Continue(?:Case|Loop)|Default|Dim|Do|Else(?:If)?|End(?:Func|If|Select|Switch|With)|Enum|Exit(?:Loop)?|For|Func|Global|If|In|Local|Next|Null|ReDim|Select|Static|Step|Switch|Then|To|Until|Volatile|WEnd|While|With)\b/i, - 'number': /\b(?:0x[\da-f]+|\d+(?:\.\d+)?(?:e[+-]?\d+)?)\b/i, - 'boolean': /\b(?:False|True)\b/i, - 'operator': /<[=>]?|[-+*\/=&>]=?|[?^]|\b(?:And|Not|Or)\b/i, - 'punctuation': /[\[\]().,:]/ -}; diff --git a/components/prism-autoit.min.js b/components/prism-autoit.min.js deleted file mode 100644 index a732842688..0000000000 --- a/components/prism-autoit.min.js +++ /dev/null @@ -1 +0,0 @@ -Prism.languages.autoit={comment:[/;.*/,{pattern:/(^[\t ]*)#(?:comments-start|cs)[\s\S]*?^[ \t]*#(?:ce|comments-end)/m,lookbehind:!0}],url:{pattern:/(^[\t ]*#include\s+)(?:<[^\r\n>]+>|"[^\r\n"]+")/m,lookbehind:!0},string:{pattern:/(["'])(?:\1\1|(?!\1)[^\r\n])*\1/,greedy:!0,inside:{variable:/([%$@])\w+\1/}},directive:{pattern:/(^[\t ]*)#[\w-]+/m,lookbehind:!0,alias:"keyword"},function:/\b\w+(?=\()/,variable:/[$@]\w+/,keyword:/\b(?:Case|Const|Continue(?:Case|Loop)|Default|Dim|Do|Else(?:If)?|End(?:Func|If|Select|Switch|With)|Enum|Exit(?:Loop)?|For|Func|Global|If|In|Local|Next|Null|ReDim|Select|Static|Step|Switch|Then|To|Until|Volatile|WEnd|While|With)\b/i,number:/\b(?:0x[\da-f]+|\d+(?:\.\d+)?(?:e[+-]?\d+)?)\b/i,boolean:/\b(?:False|True)\b/i,operator:/<[=>]?|[-+*\/=&>]=?|[?^]|\b(?:And|Not|Or)\b/i,punctuation:/[\[\]().,:]/}; \ No newline at end of file diff --git a/components/prism-avisynth.js b/components/prism-avisynth.js deleted file mode 100644 index 2400eb93bd..0000000000 --- a/components/prism-avisynth.js +++ /dev/null @@ -1,188 +0,0 @@ -// http://avisynth.nl/index.php/The_full_AviSynth_grammar -(function (Prism) { - - function replace(pattern, replacements) { - return pattern.replace(/<<(\d+)>>/g, function (m, index) { - return replacements[+index]; - }); - } - - function re(pattern, replacements, flags) { - return RegExp(replace(pattern, replacements), flags || ''); - } - - var types = /bool|clip|float|int|string|val/.source; - var internals = [ - // bools - /is(?:bool|clip|float|int|string)|defined|(?:(?:internal)?function|var)?exists?/.source, - // control - /apply|assert|default|eval|import|nop|select|undefined/.source, - // global - /opt_(?:allowfloataudio|avipadscanlines|dwchannelmask|enable_(?:b64a|planartopackedrgb|v210|y3_10_10|y3_10_16)|usewaveextensible|vdubplanarhack)|set(?:cachemode|maxcpu|memorymax|planarlegacyalignment|workingdir)/.source, - // conv - /hex(?:value)?|value/.source, - // numeric - /abs|ceil|continued(?:denominator|numerator)?|exp|floor|fmod|frac|log(?:10)?|max|min|muldiv|pi|pow|rand|round|sign|spline|sqrt/.source, - // trig - /a?sinh?|a?cosh?|a?tan[2h]?/.source, - // bit - /(?:bit(?:and|not|x?or|[lr]?shift[aslu]?|sh[lr]|sa[lr]|[lr]rotatel?|ro[rl]|te?st|set(?:count)?|cl(?:ea)?r|ch(?:an)?ge?))/.source, - // runtime - /average(?:[bgr]|chroma[uv]|luma)|(?:[rgb]|chroma[uv]|luma|rgb|[yuv](?=difference(?:fromprevious|tonext)))difference(?:fromprevious|tonext)?|[yuvrgb]plane(?:median|min|max|minmaxdifference)/.source, - // script - /getprocessinfo|logmsg|script(?:dir(?:utf8)?|file(?:utf8)?|name(?:utf8)?)|setlogparams/.source, - // string - /chr|(?:fill|find|left|mid|replace|rev|right)str|format|[lu]case|ord|str(?:cmpi?|fromutf8|len|toutf8)|time|trim(?:all|left|right)/.source, - // version - /isversionorgreater|version(?:number|string)/.source, - // helper - /buildpixeltype|colorspacenametopixeltype/.source, - // avsplus - /addautoloaddir|on(?:cpu|cuda)|prefetch|setfiltermtmode/.source - ].join('|'); - var properties = [ - // content - /has(?:audio|video)/.source, - // resolution - /height|width/.source, - // framerate - /frame(?:count|rate)|framerate(?:denominator|numerator)/.source, - // interlacing - /getparity|is(?:field|frame)based/.source, - // color format - /bitspercomponent|componentsize|hasalpha|is(?:planar(?:rgba?)?|interleaved|rgb(?:24|32|48|64)?|y(?:8|u(?:va?|y2))?|yv(?:12|16|24|411)|420|422|444|packedrgb)|numcomponents|pixeltype/.source, - // audio - /audio(?:bits|channels|duration|length(?:[fs]|hi|lo)?|rate)|isaudio(?:float|int)/.source - ].join('|'); - var filters = [ - // source - /avi(?:file)?source|directshowsource|image(?:reader|source|sourceanim)|opendmlsource|segmented(?:avisource|directshowsource)|wavsource/.source, - // color - /coloryuv|convertbacktoyuy2|convertto(?:RGB(?:24|32|48|64)|(?:planar)?RGBA?|Y8?|YV(?:12|16|24|411)|YUVA?(?:411|420|422|444)|YUY2)|fixluminance|gr[ae]yscale|invert|levels|limiter|mergea?rgb|merge(?:chroma|luma)|rgbadjust|show(?:alpha|blue|green|red)|swapuv|tweak|[uv]toy8?|ytouv/.source, - // overlay - /(?:colorkey|reset)mask|layer|mask(?:hs)?|merge|overlay|subtract/.source, - // geometry - /addborders|(?:bicubic|bilinear|blackman|gauss|lanczos4|lanczos|point|sinc|spline(?:16|36|64))resize|crop(?:bottom)?|flip(?:horizontal|vertical)|(?:horizontal|vertical)?reduceby2|letterbox|skewrows|turn(?:180|left|right)/.source, - // pixel - /blur|fixbrokenchromaupsampling|generalconvolution|(?:spatial|temporal)soften|sharpen/.source, - // timeline - /trim|(?:un)?alignedsplice|(?:assume|assumescaled|change|convert)FPS|(?:delete|duplicate)frame|dissolve|fade(?:in|io|out)[02]?|freezeframe|interleave|loop|reverse|select(?:even|odd|(?:range)?every)/.source, - // interlace - /assume[bt]ff|assume(?:field|frame)based|bob|complementparity|doubleweave|peculiarblend|pulldown|separate(?:columns|fields|rows)|swapfields|weave(?:columns|rows)?/.source, - // audio - /amplify(?:db)?|assumesamplerate|audiodub(?:ex)?|audiotrim|convertaudioto(?:(?:8|16|24|32)bit|float)|converttomono|delayaudio|ensurevbrmp3sync|get(?:left|right)?channel|kill(?:audio|video)|mergechannels|mixaudio|monotostereo|normalize|resampleaudio|ssrc|supereq|timestretch/.source, - // conditional - /animate|applyrange|conditional(?:filter|reader|select)|frameevaluate|scriptclip|tcp(?:server|source)|writefile(?:end|if|start)?/.source, - // export - /imagewriter/.source, - // debug - /blackness|blankclip|colorbars(?:hd)?|compare|dumpfiltergraph|echo|histogram|info|messageclip|preroll|setgraphanalysis|show(?:framenumber|smpte|time)|showfiveversions|stack(?:horizontal|vertical)|subtitle|tone|version/.source - ].join('|'); - var allinternals = [internals, properties, filters].join('|'); - - Prism.languages.avisynth = { - 'comment': [ - { - // Matches [* *] nestable block comments, but only supports 1 level of nested comments - // /\[\*(?:[^\[*]|\[(?!\*)|\*(?!\])|)*\*\]/ - pattern: /(^|[^\\])\[\*(?:[^\[*]|\[(?!\*)|\*(?!\])|\[\*(?:[^\[*]|\[(?!\*)|\*(?!\]))*\*\])*\*\]/, - lookbehind: true, - greedy: true - }, - { - // Matches /* */ block comments - pattern: /(^|[^\\])\/\*[\s\S]*?(?:\*\/|$)/, - lookbehind: true, - greedy: true - }, - { - // Matches # comments - pattern: /(^|[^\\$])#.*/, - lookbehind: true, - greedy: true - } - ], - - // Handle before strings because optional arguments are surrounded by double quotes - 'argument': { - pattern: re(/\b(?:<<0>>)\s+("?)\w+\1/.source, [types], 'i'), - inside: { - 'keyword': /^\w+/ - } - }, - - // Optional argument assignment - 'argument-label': { - pattern: /([,(][\s\\]*)\w+\s*=(?!=)/, - lookbehind: true, - inside: { - 'argument-name': { - pattern: /^\w+/, - alias: 'punctuation' - }, - 'punctuation': /=$/ - } - }, - - 'string': [ - { - // triple double-quoted - pattern: /"""[\s\S]*?"""/, - greedy: true, - }, - { - // single double-quoted - pattern: /"(?:\\(?:\r\n|[\s\S])|[^"\\\r\n])*"/, - greedy: true, - inside: { - 'constant': { - // These *are* case-sensitive! - pattern: /\b(?:DEFAULT_MT_MODE|(?:MAINSCRIPT|PROGRAM|SCRIPT)DIR|(?:MACHINE|USER)_(?:CLASSIC|PLUS)_PLUGINS)\b/ - } - } - } - ], - - // The special "last" variable that takes the value of the last implicitly returned clip - 'variable': /\b(?:last)\b/i, - - 'boolean': /\b(?:false|no|true|yes)\b/i, - - 'keyword': /\b(?:catch|else|for|function|global|if|return|try|while|__END__)\b/i, - - 'constant': /\bMT_(?:MULTI_INSTANCE|NICE_FILTER|SERIALIZED|SPECIAL_MT)\b/, - - // AviSynth's internal functions, filters, and properties - 'builtin-function': { - pattern: re(/\b(?:<<0>>)\b/.source, [allinternals], 'i'), - alias: 'function' - }, - - 'type-cast': { - pattern: re(/\b(?:<<0>>)(?=\s*\()/.source, [types], 'i'), - alias: 'keyword' - }, - - // External/user-defined filters - 'function': { - pattern: /\b[a-z_]\w*(?=\s*\()|(\.)[a-z_]\w*\b/i, - lookbehind: true - }, - - // Matches a \ as the first or last character on a line - 'line-continuation': { - pattern: /(^[ \t]*)\\|\\(?=[ \t]*$)/m, - lookbehind: true, - alias: 'punctuation' - }, - - 'number': /\B\$(?:[\da-f]{6}|[\da-f]{8})\b|(?:(?:\b|\B-)\d+(?:\.\d*)?\b|\B\.\d+\b)/i, - - 'operator': /\+\+?|[!=<>]=?|&&|\|\||[?:*/%-]/, - - 'punctuation': /[{}\[\]();,.]/ - }; - - Prism.languages.avs = Prism.languages.avisynth; - -}(Prism)); diff --git a/components/prism-avisynth.min.js b/components/prism-avisynth.min.js deleted file mode 100644 index 851807cf74..0000000000 --- a/components/prism-avisynth.min.js +++ /dev/null @@ -1 +0,0 @@ -!function(e){function a(e,a,r){return RegExp(function(e,a){return e.replace(/<<(\d+)>>/g,(function(e,r){return a[+r]}))}(e,a),r||"")}var r="bool|clip|float|int|string|val",t=[["is(?:bool|clip|float|int|string)|defined|(?:(?:internal)?function|var)?exists?","apply|assert|default|eval|import|nop|select|undefined","opt_(?:allowfloataudio|avipadscanlines|dwchannelmask|enable_(?:b64a|planartopackedrgb|v210|y3_10_10|y3_10_16)|usewaveextensible|vdubplanarhack)|set(?:cachemode|maxcpu|memorymax|planarlegacyalignment|workingdir)","hex(?:value)?|value","abs|ceil|continued(?:denominator|numerator)?|exp|floor|fmod|frac|log(?:10)?|max|min|muldiv|pi|pow|rand|round|sign|spline|sqrt","a?sinh?|a?cosh?|a?tan[2h]?","(?:bit(?:and|not|x?or|[lr]?shift[aslu]?|sh[lr]|sa[lr]|[lr]rotatel?|ro[rl]|te?st|set(?:count)?|cl(?:ea)?r|ch(?:an)?ge?))","average(?:[bgr]|chroma[uv]|luma)|(?:[rgb]|chroma[uv]|luma|rgb|[yuv](?=difference(?:fromprevious|tonext)))difference(?:fromprevious|tonext)?|[yuvrgb]plane(?:median|min|max|minmaxdifference)","getprocessinfo|logmsg|script(?:dir(?:utf8)?|file(?:utf8)?|name(?:utf8)?)|setlogparams","chr|(?:fill|find|left|mid|replace|rev|right)str|format|[lu]case|ord|str(?:cmpi?|fromutf8|len|toutf8)|time|trim(?:all|left|right)","isversionorgreater|version(?:number|string)","buildpixeltype|colorspacenametopixeltype","addautoloaddir|on(?:cpu|cuda)|prefetch|setfiltermtmode"].join("|"),["has(?:audio|video)","height|width","frame(?:count|rate)|framerate(?:denominator|numerator)","getparity|is(?:field|frame)based","bitspercomponent|componentsize|hasalpha|is(?:planar(?:rgba?)?|interleaved|rgb(?:24|32|48|64)?|y(?:8|u(?:va?|y2))?|yv(?:12|16|24|411)|420|422|444|packedrgb)|numcomponents|pixeltype","audio(?:bits|channels|duration|length(?:[fs]|hi|lo)?|rate)|isaudio(?:float|int)"].join("|"),["avi(?:file)?source|directshowsource|image(?:reader|source|sourceanim)|opendmlsource|segmented(?:avisource|directshowsource)|wavsource","coloryuv|convertbacktoyuy2|convertto(?:RGB(?:24|32|48|64)|(?:planar)?RGBA?|Y8?|YV(?:12|16|24|411)|YUVA?(?:411|420|422|444)|YUY2)|fixluminance|gr[ae]yscale|invert|levels|limiter|mergea?rgb|merge(?:chroma|luma)|rgbadjust|show(?:alpha|blue|green|red)|swapuv|tweak|[uv]toy8?|ytouv","(?:colorkey|reset)mask|layer|mask(?:hs)?|merge|overlay|subtract","addborders|(?:bicubic|bilinear|blackman|gauss|lanczos4|lanczos|point|sinc|spline(?:16|36|64))resize|crop(?:bottom)?|flip(?:horizontal|vertical)|(?:horizontal|vertical)?reduceby2|letterbox|skewrows|turn(?:180|left|right)","blur|fixbrokenchromaupsampling|generalconvolution|(?:spatial|temporal)soften|sharpen","trim|(?:un)?alignedsplice|(?:assume|assumescaled|change|convert)FPS|(?:delete|duplicate)frame|dissolve|fade(?:in|io|out)[02]?|freezeframe|interleave|loop|reverse|select(?:even|odd|(?:range)?every)","assume[bt]ff|assume(?:field|frame)based|bob|complementparity|doubleweave|peculiarblend|pulldown|separate(?:columns|fields|rows)|swapfields|weave(?:columns|rows)?","amplify(?:db)?|assumesamplerate|audiodub(?:ex)?|audiotrim|convertaudioto(?:(?:8|16|24|32)bit|float)|converttomono|delayaudio|ensurevbrmp3sync|get(?:left|right)?channel|kill(?:audio|video)|mergechannels|mixaudio|monotostereo|normalize|resampleaudio|ssrc|supereq|timestretch","animate|applyrange|conditional(?:filter|reader|select)|frameevaluate|scriptclip|tcp(?:server|source)|writefile(?:end|if|start)?","imagewriter","blackness|blankclip|colorbars(?:hd)?|compare|dumpfiltergraph|echo|histogram|info|messageclip|preroll|setgraphanalysis|show(?:framenumber|smpte|time)|showfiveversions|stack(?:horizontal|vertical)|subtitle|tone|version"].join("|")].join("|");e.languages.avisynth={comment:[{pattern:/(^|[^\\])\[\*(?:[^\[*]|\[(?!\*)|\*(?!\])|\[\*(?:[^\[*]|\[(?!\*)|\*(?!\]))*\*\])*\*\]/,lookbehind:!0,greedy:!0},{pattern:/(^|[^\\])\/\*[\s\S]*?(?:\*\/|$)/,lookbehind:!0,greedy:!0},{pattern:/(^|[^\\$])#.*/,lookbehind:!0,greedy:!0}],argument:{pattern:a('\\b(?:<<0>>)\\s+("?)\\w+\\1',[r],"i"),inside:{keyword:/^\w+/}},"argument-label":{pattern:/([,(][\s\\]*)\w+\s*=(?!=)/,lookbehind:!0,inside:{"argument-name":{pattern:/^\w+/,alias:"punctuation"},punctuation:/=$/}},string:[{pattern:/"""[\s\S]*?"""/,greedy:!0},{pattern:/"(?:\\(?:\r\n|[\s\S])|[^"\\\r\n])*"/,greedy:!0,inside:{constant:{pattern:/\b(?:DEFAULT_MT_MODE|(?:MAINSCRIPT|PROGRAM|SCRIPT)DIR|(?:MACHINE|USER)_(?:CLASSIC|PLUS)_PLUGINS)\b/}}}],variable:/\b(?:last)\b/i,boolean:/\b(?:false|no|true|yes)\b/i,keyword:/\b(?:catch|else|for|function|global|if|return|try|while|__END__)\b/i,constant:/\bMT_(?:MULTI_INSTANCE|NICE_FILTER|SERIALIZED|SPECIAL_MT)\b/,"builtin-function":{pattern:a("\\b(?:<<0>>)\\b",[t],"i"),alias:"function"},"type-cast":{pattern:a("\\b(?:<<0>>)(?=\\s*\\()",[r],"i"),alias:"keyword"},function:{pattern:/\b[a-z_]\w*(?=\s*\()|(\.)[a-z_]\w*\b/i,lookbehind:!0},"line-continuation":{pattern:/(^[ \t]*)\\|\\(?=[ \t]*$)/m,lookbehind:!0,alias:"punctuation"},number:/\B\$(?:[\da-f]{6}|[\da-f]{8})\b|(?:(?:\b|\B-)\d+(?:\.\d*)?\b|\B\.\d+\b)/i,operator:/\+\+?|[!=<>]=?|&&|\|\||[?:*/%-]/,punctuation:/[{}\[\]();,.]/},e.languages.avs=e.languages.avisynth}(Prism); \ No newline at end of file diff --git a/components/prism-avro-idl.js b/components/prism-avro-idl.js deleted file mode 100644 index 35386ffe2d..0000000000 --- a/components/prism-avro-idl.js +++ /dev/null @@ -1,50 +0,0 @@ -// GitHub: https://github.com/apache/avro -// Docs: https://avro.apache.org/docs/current/idl.html - -Prism.languages['avro-idl'] = { - 'comment': { - pattern: /\/\/.*|\/\*[\s\S]*?\*\//, - greedy: true - }, - 'string': { - pattern: /(^|[^\\])"(?:[^\r\n"\\]|\\.)*"/, - lookbehind: true, - greedy: true - }, - - 'annotation': { - pattern: /@(?:[$\w.-]|`[^\r\n`]+`)+/, - greedy: true, - alias: 'function' - }, - 'function-identifier': { - pattern: /`[^\r\n`]+`(?=\s*\()/, - greedy: true, - alias: 'function' - }, - 'identifier': { - pattern: /`[^\r\n`]+`/, - greedy: true - }, - - 'class-name': { - pattern: /(\b(?:enum|error|protocol|record|throws)\b\s+)[$\w]+/, - lookbehind: true, - greedy: true - }, - 'keyword': /\b(?:array|boolean|bytes|date|decimal|double|enum|error|false|fixed|float|idl|import|int|local_timestamp_ms|long|map|null|oneway|protocol|record|schema|string|throws|time_ms|timestamp_ms|true|union|uuid|void)\b/, - 'function': /\b[a-z_]\w*(?=\s*\()/i, - - 'number': [ - { - pattern: /(^|[^\w.])-?(?:(?:\d+(?:\.\d*)?|\.\d+)(?:e[+-]?\d+)?|0x(?:[a-f0-9]+(?:\.[a-f0-9]*)?|\.[a-f0-9]+)(?:p[+-]?\d+)?)[dfl]?(?![\w.])/i, - lookbehind: true - }, - /-?\b(?:Infinity|NaN)\b/ - ], - - 'operator': /=/, - 'punctuation': /[()\[\]{}<>.:,;-]/ -}; - -Prism.languages.avdl = Prism.languages['avro-idl']; diff --git a/components/prism-avro-idl.min.js b/components/prism-avro-idl.min.js deleted file mode 100644 index 34238fc651..0000000000 --- a/components/prism-avro-idl.min.js +++ /dev/null @@ -1 +0,0 @@ -Prism.languages["avro-idl"]={comment:{pattern:/\/\/.*|\/\*[\s\S]*?\*\//,greedy:!0},string:{pattern:/(^|[^\\])"(?:[^\r\n"\\]|\\.)*"/,lookbehind:!0,greedy:!0},annotation:{pattern:/@(?:[$\w.-]|`[^\r\n`]+`)+/,greedy:!0,alias:"function"},"function-identifier":{pattern:/`[^\r\n`]+`(?=\s*\()/,greedy:!0,alias:"function"},identifier:{pattern:/`[^\r\n`]+`/,greedy:!0},"class-name":{pattern:/(\b(?:enum|error|protocol|record|throws)\b\s+)[$\w]+/,lookbehind:!0,greedy:!0},keyword:/\b(?:array|boolean|bytes|date|decimal|double|enum|error|false|fixed|float|idl|import|int|local_timestamp_ms|long|map|null|oneway|protocol|record|schema|string|throws|time_ms|timestamp_ms|true|union|uuid|void)\b/,function:/\b[a-z_]\w*(?=\s*\()/i,number:[{pattern:/(^|[^\w.])-?(?:(?:\d+(?:\.\d*)?|\.\d+)(?:e[+-]?\d+)?|0x(?:[a-f0-9]+(?:\.[a-f0-9]*)?|\.[a-f0-9]+)(?:p[+-]?\d+)?)[dfl]?(?![\w.])/i,lookbehind:!0},/-?\b(?:Infinity|NaN)\b/],operator:/=/,punctuation:/[()\[\]{}<>.:,;-]/},Prism.languages.avdl=Prism.languages["avro-idl"]; \ No newline at end of file diff --git a/components/prism-awk.js b/components/prism-awk.js deleted file mode 100644 index 64cf2c0400..0000000000 --- a/components/prism-awk.js +++ /dev/null @@ -1,32 +0,0 @@ -Prism.languages.awk = { - 'hashbang': { - pattern: /^#!.*/, - greedy: true, - alias: 'comment' - }, - 'comment': { - pattern: /#.*/, - greedy: true - }, - 'string': { - pattern: /(^|[^\\])"(?:[^\\"\r\n]|\\.)*"/, - lookbehind: true, - greedy: true - }, - 'regex': { - pattern: /((?:^|[^\w\s)])\s*)\/(?:[^\/\\\r\n]|\\.)*\//, - lookbehind: true, - greedy: true - }, - - 'variable': /\$\w+/, - 'keyword': /\b(?:BEGIN|BEGINFILE|END|ENDFILE|break|case|continue|default|delete|do|else|exit|for|function|getline|if|in|next|nextfile|printf?|return|switch|while)\b|@(?:include|load)\b/, - - 'function': /\b[a-z_]\w*(?=\s*\()/i, - 'number': /\b(?:\d+(?:\.\d+)?(?:e[+-]?\d+)?|0x[a-fA-F0-9]+)\b/, - - 'operator': /--|\+\+|!?~|>&|>>|<<|(?:\*\*|[<>!=+\-*/%^])=?|&&|\|[|&]|[?:]/, - 'punctuation': /[()[\]{},;]/ -}; - -Prism.languages.gawk = Prism.languages.awk; diff --git a/components/prism-awk.min.js b/components/prism-awk.min.js deleted file mode 100644 index c48925cdf3..0000000000 --- a/components/prism-awk.min.js +++ /dev/null @@ -1 +0,0 @@ -Prism.languages.awk={hashbang:{pattern:/^#!.*/,greedy:!0,alias:"comment"},comment:{pattern:/#.*/,greedy:!0},string:{pattern:/(^|[^\\])"(?:[^\\"\r\n]|\\.)*"/,lookbehind:!0,greedy:!0},regex:{pattern:/((?:^|[^\w\s)])\s*)\/(?:[^\/\\\r\n]|\\.)*\//,lookbehind:!0,greedy:!0},variable:/\$\w+/,keyword:/\b(?:BEGIN|BEGINFILE|END|ENDFILE|break|case|continue|default|delete|do|else|exit|for|function|getline|if|in|next|nextfile|printf?|return|switch|while)\b|@(?:include|load)\b/,function:/\b[a-z_]\w*(?=\s*\()/i,number:/\b(?:\d+(?:\.\d+)?(?:e[+-]?\d+)?|0x[a-fA-F0-9]+)\b/,operator:/--|\+\+|!?~|>&|>>|<<|(?:\*\*|[<>!=+\-*/%^])=?|&&|\|[|&]|[?:]/,punctuation:/[()[\]{},;]/},Prism.languages.gawk=Prism.languages.awk; \ No newline at end of file diff --git a/components/prism-bash.js b/components/prism-bash.js deleted file mode 100644 index 6d2e3815c2..0000000000 --- a/components/prism-bash.js +++ /dev/null @@ -1,235 +0,0 @@ -(function (Prism) { - // $ set | grep '^[A-Z][^[:space:]]*=' | cut -d= -f1 | tr '\n' '|' - // + LC_ALL, RANDOM, REPLY, SECONDS. - // + make sure PS1..4 are here as they are not always set, - // - some useless things. - var envVars = '\\b(?:BASH|BASHOPTS|BASH_ALIASES|BASH_ARGC|BASH_ARGV|BASH_CMDS|BASH_COMPLETION_COMPAT_DIR|BASH_LINENO|BASH_REMATCH|BASH_SOURCE|BASH_VERSINFO|BASH_VERSION|COLORTERM|COLUMNS|COMP_WORDBREAKS|DBUS_SESSION_BUS_ADDRESS|DEFAULTS_PATH|DESKTOP_SESSION|DIRSTACK|DISPLAY|EUID|GDMSESSION|GDM_LANG|GNOME_KEYRING_CONTROL|GNOME_KEYRING_PID|GPG_AGENT_INFO|GROUPS|HISTCONTROL|HISTFILE|HISTFILESIZE|HISTSIZE|HOME|HOSTNAME|HOSTTYPE|IFS|INSTANCE|JOB|LANG|LANGUAGE|LC_ADDRESS|LC_ALL|LC_IDENTIFICATION|LC_MEASUREMENT|LC_MONETARY|LC_NAME|LC_NUMERIC|LC_PAPER|LC_TELEPHONE|LC_TIME|LESSCLOSE|LESSOPEN|LINES|LOGNAME|LS_COLORS|MACHTYPE|MAILCHECK|MANDATORY_PATH|NO_AT_BRIDGE|OLDPWD|OPTERR|OPTIND|ORBIT_SOCKETDIR|OSTYPE|PAPERSIZE|PATH|PIPESTATUS|PPID|PS1|PS2|PS3|PS4|PWD|RANDOM|REPLY|SECONDS|SELINUX_INIT|SESSION|SESSIONTYPE|SESSION_MANAGER|SHELL|SHELLOPTS|SHLVL|SSH_AUTH_SOCK|TERM|UID|UPSTART_EVENTS|UPSTART_INSTANCE|UPSTART_JOB|UPSTART_SESSION|USER|WINDOWID|XAUTHORITY|XDG_CONFIG_DIRS|XDG_CURRENT_DESKTOP|XDG_DATA_DIRS|XDG_GREETER_DATA_DIR|XDG_MENU_PREFIX|XDG_RUNTIME_DIR|XDG_SEAT|XDG_SEAT_PATH|XDG_SESSION_DESKTOP|XDG_SESSION_ID|XDG_SESSION_PATH|XDG_SESSION_TYPE|XDG_VTNR|XMODIFIERS)\\b'; - - var commandAfterHeredoc = { - pattern: /(^(["']?)\w+\2)[ \t]+\S.*/, - lookbehind: true, - alias: 'punctuation', // this looks reasonably well in all themes - inside: null // see below - }; - - var insideString = { - 'bash': commandAfterHeredoc, - 'environment': { - pattern: RegExp('\\$' + envVars), - alias: 'constant' - }, - 'variable': [ - // [0]: Arithmetic Environment - { - pattern: /\$?\(\([\s\S]+?\)\)/, - greedy: true, - inside: { - // If there is a $ sign at the beginning highlight $(( and )) as variable - 'variable': [ - { - pattern: /(^\$\(\([\s\S]+)\)\)/, - lookbehind: true - }, - /^\$\(\(/ - ], - 'number': /\b0x[\dA-Fa-f]+\b|(?:\b\d+(?:\.\d*)?|\B\.\d+)(?:[Ee]-?\d+)?/, - // Operators according to https://www.gnu.org/software/bash/manual/bashref.html#Shell-Arithmetic - 'operator': /--|\+\+|\*\*=?|<<=?|>>=?|&&|\|\||[=!+\-*/%<>^&|]=?|[?~:]/, - // If there is no $ sign at the beginning highlight (( and )) as punctuation - 'punctuation': /\(\(?|\)\)?|,|;/ - } - }, - // [1]: Command Substitution - { - pattern: /\$\((?:\([^)]+\)|[^()])+\)|`[^`]+`/, - greedy: true, - inside: { - 'variable': /^\$\(|^`|\)$|`$/ - } - }, - // [2]: Brace expansion - { - pattern: /\$\{[^}]+\}/, - greedy: true, - inside: { - 'operator': /:[-=?+]?|[!\/]|##?|%%?|\^\^?|,,?/, - 'punctuation': /[\[\]]/, - 'environment': { - pattern: RegExp('(\\{)' + envVars), - lookbehind: true, - alias: 'constant' - } - } - }, - /\$(?:\w+|[#?*!@$])/ - ], - // Escape sequences from echo and printf's manuals, and escaped quotes. - 'entity': /\\(?:[abceEfnrtv\\"]|O?[0-7]{1,3}|U[0-9a-fA-F]{8}|u[0-9a-fA-F]{4}|x[0-9a-fA-F]{1,2})/ - }; - - Prism.languages.bash = { - 'shebang': { - pattern: /^#!\s*\/.*/, - alias: 'important' - }, - 'comment': { - pattern: /(^|[^"{\\$])#.*/, - lookbehind: true - }, - 'function-name': [ - // a) function foo { - // b) foo() { - // c) function foo() { - // but not “foo {” - { - // a) and c) - pattern: /(\bfunction\s+)[\w-]+(?=(?:\s*\(?:\s*\))?\s*\{)/, - lookbehind: true, - alias: 'function' - }, - { - // b) - pattern: /\b[\w-]+(?=\s*\(\s*\)\s*\{)/, - alias: 'function' - } - ], - // Highlight variable names as variables in for and select beginnings. - 'for-or-select': { - pattern: /(\b(?:for|select)\s+)\w+(?=\s+in\s)/, - alias: 'variable', - lookbehind: true - }, - // Highlight variable names as variables in the left-hand part - // of assignments (“=” and “+=”). - 'assign-left': { - pattern: /(^|[\s;|&]|[<>]\()\w+(?:\.\w+)*(?=\+?=)/, - inside: { - 'environment': { - pattern: RegExp('(^|[\\s;|&]|[<>]\\()' + envVars), - lookbehind: true, - alias: 'constant' - } - }, - alias: 'variable', - lookbehind: true - }, - // Highlight parameter names as variables - 'parameter': { - pattern: /(^|\s)-{1,2}(?:\w+:[+-]?)?\w+(?:\.\w+)*(?=[=\s]|$)/, - alias: 'variable', - lookbehind: true - }, - 'string': [ - // Support for Here-documents https://en.wikipedia.org/wiki/Here_document - { - pattern: /((?:^|[^<])<<-?\s*)(\w+)\s[\s\S]*?(?:\r?\n|\r)\2/, - lookbehind: true, - greedy: true, - inside: insideString - }, - // Here-document with quotes around the tag - // → No expansion (so no “inside”). - { - pattern: /((?:^|[^<])<<-?\s*)(["'])(\w+)\2\s[\s\S]*?(?:\r?\n|\r)\3/, - lookbehind: true, - greedy: true, - inside: { - 'bash': commandAfterHeredoc - } - }, - // “Normal” string - { - // https://www.gnu.org/software/bash/manual/html_node/Double-Quotes.html - pattern: /(^|[^\\](?:\\\\)*)"(?:\\[\s\S]|\$\([^)]+\)|\$(?!\()|`[^`]+`|[^"\\`$])*"/, - lookbehind: true, - greedy: true, - inside: insideString - }, - { - // https://www.gnu.org/software/bash/manual/html_node/Single-Quotes.html - pattern: /(^|[^$\\])'[^']*'/, - lookbehind: true, - greedy: true - }, - { - // https://www.gnu.org/software/bash/manual/html_node/ANSI_002dC-Quoting.html - pattern: /\$'(?:[^'\\]|\\[\s\S])*'/, - greedy: true, - inside: { - 'entity': insideString.entity - } - } - ], - 'environment': { - pattern: RegExp('\\$?' + envVars), - alias: 'constant' - }, - 'variable': insideString.variable, - 'function': { - pattern: /(^|[\s;|&]|[<>]\()(?:add|apropos|apt|apt-cache|apt-get|aptitude|aspell|automysqlbackup|awk|basename|bash|bc|bconsole|bg|bzip2|cal|cargo|cat|cfdisk|chgrp|chkconfig|chmod|chown|chroot|cksum|clear|cmp|column|comm|composer|cp|cron|crontab|csplit|curl|cut|date|dc|dd|ddrescue|debootstrap|df|diff|diff3|dig|dir|dircolors|dirname|dirs|dmesg|docker|docker-compose|du|egrep|eject|env|ethtool|expand|expect|expr|fdformat|fdisk|fg|fgrep|file|find|fmt|fold|format|free|fsck|ftp|fuser|gawk|git|gparted|grep|groupadd|groupdel|groupmod|groups|grub-mkconfig|gzip|halt|head|hg|history|host|hostname|htop|iconv|id|ifconfig|ifdown|ifup|import|install|ip|java|jobs|join|kill|killall|less|link|ln|locate|logname|logrotate|look|lpc|lpr|lprint|lprintd|lprintq|lprm|ls|lsof|lynx|make|man|mc|mdadm|mkconfig|mkdir|mke2fs|mkfifo|mkfs|mkisofs|mknod|mkswap|mmv|more|most|mount|mtools|mtr|mutt|mv|nano|nc|netstat|nice|nl|node|nohup|notify-send|npm|nslookup|op|open|parted|passwd|paste|pathchk|ping|pkill|pnpm|podman|podman-compose|popd|pr|printcap|printenv|ps|pushd|pv|quota|quotacheck|quotactl|ram|rar|rcp|reboot|remsync|rename|renice|rev|rm|rmdir|rpm|rsync|scp|screen|sdiff|sed|sendmail|seq|service|sftp|sh|shellcheck|shuf|shutdown|sleep|slocate|sort|split|ssh|stat|strace|su|sudo|sum|suspend|swapon|sync|sysctl|tac|tail|tar|tee|time|timeout|top|touch|tr|traceroute|tsort|tty|umount|uname|unexpand|uniq|units|unrar|unshar|unzip|update-grub|uptime|useradd|userdel|usermod|users|uudecode|uuencode|v|vcpkg|vdir|vi|vim|virsh|vmstat|wait|watch|wc|wget|whereis|which|who|whoami|write|xargs|xdg-open|yarn|yes|zenity|zip|zsh|zypper)(?=$|[)\s;|&])/, - lookbehind: true - }, - 'keyword': { - pattern: /(^|[\s;|&]|[<>]\()(?:case|do|done|elif|else|esac|fi|for|function|if|in|select|then|until|while)(?=$|[)\s;|&])/, - lookbehind: true - }, - // https://www.gnu.org/software/bash/manual/html_node/Shell-Builtin-Commands.html - 'builtin': { - pattern: /(^|[\s;|&]|[<>]\()(?:\.|:|alias|bind|break|builtin|caller|cd|command|continue|declare|echo|enable|eval|exec|exit|export|getopts|hash|help|let|local|logout|mapfile|printf|pwd|read|readarray|readonly|return|set|shift|shopt|source|test|times|trap|type|typeset|ulimit|umask|unalias|unset)(?=$|[)\s;|&])/, - lookbehind: true, - // Alias added to make those easier to distinguish from strings. - alias: 'class-name' - }, - 'boolean': { - pattern: /(^|[\s;|&]|[<>]\()(?:false|true)(?=$|[)\s;|&])/, - lookbehind: true - }, - 'file-descriptor': { - pattern: /\B&\d\b/, - alias: 'important' - }, - 'operator': { - // Lots of redirections here, but not just that. - pattern: /\d?<>|>\||\+=|=[=~]?|!=?|<<[<-]?|[&\d]?>>|\d[<>]&?|[<>][&=]?|&[>&]?|\|[&|]?/, - inside: { - 'file-descriptor': { - pattern: /^\d/, - alias: 'important' - } - } - }, - 'punctuation': /\$?\(\(?|\)\)?|\.\.|[{}[\];\\]/, - 'number': { - pattern: /(^|\s)(?:[1-9]\d*|0)(?:[.,]\d+)?\b/, - lookbehind: true - } - }; - - commandAfterHeredoc.inside = Prism.languages.bash; - - /* Patterns in command substitution. */ - var toBeCopied = [ - 'comment', - 'function-name', - 'for-or-select', - 'assign-left', - 'parameter', - 'string', - 'environment', - 'function', - 'keyword', - 'builtin', - 'boolean', - 'file-descriptor', - 'operator', - 'punctuation', - 'number' - ]; - var inside = insideString.variable[1].inside; - for (var i = 0; i < toBeCopied.length; i++) { - inside[toBeCopied[i]] = Prism.languages.bash[toBeCopied[i]]; - } - - Prism.languages.sh = Prism.languages.bash; - Prism.languages.shell = Prism.languages.bash; -}(Prism)); diff --git a/components/prism-bash.min.js b/components/prism-bash.min.js deleted file mode 100644 index f1659f1e3b..0000000000 --- a/components/prism-bash.min.js +++ /dev/null @@ -1 +0,0 @@ -!function(e){var t="\\b(?:BASH|BASHOPTS|BASH_ALIASES|BASH_ARGC|BASH_ARGV|BASH_CMDS|BASH_COMPLETION_COMPAT_DIR|BASH_LINENO|BASH_REMATCH|BASH_SOURCE|BASH_VERSINFO|BASH_VERSION|COLORTERM|COLUMNS|COMP_WORDBREAKS|DBUS_SESSION_BUS_ADDRESS|DEFAULTS_PATH|DESKTOP_SESSION|DIRSTACK|DISPLAY|EUID|GDMSESSION|GDM_LANG|GNOME_KEYRING_CONTROL|GNOME_KEYRING_PID|GPG_AGENT_INFO|GROUPS|HISTCONTROL|HISTFILE|HISTFILESIZE|HISTSIZE|HOME|HOSTNAME|HOSTTYPE|IFS|INSTANCE|JOB|LANG|LANGUAGE|LC_ADDRESS|LC_ALL|LC_IDENTIFICATION|LC_MEASUREMENT|LC_MONETARY|LC_NAME|LC_NUMERIC|LC_PAPER|LC_TELEPHONE|LC_TIME|LESSCLOSE|LESSOPEN|LINES|LOGNAME|LS_COLORS|MACHTYPE|MAILCHECK|MANDATORY_PATH|NO_AT_BRIDGE|OLDPWD|OPTERR|OPTIND|ORBIT_SOCKETDIR|OSTYPE|PAPERSIZE|PATH|PIPESTATUS|PPID|PS1|PS2|PS3|PS4|PWD|RANDOM|REPLY|SECONDS|SELINUX_INIT|SESSION|SESSIONTYPE|SESSION_MANAGER|SHELL|SHELLOPTS|SHLVL|SSH_AUTH_SOCK|TERM|UID|UPSTART_EVENTS|UPSTART_INSTANCE|UPSTART_JOB|UPSTART_SESSION|USER|WINDOWID|XAUTHORITY|XDG_CONFIG_DIRS|XDG_CURRENT_DESKTOP|XDG_DATA_DIRS|XDG_GREETER_DATA_DIR|XDG_MENU_PREFIX|XDG_RUNTIME_DIR|XDG_SEAT|XDG_SEAT_PATH|XDG_SESSION_DESKTOP|XDG_SESSION_ID|XDG_SESSION_PATH|XDG_SESSION_TYPE|XDG_VTNR|XMODIFIERS)\\b",a={pattern:/(^(["']?)\w+\2)[ \t]+\S.*/,lookbehind:!0,alias:"punctuation",inside:null},n={bash:a,environment:{pattern:RegExp("\\$"+t),alias:"constant"},variable:[{pattern:/\$?\(\([\s\S]+?\)\)/,greedy:!0,inside:{variable:[{pattern:/(^\$\(\([\s\S]+)\)\)/,lookbehind:!0},/^\$\(\(/],number:/\b0x[\dA-Fa-f]+\b|(?:\b\d+(?:\.\d*)?|\B\.\d+)(?:[Ee]-?\d+)?/,operator:/--|\+\+|\*\*=?|<<=?|>>=?|&&|\|\||[=!+\-*/%<>^&|]=?|[?~:]/,punctuation:/\(\(?|\)\)?|,|;/}},{pattern:/\$\((?:\([^)]+\)|[^()])+\)|`[^`]+`/,greedy:!0,inside:{variable:/^\$\(|^`|\)$|`$/}},{pattern:/\$\{[^}]+\}/,greedy:!0,inside:{operator:/:[-=?+]?|[!\/]|##?|%%?|\^\^?|,,?/,punctuation:/[\[\]]/,environment:{pattern:RegExp("(\\{)"+t),lookbehind:!0,alias:"constant"}}},/\$(?:\w+|[#?*!@$])/],entity:/\\(?:[abceEfnrtv\\"]|O?[0-7]{1,3}|U[0-9a-fA-F]{8}|u[0-9a-fA-F]{4}|x[0-9a-fA-F]{1,2})/};e.languages.bash={shebang:{pattern:/^#!\s*\/.*/,alias:"important"},comment:{pattern:/(^|[^"{\\$])#.*/,lookbehind:!0},"function-name":[{pattern:/(\bfunction\s+)[\w-]+(?=(?:\s*\(?:\s*\))?\s*\{)/,lookbehind:!0,alias:"function"},{pattern:/\b[\w-]+(?=\s*\(\s*\)\s*\{)/,alias:"function"}],"for-or-select":{pattern:/(\b(?:for|select)\s+)\w+(?=\s+in\s)/,alias:"variable",lookbehind:!0},"assign-left":{pattern:/(^|[\s;|&]|[<>]\()\w+(?:\.\w+)*(?=\+?=)/,inside:{environment:{pattern:RegExp("(^|[\\s;|&]|[<>]\\()"+t),lookbehind:!0,alias:"constant"}},alias:"variable",lookbehind:!0},parameter:{pattern:/(^|\s)-{1,2}(?:\w+:[+-]?)?\w+(?:\.\w+)*(?=[=\s]|$)/,alias:"variable",lookbehind:!0},string:[{pattern:/((?:^|[^<])<<-?\s*)(\w+)\s[\s\S]*?(?:\r?\n|\r)\2/,lookbehind:!0,greedy:!0,inside:n},{pattern:/((?:^|[^<])<<-?\s*)(["'])(\w+)\2\s[\s\S]*?(?:\r?\n|\r)\3/,lookbehind:!0,greedy:!0,inside:{bash:a}},{pattern:/(^|[^\\](?:\\\\)*)"(?:\\[\s\S]|\$\([^)]+\)|\$(?!\()|`[^`]+`|[^"\\`$])*"/,lookbehind:!0,greedy:!0,inside:n},{pattern:/(^|[^$\\])'[^']*'/,lookbehind:!0,greedy:!0},{pattern:/\$'(?:[^'\\]|\\[\s\S])*'/,greedy:!0,inside:{entity:n.entity}}],environment:{pattern:RegExp("\\$?"+t),alias:"constant"},variable:n.variable,function:{pattern:/(^|[\s;|&]|[<>]\()(?:add|apropos|apt|apt-cache|apt-get|aptitude|aspell|automysqlbackup|awk|basename|bash|bc|bconsole|bg|bzip2|cal|cargo|cat|cfdisk|chgrp|chkconfig|chmod|chown|chroot|cksum|clear|cmp|column|comm|composer|cp|cron|crontab|csplit|curl|cut|date|dc|dd|ddrescue|debootstrap|df|diff|diff3|dig|dir|dircolors|dirname|dirs|dmesg|docker|docker-compose|du|egrep|eject|env|ethtool|expand|expect|expr|fdformat|fdisk|fg|fgrep|file|find|fmt|fold|format|free|fsck|ftp|fuser|gawk|git|gparted|grep|groupadd|groupdel|groupmod|groups|grub-mkconfig|gzip|halt|head|hg|history|host|hostname|htop|iconv|id|ifconfig|ifdown|ifup|import|install|ip|java|jobs|join|kill|killall|less|link|ln|locate|logname|logrotate|look|lpc|lpr|lprint|lprintd|lprintq|lprm|ls|lsof|lynx|make|man|mc|mdadm|mkconfig|mkdir|mke2fs|mkfifo|mkfs|mkisofs|mknod|mkswap|mmv|more|most|mount|mtools|mtr|mutt|mv|nano|nc|netstat|nice|nl|node|nohup|notify-send|npm|nslookup|op|open|parted|passwd|paste|pathchk|ping|pkill|pnpm|podman|podman-compose|popd|pr|printcap|printenv|ps|pushd|pv|quota|quotacheck|quotactl|ram|rar|rcp|reboot|remsync|rename|renice|rev|rm|rmdir|rpm|rsync|scp|screen|sdiff|sed|sendmail|seq|service|sftp|sh|shellcheck|shuf|shutdown|sleep|slocate|sort|split|ssh|stat|strace|su|sudo|sum|suspend|swapon|sync|sysctl|tac|tail|tar|tee|time|timeout|top|touch|tr|traceroute|tsort|tty|umount|uname|unexpand|uniq|units|unrar|unshar|unzip|update-grub|uptime|useradd|userdel|usermod|users|uudecode|uuencode|v|vcpkg|vdir|vi|vim|virsh|vmstat|wait|watch|wc|wget|whereis|which|who|whoami|write|xargs|xdg-open|yarn|yes|zenity|zip|zsh|zypper)(?=$|[)\s;|&])/,lookbehind:!0},keyword:{pattern:/(^|[\s;|&]|[<>]\()(?:case|do|done|elif|else|esac|fi|for|function|if|in|select|then|until|while)(?=$|[)\s;|&])/,lookbehind:!0},builtin:{pattern:/(^|[\s;|&]|[<>]\()(?:\.|:|alias|bind|break|builtin|caller|cd|command|continue|declare|echo|enable|eval|exec|exit|export|getopts|hash|help|let|local|logout|mapfile|printf|pwd|read|readarray|readonly|return|set|shift|shopt|source|test|times|trap|type|typeset|ulimit|umask|unalias|unset)(?=$|[)\s;|&])/,lookbehind:!0,alias:"class-name"},boolean:{pattern:/(^|[\s;|&]|[<>]\()(?:false|true)(?=$|[)\s;|&])/,lookbehind:!0},"file-descriptor":{pattern:/\B&\d\b/,alias:"important"},operator:{pattern:/\d?<>|>\||\+=|=[=~]?|!=?|<<[<-]?|[&\d]?>>|\d[<>]&?|[<>][&=]?|&[>&]?|\|[&|]?/,inside:{"file-descriptor":{pattern:/^\d/,alias:"important"}}},punctuation:/\$?\(\(?|\)\)?|\.\.|[{}[\];\\]/,number:{pattern:/(^|\s)(?:[1-9]\d*|0)(?:[.,]\d+)?\b/,lookbehind:!0}},a.inside=e.languages.bash;for(var s=["comment","function-name","for-or-select","assign-left","parameter","string","environment","function","keyword","builtin","boolean","file-descriptor","operator","punctuation","number"],o=n.variable[1].inside,i=0;i?^\w +\-.])*"/, - greedy: true - }, - 'number': /(?:\b\d+(?:\.\d*)?|\B\.\d+)(?:E[+-]?\d+)?/i, - 'keyword': /\b(?:AS|BEEP|BLOAD|BSAVE|CALL(?: ABSOLUTE)?|CASE|CHAIN|CHDIR|CLEAR|CLOSE|CLS|COM|COMMON|CONST|DATA|DECLARE|DEF(?: FN| SEG|DBL|INT|LNG|SNG|STR)|DIM|DO|DOUBLE|ELSE|ELSEIF|END|ENVIRON|ERASE|ERROR|EXIT|FIELD|FILES|FOR|FUNCTION|GET|GOSUB|GOTO|IF|INPUT|INTEGER|IOCTL|KEY|KILL|LINE INPUT|LOCATE|LOCK|LONG|LOOP|LSET|MKDIR|NAME|NEXT|OFF|ON(?: COM| ERROR| KEY| TIMER)?|OPEN|OPTION BASE|OUT|POKE|PUT|READ|REDIM|REM|RESTORE|RESUME|RETURN|RMDIR|RSET|RUN|SELECT CASE|SHARED|SHELL|SINGLE|SLEEP|STATIC|STEP|STOP|STRING|SUB|SWAP|SYSTEM|THEN|TIMER|TO|TROFF|TRON|TYPE|UNLOCK|UNTIL|USING|VIEW PRINT|WAIT|WEND|WHILE|WRITE)(?:\$|\b)/i, - 'function': /\b(?:ABS|ACCESS|ACOS|ANGLE|AREA|ARITHMETIC|ARRAY|ASIN|ASK|AT|ATN|BASE|BEGIN|BREAK|CAUSE|CEIL|CHR|CLIP|COLLATE|COLOR|CON|COS|COSH|COT|CSC|DATE|DATUM|DEBUG|DECIMAL|DEF|DEG|DEGREES|DELETE|DET|DEVICE|DISPLAY|DOT|ELAPSED|EPS|ERASABLE|EXLINE|EXP|EXTERNAL|EXTYPE|FILETYPE|FIXED|FP|GO|GRAPH|HANDLER|IDN|IMAGE|IN|INT|INTERNAL|IP|IS|KEYED|LBOUND|LCASE|LEFT|LEN|LENGTH|LET|LINE|LINES|LOG|LOG10|LOG2|LTRIM|MARGIN|MAT|MAX|MAXNUM|MID|MIN|MISSING|MOD|NATIVE|NUL|NUMERIC|OF|OPTION|ORD|ORGANIZATION|OUTIN|OUTPUT|PI|POINT|POINTER|POINTS|POS|PRINT|PROGRAM|PROMPT|RAD|RADIANS|RANDOMIZE|RECORD|RECSIZE|RECTYPE|RELATIVE|REMAINDER|REPEAT|REST|RETRY|REWRITE|RIGHT|RND|ROUND|RTRIM|SAME|SEC|SELECT|SEQUENTIAL|SET|SETTER|SGN|SIN|SINH|SIZE|SKIP|SQR|STANDARD|STATUS|STR|STREAM|STYLE|TAB|TAN|TANH|TEMPLATE|TEXT|THERE|TIME|TIMEOUT|TRACE|TRANSFORM|TRUNCATE|UBOUND|UCASE|USE|VAL|VARIABLE|VIEWPORT|WHEN|WINDOW|WITH|ZER|ZONEWIDTH)(?:\$|\b)/i, - 'operator': /<[=>]?|>=?|[+\-*\/^=&]|\b(?:AND|EQV|IMP|NOT|OR|XOR)\b/i, - 'punctuation': /[,;:()]/ -}; diff --git a/components/prism-basic.min.js b/components/prism-basic.min.js deleted file mode 100644 index 991e81ff8a..0000000000 --- a/components/prism-basic.min.js +++ /dev/null @@ -1 +0,0 @@ -Prism.languages.basic={comment:{pattern:/(?:!|REM\b).+/i,inside:{keyword:/^REM/i}},string:{pattern:/"(?:""|[!#$%&'()*,\/:;<=>?^\w +\-.])*"/,greedy:!0},number:/(?:\b\d+(?:\.\d*)?|\B\.\d+)(?:E[+-]?\d+)?/i,keyword:/\b(?:AS|BEEP|BLOAD|BSAVE|CALL(?: ABSOLUTE)?|CASE|CHAIN|CHDIR|CLEAR|CLOSE|CLS|COM|COMMON|CONST|DATA|DECLARE|DEF(?: FN| SEG|DBL|INT|LNG|SNG|STR)|DIM|DO|DOUBLE|ELSE|ELSEIF|END|ENVIRON|ERASE|ERROR|EXIT|FIELD|FILES|FOR|FUNCTION|GET|GOSUB|GOTO|IF|INPUT|INTEGER|IOCTL|KEY|KILL|LINE INPUT|LOCATE|LOCK|LONG|LOOP|LSET|MKDIR|NAME|NEXT|OFF|ON(?: COM| ERROR| KEY| TIMER)?|OPEN|OPTION BASE|OUT|POKE|PUT|READ|REDIM|REM|RESTORE|RESUME|RETURN|RMDIR|RSET|RUN|SELECT CASE|SHARED|SHELL|SINGLE|SLEEP|STATIC|STEP|STOP|STRING|SUB|SWAP|SYSTEM|THEN|TIMER|TO|TROFF|TRON|TYPE|UNLOCK|UNTIL|USING|VIEW PRINT|WAIT|WEND|WHILE|WRITE)(?:\$|\b)/i,function:/\b(?:ABS|ACCESS|ACOS|ANGLE|AREA|ARITHMETIC|ARRAY|ASIN|ASK|AT|ATN|BASE|BEGIN|BREAK|CAUSE|CEIL|CHR|CLIP|COLLATE|COLOR|CON|COS|COSH|COT|CSC|DATE|DATUM|DEBUG|DECIMAL|DEF|DEG|DEGREES|DELETE|DET|DEVICE|DISPLAY|DOT|ELAPSED|EPS|ERASABLE|EXLINE|EXP|EXTERNAL|EXTYPE|FILETYPE|FIXED|FP|GO|GRAPH|HANDLER|IDN|IMAGE|IN|INT|INTERNAL|IP|IS|KEYED|LBOUND|LCASE|LEFT|LEN|LENGTH|LET|LINE|LINES|LOG|LOG10|LOG2|LTRIM|MARGIN|MAT|MAX|MAXNUM|MID|MIN|MISSING|MOD|NATIVE|NUL|NUMERIC|OF|OPTION|ORD|ORGANIZATION|OUTIN|OUTPUT|PI|POINT|POINTER|POINTS|POS|PRINT|PROGRAM|PROMPT|RAD|RADIANS|RANDOMIZE|RECORD|RECSIZE|RECTYPE|RELATIVE|REMAINDER|REPEAT|REST|RETRY|REWRITE|RIGHT|RND|ROUND|RTRIM|SAME|SEC|SELECT|SEQUENTIAL|SET|SETTER|SGN|SIN|SINH|SIZE|SKIP|SQR|STANDARD|STATUS|STR|STREAM|STYLE|TAB|TAN|TANH|TEMPLATE|TEXT|THERE|TIME|TIMEOUT|TRACE|TRANSFORM|TRUNCATE|UBOUND|UCASE|USE|VAL|VARIABLE|VIEWPORT|WHEN|WINDOW|WITH|ZER|ZONEWIDTH)(?:\$|\b)/i,operator:/<[=>]?|>=?|[+\-*\/^=&]|\b(?:AND|EQV|IMP|NOT|OR|XOR)\b/i,punctuation:/[,;:()]/}; \ No newline at end of file diff --git a/components/prism-batch.js b/components/prism-batch.js deleted file mode 100644 index 405731800f..0000000000 --- a/components/prism-batch.js +++ /dev/null @@ -1,99 +0,0 @@ -(function (Prism) { - var variable = /%%?[~:\w]+%?|!\S+!/; - var parameter = { - pattern: /\/[a-z?]+(?=[ :]|$):?|-[a-z]\b|--[a-z-]+\b/im, - alias: 'attr-name', - inside: { - 'punctuation': /:/ - } - }; - var string = /"(?:[\\"]"|[^"])*"(?!")/; - var number = /(?:\b|-)\d+\b/; - - Prism.languages.batch = { - 'comment': [ - /^::.*/m, - { - pattern: /((?:^|[&(])[ \t]*)rem\b(?:[^^&)\r\n]|\^(?:\r\n|[\s\S]))*/im, - lookbehind: true - } - ], - 'label': { - pattern: /^:.*/m, - alias: 'property' - }, - 'command': [ - { - // FOR command - pattern: /((?:^|[&(])[ \t]*)for(?: \/[a-z?](?:[ :](?:"[^"]*"|[^\s"/]\S*))?)* \S+ in \([^)]+\) do/im, - lookbehind: true, - inside: { - 'keyword': /\b(?:do|in)\b|^for\b/i, - 'string': string, - 'parameter': parameter, - 'variable': variable, - 'number': number, - 'punctuation': /[()',]/ - } - }, - { - // IF command - pattern: /((?:^|[&(])[ \t]*)if(?: \/[a-z?](?:[ :](?:"[^"]*"|[^\s"/]\S*))?)* (?:not )?(?:cmdextversion \d+|defined \w+|errorlevel \d+|exist \S+|(?:"[^"]*"|(?!")(?:(?!==)\S)+)?(?:==| (?:equ|geq|gtr|leq|lss|neq) )(?:"[^"]*"|[^\s"]\S*))/im, - lookbehind: true, - inside: { - 'keyword': /\b(?:cmdextversion|defined|errorlevel|exist|not)\b|^if\b/i, - 'string': string, - 'parameter': parameter, - 'variable': variable, - 'number': number, - 'operator': /\^|==|\b(?:equ|geq|gtr|leq|lss|neq)\b/i - } - }, - { - // ELSE command - pattern: /((?:^|[&()])[ \t]*)else\b/im, - lookbehind: true, - inside: { - 'keyword': /^else\b/i - } - }, - { - // SET command - pattern: /((?:^|[&(])[ \t]*)set(?: \/[a-z](?:[ :](?:"[^"]*"|[^\s"/]\S*))?)* (?:[^^&)\r\n]|\^(?:\r\n|[\s\S]))*/im, - lookbehind: true, - inside: { - 'keyword': /^set\b/i, - 'string': string, - 'parameter': parameter, - 'variable': [ - variable, - /\w+(?=(?:[*\/%+\-&^|]|<<|>>)?=)/ - ], - 'number': number, - 'operator': /[*\/%+\-&^|]=?|<<=?|>>=?|[!~_=]/, - 'punctuation': /[()',]/ - } - }, - { - // Other commands - pattern: /((?:^|[&(])[ \t]*@?)\w+\b(?:"(?:[\\"]"|[^"])*"(?!")|[^"^&)\r\n]|\^(?:\r\n|[\s\S]))*/m, - lookbehind: true, - inside: { - 'keyword': /^\w+\b/, - 'string': string, - 'parameter': parameter, - 'label': { - pattern: /(^\s*):\S+/m, - lookbehind: true, - alias: 'property' - }, - 'variable': variable, - 'number': number, - 'operator': /\^/ - } - } - ], - 'operator': /[&@]/, - 'punctuation': /[()']/ - }; -}(Prism)); diff --git a/components/prism-batch.min.js b/components/prism-batch.min.js deleted file mode 100644 index 886f10c7a2..0000000000 --- a/components/prism-batch.min.js +++ /dev/null @@ -1 +0,0 @@ -!function(e){var r=/%%?[~:\w]+%?|!\S+!/,t={pattern:/\/[a-z?]+(?=[ :]|$):?|-[a-z]\b|--[a-z-]+\b/im,alias:"attr-name",inside:{punctuation:/:/}},n=/"(?:[\\"]"|[^"])*"(?!")/,i=/(?:\b|-)\d+\b/;e.languages.batch={comment:[/^::.*/m,{pattern:/((?:^|[&(])[ \t]*)rem\b(?:[^^&)\r\n]|\^(?:\r\n|[\s\S]))*/im,lookbehind:!0}],label:{pattern:/^:.*/m,alias:"property"},command:[{pattern:/((?:^|[&(])[ \t]*)for(?: \/[a-z?](?:[ :](?:"[^"]*"|[^\s"/]\S*))?)* \S+ in \([^)]+\) do/im,lookbehind:!0,inside:{keyword:/\b(?:do|in)\b|^for\b/i,string:n,parameter:t,variable:r,number:i,punctuation:/[()',]/}},{pattern:/((?:^|[&(])[ \t]*)if(?: \/[a-z?](?:[ :](?:"[^"]*"|[^\s"/]\S*))?)* (?:not )?(?:cmdextversion \d+|defined \w+|errorlevel \d+|exist \S+|(?:"[^"]*"|(?!")(?:(?!==)\S)+)?(?:==| (?:equ|geq|gtr|leq|lss|neq) )(?:"[^"]*"|[^\s"]\S*))/im,lookbehind:!0,inside:{keyword:/\b(?:cmdextversion|defined|errorlevel|exist|not)\b|^if\b/i,string:n,parameter:t,variable:r,number:i,operator:/\^|==|\b(?:equ|geq|gtr|leq|lss|neq)\b/i}},{pattern:/((?:^|[&()])[ \t]*)else\b/im,lookbehind:!0,inside:{keyword:/^else\b/i}},{pattern:/((?:^|[&(])[ \t]*)set(?: \/[a-z](?:[ :](?:"[^"]*"|[^\s"/]\S*))?)* (?:[^^&)\r\n]|\^(?:\r\n|[\s\S]))*/im,lookbehind:!0,inside:{keyword:/^set\b/i,string:n,parameter:t,variable:[r,/\w+(?=(?:[*\/%+\-&^|]|<<|>>)?=)/],number:i,operator:/[*\/%+\-&^|]=?|<<=?|>>=?|[!~_=]/,punctuation:/[()',]/}},{pattern:/((?:^|[&(])[ \t]*@?)\w+\b(?:"(?:[\\"]"|[^"])*"(?!")|[^"^&)\r\n]|\^(?:\r\n|[\s\S]))*/m,lookbehind:!0,inside:{keyword:/^\w+\b/,string:n,parameter:t,label:{pattern:/(^\s*):\S+/m,lookbehind:!0,alias:"property"},variable:r,number:i,operator:/\^/}}],operator:/[&@]/,punctuation:/[()']/}}(Prism); \ No newline at end of file diff --git a/components/prism-bbcode.js b/components/prism-bbcode.js deleted file mode 100644 index c80e5e8c3e..0000000000 --- a/components/prism-bbcode.js +++ /dev/null @@ -1,29 +0,0 @@ -Prism.languages.bbcode = { - 'tag': { - pattern: /\[\/?[^\s=\]]+(?:\s*=\s*(?:"[^"]*"|'[^']*'|[^\s'"\]=]+))?(?:\s+[^\s=\]]+\s*=\s*(?:"[^"]*"|'[^']*'|[^\s'"\]=]+))*\s*\]/, - inside: { - 'tag': { - pattern: /^\[\/?[^\s=\]]+/, - inside: { - 'punctuation': /^\[\/?/ - } - }, - 'attr-value': { - pattern: /=\s*(?:"[^"]*"|'[^']*'|[^\s'"\]=]+)/, - inside: { - 'punctuation': [ - /^=/, - { - pattern: /^(\s*)["']|["']$/, - lookbehind: true - } - ] - } - }, - 'punctuation': /\]/, - 'attr-name': /[^\s=\]]+/ - } - } -}; - -Prism.languages.shortcode = Prism.languages.bbcode; diff --git a/components/prism-bbcode.min.js b/components/prism-bbcode.min.js deleted file mode 100644 index 4cadf4950f..0000000000 --- a/components/prism-bbcode.min.js +++ /dev/null @@ -1 +0,0 @@ -Prism.languages.bbcode={tag:{pattern:/\[\/?[^\s=\]]+(?:\s*=\s*(?:"[^"]*"|'[^']*'|[^\s'"\]=]+))?(?:\s+[^\s=\]]+\s*=\s*(?:"[^"]*"|'[^']*'|[^\s'"\]=]+))*\s*\]/,inside:{tag:{pattern:/^\[\/?[^\s=\]]+/,inside:{punctuation:/^\[\/?/}},"attr-value":{pattern:/=\s*(?:"[^"]*"|'[^']*'|[^\s'"\]=]+)/,inside:{punctuation:[/^=/,{pattern:/^(\s*)["']|["']$/,lookbehind:!0}]}},punctuation:/\]/,"attr-name":/[^\s=\]]+/}}},Prism.languages.shortcode=Prism.languages.bbcode; \ No newline at end of file diff --git a/components/prism-bbj.js b/components/prism-bbj.js deleted file mode 100644 index df401d329d..0000000000 --- a/components/prism-bbj.js +++ /dev/null @@ -1,19 +0,0 @@ -(function (Prism) { - Prism.languages.bbj = { - 'comment': { - pattern: /(^|[^\\:])rem\s+.*/i, - lookbehind: true, - greedy: true - }, - 'string': { - pattern: /(['"])(?:(?!\1|\\).|\\.)*\1/, - greedy: true - }, - 'number': /(?:\b\d+(?:\.\d*)?|\B\.\d+)(?:E[+-]?\d+)?/i, - 'keyword': /\b(?:abstract|all|argc|begin|bye|callback|case|chn|class|classend|ctl|day|declare|delete|dim|dom|dread|dsz|else|end|endif|err|exitto|extends|fi|field|for|from|gosub|goto|if|implements|interface|interfaceend|iol|iolist|let|list|load|method|methodend|methodret|on|opts|pfx|print|private|process_events|protected|psz|public|read|read_resource|release|remove_callback|repeat|restore|return|rev|seterr|setesc|sqlchn|sqlunt|ssn|start|static|swend|switch|sys|then|tim|unt|until|use|void|wend|where|while)\b/i, - 'function': /\b\w+(?=\()/, - 'boolean': /\b(?:BBjAPI\.TRUE|BBjAPI\.FALSE)\b/i, - 'operator': /<[=>]?|>=?|[+\-*\/^=&]|\b(?:and|not|or|xor)\b/i, - 'punctuation': /[.,;:()]/ - }; -}(Prism)); diff --git a/components/prism-bbj.min.js b/components/prism-bbj.min.js deleted file mode 100644 index 839b4a9439..0000000000 --- a/components/prism-bbj.min.js +++ /dev/null @@ -1 +0,0 @@ -!function(e){e.languages.bbj={comment:{pattern:/(^|[^\\:])rem\s+.*/i,lookbehind:!0,greedy:!0},string:{pattern:/(['"])(?:(?!\1|\\).|\\.)*\1/,greedy:!0},number:/(?:\b\d+(?:\.\d*)?|\B\.\d+)(?:E[+-]?\d+)?/i,keyword:/\b(?:abstract|all|argc|begin|bye|callback|case|chn|class|classend|ctl|day|declare|delete|dim|dom|dread|dsz|else|end|endif|err|exitto|extends|fi|field|for|from|gosub|goto|if|implements|interface|interfaceend|iol|iolist|let|list|load|method|methodend|methodret|on|opts|pfx|print|private|process_events|protected|psz|public|read|read_resource|release|remove_callback|repeat|restore|return|rev|seterr|setesc|sqlchn|sqlunt|ssn|start|static|swend|switch|sys|then|tim|unt|until|use|void|wend|where|while)\b/i,function:/\b\w+(?=\()/,boolean:/\b(?:BBjAPI\.TRUE|BBjAPI\.FALSE)\b/i,operator:/<[=>]?|>=?|[+\-*\/^=&]|\b(?:and|not|or|xor)\b/i,punctuation:/[.,;:()]/}}(Prism); \ No newline at end of file diff --git a/components/prism-bicep.js b/components/prism-bicep.js deleted file mode 100644 index 7220f2916a..0000000000 --- a/components/prism-bicep.js +++ /dev/null @@ -1,77 +0,0 @@ -// based loosely upon: https://github.com/Azure/bicep/blob/main/src/textmate/bicep.tmlanguage -Prism.languages.bicep = { - 'comment': [ - { - // multiline comments eg /* ASDF */ - pattern: /(^|[^\\])\/\*[\s\S]*?(?:\*\/|$)/, - lookbehind: true, - greedy: true - }, - { - // singleline comments eg // ASDF - pattern: /(^|[^\\:])\/\/.*/, - lookbehind: true, - greedy: true - } - ], - - 'property': [ - { - pattern: /([\r\n][ \t]*)[a-z_]\w*(?=[ \t]*:)/i, - lookbehind: true - }, - { - pattern: /([\r\n][ \t]*)'(?:\\.|\$(?!\{)|[^'\\\r\n$])*'(?=[ \t]*:)/, - lookbehind: true, - greedy: true - } - ], - 'string': [ - { - pattern: /'''[^'][\s\S]*?'''/, - greedy: true - }, - { - pattern: /(^|[^\\'])'(?:\\.|\$(?!\{)|[^'\\\r\n$])*'/, - lookbehind: true, - greedy: true, - } - ], - 'interpolated-string': { - pattern: /(^|[^\\'])'(?:\\.|\$(?:(?!\{)|\{[^{}\r\n]*\})|[^'\\\r\n$])*'/, - lookbehind: true, - greedy: true, - inside: { - 'interpolation': { - pattern: /\$\{[^{}\r\n]*\}/, - inside: { - 'expression': { - pattern: /(^\$\{)[\s\S]+(?=\}$)/, - lookbehind: true - }, - 'punctuation': /^\$\{|\}$/, - } - }, - 'string': /[\s\S]+/ - } - }, - - 'datatype': { - pattern: /(\b(?:output|param)\b[ \t]+\w+[ \t]+)\w+\b/, - lookbehind: true, - alias: 'class-name' - }, - - 'boolean': /\b(?:false|true)\b/, - // https://github.com/Azure/bicep/blob/114a3251b4e6e30082a58729f19a8cc4e374ffa6/src/textmate/bicep.tmlanguage#L184 - 'keyword': /\b(?:existing|for|if|in|module|null|output|param|resource|targetScope|var)\b/, - - 'decorator': /@\w+\b/, - 'function': /\b[a-z_]\w*(?=[ \t]*\()/i, - - 'number': /(?:\b\d+(?:\.\d*)?|\B\.\d+)(?:E[+-]?\d+)?/i, - 'operator': /--|\+\+|\*\*=?|=>|&&=?|\|\|=?|[!=]==|<<=?|>>>?=?|[-+*/%&|^!=<>]=?|\.{3}|\?\?=?|\?\.?|[~:]/, - 'punctuation': /[{}[\];(),.:]/, -}; - -Prism.languages.bicep['interpolated-string'].inside['interpolation'].inside['expression'].inside = Prism.languages.bicep; diff --git a/components/prism-bicep.min.js b/components/prism-bicep.min.js deleted file mode 100644 index afc03a7b5a..0000000000 --- a/components/prism-bicep.min.js +++ /dev/null @@ -1 +0,0 @@ -Prism.languages.bicep={comment:[{pattern:/(^|[^\\])\/\*[\s\S]*?(?:\*\/|$)/,lookbehind:!0,greedy:!0},{pattern:/(^|[^\\:])\/\/.*/,lookbehind:!0,greedy:!0}],property:[{pattern:/([\r\n][ \t]*)[a-z_]\w*(?=[ \t]*:)/i,lookbehind:!0},{pattern:/([\r\n][ \t]*)'(?:\\.|\$(?!\{)|[^'\\\r\n$])*'(?=[ \t]*:)/,lookbehind:!0,greedy:!0}],string:[{pattern:/'''[^'][\s\S]*?'''/,greedy:!0},{pattern:/(^|[^\\'])'(?:\\.|\$(?!\{)|[^'\\\r\n$])*'/,lookbehind:!0,greedy:!0}],"interpolated-string":{pattern:/(^|[^\\'])'(?:\\.|\$(?:(?!\{)|\{[^{}\r\n]*\})|[^'\\\r\n$])*'/,lookbehind:!0,greedy:!0,inside:{interpolation:{pattern:/\$\{[^{}\r\n]*\}/,inside:{expression:{pattern:/(^\$\{)[\s\S]+(?=\}$)/,lookbehind:!0},punctuation:/^\$\{|\}$/}},string:/[\s\S]+/}},datatype:{pattern:/(\b(?:output|param)\b[ \t]+\w+[ \t]+)\w+\b/,lookbehind:!0,alias:"class-name"},boolean:/\b(?:false|true)\b/,keyword:/\b(?:existing|for|if|in|module|null|output|param|resource|targetScope|var)\b/,decorator:/@\w+\b/,function:/\b[a-z_]\w*(?=[ \t]*\()/i,number:/(?:\b\d+(?:\.\d*)?|\B\.\d+)(?:E[+-]?\d+)?/i,operator:/--|\+\+|\*\*=?|=>|&&=?|\|\|=?|[!=]==|<<=?|>>>?=?|[-+*/%&|^!=<>]=?|\.{3}|\?\?=?|\?\.?|[~:]/,punctuation:/[{}[\];(),.:]/},Prism.languages.bicep["interpolated-string"].inside.interpolation.inside.expression.inside=Prism.languages.bicep; \ No newline at end of file diff --git a/components/prism-birb.js b/components/prism-birb.js deleted file mode 100644 index ff994d8a5d..0000000000 --- a/components/prism-birb.js +++ /dev/null @@ -1,23 +0,0 @@ -Prism.languages.birb = Prism.languages.extend('clike', { - 'string': { - pattern: /r?("|')(?:\\.|(?!\1)[^\\])*\1/, - greedy: true - }, - 'class-name': [ - /\b[A-Z](?:[\d_]*[a-zA-Z]\w*)?\b/, - - // matches variable and function return types (parameters as well). - /\b(?:[A-Z]\w*|(?!(?:var|void)\b)[a-z]\w*)(?=\s+\w+\s*[;,=()])/ - ], - 'keyword': /\b(?:assert|break|case|class|const|default|else|enum|final|follows|for|grab|if|nest|new|next|noSeeb|return|static|switch|throw|var|void|while)\b/, - 'operator': /\+\+|--|&&|\|\||<<=?|>>=?|~(?:\/=?)?|[+\-*\/%&^|=!<>]=?|\?|:/, - 'variable': /\b[a-z_]\w*\b/, -}); - -Prism.languages.insertBefore('birb', 'function', { - 'metadata': { - pattern: /<\w+>/, - greedy: true, - alias: 'symbol' - } -}); diff --git a/components/prism-birb.min.js b/components/prism-birb.min.js deleted file mode 100644 index c61079e1ea..0000000000 --- a/components/prism-birb.min.js +++ /dev/null @@ -1 +0,0 @@ -Prism.languages.birb=Prism.languages.extend("clike",{string:{pattern:/r?("|')(?:\\.|(?!\1)[^\\])*\1/,greedy:!0},"class-name":[/\b[A-Z](?:[\d_]*[a-zA-Z]\w*)?\b/,/\b(?:[A-Z]\w*|(?!(?:var|void)\b)[a-z]\w*)(?=\s+\w+\s*[;,=()])/],keyword:/\b(?:assert|break|case|class|const|default|else|enum|final|follows|for|grab|if|nest|new|next|noSeeb|return|static|switch|throw|var|void|while)\b/,operator:/\+\+|--|&&|\|\||<<=?|>>=?|~(?:\/=?)?|[+\-*\/%&^|=!<>]=?|\?|:/,variable:/\b[a-z_]\w*\b/}),Prism.languages.insertBefore("birb","function",{metadata:{pattern:/<\w+>/,greedy:!0,alias:"symbol"}}); \ No newline at end of file diff --git a/components/prism-bison.js b/components/prism-bison.js deleted file mode 100644 index d69ba08ca6..0000000000 --- a/components/prism-bison.js +++ /dev/null @@ -1,39 +0,0 @@ -Prism.languages.bison = Prism.languages.extend('c', {}); - -Prism.languages.insertBefore('bison', 'comment', { - 'bison': { - // This should match all the beginning of the file - // including the prologue(s), the bison declarations and - // the grammar rules. - pattern: /^(?:[^%]|%(?!%))*%%[\s\S]*?%%/, - inside: { - 'c': { - // Allow for one level of nested braces - pattern: /%\{[\s\S]*?%\}|\{(?:\{[^}]*\}|[^{}])*\}/, - inside: { - 'delimiter': { - pattern: /^%?\{|%?\}$/, - alias: 'punctuation' - }, - 'bison-variable': { - pattern: /[$@](?:<[^\s>]+>)?[\w$]+/, - alias: 'variable', - inside: { - 'punctuation': /<|>/ - } - }, - rest: Prism.languages.c - } - }, - 'comment': Prism.languages.c.comment, - 'string': Prism.languages.c.string, - 'property': /\S+(?=:)/, - 'keyword': /%\w+/, - 'number': { - pattern: /(^|[^@])\b(?:0x[\da-f]+|\d+)/i, - lookbehind: true - }, - 'punctuation': /%[%?]|[|:;\[\]<>]/ - } - } -}); diff --git a/components/prism-bison.min.js b/components/prism-bison.min.js deleted file mode 100644 index 81ba88f682..0000000000 --- a/components/prism-bison.min.js +++ /dev/null @@ -1 +0,0 @@ -Prism.languages.bison=Prism.languages.extend("c",{}),Prism.languages.insertBefore("bison","comment",{bison:{pattern:/^(?:[^%]|%(?!%))*%%[\s\S]*?%%/,inside:{c:{pattern:/%\{[\s\S]*?%\}|\{(?:\{[^}]*\}|[^{}])*\}/,inside:{delimiter:{pattern:/^%?\{|%?\}$/,alias:"punctuation"},"bison-variable":{pattern:/[$@](?:<[^\s>]+>)?[\w$]+/,alias:"variable",inside:{punctuation:/<|>/}},rest:Prism.languages.c}},comment:Prism.languages.c.comment,string:Prism.languages.c.string,property:/\S+(?=:)/,keyword:/%\w+/,number:{pattern:/(^|[^@])\b(?:0x[\da-f]+|\d+)/i,lookbehind:!0},punctuation:/%[%?]|[|:;\[\]<>]/}}}); \ No newline at end of file diff --git a/components/prism-bnf.js b/components/prism-bnf.js deleted file mode 100644 index dfbe3973a8..0000000000 --- a/components/prism-bnf.js +++ /dev/null @@ -1,21 +0,0 @@ -Prism.languages.bnf = { - 'string': { - pattern: /"[^\r\n"]*"|'[^\r\n']*'/ - }, - 'definition': { - pattern: /<[^<>\r\n\t]+>(?=\s*::=)/, - alias: ['rule', 'keyword'], - inside: { - 'punctuation': /^<|>$/ - } - }, - 'rule': { - pattern: /<[^<>\r\n\t]+>/, - inside: { - 'punctuation': /^<|>$/ - } - }, - 'operator': /::=|[|()[\]{}*+?]|\.{3}/ -}; - -Prism.languages.rbnf = Prism.languages.bnf; diff --git a/components/prism-bnf.min.js b/components/prism-bnf.min.js deleted file mode 100644 index 324ad09804..0000000000 --- a/components/prism-bnf.min.js +++ /dev/null @@ -1 +0,0 @@ -Prism.languages.bnf={string:{pattern:/"[^\r\n"]*"|'[^\r\n']*'/},definition:{pattern:/<[^<>\r\n\t]+>(?=\s*::=)/,alias:["rule","keyword"],inside:{punctuation:/^<|>$/}},rule:{pattern:/<[^<>\r\n\t]+>/,inside:{punctuation:/^<|>$/}},operator:/::=|[|()[\]{}*+?]|\.{3}/},Prism.languages.rbnf=Prism.languages.bnf; \ No newline at end of file diff --git a/components/prism-bqn.js b/components/prism-bqn.js deleted file mode 100644 index 9a87a25b69..0000000000 --- a/components/prism-bqn.js +++ /dev/null @@ -1,63 +0,0 @@ -Prism.languages.bqn = { - 'shebang': { - pattern: /^#![ \t]*\/.*/, - alias: 'important', - greedy: true - }, - 'comment': { - pattern: /#.*/, - greedy: true - }, - 'string-literal': { - pattern: /"(?:[^"]|"")*"/, - greedy: true, - alias: 'string' - }, - 'character-literal': { - pattern: /'(?:[\s\S]|[\uD800-\uDBFF][\uDC00-\uDFFF])'/, - greedy: true, - alias: 'char' - }, - 'function': /•[\w¯.∞π]+[\w¯.∞π]*/, - 'dot-notation-on-brackets': { - pattern: /\{(?=.*\}\.)|\}\./, - alias: 'namespace' - }, - 'special-name': { - pattern: /(?:𝕨|𝕩|𝕗|𝕘|𝕤|𝕣|𝕎|𝕏|𝔽|𝔾|𝕊|_𝕣_|_𝕣)/, - alias: 'keyword' - }, - 'dot-notation-on-name': { - pattern: /[A-Za-z_][\w¯∞π]*\./, - alias: 'namespace' - }, - 'word-number-scientific': { - pattern: /\d+(?:\.\d+)?[eE]¯?\d+/, - alias: 'number' - }, - 'word-name': { - pattern: /[A-Za-z_][\w¯∞π]*/, - alias: 'symbol' - }, - 'word-number': { - pattern: /[¯∞π]?(?:\d*\.?\b\d+(?:e[+¯]?\d+|E[+¯]?\d+)?|¯|∞|π)(?:j¯?(?:(?:\d+(?:\.\d+)?|\.\d+)(?:e[+¯]?\d+|E[+¯]?\d+)?|¯|∞|π))?/, - alias: 'number' - }, - 'null-literal': { - pattern: /@/, - alias: 'char' - }, - 'primitive-functions': { - pattern: /[-+×÷⋆√⌊⌈|¬∧∨<>≠=≤≥≡≢⊣⊢⥊∾≍⋈↑↓↕«»⌽⍉/⍋⍒⊏⊑⊐⊒∊⍷⊔!]/, - alias: 'operator' - }, - 'primitive-1-operators': { - pattern: /[`˜˘¨⁼⌜´˝˙]/, - alias: 'operator' - }, - 'primitive-2-operators': { - pattern: /[∘⊸⟜○⌾⎉⚇⍟⊘◶⎊]/, - alias: 'operator' - }, - 'punctuation': /[←⇐↩(){}⟨⟩[\]‿·⋄,.;:?]/ -}; diff --git a/components/prism-bqn.min.js b/components/prism-bqn.min.js deleted file mode 100644 index 3a66be55d5..0000000000 --- a/components/prism-bqn.min.js +++ /dev/null @@ -1 +0,0 @@ -Prism.languages.bqn={shebang:{pattern:/^#![ \t]*\/.*/,alias:"important",greedy:!0},comment:{pattern:/#.*/,greedy:!0},"string-literal":{pattern:/"(?:[^"]|"")*"/,greedy:!0,alias:"string"},"character-literal":{pattern:/'(?:[\s\S]|[\uD800-\uDBFF][\uDC00-\uDFFF])'/,greedy:!0,alias:"char"},function:/•[\w¯.∞π]+[\w¯.∞π]*/,"dot-notation-on-brackets":{pattern:/\{(?=.*\}\.)|\}\./,alias:"namespace"},"special-name":{pattern:/(?:𝕨|𝕩|𝕗|𝕘|𝕤|𝕣|𝕎|𝕏|𝔽|𝔾|𝕊|_𝕣_|_𝕣)/,alias:"keyword"},"dot-notation-on-name":{pattern:/[A-Za-z_][\w¯∞π]*\./,alias:"namespace"},"word-number-scientific":{pattern:/\d+(?:\.\d+)?[eE]¯?\d+/,alias:"number"},"word-name":{pattern:/[A-Za-z_][\w¯∞π]*/,alias:"symbol"},"word-number":{pattern:/[¯∞π]?(?:\d*\.?\b\d+(?:e[+¯]?\d+|E[+¯]?\d+)?|¯|∞|π)(?:j¯?(?:(?:\d+(?:\.\d+)?|\.\d+)(?:e[+¯]?\d+|E[+¯]?\d+)?|¯|∞|π))?/,alias:"number"},"null-literal":{pattern:/@/,alias:"char"},"primitive-functions":{pattern:/[-+×÷⋆√⌊⌈|¬∧∨<>≠=≤≥≡≢⊣⊢⥊∾≍⋈↑↓↕«»⌽⍉/⍋⍒⊏⊑⊐⊒∊⍷⊔!]/,alias:"operator"},"primitive-1-operators":{pattern:/[`˜˘¨⁼⌜´˝˙]/,alias:"operator"},"primitive-2-operators":{pattern:/[∘⊸⟜○⌾⎉⚇⍟⊘◶⎊]/,alias:"operator"},punctuation:/[←⇐↩(){}⟨⟩[\]‿·⋄,.;:?]/}; \ No newline at end of file diff --git a/components/prism-brainfuck.js b/components/prism-brainfuck.js deleted file mode 100644 index f6a5913fcc..0000000000 --- a/components/prism-brainfuck.js +++ /dev/null @@ -1,20 +0,0 @@ -Prism.languages.brainfuck = { - 'pointer': { - pattern: /<|>/, - alias: 'keyword' - }, - 'increment': { - pattern: /\+/, - alias: 'inserted' - }, - 'decrement': { - pattern: /-/, - alias: 'deleted' - }, - 'branching': { - pattern: /\[|\]/, - alias: 'important' - }, - 'operator': /[.,]/, - 'comment': /\S+/ -}; diff --git a/components/prism-brainfuck.min.js b/components/prism-brainfuck.min.js deleted file mode 100644 index ed9707eaa4..0000000000 --- a/components/prism-brainfuck.min.js +++ /dev/null @@ -1 +0,0 @@ -Prism.languages.brainfuck={pointer:{pattern:/<|>/,alias:"keyword"},increment:{pattern:/\+/,alias:"inserted"},decrement:{pattern:/-/,alias:"deleted"},branching:{pattern:/\[|\]/,alias:"important"},operator:/[.,]/,comment:/\S+/}; \ No newline at end of file diff --git a/components/prism-brightscript.js b/components/prism-brightscript.js deleted file mode 100644 index a75e55bf08..0000000000 --- a/components/prism-brightscript.js +++ /dev/null @@ -1,44 +0,0 @@ -Prism.languages.brightscript = { - 'comment': /(?:\brem|').*/i, - 'directive-statement': { - pattern: /(^[\t ]*)#(?:const|else(?:[\t ]+if)?|end[\t ]+if|error|if).*/im, - lookbehind: true, - alias: 'property', - inside: { - 'error-message': { - pattern: /(^#error).+/, - lookbehind: true - }, - 'directive': { - pattern: /^#(?:const|else(?:[\t ]+if)?|end[\t ]+if|error|if)/, - alias: 'keyword' - }, - 'expression': { - pattern: /[\s\S]+/, - inside: null // see below - } - } - }, - 'property': { - pattern: /([\r\n{,][\t ]*)(?:(?!\d)\w+|"(?:[^"\r\n]|"")*"(?!"))(?=[ \t]*:)/, - lookbehind: true, - greedy: true - }, - 'string': { - pattern: /"(?:[^"\r\n]|"")*"(?!")/, - greedy: true - }, - 'class-name': { - pattern: /(\bAs[\t ]+)\w+/i, - lookbehind: true - }, - 'keyword': /\b(?:As|Dim|Each|Else|Elseif|End|Exit|For|Function|Goto|If|In|Print|Return|Step|Stop|Sub|Then|To|While)\b/i, - 'boolean': /\b(?:false|true)\b/i, - 'function': /\b(?!\d)\w+(?=[\t ]*\()/, - 'number': /(?:\b\d+(?:\.\d+)?(?:[ed][+-]\d+)?|&h[a-f\d]+)\b[%&!#]?/i, - 'operator': /--|\+\+|>>=?|<<=?|<>|[-+*/\\<>]=?|[:^=?]|\b(?:and|mod|not|or)\b/i, - 'punctuation': /[.,;()[\]{}]/, - 'constant': /\b(?:LINE_NUM)\b/i -}; - -Prism.languages.brightscript['directive-statement'].inside.expression.inside = Prism.languages.brightscript; diff --git a/components/prism-brightscript.min.js b/components/prism-brightscript.min.js deleted file mode 100644 index af39c1bc85..0000000000 --- a/components/prism-brightscript.min.js +++ /dev/null @@ -1 +0,0 @@ -Prism.languages.brightscript={comment:/(?:\brem|').*/i,"directive-statement":{pattern:/(^[\t ]*)#(?:const|else(?:[\t ]+if)?|end[\t ]+if|error|if).*/im,lookbehind:!0,alias:"property",inside:{"error-message":{pattern:/(^#error).+/,lookbehind:!0},directive:{pattern:/^#(?:const|else(?:[\t ]+if)?|end[\t ]+if|error|if)/,alias:"keyword"},expression:{pattern:/[\s\S]+/,inside:null}}},property:{pattern:/([\r\n{,][\t ]*)(?:(?!\d)\w+|"(?:[^"\r\n]|"")*"(?!"))(?=[ \t]*:)/,lookbehind:!0,greedy:!0},string:{pattern:/"(?:[^"\r\n]|"")*"(?!")/,greedy:!0},"class-name":{pattern:/(\bAs[\t ]+)\w+/i,lookbehind:!0},keyword:/\b(?:As|Dim|Each|Else|Elseif|End|Exit|For|Function|Goto|If|In|Print|Return|Step|Stop|Sub|Then|To|While)\b/i,boolean:/\b(?:false|true)\b/i,function:/\b(?!\d)\w+(?=[\t ]*\()/,number:/(?:\b\d+(?:\.\d+)?(?:[ed][+-]\d+)?|&h[a-f\d]+)\b[%&!#]?/i,operator:/--|\+\+|>>=?|<<=?|<>|[-+*/\\<>]=?|[:^=?]|\b(?:and|mod|not|or)\b/i,punctuation:/[.,;()[\]{}]/,constant:/\b(?:LINE_NUM)\b/i},Prism.languages.brightscript["directive-statement"].inside.expression.inside=Prism.languages.brightscript; \ No newline at end of file diff --git a/components/prism-bro.js b/components/prism-bro.js deleted file mode 100644 index 775d589a20..0000000000 --- a/components/prism-bro.js +++ /dev/null @@ -1,37 +0,0 @@ -Prism.languages.bro = { - - 'comment': { - pattern: /(^|[^\\$])#.*/, - lookbehind: true, - inside: { - 'italic': /\b(?:FIXME|TODO|XXX)\b/ - } - }, - - 'string': { - pattern: /(["'])(?:\\(?:\r\n|[\s\S])|(?!\1)[^\\\r\n])*\1/, - greedy: true - }, - - 'boolean': /\b[TF]\b/, - - 'function': { - pattern: /(\b(?:event|function|hook)[ \t]+)\w+(?:::\w+)?/, - lookbehind: true - }, - - 'builtin': /(?:@(?:load(?:-(?:plugin|sigs))?|unload|prefixes|ifn?def|else|(?:end)?if|DIR|FILENAME))|(?:&?(?:add_func|create_expire|default|delete_func|encrypt|error_handler|expire_func|group|log|mergeable|optional|persistent|priority|raw_output|read_expire|redef|rotate_interval|rotate_size|synchronized|type_column|write_expire))/, - - 'constant': { - pattern: /(\bconst[ \t]+)\w+/i, - lookbehind: true - }, - - 'keyword': /\b(?:add|addr|alarm|any|bool|break|const|continue|count|delete|double|else|enum|event|export|file|for|function|global|hook|if|in|int|interval|local|module|next|of|opaque|pattern|port|print|record|return|schedule|set|string|subnet|table|time|timeout|using|vector|when)\b/, - - 'operator': /--?|\+\+?|!=?=?|<=?|>=?|==?=?|&&|\|\|?|\?|\*|\/|~|\^|%/, - - 'number': /\b0x[\da-f]+\b|(?:\b\d+(?:\.\d*)?|\B\.\d+)(?:e[+-]?\d+)?/i, - - 'punctuation': /[{}[\];(),.:]/ -}; diff --git a/components/prism-bro.min.js b/components/prism-bro.min.js deleted file mode 100644 index bf0c7edb92..0000000000 --- a/components/prism-bro.min.js +++ /dev/null @@ -1 +0,0 @@ -Prism.languages.bro={comment:{pattern:/(^|[^\\$])#.*/,lookbehind:!0,inside:{italic:/\b(?:FIXME|TODO|XXX)\b/}},string:{pattern:/(["'])(?:\\(?:\r\n|[\s\S])|(?!\1)[^\\\r\n])*\1/,greedy:!0},boolean:/\b[TF]\b/,function:{pattern:/(\b(?:event|function|hook)[ \t]+)\w+(?:::\w+)?/,lookbehind:!0},builtin:/(?:@(?:load(?:-(?:plugin|sigs))?|unload|prefixes|ifn?def|else|(?:end)?if|DIR|FILENAME))|(?:&?(?:add_func|create_expire|default|delete_func|encrypt|error_handler|expire_func|group|log|mergeable|optional|persistent|priority|raw_output|read_expire|redef|rotate_interval|rotate_size|synchronized|type_column|write_expire))/,constant:{pattern:/(\bconst[ \t]+)\w+/i,lookbehind:!0},keyword:/\b(?:add|addr|alarm|any|bool|break|const|continue|count|delete|double|else|enum|event|export|file|for|function|global|hook|if|in|int|interval|local|module|next|of|opaque|pattern|port|print|record|return|schedule|set|string|subnet|table|time|timeout|using|vector|when)\b/,operator:/--?|\+\+?|!=?=?|<=?|>=?|==?=?|&&|\|\|?|\?|\*|\/|~|\^|%/,number:/\b0x[\da-f]+\b|(?:\b\d+(?:\.\d*)?|\B\.\d+)(?:e[+-]?\d+)?/i,punctuation:/[{}[\];(),.:]/}; \ No newline at end of file diff --git a/components/prism-bsl.js b/components/prism-bsl.js deleted file mode 100644 index ae2cd8fa37..0000000000 --- a/components/prism-bsl.js +++ /dev/null @@ -1,75 +0,0 @@ -/* eslint-disable no-misleading-character-class */ - -// 1C:Enterprise -// https://github.com/Diversus23/ -// -Prism.languages.bsl = { - 'comment': /\/\/.*/, - 'string': [ - // Строки - // Strings - { - pattern: /"(?:[^"]|"")*"(?!")/, - greedy: true - }, - // Дата и время - // Date & time - { - pattern: /'(?:[^'\r\n\\]|\\.)*'/ - } - ], - 'keyword': [ - { - // RU - pattern: /(^|[^\w\u0400-\u0484\u0487-\u052f\u1d2b\u1d78\u2de0-\u2dff\ua640-\ua69f\ufe2e\ufe2f])(?:пока|для|новый|прервать|попытка|исключение|вызватьисключение|иначе|конецпопытки|неопределено|функция|перем|возврат|конецфункции|если|иначеесли|процедура|конецпроцедуры|тогда|знач|экспорт|конецесли|из|каждого|истина|ложь|по|цикл|конеццикла|выполнить)(?![\w\u0400-\u0484\u0487-\u052f\u1d2b\u1d78\u2de0-\u2dff\ua640-\ua69f\ufe2e\ufe2f])/i, - lookbehind: true - }, - { - // EN - pattern: /\b(?:break|do|each|else|elseif|enddo|endfunction|endif|endprocedure|endtry|except|execute|export|false|for|function|if|in|new|null|procedure|raise|return|then|to|true|try|undefined|val|var|while)\b/i - } - ], - 'number': { - pattern: /(^(?=\d)|[^\w\u0400-\u0484\u0487-\u052f\u1d2b\u1d78\u2de0-\u2dff\ua640-\ua69f\ufe2e\ufe2f])(?:\d+(?:\.\d*)?|\.\d+)(?:E[+-]?\d+)?/i, - lookbehind: true - }, - 'operator': [ - /[<>+\-*/]=?|[%=]/, - // RU - { - pattern: /(^|[^\w\u0400-\u0484\u0487-\u052f\u1d2b\u1d78\u2de0-\u2dff\ua640-\ua69f\ufe2e\ufe2f])(?:и|или|не)(?![\w\u0400-\u0484\u0487-\u052f\u1d2b\u1d78\u2de0-\u2dff\ua640-\ua69f\ufe2e\ufe2f])/i, - lookbehind: true - }, - // EN - { - pattern: /\b(?:and|not|or)\b/i - } - ], - 'punctuation': /\(\.|\.\)|[()\[\]:;,.]/, - 'directive': [ - // Теги препроцессора вида &Клиент, &Сервер, ... - // Preprocessor tags of the type &Client, &Server, ... - { - pattern: /^([ \t]*)&.*/m, - lookbehind: true, - greedy: true, - alias: 'important' - }, - // Инструкции препроцессора вида: - // #Если Сервер Тогда - // ... - // #КонецЕсли - // Preprocessor instructions of the form: - // #If Server Then - // ... - // #EndIf - { - pattern: /^([ \t]*)#.*/gm, - lookbehind: true, - greedy: true, - alias: 'important' - } - ] -}; - -Prism.languages.oscript = Prism.languages['bsl']; diff --git a/components/prism-bsl.min.js b/components/prism-bsl.min.js deleted file mode 100644 index 4c93478087..0000000000 --- a/components/prism-bsl.min.js +++ /dev/null @@ -1 +0,0 @@ -Prism.languages.bsl={comment:/\/\/.*/,string:[{pattern:/"(?:[^"]|"")*"(?!")/,greedy:!0},{pattern:/'(?:[^'\r\n\\]|\\.)*'/}],keyword:[{pattern:/(^|[^\w\u0400-\u0484\u0487-\u052f\u1d2b\u1d78\u2de0-\u2dff\ua640-\ua69f\ufe2e\ufe2f])(?:пока|для|новый|прервать|попытка|исключение|вызватьисключение|иначе|конецпопытки|неопределено|функция|перем|возврат|конецфункции|если|иначеесли|процедура|конецпроцедуры|тогда|знач|экспорт|конецесли|из|каждого|истина|ложь|по|цикл|конеццикла|выполнить)(?![\w\u0400-\u0484\u0487-\u052f\u1d2b\u1d78\u2de0-\u2dff\ua640-\ua69f\ufe2e\ufe2f])/i,lookbehind:!0},{pattern:/\b(?:break|do|each|else|elseif|enddo|endfunction|endif|endprocedure|endtry|except|execute|export|false|for|function|if|in|new|null|procedure|raise|return|then|to|true|try|undefined|val|var|while)\b/i}],number:{pattern:/(^(?=\d)|[^\w\u0400-\u0484\u0487-\u052f\u1d2b\u1d78\u2de0-\u2dff\ua640-\ua69f\ufe2e\ufe2f])(?:\d+(?:\.\d*)?|\.\d+)(?:E[+-]?\d+)?/i,lookbehind:!0},operator:[/[<>+\-*/]=?|[%=]/,{pattern:/(^|[^\w\u0400-\u0484\u0487-\u052f\u1d2b\u1d78\u2de0-\u2dff\ua640-\ua69f\ufe2e\ufe2f])(?:и|или|не)(?![\w\u0400-\u0484\u0487-\u052f\u1d2b\u1d78\u2de0-\u2dff\ua640-\ua69f\ufe2e\ufe2f])/i,lookbehind:!0},{pattern:/\b(?:and|not|or)\b/i}],punctuation:/\(\.|\.\)|[()\[\]:;,.]/,directive:[{pattern:/^([ \t]*)&.*/m,lookbehind:!0,greedy:!0,alias:"important"},{pattern:/^([ \t]*)#.*/gm,lookbehind:!0,greedy:!0,alias:"important"}]},Prism.languages.oscript=Prism.languages.bsl; \ No newline at end of file diff --git a/components/prism-c.js b/components/prism-c.js deleted file mode 100644 index 58ed906eca..0000000000 --- a/components/prism-c.js +++ /dev/null @@ -1,80 +0,0 @@ -Prism.languages.c = Prism.languages.extend('clike', { - 'comment': { - pattern: /\/\/(?:[^\r\n\\]|\\(?:\r\n?|\n|(?![\r\n])))*|\/\*[\s\S]*?(?:\*\/|$)/, - greedy: true - }, - 'string': { - // https://en.cppreference.com/w/c/language/string_literal - pattern: /"(?:\\(?:\r\n|[\s\S])|[^"\\\r\n])*"/, - greedy: true - }, - 'class-name': { - pattern: /(\b(?:enum|struct)\s+(?:__attribute__\s*\(\([\s\S]*?\)\)\s*)?)\w+|\b[a-z]\w*_t\b/, - lookbehind: true - }, - 'keyword': /\b(?:_Alignas|_Alignof|_Atomic|_Bool|_Complex|_Generic|_Imaginary|_Noreturn|_Static_assert|_Thread_local|__attribute__|asm|auto|break|case|char|const|continue|default|do|double|else|enum|extern|float|for|goto|if|inline|int|long|register|return|short|signed|sizeof|static|struct|switch|typedef|typeof|union|unsigned|void|volatile|while)\b/, - 'function': /\b[a-z_]\w*(?=\s*\()/i, - 'number': /(?:\b0x(?:[\da-f]+(?:\.[\da-f]*)?|\.[\da-f]+)(?:p[+-]?\d+)?|(?:\b\d+(?:\.\d*)?|\B\.\d+)(?:e[+-]?\d+)?)[ful]{0,4}/i, - 'operator': />>=?|<<=?|->|([-+&|:])\1|[?:~]|[-+*/%&|^!=<>]=?/ -}); - -Prism.languages.insertBefore('c', 'string', { - 'char': { - // https://en.cppreference.com/w/c/language/character_constant - pattern: /'(?:\\(?:\r\n|[\s\S])|[^'\\\r\n]){0,32}'/, - greedy: true - } -}); - -Prism.languages.insertBefore('c', 'string', { - 'macro': { - // allow for multiline macro definitions - // spaces after the # character compile fine with gcc - pattern: /(^[\t ]*)#\s*[a-z](?:[^\r\n\\/]|\/(?!\*)|\/\*(?:[^*]|\*(?!\/))*\*\/|\\(?:\r\n|[\s\S]))*/im, - lookbehind: true, - greedy: true, - alias: 'property', - inside: { - 'string': [ - { - // highlight the path of the include statement as a string - pattern: /^(#\s*include\s*)<[^>]+>/, - lookbehind: true - }, - Prism.languages.c['string'] - ], - 'char': Prism.languages.c['char'], - 'comment': Prism.languages.c['comment'], - 'macro-name': [ - { - pattern: /(^#\s*define\s+)\w+\b(?!\()/i, - lookbehind: true - }, - { - pattern: /(^#\s*define\s+)\w+\b(?=\()/i, - lookbehind: true, - alias: 'function' - } - ], - // highlight macro directives as keywords - 'directive': { - pattern: /^(#\s*)[a-z]+/, - lookbehind: true, - alias: 'keyword' - }, - 'directive-hash': /^#/, - 'punctuation': /##|\\(?=[\r\n])/, - 'expression': { - pattern: /\S[\s\S]*/, - inside: Prism.languages.c - } - } - } -}); - -Prism.languages.insertBefore('c', 'function', { - // highlight predefined macros as constants - 'constant': /\b(?:EOF|NULL|SEEK_CUR|SEEK_END|SEEK_SET|__DATE__|__FILE__|__LINE__|__TIMESTAMP__|__TIME__|__func__|stderr|stdin|stdout)\b/ -}); - -delete Prism.languages.c['boolean']; diff --git a/components/prism-c.min.js b/components/prism-c.min.js deleted file mode 100644 index 7d4ddba7b6..0000000000 --- a/components/prism-c.min.js +++ /dev/null @@ -1 +0,0 @@ -Prism.languages.c=Prism.languages.extend("clike",{comment:{pattern:/\/\/(?:[^\r\n\\]|\\(?:\r\n?|\n|(?![\r\n])))*|\/\*[\s\S]*?(?:\*\/|$)/,greedy:!0},string:{pattern:/"(?:\\(?:\r\n|[\s\S])|[^"\\\r\n])*"/,greedy:!0},"class-name":{pattern:/(\b(?:enum|struct)\s+(?:__attribute__\s*\(\([\s\S]*?\)\)\s*)?)\w+|\b[a-z]\w*_t\b/,lookbehind:!0},keyword:/\b(?:_Alignas|_Alignof|_Atomic|_Bool|_Complex|_Generic|_Imaginary|_Noreturn|_Static_assert|_Thread_local|__attribute__|asm|auto|break|case|char|const|continue|default|do|double|else|enum|extern|float|for|goto|if|inline|int|long|register|return|short|signed|sizeof|static|struct|switch|typedef|typeof|union|unsigned|void|volatile|while)\b/,function:/\b[a-z_]\w*(?=\s*\()/i,number:/(?:\b0x(?:[\da-f]+(?:\.[\da-f]*)?|\.[\da-f]+)(?:p[+-]?\d+)?|(?:\b\d+(?:\.\d*)?|\B\.\d+)(?:e[+-]?\d+)?)[ful]{0,4}/i,operator:/>>=?|<<=?|->|([-+&|:])\1|[?:~]|[-+*/%&|^!=<>]=?/}),Prism.languages.insertBefore("c","string",{char:{pattern:/'(?:\\(?:\r\n|[\s\S])|[^'\\\r\n]){0,32}'/,greedy:!0}}),Prism.languages.insertBefore("c","string",{macro:{pattern:/(^[\t ]*)#\s*[a-z](?:[^\r\n\\/]|\/(?!\*)|\/\*(?:[^*]|\*(?!\/))*\*\/|\\(?:\r\n|[\s\S]))*/im,lookbehind:!0,greedy:!0,alias:"property",inside:{string:[{pattern:/^(#\s*include\s*)<[^>]+>/,lookbehind:!0},Prism.languages.c.string],char:Prism.languages.c.char,comment:Prism.languages.c.comment,"macro-name":[{pattern:/(^#\s*define\s+)\w+\b(?!\()/i,lookbehind:!0},{pattern:/(^#\s*define\s+)\w+\b(?=\()/i,lookbehind:!0,alias:"function"}],directive:{pattern:/^(#\s*)[a-z]+/,lookbehind:!0,alias:"keyword"},"directive-hash":/^#/,punctuation:/##|\\(?=[\r\n])/,expression:{pattern:/\S[\s\S]*/,inside:Prism.languages.c}}}}),Prism.languages.insertBefore("c","function",{constant:/\b(?:EOF|NULL|SEEK_CUR|SEEK_END|SEEK_SET|__DATE__|__FILE__|__LINE__|__TIMESTAMP__|__TIME__|__func__|stderr|stdin|stdout)\b/}),delete Prism.languages.c.boolean; \ No newline at end of file diff --git a/components/prism-cfscript.js b/components/prism-cfscript.js deleted file mode 100644 index 7f0cd97437..0000000000 --- a/components/prism-cfscript.js +++ /dev/null @@ -1,44 +0,0 @@ -// https://cfdocs.org/script -Prism.languages.cfscript = Prism.languages.extend('clike', { - 'comment': [ - { - pattern: /(^|[^\\])\/\*[\s\S]*?(?:\*\/|$)/, - lookbehind: true, - inside: { - 'annotation': { - pattern: /(?:^|[^.])@[\w\.]+/, - alias: 'punctuation' - } - } - }, - { - pattern: /(^|[^\\:])\/\/.*/, - lookbehind: true, - greedy: true - } - ], - 'keyword': /\b(?:abstract|break|catch|component|continue|default|do|else|extends|final|finally|for|function|if|in|include|package|private|property|public|remote|required|rethrow|return|static|switch|throw|try|var|while|xml)\b(?!\s*=)/, - 'operator': [ - /\+\+|--|&&|\|\||::|=>|[!=]==|[-+*/%&|^!=<>]=?|\?(?:\.|:)?|:/, - /\b(?:and|contains|eq|equal|eqv|gt|gte|imp|is|lt|lte|mod|not|or|xor)\b/ - ], - 'scope': { - pattern: /\b(?:application|arguments|cgi|client|cookie|local|session|super|this|variables)\b/, - alias: 'global' - }, - 'type': { - pattern: /\b(?:any|array|binary|boolean|date|guid|numeric|query|string|struct|uuid|void|xml)\b/, - alias: 'builtin' - } -}); - -Prism.languages.insertBefore('cfscript', 'keyword', { - // This must be declared before keyword because we use "function" inside the lookahead - 'function-variable': { - pattern: /[_$a-zA-Z\xA0-\uFFFF](?:(?!\s)[$\w\xA0-\uFFFF])*(?=\s*[=:]\s*(?:\bfunction\b|(?:\((?:[^()]|\([^()]*\))*\)|(?!\s)[_$a-zA-Z\xA0-\uFFFF](?:(?!\s)[$\w\xA0-\uFFFF])*)\s*=>))/, - alias: 'function' - } -}); - -delete Prism.languages.cfscript['class-name']; -Prism.languages.cfc = Prism.languages['cfscript']; diff --git a/components/prism-cfscript.min.js b/components/prism-cfscript.min.js deleted file mode 100644 index 49dc2d0fef..0000000000 --- a/components/prism-cfscript.min.js +++ /dev/null @@ -1 +0,0 @@ -Prism.languages.cfscript=Prism.languages.extend("clike",{comment:[{pattern:/(^|[^\\])\/\*[\s\S]*?(?:\*\/|$)/,lookbehind:!0,inside:{annotation:{pattern:/(?:^|[^.])@[\w\.]+/,alias:"punctuation"}}},{pattern:/(^|[^\\:])\/\/.*/,lookbehind:!0,greedy:!0}],keyword:/\b(?:abstract|break|catch|component|continue|default|do|else|extends|final|finally|for|function|if|in|include|package|private|property|public|remote|required|rethrow|return|static|switch|throw|try|var|while|xml)\b(?!\s*=)/,operator:[/\+\+|--|&&|\|\||::|=>|[!=]==|[-+*/%&|^!=<>]=?|\?(?:\.|:)?|:/,/\b(?:and|contains|eq|equal|eqv|gt|gte|imp|is|lt|lte|mod|not|or|xor)\b/],scope:{pattern:/\b(?:application|arguments|cgi|client|cookie|local|session|super|this|variables)\b/,alias:"global"},type:{pattern:/\b(?:any|array|binary|boolean|date|guid|numeric|query|string|struct|uuid|void|xml)\b/,alias:"builtin"}}),Prism.languages.insertBefore("cfscript","keyword",{"function-variable":{pattern:/[_$a-zA-Z\xA0-\uFFFF](?:(?!\s)[$\w\xA0-\uFFFF])*(?=\s*[=:]\s*(?:\bfunction\b|(?:\((?:[^()]|\([^()]*\))*\)|(?!\s)[_$a-zA-Z\xA0-\uFFFF](?:(?!\s)[$\w\xA0-\uFFFF])*)\s*=>))/,alias:"function"}}),delete Prism.languages.cfscript["class-name"],Prism.languages.cfc=Prism.languages.cfscript; \ No newline at end of file diff --git a/components/prism-chaiscript.js b/components/prism-chaiscript.js deleted file mode 100644 index abfd1b15fa..0000000000 --- a/components/prism-chaiscript.js +++ /dev/null @@ -1,60 +0,0 @@ -Prism.languages.chaiscript = Prism.languages.extend('clike', { - 'string': { - pattern: /(^|[^\\])'(?:[^'\\]|\\[\s\S])*'/, - lookbehind: true, - greedy: true - }, - 'class-name': [ - { - // e.g. class Rectangle { ... } - pattern: /(\bclass\s+)\w+/, - lookbehind: true - }, - { - // e.g. attr Rectangle::height, def Rectangle::area() { ... } - pattern: /(\b(?:attr|def)\s+)\w+(?=\s*::)/, - lookbehind: true - } - ], - 'keyword': /\b(?:attr|auto|break|case|catch|class|continue|def|default|else|finally|for|fun|global|if|return|switch|this|try|var|while)\b/, - 'number': [ - Prism.languages.cpp.number, - /\b(?:Infinity|NaN)\b/ - ], - 'operator': />>=?|<<=?|\|\||&&|:[:=]?|--|\+\+|[=!<>+\-*/%|&^]=?|[?~]|`[^`\r\n]{1,4}`/, -}); - -Prism.languages.insertBefore('chaiscript', 'operator', { - 'parameter-type': { - // e.g. def foo(int x, Vector y) {...} - pattern: /([,(]\s*)\w+(?=\s+\w)/, - lookbehind: true, - alias: 'class-name' - }, -}); - -Prism.languages.insertBefore('chaiscript', 'string', { - 'string-interpolation': { - pattern: /(^|[^\\])"(?:[^"$\\]|\\[\s\S]|\$(?!\{)|\$\{(?:[^{}]|\{(?:[^{}]|\{[^{}]*\})*\})*\})*"/, - lookbehind: true, - greedy: true, - inside: { - 'interpolation': { - pattern: /((?:^|[^\\])(?:\\{2})*)\$\{(?:[^{}]|\{(?:[^{}]|\{[^{}]*\})*\})*\}/, - lookbehind: true, - inside: { - 'interpolation-expression': { - pattern: /(^\$\{)[\s\S]+(?=\}$)/, - lookbehind: true, - inside: Prism.languages.chaiscript - }, - 'interpolation-punctuation': { - pattern: /^\$\{|\}$/, - alias: 'punctuation' - } - } - }, - 'string': /[\s\S]+/ - } - }, -}); diff --git a/components/prism-chaiscript.min.js b/components/prism-chaiscript.min.js deleted file mode 100644 index cb69cb1c96..0000000000 --- a/components/prism-chaiscript.min.js +++ /dev/null @@ -1 +0,0 @@ -Prism.languages.chaiscript=Prism.languages.extend("clike",{string:{pattern:/(^|[^\\])'(?:[^'\\]|\\[\s\S])*'/,lookbehind:!0,greedy:!0},"class-name":[{pattern:/(\bclass\s+)\w+/,lookbehind:!0},{pattern:/(\b(?:attr|def)\s+)\w+(?=\s*::)/,lookbehind:!0}],keyword:/\b(?:attr|auto|break|case|catch|class|continue|def|default|else|finally|for|fun|global|if|return|switch|this|try|var|while)\b/,number:[Prism.languages.cpp.number,/\b(?:Infinity|NaN)\b/],operator:/>>=?|<<=?|\|\||&&|:[:=]?|--|\+\+|[=!<>+\-*/%|&^]=?|[?~]|`[^`\r\n]{1,4}`/}),Prism.languages.insertBefore("chaiscript","operator",{"parameter-type":{pattern:/([,(]\s*)\w+(?=\s+\w)/,lookbehind:!0,alias:"class-name"}}),Prism.languages.insertBefore("chaiscript","string",{"string-interpolation":{pattern:/(^|[^\\])"(?:[^"$\\]|\\[\s\S]|\$(?!\{)|\$\{(?:[^{}]|\{(?:[^{}]|\{[^{}]*\})*\})*\})*"/,lookbehind:!0,greedy:!0,inside:{interpolation:{pattern:/((?:^|[^\\])(?:\\{2})*)\$\{(?:[^{}]|\{(?:[^{}]|\{[^{}]*\})*\})*\}/,lookbehind:!0,inside:{"interpolation-expression":{pattern:/(^\$\{)[\s\S]+(?=\}$)/,lookbehind:!0,inside:Prism.languages.chaiscript},"interpolation-punctuation":{pattern:/^\$\{|\}$/,alias:"punctuation"}}},string:/[\s\S]+/}}}); \ No newline at end of file diff --git a/components/prism-cil.js b/components/prism-cil.js deleted file mode 100644 index 01c2f2c518..0000000000 --- a/components/prism-cil.js +++ /dev/null @@ -1,27 +0,0 @@ -Prism.languages.cil = { - 'comment': /\/\/.*/, - - 'string': { - pattern: /(["'])(?:\\(?:\r\n|[\s\S])|(?!\1)[^\\\r\n])*\1/, - greedy: true - }, - - 'directive': { - pattern: /(^|\W)\.[a-z]+(?=\s)/, - lookbehind: true, - alias: 'class-name' - }, - - // Actually an assembly reference - 'variable': /\[[\w\.]+\]/, - - - 'keyword': /\b(?:abstract|ansi|assembly|auto|autochar|beforefieldinit|bool|bstr|byvalstr|catch|char|cil|class|currency|date|decimal|default|enum|error|explicit|extends|extern|famandassem|family|famorassem|final(?:ly)?|float32|float64|hidebysig|u?int(?:8|16|32|64)?|iant|idispatch|implements|import|initonly|instance|interface|iunknown|literal|lpstr|lpstruct|lptstr|lpwstr|managed|method|native(?:Type)?|nested|newslot|object(?:ref)?|pinvokeimpl|private|privatescope|public|reqsecobj|rtspecialname|runtime|sealed|sequential|serializable|specialname|static|string|struct|syschar|tbstr|unicode|unmanagedexp|unsigned|value(?:type)?|variant|virtual|void)\b/, - - 'function': /\b(?:(?:constrained|no|readonly|tail|unaligned|volatile)\.)?(?:conv\.(?:[iu][1248]?|ovf\.[iu][1248]?(?:\.un)?|r\.un|r4|r8)|ldc\.(?:i4(?:\.\d+|\.[mM]1|\.s)?|i8|r4|r8)|ldelem(?:\.[iu][1248]?|\.r[48]|\.ref|a)?|ldind\.(?:[iu][1248]?|r[48]|ref)|stelem\.?(?:i[1248]?|r[48]|ref)?|stind\.(?:i[1248]?|r[48]|ref)?|end(?:fault|filter|finally)|ldarg(?:\.[0-3s]|a(?:\.s)?)?|ldloc(?:\.\d+|\.s)?|sub(?:\.ovf(?:\.un)?)?|mul(?:\.ovf(?:\.un)?)?|add(?:\.ovf(?:\.un)?)?|stloc(?:\.[0-3s])?|refany(?:type|val)|blt(?:\.un)?(?:\.s)?|ble(?:\.un)?(?:\.s)?|bgt(?:\.un)?(?:\.s)?|bge(?:\.un)?(?:\.s)?|unbox(?:\.any)?|init(?:blk|obj)|call(?:i|virt)?|brfalse(?:\.s)?|bne\.un(?:\.s)?|ldloca(?:\.s)?|brzero(?:\.s)?|brtrue(?:\.s)?|brnull(?:\.s)?|brinst(?:\.s)?|starg(?:\.s)?|leave(?:\.s)?|shr(?:\.un)?|rem(?:\.un)?|div(?:\.un)?|clt(?:\.un)?|alignment|castclass|ldvirtftn|beq(?:\.s)?|ckfinite|ldsflda|ldtoken|localloc|mkrefany|rethrow|cgt\.un|arglist|switch|stsfld|sizeof|newobj|newarr|ldsfld|ldnull|ldflda|isinst|throw|stobj|stfld|ldstr|ldobj|ldlen|ldftn|ldfld|cpobj|cpblk|break|br\.s|xor|shl|ret|pop|not|nop|neg|jmp|dup|cgt|ceq|box|and|or|br)\b/, - - 'boolean': /\b(?:false|true)\b/, - 'number': /\b-?(?:0x[0-9a-f]+|\d+)(?:\.[0-9a-f]+)?\b/i, - - 'punctuation': /[{}[\];(),:=]|IL_[0-9A-Za-z]+/ -}; diff --git a/components/prism-cil.min.js b/components/prism-cil.min.js deleted file mode 100644 index d65586adb1..0000000000 --- a/components/prism-cil.min.js +++ /dev/null @@ -1 +0,0 @@ -Prism.languages.cil={comment:/\/\/.*/,string:{pattern:/(["'])(?:\\(?:\r\n|[\s\S])|(?!\1)[^\\\r\n])*\1/,greedy:!0},directive:{pattern:/(^|\W)\.[a-z]+(?=\s)/,lookbehind:!0,alias:"class-name"},variable:/\[[\w\.]+\]/,keyword:/\b(?:abstract|ansi|assembly|auto|autochar|beforefieldinit|bool|bstr|byvalstr|catch|char|cil|class|currency|date|decimal|default|enum|error|explicit|extends|extern|famandassem|family|famorassem|final(?:ly)?|float32|float64|hidebysig|u?int(?:8|16|32|64)?|iant|idispatch|implements|import|initonly|instance|interface|iunknown|literal|lpstr|lpstruct|lptstr|lpwstr|managed|method|native(?:Type)?|nested|newslot|object(?:ref)?|pinvokeimpl|private|privatescope|public|reqsecobj|rtspecialname|runtime|sealed|sequential|serializable|specialname|static|string|struct|syschar|tbstr|unicode|unmanagedexp|unsigned|value(?:type)?|variant|virtual|void)\b/,function:/\b(?:(?:constrained|no|readonly|tail|unaligned|volatile)\.)?(?:conv\.(?:[iu][1248]?|ovf\.[iu][1248]?(?:\.un)?|r\.un|r4|r8)|ldc\.(?:i4(?:\.\d+|\.[mM]1|\.s)?|i8|r4|r8)|ldelem(?:\.[iu][1248]?|\.r[48]|\.ref|a)?|ldind\.(?:[iu][1248]?|r[48]|ref)|stelem\.?(?:i[1248]?|r[48]|ref)?|stind\.(?:i[1248]?|r[48]|ref)?|end(?:fault|filter|finally)|ldarg(?:\.[0-3s]|a(?:\.s)?)?|ldloc(?:\.\d+|\.s)?|sub(?:\.ovf(?:\.un)?)?|mul(?:\.ovf(?:\.un)?)?|add(?:\.ovf(?:\.un)?)?|stloc(?:\.[0-3s])?|refany(?:type|val)|blt(?:\.un)?(?:\.s)?|ble(?:\.un)?(?:\.s)?|bgt(?:\.un)?(?:\.s)?|bge(?:\.un)?(?:\.s)?|unbox(?:\.any)?|init(?:blk|obj)|call(?:i|virt)?|brfalse(?:\.s)?|bne\.un(?:\.s)?|ldloca(?:\.s)?|brzero(?:\.s)?|brtrue(?:\.s)?|brnull(?:\.s)?|brinst(?:\.s)?|starg(?:\.s)?|leave(?:\.s)?|shr(?:\.un)?|rem(?:\.un)?|div(?:\.un)?|clt(?:\.un)?|alignment|castclass|ldvirtftn|beq(?:\.s)?|ckfinite|ldsflda|ldtoken|localloc|mkrefany|rethrow|cgt\.un|arglist|switch|stsfld|sizeof|newobj|newarr|ldsfld|ldnull|ldflda|isinst|throw|stobj|stfld|ldstr|ldobj|ldlen|ldftn|ldfld|cpobj|cpblk|break|br\.s|xor|shl|ret|pop|not|nop|neg|jmp|dup|cgt|ceq|box|and|or|br)\b/,boolean:/\b(?:false|true)\b/,number:/\b-?(?:0x[0-9a-f]+|\d+)(?:\.[0-9a-f]+)?\b/i,punctuation:/[{}[\];(),:=]|IL_[0-9A-Za-z]+/}; \ No newline at end of file diff --git a/components/prism-cilkc.js b/components/prism-cilkc.js deleted file mode 100644 index 7c5e9532bd..0000000000 --- a/components/prism-cilkc.js +++ /dev/null @@ -1,8 +0,0 @@ -Prism.languages.cilkc = Prism.languages.insertBefore('c', 'function', { - 'parallel-keyword': { - pattern: /\bcilk_(?:for|reducer|s(?:cope|pawn|ync))\b/, - alias: 'keyword' - } -}); - -Prism.languages['cilk-c'] = Prism.languages['cilkc']; diff --git a/components/prism-cilkc.min.js b/components/prism-cilkc.min.js deleted file mode 100644 index b8d22125e2..0000000000 --- a/components/prism-cilkc.min.js +++ /dev/null @@ -1 +0,0 @@ -Prism.languages.cilkc=Prism.languages.insertBefore("c","function",{"parallel-keyword":{pattern:/\bcilk_(?:for|reducer|s(?:cope|pawn|ync))\b/,alias:"keyword"}}),Prism.languages["cilk-c"]=Prism.languages.cilkc; \ No newline at end of file diff --git a/components/prism-cilkcpp.js b/components/prism-cilkcpp.js deleted file mode 100644 index 76aea4dcb0..0000000000 --- a/components/prism-cilkcpp.js +++ /dev/null @@ -1,9 +0,0 @@ -Prism.languages.cilkcpp = Prism.languages.insertBefore('cpp', 'function', { - 'parallel-keyword': { - pattern: /\bcilk_(?:for|reducer|s(?:cope|pawn|ync))\b/, - alias: 'keyword' - } -}); - -Prism.languages['cilk-cpp'] = Prism.languages['cilkcpp']; -Prism.languages['cilk'] = Prism.languages['cilkcpp']; diff --git a/components/prism-cilkcpp.min.js b/components/prism-cilkcpp.min.js deleted file mode 100644 index 5f726afdd3..0000000000 --- a/components/prism-cilkcpp.min.js +++ /dev/null @@ -1 +0,0 @@ -Prism.languages.cilkcpp=Prism.languages.insertBefore("cpp","function",{"parallel-keyword":{pattern:/\bcilk_(?:for|reducer|s(?:cope|pawn|ync))\b/,alias:"keyword"}}),Prism.languages["cilk-cpp"]=Prism.languages.cilkcpp,Prism.languages.cilk=Prism.languages.cilkcpp; \ No newline at end of file diff --git a/components/prism-clike.js b/components/prism-clike.js deleted file mode 100644 index 8c5d96a194..0000000000 --- a/components/prism-clike.js +++ /dev/null @@ -1,31 +0,0 @@ -Prism.languages.clike = { - 'comment': [ - { - pattern: /(^|[^\\])\/\*[\s\S]*?(?:\*\/|$)/, - lookbehind: true, - greedy: true - }, - { - pattern: /(^|[^\\:])\/\/.*/, - lookbehind: true, - greedy: true - } - ], - 'string': { - pattern: /(["'])(?:\\(?:\r\n|[\s\S])|(?!\1)[^\\\r\n])*\1/, - greedy: true - }, - 'class-name': { - pattern: /(\b(?:class|extends|implements|instanceof|interface|new|trait)\s+|\bcatch\s+\()[\w.\\]+/i, - lookbehind: true, - inside: { - 'punctuation': /[.\\]/ - } - }, - 'keyword': /\b(?:break|catch|continue|do|else|finally|for|function|if|in|instanceof|new|null|return|throw|try|while)\b/, - 'boolean': /\b(?:false|true)\b/, - 'function': /\b\w+(?=\()/, - 'number': /\b0x[\da-f]+\b|(?:\b\d+(?:\.\d*)?|\B\.\d+)(?:e[+-]?\d+)?/i, - 'operator': /[<>]=?|[!=]=?=?|--?|\+\+?|&&?|\|\|?|[?*/~^%]/, - 'punctuation': /[{}[\];(),.:]/ -}; diff --git a/components/prism-clike.min.js b/components/prism-clike.min.js deleted file mode 100644 index adfb9eca7a..0000000000 --- a/components/prism-clike.min.js +++ /dev/null @@ -1 +0,0 @@ -Prism.languages.clike={comment:[{pattern:/(^|[^\\])\/\*[\s\S]*?(?:\*\/|$)/,lookbehind:!0,greedy:!0},{pattern:/(^|[^\\:])\/\/.*/,lookbehind:!0,greedy:!0}],string:{pattern:/(["'])(?:\\(?:\r\n|[\s\S])|(?!\1)[^\\\r\n])*\1/,greedy:!0},"class-name":{pattern:/(\b(?:class|extends|implements|instanceof|interface|new|trait)\s+|\bcatch\s+\()[\w.\\]+/i,lookbehind:!0,inside:{punctuation:/[.\\]/}},keyword:/\b(?:break|catch|continue|do|else|finally|for|function|if|in|instanceof|new|null|return|throw|try|while)\b/,boolean:/\b(?:false|true)\b/,function:/\b\w+(?=\()/,number:/\b0x[\da-f]+\b|(?:\b\d+(?:\.\d*)?|\B\.\d+)(?:e[+-]?\d+)?/i,operator:/[<>]=?|[!=]=?=?|--?|\+\+?|&&?|\|\|?|[?*/~^%]/,punctuation:/[{}[\];(),.:]/}; \ No newline at end of file diff --git a/components/prism-clojure.js b/components/prism-clojure.js deleted file mode 100644 index 8956669551..0000000000 --- a/components/prism-clojure.js +++ /dev/null @@ -1,31 +0,0 @@ -// Copied from https://github.com/jeluard/prism-clojure -Prism.languages.clojure = { - 'comment': { - pattern: /;.*/, - greedy: true - }, - 'string': { - pattern: /"(?:[^"\\]|\\.)*"/, - greedy: true - }, - 'char': /\\\w+/, - 'symbol': { - pattern: /(^|[\s()\[\]{},])::?[\w*+!?'<>=/.-]+/, - lookbehind: true - }, - 'keyword': { - pattern: /(\()(?:-|->|->>|\.|\.\.|\*|\/|\+|<|<=|=|==|>|>=|accessor|agent|agent-errors|aget|alength|all-ns|alter|and|append-child|apply|array-map|aset|aset-boolean|aset-byte|aset-char|aset-double|aset-float|aset-int|aset-long|aset-short|assert|assoc|await|await-for|bean|binding|bit-and|bit-not|bit-or|bit-shift-left|bit-shift-right|bit-xor|boolean|branch\?|butlast|byte|cast|char|children|class|clear-agent-errors|comment|commute|comp|comparator|complement|concat|cond|conj|cons|constantly|construct-proxy|contains\?|count|create-ns|create-struct|cycle|dec|declare|def|def-|definline|definterface|defmacro|defmethod|defmulti|defn|defn-|defonce|defproject|defprotocol|defrecord|defstruct|deftype|deref|difference|disj|dissoc|distinct|do|doall|doc|dorun|doseq|dosync|dotimes|doto|double|down|drop|drop-while|edit|end\?|ensure|eval|every\?|false\?|ffirst|file-seq|filter|find|find-doc|find-ns|find-var|first|float|flush|fn|fnseq|for|frest|gensym|get|get-proxy-class|hash-map|hash-set|identical\?|identity|if|if-let|if-not|import|in-ns|inc|index|insert-child|insert-left|insert-right|inspect-table|inspect-tree|instance\?|int|interleave|intersection|into|into-array|iterate|join|key|keys|keyword|keyword\?|last|lazy-cat|lazy-cons|left|lefts|let|line-seq|list|list\*|load|load-file|locking|long|loop|macroexpand|macroexpand-1|make-array|make-node|map|map-invert|map\?|mapcat|max|max-key|memfn|merge|merge-with|meta|min|min-key|monitor-enter|name|namespace|neg\?|new|newline|next|nil\?|node|not|not-any\?|not-every\?|not=|ns|ns-imports|ns-interns|ns-map|ns-name|ns-publics|ns-refers|ns-resolve|ns-unmap|nth|nthrest|or|parse|partial|path|peek|pop|pos\?|pr|pr-str|print|print-str|println|println-str|prn|prn-str|project|proxy|proxy-mappings|quot|quote|rand|rand-int|range|re-find|re-groups|re-matcher|re-matches|re-pattern|re-seq|read|read-line|recur|reduce|ref|ref-set|refer|rem|remove|remove-method|remove-ns|rename|rename-keys|repeat|replace|replicate|resolve|rest|resultset-seq|reverse|rfirst|right|rights|root|rrest|rseq|second|select|select-keys|send|send-off|seq|seq-zip|seq\?|set|set!|short|slurp|some|sort|sort-by|sorted-map|sorted-map-by|sorted-set|special-symbol\?|split-at|split-with|str|string\?|struct|struct-map|subs|subvec|symbol|symbol\?|sync|take|take-nth|take-while|test|throw|time|to-array|to-array-2d|tree-seq|true\?|try|union|up|update-proxy|val|vals|var|var-get|var-set|var\?|vector|vector-zip|vector\?|when|when-first|when-let|when-not|with-local-vars|with-meta|with-open|with-out-str|xml-seq|xml-zip|zero\?|zipmap|zipper)(?=[\s)]|$)/, - lookbehind: true - }, - 'boolean': /\b(?:false|nil|true)\b/, - 'number': { - pattern: /(^|[^\w$@])(?:\d+(?:[/.]\d+)?(?:e[+-]?\d+)?|0x[a-f0-9]+|[1-9]\d?r[a-z0-9]+)[lmn]?(?![\w$@])/i, - lookbehind: true - }, - 'function': { - pattern: /((?:^|[^'])\()[\w*+!?'<>=/.-]+(?=[\s)]|$)/, - lookbehind: true - }, - 'operator': /[#@^`~]/, - 'punctuation': /[{}\[\](),]/ -}; diff --git a/components/prism-clojure.min.js b/components/prism-clojure.min.js deleted file mode 100644 index 8f86601e7d..0000000000 --- a/components/prism-clojure.min.js +++ /dev/null @@ -1 +0,0 @@ -Prism.languages.clojure={comment:{pattern:/;.*/,greedy:!0},string:{pattern:/"(?:[^"\\]|\\.)*"/,greedy:!0},char:/\\\w+/,symbol:{pattern:/(^|[\s()\[\]{},])::?[\w*+!?'<>=/.-]+/,lookbehind:!0},keyword:{pattern:/(\()(?:-|->|->>|\.|\.\.|\*|\/|\+|<|<=|=|==|>|>=|accessor|agent|agent-errors|aget|alength|all-ns|alter|and|append-child|apply|array-map|aset|aset-boolean|aset-byte|aset-char|aset-double|aset-float|aset-int|aset-long|aset-short|assert|assoc|await|await-for|bean|binding|bit-and|bit-not|bit-or|bit-shift-left|bit-shift-right|bit-xor|boolean|branch\?|butlast|byte|cast|char|children|class|clear-agent-errors|comment|commute|comp|comparator|complement|concat|cond|conj|cons|constantly|construct-proxy|contains\?|count|create-ns|create-struct|cycle|dec|declare|def|def-|definline|definterface|defmacro|defmethod|defmulti|defn|defn-|defonce|defproject|defprotocol|defrecord|defstruct|deftype|deref|difference|disj|dissoc|distinct|do|doall|doc|dorun|doseq|dosync|dotimes|doto|double|down|drop|drop-while|edit|end\?|ensure|eval|every\?|false\?|ffirst|file-seq|filter|find|find-doc|find-ns|find-var|first|float|flush|fn|fnseq|for|frest|gensym|get|get-proxy-class|hash-map|hash-set|identical\?|identity|if|if-let|if-not|import|in-ns|inc|index|insert-child|insert-left|insert-right|inspect-table|inspect-tree|instance\?|int|interleave|intersection|into|into-array|iterate|join|key|keys|keyword|keyword\?|last|lazy-cat|lazy-cons|left|lefts|let|line-seq|list|list\*|load|load-file|locking|long|loop|macroexpand|macroexpand-1|make-array|make-node|map|map-invert|map\?|mapcat|max|max-key|memfn|merge|merge-with|meta|min|min-key|monitor-enter|name|namespace|neg\?|new|newline|next|nil\?|node|not|not-any\?|not-every\?|not=|ns|ns-imports|ns-interns|ns-map|ns-name|ns-publics|ns-refers|ns-resolve|ns-unmap|nth|nthrest|or|parse|partial|path|peek|pop|pos\?|pr|pr-str|print|print-str|println|println-str|prn|prn-str|project|proxy|proxy-mappings|quot|quote|rand|rand-int|range|re-find|re-groups|re-matcher|re-matches|re-pattern|re-seq|read|read-line|recur|reduce|ref|ref-set|refer|rem|remove|remove-method|remove-ns|rename|rename-keys|repeat|replace|replicate|resolve|rest|resultset-seq|reverse|rfirst|right|rights|root|rrest|rseq|second|select|select-keys|send|send-off|seq|seq-zip|seq\?|set|set!|short|slurp|some|sort|sort-by|sorted-map|sorted-map-by|sorted-set|special-symbol\?|split-at|split-with|str|string\?|struct|struct-map|subs|subvec|symbol|symbol\?|sync|take|take-nth|take-while|test|throw|time|to-array|to-array-2d|tree-seq|true\?|try|union|up|update-proxy|val|vals|var|var-get|var-set|var\?|vector|vector-zip|vector\?|when|when-first|when-let|when-not|with-local-vars|with-meta|with-open|with-out-str|xml-seq|xml-zip|zero\?|zipmap|zipper)(?=[\s)]|$)/,lookbehind:!0},boolean:/\b(?:false|nil|true)\b/,number:{pattern:/(^|[^\w$@])(?:\d+(?:[/.]\d+)?(?:e[+-]?\d+)?|0x[a-f0-9]+|[1-9]\d?r[a-z0-9]+)[lmn]?(?![\w$@])/i,lookbehind:!0},function:{pattern:/((?:^|[^'])\()[\w*+!?'<>=/.-]+(?=[\s)]|$)/,lookbehind:!0},operator:/[#@^`~]/,punctuation:/[{}\[\](),]/}; \ No newline at end of file diff --git a/components/prism-cmake.js b/components/prism-cmake.js deleted file mode 100644 index 4b71c84766..0000000000 --- a/components/prism-cmake.js +++ /dev/null @@ -1,29 +0,0 @@ -Prism.languages.cmake = { - 'comment': /#.*/, - 'string': { - pattern: /"(?:[^\\"]|\\.)*"/, - greedy: true, - inside: { - 'interpolation': { - pattern: /\$\{(?:[^{}$]|\$\{[^{}$]*\})*\}/, - inside: { - 'punctuation': /\$\{|\}/, - 'variable': /\w+/ - } - } - } - }, - 'variable': /\b(?:CMAKE_\w+|\w+_(?:(?:BINARY|SOURCE)_DIR|DESCRIPTION|HOMEPAGE_URL|ROOT|VERSION(?:_MAJOR|_MINOR|_PATCH|_TWEAK)?)|(?:ANDROID|APPLE|BORLAND|BUILD_SHARED_LIBS|CACHE|CPACK_(?:ABSOLUTE_DESTINATION_FILES|COMPONENT_INCLUDE_TOPLEVEL_DIRECTORY|ERROR_ON_ABSOLUTE_INSTALL_DESTINATION|INCLUDE_TOPLEVEL_DIRECTORY|INSTALL_DEFAULT_DIRECTORY_PERMISSIONS|INSTALL_SCRIPT|PACKAGING_INSTALL_PREFIX|SET_DESTDIR|WARN_ON_ABSOLUTE_INSTALL_DESTINATION)|CTEST_(?:BINARY_DIRECTORY|BUILD_COMMAND|BUILD_NAME|BZR_COMMAND|BZR_UPDATE_OPTIONS|CHANGE_ID|CHECKOUT_COMMAND|CONFIGURATION_TYPE|CONFIGURE_COMMAND|COVERAGE_COMMAND|COVERAGE_EXTRA_FLAGS|CURL_OPTIONS|CUSTOM_(?:COVERAGE_EXCLUDE|ERROR_EXCEPTION|ERROR_MATCH|ERROR_POST_CONTEXT|ERROR_PRE_CONTEXT|MAXIMUM_FAILED_TEST_OUTPUT_SIZE|MAXIMUM_NUMBER_OF_(?:ERRORS|WARNINGS)|MAXIMUM_PASSED_TEST_OUTPUT_SIZE|MEMCHECK_IGNORE|POST_MEMCHECK|POST_TEST|PRE_MEMCHECK|PRE_TEST|TESTS_IGNORE|WARNING_EXCEPTION|WARNING_MATCH)|CVS_CHECKOUT|CVS_COMMAND|CVS_UPDATE_OPTIONS|DROP_LOCATION|DROP_METHOD|DROP_SITE|DROP_SITE_CDASH|DROP_SITE_PASSWORD|DROP_SITE_USER|EXTRA_COVERAGE_GLOB|GIT_COMMAND|GIT_INIT_SUBMODULES|GIT_UPDATE_CUSTOM|GIT_UPDATE_OPTIONS|HG_COMMAND|HG_UPDATE_OPTIONS|LABELS_FOR_SUBPROJECTS|MEMORYCHECK_(?:COMMAND|COMMAND_OPTIONS|SANITIZER_OPTIONS|SUPPRESSIONS_FILE|TYPE)|NIGHTLY_START_TIME|P4_CLIENT|P4_COMMAND|P4_OPTIONS|P4_UPDATE_OPTIONS|RUN_CURRENT_SCRIPT|SCP_COMMAND|SITE|SOURCE_DIRECTORY|SUBMIT_URL|SVN_COMMAND|SVN_OPTIONS|SVN_UPDATE_OPTIONS|TEST_LOAD|TEST_TIMEOUT|TRIGGER_SITE|UPDATE_COMMAND|UPDATE_OPTIONS|UPDATE_VERSION_ONLY|USE_LAUNCHERS)|CYGWIN|ENV|EXECUTABLE_OUTPUT_PATH|GHS-MULTI|IOS|LIBRARY_OUTPUT_PATH|MINGW|MSVC(?:10|11|12|14|60|70|71|80|90|_IDE|_TOOLSET_VERSION|_VERSION)?|MSYS|PROJECT_NAME|UNIX|WIN32|WINCE|WINDOWS_PHONE|WINDOWS_STORE|XCODE))\b/, - 'property': /\b(?:cxx_\w+|(?:ARCHIVE_OUTPUT_(?:DIRECTORY|NAME)|COMPILE_DEFINITIONS|COMPILE_PDB_NAME|COMPILE_PDB_OUTPUT_DIRECTORY|EXCLUDE_FROM_DEFAULT_BUILD|IMPORTED_(?:IMPLIB|LIBNAME|LINK_DEPENDENT_LIBRARIES|LINK_INTERFACE_LANGUAGES|LINK_INTERFACE_LIBRARIES|LINK_INTERFACE_MULTIPLICITY|LOCATION|NO_SONAME|OBJECTS|SONAME)|INTERPROCEDURAL_OPTIMIZATION|LIBRARY_OUTPUT_DIRECTORY|LIBRARY_OUTPUT_NAME|LINK_FLAGS|LINK_INTERFACE_LIBRARIES|LINK_INTERFACE_MULTIPLICITY|LOCATION|MAP_IMPORTED_CONFIG|OSX_ARCHITECTURES|OUTPUT_NAME|PDB_NAME|PDB_OUTPUT_DIRECTORY|RUNTIME_OUTPUT_DIRECTORY|RUNTIME_OUTPUT_NAME|STATIC_LIBRARY_FLAGS|VS_CSHARP|VS_DOTNET_REFERENCEPROP|VS_DOTNET_REFERENCE|VS_GLOBAL_SECTION_POST|VS_GLOBAL_SECTION_PRE|VS_GLOBAL|XCODE_ATTRIBUTE)_\w+|\w+_(?:CLANG_TIDY|COMPILER_LAUNCHER|CPPCHECK|CPPLINT|INCLUDE_WHAT_YOU_USE|OUTPUT_NAME|POSTFIX|VISIBILITY_PRESET)|ABSTRACT|ADDITIONAL_MAKE_CLEAN_FILES|ADVANCED|ALIASED_TARGET|ALLOW_DUPLICATE_CUSTOM_TARGETS|ANDROID_(?:ANT_ADDITIONAL_OPTIONS|API|API_MIN|ARCH|ASSETS_DIRECTORIES|GUI|JAR_DEPENDENCIES|NATIVE_LIB_DEPENDENCIES|NATIVE_LIB_DIRECTORIES|PROCESS_MAX|PROGUARD|PROGUARD_CONFIG_PATH|SECURE_PROPS_PATH|SKIP_ANT_STEP|STL_TYPE)|ARCHIVE_OUTPUT_DIRECTORY|ATTACHED_FILES|ATTACHED_FILES_ON_FAIL|AUTOGEN_(?:BUILD_DIR|ORIGIN_DEPENDS|PARALLEL|SOURCE_GROUP|TARGETS_FOLDER|TARGET_DEPENDS)|AUTOMOC|AUTOMOC_(?:COMPILER_PREDEFINES|DEPEND_FILTERS|EXECUTABLE|MACRO_NAMES|MOC_OPTIONS|SOURCE_GROUP|TARGETS_FOLDER)|AUTORCC|AUTORCC_EXECUTABLE|AUTORCC_OPTIONS|AUTORCC_SOURCE_GROUP|AUTOUIC|AUTOUIC_EXECUTABLE|AUTOUIC_OPTIONS|AUTOUIC_SEARCH_PATHS|BINARY_DIR|BUILDSYSTEM_TARGETS|BUILD_RPATH|BUILD_RPATH_USE_ORIGIN|BUILD_WITH_INSTALL_NAME_DIR|BUILD_WITH_INSTALL_RPATH|BUNDLE|BUNDLE_EXTENSION|CACHE_VARIABLES|CLEAN_NO_CUSTOM|COMMON_LANGUAGE_RUNTIME|COMPATIBLE_INTERFACE_(?:BOOL|NUMBER_MAX|NUMBER_MIN|STRING)|COMPILE_(?:DEFINITIONS|FEATURES|FLAGS|OPTIONS|PDB_NAME|PDB_OUTPUT_DIRECTORY)|COST|CPACK_DESKTOP_SHORTCUTS|CPACK_NEVER_OVERWRITE|CPACK_PERMANENT|CPACK_STARTUP_SHORTCUTS|CPACK_START_MENU_SHORTCUTS|CPACK_WIX_ACL|CROSSCOMPILING_EMULATOR|CUDA_EXTENSIONS|CUDA_PTX_COMPILATION|CUDA_RESOLVE_DEVICE_SYMBOLS|CUDA_SEPARABLE_COMPILATION|CUDA_STANDARD|CUDA_STANDARD_REQUIRED|CXX_EXTENSIONS|CXX_STANDARD|CXX_STANDARD_REQUIRED|C_EXTENSIONS|C_STANDARD|C_STANDARD_REQUIRED|DEBUG_CONFIGURATIONS|DEFINE_SYMBOL|DEFINITIONS|DEPENDS|DEPLOYMENT_ADDITIONAL_FILES|DEPLOYMENT_REMOTE_DIRECTORY|DISABLED|DISABLED_FEATURES|ECLIPSE_EXTRA_CPROJECT_CONTENTS|ECLIPSE_EXTRA_NATURES|ENABLED_FEATURES|ENABLED_LANGUAGES|ENABLE_EXPORTS|ENVIRONMENT|EXCLUDE_FROM_ALL|EXCLUDE_FROM_DEFAULT_BUILD|EXPORT_NAME|EXPORT_PROPERTIES|EXTERNAL_OBJECT|EchoString|FAIL_REGULAR_EXPRESSION|FIND_LIBRARY_USE_LIB32_PATHS|FIND_LIBRARY_USE_LIB64_PATHS|FIND_LIBRARY_USE_LIBX32_PATHS|FIND_LIBRARY_USE_OPENBSD_VERSIONING|FIXTURES_CLEANUP|FIXTURES_REQUIRED|FIXTURES_SETUP|FOLDER|FRAMEWORK|Fortran_FORMAT|Fortran_MODULE_DIRECTORY|GENERATED|GENERATOR_FILE_NAME|GENERATOR_IS_MULTI_CONFIG|GHS_INTEGRITY_APP|GHS_NO_SOURCE_GROUP_FILE|GLOBAL_DEPENDS_DEBUG_MODE|GLOBAL_DEPENDS_NO_CYCLES|GNUtoMS|HAS_CXX|HEADER_FILE_ONLY|HELPSTRING|IMPLICIT_DEPENDS_INCLUDE_TRANSFORM|IMPORTED|IMPORTED_(?:COMMON_LANGUAGE_RUNTIME|CONFIGURATIONS|GLOBAL|IMPLIB|LIBNAME|LINK_DEPENDENT_LIBRARIES|LINK_INTERFACE_(?:LANGUAGES|LIBRARIES|MULTIPLICITY)|LOCATION|NO_SONAME|OBJECTS|SONAME)|IMPORT_PREFIX|IMPORT_SUFFIX|INCLUDE_DIRECTORIES|INCLUDE_REGULAR_EXPRESSION|INSTALL_NAME_DIR|INSTALL_RPATH|INSTALL_RPATH_USE_LINK_PATH|INTERFACE_(?:AUTOUIC_OPTIONS|COMPILE_DEFINITIONS|COMPILE_FEATURES|COMPILE_OPTIONS|INCLUDE_DIRECTORIES|LINK_DEPENDS|LINK_DIRECTORIES|LINK_LIBRARIES|LINK_OPTIONS|POSITION_INDEPENDENT_CODE|SOURCES|SYSTEM_INCLUDE_DIRECTORIES)|INTERPROCEDURAL_OPTIMIZATION|IN_TRY_COMPILE|IOS_INSTALL_COMBINED|JOB_POOLS|JOB_POOL_COMPILE|JOB_POOL_LINK|KEEP_EXTENSION|LABELS|LANGUAGE|LIBRARY_OUTPUT_DIRECTORY|LINKER_LANGUAGE|LINK_(?:DEPENDS|DEPENDS_NO_SHARED|DIRECTORIES|FLAGS|INTERFACE_LIBRARIES|INTERFACE_MULTIPLICITY|LIBRARIES|OPTIONS|SEARCH_END_STATIC|SEARCH_START_STATIC|WHAT_YOU_USE)|LISTFILE_STACK|LOCATION|MACOSX_BUNDLE|MACOSX_BUNDLE_INFO_PLIST|MACOSX_FRAMEWORK_INFO_PLIST|MACOSX_PACKAGE_LOCATION|MACOSX_RPATH|MACROS|MANUALLY_ADDED_DEPENDENCIES|MEASUREMENT|MODIFIED|NAME|NO_SONAME|NO_SYSTEM_FROM_IMPORTED|OBJECT_DEPENDS|OBJECT_OUTPUTS|OSX_ARCHITECTURES|OUTPUT_NAME|PACKAGES_FOUND|PACKAGES_NOT_FOUND|PARENT_DIRECTORY|PASS_REGULAR_EXPRESSION|PDB_NAME|PDB_OUTPUT_DIRECTORY|POSITION_INDEPENDENT_CODE|POST_INSTALL_SCRIPT|PREDEFINED_TARGETS_FOLDER|PREFIX|PRE_INSTALL_SCRIPT|PRIVATE_HEADER|PROCESSORS|PROCESSOR_AFFINITY|PROJECT_LABEL|PUBLIC_HEADER|REPORT_UNDEFINED_PROPERTIES|REQUIRED_FILES|RESOURCE|RESOURCE_LOCK|RULE_LAUNCH_COMPILE|RULE_LAUNCH_CUSTOM|RULE_LAUNCH_LINK|RULE_MESSAGES|RUNTIME_OUTPUT_DIRECTORY|RUN_SERIAL|SKIP_AUTOGEN|SKIP_AUTOMOC|SKIP_AUTORCC|SKIP_AUTOUIC|SKIP_BUILD_RPATH|SKIP_RETURN_CODE|SOURCES|SOURCE_DIR|SOVERSION|STATIC_LIBRARY_FLAGS|STATIC_LIBRARY_OPTIONS|STRINGS|SUBDIRECTORIES|SUFFIX|SYMBOLIC|TARGET_ARCHIVES_MAY_BE_SHARED_LIBS|TARGET_MESSAGES|TARGET_SUPPORTS_SHARED_LIBS|TESTS|TEST_INCLUDE_FILE|TEST_INCLUDE_FILES|TIMEOUT|TIMEOUT_AFTER_MATCH|TYPE|USE_FOLDERS|VALUE|VARIABLES|VERSION|VISIBILITY_INLINES_HIDDEN|VS_(?:CONFIGURATION_TYPE|COPY_TO_OUT_DIR|DEBUGGER_(?:COMMAND|COMMAND_ARGUMENTS|ENVIRONMENT|WORKING_DIRECTORY)|DEPLOYMENT_CONTENT|DEPLOYMENT_LOCATION|DOTNET_REFERENCES|DOTNET_REFERENCES_COPY_LOCAL|INCLUDE_IN_VSIX|IOT_STARTUP_TASK|KEYWORD|RESOURCE_GENERATOR|SCC_AUXPATH|SCC_LOCALPATH|SCC_PROJECTNAME|SCC_PROVIDER|SDK_REFERENCES|SHADER_(?:DISABLE_OPTIMIZATIONS|ENABLE_DEBUG|ENTRYPOINT|FLAGS|MODEL|OBJECT_FILE_NAME|OUTPUT_HEADER_FILE|TYPE|VARIABLE_NAME)|STARTUP_PROJECT|TOOL_OVERRIDE|USER_PROPS|WINRT_COMPONENT|WINRT_EXTENSIONS|WINRT_REFERENCES|XAML_TYPE)|WILL_FAIL|WIN32_EXECUTABLE|WINDOWS_EXPORT_ALL_SYMBOLS|WORKING_DIRECTORY|WRAP_EXCLUDE|XCODE_(?:EMIT_EFFECTIVE_PLATFORM_NAME|EXPLICIT_FILE_TYPE|FILE_ATTRIBUTES|LAST_KNOWN_FILE_TYPE|PRODUCT_TYPE|SCHEME_(?:ADDRESS_SANITIZER|ADDRESS_SANITIZER_USE_AFTER_RETURN|ARGUMENTS|DISABLE_MAIN_THREAD_CHECKER|DYNAMIC_LIBRARY_LOADS|DYNAMIC_LINKER_API_USAGE|ENVIRONMENT|EXECUTABLE|GUARD_MALLOC|MAIN_THREAD_CHECKER_STOP|MALLOC_GUARD_EDGES|MALLOC_SCRIBBLE|MALLOC_STACK|THREAD_SANITIZER(?:_STOP)?|UNDEFINED_BEHAVIOUR_SANITIZER(?:_STOP)?|ZOMBIE_OBJECTS))|XCTEST)\b/, - 'keyword': /\b(?:add_compile_definitions|add_compile_options|add_custom_command|add_custom_target|add_definitions|add_dependencies|add_executable|add_library|add_link_options|add_subdirectory|add_test|aux_source_directory|break|build_command|build_name|cmake_host_system_information|cmake_minimum_required|cmake_parse_arguments|cmake_policy|configure_file|continue|create_test_sourcelist|ctest_build|ctest_configure|ctest_coverage|ctest_empty_binary_directory|ctest_memcheck|ctest_read_custom_files|ctest_run_script|ctest_sleep|ctest_start|ctest_submit|ctest_test|ctest_update|ctest_upload|define_property|else|elseif|enable_language|enable_testing|endforeach|endfunction|endif|endmacro|endwhile|exec_program|execute_process|export|export_library_dependencies|file|find_file|find_library|find_package|find_path|find_program|fltk_wrap_ui|foreach|function|get_cmake_property|get_directory_property|get_filename_component|get_property|get_source_file_property|get_target_property|get_test_property|if|include|include_directories|include_external_msproject|include_guard|include_regular_expression|install|install_files|install_programs|install_targets|link_directories|link_libraries|list|load_cache|load_command|macro|make_directory|mark_as_advanced|math|message|option|output_required_files|project|qt_wrap_cpp|qt_wrap_ui|remove|remove_definitions|return|separate_arguments|set|set_directory_properties|set_property|set_source_files_properties|set_target_properties|set_tests_properties|site_name|source_group|string|subdir_depends|subdirs|target_compile_definitions|target_compile_features|target_compile_options|target_include_directories|target_link_directories|target_link_libraries|target_link_options|target_sources|try_compile|try_run|unset|use_mangled_mesa|utility_source|variable_requires|variable_watch|while|write_file)(?=\s*\()\b/, - 'boolean': /\b(?:FALSE|OFF|ON|TRUE)\b/, - 'namespace': /\b(?:INTERFACE|PRIVATE|PROPERTIES|PUBLIC|SHARED|STATIC|TARGET_OBJECTS)\b/, - 'operator': /\b(?:AND|DEFINED|EQUAL|GREATER|LESS|MATCHES|NOT|OR|STREQUAL|STRGREATER|STRLESS|VERSION_EQUAL|VERSION_GREATER|VERSION_LESS)\b/, - 'inserted': { - pattern: /\b\w+::\w+\b/, - alias: 'class-name' - }, - 'number': /\b\d+(?:\.\d+)*\b/, - 'function': /\b[a-z_]\w*(?=\s*\()\b/i, - 'punctuation': /[()>}]|\$[<{]/ -}; diff --git a/components/prism-cmake.min.js b/components/prism-cmake.min.js deleted file mode 100644 index a223df57be..0000000000 --- a/components/prism-cmake.min.js +++ /dev/null @@ -1 +0,0 @@ -Prism.languages.cmake={comment:/#.*/,string:{pattern:/"(?:[^\\"]|\\.)*"/,greedy:!0,inside:{interpolation:{pattern:/\$\{(?:[^{}$]|\$\{[^{}$]*\})*\}/,inside:{punctuation:/\$\{|\}/,variable:/\w+/}}}},variable:/\b(?:CMAKE_\w+|\w+_(?:(?:BINARY|SOURCE)_DIR|DESCRIPTION|HOMEPAGE_URL|ROOT|VERSION(?:_MAJOR|_MINOR|_PATCH|_TWEAK)?)|(?:ANDROID|APPLE|BORLAND|BUILD_SHARED_LIBS|CACHE|CPACK_(?:ABSOLUTE_DESTINATION_FILES|COMPONENT_INCLUDE_TOPLEVEL_DIRECTORY|ERROR_ON_ABSOLUTE_INSTALL_DESTINATION|INCLUDE_TOPLEVEL_DIRECTORY|INSTALL_DEFAULT_DIRECTORY_PERMISSIONS|INSTALL_SCRIPT|PACKAGING_INSTALL_PREFIX|SET_DESTDIR|WARN_ON_ABSOLUTE_INSTALL_DESTINATION)|CTEST_(?:BINARY_DIRECTORY|BUILD_COMMAND|BUILD_NAME|BZR_COMMAND|BZR_UPDATE_OPTIONS|CHANGE_ID|CHECKOUT_COMMAND|CONFIGURATION_TYPE|CONFIGURE_COMMAND|COVERAGE_COMMAND|COVERAGE_EXTRA_FLAGS|CURL_OPTIONS|CUSTOM_(?:COVERAGE_EXCLUDE|ERROR_EXCEPTION|ERROR_MATCH|ERROR_POST_CONTEXT|ERROR_PRE_CONTEXT|MAXIMUM_FAILED_TEST_OUTPUT_SIZE|MAXIMUM_NUMBER_OF_(?:ERRORS|WARNINGS)|MAXIMUM_PASSED_TEST_OUTPUT_SIZE|MEMCHECK_IGNORE|POST_MEMCHECK|POST_TEST|PRE_MEMCHECK|PRE_TEST|TESTS_IGNORE|WARNING_EXCEPTION|WARNING_MATCH)|CVS_CHECKOUT|CVS_COMMAND|CVS_UPDATE_OPTIONS|DROP_LOCATION|DROP_METHOD|DROP_SITE|DROP_SITE_CDASH|DROP_SITE_PASSWORD|DROP_SITE_USER|EXTRA_COVERAGE_GLOB|GIT_COMMAND|GIT_INIT_SUBMODULES|GIT_UPDATE_CUSTOM|GIT_UPDATE_OPTIONS|HG_COMMAND|HG_UPDATE_OPTIONS|LABELS_FOR_SUBPROJECTS|MEMORYCHECK_(?:COMMAND|COMMAND_OPTIONS|SANITIZER_OPTIONS|SUPPRESSIONS_FILE|TYPE)|NIGHTLY_START_TIME|P4_CLIENT|P4_COMMAND|P4_OPTIONS|P4_UPDATE_OPTIONS|RUN_CURRENT_SCRIPT|SCP_COMMAND|SITE|SOURCE_DIRECTORY|SUBMIT_URL|SVN_COMMAND|SVN_OPTIONS|SVN_UPDATE_OPTIONS|TEST_LOAD|TEST_TIMEOUT|TRIGGER_SITE|UPDATE_COMMAND|UPDATE_OPTIONS|UPDATE_VERSION_ONLY|USE_LAUNCHERS)|CYGWIN|ENV|EXECUTABLE_OUTPUT_PATH|GHS-MULTI|IOS|LIBRARY_OUTPUT_PATH|MINGW|MSVC(?:10|11|12|14|60|70|71|80|90|_IDE|_TOOLSET_VERSION|_VERSION)?|MSYS|PROJECT_NAME|UNIX|WIN32|WINCE|WINDOWS_PHONE|WINDOWS_STORE|XCODE))\b/,property:/\b(?:cxx_\w+|(?:ARCHIVE_OUTPUT_(?:DIRECTORY|NAME)|COMPILE_DEFINITIONS|COMPILE_PDB_NAME|COMPILE_PDB_OUTPUT_DIRECTORY|EXCLUDE_FROM_DEFAULT_BUILD|IMPORTED_(?:IMPLIB|LIBNAME|LINK_DEPENDENT_LIBRARIES|LINK_INTERFACE_LANGUAGES|LINK_INTERFACE_LIBRARIES|LINK_INTERFACE_MULTIPLICITY|LOCATION|NO_SONAME|OBJECTS|SONAME)|INTERPROCEDURAL_OPTIMIZATION|LIBRARY_OUTPUT_DIRECTORY|LIBRARY_OUTPUT_NAME|LINK_FLAGS|LINK_INTERFACE_LIBRARIES|LINK_INTERFACE_MULTIPLICITY|LOCATION|MAP_IMPORTED_CONFIG|OSX_ARCHITECTURES|OUTPUT_NAME|PDB_NAME|PDB_OUTPUT_DIRECTORY|RUNTIME_OUTPUT_DIRECTORY|RUNTIME_OUTPUT_NAME|STATIC_LIBRARY_FLAGS|VS_CSHARP|VS_DOTNET_REFERENCEPROP|VS_DOTNET_REFERENCE|VS_GLOBAL_SECTION_POST|VS_GLOBAL_SECTION_PRE|VS_GLOBAL|XCODE_ATTRIBUTE)_\w+|\w+_(?:CLANG_TIDY|COMPILER_LAUNCHER|CPPCHECK|CPPLINT|INCLUDE_WHAT_YOU_USE|OUTPUT_NAME|POSTFIX|VISIBILITY_PRESET)|ABSTRACT|ADDITIONAL_MAKE_CLEAN_FILES|ADVANCED|ALIASED_TARGET|ALLOW_DUPLICATE_CUSTOM_TARGETS|ANDROID_(?:ANT_ADDITIONAL_OPTIONS|API|API_MIN|ARCH|ASSETS_DIRECTORIES|GUI|JAR_DEPENDENCIES|NATIVE_LIB_DEPENDENCIES|NATIVE_LIB_DIRECTORIES|PROCESS_MAX|PROGUARD|PROGUARD_CONFIG_PATH|SECURE_PROPS_PATH|SKIP_ANT_STEP|STL_TYPE)|ARCHIVE_OUTPUT_DIRECTORY|ATTACHED_FILES|ATTACHED_FILES_ON_FAIL|AUTOGEN_(?:BUILD_DIR|ORIGIN_DEPENDS|PARALLEL|SOURCE_GROUP|TARGETS_FOLDER|TARGET_DEPENDS)|AUTOMOC|AUTOMOC_(?:COMPILER_PREDEFINES|DEPEND_FILTERS|EXECUTABLE|MACRO_NAMES|MOC_OPTIONS|SOURCE_GROUP|TARGETS_FOLDER)|AUTORCC|AUTORCC_EXECUTABLE|AUTORCC_OPTIONS|AUTORCC_SOURCE_GROUP|AUTOUIC|AUTOUIC_EXECUTABLE|AUTOUIC_OPTIONS|AUTOUIC_SEARCH_PATHS|BINARY_DIR|BUILDSYSTEM_TARGETS|BUILD_RPATH|BUILD_RPATH_USE_ORIGIN|BUILD_WITH_INSTALL_NAME_DIR|BUILD_WITH_INSTALL_RPATH|BUNDLE|BUNDLE_EXTENSION|CACHE_VARIABLES|CLEAN_NO_CUSTOM|COMMON_LANGUAGE_RUNTIME|COMPATIBLE_INTERFACE_(?:BOOL|NUMBER_MAX|NUMBER_MIN|STRING)|COMPILE_(?:DEFINITIONS|FEATURES|FLAGS|OPTIONS|PDB_NAME|PDB_OUTPUT_DIRECTORY)|COST|CPACK_DESKTOP_SHORTCUTS|CPACK_NEVER_OVERWRITE|CPACK_PERMANENT|CPACK_STARTUP_SHORTCUTS|CPACK_START_MENU_SHORTCUTS|CPACK_WIX_ACL|CROSSCOMPILING_EMULATOR|CUDA_EXTENSIONS|CUDA_PTX_COMPILATION|CUDA_RESOLVE_DEVICE_SYMBOLS|CUDA_SEPARABLE_COMPILATION|CUDA_STANDARD|CUDA_STANDARD_REQUIRED|CXX_EXTENSIONS|CXX_STANDARD|CXX_STANDARD_REQUIRED|C_EXTENSIONS|C_STANDARD|C_STANDARD_REQUIRED|DEBUG_CONFIGURATIONS|DEFINE_SYMBOL|DEFINITIONS|DEPENDS|DEPLOYMENT_ADDITIONAL_FILES|DEPLOYMENT_REMOTE_DIRECTORY|DISABLED|DISABLED_FEATURES|ECLIPSE_EXTRA_CPROJECT_CONTENTS|ECLIPSE_EXTRA_NATURES|ENABLED_FEATURES|ENABLED_LANGUAGES|ENABLE_EXPORTS|ENVIRONMENT|EXCLUDE_FROM_ALL|EXCLUDE_FROM_DEFAULT_BUILD|EXPORT_NAME|EXPORT_PROPERTIES|EXTERNAL_OBJECT|EchoString|FAIL_REGULAR_EXPRESSION|FIND_LIBRARY_USE_LIB32_PATHS|FIND_LIBRARY_USE_LIB64_PATHS|FIND_LIBRARY_USE_LIBX32_PATHS|FIND_LIBRARY_USE_OPENBSD_VERSIONING|FIXTURES_CLEANUP|FIXTURES_REQUIRED|FIXTURES_SETUP|FOLDER|FRAMEWORK|Fortran_FORMAT|Fortran_MODULE_DIRECTORY|GENERATED|GENERATOR_FILE_NAME|GENERATOR_IS_MULTI_CONFIG|GHS_INTEGRITY_APP|GHS_NO_SOURCE_GROUP_FILE|GLOBAL_DEPENDS_DEBUG_MODE|GLOBAL_DEPENDS_NO_CYCLES|GNUtoMS|HAS_CXX|HEADER_FILE_ONLY|HELPSTRING|IMPLICIT_DEPENDS_INCLUDE_TRANSFORM|IMPORTED|IMPORTED_(?:COMMON_LANGUAGE_RUNTIME|CONFIGURATIONS|GLOBAL|IMPLIB|LIBNAME|LINK_DEPENDENT_LIBRARIES|LINK_INTERFACE_(?:LANGUAGES|LIBRARIES|MULTIPLICITY)|LOCATION|NO_SONAME|OBJECTS|SONAME)|IMPORT_PREFIX|IMPORT_SUFFIX|INCLUDE_DIRECTORIES|INCLUDE_REGULAR_EXPRESSION|INSTALL_NAME_DIR|INSTALL_RPATH|INSTALL_RPATH_USE_LINK_PATH|INTERFACE_(?:AUTOUIC_OPTIONS|COMPILE_DEFINITIONS|COMPILE_FEATURES|COMPILE_OPTIONS|INCLUDE_DIRECTORIES|LINK_DEPENDS|LINK_DIRECTORIES|LINK_LIBRARIES|LINK_OPTIONS|POSITION_INDEPENDENT_CODE|SOURCES|SYSTEM_INCLUDE_DIRECTORIES)|INTERPROCEDURAL_OPTIMIZATION|IN_TRY_COMPILE|IOS_INSTALL_COMBINED|JOB_POOLS|JOB_POOL_COMPILE|JOB_POOL_LINK|KEEP_EXTENSION|LABELS|LANGUAGE|LIBRARY_OUTPUT_DIRECTORY|LINKER_LANGUAGE|LINK_(?:DEPENDS|DEPENDS_NO_SHARED|DIRECTORIES|FLAGS|INTERFACE_LIBRARIES|INTERFACE_MULTIPLICITY|LIBRARIES|OPTIONS|SEARCH_END_STATIC|SEARCH_START_STATIC|WHAT_YOU_USE)|LISTFILE_STACK|LOCATION|MACOSX_BUNDLE|MACOSX_BUNDLE_INFO_PLIST|MACOSX_FRAMEWORK_INFO_PLIST|MACOSX_PACKAGE_LOCATION|MACOSX_RPATH|MACROS|MANUALLY_ADDED_DEPENDENCIES|MEASUREMENT|MODIFIED|NAME|NO_SONAME|NO_SYSTEM_FROM_IMPORTED|OBJECT_DEPENDS|OBJECT_OUTPUTS|OSX_ARCHITECTURES|OUTPUT_NAME|PACKAGES_FOUND|PACKAGES_NOT_FOUND|PARENT_DIRECTORY|PASS_REGULAR_EXPRESSION|PDB_NAME|PDB_OUTPUT_DIRECTORY|POSITION_INDEPENDENT_CODE|POST_INSTALL_SCRIPT|PREDEFINED_TARGETS_FOLDER|PREFIX|PRE_INSTALL_SCRIPT|PRIVATE_HEADER|PROCESSORS|PROCESSOR_AFFINITY|PROJECT_LABEL|PUBLIC_HEADER|REPORT_UNDEFINED_PROPERTIES|REQUIRED_FILES|RESOURCE|RESOURCE_LOCK|RULE_LAUNCH_COMPILE|RULE_LAUNCH_CUSTOM|RULE_LAUNCH_LINK|RULE_MESSAGES|RUNTIME_OUTPUT_DIRECTORY|RUN_SERIAL|SKIP_AUTOGEN|SKIP_AUTOMOC|SKIP_AUTORCC|SKIP_AUTOUIC|SKIP_BUILD_RPATH|SKIP_RETURN_CODE|SOURCES|SOURCE_DIR|SOVERSION|STATIC_LIBRARY_FLAGS|STATIC_LIBRARY_OPTIONS|STRINGS|SUBDIRECTORIES|SUFFIX|SYMBOLIC|TARGET_ARCHIVES_MAY_BE_SHARED_LIBS|TARGET_MESSAGES|TARGET_SUPPORTS_SHARED_LIBS|TESTS|TEST_INCLUDE_FILE|TEST_INCLUDE_FILES|TIMEOUT|TIMEOUT_AFTER_MATCH|TYPE|USE_FOLDERS|VALUE|VARIABLES|VERSION|VISIBILITY_INLINES_HIDDEN|VS_(?:CONFIGURATION_TYPE|COPY_TO_OUT_DIR|DEBUGGER_(?:COMMAND|COMMAND_ARGUMENTS|ENVIRONMENT|WORKING_DIRECTORY)|DEPLOYMENT_CONTENT|DEPLOYMENT_LOCATION|DOTNET_REFERENCES|DOTNET_REFERENCES_COPY_LOCAL|INCLUDE_IN_VSIX|IOT_STARTUP_TASK|KEYWORD|RESOURCE_GENERATOR|SCC_AUXPATH|SCC_LOCALPATH|SCC_PROJECTNAME|SCC_PROVIDER|SDK_REFERENCES|SHADER_(?:DISABLE_OPTIMIZATIONS|ENABLE_DEBUG|ENTRYPOINT|FLAGS|MODEL|OBJECT_FILE_NAME|OUTPUT_HEADER_FILE|TYPE|VARIABLE_NAME)|STARTUP_PROJECT|TOOL_OVERRIDE|USER_PROPS|WINRT_COMPONENT|WINRT_EXTENSIONS|WINRT_REFERENCES|XAML_TYPE)|WILL_FAIL|WIN32_EXECUTABLE|WINDOWS_EXPORT_ALL_SYMBOLS|WORKING_DIRECTORY|WRAP_EXCLUDE|XCODE_(?:EMIT_EFFECTIVE_PLATFORM_NAME|EXPLICIT_FILE_TYPE|FILE_ATTRIBUTES|LAST_KNOWN_FILE_TYPE|PRODUCT_TYPE|SCHEME_(?:ADDRESS_SANITIZER|ADDRESS_SANITIZER_USE_AFTER_RETURN|ARGUMENTS|DISABLE_MAIN_THREAD_CHECKER|DYNAMIC_LIBRARY_LOADS|DYNAMIC_LINKER_API_USAGE|ENVIRONMENT|EXECUTABLE|GUARD_MALLOC|MAIN_THREAD_CHECKER_STOP|MALLOC_GUARD_EDGES|MALLOC_SCRIBBLE|MALLOC_STACK|THREAD_SANITIZER(?:_STOP)?|UNDEFINED_BEHAVIOUR_SANITIZER(?:_STOP)?|ZOMBIE_OBJECTS))|XCTEST)\b/,keyword:/\b(?:add_compile_definitions|add_compile_options|add_custom_command|add_custom_target|add_definitions|add_dependencies|add_executable|add_library|add_link_options|add_subdirectory|add_test|aux_source_directory|break|build_command|build_name|cmake_host_system_information|cmake_minimum_required|cmake_parse_arguments|cmake_policy|configure_file|continue|create_test_sourcelist|ctest_build|ctest_configure|ctest_coverage|ctest_empty_binary_directory|ctest_memcheck|ctest_read_custom_files|ctest_run_script|ctest_sleep|ctest_start|ctest_submit|ctest_test|ctest_update|ctest_upload|define_property|else|elseif|enable_language|enable_testing|endforeach|endfunction|endif|endmacro|endwhile|exec_program|execute_process|export|export_library_dependencies|file|find_file|find_library|find_package|find_path|find_program|fltk_wrap_ui|foreach|function|get_cmake_property|get_directory_property|get_filename_component|get_property|get_source_file_property|get_target_property|get_test_property|if|include|include_directories|include_external_msproject|include_guard|include_regular_expression|install|install_files|install_programs|install_targets|link_directories|link_libraries|list|load_cache|load_command|macro|make_directory|mark_as_advanced|math|message|option|output_required_files|project|qt_wrap_cpp|qt_wrap_ui|remove|remove_definitions|return|separate_arguments|set|set_directory_properties|set_property|set_source_files_properties|set_target_properties|set_tests_properties|site_name|source_group|string|subdir_depends|subdirs|target_compile_definitions|target_compile_features|target_compile_options|target_include_directories|target_link_directories|target_link_libraries|target_link_options|target_sources|try_compile|try_run|unset|use_mangled_mesa|utility_source|variable_requires|variable_watch|while|write_file)(?=\s*\()\b/,boolean:/\b(?:FALSE|OFF|ON|TRUE)\b/,namespace:/\b(?:INTERFACE|PRIVATE|PROPERTIES|PUBLIC|SHARED|STATIC|TARGET_OBJECTS)\b/,operator:/\b(?:AND|DEFINED|EQUAL|GREATER|LESS|MATCHES|NOT|OR|STREQUAL|STRGREATER|STRLESS|VERSION_EQUAL|VERSION_GREATER|VERSION_LESS)\b/,inserted:{pattern:/\b\w+::\w+\b/,alias:"class-name"},number:/\b\d+(?:\.\d+)*\b/,function:/\b[a-z_]\w*(?=\s*\()\b/i,punctuation:/[()>}]|\$[<{]/}; \ No newline at end of file diff --git a/components/prism-cobol.js b/components/prism-cobol.js deleted file mode 100644 index 5767a15228..0000000000 --- a/components/prism-cobol.js +++ /dev/null @@ -1,53 +0,0 @@ -Prism.languages.cobol = { - 'comment': { - pattern: /\*>.*|(^[ \t]*)\*.*/m, - lookbehind: true, - greedy: true - }, - 'string': { - pattern: /[xzgn]?(?:"(?:[^\r\n"]|"")*"(?!")|'(?:[^\r\n']|'')*'(?!'))/i, - greedy: true - }, - - 'level': { - pattern: /(^[ \t]*)\d+\b/m, - lookbehind: true, - greedy: true, - alias: 'number' - }, - - 'class-name': { - // https://github.com/antlr/grammars-v4/blob/42edd5b687d183b5fa679e858a82297bd27141e7/cobol85/Cobol85.g4#L1015 - pattern: /(\bpic(?:ture)?\s+)(?:(?:[-\w$/,:*+<>]|\.(?!\s|$))(?:\(\d+\))?)+/i, - lookbehind: true, - inside: { - 'number': { - pattern: /(\()\d+/, - lookbehind: true - }, - 'punctuation': /[()]/ - } - }, - - 'keyword': { - pattern: /(^|[^\w-])(?:ABORT|ACCEPT|ACCESS|ADD|ADDRESS|ADVANCING|AFTER|ALIGNED|ALL|ALPHABET|ALPHABETIC|ALPHABETIC-LOWER|ALPHABETIC-UPPER|ALPHANUMERIC|ALPHANUMERIC-EDITED|ALSO|ALTER|ALTERNATE|ANY|ARE|AREA|AREAS|AS|ASCENDING|ASCII|ASSIGN|ASSOCIATED-DATA|ASSOCIATED-DATA-LENGTH|AT|ATTRIBUTE|AUTHOR|AUTO|AUTO-SKIP|BACKGROUND-COLOR|BACKGROUND-COLOUR|BASIS|BEEP|BEFORE|BEGINNING|BELL|BINARY|BIT|BLANK|BLINK|BLOCK|BOTTOM|BOUNDS|BY|BYFUNCTION|BYTITLE|CALL|CANCEL|CAPABLE|CCSVERSION|CD|CF|CH|CHAINING|CHANGED|CHANNEL|CHARACTER|CHARACTERS|CLASS|CLASS-ID|CLOCK-UNITS|CLOSE|CLOSE-DISPOSITION|COBOL|CODE|CODE-SET|COL|COLLATING|COLUMN|COM-REG|COMMA|COMMITMENT|COMMON|COMMUNICATION|COMP|COMP-1|COMP-2|COMP-3|COMP-4|COMP-5|COMPUTATIONAL|COMPUTATIONAL-1|COMPUTATIONAL-2|COMPUTATIONAL-3|COMPUTATIONAL-4|COMPUTATIONAL-5|COMPUTE|CONFIGURATION|CONTAINS|CONTENT|CONTINUE|CONTROL|CONTROL-POINT|CONTROLS|CONVENTION|CONVERTING|COPY|CORR|CORRESPONDING|COUNT|CRUNCH|CURRENCY|CURSOR|DATA|DATA-BASE|DATE|DATE-COMPILED|DATE-WRITTEN|DAY|DAY-OF-WEEK|DBCS|DE|DEBUG-CONTENTS|DEBUG-ITEM|DEBUG-LINE|DEBUG-NAME|DEBUG-SUB-1|DEBUG-SUB-2|DEBUG-SUB-3|DEBUGGING|DECIMAL-POINT|DECLARATIVES|DEFAULT|DEFAULT-DISPLAY|DEFINITION|DELETE|DELIMITED|DELIMITER|DEPENDING|DESCENDING|DESTINATION|DETAIL|DFHRESP|DFHVALUE|DISABLE|DISK|DISPLAY|DISPLAY-1|DIVIDE|DIVISION|DONTCARE|DOUBLE|DOWN|DUPLICATES|DYNAMIC|EBCDIC|EGCS|EGI|ELSE|EMI|EMPTY-CHECK|ENABLE|END|END-ACCEPT|END-ADD|END-CALL|END-COMPUTE|END-DELETE|END-DIVIDE|END-EVALUATE|END-IF|END-MULTIPLY|END-OF-PAGE|END-PERFORM|END-READ|END-RECEIVE|END-RETURN|END-REWRITE|END-SEARCH|END-START|END-STRING|END-SUBTRACT|END-UNSTRING|END-WRITE|ENDING|ENTER|ENTRY|ENTRY-PROCEDURE|ENVIRONMENT|EOL|EOP|EOS|ERASE|ERROR|ESCAPE|ESI|EVALUATE|EVENT|EVERY|EXCEPTION|EXCLUSIVE|EXHIBIT|EXIT|EXPORT|EXTEND|EXTENDED|EXTERNAL|FD|FILE|FILE-CONTROL|FILLER|FINAL|FIRST|FOOTING|FOR|FOREGROUND-COLOR|FOREGROUND-COLOUR|FROM|FULL|FUNCTION|FUNCTION-POINTER|FUNCTIONNAME|GENERATE|GIVING|GLOBAL|GO|GOBACK|GRID|GROUP|HEADING|HIGH-VALUE|HIGH-VALUES|HIGHLIGHT|I-O|I-O-CONTROL|ID|IDENTIFICATION|IF|IMPLICIT|IMPORT|IN|INDEX|INDEXED|INDICATE|INITIAL|INITIALIZE|INITIATE|INPUT|INPUT-OUTPUT|INSPECT|INSTALLATION|INTEGER|INTO|INVALID|INVOKE|IS|JUST|JUSTIFIED|KANJI|KEPT|KEY|KEYBOARD|LABEL|LANGUAGE|LAST|LB|LD|LEADING|LEFT|LEFTLINE|LENGTH|LENGTH-CHECK|LIBACCESS|LIBPARAMETER|LIBRARY|LIMIT|LIMITS|LINAGE|LINAGE-COUNTER|LINE|LINE-COUNTER|LINES|LINKAGE|LIST|LOCAL|LOCAL-STORAGE|LOCK|LONG-DATE|LONG-TIME|LOW-VALUE|LOW-VALUES|LOWER|LOWLIGHT|MEMORY|MERGE|MESSAGE|MMDDYYYY|MODE|MODULES|MORE-LABELS|MOVE|MULTIPLE|MULTIPLY|NAMED|NATIONAL|NATIONAL-EDITED|NATIVE|NEGATIVE|NETWORK|NEXT|NO|NO-ECHO|NULL|NULLS|NUMBER|NUMERIC|NUMERIC-DATE|NUMERIC-EDITED|NUMERIC-TIME|OBJECT-COMPUTER|OCCURS|ODT|OF|OFF|OMITTED|ON|OPEN|OPTIONAL|ORDER|ORDERLY|ORGANIZATION|OTHER|OUTPUT|OVERFLOW|OVERLINE|OWN|PACKED-DECIMAL|PADDING|PAGE|PAGE-COUNTER|PASSWORD|PERFORM|PF|PH|PIC|PICTURE|PLUS|POINTER|PORT|POSITION|POSITIVE|PRINTER|PRINTING|PRIVATE|PROCEDURE|PROCEDURE-POINTER|PROCEDURES|PROCEED|PROCESS|PROGRAM|PROGRAM-ID|PROGRAM-LIBRARY|PROMPT|PURGE|QUEUE|QUOTE|QUOTES|RANDOM|RD|READ|READER|REAL|RECEIVE|RECEIVED|RECORD|RECORDING|RECORDS|RECURSIVE|REDEFINES|REEL|REF|REFERENCE|REFERENCES|RELATIVE|RELEASE|REMAINDER|REMARKS|REMOTE|REMOVAL|REMOVE|RENAMES|REPLACE|REPLACING|REPORT|REPORTING|REPORTS|REQUIRED|RERUN|RESERVE|RESET|RETURN|RETURN-CODE|RETURNING|REVERSE-VIDEO|REVERSED|REWIND|REWRITE|RF|RH|RIGHT|ROUNDED|RUN|SAME|SAVE|SCREEN|SD|SEARCH|SECTION|SECURE|SECURITY|SEGMENT|SEGMENT-LIMIT|SELECT|SEND|SENTENCE|SEPARATE|SEQUENCE|SEQUENTIAL|SET|SHARED|SHAREDBYALL|SHAREDBYRUNUNIT|SHARING|SHIFT-IN|SHIFT-OUT|SHORT-DATE|SIGN|SIZE|SORT|SORT-CONTROL|SORT-CORE-SIZE|SORT-FILE-SIZE|SORT-MERGE|SORT-MESSAGE|SORT-MODE-SIZE|SORT-RETURN|SOURCE|SOURCE-COMPUTER|SPACE|SPACES|SPECIAL-NAMES|STANDARD|STANDARD-1|STANDARD-2|START|STATUS|STOP|STRING|SUB-QUEUE-1|SUB-QUEUE-2|SUB-QUEUE-3|SUBTRACT|SUM|SUPPRESS|SYMBOL|SYMBOLIC|SYNC|SYNCHRONIZED|TABLE|TALLY|TALLYING|TAPE|TASK|TERMINAL|TERMINATE|TEST|TEXT|THEN|THREAD|THREAD-LOCAL|THROUGH|THRU|TIME|TIMER|TIMES|TITLE|TO|TODAYS-DATE|TODAYS-NAME|TOP|TRAILING|TRUNCATED|TYPE|TYPEDEF|UNDERLINE|UNIT|UNSTRING|UNTIL|UP|UPON|USAGE|USE|USING|VALUE|VALUES|VARYING|VIRTUAL|WAIT|WHEN|WHEN-COMPILED|WITH|WORDS|WORKING-STORAGE|WRITE|YEAR|YYYYDDD|YYYYMMDD|ZERO-FILL|ZEROES|ZEROS)(?![\w-])/i, - lookbehind: true - }, - - 'boolean': { - pattern: /(^|[^\w-])(?:false|true)(?![\w-])/i, - lookbehind: true - }, - 'number': { - pattern: /(^|[^\w-])(?:[+-]?(?:(?:\d+(?:[.,]\d+)?|[.,]\d+)(?:e[+-]?\d+)?|zero))(?![\w-])/i, - lookbehind: true - }, - 'operator': [ - /<>|[<>]=?|[=+*/&]/, - { - pattern: /(^|[^\w-])(?:-|and|equal|greater|less|not|or|than)(?![\w-])/i, - lookbehind: true - } - ], - 'punctuation': /[.:,()]/ -}; diff --git a/components/prism-cobol.min.js b/components/prism-cobol.min.js deleted file mode 100644 index 6c68be1aba..0000000000 --- a/components/prism-cobol.min.js +++ /dev/null @@ -1 +0,0 @@ -Prism.languages.cobol={comment:{pattern:/\*>.*|(^[ \t]*)\*.*/m,lookbehind:!0,greedy:!0},string:{pattern:/[xzgn]?(?:"(?:[^\r\n"]|"")*"(?!")|'(?:[^\r\n']|'')*'(?!'))/i,greedy:!0},level:{pattern:/(^[ \t]*)\d+\b/m,lookbehind:!0,greedy:!0,alias:"number"},"class-name":{pattern:/(\bpic(?:ture)?\s+)(?:(?:[-\w$/,:*+<>]|\.(?!\s|$))(?:\(\d+\))?)+/i,lookbehind:!0,inside:{number:{pattern:/(\()\d+/,lookbehind:!0},punctuation:/[()]/}},keyword:{pattern:/(^|[^\w-])(?:ABORT|ACCEPT|ACCESS|ADD|ADDRESS|ADVANCING|AFTER|ALIGNED|ALL|ALPHABET|ALPHABETIC|ALPHABETIC-LOWER|ALPHABETIC-UPPER|ALPHANUMERIC|ALPHANUMERIC-EDITED|ALSO|ALTER|ALTERNATE|ANY|ARE|AREA|AREAS|AS|ASCENDING|ASCII|ASSIGN|ASSOCIATED-DATA|ASSOCIATED-DATA-LENGTH|AT|ATTRIBUTE|AUTHOR|AUTO|AUTO-SKIP|BACKGROUND-COLOR|BACKGROUND-COLOUR|BASIS|BEEP|BEFORE|BEGINNING|BELL|BINARY|BIT|BLANK|BLINK|BLOCK|BOTTOM|BOUNDS|BY|BYFUNCTION|BYTITLE|CALL|CANCEL|CAPABLE|CCSVERSION|CD|CF|CH|CHAINING|CHANGED|CHANNEL|CHARACTER|CHARACTERS|CLASS|CLASS-ID|CLOCK-UNITS|CLOSE|CLOSE-DISPOSITION|COBOL|CODE|CODE-SET|COL|COLLATING|COLUMN|COM-REG|COMMA|COMMITMENT|COMMON|COMMUNICATION|COMP|COMP-1|COMP-2|COMP-3|COMP-4|COMP-5|COMPUTATIONAL|COMPUTATIONAL-1|COMPUTATIONAL-2|COMPUTATIONAL-3|COMPUTATIONAL-4|COMPUTATIONAL-5|COMPUTE|CONFIGURATION|CONTAINS|CONTENT|CONTINUE|CONTROL|CONTROL-POINT|CONTROLS|CONVENTION|CONVERTING|COPY|CORR|CORRESPONDING|COUNT|CRUNCH|CURRENCY|CURSOR|DATA|DATA-BASE|DATE|DATE-COMPILED|DATE-WRITTEN|DAY|DAY-OF-WEEK|DBCS|DE|DEBUG-CONTENTS|DEBUG-ITEM|DEBUG-LINE|DEBUG-NAME|DEBUG-SUB-1|DEBUG-SUB-2|DEBUG-SUB-3|DEBUGGING|DECIMAL-POINT|DECLARATIVES|DEFAULT|DEFAULT-DISPLAY|DEFINITION|DELETE|DELIMITED|DELIMITER|DEPENDING|DESCENDING|DESTINATION|DETAIL|DFHRESP|DFHVALUE|DISABLE|DISK|DISPLAY|DISPLAY-1|DIVIDE|DIVISION|DONTCARE|DOUBLE|DOWN|DUPLICATES|DYNAMIC|EBCDIC|EGCS|EGI|ELSE|EMI|EMPTY-CHECK|ENABLE|END|END-ACCEPT|END-ADD|END-CALL|END-COMPUTE|END-DELETE|END-DIVIDE|END-EVALUATE|END-IF|END-MULTIPLY|END-OF-PAGE|END-PERFORM|END-READ|END-RECEIVE|END-RETURN|END-REWRITE|END-SEARCH|END-START|END-STRING|END-SUBTRACT|END-UNSTRING|END-WRITE|ENDING|ENTER|ENTRY|ENTRY-PROCEDURE|ENVIRONMENT|EOL|EOP|EOS|ERASE|ERROR|ESCAPE|ESI|EVALUATE|EVENT|EVERY|EXCEPTION|EXCLUSIVE|EXHIBIT|EXIT|EXPORT|EXTEND|EXTENDED|EXTERNAL|FD|FILE|FILE-CONTROL|FILLER|FINAL|FIRST|FOOTING|FOR|FOREGROUND-COLOR|FOREGROUND-COLOUR|FROM|FULL|FUNCTION|FUNCTION-POINTER|FUNCTIONNAME|GENERATE|GIVING|GLOBAL|GO|GOBACK|GRID|GROUP|HEADING|HIGH-VALUE|HIGH-VALUES|HIGHLIGHT|I-O|I-O-CONTROL|ID|IDENTIFICATION|IF|IMPLICIT|IMPORT|IN|INDEX|INDEXED|INDICATE|INITIAL|INITIALIZE|INITIATE|INPUT|INPUT-OUTPUT|INSPECT|INSTALLATION|INTEGER|INTO|INVALID|INVOKE|IS|JUST|JUSTIFIED|KANJI|KEPT|KEY|KEYBOARD|LABEL|LANGUAGE|LAST|LB|LD|LEADING|LEFT|LEFTLINE|LENGTH|LENGTH-CHECK|LIBACCESS|LIBPARAMETER|LIBRARY|LIMIT|LIMITS|LINAGE|LINAGE-COUNTER|LINE|LINE-COUNTER|LINES|LINKAGE|LIST|LOCAL|LOCAL-STORAGE|LOCK|LONG-DATE|LONG-TIME|LOW-VALUE|LOW-VALUES|LOWER|LOWLIGHT|MEMORY|MERGE|MESSAGE|MMDDYYYY|MODE|MODULES|MORE-LABELS|MOVE|MULTIPLE|MULTIPLY|NAMED|NATIONAL|NATIONAL-EDITED|NATIVE|NEGATIVE|NETWORK|NEXT|NO|NO-ECHO|NULL|NULLS|NUMBER|NUMERIC|NUMERIC-DATE|NUMERIC-EDITED|NUMERIC-TIME|OBJECT-COMPUTER|OCCURS|ODT|OF|OFF|OMITTED|ON|OPEN|OPTIONAL|ORDER|ORDERLY|ORGANIZATION|OTHER|OUTPUT|OVERFLOW|OVERLINE|OWN|PACKED-DECIMAL|PADDING|PAGE|PAGE-COUNTER|PASSWORD|PERFORM|PF|PH|PIC|PICTURE|PLUS|POINTER|PORT|POSITION|POSITIVE|PRINTER|PRINTING|PRIVATE|PROCEDURE|PROCEDURE-POINTER|PROCEDURES|PROCEED|PROCESS|PROGRAM|PROGRAM-ID|PROGRAM-LIBRARY|PROMPT|PURGE|QUEUE|QUOTE|QUOTES|RANDOM|RD|READ|READER|REAL|RECEIVE|RECEIVED|RECORD|RECORDING|RECORDS|RECURSIVE|REDEFINES|REEL|REF|REFERENCE|REFERENCES|RELATIVE|RELEASE|REMAINDER|REMARKS|REMOTE|REMOVAL|REMOVE|RENAMES|REPLACE|REPLACING|REPORT|REPORTING|REPORTS|REQUIRED|RERUN|RESERVE|RESET|RETURN|RETURN-CODE|RETURNING|REVERSE-VIDEO|REVERSED|REWIND|REWRITE|RF|RH|RIGHT|ROUNDED|RUN|SAME|SAVE|SCREEN|SD|SEARCH|SECTION|SECURE|SECURITY|SEGMENT|SEGMENT-LIMIT|SELECT|SEND|SENTENCE|SEPARATE|SEQUENCE|SEQUENTIAL|SET|SHARED|SHAREDBYALL|SHAREDBYRUNUNIT|SHARING|SHIFT-IN|SHIFT-OUT|SHORT-DATE|SIGN|SIZE|SORT|SORT-CONTROL|SORT-CORE-SIZE|SORT-FILE-SIZE|SORT-MERGE|SORT-MESSAGE|SORT-MODE-SIZE|SORT-RETURN|SOURCE|SOURCE-COMPUTER|SPACE|SPACES|SPECIAL-NAMES|STANDARD|STANDARD-1|STANDARD-2|START|STATUS|STOP|STRING|SUB-QUEUE-1|SUB-QUEUE-2|SUB-QUEUE-3|SUBTRACT|SUM|SUPPRESS|SYMBOL|SYMBOLIC|SYNC|SYNCHRONIZED|TABLE|TALLY|TALLYING|TAPE|TASK|TERMINAL|TERMINATE|TEST|TEXT|THEN|THREAD|THREAD-LOCAL|THROUGH|THRU|TIME|TIMER|TIMES|TITLE|TO|TODAYS-DATE|TODAYS-NAME|TOP|TRAILING|TRUNCATED|TYPE|TYPEDEF|UNDERLINE|UNIT|UNSTRING|UNTIL|UP|UPON|USAGE|USE|USING|VALUE|VALUES|VARYING|VIRTUAL|WAIT|WHEN|WHEN-COMPILED|WITH|WORDS|WORKING-STORAGE|WRITE|YEAR|YYYYDDD|YYYYMMDD|ZERO-FILL|ZEROES|ZEROS)(?![\w-])/i,lookbehind:!0},boolean:{pattern:/(^|[^\w-])(?:false|true)(?![\w-])/i,lookbehind:!0},number:{pattern:/(^|[^\w-])(?:[+-]?(?:(?:\d+(?:[.,]\d+)?|[.,]\d+)(?:e[+-]?\d+)?|zero))(?![\w-])/i,lookbehind:!0},operator:[/<>|[<>]=?|[=+*/&]/,{pattern:/(^|[^\w-])(?:-|and|equal|greater|less|not|or|than)(?![\w-])/i,lookbehind:!0}],punctuation:/[.:,()]/}; \ No newline at end of file diff --git a/components/prism-coffeescript.js b/components/prism-coffeescript.js deleted file mode 100644 index 72fe0b8ba6..0000000000 --- a/components/prism-coffeescript.js +++ /dev/null @@ -1,96 +0,0 @@ -(function (Prism) { - - // Ignore comments starting with { to privilege string interpolation highlighting - var comment = /#(?!\{).+/; - var interpolation = { - pattern: /#\{[^}]+\}/, - alias: 'variable' - }; - - Prism.languages.coffeescript = Prism.languages.extend('javascript', { - 'comment': comment, - 'string': [ - - // Strings are multiline - { - pattern: /'(?:\\[\s\S]|[^\\'])*'/, - greedy: true - }, - - { - // Strings are multiline - pattern: /"(?:\\[\s\S]|[^\\"])*"/, - greedy: true, - inside: { - 'interpolation': interpolation - } - } - ], - 'keyword': /\b(?:and|break|by|catch|class|continue|debugger|delete|do|each|else|extend|extends|false|finally|for|if|in|instanceof|is|isnt|let|loop|namespace|new|no|not|null|of|off|on|or|own|return|super|switch|then|this|throw|true|try|typeof|undefined|unless|until|when|while|window|with|yes|yield)\b/, - 'class-member': { - pattern: /@(?!\d)\w+/, - alias: 'variable' - } - }); - - Prism.languages.insertBefore('coffeescript', 'comment', { - 'multiline-comment': { - pattern: /###[\s\S]+?###/, - alias: 'comment' - }, - - // Block regexp can contain comments and interpolation - 'block-regex': { - pattern: /\/{3}[\s\S]*?\/{3}/, - alias: 'regex', - inside: { - 'comment': comment, - 'interpolation': interpolation - } - } - }); - - Prism.languages.insertBefore('coffeescript', 'string', { - 'inline-javascript': { - pattern: /`(?:\\[\s\S]|[^\\`])*`/, - inside: { - 'delimiter': { - pattern: /^`|`$/, - alias: 'punctuation' - }, - 'script': { - pattern: /[\s\S]+/, - alias: 'language-javascript', - inside: Prism.languages.javascript - } - } - }, - - // Block strings - 'multiline-string': [ - { - pattern: /'''[\s\S]*?'''/, - greedy: true, - alias: 'string' - }, - { - pattern: /"""[\s\S]*?"""/, - greedy: true, - alias: 'string', - inside: { - interpolation: interpolation - } - } - ] - - }); - - Prism.languages.insertBefore('coffeescript', 'keyword', { - // Object property - 'property': /(?!\d)\w+(?=\s*:(?!:))/ - }); - - delete Prism.languages.coffeescript['template-string']; - - Prism.languages.coffee = Prism.languages.coffeescript; -}(Prism)); diff --git a/components/prism-coffeescript.min.js b/components/prism-coffeescript.min.js deleted file mode 100644 index e2fd36e8ce..0000000000 --- a/components/prism-coffeescript.min.js +++ /dev/null @@ -1 +0,0 @@ -!function(e){var t=/#(?!\{).+/,n={pattern:/#\{[^}]+\}/,alias:"variable"};e.languages.coffeescript=e.languages.extend("javascript",{comment:t,string:[{pattern:/'(?:\\[\s\S]|[^\\'])*'/,greedy:!0},{pattern:/"(?:\\[\s\S]|[^\\"])*"/,greedy:!0,inside:{interpolation:n}}],keyword:/\b(?:and|break|by|catch|class|continue|debugger|delete|do|each|else|extend|extends|false|finally|for|if|in|instanceof|is|isnt|let|loop|namespace|new|no|not|null|of|off|on|or|own|return|super|switch|then|this|throw|true|try|typeof|undefined|unless|until|when|while|window|with|yes|yield)\b/,"class-member":{pattern:/@(?!\d)\w+/,alias:"variable"}}),e.languages.insertBefore("coffeescript","comment",{"multiline-comment":{pattern:/###[\s\S]+?###/,alias:"comment"},"block-regex":{pattern:/\/{3}[\s\S]*?\/{3}/,alias:"regex",inside:{comment:t,interpolation:n}}}),e.languages.insertBefore("coffeescript","string",{"inline-javascript":{pattern:/`(?:\\[\s\S]|[^\\`])*`/,inside:{delimiter:{pattern:/^`|`$/,alias:"punctuation"},script:{pattern:/[\s\S]+/,alias:"language-javascript",inside:e.languages.javascript}}},"multiline-string":[{pattern:/'''[\s\S]*?'''/,greedy:!0,alias:"string"},{pattern:/"""[\s\S]*?"""/,greedy:!0,alias:"string",inside:{interpolation:n}}]}),e.languages.insertBefore("coffeescript","keyword",{property:/(?!\d)\w+(?=\s*:(?!:))/}),delete e.languages.coffeescript["template-string"],e.languages.coffee=e.languages.coffeescript}(Prism); \ No newline at end of file diff --git a/components/prism-concurnas.js b/components/prism-concurnas.js deleted file mode 100644 index 476d0b49ad..0000000000 --- a/components/prism-concurnas.js +++ /dev/null @@ -1,61 +0,0 @@ -Prism.languages.concurnas = { - 'comment': { - pattern: /(^|[^\\])(?:\/\*[\s\S]*?(?:\*\/|$)|\/\/.*)/, - lookbehind: true, - greedy: true - }, - 'langext': { - pattern: /\b\w+\s*\|\|[\s\S]+?\|\|/, - greedy: true, - inside: { - 'class-name': /^\w+/, - 'string': { - pattern: /(^\s*\|\|)[\s\S]+(?=\|\|$)/, - lookbehind: true - }, - 'punctuation': /\|\|/ - } - }, - 'function': { - pattern: /((?:^|\s)def[ \t]+)[a-zA-Z_]\w*(?=\s*\()/, - lookbehind: true - }, - 'keyword': /\b(?:abstract|actor|also|annotation|assert|async|await|bool|boolean|break|byte|case|catch|changed|char|class|closed|constant|continue|def|default|del|double|elif|else|enum|every|extends|false|finally|float|for|from|global|gpudef|gpukernel|if|import|in|init|inject|int|lambda|local|long|loop|match|new|nodefault|null|of|onchange|open|out|override|package|parfor|parforsync|post|pre|private|protected|provide|provider|public|return|shared|short|single|size_t|sizeof|super|sync|this|throw|trait|trans|transient|true|try|typedef|unchecked|using|val|var|void|while|with)\b/, - 'boolean': /\b(?:false|true)\b/, - 'number': /\b0b[01][01_]*L?\b|\b0x(?:[\da-f_]*\.)?[\da-f_p+-]+\b|(?:\b\d[\d_]*(?:\.[\d_]*)?|\B\.\d[\d_]*)(?:e[+-]?\d[\d_]*)?[dfls]?/i, - 'punctuation': /[{}[\];(),.:]/, - 'operator': /<==|>==|=>|->|<-|<>|&==|&<>|\?:?|\.\?|\+\+|--|[-+*/=<>]=?|[!^~]|\b(?:and|as|band|bor|bxor|comp|is|isnot|mod|or)\b=?/, - 'annotation': { - pattern: /@(?:\w+:)?(?:\w+|\[[^\]]+\])?/, - alias: 'builtin' - } -}; - -Prism.languages.insertBefore('concurnas', 'langext', { - 'regex-literal': { - pattern: /\br("|')(?:\\.|(?!\1)[^\\\r\n])*\1/, - greedy: true, - inside: { - 'interpolation': { - pattern: /((?:^|[^\\])(?:\\{2})*)\{(?:[^{}]|\{(?:[^{}]|\{[^}]*\})*\})+\}/, - lookbehind: true, - inside: Prism.languages.concurnas - }, - 'regex': /[\s\S]+/ - } - }, - 'string-literal': { - pattern: /(?:\B|\bs)("|')(?:\\.|(?!\1)[^\\\r\n])*\1/, - greedy: true, - inside: { - 'interpolation': { - pattern: /((?:^|[^\\])(?:\\{2})*)\{(?:[^{}]|\{(?:[^{}]|\{[^}]*\})*\})+\}/, - lookbehind: true, - inside: Prism.languages.concurnas - }, - 'string': /[\s\S]+/ - } - } -}); - -Prism.languages.conc = Prism.languages.concurnas; diff --git a/components/prism-concurnas.min.js b/components/prism-concurnas.min.js deleted file mode 100644 index 60294b7beb..0000000000 --- a/components/prism-concurnas.min.js +++ /dev/null @@ -1 +0,0 @@ -Prism.languages.concurnas={comment:{pattern:/(^|[^\\])(?:\/\*[\s\S]*?(?:\*\/|$)|\/\/.*)/,lookbehind:!0,greedy:!0},langext:{pattern:/\b\w+\s*\|\|[\s\S]+?\|\|/,greedy:!0,inside:{"class-name":/^\w+/,string:{pattern:/(^\s*\|\|)[\s\S]+(?=\|\|$)/,lookbehind:!0},punctuation:/\|\|/}},function:{pattern:/((?:^|\s)def[ \t]+)[a-zA-Z_]\w*(?=\s*\()/,lookbehind:!0},keyword:/\b(?:abstract|actor|also|annotation|assert|async|await|bool|boolean|break|byte|case|catch|changed|char|class|closed|constant|continue|def|default|del|double|elif|else|enum|every|extends|false|finally|float|for|from|global|gpudef|gpukernel|if|import|in|init|inject|int|lambda|local|long|loop|match|new|nodefault|null|of|onchange|open|out|override|package|parfor|parforsync|post|pre|private|protected|provide|provider|public|return|shared|short|single|size_t|sizeof|super|sync|this|throw|trait|trans|transient|true|try|typedef|unchecked|using|val|var|void|while|with)\b/,boolean:/\b(?:false|true)\b/,number:/\b0b[01][01_]*L?\b|\b0x(?:[\da-f_]*\.)?[\da-f_p+-]+\b|(?:\b\d[\d_]*(?:\.[\d_]*)?|\B\.\d[\d_]*)(?:e[+-]?\d[\d_]*)?[dfls]?/i,punctuation:/[{}[\];(),.:]/,operator:/<==|>==|=>|->|<-|<>|&==|&<>|\?:?|\.\?|\+\+|--|[-+*/=<>]=?|[!^~]|\b(?:and|as|band|bor|bxor|comp|is|isnot|mod|or)\b=?/,annotation:{pattern:/@(?:\w+:)?(?:\w+|\[[^\]]+\])?/,alias:"builtin"}},Prism.languages.insertBefore("concurnas","langext",{"regex-literal":{pattern:/\br("|')(?:\\.|(?!\1)[^\\\r\n])*\1/,greedy:!0,inside:{interpolation:{pattern:/((?:^|[^\\])(?:\\{2})*)\{(?:[^{}]|\{(?:[^{}]|\{[^}]*\})*\})+\}/,lookbehind:!0,inside:Prism.languages.concurnas},regex:/[\s\S]+/}},"string-literal":{pattern:/(?:\B|\bs)("|')(?:\\.|(?!\1)[^\\\r\n])*\1/,greedy:!0,inside:{interpolation:{pattern:/((?:^|[^\\])(?:\\{2})*)\{(?:[^{}]|\{(?:[^{}]|\{[^}]*\})*\})+\}/,lookbehind:!0,inside:Prism.languages.concurnas},string:/[\s\S]+/}}}),Prism.languages.conc=Prism.languages.concurnas; \ No newline at end of file diff --git a/components/prism-cooklang.js b/components/prism-cooklang.js deleted file mode 100644 index cb49ed1260..0000000000 --- a/components/prism-cooklang.js +++ /dev/null @@ -1,146 +0,0 @@ -(function (Prism) { - - // see https://github.com/cooklang/spec/blob/main/EBNF.md - - var single_token_suffix = /(?:(?!\s)[\d$+<=a-zA-Z\x80-\uFFFF])+/.source; - var multi_token_infix = /[^{}@#]+/.source; - var multi_token_suffix = /\{[^}#@]*\}/.source; - - var multi_token = multi_token_infix + multi_token_suffix; - - var timer_units = /(?:h|hours|hrs|m|min|minutes)/.source; - - var amount_group_impl = { - pattern: /\{[^{}]*\}/, - inside: { - 'amount': { - pattern: /([\{|])[^{}|*%]+/, - lookbehind: true, - alias: 'number', - }, - 'unit': { - pattern: /(%)[^}]+/, - lookbehind: true, - alias: 'symbol', - }, - 'servings-scaler': { - pattern: /\*/, - alias: 'operator', - }, - 'servings-alternative-separator': { - pattern: /\|/, - alias: 'operator', - }, - 'unit-separator': { - pattern: /(?:%|(\*)%)/, - lookbehind: true, - alias: 'operator', - }, - 'punctuation': /[{}]/, - } - }; - - - Prism.languages.cooklang = { - 'comment': { - // [- comment -] - // -- comment - pattern: /\[-[\s\S]*?-\]|--.*/, - greedy: true, - }, - 'meta': { // >> key: value - pattern: />>.*:.*/, - inside: { - 'property': { // key: - pattern: /(>>\s*)[^\s:](?:[^:]*[^\s:])?/, - lookbehind: true, - } - } - }, - 'cookware-group': { // #...{...}, #... - pattern: new RegExp('#(?:' - + multi_token - + '|' - + single_token_suffix - + ')' - ), - inside: { - 'cookware': { - pattern: new RegExp('(^#)(?:' - + multi_token_infix - + ')' - ), - lookbehind: true, - alias: 'variable', - }, - 'cookware-keyword': { - pattern: /^#/, - alias: 'keyword', - }, - 'quantity-group': { - pattern: new RegExp(/\{[^{}@#]*\}/), - inside: { - 'quantity': { - pattern: new RegExp(/(^\{)/.source + multi_token_infix), - lookbehind: true, - alias: 'number', - }, - 'punctuation': /[{}]/, - } - } - }, - }, - 'ingredient-group': { // @...{...}, @... - pattern: new RegExp('@(?:' - + multi_token - + '|' - + single_token_suffix - + ')'), - inside: { - 'ingredient': { - pattern: new RegExp('(^@)(?:' - + multi_token_infix - + ')'), - lookbehind: true, - alias: 'variable', - }, - 'ingredient-keyword': { - pattern: /^@/, - alias: 'keyword', - }, - 'amount-group': amount_group_impl, - } - }, - 'timer-group': { // ~timer{...} - // eslint-disable-next-line regexp/sort-alternatives - pattern: /~(?!\s)[^@#~{}]*\{[^{}]*\}/, - inside: { - 'timer': { - pattern: /(^~)[^{]+/, - lookbehind: true, - alias: 'variable', - }, - 'duration-group': { // {...} - pattern: /\{[^{}]*\}/, - inside: { - 'punctuation': /[{}]/, - 'unit': { - pattern: new RegExp(/(%\s*)/.source + timer_units + /\b/.source), - lookbehind: true, - alias: 'symbol', - }, - 'operator': /%/, - 'duration': { - pattern: /\d+/, - alias: 'number', - }, - } - }, - 'timer-keyword': { - pattern: /^~/, - alias: 'keyword', - }, - } - } - }; -}(Prism)); diff --git a/components/prism-cooklang.min.js b/components/prism-cooklang.min.js deleted file mode 100644 index 126fd8bfb1..0000000000 --- a/components/prism-cooklang.min.js +++ /dev/null @@ -1 +0,0 @@ -!function(e){var a="(?:(?!\\s)[\\d$+<=a-zA-Z\\x80-\\uFFFF])+",t="[^{}@#]+\\{[^}#@]*\\}";e.languages.cooklang={comment:{pattern:/\[-[\s\S]*?-\]|--.*/,greedy:!0},meta:{pattern:/>>.*:.*/,inside:{property:{pattern:/(>>\s*)[^\s:](?:[^:]*[^\s:])?/,lookbehind:!0}}},"cookware-group":{pattern:new RegExp("#(?:"+t+"|"+a+")"),inside:{cookware:{pattern:new RegExp("(^#)(?:[^{}@#]+)"),lookbehind:!0,alias:"variable"},"cookware-keyword":{pattern:/^#/,alias:"keyword"},"quantity-group":{pattern:new RegExp(/\{[^{}@#]*\}/),inside:{quantity:{pattern:new RegExp("(^\\{)[^{}@#]+"),lookbehind:!0,alias:"number"},punctuation:/[{}]/}}}},"ingredient-group":{pattern:new RegExp("@(?:"+t+"|"+a+")"),inside:{ingredient:{pattern:new RegExp("(^@)(?:[^{}@#]+)"),lookbehind:!0,alias:"variable"},"ingredient-keyword":{pattern:/^@/,alias:"keyword"},"amount-group":{pattern:/\{[^{}]*\}/,inside:{amount:{pattern:/([\{|])[^{}|*%]+/,lookbehind:!0,alias:"number"},unit:{pattern:/(%)[^}]+/,lookbehind:!0,alias:"symbol"},"servings-scaler":{pattern:/\*/,alias:"operator"},"servings-alternative-separator":{pattern:/\|/,alias:"operator"},"unit-separator":{pattern:/(?:%|(\*)%)/,lookbehind:!0,alias:"operator"},punctuation:/[{}]/}}}},"timer-group":{pattern:/~(?!\s)[^@#~{}]*\{[^{}]*\}/,inside:{timer:{pattern:/(^~)[^{]+/,lookbehind:!0,alias:"variable"},"duration-group":{pattern:/\{[^{}]*\}/,inside:{punctuation:/[{}]/,unit:{pattern:new RegExp("(%\\s*)(?:h|hours|hrs|m|min|minutes)\\b"),lookbehind:!0,alias:"symbol"},operator:/%/,duration:{pattern:/\d+/,alias:"number"}}},"timer-keyword":{pattern:/^~/,alias:"keyword"}}}}}(Prism); \ No newline at end of file diff --git a/components/prism-coq.js b/components/prism-coq.js deleted file mode 100644 index 663ed9a5fa..0000000000 --- a/components/prism-coq.js +++ /dev/null @@ -1,54 +0,0 @@ -(function (Prism) { - - // https://github.com/coq/coq - - var commentSource = /\(\*(?:[^(*]|\((?!\*)|\*(?!\))|)*\*\)/.source; - for (var i = 0; i < 2; i++) { - commentSource = commentSource.replace(//g, function () { return commentSource; }); - } - commentSource = commentSource.replace(//g, '[]'); - - Prism.languages.coq = { - 'comment': RegExp(commentSource), - 'string': { - pattern: /"(?:[^"]|"")*"(?!")/, - greedy: true - }, - 'attribute': [ - { - pattern: RegExp( - /#\[(?:[^\[\]("]|"(?:[^"]|"")*"(?!")|\((?!\*)|)*\]/.source - .replace(//g, function () { return commentSource; }) - ), - greedy: true, - alias: 'attr-name', - inside: { - 'comment': RegExp(commentSource), - 'string': { - pattern: /"(?:[^"]|"")*"(?!")/, - greedy: true - }, - - 'operator': /=/, - 'punctuation': /^#\[|\]$|[,()]/ - } - }, - { - pattern: /\b(?:Cumulative|Global|Local|Monomorphic|NonCumulative|Polymorphic|Private|Program)\b/, - alias: 'attr-name' - } - ], - - 'keyword': /\b(?:Abort|About|Add|Admit|Admitted|All|Arguments|As|Assumptions|Axiom|Axioms|Back|BackTo|Backtrace|BinOp|BinOpSpec|BinRel|Bind|Blacklist|Canonical|Case|Cd|Check|Class|Classes|Close|CoFixpoint|CoInductive|Coercion|Coercions|Collection|Combined|Compute|Conjecture|Conjectures|Constant|Constants|Constraint|Constructors|Context|Corollary|Create|CstOp|Custom|Cut|Debug|Declare|Defined|Definition|Delimit|Dependencies|Dependent|Derive|Diffs|Drop|Elimination|End|Entry|Equality|Eval|Example|Existential|Existentials|Existing|Export|Extern|Extraction|Fact|Fail|Field|File|Firstorder|Fixpoint|Flags|Focus|From|Funclass|Function|Functional|GC|Generalizable|Goal|Grab|Grammar|Graph|Guarded|Haskell|Heap|Hide|Hint|HintDb|Hints|Hypotheses|Hypothesis|IF|Identity|Immediate|Implicit|Implicits|Import|Include|Induction|Inductive|Infix|Info|Initial|InjTyp|Inline|Inspect|Instance|Instances|Intro|Intros|Inversion|Inversion_clear|JSON|Language|Left|Lemma|Let|Lia|Libraries|Library|Load|LoadPath|Locate|Ltac|Ltac2|ML|Match|Method|Minimality|Module|Modules|Morphism|Next|NoInline|Notation|Number|OCaml|Obligation|Obligations|Opaque|Open|Optimize|Parameter|Parameters|Parametric|Path|Paths|Prenex|Preterm|Primitive|Print|Profile|Projections|Proof|Prop|PropBinOp|PropOp|PropUOp|Property|Proposition|Pwd|Qed|Quit|Rec|Record|Recursive|Redirect|Reduction|Register|Relation|Remark|Remove|Require|Reserved|Reset|Resolve|Restart|Rewrite|Right|Ring|Rings|SProp|Saturate|Save|Scheme|Scope|Scopes|Search|SearchHead|SearchPattern|SearchRewrite|Section|Separate|Set|Setoid|Show|Signatures|Solve|Solver|Sort|Sortclass|Sorted|Spec|Step|Strategies|Strategy|String|Structure|SubClass|Subgraph|SuchThat|Tactic|Term|TestCompile|Theorem|Time|Timeout|To|Transparent|Type|Typeclasses|Types|Typing|UnOp|UnOpSpec|Undelimit|Undo|Unfocus|Unfocused|Unfold|Universe|Universes|Unshelve|Variable|Variables|Variant|Verbose|View|Visibility|Zify|_|apply|as|at|by|cofix|else|end|exists|exists2|fix|for|forall|fun|if|in|let|match|measure|move|removed|return|struct|then|using|wf|where|with)\b/, - - 'number': /\b(?:0x[a-f0-9][a-f0-9_]*(?:\.[a-f0-9_]+)?(?:p[+-]?\d[\d_]*)?|\d[\d_]*(?:\.[\d_]+)?(?:e[+-]?\d[\d_]*)?)\b/i, - - 'punct': { - pattern: /@\{|\{\||\[=|:>/, - alias: 'punctuation' - }, - 'operator': /\/\\|\\\/|\.{2,3}|:{1,2}=|\*\*|[-=]>|<(?:->?|[+:=>]|<:)|>(?:=|->)|\|[-|]?|[-!%&*+/<=>?@^~']/, - 'punctuation': /\.\(|`\(|@\{|`\{|\{\||\[=|:>|[:.,;(){}\[\]]/ - }; - -}(Prism)); diff --git a/components/prism-coq.min.js b/components/prism-coq.min.js deleted file mode 100644 index c14f0027ab..0000000000 --- a/components/prism-coq.min.js +++ /dev/null @@ -1 +0,0 @@ -!function(e){for(var t="\\(\\*(?:[^(*]|\\((?!\\*)|\\*(?!\\))|)*\\*\\)",i=0;i<2;i++)t=t.replace(//g,(function(){return t}));t=t.replace(//g,"[]"),e.languages.coq={comment:RegExp(t),string:{pattern:/"(?:[^"]|"")*"(?!")/,greedy:!0},attribute:[{pattern:RegExp('#\\[(?:[^\\[\\]("]|"(?:[^"]|"")*"(?!")|\\((?!\\*)|)*\\]'.replace(//g,(function(){return t}))),greedy:!0,alias:"attr-name",inside:{comment:RegExp(t),string:{pattern:/"(?:[^"]|"")*"(?!")/,greedy:!0},operator:/=/,punctuation:/^#\[|\]$|[,()]/}},{pattern:/\b(?:Cumulative|Global|Local|Monomorphic|NonCumulative|Polymorphic|Private|Program)\b/,alias:"attr-name"}],keyword:/\b(?:Abort|About|Add|Admit|Admitted|All|Arguments|As|Assumptions|Axiom|Axioms|Back|BackTo|Backtrace|BinOp|BinOpSpec|BinRel|Bind|Blacklist|Canonical|Case|Cd|Check|Class|Classes|Close|CoFixpoint|CoInductive|Coercion|Coercions|Collection|Combined|Compute|Conjecture|Conjectures|Constant|Constants|Constraint|Constructors|Context|Corollary|Create|CstOp|Custom|Cut|Debug|Declare|Defined|Definition|Delimit|Dependencies|Dependent|Derive|Diffs|Drop|Elimination|End|Entry|Equality|Eval|Example|Existential|Existentials|Existing|Export|Extern|Extraction|Fact|Fail|Field|File|Firstorder|Fixpoint|Flags|Focus|From|Funclass|Function|Functional|GC|Generalizable|Goal|Grab|Grammar|Graph|Guarded|Haskell|Heap|Hide|Hint|HintDb|Hints|Hypotheses|Hypothesis|IF|Identity|Immediate|Implicit|Implicits|Import|Include|Induction|Inductive|Infix|Info|Initial|InjTyp|Inline|Inspect|Instance|Instances|Intro|Intros|Inversion|Inversion_clear|JSON|Language|Left|Lemma|Let|Lia|Libraries|Library|Load|LoadPath|Locate|Ltac|Ltac2|ML|Match|Method|Minimality|Module|Modules|Morphism|Next|NoInline|Notation|Number|OCaml|Obligation|Obligations|Opaque|Open|Optimize|Parameter|Parameters|Parametric|Path|Paths|Prenex|Preterm|Primitive|Print|Profile|Projections|Proof|Prop|PropBinOp|PropOp|PropUOp|Property|Proposition|Pwd|Qed|Quit|Rec|Record|Recursive|Redirect|Reduction|Register|Relation|Remark|Remove|Require|Reserved|Reset|Resolve|Restart|Rewrite|Right|Ring|Rings|SProp|Saturate|Save|Scheme|Scope|Scopes|Search|SearchHead|SearchPattern|SearchRewrite|Section|Separate|Set|Setoid|Show|Signatures|Solve|Solver|Sort|Sortclass|Sorted|Spec|Step|Strategies|Strategy|String|Structure|SubClass|Subgraph|SuchThat|Tactic|Term|TestCompile|Theorem|Time|Timeout|To|Transparent|Type|Typeclasses|Types|Typing|UnOp|UnOpSpec|Undelimit|Undo|Unfocus|Unfocused|Unfold|Universe|Universes|Unshelve|Variable|Variables|Variant|Verbose|View|Visibility|Zify|_|apply|as|at|by|cofix|else|end|exists|exists2|fix|for|forall|fun|if|in|let|match|measure|move|removed|return|struct|then|using|wf|where|with)\b/,number:/\b(?:0x[a-f0-9][a-f0-9_]*(?:\.[a-f0-9_]+)?(?:p[+-]?\d[\d_]*)?|\d[\d_]*(?:\.[\d_]+)?(?:e[+-]?\d[\d_]*)?)\b/i,punct:{pattern:/@\{|\{\||\[=|:>/,alias:"punctuation"},operator:/\/\\|\\\/|\.{2,3}|:{1,2}=|\*\*|[-=]>|<(?:->?|[+:=>]|<:)|>(?:=|->)|\|[-|]?|[-!%&*+/<=>?@^~']/,punctuation:/\.\(|`\(|@\{|`\{|\{\||\[=|:>|[:.,;(){}\[\]]/}}(Prism); \ No newline at end of file diff --git a/components/prism-core.js b/components/prism-core.js deleted file mode 100644 index 1259f23e07..0000000000 --- a/components/prism-core.js +++ /dev/null @@ -1,1263 +0,0 @@ -/// - -var _self = (typeof window !== 'undefined') - ? window // if in browser - : ( - (typeof WorkerGlobalScope !== 'undefined' && self instanceof WorkerGlobalScope) - ? self // if in worker - : {} // if in node js - ); - -/** - * Prism: Lightweight, robust, elegant syntax highlighting - * - * @license MIT - * @author Lea Verou - * @namespace - * @public - */ -var Prism = (function (_self) { - - // Private helper vars - var lang = /(?:^|\s)lang(?:uage)?-([\w-]+)(?=\s|$)/i; - var uniqueId = 0; - - // The grammar object for plaintext - var plainTextGrammar = {}; - - - var _ = { - /** - * By default, Prism will attempt to highlight all code elements (by calling {@link Prism.highlightAll}) on the - * current page after the page finished loading. This might be a problem if e.g. you wanted to asynchronously load - * additional languages or plugins yourself. - * - * By setting this value to `true`, Prism will not automatically highlight all code elements on the page. - * - * You obviously have to change this value before the automatic highlighting started. To do this, you can add an - * empty Prism object into the global scope before loading the Prism script like this: - * - * ```js - * window.Prism = window.Prism || {}; - * Prism.manual = true; - * // add a new - - - - - - - - - - - - - - - - - -
- -

hooks

- - - - - - - -
- -
- -

- Prism. - - hooks -

- - -
- -
- -
- - - -
- - -
Source:
-
- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
- - - - - - - - -
- - - - - - - - - - - - - - - - - -

Methods

- - - - - - -

(static) add(name, callback)

- - - - - - -
- - -
Source:
-
- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
- - - - - -
-

Adds the given callback to the list of callbacks for the given hook.

-

The callback will be invoked when the hook it is registered for is run. -Hooks are usually directly run by a highlight function but you can also run hooks yourself.

-

One callback function can be registered to multiple hooks and the same hook multiple times.

-
- - - - - - - - - - - -
Parameters:
- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
NameTypeDescription
name - - -string - - - -

The name of the hook.

callback - - -HookCallback - - - -

The callback function which is given environment variables.

- - - - - - - - - - - - - - - - - - - - - - - - -

(static) run(name, env)

- - - - - - -
- - -
Source:
-
- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
- - - - - -
-

Runs a hook invoking all registered callbacks with the given environment variables.

-

Callbacks will be invoked synchronously and in the order in which they were registered.

-
- - - - - - - - - - - -
Parameters:
- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
NameTypeDescription
name - - -string - - - -

The name of the hook.

env - - -Object.<string, any> - - - -

The environment variables of the hook passed to all callbacks registered.

- - - - - - - - - - - - - - - - - - - - - - - - - -
- -
- - - - - - -
- -
- - - - - - - - - - - - - - - \ No newline at end of file diff --git a/docs/Prism.html b/docs/Prism.html deleted file mode 100644 index 0166af8a6c..0000000000 --- a/docs/Prism.html +++ /dev/null @@ -1,1460 +0,0 @@ - - - - - - Prism - Documentation - - - - - - - - - - - - - - - - - - - - - - - - - - -
- -

Prism

- - - - - - - -
- -
- -

- Prism -

- - -
- -
- -
- - - -
- - -
Source:
-
- - - - - - - - - - - - - - - - - - - -
Author:
-
-
    -
  • Lea Verou <https://lea.verou.me>
  • -
-
- - - - - -
License:
-
  • MIT
- - - - - - - - - -
- - - - - -

Prism: Lightweight, robust, elegant syntax highlighting

- - - - -
- - - - - - - - - - - - - -

Namespaces

- -
-
hooks
-
- -
languages
-
-
- - - -

Members

- - - -

(static) disableWorkerMessageHandler :boolean

- - - - - -
- - -
Source:
-
- - - - - - - - - - - - - - - - - - - - - - - - - -
Default Value:
-
    -
  • false
  • -
- - - - - - - -
- - - - - -
-

By default, if Prism is in a web worker, it assumes that it is in a worker it created itself, so it uses -addEventListener to communicate with its parent instance. However, if you're using Prism manually in your -own worker, you don't want it to do this.

-

By setting this value to true, Prism will not add its own listeners to the worker.

-

You obviously have to change this value before Prism executes. To do this, you can add an -empty Prism object into the global scope before loading the Prism script like this:

-
window.Prism = window.Prism || {};
-Prism.disableWorkerMessageHandler = true;
-// Load Prism's script
-
-
- - - -
Type:
-
    -
  • - -boolean - - -
  • -
- - - - - - - - -

(static) manual :boolean

- - - - - -
- - -
Source:
-
- - - - - - - - - - - - - - - - - - - - - - - - - -
Default Value:
-
    -
  • false
  • -
- - - - - - - -
- - - - - -
-

By default, Prism will attempt to highlight all code elements (by calling Prism.highlightAll) on the -current page after the page finished loading. This might be a problem if e.g. you wanted to asynchronously load -additional languages or plugins yourself.

-

By setting this value to true, Prism will not automatically highlight all code elements on the page.

-

You obviously have to change this value before the automatic highlighting started. To do this, you can add an -empty Prism object into the global scope before loading the Prism script like this:

-
window.Prism = window.Prism || {};
-Prism.manual = true;
-// add a new <script> to load Prism's script
-
-
- - - -
Type:
-
    -
  • - -boolean - - -
  • -
- - - - - - - - - - -

Methods

- - - - - - -

(static) highlight(text, grammar, language) → {string}

- - - - - - -
- - -
Source:
-
- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
- - - - - -
-

Low-level function, only use if you know what you’re doing. It accepts a string of text as input -and the language definitions to use, and returns a string with the HTML produced.

-

The following hooks will be run:

-
    -
  1. before-tokenize
  2. -
  3. after-tokenize
  4. -
  5. wrap: On each Token.
  6. -
-
- - - - - - - - - -
Example
- -
Prism.highlight('var foo = true;', Prism.languages.javascript, 'javascript');
- - - - -
Parameters:
- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
NameTypeDescription
text - - -string - - - -

A string with the code to be highlighted.

grammar - - -Grammar - - - -

An object containing the tokens to use.

-

Usually a language definition like Prism.languages.markup.

language - - -string - - - -

The name of the language definition passed to grammar.

- - - - - - - - - - - - - - - - -
Returns:
- - -
-

The highlighted HTML.

-
- - - -
-
- Type -
-
- -string - - -
-
- - - - - - - - - - -

(static) highlightAll(asyncopt, callbackopt)

- - - - - - -
- - -
Source:
-
- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
- - - - - -
-

This is the most high-level function in Prism’s API. -It fetches all the elements that have a .language-xxxx class and then calls Prism.highlightElement on -each one of them.

-

This is equivalent to Prism.highlightAllUnder(document, async, callback).

-
- - - - - - - - - - - -
Parameters:
- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
NameTypeAttributesDefaultDescription
async - - -boolean - - - - - - <optional>
- - - - - -
- - false - -

Same as in Prism.highlightAllUnder.

callback - - -HighlightCallback - - - - - - <optional>
- - - - - -
- -

Same as in Prism.highlightAllUnder.

- - - - - - - - - - - - - - - - - - - - - - - - -

(static) highlightAllUnder(container, asyncopt, callbackopt)

- - - - - - -
- - -
Source:
-
- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
- - - - - -
-

Fetches all the descendants of container that have a .language-xxxx class and then calls -Prism.highlightElement on each one of them.

-

The following hooks will be run:

-
    -
  1. before-highlightall
  2. -
  3. before-all-elements-highlight
  4. -
  5. All hooks of Prism.highlightElement for each element.
  6. -
-
- - - - - - - - - - - -
Parameters:
- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
NameTypeAttributesDefaultDescription
container - - -ParentNode - - - - - - - - - - - -

The root element, whose descendants that have a .language-xxxx class will be highlighted.

async - - -boolean - - - - - - <optional>
- - - - - -
- - false - -

Whether each element is to be highlighted asynchronously using Web Workers.

callback - - -HighlightCallback - - - - - - <optional>
- - - - - -
- -

An optional callback to be invoked on each element after its highlighting is done.

- - - - - - - - - - - - - - - - - - - - - - - - -

(static) highlightElement(element, asyncopt, callbackopt)

- - - - - - -
- - -
Source:
-
- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
- - - - - -
-

Highlights the code inside a single element.

-

The following hooks will be run:

-
    -
  1. before-sanity-check
  2. -
  3. before-highlight
  4. -
  5. All hooks of Prism.highlight. These hooks will be run by an asynchronous worker if async is true.
  6. -
  7. before-insert
  8. -
  9. after-highlight
  10. -
  11. complete
  12. -
-

Some the above hooks will be skipped if the element doesn't contain any text or there is no grammar loaded for -the element's language.

-
- - - - - - - - - - - -
Parameters:
- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
NameTypeAttributesDefaultDescription
element - - -Element - - - - - - - - - - - -

The element containing the code. -It must have a class of language-xxxx to be processed, where xxxx is a valid language identifier.

async - - -boolean - - - - - - <optional>
- - - - - -
- - false - -

Whether the element is to be highlighted asynchronously using Web Workers -to improve performance and avoid blocking the UI when highlighting very large chunks of code. This option is -disabled by default.

-

Note: All language definitions required to highlight the code must be included in the main prism.js file for -asynchronous highlighting to work. You can build your own bundle on the -Download page.

callback - - -HighlightCallback - - - - - - <optional>
- - - - - -
- -

An optional callback to be invoked after the highlighting is done. -Mostly useful when async is true, since in that case, the highlighting is done asynchronously.

- - - - - - - - - - - - - - - - - - - - - - - - -

(static) tokenize(text, grammar) → {TokenStream}

- - - - - - -
- - -
Source:
-
- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
- - - - - -
-

This is the heart of Prism, and the most low-level function you can use. It accepts a string of text as input -and the language definitions to use, and returns an array with the tokenized code.

-

When the language definition includes nested tokens, the function is called recursively on each of these tokens.

-

This method could be useful in other contexts as well, as a very crude parser.

-
- - - - - - - - - -
Example
- -
let code = `var foo = 0;`;
-let tokens = Prism.tokenize(code, Prism.languages.javascript);
-tokens.forEach(token => {
-    if (token instanceof Prism.Token && token.type === 'number') {
-        console.log(`Found numeric literal: ${token.content}`);
-    }
-});
- - - - -
Parameters:
- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
NameTypeDescription
text - - -string - - - -

A string with the code to be highlighted.

grammar - - -Grammar - - - -

An object containing the tokens to use.

-

Usually a language definition like Prism.languages.markup.

- - - - - - - - - - - - - - - - -
Returns:
- - -
-

An array of strings and tokens, a token stream.

-
- - - -
-
- Type -
-
- -TokenStream - - -
-
- - - - - - - - - - - -
- -
- - - - - - -
- -
- - - - - - - - - - - - - - - \ No newline at end of file diff --git a/docs/Prism.languages.html b/docs/Prism.languages.html deleted file mode 100644 index 757c037088..0000000000 --- a/docs/Prism.languages.html +++ /dev/null @@ -1,683 +0,0 @@ - - - - - - languages - Documentation - - - - - - - - - - - - - - - - - - - - - - - - - - -
- -

languages

- - - - - - - -
- -
- -

- Prism. - - languages -

- - -
- -
- -
- - - -
- - -
Source:
-
- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
- - - - - -

This namespace contains all currently loaded languages and the some helper functions to create and modify languages.

- - - - -
- - - - - - - - - - - - - - - - - -

Methods

- - - - - - -

(static) extend(id, redef) → {Grammar}

- - - - - - -
- - -
Source:
-
- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
- - - - - -
-

Creates a deep copy of the language with the given id and appends the given tokens.

-

If a token in redef also appears in the copied language, then the existing token in the copied language -will be overwritten at its original position.

-

Best practices

-

Since the position of overwriting tokens (token in redef that overwrite tokens in the copied language) -doesn't matter, they can technically be in any order. However, this can be confusing to others that trying to -understand the language definition because, normally, the order of tokens matters in Prism grammars.

-

Therefore, it is encouraged to order overwriting tokens according to the positions of the overwritten tokens. -Furthermore, all non-overwriting tokens should be placed after the overwriting ones.

-
- - - - - - - - - -
Example
- -
Prism.languages['css-with-colors'] = Prism.languages.extend('css', {
-    // Prism.languages.css already has a 'comment' token, so this token will overwrite CSS' 'comment' token
-    // at its original position
-    'comment': { ... },
-    // CSS doesn't have a 'color' token, so this token will be appended
-    'color': /\b(?:red|green|blue)\b/
-});
- - - - -
Parameters:
- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
NameTypeDescription
id - - -string - - - -

The id of the language to extend. This has to be a key in Prism.languages.

redef - - -Grammar - - - -

The new tokens to append.

- - - - - - - - - - - - - - - - -
Returns:
- - -
-

The new language created.

-
- - - -
-
- Type -
-
- -Grammar - - -
-
- - - - - - - - - - -

(static) insertBefore(inside, before, insert, rootopt) → {Grammar}

- - - - - - -
- - -
Source:
-
- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
- - - - - -
-

Inserts tokens before another token in a language definition or any other grammar.

-

Usage

-

This helper method makes it easy to modify existing languages. For example, the CSS language definition -not only defines CSS highlighting for CSS documents, but also needs to define highlighting for CSS embedded -in HTML through <style> elements. To do this, it needs to modify Prism.languages.markup and add the -appropriate tokens. However, Prism.languages.markup is a regular JavaScript object literal, so if you do -this:

-
Prism.languages.markup.style = {
-    // token
-};
-
-

then the style token will be added (and processed) at the end. insertBefore allows you to insert tokens -before existing tokens. For the CSS example above, you would use it like this:

-
Prism.languages.insertBefore('markup', 'cdata', {
-    'style': {
-        // token
-    }
-});
-
-

Special cases

-

If the grammars of inside and insert have tokens with the same name, the tokens in inside's grammar -will be ignored.

-

This behavior can be used to insert tokens after before:

-
Prism.languages.insertBefore('markup', 'comment', {
-    'comment': Prism.languages.markup.comment,
-    // tokens after 'comment'
-});
-
-

Limitations

-

The main problem insertBefore has to solve is iteration order. Since ES2015, the iteration order for object -properties is guaranteed to be the insertion order (except for integer keys) but some browsers behave -differently when keys are deleted and re-inserted. So insertBefore can't be implemented by temporarily -deleting properties which is necessary to insert at arbitrary positions.

-

To solve this problem, insertBefore doesn't actually insert the given tokens into the target object. -Instead, it will create a new object and replace all references to the target object with the new one. This -can be done without temporarily deleting properties, so the iteration order is well-defined.

-

However, only references that can be reached from Prism.languages or insert will be replaced. I.e. if -you hold the target object in a variable, then the value of the variable will not change.

-
var oldMarkup = Prism.languages.markup;
-var newMarkup = Prism.languages.insertBefore('markup', 'comment', { ... });
-
-assert(oldMarkup !== Prism.languages.markup);
-assert(newMarkup === Prism.languages.markup);
-
-
- - - - - - - - - - - -
Parameters:
- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
NameTypeAttributesDescription
inside - - -string - - - - - - - - - -

The property of root (e.g. a language id in Prism.languages) that contains the -object to be modified.

before - - -string - - - - - - - - - -

The key to insert before.

insert - - -Grammar - - - - - - - - - -

An object containing the key-value pairs to be inserted.

root - - -Object.<string, any> - - - - - - <optional>
- - - - - -

The object containing inside, i.e. the object that contains the -object to be modified.

-

Defaults to Prism.languages.

- - - - - - - - - - - - - - - - -
Returns:
- - -
-

The new grammar object.

-
- - - -
-
- Type -
-
- -Grammar - - -
-
- - - - - - - - - - - -
- -
- - - - - - -
- -
- - - - - - - - - - - - - - - \ No newline at end of file diff --git a/docs/Token.html b/docs/Token.html deleted file mode 100644 index d7a9031a43..0000000000 --- a/docs/Token.html +++ /dev/null @@ -1,631 +0,0 @@ - - - - - - Token - Documentation - - - - - - - - - - - - - - - - - - - - - - - - - - -
- -

Token

- - - - - - - -
- -
- -

- Token -

- - -
- -
- -
- - - - - -

new Token(type, content, aliasopt, matchedStropt)

- - - - - - -
- - -
Source:
-
- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
- - - - - -
-

Creates a new token.

-
- - - - - - - - - - - -
Parameters:
- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
NameTypeAttributesDefaultDescription
type - - -string - - - - - - - - - - - -

See type

content - - -string -| - -TokenStream - - - - - - - - - - - -

See content

alias - - -string -| - -Array.<string> - - - - - - <optional>
- - - - - -
- -

The alias(es) of the token.

matchedStr - - -string - - - - - - <optional>
- - - - - -
- - "" - -

A copy of the full string this token was created from.

- - - - - - - - - - - - - - - - - - - - -
- - - - - - - - - - - - - - - -

Members

- - - -

alias :string|Array.<string>

- - - - - -
- - -
Source:
-
- - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
See:
-
- -
- - - -
- - - - - -
-

The alias(es) of the token.

-
- - - -
Type:
-
    -
  • - -string -| - -Array.<string> - - -
  • -
- - - - - - - - -

content :string|TokenStream

- - - - - -
- - -
Source:
-
- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
- - - - - -
-

The strings or tokens contained by this token.

-

This will be a token stream if the pattern matched also defined an inside grammar.

-
- - - -
Type:
- - - - - - - - - -

type :string

- - - - - -
- - -
Source:
-
- - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
See:
-
- -
- - - -
- - - - - -
-

The type of the token.

-

This is usually the key of a pattern in a Grammar.

-
- - - -
Type:
-
    -
  • - -string - - -
  • -
- - - - - - - - - - - - - - -
- -
- - - - - - -
- -
- - - - - - - - - - - - - - - \ No newline at end of file diff --git a/docs/fonts/Montserrat/Montserrat-Bold.eot b/docs/fonts/Montserrat/Montserrat-Bold.eot deleted file mode 100644 index f2970bbdc7..0000000000 Binary files a/docs/fonts/Montserrat/Montserrat-Bold.eot and /dev/null differ diff --git a/docs/fonts/Montserrat/Montserrat-Bold.ttf b/docs/fonts/Montserrat/Montserrat-Bold.ttf deleted file mode 100644 index 3bfd79b66f..0000000000 Binary files a/docs/fonts/Montserrat/Montserrat-Bold.ttf and /dev/null differ diff --git a/docs/fonts/Montserrat/Montserrat-Bold.woff b/docs/fonts/Montserrat/Montserrat-Bold.woff deleted file mode 100644 index 92607654b7..0000000000 Binary files a/docs/fonts/Montserrat/Montserrat-Bold.woff and /dev/null differ diff --git a/docs/fonts/Montserrat/Montserrat-Bold.woff2 b/docs/fonts/Montserrat/Montserrat-Bold.woff2 deleted file mode 100644 index d9940cd116..0000000000 Binary files a/docs/fonts/Montserrat/Montserrat-Bold.woff2 and /dev/null differ diff --git a/docs/fonts/Montserrat/Montserrat-Regular.eot b/docs/fonts/Montserrat/Montserrat-Regular.eot deleted file mode 100644 index 735d12b51e..0000000000 Binary files a/docs/fonts/Montserrat/Montserrat-Regular.eot and /dev/null differ diff --git a/docs/fonts/Montserrat/Montserrat-Regular.ttf b/docs/fonts/Montserrat/Montserrat-Regular.ttf deleted file mode 100644 index 5da852a349..0000000000 Binary files a/docs/fonts/Montserrat/Montserrat-Regular.ttf and /dev/null differ diff --git a/docs/fonts/Montserrat/Montserrat-Regular.woff b/docs/fonts/Montserrat/Montserrat-Regular.woff deleted file mode 100644 index bf9183271b..0000000000 Binary files a/docs/fonts/Montserrat/Montserrat-Regular.woff and /dev/null differ diff --git a/docs/fonts/Montserrat/Montserrat-Regular.woff2 b/docs/fonts/Montserrat/Montserrat-Regular.woff2 deleted file mode 100644 index 72d13c60bd..0000000000 Binary files a/docs/fonts/Montserrat/Montserrat-Regular.woff2 and /dev/null differ diff --git a/docs/global.html b/docs/global.html deleted file mode 100644 index f3217a1f99..0000000000 --- a/docs/global.html +++ /dev/null @@ -1,965 +0,0 @@ - - - - - - Global - Documentation - - - - - - - - - - - - - - - - - - - - - - - - - - -
- -

Global

- - - - - - - -
- -
- -

- -

- - -
- -
- -
- - - -
- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
- - - - - - - - -
- - - - - - - - - - - - - - - - - - - -

Type Definitions

- - - -

Grammar

- - - - - -
- - -
Source:
-
- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
- - - -
Properties:
- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
NameTypeAttributesDescription
rest - - -Grammar - - - - - - <optional>
- - - -

An optional grammar object that will be appended to this grammar.

- - - - - - - - -
Type:
- - - - - - - - - -

GrammarToken

- - - - - -
- - -
Source:
-
- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
- - - -
Properties:
- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
NameTypeAttributesDefaultDescription
pattern - - -RegExp - - - - - - - - - -

The regular expression of the token.

lookbehind - - -boolean - - - - - - <optional>
- - - -
- - false - -

If true, then the first capturing group of pattern will (effectively) -behave as a lookbehind group meaning that the captured text will not be part of the matched text of the new token.

greedy - - -boolean - - - - - - <optional>
- - - -
- - false - -

Whether the token is greedy.

alias - - -string -| - -Array.<string> - - - - - - <optional>
- - - -
- -

An optional alias or list of aliases.

inside - - -Grammar - - - - - - <optional>
- - - -
- -

The nested grammar of this token.

-

The inside grammar will be used to tokenize the text value of each token of this kind.

-

This can be used to make nested and even recursive language definitions.

-

Note: This can cause infinite recursion. Be careful when you embed different languages or even the same language into -each another.

- - - - - - -
-

The expansion of a simple RegExp literal to support additional properties.

-
- - - - - - - - - - - - - -

HighlightCallback(element) → {void}

- - - - - - -
- - -
Source:
-
- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
- - - - - -
-

A function which will invoked after an element was successfully highlighted.

-
- - - - - - - - - - - -
Parameters:
- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
NameTypeDescription
element - - -Element - - - -

The element successfully highlighted.

- - - - - - - - - - - - - - - - -
Returns:
- - - - -
-
- Type -
-
- -void - - -
-
- - - - - - - - - - -

HookCallback(env) → {void}

- - - - - - -
- - -
Source:
-
- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
- - - - - - - - - - - - - - - -
Parameters:
- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
NameTypeDescription
env - - -Object.<string, any> - - - -

The environment variables of the hook.

- - - - - - - - - - - - - - - - -
Returns:
- - - - -
-
- Type -
-
- -void - - -
-
- - - - - - - -

TokenStream

- - - - - -
- - -
Source:
-
- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
- - - - - -
-

A token stream is an array of strings and Token objects.

-

Token streams have to fulfill a few properties that are assumed by most functions (mostly internal ones) that process -them.

-
    -
  1. -

    No adjacent strings.

    -
  2. -
  3. -

    No empty strings.

    -

    The only exception here is the token stream that only contains the empty string and nothing else.

    -
  4. -
-
- - - -
Type:
-
    -
  • - -Array.<(string|Token)> - - -
  • -
- - - - - - - - - - -
- -
- - - - - - -
- -
- - - - - - - - - - - - - - - \ No newline at end of file diff --git a/docs/index.html b/docs/index.html deleted file mode 100644 index e6a62bcfa1..0000000000 --- a/docs/index.html +++ /dev/null @@ -1,120 +0,0 @@ - - - - - - Home - Documentation - - - - - - - - - - - - - - - - - - - - - - - - - - -
- - - - - - - - - - -
-

Prism

-

Build Status -npm

-

Prism is a lightweight, robust, and elegant syntax highlighting library. It's a spin-off project from Dabblet.

-

You can learn more on prismjs.com.

-

Why another syntax highlighter?

-

More themes for Prism!

-

Contribute to Prism!

-

Important Notice

-

We are currently working on Prism v2 and will only accept security-relevant PRs for the time being.

-

Once work on Prism v2 is sufficiently advanced, we will accept PRs again. This will be announced on our Discussion page and mentioned in the roadmap discussion.

-
-Prism v1 contributing notes -

Prism depends on community contributions to expand and cover a wider array of use cases. If you like it, consider giving back by sending a pull request. Here are a few tips:

-
    -
  • Read the documentation. Prism was designed to be extensible.
  • -
  • Do not edit prism.js, it’s just the version of Prism used by the Prism website and is built automatically. Limit your changes to the unminified files in the components/ folder. prism.js and all minified files are generated by our build system (see below).
  • -
  • Use npm ci to install Prism's dependencies. Do not use npm install because it will cause non-deterministic builds.
  • -
  • The build system uses gulp to minify the files and build prism.js. With all of Prism's dependencies installed, you just need to run the command npm run build.
  • -
  • Please follow the code conventions used in the files already. For example, I use tabs for indentation and spaces for alignment. Opening braces are on the same line, closing braces on their own line regardless of construct. There is a space before the opening brace. etc etc.
  • -
  • Please try to err towards more smaller PRs rather than a few huge PRs. If a PR includes changes that I want to merge and also changes that I don't, handling it becomes difficult.
  • -
  • My time is very limited these days, so it might take a long time to review bigger PRs (small ones are usually merged very quickly), especially those modifying the Prism Core. This doesn't mean your PR is rejected.
  • -
  • If you contribute a new language definition, you will be responsible for handling bug reports about that language definition.
  • -
  • If you add a new language definition or plugin, you need to add it to components.json as well and rebuild Prism by running npm run build, so that it becomes available to the download build page. For new languages, please also add a few tests and an example in the examples/ folder.
  • -
  • Go to prism-themes if you want to add a new theme.
  • -
-

Thank you so much for contributing!!

-

Software requirements

-

Prism will run on almost any browser and Node.js version but you need the following software to contribute:

-
    -
  • Node.js >= 10.x
  • -
  • npm >= 6.x
  • -
-
-

Translations

-
-
- - - - - - - - -
- -
- - - - - - - - - - - - - - - \ No newline at end of file diff --git a/docs/prism-core.js.html b/docs/prism-core.js.html deleted file mode 100644 index 764ea60ca7..0000000000 --- a/docs/prism-core.js.html +++ /dev/null @@ -1,1345 +0,0 @@ - - - - - - prism-core.js - Documentation - - - - - - - - - - - - - - - - - - - - - - - - - - -
- -

prism-core.js

- - - - - - - -
-
-
/// <reference lib="WebWorker"/>
-
-var _self = (typeof window !== 'undefined')
-	? window   // if in browser
-	: (
-		(typeof WorkerGlobalScope !== 'undefined' && self instanceof WorkerGlobalScope)
-			? self // if in worker
-			: {}   // if in node js
-	);
-
-/**
- * Prism: Lightweight, robust, elegant syntax highlighting
- *
- * @license MIT <https://opensource.org/licenses/MIT>
- * @author Lea Verou <https://lea.verou.me>
- * @namespace
- * @public
- */
-var Prism = (function (_self) {
-
-	// Private helper vars
-	var lang = /(?:^|\s)lang(?:uage)?-([\w-]+)(?=\s|$)/i;
-	var uniqueId = 0;
-
-	// The grammar object for plaintext
-	var plainTextGrammar = {};
-
-
-	var _ = {
-		/**
-		 * By default, Prism will attempt to highlight all code elements (by calling {@link Prism.highlightAll}) on the
-		 * current page after the page finished loading. This might be a problem if e.g. you wanted to asynchronously load
-		 * additional languages or plugins yourself.
-		 *
-		 * By setting this value to `true`, Prism will not automatically highlight all code elements on the page.
-		 *
-		 * You obviously have to change this value before the automatic highlighting started. To do this, you can add an
-		 * empty Prism object into the global scope before loading the Prism script like this:
-		 *
-		 * ```js
-		 * window.Prism = window.Prism || {};
-		 * Prism.manual = true;
-		 * // add a new <script> to load Prism's script
-		 * ```
-		 *
-		 * @default false
-		 * @type {boolean}
-		 * @memberof Prism
-		 * @public
-		 */
-		manual: _self.Prism && _self.Prism.manual,
-		/**
-		 * By default, if Prism is in a web worker, it assumes that it is in a worker it created itself, so it uses
-		 * `addEventListener` to communicate with its parent instance. However, if you're using Prism manually in your
-		 * own worker, you don't want it to do this.
-		 *
-		 * By setting this value to `true`, Prism will not add its own listeners to the worker.
-		 *
-		 * You obviously have to change this value before Prism executes. To do this, you can add an
-		 * empty Prism object into the global scope before loading the Prism script like this:
-		 *
-		 * ```js
-		 * window.Prism = window.Prism || {};
-		 * Prism.disableWorkerMessageHandler = true;
-		 * // Load Prism's script
-		 * ```
-		 *
-		 * @default false
-		 * @type {boolean}
-		 * @memberof Prism
-		 * @public
-		 */
-		disableWorkerMessageHandler: _self.Prism && _self.Prism.disableWorkerMessageHandler,
-
-		/**
-		 * A namespace for utility methods.
-		 *
-		 * All function in this namespace that are not explicitly marked as _public_ are for __internal use only__ and may
-		 * change or disappear at any time.
-		 *
-		 * @namespace
-		 * @memberof Prism
-		 */
-		util: {
-			encode: function encode(tokens) {
-				if (tokens instanceof Token) {
-					return new Token(tokens.type, encode(tokens.content), tokens.alias);
-				} else if (Array.isArray(tokens)) {
-					return tokens.map(encode);
-				} else {
-					return tokens.replace(/&/g, '&amp;').replace(/</g, '&lt;').replace(/\u00a0/g, ' ');
-				}
-			},
-
-			/**
-			 * Returns the name of the type of the given value.
-			 *
-			 * @param {any} o
-			 * @returns {string}
-			 * @example
-			 * type(null)      === 'Null'
-			 * type(undefined) === 'Undefined'
-			 * type(123)       === 'Number'
-			 * type('foo')     === 'String'
-			 * type(true)      === 'Boolean'
-			 * type([1, 2])    === 'Array'
-			 * type({})        === 'Object'
-			 * type(String)    === 'Function'
-			 * type(/abc+/)    === 'RegExp'
-			 */
-			type: function (o) {
-				return Object.prototype.toString.call(o).slice(8, -1);
-			},
-
-			/**
-			 * Returns a unique number for the given object. Later calls will still return the same number.
-			 *
-			 * @param {Object} obj
-			 * @returns {number}
-			 */
-			objId: function (obj) {
-				if (!obj['__id']) {
-					Object.defineProperty(obj, '__id', { value: ++uniqueId });
-				}
-				return obj['__id'];
-			},
-
-			/**
-			 * Creates a deep clone of the given object.
-			 *
-			 * The main intended use of this function is to clone language definitions.
-			 *
-			 * @param {T} o
-			 * @param {Record<number, any>} [visited]
-			 * @returns {T}
-			 * @template T
-			 */
-			clone: function deepClone(o, visited) {
-				visited = visited || {};
-
-				var clone; var id;
-				switch (_.util.type(o)) {
-					case 'Object':
-						id = _.util.objId(o);
-						if (visited[id]) {
-							return visited[id];
-						}
-						clone = /** @type {Record<string, any>} */ ({});
-						visited[id] = clone;
-
-						for (var key in o) {
-							if (o.hasOwnProperty(key)) {
-								clone[key] = deepClone(o[key], visited);
-							}
-						}
-
-						return /** @type {any} */ (clone);
-
-					case 'Array':
-						id = _.util.objId(o);
-						if (visited[id]) {
-							return visited[id];
-						}
-						clone = [];
-						visited[id] = clone;
-
-						(/** @type {Array} */(/** @type {any} */(o))).forEach(function (v, i) {
-							clone[i] = deepClone(v, visited);
-						});
-
-						return /** @type {any} */ (clone);
-
-					default:
-						return o;
-				}
-			},
-
-			/**
-			 * Returns the Prism language of the given element set by a `language-xxxx` or `lang-xxxx` class.
-			 *
-			 * If no language is set for the element or the element is `null` or `undefined`, `none` will be returned.
-			 *
-			 * @param {Element} element
-			 * @returns {string}
-			 */
-			getLanguage: function (element) {
-				while (element) {
-					var m = lang.exec(element.className);
-					if (m) {
-						return m[1].toLowerCase();
-					}
-					element = element.parentElement;
-				}
-				return 'none';
-			},
-
-			/**
-			 * Sets the Prism `language-xxxx` class of the given element.
-			 *
-			 * @param {Element} element
-			 * @param {string} language
-			 * @returns {void}
-			 */
-			setLanguage: function (element, language) {
-				// remove all `language-xxxx` classes
-				// (this might leave behind a leading space)
-				element.className = element.className.replace(RegExp(lang, 'gi'), '');
-
-				// add the new `language-xxxx` class
-				// (using `classList` will automatically clean up spaces for us)
-				element.classList.add('language-' + language);
-			},
-
-			/**
-			 * Returns the script element that is currently executing.
-			 *
-			 * This does __not__ work for line script element.
-			 *
-			 * @returns {HTMLScriptElement | null}
-			 */
-			currentScript: function () {
-				if (typeof document === 'undefined') {
-					return null;
-				}
-				if ('currentScript' in document && 1 < 2 /* hack to trip TS' flow analysis */) {
-					return /** @type {any} */ (document.currentScript);
-				}
-
-				// IE11 workaround
-				// we'll get the src of the current script by parsing IE11's error stack trace
-				// this will not work for inline scripts
-
-				try {
-					throw new Error();
-				} catch (err) {
-					// Get file src url from stack. Specifically works with the format of stack traces in IE.
-					// A stack will look like this:
-					//
-					// Error
-					//    at _.util.currentScript (http://localhost/components/prism-core.js:119:5)
-					//    at Global code (http://localhost/components/prism-core.js:606:1)
-
-					var src = (/at [^(\r\n]*\((.*):[^:]+:[^:]+\)$/i.exec(err.stack) || [])[1];
-					if (src) {
-						var scripts = document.getElementsByTagName('script');
-						for (var i in scripts) {
-							if (scripts[i].src == src) {
-								return scripts[i];
-							}
-						}
-					}
-					return null;
-				}
-			},
-
-			/**
-			 * Returns whether a given class is active for `element`.
-			 *
-			 * The class can be activated if `element` or one of its ancestors has the given class and it can be deactivated
-			 * if `element` or one of its ancestors has the negated version of the given class. The _negated version_ of the
-			 * given class is just the given class with a `no-` prefix.
-			 *
-			 * Whether the class is active is determined by the closest ancestor of `element` (where `element` itself is
-			 * closest ancestor) that has the given class or the negated version of it. If neither `element` nor any of its
-			 * ancestors have the given class or the negated version of it, then the default activation will be returned.
-			 *
-			 * In the paradoxical situation where the closest ancestor contains __both__ the given class and the negated
-			 * version of it, the class is considered active.
-			 *
-			 * @param {Element} element
-			 * @param {string} className
-			 * @param {boolean} [defaultActivation=false]
-			 * @returns {boolean}
-			 */
-			isActive: function (element, className, defaultActivation) {
-				var no = 'no-' + className;
-
-				while (element) {
-					var classList = element.classList;
-					if (classList.contains(className)) {
-						return true;
-					}
-					if (classList.contains(no)) {
-						return false;
-					}
-					element = element.parentElement;
-				}
-				return !!defaultActivation;
-			}
-		},
-
-		/**
-		 * This namespace contains all currently loaded languages and the some helper functions to create and modify languages.
-		 *
-		 * @namespace
-		 * @memberof Prism
-		 * @public
-		 */
-		languages: {
-			/**
-			 * The grammar for plain, unformatted text.
-			 */
-			plain: plainTextGrammar,
-			plaintext: plainTextGrammar,
-			text: plainTextGrammar,
-			txt: plainTextGrammar,
-
-			/**
-			 * Creates a deep copy of the language with the given id and appends the given tokens.
-			 *
-			 * If a token in `redef` also appears in the copied language, then the existing token in the copied language
-			 * will be overwritten at its original position.
-			 *
-			 * ## Best practices
-			 *
-			 * Since the position of overwriting tokens (token in `redef` that overwrite tokens in the copied language)
-			 * doesn't matter, they can technically be in any order. However, this can be confusing to others that trying to
-			 * understand the language definition because, normally, the order of tokens matters in Prism grammars.
-			 *
-			 * Therefore, it is encouraged to order overwriting tokens according to the positions of the overwritten tokens.
-			 * Furthermore, all non-overwriting tokens should be placed after the overwriting ones.
-			 *
-			 * @param {string} id The id of the language to extend. This has to be a key in `Prism.languages`.
-			 * @param {Grammar} redef The new tokens to append.
-			 * @returns {Grammar} The new language created.
-			 * @public
-			 * @example
-			 * Prism.languages['css-with-colors'] = Prism.languages.extend('css', {
-			 *     // Prism.languages.css already has a 'comment' token, so this token will overwrite CSS' 'comment' token
-			 *     // at its original position
-			 *     'comment': { ... },
-			 *     // CSS doesn't have a 'color' token, so this token will be appended
-			 *     'color': /\b(?:red|green|blue)\b/
-			 * });
-			 */
-			extend: function (id, redef) {
-				var lang = _.util.clone(_.languages[id]);
-
-				for (var key in redef) {
-					lang[key] = redef[key];
-				}
-
-				return lang;
-			},
-
-			/**
-			 * Inserts tokens _before_ another token in a language definition or any other grammar.
-			 *
-			 * ## Usage
-			 *
-			 * This helper method makes it easy to modify existing languages. For example, the CSS language definition
-			 * not only defines CSS highlighting for CSS documents, but also needs to define highlighting for CSS embedded
-			 * in HTML through `<style>` elements. To do this, it needs to modify `Prism.languages.markup` and add the
-			 * appropriate tokens. However, `Prism.languages.markup` is a regular JavaScript object literal, so if you do
-			 * this:
-			 *
-			 * ```js
-			 * Prism.languages.markup.style = {
-			 *     // token
-			 * };
-			 * ```
-			 *
-			 * then the `style` token will be added (and processed) at the end. `insertBefore` allows you to insert tokens
-			 * before existing tokens. For the CSS example above, you would use it like this:
-			 *
-			 * ```js
-			 * Prism.languages.insertBefore('markup', 'cdata', {
-			 *     'style': {
-			 *         // token
-			 *     }
-			 * });
-			 * ```
-			 *
-			 * ## Special cases
-			 *
-			 * If the grammars of `inside` and `insert` have tokens with the same name, the tokens in `inside`'s grammar
-			 * will be ignored.
-			 *
-			 * This behavior can be used to insert tokens after `before`:
-			 *
-			 * ```js
-			 * Prism.languages.insertBefore('markup', 'comment', {
-			 *     'comment': Prism.languages.markup.comment,
-			 *     // tokens after 'comment'
-			 * });
-			 * ```
-			 *
-			 * ## Limitations
-			 *
-			 * The main problem `insertBefore` has to solve is iteration order. Since ES2015, the iteration order for object
-			 * properties is guaranteed to be the insertion order (except for integer keys) but some browsers behave
-			 * differently when keys are deleted and re-inserted. So `insertBefore` can't be implemented by temporarily
-			 * deleting properties which is necessary to insert at arbitrary positions.
-			 *
-			 * To solve this problem, `insertBefore` doesn't actually insert the given tokens into the target object.
-			 * Instead, it will create a new object and replace all references to the target object with the new one. This
-			 * can be done without temporarily deleting properties, so the iteration order is well-defined.
-			 *
-			 * However, only references that can be reached from `Prism.languages` or `insert` will be replaced. I.e. if
-			 * you hold the target object in a variable, then the value of the variable will not change.
-			 *
-			 * ```js
-			 * var oldMarkup = Prism.languages.markup;
-			 * var newMarkup = Prism.languages.insertBefore('markup', 'comment', { ... });
-			 *
-			 * assert(oldMarkup !== Prism.languages.markup);
-			 * assert(newMarkup === Prism.languages.markup);
-			 * ```
-			 *
-			 * @param {string} inside The property of `root` (e.g. a language id in `Prism.languages`) that contains the
-			 * object to be modified.
-			 * @param {string} before The key to insert before.
-			 * @param {Grammar} insert An object containing the key-value pairs to be inserted.
-			 * @param {Object<string, any>} [root] The object containing `inside`, i.e. the object that contains the
-			 * object to be modified.
-			 *
-			 * Defaults to `Prism.languages`.
-			 * @returns {Grammar} The new grammar object.
-			 * @public
-			 */
-			insertBefore: function (inside, before, insert, root) {
-				root = root || /** @type {any} */ (_.languages);
-				var grammar = root[inside];
-				/** @type {Grammar} */
-				var ret = {};
-
-				for (var token in grammar) {
-					if (grammar.hasOwnProperty(token)) {
-
-						if (token == before) {
-							for (var newToken in insert) {
-								if (insert.hasOwnProperty(newToken)) {
-									ret[newToken] = insert[newToken];
-								}
-							}
-						}
-
-						// Do not insert token which also occur in insert. See #1525
-						if (!insert.hasOwnProperty(token)) {
-							ret[token] = grammar[token];
-						}
-					}
-				}
-
-				var old = root[inside];
-				root[inside] = ret;
-
-				// Update references in other language definitions
-				_.languages.DFS(_.languages, function (key, value) {
-					if (value === old && key != inside) {
-						this[key] = ret;
-					}
-				});
-
-				return ret;
-			},
-
-			// Traverse a language definition with Depth First Search
-			DFS: function DFS(o, callback, type, visited) {
-				visited = visited || {};
-
-				var objId = _.util.objId;
-
-				for (var i in o) {
-					if (o.hasOwnProperty(i)) {
-						callback.call(o, i, o[i], type || i);
-
-						var property = o[i];
-						var propertyType = _.util.type(property);
-
-						if (propertyType === 'Object' && !visited[objId(property)]) {
-							visited[objId(property)] = true;
-							DFS(property, callback, null, visited);
-						} else if (propertyType === 'Array' && !visited[objId(property)]) {
-							visited[objId(property)] = true;
-							DFS(property, callback, i, visited);
-						}
-					}
-				}
-			}
-		},
-
-		plugins: {},
-
-		/**
-		 * This is the most high-level function in Prism’s API.
-		 * It fetches all the elements that have a `.language-xxxx` class and then calls {@link Prism.highlightElement} on
-		 * each one of them.
-		 *
-		 * This is equivalent to `Prism.highlightAllUnder(document, async, callback)`.
-		 *
-		 * @param {boolean} [async=false] Same as in {@link Prism.highlightAllUnder}.
-		 * @param {HighlightCallback} [callback] Same as in {@link Prism.highlightAllUnder}.
-		 * @memberof Prism
-		 * @public
-		 */
-		highlightAll: function (async, callback) {
-			_.highlightAllUnder(document, async, callback);
-		},
-
-		/**
-		 * Fetches all the descendants of `container` that have a `.language-xxxx` class and then calls
-		 * {@link Prism.highlightElement} on each one of them.
-		 *
-		 * The following hooks will be run:
-		 * 1. `before-highlightall`
-		 * 2. `before-all-elements-highlight`
-		 * 3. All hooks of {@link Prism.highlightElement} for each element.
-		 *
-		 * @param {ParentNode} container The root element, whose descendants that have a `.language-xxxx` class will be highlighted.
-		 * @param {boolean} [async=false] Whether each element is to be highlighted asynchronously using Web Workers.
-		 * @param {HighlightCallback} [callback] An optional callback to be invoked on each element after its highlighting is done.
-		 * @memberof Prism
-		 * @public
-		 */
-		highlightAllUnder: function (container, async, callback) {
-			var env = {
-				callback: callback,
-				container: container,
-				selector: 'code[class*="language-"], [class*="language-"] code, code[class*="lang-"], [class*="lang-"] code'
-			};
-
-			_.hooks.run('before-highlightall', env);
-
-			env.elements = Array.prototype.slice.apply(env.container.querySelectorAll(env.selector));
-
-			_.hooks.run('before-all-elements-highlight', env);
-
-			for (var i = 0, element; (element = env.elements[i++]);) {
-				_.highlightElement(element, async === true, env.callback);
-			}
-		},
-
-		/**
-		 * Highlights the code inside a single element.
-		 *
-		 * The following hooks will be run:
-		 * 1. `before-sanity-check`
-		 * 2. `before-highlight`
-		 * 3. All hooks of {@link Prism.highlight}. These hooks will be run by an asynchronous worker if `async` is `true`.
-		 * 4. `before-insert`
-		 * 5. `after-highlight`
-		 * 6. `complete`
-		 *
-		 * Some the above hooks will be skipped if the element doesn't contain any text or there is no grammar loaded for
-		 * the element's language.
-		 *
-		 * @param {Element} element The element containing the code.
-		 * It must have a class of `language-xxxx` to be processed, where `xxxx` is a valid language identifier.
-		 * @param {boolean} [async=false] Whether the element is to be highlighted asynchronously using Web Workers
-		 * to improve performance and avoid blocking the UI when highlighting very large chunks of code. This option is
-		 * [disabled by default](https://prismjs.com/faq.html#why-is-asynchronous-highlighting-disabled-by-default).
-		 *
-		 * Note: All language definitions required to highlight the code must be included in the main `prism.js` file for
-		 * asynchronous highlighting to work. You can build your own bundle on the
-		 * [Download page](https://prismjs.com/download.html).
-		 * @param {HighlightCallback} [callback] An optional callback to be invoked after the highlighting is done.
-		 * Mostly useful when `async` is `true`, since in that case, the highlighting is done asynchronously.
-		 * @memberof Prism
-		 * @public
-		 */
-		highlightElement: function (element, async, callback) {
-			// Find language
-			var language = _.util.getLanguage(element);
-			var grammar = _.languages[language];
-
-			// Set language on the element, if not present
-			_.util.setLanguage(element, language);
-
-			// Set language on the parent, for styling
-			var parent = element.parentElement;
-			if (parent && parent.nodeName.toLowerCase() === 'pre') {
-				_.util.setLanguage(parent, language);
-			}
-
-			var code = element.textContent;
-
-			var env = {
-				element: element,
-				language: language,
-				grammar: grammar,
-				code: code
-			};
-
-			function insertHighlightedCode(highlightedCode) {
-				env.highlightedCode = highlightedCode;
-
-				_.hooks.run('before-insert', env);
-
-				env.element.innerHTML = env.highlightedCode;
-
-				_.hooks.run('after-highlight', env);
-				_.hooks.run('complete', env);
-				callback && callback.call(env.element);
-			}
-
-			_.hooks.run('before-sanity-check', env);
-
-			// plugins may change/add the parent/element
-			parent = env.element.parentElement;
-			if (parent && parent.nodeName.toLowerCase() === 'pre' && !parent.hasAttribute('tabindex')) {
-				parent.setAttribute('tabindex', '0');
-			}
-
-			if (!env.code) {
-				_.hooks.run('complete', env);
-				callback && callback.call(env.element);
-				return;
-			}
-
-			_.hooks.run('before-highlight', env);
-
-			if (!env.grammar) {
-				insertHighlightedCode(_.util.encode(env.code));
-				return;
-			}
-
-			if (async && _self.Worker) {
-				var worker = new Worker(_.filename);
-
-				worker.onmessage = function (evt) {
-					insertHighlightedCode(evt.data);
-				};
-
-				worker.postMessage(JSON.stringify({
-					language: env.language,
-					code: env.code,
-					immediateClose: true
-				}));
-			} else {
-				insertHighlightedCode(_.highlight(env.code, env.grammar, env.language));
-			}
-		},
-
-		/**
-		 * Low-level function, only use if you know what you’re doing. It accepts a string of text as input
-		 * and the language definitions to use, and returns a string with the HTML produced.
-		 *
-		 * The following hooks will be run:
-		 * 1. `before-tokenize`
-		 * 2. `after-tokenize`
-		 * 3. `wrap`: On each {@link Token}.
-		 *
-		 * @param {string} text A string with the code to be highlighted.
-		 * @param {Grammar} grammar An object containing the tokens to use.
-		 *
-		 * Usually a language definition like `Prism.languages.markup`.
-		 * @param {string} language The name of the language definition passed to `grammar`.
-		 * @returns {string} The highlighted HTML.
-		 * @memberof Prism
-		 * @public
-		 * @example
-		 * Prism.highlight('var foo = true;', Prism.languages.javascript, 'javascript');
-		 */
-		highlight: function (text, grammar, language) {
-			var env = {
-				code: text,
-				grammar: grammar,
-				language: language
-			};
-			_.hooks.run('before-tokenize', env);
-			if (!env.grammar) {
-				throw new Error('The language "' + env.language + '" has no grammar.');
-			}
-			env.tokens = _.tokenize(env.code, env.grammar);
-			_.hooks.run('after-tokenize', env);
-			return Token.stringify(_.util.encode(env.tokens), env.language);
-		},
-
-		/**
-		 * This is the heart of Prism, and the most low-level function you can use. It accepts a string of text as input
-		 * and the language definitions to use, and returns an array with the tokenized code.
-		 *
-		 * When the language definition includes nested tokens, the function is called recursively on each of these tokens.
-		 *
-		 * This method could be useful in other contexts as well, as a very crude parser.
-		 *
-		 * @param {string} text A string with the code to be highlighted.
-		 * @param {Grammar} grammar An object containing the tokens to use.
-		 *
-		 * Usually a language definition like `Prism.languages.markup`.
-		 * @returns {TokenStream} An array of strings and tokens, a token stream.
-		 * @memberof Prism
-		 * @public
-		 * @example
-		 * let code = `var foo = 0;`;
-		 * let tokens = Prism.tokenize(code, Prism.languages.javascript);
-		 * tokens.forEach(token => {
-		 *     if (token instanceof Prism.Token && token.type === 'number') {
-		 *         console.log(`Found numeric literal: ${token.content}`);
-		 *     }
-		 * });
-		 */
-		tokenize: function (text, grammar) {
-			var rest = grammar.rest;
-			if (rest) {
-				for (var token in rest) {
-					grammar[token] = rest[token];
-				}
-
-				delete grammar.rest;
-			}
-
-			var tokenList = new LinkedList();
-			addAfter(tokenList, tokenList.head, text);
-
-			matchGrammar(text, tokenList, grammar, tokenList.head, 0);
-
-			return toArray(tokenList);
-		},
-
-		/**
-		 * @namespace
-		 * @memberof Prism
-		 * @public
-		 */
-		hooks: {
-			all: {},
-
-			/**
-			 * Adds the given callback to the list of callbacks for the given hook.
-			 *
-			 * The callback will be invoked when the hook it is registered for is run.
-			 * Hooks are usually directly run by a highlight function but you can also run hooks yourself.
-			 *
-			 * One callback function can be registered to multiple hooks and the same hook multiple times.
-			 *
-			 * @param {string} name The name of the hook.
-			 * @param {HookCallback} callback The callback function which is given environment variables.
-			 * @public
-			 */
-			add: function (name, callback) {
-				var hooks = _.hooks.all;
-
-				hooks[name] = hooks[name] || [];
-
-				hooks[name].push(callback);
-			},
-
-			/**
-			 * Runs a hook invoking all registered callbacks with the given environment variables.
-			 *
-			 * Callbacks will be invoked synchronously and in the order in which they were registered.
-			 *
-			 * @param {string} name The name of the hook.
-			 * @param {Object<string, any>} env The environment variables of the hook passed to all callbacks registered.
-			 * @public
-			 */
-			run: function (name, env) {
-				var callbacks = _.hooks.all[name];
-
-				if (!callbacks || !callbacks.length) {
-					return;
-				}
-
-				for (var i = 0, callback; (callback = callbacks[i++]);) {
-					callback(env);
-				}
-			}
-		},
-
-		Token: Token
-	};
-	_self.Prism = _;
-
-
-	// Typescript note:
-	// The following can be used to import the Token type in JSDoc:
-	//
-	//   @typedef {InstanceType<import("./prism-core")["Token"]>} Token
-
-	/**
-	 * Creates a new token.
-	 *
-	 * @param {string} type See {@link Token#type type}
-	 * @param {string | TokenStream} content See {@link Token#content content}
-	 * @param {string|string[]} [alias] The alias(es) of the token.
-	 * @param {string} [matchedStr=""] A copy of the full string this token was created from.
-	 * @class
-	 * @global
-	 * @public
-	 */
-	function Token(type, content, alias, matchedStr) {
-		/**
-		 * The type of the token.
-		 *
-		 * This is usually the key of a pattern in a {@link Grammar}.
-		 *
-		 * @type {string}
-		 * @see GrammarToken
-		 * @public
-		 */
-		this.type = type;
-		/**
-		 * The strings or tokens contained by this token.
-		 *
-		 * This will be a token stream if the pattern matched also defined an `inside` grammar.
-		 *
-		 * @type {string | TokenStream}
-		 * @public
-		 */
-		this.content = content;
-		/**
-		 * The alias(es) of the token.
-		 *
-		 * @type {string|string[]}
-		 * @see GrammarToken
-		 * @public
-		 */
-		this.alias = alias;
-		// Copy of the full string this token was created from
-		this.length = (matchedStr || '').length | 0;
-	}
-
-	/**
-	 * A token stream is an array of strings and {@link Token Token} objects.
-	 *
-	 * Token streams have to fulfill a few properties that are assumed by most functions (mostly internal ones) that process
-	 * them.
-	 *
-	 * 1. No adjacent strings.
-	 * 2. No empty strings.
-	 *
-	 *    The only exception here is the token stream that only contains the empty string and nothing else.
-	 *
-	 * @typedef {Array<string | Token>} TokenStream
-	 * @global
-	 * @public
-	 */
-
-	/**
-	 * Converts the given token or token stream to an HTML representation.
-	 *
-	 * The following hooks will be run:
-	 * 1. `wrap`: On each {@link Token}.
-	 *
-	 * @param {string | Token | TokenStream} o The token or token stream to be converted.
-	 * @param {string} language The name of current language.
-	 * @returns {string} The HTML representation of the token or token stream.
-	 * @memberof Token
-	 * @static
-	 */
-	Token.stringify = function stringify(o, language) {
-		if (typeof o == 'string') {
-			return o;
-		}
-		if (Array.isArray(o)) {
-			var s = '';
-			o.forEach(function (e) {
-				s += stringify(e, language);
-			});
-			return s;
-		}
-
-		var env = {
-			type: o.type,
-			content: stringify(o.content, language),
-			tag: 'span',
-			classes: ['token', o.type],
-			attributes: {},
-			language: language
-		};
-
-		var aliases = o.alias;
-		if (aliases) {
-			if (Array.isArray(aliases)) {
-				Array.prototype.push.apply(env.classes, aliases);
-			} else {
-				env.classes.push(aliases);
-			}
-		}
-
-		_.hooks.run('wrap', env);
-
-		var attributes = '';
-		for (var name in env.attributes) {
-			attributes += ' ' + name + '="' + (env.attributes[name] || '').replace(/"/g, '&quot;') + '"';
-		}
-
-		return '<' + env.tag + ' class="' + env.classes.join(' ') + '"' + attributes + '>' + env.content + '</' + env.tag + '>';
-	};
-
-	/**
-	 * @param {RegExp} pattern
-	 * @param {number} pos
-	 * @param {string} text
-	 * @param {boolean} lookbehind
-	 * @returns {RegExpExecArray | null}
-	 */
-	function matchPattern(pattern, pos, text, lookbehind) {
-		pattern.lastIndex = pos;
-		var match = pattern.exec(text);
-		if (match && lookbehind && match[1]) {
-			// change the match to remove the text matched by the Prism lookbehind group
-			var lookbehindLength = match[1].length;
-			match.index += lookbehindLength;
-			match[0] = match[0].slice(lookbehindLength);
-		}
-		return match;
-	}
-
-	/**
-	 * @param {string} text
-	 * @param {LinkedList<string | Token>} tokenList
-	 * @param {any} grammar
-	 * @param {LinkedListNode<string | Token>} startNode
-	 * @param {number} startPos
-	 * @param {RematchOptions} [rematch]
-	 * @returns {void}
-	 * @private
-	 *
-	 * @typedef RematchOptions
-	 * @property {string} cause
-	 * @property {number} reach
-	 */
-	function matchGrammar(text, tokenList, grammar, startNode, startPos, rematch) {
-		for (var token in grammar) {
-			if (!grammar.hasOwnProperty(token) || !grammar[token]) {
-				continue;
-			}
-
-			var patterns = grammar[token];
-			patterns = Array.isArray(patterns) ? patterns : [patterns];
-
-			for (var j = 0; j < patterns.length; ++j) {
-				if (rematch && rematch.cause == token + ',' + j) {
-					return;
-				}
-
-				var patternObj = patterns[j];
-				var inside = patternObj.inside;
-				var lookbehind = !!patternObj.lookbehind;
-				var greedy = !!patternObj.greedy;
-				var alias = patternObj.alias;
-
-				if (greedy && !patternObj.pattern.global) {
-					// Without the global flag, lastIndex won't work
-					var flags = patternObj.pattern.toString().match(/[imsuy]*$/)[0];
-					patternObj.pattern = RegExp(patternObj.pattern.source, flags + 'g');
-				}
-
-				/** @type {RegExp} */
-				var pattern = patternObj.pattern || patternObj;
-
-				for ( // iterate the token list and keep track of the current token/string position
-					var currentNode = startNode.next, pos = startPos;
-					currentNode !== tokenList.tail;
-					pos += currentNode.value.length, currentNode = currentNode.next
-				) {
-
-					if (rematch && pos >= rematch.reach) {
-						break;
-					}
-
-					var str = currentNode.value;
-
-					if (tokenList.length > text.length) {
-						// Something went terribly wrong, ABORT, ABORT!
-						return;
-					}
-
-					if (str instanceof Token) {
-						continue;
-					}
-
-					var removeCount = 1; // this is the to parameter of removeBetween
-					var match;
-
-					if (greedy) {
-						match = matchPattern(pattern, pos, text, lookbehind);
-						if (!match || match.index >= text.length) {
-							break;
-						}
-
-						var from = match.index;
-						var to = match.index + match[0].length;
-						var p = pos;
-
-						// find the node that contains the match
-						p += currentNode.value.length;
-						while (from >= p) {
-							currentNode = currentNode.next;
-							p += currentNode.value.length;
-						}
-						// adjust pos (and p)
-						p -= currentNode.value.length;
-						pos = p;
-
-						// the current node is a Token, then the match starts inside another Token, which is invalid
-						if (currentNode.value instanceof Token) {
-							continue;
-						}
-
-						// find the last node which is affected by this match
-						for (
-							var k = currentNode;
-							k !== tokenList.tail && (p < to || typeof k.value === 'string');
-							k = k.next
-						) {
-							removeCount++;
-							p += k.value.length;
-						}
-						removeCount--;
-
-						// replace with the new match
-						str = text.slice(pos, p);
-						match.index -= pos;
-					} else {
-						match = matchPattern(pattern, 0, str, lookbehind);
-						if (!match) {
-							continue;
-						}
-					}
-
-					// eslint-disable-next-line no-redeclare
-					var from = match.index;
-					var matchStr = match[0];
-					var before = str.slice(0, from);
-					var after = str.slice(from + matchStr.length);
-
-					var reach = pos + str.length;
-					if (rematch && reach > rematch.reach) {
-						rematch.reach = reach;
-					}
-
-					var removeFrom = currentNode.prev;
-
-					if (before) {
-						removeFrom = addAfter(tokenList, removeFrom, before);
-						pos += before.length;
-					}
-
-					removeRange(tokenList, removeFrom, removeCount);
-
-					var wrapped = new Token(token, inside ? _.tokenize(matchStr, inside) : matchStr, alias, matchStr);
-					currentNode = addAfter(tokenList, removeFrom, wrapped);
-
-					if (after) {
-						addAfter(tokenList, currentNode, after);
-					}
-
-					if (removeCount > 1) {
-						// at least one Token object was removed, so we have to do some rematching
-						// this can only happen if the current pattern is greedy
-
-						/** @type {RematchOptions} */
-						var nestedRematch = {
-							cause: token + ',' + j,
-							reach: reach
-						};
-						matchGrammar(text, tokenList, grammar, currentNode.prev, pos, nestedRematch);
-
-						// the reach might have been extended because of the rematching
-						if (rematch && nestedRematch.reach > rematch.reach) {
-							rematch.reach = nestedRematch.reach;
-						}
-					}
-				}
-			}
-		}
-	}
-
-	/**
-	 * @typedef LinkedListNode
-	 * @property {T} value
-	 * @property {LinkedListNode<T> | null} prev The previous node.
-	 * @property {LinkedListNode<T> | null} next The next node.
-	 * @template T
-	 * @private
-	 */
-
-	/**
-	 * @template T
-	 * @private
-	 */
-	function LinkedList() {
-		/** @type {LinkedListNode<T>} */
-		var head = { value: null, prev: null, next: null };
-		/** @type {LinkedListNode<T>} */
-		var tail = { value: null, prev: head, next: null };
-		head.next = tail;
-
-		/** @type {LinkedListNode<T>} */
-		this.head = head;
-		/** @type {LinkedListNode<T>} */
-		this.tail = tail;
-		this.length = 0;
-	}
-
-	/**
-	 * Adds a new node with the given value to the list.
-	 *
-	 * @param {LinkedList<T>} list
-	 * @param {LinkedListNode<T>} node
-	 * @param {T} value
-	 * @returns {LinkedListNode<T>} The added node.
-	 * @template T
-	 */
-	function addAfter(list, node, value) {
-		// assumes that node != list.tail && values.length >= 0
-		var next = node.next;
-
-		var newNode = { value: value, prev: node, next: next };
-		node.next = newNode;
-		next.prev = newNode;
-		list.length++;
-
-		return newNode;
-	}
-	/**
-	 * Removes `count` nodes after the given node. The given node will not be removed.
-	 *
-	 * @param {LinkedList<T>} list
-	 * @param {LinkedListNode<T>} node
-	 * @param {number} count
-	 * @template T
-	 */
-	function removeRange(list, node, count) {
-		var next = node.next;
-		for (var i = 0; i < count && next !== list.tail; i++) {
-			next = next.next;
-		}
-		node.next = next;
-		next.prev = node;
-		list.length -= i;
-	}
-	/**
-	 * @param {LinkedList<T>} list
-	 * @returns {T[]}
-	 * @template T
-	 */
-	function toArray(list) {
-		var array = [];
-		var node = list.head.next;
-		while (node !== list.tail) {
-			array.push(node.value);
-			node = node.next;
-		}
-		return array;
-	}
-
-
-	if (!_self.document) {
-		if (!_self.addEventListener) {
-			// in Node.js
-			return _;
-		}
-
-		if (!_.disableWorkerMessageHandler) {
-			// In worker
-			_self.addEventListener('message', function (evt) {
-				var message = JSON.parse(evt.data);
-				var lang = message.language;
-				var code = message.code;
-				var immediateClose = message.immediateClose;
-
-				_self.postMessage(_.highlight(code, _.languages[lang], lang));
-				if (immediateClose) {
-					_self.close();
-				}
-			}, false);
-		}
-
-		return _;
-	}
-
-	// Get current script and highlight
-	var script = _.util.currentScript();
-
-	if (script) {
-		_.filename = script.src;
-
-		if (script.hasAttribute('data-manual')) {
-			_.manual = true;
-		}
-	}
-
-	function highlightAutomaticallyCallback() {
-		if (!_.manual) {
-			_.highlightAll();
-		}
-	}
-
-	if (!_.manual) {
-		// If the document state is "loading", then we'll use DOMContentLoaded.
-		// If the document state is "interactive" and the prism.js script is deferred, then we'll also use the
-		// DOMContentLoaded event because there might be some plugins or languages which have also been deferred and they
-		// might take longer one animation frame to execute which can create a race condition where only some plugins have
-		// been loaded when Prism.highlightAll() is executed, depending on how fast resources are loaded.
-		// See https://github.com/PrismJS/prism/issues/2102
-		var readyState = document.readyState;
-		if (readyState === 'loading' || readyState === 'interactive' && script && script.defer) {
-			document.addEventListener('DOMContentLoaded', highlightAutomaticallyCallback);
-		} else {
-			if (window.requestAnimationFrame) {
-				window.requestAnimationFrame(highlightAutomaticallyCallback);
-			} else {
-				window.setTimeout(highlightAutomaticallyCallback, 16);
-			}
-		}
-	}
-
-	return _;
-
-}(_self));
-
-if (typeof module !== 'undefined' && module.exports) {
-	module.exports = Prism;
-}
-
-// hack for components to work correctly in node.js
-if (typeof global !== 'undefined') {
-	global.Prism = Prism;
-}
-
-// some additional documentation/types
-
-/**
- * The expansion of a simple `RegExp` literal to support additional properties.
- *
- * @typedef GrammarToken
- * @property {RegExp} pattern The regular expression of the token.
- * @property {boolean} [lookbehind=false] If `true`, then the first capturing group of `pattern` will (effectively)
- * behave as a lookbehind group meaning that the captured text will not be part of the matched text of the new token.
- * @property {boolean} [greedy=false] Whether the token is greedy.
- * @property {string|string[]} [alias] An optional alias or list of aliases.
- * @property {Grammar} [inside] The nested grammar of this token.
- *
- * The `inside` grammar will be used to tokenize the text value of each token of this kind.
- *
- * This can be used to make nested and even recursive language definitions.
- *
- * Note: This can cause infinite recursion. Be careful when you embed different languages or even the same language into
- * each another.
- * @global
- * @public
- */
-
-/**
- * @typedef Grammar
- * @type {Object<string, RegExp | GrammarToken | Array<RegExp | GrammarToken>>}
- * @property {Grammar} [rest] An optional grammar object that will be appended to this grammar.
- * @global
- * @public
- */
-
-/**
- * A function which will invoked after an element was successfully highlighted.
- *
- * @callback HighlightCallback
- * @param {Element} element The element successfully highlighted.
- * @returns {void}
- * @global
- * @public
- */
-
-/**
- * @callback HookCallback
- * @param {Object<string, any>} env The environment variables of the hook.
- * @returns {void}
- * @global
- * @public
- */
-
-
-
- - - - - - -
- -
- - - - - - - - - - - - - - - diff --git a/docs/scripts/collapse.js b/docs/scripts/collapse.js deleted file mode 100644 index 327039fb34..0000000000 --- a/docs/scripts/collapse.js +++ /dev/null @@ -1,20 +0,0 @@ -function hideAllButCurrent(){ - //by default all submenut items are hidden - //but we need to rehide them for search - document.querySelectorAll("nav > ul > li > ul li").forEach(function(parent) { - parent.style.display = "none"; - }); - - //only current page (if it exists) should be opened - var file = window.location.pathname.split("/").pop().replace(/\.html/, ''); - document.querySelectorAll("nav > ul > li > a").forEach(function(parent) { - var href = parent.attributes.href.value.replace(/\.html/, ''); - if (file === href) { - parent.parentNode.querySelectorAll("ul li").forEach(function(elem) { - elem.style.display = "block"; - }); - } - }); -} - -hideAllButCurrent(); \ No newline at end of file diff --git a/docs/scripts/linenumber.js b/docs/scripts/linenumber.js deleted file mode 100644 index 8d52f7eafd..0000000000 --- a/docs/scripts/linenumber.js +++ /dev/null @@ -1,25 +0,0 @@ -/*global document */ -(function() { - var source = document.getElementsByClassName('prettyprint source linenums'); - var i = 0; - var lineNumber = 0; - var lineId; - var lines; - var totalLines; - var anchorHash; - - if (source && source[0]) { - anchorHash = document.location.hash.substring(1); - lines = source[0].getElementsByTagName('li'); - totalLines = lines.length; - - for (; i < totalLines; i++) { - lineNumber++; - lineId = 'line' + lineNumber; - lines[i].id = lineId; - if (lineId === anchorHash) { - lines[i].className += ' selected'; - } - } - } -})(); diff --git a/docs/scripts/nav.js b/docs/scripts/nav.js deleted file mode 100644 index 6dd8313429..0000000000 --- a/docs/scripts/nav.js +++ /dev/null @@ -1,12 +0,0 @@ -function scrollToNavItem() { - var path = window.location.href.split('/').pop().replace(/\.html/, ''); - document.querySelectorAll('nav a').forEach(function(link) { - var href = link.attributes.href.value.replace(/\.html/, ''); - if (path === href) { - link.scrollIntoView({block: 'center'}); - return; - } - }) - } - - scrollToNavItem(); diff --git a/docs/scripts/polyfill.js b/docs/scripts/polyfill.js deleted file mode 100644 index 44b4c92dcd..0000000000 --- a/docs/scripts/polyfill.js +++ /dev/null @@ -1,4 +0,0 @@ -//IE Fix, src: https://www.reddit.com/r/programminghorror/comments/6abmcr/nodelist_lacks_foreach_in_internet_explorer/ -if (typeof(NodeList.prototype.forEach)!==typeof(alert)){ - NodeList.prototype.forEach=Array.prototype.forEach; -} \ No newline at end of file diff --git a/docs/scripts/prettify/lang-css.js b/docs/scripts/prettify/lang-css.js deleted file mode 100644 index 041e1f5906..0000000000 --- a/docs/scripts/prettify/lang-css.js +++ /dev/null @@ -1,2 +0,0 @@ -PR.registerLangHandler(PR.createSimpleLexer([["pln",/^[\t\n\f\r ]+/,null," \t\r\n "]],[["str",/^"(?:[^\n\f\r"\\]|\\(?:\r\n?|\n|\f)|\\[\S\s])*"/,null],["str",/^'(?:[^\n\f\r'\\]|\\(?:\r\n?|\n|\f)|\\[\S\s])*'/,null],["lang-css-str",/^url\(([^"')]*)\)/i],["kwd",/^(?:url|rgb|!important|@import|@page|@media|@charset|inherit)(?=[^\w-]|$)/i,null],["lang-css-kw",/^(-?(?:[_a-z]|\\[\da-f]+ ?)(?:[\w-]|\\\\[\da-f]+ ?)*)\s*:/i],["com",/^\/\*[^*]*\*+(?:[^*/][^*]*\*+)*\//],["com", -/^(?:<\!--|--\>)/],["lit",/^(?:\d+|\d*\.\d+)(?:%|[a-z]+)?/i],["lit",/^#[\da-f]{3,6}/i],["pln",/^-?(?:[_a-z]|\\[\da-f]+ ?)(?:[\w-]|\\\\[\da-f]+ ?)*/i],["pun",/^[^\s\w"']+/]]),["css"]);PR.registerLangHandler(PR.createSimpleLexer([],[["kwd",/^-?(?:[_a-z]|\\[\da-f]+ ?)(?:[\w-]|\\\\[\da-f]+ ?)*/i]]),["css-kw"]);PR.registerLangHandler(PR.createSimpleLexer([],[["str",/^[^"')]+/]]),["css-str"]); diff --git a/docs/scripts/prettify/prettify.js b/docs/scripts/prettify/prettify.js deleted file mode 100644 index eef5ad7e6a..0000000000 --- a/docs/scripts/prettify/prettify.js +++ /dev/null @@ -1,28 +0,0 @@ -var q=null;window.PR_SHOULD_USE_CONTINUATION=!0; -(function(){function L(a){function m(a){var f=a.charCodeAt(0);if(f!==92)return f;var b=a.charAt(1);return(f=r[b])?f:"0"<=b&&b<="7"?parseInt(a.substring(1),8):b==="u"||b==="x"?parseInt(a.substring(2),16):a.charCodeAt(1)}function e(a){if(a<32)return(a<16?"\\x0":"\\x")+a.toString(16);a=String.fromCharCode(a);if(a==="\\"||a==="-"||a==="["||a==="]")a="\\"+a;return a}function h(a){for(var f=a.substring(1,a.length-1).match(/\\u[\dA-Fa-f]{4}|\\x[\dA-Fa-f]{2}|\\[0-3][0-7]{0,2}|\\[0-7]{1,2}|\\[\S\s]|[^\\]/g),a= -[],b=[],o=f[0]==="^",c=o?1:0,i=f.length;c122||(d<65||j>90||b.push([Math.max(65,j)|32,Math.min(d,90)|32]),d<97||j>122||b.push([Math.max(97,j)&-33,Math.min(d,122)&-33]))}}b.sort(function(a,f){return a[0]-f[0]||f[1]-a[1]});f=[];j=[NaN,NaN];for(c=0;ci[0]&&(i[1]+1>i[0]&&b.push("-"),b.push(e(i[1])));b.push("]");return b.join("")}function y(a){for(var f=a.source.match(/\[(?:[^\\\]]|\\[\S\s])*]|\\u[\dA-Fa-f]{4}|\\x[\dA-Fa-f]{2}|\\\d+|\\[^\dux]|\(\?[!:=]|[()^]|[^()[\\^]+/g),b=f.length,d=[],c=0,i=0;c=2&&a==="["?f[c]=h(j):a!=="\\"&&(f[c]=j.replace(/[A-Za-z]/g,function(a){a=a.charCodeAt(0);return"["+String.fromCharCode(a&-33,a|32)+"]"}));return f.join("")}for(var t=0,s=!1,l=!1,p=0,d=a.length;p=5&&"lang-"===b.substring(0,5))&&!(o&&typeof o[1]==="string"))c=!1,b="src";c||(r[f]=b)}i=d;d+=f.length;if(c){c=o[1];var j=f.indexOf(c),k=j+c.length;o[2]&&(k=f.length-o[2].length,j=k-c.length);b=b.substring(5);B(l+i,f.substring(0,j),e,p);B(l+i+j,c,C(b,c),p);B(l+i+k,f.substring(k),e,p)}else p.push(l+i,b)}a.e=p}var h={},y;(function(){for(var e=a.concat(m), -l=[],p={},d=0,g=e.length;d=0;)h[n.charAt(k)]=r;r=r[1];n=""+r;p.hasOwnProperty(n)||(l.push(r),p[n]=q)}l.push(/[\S\s]/);y=L(l)})();var t=m.length;return e}function u(a){var m=[],e=[];a.tripleQuotedStrings?m.push(["str",/^(?:'''(?:[^'\\]|\\[\S\s]|''?(?=[^']))*(?:'''|$)|"""(?:[^"\\]|\\[\S\s]|""?(?=[^"]))*(?:"""|$)|'(?:[^'\\]|\\[\S\s])*(?:'|$)|"(?:[^"\\]|\\[\S\s])*(?:"|$))/,q,"'\""]):a.multiLineStrings?m.push(["str",/^(?:'(?:[^'\\]|\\[\S\s])*(?:'|$)|"(?:[^"\\]|\\[\S\s])*(?:"|$)|`(?:[^\\`]|\\[\S\s])*(?:`|$))/, -q,"'\"`"]):m.push(["str",/^(?:'(?:[^\n\r'\\]|\\.)*(?:'|$)|"(?:[^\n\r"\\]|\\.)*(?:"|$))/,q,"\"'"]);a.verbatimStrings&&e.push(["str",/^@"(?:[^"]|"")*(?:"|$)/,q]);var h=a.hashComments;h&&(a.cStyleComments?(h>1?m.push(["com",/^#(?:##(?:[^#]|#(?!##))*(?:###|$)|.*)/,q,"#"]):m.push(["com",/^#(?:(?:define|elif|else|endif|error|ifdef|include|ifndef|line|pragma|undef|warning)\b|[^\n\r]*)/,q,"#"]),e.push(["str",/^<(?:(?:(?:\.\.\/)*|\/?)(?:[\w-]+(?:\/[\w-]+)+)?[\w-]+\.h|[a-z]\w*)>/,q])):m.push(["com",/^#[^\n\r]*/, -q,"#"]));a.cStyleComments&&(e.push(["com",/^\/\/[^\n\r]*/,q]),e.push(["com",/^\/\*[\S\s]*?(?:\*\/|$)/,q]));a.regexLiterals&&e.push(["lang-regex",/^(?:^^\.?|[!+-]|!=|!==|#|%|%=|&|&&|&&=|&=|\(|\*|\*=|\+=|,|-=|->|\/|\/=|:|::|;|<|<<|<<=|<=|=|==|===|>|>=|>>|>>=|>>>|>>>=|[?@[^]|\^=|\^\^|\^\^=|{|\||\|=|\|\||\|\|=|~|break|case|continue|delete|do|else|finally|instanceof|return|throw|try|typeof)\s*(\/(?=[^*/])(?:[^/[\\]|\\[\S\s]|\[(?:[^\\\]]|\\[\S\s])*(?:]|$))+\/)/]);(h=a.types)&&e.push(["typ",h]);a=(""+a.keywords).replace(/^ | $/g, -"");a.length&&e.push(["kwd",RegExp("^(?:"+a.replace(/[\s,]+/g,"|")+")\\b"),q]);m.push(["pln",/^\s+/,q," \r\n\t\xa0"]);e.push(["lit",/^@[$_a-z][\w$@]*/i,q],["typ",/^(?:[@_]?[A-Z]+[a-z][\w$@]*|\w+_t\b)/,q],["pln",/^[$_a-z][\w$@]*/i,q],["lit",/^(?:0x[\da-f]+|(?:\d(?:_\d+)*\d*(?:\.\d*)?|\.\d\+)(?:e[+-]?\d+)?)[a-z]*/i,q,"0123456789"],["pln",/^\\[\S\s]?/,q],["pun",/^.[^\s\w"-$'./@\\`]*/,q]);return x(m,e)}function D(a,m){function e(a){switch(a.nodeType){case 1:if(k.test(a.className))break;if("BR"===a.nodeName)h(a), -a.parentNode&&a.parentNode.removeChild(a);else for(a=a.firstChild;a;a=a.nextSibling)e(a);break;case 3:case 4:if(p){var b=a.nodeValue,d=b.match(t);if(d){var c=b.substring(0,d.index);a.nodeValue=c;(b=b.substring(d.index+d[0].length))&&a.parentNode.insertBefore(s.createTextNode(b),a.nextSibling);h(a);c||a.parentNode.removeChild(a)}}}}function h(a){function b(a,d){var e=d?a.cloneNode(!1):a,f=a.parentNode;if(f){var f=b(f,1),g=a.nextSibling;f.appendChild(e);for(var h=g;h;h=g)g=h.nextSibling,f.appendChild(h)}return e} -for(;!a.nextSibling;)if(a=a.parentNode,!a)return;for(var a=b(a.nextSibling,0),e;(e=a.parentNode)&&e.nodeType===1;)a=e;d.push(a)}var k=/(?:^|\s)nocode(?:\s|$)/,t=/\r\n?|\n/,s=a.ownerDocument,l;a.currentStyle?l=a.currentStyle.whiteSpace:window.getComputedStyle&&(l=s.defaultView.getComputedStyle(a,q).getPropertyValue("white-space"));var p=l&&"pre"===l.substring(0,3);for(l=s.createElement("LI");a.firstChild;)l.appendChild(a.firstChild);for(var d=[l],g=0;g=0;){var h=m[e];A.hasOwnProperty(h)?window.console&&console.warn("cannot override language handler %s",h):A[h]=a}}function C(a,m){if(!a||!A.hasOwnProperty(a))a=/^\s*=o&&(h+=2);e>=c&&(a+=2)}}catch(w){"console"in window&&console.log(w&&w.stack?w.stack:w)}}var v=["break,continue,do,else,for,if,return,while"],w=[[v,"auto,case,char,const,default,double,enum,extern,float,goto,int,long,register,short,signed,sizeof,static,struct,switch,typedef,union,unsigned,void,volatile"], -"catch,class,delete,false,import,new,operator,private,protected,public,this,throw,true,try,typeof"],F=[w,"alignof,align_union,asm,axiom,bool,concept,concept_map,const_cast,constexpr,decltype,dynamic_cast,explicit,export,friend,inline,late_check,mutable,namespace,nullptr,reinterpret_cast,static_assert,static_cast,template,typeid,typename,using,virtual,where"],G=[w,"abstract,boolean,byte,extends,final,finally,implements,import,instanceof,null,native,package,strictfp,super,synchronized,throws,transient"], -H=[G,"as,base,by,checked,decimal,delegate,descending,dynamic,event,fixed,foreach,from,group,implicit,in,interface,internal,into,is,lock,object,out,override,orderby,params,partial,readonly,ref,sbyte,sealed,stackalloc,string,select,uint,ulong,unchecked,unsafe,ushort,var"],w=[w,"debugger,eval,export,function,get,null,set,undefined,var,with,Infinity,NaN"],I=[v,"and,as,assert,class,def,del,elif,except,exec,finally,from,global,import,in,is,lambda,nonlocal,not,or,pass,print,raise,try,with,yield,False,True,None"], -J=[v,"alias,and,begin,case,class,def,defined,elsif,end,ensure,false,in,module,next,nil,not,or,redo,rescue,retry,self,super,then,true,undef,unless,until,when,yield,BEGIN,END"],v=[v,"case,done,elif,esac,eval,fi,function,in,local,set,then,until"],K=/^(DIR|FILE|vector|(de|priority_)?queue|list|stack|(const_)?iterator|(multi)?(set|map)|bitset|u?(int|float)\d*)/,N=/\S/,O=u({keywords:[F,H,w,"caller,delete,die,do,dump,elsif,eval,exit,foreach,for,goto,if,import,last,local,my,next,no,our,print,package,redo,require,sub,undef,unless,until,use,wantarray,while,BEGIN,END"+ -I,J,v],hashComments:!0,cStyleComments:!0,multiLineStrings:!0,regexLiterals:!0}),A={};k(O,["default-code"]);k(x([],[["pln",/^[^]*(?:>|$)/],["com",/^<\!--[\S\s]*?(?:--\>|$)/],["lang-",/^<\?([\S\s]+?)(?:\?>|$)/],["lang-",/^<%([\S\s]+?)(?:%>|$)/],["pun",/^(?:<[%?]|[%?]>)/],["lang-",/^]*>([\S\s]+?)<\/xmp\b[^>]*>/i],["lang-js",/^]*>([\S\s]*?)(<\/script\b[^>]*>)/i],["lang-css",/^]*>([\S\s]*?)(<\/style\b[^>]*>)/i],["lang-in.tag",/^(<\/?[a-z][^<>]*>)/i]]), -["default-markup","htm","html","mxml","xhtml","xml","xsl"]);k(x([["pln",/^\s+/,q," \t\r\n"],["atv",/^(?:"[^"]*"?|'[^']*'?)/,q,"\"'"]],[["tag",/^^<\/?[a-z](?:[\w-.:]*\w)?|\/?>$/i],["atn",/^(?!style[\s=]|on)[a-z](?:[\w:-]*\w)?/i],["lang-uq.val",/^=\s*([^\s"'>]*(?:[^\s"'/>]|\/(?=\s)))/],["pun",/^[/<->]+/],["lang-js",/^on\w+\s*=\s*"([^"]+)"/i],["lang-js",/^on\w+\s*=\s*'([^']+)'/i],["lang-js",/^on\w+\s*=\s*([^\s"'>]+)/i],["lang-css",/^style\s*=\s*"([^"]+)"/i],["lang-css",/^style\s*=\s*'([^']+)'/i],["lang-css", -/^style\s*=\s*([^\s"'>]+)/i]]),["in.tag"]);k(x([],[["atv",/^[\S\s]+/]]),["uq.val"]);k(u({keywords:F,hashComments:!0,cStyleComments:!0,types:K}),["c","cc","cpp","cxx","cyc","m"]);k(u({keywords:"null,true,false"}),["json"]);k(u({keywords:H,hashComments:!0,cStyleComments:!0,verbatimStrings:!0,types:K}),["cs"]);k(u({keywords:G,cStyleComments:!0}),["java"]);k(u({keywords:v,hashComments:!0,multiLineStrings:!0}),["bsh","csh","sh"]);k(u({keywords:I,hashComments:!0,multiLineStrings:!0,tripleQuotedStrings:!0}), -["cv","py"]);k(u({keywords:"caller,delete,die,do,dump,elsif,eval,exit,foreach,for,goto,if,import,last,local,my,next,no,our,print,package,redo,require,sub,undef,unless,until,use,wantarray,while,BEGIN,END",hashComments:!0,multiLineStrings:!0,regexLiterals:!0}),["perl","pl","pm"]);k(u({keywords:J,hashComments:!0,multiLineStrings:!0,regexLiterals:!0}),["rb"]);k(u({keywords:w,cStyleComments:!0,regexLiterals:!0}),["js"]);k(u({keywords:"all,and,by,catch,class,else,extends,false,finally,for,if,in,is,isnt,loop,new,no,not,null,of,off,on,or,return,super,then,true,try,unless,until,when,while,yes", -hashComments:3,cStyleComments:!0,multilineStrings:!0,tripleQuotedStrings:!0,regexLiterals:!0}),["coffee"]);k(x([],[["str",/^[\S\s]+/]]),["regex"]);window.prettyPrintOne=function(a,m,e){var h=document.createElement("PRE");h.innerHTML=a;e&&D(h,e);E({g:m,i:e,h:h});return h.innerHTML};window.prettyPrint=function(a){function m(){for(var e=window.PR_SHOULD_USE_CONTINUATION?l.now()+250:Infinity;p=0){var k=k.match(g),f,b;if(b= -!k){b=n;for(var o=void 0,c=b.firstChild;c;c=c.nextSibling)var i=c.nodeType,o=i===1?o?b:c:i===3?N.test(c.nodeValue)?b:o:o;b=(f=o===b?void 0:o)&&"CODE"===f.tagName}b&&(k=f.className.match(g));k&&(k=k[1]);b=!1;for(o=n.parentNode;o;o=o.parentNode)if((o.tagName==="pre"||o.tagName==="code"||o.tagName==="xmp")&&o.className&&o.className.indexOf("prettyprint")>=0){b=!0;break}b||((b=(b=n.className.match(/\blinenums\b(?::(\d+))?/))?b[1]&&b[1].length?+b[1]:!0:!1)&&D(n,b),d={g:k,h:n,i:b},E(d))}}p ul > li:not(.level-hide)").forEach(function(elem) { - elem.style.display = "block"; - }); - - if (typeof hideAllButCurrent === "function"){ - //let's do what ever collapse wants to do - hideAllButCurrent(); - } else { - //menu by default should be opened - document.querySelectorAll("nav > ul > li > ul li").forEach(function(elem) { - elem.style.display = "block"; - }); - } - } else { - //we are searching - document.documentElement.setAttribute(searchAttr, ''); - - //show all parents - document.querySelectorAll("nav > ul > li").forEach(function(elem) { - elem.style.display = "block"; - }); - //hide all results - document.querySelectorAll("nav > ul > li > ul li").forEach(function(elem) { - elem.style.display = "none"; - }); - //show results matching filter - document.querySelectorAll("nav > ul > li > ul a").forEach(function(elem) { - if (!contains(elem.parentNode, search)) { - return; - } - elem.parentNode.style.display = "block"; - }); - //hide parents without children - document.querySelectorAll("nav > ul > li").forEach(function(parent) { - var countSearchA = 0; - parent.querySelectorAll("a").forEach(function(elem) { - if (contains(elem, search)) { - countSearchA++; - } - }); - - var countUl = 0; - var countUlVisible = 0; - parent.querySelectorAll("ul").forEach(function(ulP) { - // count all elements that match the search - if (contains(ulP, search)) { - countUl++; - } - - // count all visible elements - var children = ulP.children - for (i=0; i ul { - padding: 0 10px; -} - -nav > ul > li > a { - color: #606; - margin-top: 10px; -} - -nav ul ul a { - color: hsl(207, 1%, 60%); - border-left: 1px solid hsl(207, 10%, 86%); -} - -nav ul ul a, -nav ul ul a:active { - padding-left: 20px -} - -nav h2 { - font-size: 13px; - margin: 10px 0 0 0; - padding: 0; -} - -nav > h2 > a { - margin: 10px 0 -10px; - color: #606 !important; -} - -footer { - color: hsl(0, 0%, 28%); - margin-left: 250px; - display: block; - padding: 15px; - font-style: italic; - font-size: 90%; -} - -.ancestors { - color: #999 -} - -.ancestors a { - color: #999 !important; -} - -.clear { - clear: both -} - -.important { - font-weight: bold; - color: #950B02; -} - -.yes-def { - text-indent: -1000px -} - -.type-signature { - color: #CA79CA -} - -.type-signature:last-child { - color: #eee; -} - -.name, .signature { - font-family: Consolas, Monaco, 'Andale Mono', monospace -} - -.signature { - color: #fc83ff; -} - -.details { - margin-top: 6px; - border-left: 2px solid #DDD; - line-height: 20px; - font-size: 14px; -} - -.details dt { - width: auto; - float: left; - padding-left: 10px; -} - -.details dd { - margin-left: 70px; - margin-top: 6px; - margin-bottom: 6px; -} - -.details ul { - margin: 0 -} - -.details ul { - list-style-type: none -} - -.details pre.prettyprint { - margin: 0 -} - -.details .object-value { - padding-top: 0 -} - -.description { - margin-bottom: 1em; - margin-top: 1em; -} - -.code-caption { - font-style: italic; - font-size: 107%; - margin: 0; -} - -.prettyprint { - font-size: 14px; - overflow: auto; -} - -.prettyprint.source { - width: inherit; - line-height: 18px; - display: block; - background-color: #0d152a; - color: #aeaeae; -} - -.prettyprint code { - line-height: 18px; - display: block; - background-color: #0d152a; - color: #4D4E53; -} - -.prettyprint > code { - padding: 15px; -} - -.prettyprint .linenums code { - padding: 0 15px -} - -.prettyprint .linenums li:first-of-type code { - padding-top: 15px -} - -.prettyprint code span.line { - display: inline-block -} - -.prettyprint.linenums { - padding-left: 70px; - -webkit-user-select: none; - -moz-user-select: none; - -ms-user-select: none; - user-select: none; -} - -.prettyprint.linenums ol { - padding-left: 0 -} - -.prettyprint.linenums li { - border-left: 3px #34446B solid; -} - -.prettyprint.linenums li.selected, .prettyprint.linenums li.selected * { - background-color: #34446B; -} - -.prettyprint.linenums li * { - -webkit-user-select: text; - -moz-user-select: text; - -ms-user-select: text; - user-select: text; -} - -.prettyprint.linenums li code:empty:after { - content:""; - display:inline-block; - width:0px; -} - -table { - border-spacing: 0; - border: 1px solid #ddd; - border-collapse: collapse; - border-radius: 3px; - box-shadow: 0 1px 3px rgba(0,0,0,0.1); - width: 100%; - font-size: 14px; - margin: 1em 0; -} - -td, th { - margin: 0px; - text-align: left; - vertical-align: top; - padding: 10px; - display: table-cell; -} - -thead tr, thead tr { - background-color: #fff; - font-weight: bold; - border-bottom: 1px solid #ddd; -} - -.params .type { - white-space: nowrap; -} - -.params code { - white-space: pre; -} - -.params td, .params .name, .props .name, .name code { - color: #4D4E53; - font-family: Consolas, Monaco, 'Andale Mono', monospace; - font-size: 100%; -} - -.params td { - border-top: 1px solid #eee -} - -.params td.description > p:first-child, .props td.description > p:first-child { - margin-top: 0; - padding-top: 0; -} - -.params td.description > p:last-child, .props td.description > p:last-child { - margin-bottom: 0; - padding-bottom: 0; -} - -span.param-type, .params td .param-type, .param-type dd { - color: #606; - font-family: Consolas, Monaco, 'Andale Mono', monospace -} - -.param-type dt, .param-type dd { - display: inline-block -} - -.param-type { - margin: 14px 0; -} - -.disabled { - color: #454545 -} - -/* navicon button */ -.navicon-button { - display: none; - position: relative; - padding: 2.0625rem 1.5rem; - transition: 0.25s; - cursor: pointer; - -webkit-user-select: none; - -moz-user-select: none; - -ms-user-select: none; - user-select: none; - opacity: .8; -} -.navicon-button .navicon:before, .navicon-button .navicon:after { - transition: 0.25s; -} -.navicon-button:hover { - transition: 0.5s; - opacity: 1; -} -.navicon-button:hover .navicon:before, .navicon-button:hover .navicon:after { - transition: 0.25s; -} -.navicon-button:hover .navicon:before { - top: .825rem; -} -.navicon-button:hover .navicon:after { - top: -.825rem; -} - -/* navicon */ -.navicon { - position: relative; - width: 2.5em; - height: .3125rem; - background: #000; - transition: 0.3s; - border-radius: 2.5rem; -} -.navicon:before, .navicon:after { - display: block; - content: ""; - height: .3125rem; - width: 2.5rem; - background: #000; - position: absolute; - z-index: -1; - transition: 0.3s 0.25s; - border-radius: 1rem; -} -.navicon:before { - top: .625rem; -} -.navicon:after { - top: -.625rem; -} - -/* open */ -.nav-trigger:checked + label:not(.steps) .navicon:before, -.nav-trigger:checked + label:not(.steps) .navicon:after { - top: 0 !important; -} - -.nav-trigger:checked + label .navicon:before, -.nav-trigger:checked + label .navicon:after { - transition: 0.5s; -} - -/* Minus */ -.nav-trigger:checked + label { - -webkit-transform: scale(0.75); - transform: scale(0.75); -} - -/* × and + */ -.nav-trigger:checked + label.plus .navicon, -.nav-trigger:checked + label.x .navicon { - background: transparent; -} - -.nav-trigger:checked + label.plus .navicon:before, -.nav-trigger:checked + label.x .navicon:before { - -webkit-transform: rotate(-45deg); - transform: rotate(-45deg); - background: #FFF; -} - -.nav-trigger:checked + label.plus .navicon:after, -.nav-trigger:checked + label.x .navicon:after { - -webkit-transform: rotate(45deg); - transform: rotate(45deg); - background: #FFF; -} - -.nav-trigger:checked + label.plus { - -webkit-transform: scale(0.75) rotate(45deg); - transform: scale(0.75) rotate(45deg); -} - -.nav-trigger:checked ~ nav { - left: 0 !important; -} - -.nav-trigger:checked ~ .overlay { - display: block; -} - -.nav-trigger { - position: fixed; - top: 0; - clip: rect(0, 0, 0, 0); -} - -.overlay { - display: none; - position: fixed; - top: 0; - bottom: 0; - left: 0; - right: 0; - width: 100%; - height: 100%; - background: hsla(0, 0%, 0%, 0.5); - z-index: 1; -} - -/* nav level */ -.level-hide { - display: none; -} -html[data-search-mode] .level-hide { - display: block; -} - - -@media only screen and (max-width: 680px) { - body { - overflow-x: hidden; - } - - nav { - background: #FFF; - width: 250px; - height: 100%; - position: fixed; - top: 0; - right: 0; - bottom: 0; - left: -250px; - z-index: 3; - padding: 0 10px; - transition: left 0.2s; - } - - .navicon-button { - display: inline-block; - position: fixed; - top: 1.5em; - right: 0; - z-index: 2; - } - - #main { - width: 100%; - } - - #main h1.page-title { - margin: 1em 0; - } - - #main section { - padding: 0; - } - - footer { - margin-left: 0; - } -} - -/** Add a '#' to static members */ -[data-type="member"] a::before { - content: '#'; - display: inline-block; - margin-left: -14px; - margin-right: 5px; -} - -#disqus_thread{ - margin-left: 30px; -} - -@font-face { - font-family: 'Montserrat'; - font-style: normal; - font-weight: 400; - src: url('../fonts/Montserrat/Montserrat-Regular.eot'); /* IE9 Compat Modes */ - src: url('../fonts/Montserrat/Montserrat-Regular.eot?#iefix') format('embedded-opentype'), /* IE6-IE8 */ - url('../fonts/Montserrat/Montserrat-Regular.woff2') format('woff2'), /* Super Modern Browsers */ - url('../fonts/Montserrat/Montserrat-Regular.woff') format('woff'), /* Pretty Modern Browsers */ - url('../fonts/Montserrat/Montserrat-Regular.ttf') format('truetype'); /* Safari, Android, iOS */ -} - -@font-face { - font-family: 'Montserrat'; - font-style: normal; - font-weight: 700; - src: url('../fonts/Montserrat/Montserrat-Bold.eot'); /* IE9 Compat Modes */ - src: url('../fonts/Montserrat/Montserrat-Bold.eot?#iefix') format('embedded-opentype'), /* IE6-IE8 */ - url('../fonts/Montserrat/Montserrat-Bold.woff2') format('woff2'), /* Super Modern Browsers */ - url('../fonts/Montserrat/Montserrat-Bold.woff') format('woff'), /* Pretty Modern Browsers */ - url('../fonts/Montserrat/Montserrat-Bold.ttf') format('truetype'); /* Safari, Android, iOS */ -} - -@font-face { - font-family: 'Source Sans Pro'; - src: url('../fonts/Source-Sans-Pro/sourcesanspro-regular-webfont.eot'); - src: url('../fonts/Source-Sans-Pro/sourcesanspro-regular-webfont.eot?#iefix') format('embedded-opentype'), - url('../fonts/Source-Sans-Pro/sourcesanspro-regular-webfont.woff2') format('woff2'), - url('../fonts/Source-Sans-Pro/sourcesanspro-regular-webfont.woff') format('woff'), - url('../fonts/Source-Sans-Pro/sourcesanspro-regular-webfont.ttf') format('truetype'), - url('../fonts/Source-Sans-Pro/sourcesanspro-regular-webfont.svg#source_sans_proregular') format('svg'); - font-weight: 400; - font-style: normal; -} - -@font-face { - font-family: 'Source Sans Pro'; - src: url('../fonts/Source-Sans-Pro/sourcesanspro-light-webfont.eot'); - src: url('../fonts/Source-Sans-Pro/sourcesanspro-light-webfont.eot?#iefix') format('embedded-opentype'), - url('../fonts/Source-Sans-Pro/sourcesanspro-light-webfont.woff2') format('woff2'), - url('../fonts/Source-Sans-Pro/sourcesanspro-light-webfont.woff') format('woff'), - url('../fonts/Source-Sans-Pro/sourcesanspro-light-webfont.ttf') format('truetype'), - url('../fonts/Source-Sans-Pro/sourcesanspro-light-webfont.svg#source_sans_prolight') format('svg'); - font-weight: 300; - font-style: normal; - -} \ No newline at end of file diff --git a/docs/styles/overwrites.css b/docs/styles/overwrites.css deleted file mode 100644 index 37596f1bb0..0000000000 --- a/docs/styles/overwrites.css +++ /dev/null @@ -1,19 +0,0 @@ -/* - * This file contains specific fixes and changes from some parts of the theme. - * - * This file is part of Prism and not of the theme! - */ - -pre.prettyprint > ol.linenums { - /* I don't know why but this fixes the extra little scroll bar some code block have. */ - margin-bottom: 1em; -} - -.description > *:not(pre) { - /* - * Text will span across the whole width of the page by default. - * This makes is really hard to read, so this will put a max width to the elements (except code block) of all - * description blocks, so text breaks after some width. - */ - max-width: 60em; -} diff --git a/docs/styles/prettify.css b/docs/styles/prettify.css deleted file mode 100644 index d9521ec85e..0000000000 --- a/docs/styles/prettify.css +++ /dev/null @@ -1,79 +0,0 @@ -.pln { - color: #ddd; -} - -/* string content */ -.str { - color: #61ce3c; -} - -/* a keyword */ -.kwd { - color: #fbde2d; -} - -/* a comment */ -.com { - color: #aeaeae; -} - -/* a type name */ -.typ { - color: #8da6ce; -} - -/* a literal value */ -.lit { - color: #fbde2d; -} - -/* punctuation */ -.pun { - color: #ddd; -} - -/* lisp open bracket */ -.opn { - color: #000000; -} - -/* lisp close bracket */ -.clo { - color: #000000; -} - -/* a markup tag name */ -.tag { - color: #8da6ce; -} - -/* a markup attribute name */ -.atn { - color: #fbde2d; -} - -/* a markup attribute value */ -.atv { - color: #ddd; -} - -/* a declaration */ -.dec { - color: #EF5050; -} - -/* a variable name */ -.var { - color: #c82829; -} - -/* a function name */ -.fun { - color: #4271ae; -} - -/* Specify class=linenums on a pre to get line numbering */ -ol.linenums { - margin-top: 0; - margin-bottom: 0; -} diff --git a/download.html b/download.html deleted file mode 100644 index 4d51e4c9df..0000000000 --- a/download.html +++ /dev/null @@ -1,185 +0,0 @@ - - - - - - -Download ▲ Prism - - - - - - - - - - -
-
- -

Customize your download

-

Select your compression level, as well as the languages and plugins you need.

-
- -
-
-

- Compression level: - - -

- -
- -

- Total filesize: ( JavaScript + CSS) -

-

Note: The filesizes displayed refer to non-gizipped files and include any CSS code required.

- -
-
-
-
- -
- -
-
- -
-
- -
- -
- -
- - - - - - - - - - - - diff --git a/eslint.config.mjs b/eslint.config.mjs new file mode 100644 index 0000000000..8f24cd52cc --- /dev/null +++ b/eslint.config.mjs @@ -0,0 +1,250 @@ +import js from '@eslint/js'; + +import { defineConfig } from 'eslint/config'; +import eslintConfigPrettier from 'eslint-config-prettier/flat'; +import eslintCommentsPlugin from 'eslint-plugin-eslint-comments'; +import jsdocPlugin from 'eslint-plugin-jsdoc'; +import regexpPlugin from 'eslint-plugin-regexp'; +import globals from 'globals'; + +import path from 'path'; +import { fileURLToPath } from 'url'; + +const __dirname = path.dirname(fileURLToPath(import.meta.url)); + +const config = [ + { + ignores: ['benchmark/downloads', 'benchmark/remotes', 'dist', 'node_modules', 'src/types.d.ts', 'types'], + }, + js.configs.recommended, + { + plugins: { + jsdoc: jsdocPlugin, + regexp: regexpPlugin, + }, + languageOptions: { + ecmaVersion: 'latest', + sourceType: 'module', + globals: { + ...globals.browser, + ...globals.node, + }, + }, + rules: { + 'no-use-before-define': ['warn', { 'functions': false, 'classes': false }], + 'eqeqeq': ['warn', 'always', { 'null': 'ignore' }], + + // stylistic rules + 'no-var': 'warn', + 'object-shorthand': ['warn', 'always', { avoidQuotes: true }], + 'one-var': ['warn', 'never'], + 'prefer-arrow-callback': 'warn', + 'prefer-const': ['warn', { 'destructuring': 'all' }], + 'prefer-spread': 'warn', + + // JSDoc + 'jsdoc/check-alignment': 'warn', + 'jsdoc/check-syntax': 'warn', + 'jsdoc/check-param-names': 'warn', + 'jsdoc/require-hyphen-before-param-description': ['warn', 'never'], + 'jsdoc/check-tag-names': 'warn', + 'jsdoc/check-types': 'warn', + 'jsdoc/empty-tags': 'warn', + 'jsdoc/tag-lines': [1, 'any', { 'startLines': 1 }], + 'jsdoc/require-param-name': 'warn', + 'jsdoc/require-property-name': 'warn', + + // regexp + 'regexp/no-dupe-disjunctions': 'warn', + 'regexp/no-empty-alternative': 'warn', + 'regexp/no-empty-capturing-group': 'warn', + 'regexp/no-empty-lookarounds-assertion': 'warn', + 'regexp/no-lazy-ends': 'warn', + 'regexp/no-obscure-range': 'warn', + 'regexp/no-optional-assertion': 'warn', + 'regexp/no-standalone-backslash': 'warn', + 'regexp/no-super-linear-backtracking': 'warn', + 'regexp/no-unused-capturing-group': 'warn', + 'regexp/no-zero-quantifier': 'warn', + 'regexp/optimal-lookaround-quantifier': 'warn', + + 'regexp/match-any': 'warn', + 'regexp/negation': 'warn', + 'regexp/no-dupe-characters-character-class': 'warn', + 'regexp/no-trivially-nested-assertion': 'warn', + 'regexp/no-trivially-nested-quantifier': 'warn', + 'regexp/no-useless-character-class': 'warn', + 'regexp/no-useless-flag': 'warn', + 'regexp/no-useless-lazy': 'warn', + 'regexp/no-useless-range': 'warn', + 'regexp/prefer-d': ['warn', { insideCharacterClass: 'ignore' }], + 'regexp/prefer-plus-quantifier': 'warn', + 'regexp/prefer-question-quantifier': 'warn', + 'regexp/prefer-star-quantifier': 'warn', + 'regexp/prefer-w': 'warn', + 'regexp/sort-alternatives': 'warn', + 'regexp/sort-flags': 'warn', + 'regexp/strict': 'warn', + + // I turned this rule off because we use `hasOwnProperty` in a lot of places + // TODO: Think about re-enabling this rule + 'no-prototype-builtins': 'off', + // TODO: Think about re-enabling this rule + 'no-inner-declarations': 'off', + // TODO: Think about re-enabling this rule + 'no-sparse-arrays': 'off', + + // turning off some regex rules + // these are supposed to protect against accidental use but we need those quite often + 'no-control-regex': 'off', + 'no-empty-character-class': 'off', + 'no-useless-escape': 'off', + }, + settings: { + regexp: { + // allow alphanumeric and cyrillic ranges + allowedCharacterRanges: ['alphanumeric', 'а-я', 'А-Я'], + }, + }, + }, + { + files: ['**/*.js'], + plugins: { + 'eslint-comments': eslintCommentsPlugin, + 'regexp': regexpPlugin, + }, + rules: { + ...eslintCommentsPlugin.configs.recommended.rules, + ...regexpPlugin.configs.recommended.rules, + + 'no-use-before-define': 'off', + + // I turned this rule off because we use `hasOwnProperty` in a lot of places + // TODO: Think about re-enabling this rule + 'no-prototype-builtins': 'off', + + // turning off some regex rules + // these are supposed to protect against accidental use but we need those quite often + 'no-control-regex': 'off', + 'no-empty-character-class': 'off', + 'no-useless-escape': 'off', + + 'eslint-comments/disable-enable-pair': ['warn', { allowWholeFile: true }], + }, + }, + { + // Browser-specific parts + files: ['src/auto-start.js'], + languageOptions: { + globals: { + ...globals.browser, + }, + }, + }, + { + // Plugins + files: ['src/plugins/**/*.js'], + languageOptions: { + globals: { + ...globals.browser, + }, + }, + }, + { + // Test files + files: ['tests/**'], + languageOptions: { + globals: { + ...globals.mocha, + ...globals.node, + }, + parserOptions: { + tsconfigRootDir: __dirname, + project: ['./tests/tsconfig.json'], + }, + }, + }, + { + // Benchmark + files: ['benchmark/**'], + languageOptions: { + globals: { + ...globals.node, + }, + parserOptions: { + tsconfigRootDir: __dirname, + project: ['./benchmark/tsconfig.json'], + }, + }, + }, + { + // Scripts + files: ['scripts/**'], + languageOptions: { + globals: { + ...globals.node, + }, + }, + }, + { + // Danger + files: ['dangerfile.js'], + languageOptions: { + globals: { + ...globals.node, + }, + }, + }, + { + // This file + files: ['eslint.config.mjs'], + languageOptions: { + globals: { + ...globals.node, + }, + }, + }, + eslintConfigPrettier, +]; + +export default defineConfig(replaceErrorsWithWarnings(config)); + +/* + * Many recommended ESLint configs default to "error" severity for some rules. + * However, we want all rules only to warn, not error. + * This function recursively traverses the config and downgrades all "error" severities to "warn". + * This ensures a consistent linting experience, even when extending third-party configs that use "error" by default. + */ +function replaceErrorsWithWarnings (config) { + if (Array.isArray(config)) { + return config.map(replaceErrorsWithWarnings); + } + + if (typeof config === 'object' && config !== null) { + const newConfig = { ...config }; + + if (newConfig.rules) { + newConfig.rules = Object.fromEntries( + Object.entries(newConfig.rules).map(([rule, setting]) => { + if (setting === 'error' || setting === 2) { + return [rule, 'warn']; + } + + if (Array.isArray(setting) && (setting[0] === 'error' || setting[0] === 2)) { + return [rule, ['warn', ...setting.slice(1)]]; + } + + return [rule, setting]; + }) + ); + } + + if (newConfig.overrides) { + newConfig.overrides = replaceErrorsWithWarnings(newConfig.overrides); + } + + return newConfig; + } + + return config; +} diff --git a/examples.html b/examples.html deleted file mode 100644 index 0d979d5981..0000000000 --- a/examples.html +++ /dev/null @@ -1,111 +0,0 @@ - - - - - - -Examples ▲ Prism - - - - - - - - - - -
-
- -

Examples

-

The examples in this page serve a dual purpose: They act as unit tests, making it easy to spot bugs, and at the same time demonstrate what Prism can do, on simple and on edge cases.

-
- -
-

Different markup

- -

code.language-css

- p { color: red; } - -

pre.language-css > code

-
p { color: red; }
- -

pre > code.language-css

-
p { color: red; }
- -

pre.language-css > code.language-*

-
p { color: red; }
- -

code.lang-css

- p { color: red; } - -

pre.lang-css > code

-
p { color: red; }
- -

pre > code

-

No language, should inherit .language-markup

-
<p>hi!</p>
- -

code.language-*

-

No language, should inherit .language-markup

- <p>hi!</p> - -

code.language-none

-

Should not be highlighted.

- <p>hi!</p> -
- -
-

Per language examples

-
-
-
- -
- - - - - - - - - - - diff --git a/examples/prism-abap.html b/examples/prism-abap.html deleted file mode 100644 index 103a454d58..0000000000 --- a/examples/prism-abap.html +++ /dev/null @@ -1,65 +0,0 @@ -

Comments

-

-* Line Comments
-" End of line comment used as line comment.
-value = 1. " End of line comment
-
-DATA:
-  "! ABAPDoc comment
-  value TYPE i.
-
- -

Strings

- -

-my_string = 'Simple string'.
-my_string = 'String with an escaped '' inside'.
-my_string = |A string template: { nvalue } times|.
-my_string = |A string template: { nvalue } times|.
-my_string = |Characters \|, \{, and \} have to be escaped by \\ in literal text.|.
-
- -

Numbers and Operators

- -

-value = 001 + 2 - 3 * 4 / 5 ** 6.
-
-IF value < 1 OR
-   value = 2 OR
-   value > 3 OR
-   value <> 4 OR
-   value <= 5 OR
-   value >= 6.
-ENDIF.
-
-" Dynamic object assignment (with type cast check)
-lo_interface ?= lo_class.
-
- -

Structures and Classes

- -

-DATA:
-  BEGIN OF my_structure,
-    scomponent TYPE i,
-  END OF my_structure.
-
-CLASS lcl_my_class DEFINITION.
-  PUBLIC SECTION.
-    METHODS my_method
-      RETURNING
-        VALUE(ret_value) TYPE i.
-ENDCLASS.
-
-CLASS lcl_my_class IMPLEMENTATION.
-  METHOD my_method.
-    ret_value = 1.
-  ENDMETHOD
-ENDCLASS.
-
-DATA lo_instace TYPE REF TO lcl_my_class.
-
-CREATE OBJECT lo_instace.
-
-my_structure-component = lo_instace->my_method( ).
-
diff --git a/examples/prism-abnf.html b/examples/prism-abnf.html deleted file mode 100644 index c983c985b8..0000000000 --- a/examples/prism-abnf.html +++ /dev/null @@ -1,60 +0,0 @@ -

Full example

-
rulelist       =  1*( rule / (*c-wsp c-nl) )
-
-rule           =  rulename defined-as elements c-nl
-                       ; continues if next line starts
-                       ;  with white space
-
-rulename       =  ALPHA *(ALPHA / DIGIT / "-")
-
-defined-as     =  *c-wsp ("=" / "=/") *c-wsp
-                       ; basic rules definition and
-                       ;  incremental alternatives
-
-elements       =  alternation *c-wsp
-
-c-wsp          =  WSP / (c-nl WSP)
-
-c-nl           =  comment / CRLF
-                       ; comment or newline
-
-comment        =  ";" *(WSP / VCHAR) CRLF
-
-alternation    =  concatenation
-                  *(*c-wsp "/" *c-wsp concatenation)
-
-concatenation  =  repetition *(1*c-wsp repetition)
-
-repetition     =  [repeat] element
-
-repeat         =  1*DIGIT / (*DIGIT "*" *DIGIT)
-
-element        =  rulename / group / option /
-                  char-val / num-val / prose-val
-
-group          =  "(" *c-wsp alternation *c-wsp ")"
-
-option         =  "[" *c-wsp alternation *c-wsp "]"
-
-char-val       =  DQUOTE *(%x20-21 / %x23-7E) DQUOTE
-                       ; quoted string of SP and VCHAR
-                       ;  without DQUOTE
-
-num-val        =  "%" (bin-val / dec-val / hex-val)
-
-bin-val        =  "b" 1*BIT
-                  [ 1*("." 1*BIT) / ("-" 1*BIT) ]
-                       ; series of concatenated bit values
-                       ;  or single ONEOF range
-
-dec-val        =  "d" 1*DIGIT
-                  [ 1*("." 1*DIGIT) / ("-" 1*DIGIT) ]
-
-hex-val        =  "x" 1*HEXDIG
-                  [ 1*("." 1*HEXDIG) / ("-" 1*HEXDIG) ]
-
-prose-val      =  "<" *(%x20-3D / %x3F-7E) ">"
-                       ; bracketed string of SP and VCHAR
-                       ;  without angles
-                       ; prose description, to be used as
-                       ;  last resort
diff --git a/examples/prism-actionscript.html b/examples/prism-actionscript.html deleted file mode 100644 index 9ef3987ead..0000000000 --- a/examples/prism-actionscript.html +++ /dev/null @@ -1,133 +0,0 @@ -

Comments

-
// Single line comment
-/* Multi-line
-comment */
- -

Literal values

-
17
-"hello"
--3
-9.4
-null
-true
-false
- -

Classes

-
class A {}
-class B extends A {}
- -

Inline XML

-
var employees:XML =
-    <employees>
-        <employee ssn="123-123-1234">
-            <name first="John" last="Doe"/>
-            <address>
-                <city>San Francisco</city>
-                <state>CA</state>
-                <zip>98765</zip>
-            </address>
-        </employee>
-        <employee ssn="789-789-7890">
-            <name first="Mary" last="Roe"/>
-            <address>
-                <city>Newton</city>
-                <state>MA</state>
-                <zip>01234</zip>
-            </address>
-        </employee>
-    </employees>;
- -

Full example

-
package {
-  import flash.display.*;
-  import flash.events.*;
-  import flash.filters.BlurFilter;
-  import flash.geom.*;
-  import flash.ui.*;
-  public class ch23ex2 extends Sprite {
-    protected const BMP_SCALE:Number = 1/2;
-    protected const D:Number = 1.015;
-    protected const DIM_EFFECT:ColorTransform = new ColorTransform(D, D, D);
-    protected const B:int = 16;
-    protected const BLUR_EFFECT:BlurFilter = new BlurFilter(B, B, 1);
-    protected var RLUT:Array, GLUT:Array, BLUT:Array;
-    protected var sourceBmp:BitmapData;
-    protected var colorBmp:BitmapData;
-    protected var touches:Array = new Array();
-    protected var fingerShape:Shape = new Shape();
-    public function ch23ex2() {
-      try {
-        var test:Class = Multitouch;
-        if (Multitouch.supportsTouchEvents) {
-          Multitouch.inputMode = MultitouchInputMode.TOUCH_POINT;
-          init();
-        } else {
-          trace("Sorry, this example requires multitouch.");
-        }
-      } catch (error:ReferenceError) {
-        trace("Sorry, but multitouch is not supported in this runtime.");
-      }
-    }
-    protected function init():void {
-      //create a black-and-white bitmap and a color bitmap, only show the color
-      sourceBmp = new BitmapData(
-        stage.stageWidth*BMP_SCALE, stage.stageHeight*BMP_SCALE, false, 0);
-      colorBmp = sourceBmp.clone();
-      var bitmap:Bitmap = new Bitmap(colorBmp, PixelSnapping.ALWAYS, true);
-      bitmap.width = stage.stageWidth; bitmap.height = stage.stageHeight;
-      addChild(bitmap);
-
-      //create finger shape to paste onto the bitmap under your touches
-      fingerShape.graphics.beginFill(0xffffff, 0.1);
-      fingerShape.graphics.drawEllipse(-15, -20, 30, 40);
-      fingerShape.graphics.endFill();
-
-      //create the palette map from a gradient
-      var gradient:Shape = new Shape();
-      var m:Matrix = new Matrix();
-      m.createGradientBox(256, 10);
-      gradient.graphics.beginGradientFill(GradientType.LINEAR,
-        [0x313ad8, 0x2dce4a, 0xdae234, 0x7a1c1c, 0x0f0303],
-        [1, 1, 1, 1, 1], [0, 0.4*256, 0.75*256, 0.9*256, 255], m);
-      gradient.graphics.drawRect(0, 0, 256, 10);
-      var gradientBmp:BitmapData = new BitmapData(256, 10, false, 0);
-      gradientBmp.draw(gradient);
-      RLUT = new Array(); GLUT = new Array(); BLUT = new Array();
-      for (var i:int = 0; i < 256; i++) {
-        var pixelColor:uint = gradientBmp.getPixel(i, 0);
-        //I drew the gradient backwards, so sue me
-        RLUT[256-i] = pixelColor & 0xff0000;
-        GLUT[256-i] = pixelColor & 0x00ff00;
-        BLUT[256-i] = pixelColor & 0x0000ff;
-      }
-
-      stage.addEventListener(TouchEvent.TOUCH_BEGIN, assignTouch);
-      stage.addEventListener(TouchEvent.TOUCH_MOVE, assignTouch);
-      stage.addEventListener(TouchEvent.TOUCH_END, removeTouch);
-      stage.addEventListener(Event.ENTER_FRAME, onEnterFrame);
-    }
-    protected function assignTouch(event:TouchEvent):void {
-      touches[event.touchPointID] = event;
-    }
-    protected function removeTouch(event:TouchEvent):void {
-      delete touches[event.touchPointID];
-    }
-    protected function onEnterFrame(event:Event):void {
-      for (var key:String in touches) {
-        var touch:TouchEvent = touches[key] as TouchEvent;
-        if (touch) {
-          //plaster the finger image under your finger
-          var m:Matrix = new Matrix();
-          m.translate(touch.stageX*BMP_SCALE, touch.stageY*BMP_SCALE);
-          sourceBmp.draw(fingerShape, m, null, BlendMode.ADD);
-        }
-      }
-      var O:Point = new Point(0, 0);
-      //blur and ever-so-slightly brighten the image to make the color last
-      sourceBmp.applyFilter(sourceBmp, sourceBmp.rect, O, BLUR_EFFECT);
-      sourceBmp.colorTransform(sourceBmp.rect, DIM_EFFECT);
-      //we've calculated the image in grayscale brightnesses, now make it color
-      colorBmp.paletteMap(sourceBmp, sourceBmp.rect, O, RLUT, GLUT, BLUT, null);
-    }
-  }
-}
diff --git a/examples/prism-ada.html b/examples/prism-ada.html deleted file mode 100644 index 1783027e7e..0000000000 --- a/examples/prism-ada.html +++ /dev/null @@ -1,35 +0,0 @@ -

Strings

-
"foo ""bar"" baz"
-"Multi-line strings are appended with a " &
-"ampersand symbole."
- -

Ada83 example

-
WITH ADA.TEXT_IO;
-
---  Comments look like this.
-
-PROCEDURE TEST IS
-BEGIN
-   ADA.TEXT_IO.PUT_LINE ("Hello");   --  Comments look like this.
-END TEST;
- -

Ada 2012 full example

-
with Ada.Text_IO; Use Ada.Text_IO;
-
---  Comments look like this.
-procedure Test is
-   procedure Bah with
-    Import        => True,   --  Shows the new aspect feature of the language.
-    Convention    => C,
-    External_Name => "bah";
-
-   type Things is range 1 .. 10;
-begin
-   Put_Line ("Hello");   --  Comments look like this.
-
-   Bah;  -- Call C function.
-
-   for Index in Things'Range loop
-      null;
-   end loop;
-end Test;
\ No newline at end of file diff --git a/examples/prism-agda.html b/examples/prism-agda.html deleted file mode 100644 index 2c3d2572ec..0000000000 --- a/examples/prism-agda.html +++ /dev/null @@ -1,169 +0,0 @@ -

Agda Full Example

-

** Copyright - this piece of code is a modified version of [https://plfa.github.io/Naturals/] by Philip Wadler, Wen Kokke, Jeremy G Siek and contributors.

-
-- 1.1 Naturals
-
-module plfa.part1.Naturals where
-
--- The standard way to enter Unicode math symbols in Agda
--- is to use the IME provided by agda-mode.
--- for example ℕ can be entered by typing \bN.
-
--- The inductive definition of natural numbers.
--- In Agda, data declarations correspond to axioms.
--- Also types correspond to sets.
--- CHAR: \bN → ℕ
-data ℕ : Set where
-	-- This corresponds to the `zero` rule in Dedekin-Peano's axioms.
-	-- Note that the syntax resembles Haskell GADTs.
-	-- Also note that the `has-type` operator is `:` (as in Idris), not `::` (as in Haskell).
-	zero : ℕ
-	-- This corresponds to the `succesor` rule in Dedekin-Peano's axioms.
-	-- In such a constructive system in Agda, induction rules etc comes by nature.
-	-- The function arrow can be either `->` or `→`.
-	-- CHAR: \to or \-> or \r- → →
-	suc  : ℕ → ℕ
-
--- EXERCISE `seven`
-seven : ℕ
-seven = suc (suc (suc (suc (suc (suc (suc zero))))))
-
--- This line is a compiler pragma.
--- It makes `ℕ` correspond to Haskell's type `Integer`
--- and allows us to use number literals (0, 1, 2, ...) to express `ℕ`.
-{-# BUILTIN NATURAL ℕ #-}
-
--- Agda has a module system corresponding to the project file structure.
--- e.g. `My.Namespace` is in
--- `project path/My/Namespace.agda`.
-
--- The `import` statement does NOT expose the names to the top namespace.
--- You'll have to use `My.Namespace.thing` instead of directly `thing`.
-import Relation.Binary.PropositionalEquality as Eq
--- The `open` statement unpacks all the names in a imported namespace and exposes them to the top namespace.
--- Alternatively the `open import` statement imports a namespace and opens it at the same time.
--- The `using (a; ..)` clause can limit a range of names to expose, instead of all of them.
--- Alternatively, the `hiding (a; ..)` clause can limit a range of names NOT to expose.
--- Also the `renaming (a to b; ..)` clause can rename names.
--- CHAR: \== → ≡
---       \gt → ⟨
---       \lt → ⟩
---       \qed → ∎
-open Eq using (_≡_; refl)
-open Eq.≡-Reasoning using (begin_; _≡⟨⟩_; _∎)
-
--- Addition of `ℕ`.
--- Note that Agda functions are *like* Haskell functions.
--- In Agda, operators can be mixfix (incl. infix, prefix, suffix, self-bracketing and many others).
--- All the `holes` are represented by `_`s. Unlike Haskell, operator names don't need to be put in parentheses.
--- Operators can also be called in the manner of normal functions.
--- e.g. a + b = _+_ a b.
--- Sections are also available, though somehow weird.
--- e.g. a +_ = _+_ a.
-_+_ : ℕ → ℕ → ℕ
--- Lhs can also be infix!
--- This is the standard definition in both Peano and Agda stdlib.
--- We do pattern match on the first parameter, it's both convention and for convenience.
--- Agda does a termination check on recursive function.
--- Here the first parameter decreases over evaluation thus it is *well-founded*.
-zero    + n = n
-(suc m) + n = suc (m + n)
-
--- Here we take a glance at the *dependent type*.
--- In dependent type, we can put values into type level, and vice versa.
--- This is especially useful when we're expecting to make the types more precise.
--- Here `_≡_` is a type that says that two values are *the same*, that is, samely constructed.
-_ : 2 + 3 ≡ 5
--- We can do it by ≡-Reasoning, that is writing a (unreasonably long) chain of equations.
-_ =
-	begin
-		2 + 3
-	≡⟨⟩ -- This operator means the lhs and rhs can be reduced to the same form so that they are equal.
-		suc (1 + 3)
-	≡⟨⟩
-		suc (suc (0 + 3)) -- Just simulating the function evaluation
-	≡⟨⟩
-		suc (suc 3)
-	≡⟨⟩
-		5
-	∎ -- The *tombstone*, QED.
-
--- Well actually we can also get this done by simply writing `refl`.
--- `refl` is a proof that says "If two values evaluates to the same form, then they are equal".
--- Since Agda can automatically evaluate the terms for us, this makes sense.
-_ : 2 + 3 ≡ 5
-_ = refl
-
--- Multiplication of `ℕ`, defined with addition.
-_*_ : ℕ → ℕ → ℕ
--- Here we can notice that in Agda we prefer to indent by *visual blocks* instead by a fixed number of spaces.
-zero    * n = zero
--- Here the addition is at the front, to be consistent with addition.
-(suc m) * n = n + (m * n)
-
--- EXERCISE `_^_`, Exponentation of `ℕ`.
-_^_ : ℕ → ℕ → ℕ
--- We can only pattern match the 2nd argument.
-m ^ zero    = suc zero
-m ^ (suc n) = m * (m ^ n)
-
--- *Monus* (a wordplay on minus), the non-negative subtraction of `ℕ`.
--- if less than 0 then we get 0.
--- CHAR: \.- → ∸
-_∸_ : ℕ → ℕ → ℕ
-m     ∸ zero  = m
-zero  ∸ suc n = zero
-suc m ∸ suc n = m ∸ n
-
--- Now we define the precedence of the operators, as in Haskell.
-infixl 6 _+_ _∸_
-infixl 7 _*_
-
--- These are some more pragmas. Should be self-explaining.
-{-# BUILTIN NATPLUS _+_ #-}
-{-# BUILTIN NATTIMES _*_ #-}
-{-# BUILTIN NATMINUS _∸_ #-}
-
--- EXERCISE `Bin`. We define a binary representation of natural numbers.
--- Leading `O`s are acceptable.
-data Bin : Set where
-	⟨⟩ : Bin
-	_O : Bin → Bin
-	_I : Bin → Bin
-
--- Like `suc` for `Bin`.
-inc : Bin → Bin
-inc ⟨⟩ = ⟨⟩ I
-inc (b O) = b I
-inc (b I) = (inc b) O
-
--- `ℕ` to `Bin`. This is a Θ(n) solution and awaits a better Θ(log n) reimpelementation.
-to : ℕ → Bin
-to zero    = ⟨⟩ O
-to (suc n) = inc (to n)
-
--- `Bin` to `ℕ`.
-from : Bin → ℕ
-from ⟨⟩    = 0
-from (b O) = 2 * (from b)
-from (b I) = 1 + 2 * (from b)
-
--- Simple tests from 0 to 4.
-_ : from (to 0) ≡ 0
-_ = refl
-
-_ : from (to 1) ≡ 1
-_ = refl
-
-_ : from (to 2) ≡ 2
-_ = refl
-
-_ : from (to 3) ≡ 3
-_ = refl
-
-_ : from (to 4) ≡ 4
-_ = refl
-
--- EXERCISE END `Bin`
-
--- STDLIB: import Data.Nat using (ℕ; zero; suc; _+_; _*_; _^_; _∸_)
-
\ No newline at end of file diff --git a/examples/prism-al.html b/examples/prism-al.html deleted file mode 100644 index 8b5c2086af..0000000000 --- a/examples/prism-al.html +++ /dev/null @@ -1,60 +0,0 @@ -

Full example

-
// Source: https://github.com/microsoft/AL/blob/master/samples/ControlAddIn/al/Page/CustomerCardAddIn.al
-
-pageextension 50300 CustomerCardAddIn extends "Customer Card"
-{
-	layout
-	{
-		addafter(Blocked)
-		{
-			usercontrol(ControlName; TestAddIn)
-			{
-				ApplicationArea = All;
-
-				trigger Callback(i : integer; s: text; d : decimal; c : char)
-				begin
-					Message('Got from js: %1, %2, %3, %4', i, s, d, c);
-				end;
-			}
-		}
-	}
-
-	actions
-	{
-		addafter(Approve)
-		{
-			action(CallJavaScript)
-			{
-				ApplicationArea = All;
-
-				trigger OnAction();
-				begin
-					CurrPage.ControlName.CallJavaScript(5, 'text', 6.3, 'c');
-				end;
-			}
-
-			action(CallViaCodeunit)
-			{
-				ApplicationArea = All;
-
-				trigger OnAction();
-				var c : Codeunit AddInHelpers;
-				begin
-					c.CallJavaScript(CurrPage.ControlName);
-				end;
-			}
-
-			action(CallStaleControlAddIn)
-			{
-				ApplicationArea = All;
-
-				trigger OnAction();
-				var c : Codeunit AddInHelpersSingleton;
-				begin
-					c.CallStaleAddInMethod();
-					Message('Probably nothing should happen...');
-				end;
-			}
-		}
-	}
-}
diff --git a/examples/prism-antlr4.html b/examples/prism-antlr4.html deleted file mode 100644 index 2a4753e85d..0000000000 --- a/examples/prism-antlr4.html +++ /dev/null @@ -1,75 +0,0 @@ -

Full example

-
// Source: https://github.com/antlr/grammars-v4/blob/master/json/JSON.g4
-
-/** Taken from "The Definitive ANTLR 4 Reference" by Terence Parr */
-
-// Derived from http://json.org
-grammar JSON;
-
-json
-   : value
-   ;
-
-obj
-   : '{' pair (',' pair)* '}'
-   | '{' '}'
-   ;
-
-pair
-   : STRING ':' value
-   ;
-
-array
-   : '[' value (',' value)* ']'
-   | '[' ']'
-   ;
-
-value
-   : STRING
-   | NUMBER
-   | obj
-   | array
-   | 'true'
-   | 'false'
-   | 'null'
-   ;
-
-
-STRING
-   : '"' (ESC | SAFECODEPOINT)* '"'
-   ;
-
-
-fragment ESC
-   : '\\' (["\\/bfnrt] | UNICODE)
-   ;
-fragment UNICODE
-   : 'u' HEX HEX HEX HEX
-   ;
-fragment HEX
-   : [0-9a-fA-F]
-   ;
-fragment SAFECODEPOINT
-   : ~ ["\\\u0000-\u001F]
-   ;
-
-
-NUMBER
-   : '-'? INT ('.' [0-9] +)? EXP?
-   ;
-
-fragment INT
-   : '0' | [1-9] [0-9]*
-   ;
-
-// no leading zeros
-
-fragment EXP
-   : [Ee] [+\-]? INT
-   ;
-
-// \- since - means "range" inside [...]
-
-WS
-   : [ \t\n\r] + -> skip
-   ;
diff --git a/examples/prism-apacheconf.html b/examples/prism-apacheconf.html deleted file mode 100644 index f6953e1b0d..0000000000 --- a/examples/prism-apacheconf.html +++ /dev/null @@ -1,54 +0,0 @@ -

Comments

-
# This is a comment
-# <VirtualHost *:80>
-
- -

Directives

-
<Files .htaccess>
-	Order allow,deny
-	Deny from all
-</Files>
-
- -

Variables

-
RewriteCond %{REQUEST_FILENAME}.php -f
- -

Regex

-
^(.*)$
-!^www\.
- -

Directive flags

-
[NC]
-[RC=301,L]
- -

Strings

-
AuthName "Fichiers réservés"
- -

Full example

-
## BASIC PASSWORD PROTECTION
-AuthType basic
-AuthName "prompt"
-AuthUserFile /.htpasswd
-AuthGroupFile /dev/null
-Require valid-user
-
-## ALLOW FROM IP OR VALID PASSWORD
-Require valid-user
-Allow from 192.168.1.23
-Satisfy Any
-
-## PROTECT FILES
-Order Allow,Deny
-Deny from all
-
-## REQUIRE SUBDOMAIN
-RewriteCond %{HTTP_HOST} !^$
-RewriteCond %{HTTP_HOST} !^subdomain\.domain\.tld$ [NC]
-RewriteRule ^/(.*)$ http://subdomain.domain.tld/$1 [L,R=301]
-
-ErrorDocument 403 http://www.example.com/logo.gif
-ErrorDocument 403 /images/you_bad_hotlinker.gif
-
-## REDIRECT UPLOADS
-RewriteCond %{REQUEST_METHOD} ^(PUT|POST)$ [NC]
-RewriteRule ^(.*)$ /cgi-bin/form-upload-processor.cgi?p=$1 [L,QSA]
\ No newline at end of file diff --git a/examples/prism-apex.html b/examples/prism-apex.html deleted file mode 100644 index f942f29da3..0000000000 --- a/examples/prism-apex.html +++ /dev/null @@ -1,152 +0,0 @@ -

Full example

-
// source: https://developer.salesforce.com/docs/atlas.en-us.apexcode.meta/apexcode/apex_shopping_cart_example_code.htm
-
-trigger calculate on Item__c (after insert, after update, after delete) {
-
-// Use a map because it doesn't allow duplicate values
-
-Map<ID, Shipping_Invoice__C> updateMap = new Map<ID, Shipping_Invoice__C>();
-
-// Set this integer to -1 if we are deleting
-Integer subtract ;
-
-// Populate the list of items based on trigger type
-List<Item__c> itemList;
-	if(trigger.isInsert || trigger.isUpdate){
-		itemList = Trigger.new;
-		subtract = 1;
-	}
-	else if(trigger.isDelete)
-	{
-		// Note -- there is no trigger.new in delete
-		itemList = trigger.old;
-		subtract = -1;
-	}
-
-// Access all the information we need in a single query
-// rather than querying when we need it.
-// This is a best practice for bulkifying requests
-
-set<Id> AllItems = new set<id>();
-
-for(item__c i :itemList){
-// Assert numbers are not negative.
-// None of the fields would make sense with a negative value
-
-System.assert(i.quantity__c > 0, 'Quantity must be positive');
-System.assert(i.weight__c >= 0, 'Weight must be non-negative');
-System.assert(i.price__c >= 0, 'Price must be non-negative');
-
-// If there is a duplicate Id, it won't get added to a set
-AllItems.add(i.Shipping_Invoice__C);
-}
-
-// Accessing all shipping invoices associated with the items in the trigger
-List<Shipping_Invoice__C> AllShippingInvoices = [SELECT Id, ShippingDiscount__c,
-                   SubTotal__c, TotalWeight__c, Tax__c, GrandTotal__c
-                   FROM Shipping_Invoice__C WHERE Id IN :AllItems];
-
-// Take the list we just populated and put it into a Map.
-// This will make it easier to look up a shipping invoice
-// because you must iterate a list, but you can use lookup for a map,
-Map<ID, Shipping_Invoice__C> SIMap = new Map<ID, Shipping_Invoice__C>();
-
-for(Shipping_Invoice__C sc : AllShippingInvoices)
-{
-	SIMap.put(sc.id, sc);
-}
-
-// Process the list of items
-	if(Trigger.isUpdate)
-	{
-		// Treat updates like a removal of the old item and addition of the
-		// revised item rather than figuring out the differences of each field
-		// and acting accordingly.
-		// Note updates have both trigger.new and trigger.old
-		for(Integer x = 0; x < Trigger.old.size(); x++)
-		{
-			Shipping_Invoice__C myOrder;
-			myOrder = SIMap.get(trigger.old[x].Shipping_Invoice__C);
-
-			// Decrement the previous value from the subtotal and weight.
-			myOrder.SubTotal__c -= (trigger.old[x].price__c *
-			                        trigger.old[x].quantity__c);
-			myOrder.TotalWeight__c -= (trigger.old[x].weight__c *
-			                           trigger.old[x].quantity__c);
-
-			// Increment the new subtotal and weight.
-			myOrder.SubTotal__c += (trigger.new[x].price__c *
-			                        trigger.new[x].quantity__c);
-			myOrder.TotalWeight__c += (trigger.new[x].weight__c *
-			                           trigger.new[x].quantity__c);
-		}
-
-		for(Shipping_Invoice__C myOrder : AllShippingInvoices)
-		{
-
-			// Set tax rate to 9.25%  Please note, this is a simple example.
-			// Generally, you would never hard code values.
-			// Leveraging Custom Settings for tax rates is a best practice.
-			// See Custom Settings in the Apex Developer Guide
-			// for more information.
-			myOrder.Tax__c = myOrder.Subtotal__c * .0925;
-
-			// Reset the shipping discount
-			myOrder.ShippingDiscount__c = 0;
-
-			// Set shipping rate to 75 cents per pound.
-			// Generally, you would never hard code values.
-			// Leveraging Custom Settings for the shipping rate is a best practice.
-			// See Custom Settings in the Apex Developer Guide
-			// for more information.
-			myOrder.Shipping__c = (myOrder.totalWeight__c * .75);
-			myOrder.GrandTotal__c = myOrder.SubTotal__c + myOrder.tax__c +
-			                        myOrder.Shipping__c;
-			updateMap.put(myOrder.id, myOrder);
-		}
-	}
-	else
-	{
-		for(Item__c itemToProcess : itemList)
-		{
-			Shipping_Invoice__C myOrder;
-
-			// Look up the correct shipping invoice from the ones we got earlier
-			myOrder = SIMap.get(itemToProcess.Shipping_Invoice__C);
-			myOrder.SubTotal__c += (itemToProcess.price__c *
-			                        itemToProcess.quantity__c * subtract);
-			myOrder.TotalWeight__c += (itemToProcess.weight__c *
-			                           itemToProcess.quantity__c * subtract);
-		}
-
-		for(Shipping_Invoice__C myOrder : AllShippingInvoices)
-		{
-
-			// Set tax rate to 9.25%  Please note, this is a simple example.
-			// Generally, you would never hard code values.
-			// Leveraging Custom Settings for tax rates is a best practice.
-			// See Custom Settings in the Apex Developer Guide
-			// for more information.
-			myOrder.Tax__c = myOrder.Subtotal__c * .0925;
-
-			// Reset shipping discount
-			myOrder.ShippingDiscount__c = 0;
-
-			// Set shipping rate to 75 cents per pound.
-			// Generally, you would never hard code values.
-			// Leveraging Custom Settings for the shipping rate is a best practice.
-			// See Custom Settings in the Apex Developer Guide
-			// for more information.
-			myOrder.Shipping__c = (myOrder.totalWeight__c * .75);
-			myOrder.GrandTotal__c = myOrder.SubTotal__c + myOrder.tax__c +
-			                        myOrder.Shipping__c;
-
-			updateMap.put(myOrder.id, myOrder);
-
-		}
-	}
-
-	// Only use one DML update at the end.
-	// This minimizes the number of DML requests generated from this trigger.
-	update updateMap.values();
-}
diff --git a/examples/prism-apl.html b/examples/prism-apl.html deleted file mode 100644 index 61a7e4694c..0000000000 --- a/examples/prism-apl.html +++ /dev/null @@ -1,26 +0,0 @@ -

Comments

-
#!/usr/bin/env runapl
-a←1 2 3 ⍝ this is a comment
- -

Strings

-
''
-'foobar'
-'foo''bar''baz'
- -

Numbers

-
42
-3.14159
-¯2
-∞
-2.8e¯4
-2j3
-¯4.3e2J1.9e¯4
- -

Primitive functions

-
a+b×c⍴⍳10
- -

Operators

-
+/ f⍣2
- -

Dfns

-
{0=⍴⍴⍺:'hello' ⋄ ∇¨⍵}
\ No newline at end of file diff --git a/examples/prism-applescript.html b/examples/prism-applescript.html deleted file mode 100644 index 9567b87148..0000000000 --- a/examples/prism-applescript.html +++ /dev/null @@ -1,26 +0,0 @@ -

Comments

-
-- Single line comment
-#!/usr/bin/osascript
-(* Here is
-a block
-comment *)
- -

Strings

-
"foo \"bar\" baz"
- -

Operators

-
a ≠ b
-12 + 2 * 5
-"DUMPtruck" is equal to "dumptruck"
-"zebra" comes after "aardvark"
-{ "this", "is", 2, "cool" } starts with "this"
-{ "is", 2} is contained by { "this", "is", 2, "cool" }
-set docRef to a reference to the first document
-
- -

Classes and units

-
tell application "Finder"
-text 1 thru 5 of "Bring me the mouse."
-set averageTemp to 63 as degrees Fahrenheit
-set circleArea to (pi * 7 * 7) as square yards
-
diff --git a/examples/prism-aql.html b/examples/prism-aql.html deleted file mode 100644 index e195fe3241..0000000000 --- a/examples/prism-aql.html +++ /dev/null @@ -1,17 +0,0 @@ -

Full example

-
FOR u IN users
-    FOR f IN friends
-        FILTER u.active == @active && f.active == true && u.id == f.userId
-        RETURN { "name" : u.name, "friends" : friends }
-
-LET name = "Peter"
-LET age = 42
-RETURN { name, age }
-
-FOR u IN users
-    FILTER u.status == "not active"
-    UPDATE u WITH { status: "inactive" } IN users
-
-FOR i IN 1..100
-    INSERT { value: i } IN test
-    RETURN NEW
diff --git a/examples/prism-arduino.html b/examples/prism-arduino.html deleted file mode 100644 index cc96f2657e..0000000000 --- a/examples/prism-arduino.html +++ /dev/null @@ -1,63 +0,0 @@ -

Strings

-
"foo \"bar\" baz"
-'foo \'bar\' baz'
-"Multi-line strings ending with a \
-are supported too."
- -

Macro statements

-
#include <Bridge.h>
-#define SOME_PIN 11
-
- -

Booleans

-
true;
-false;
- -

Operators

-
a < b;
-c && d;
- -

Full example

-
#include <Bridge.h>
-
-// pin of the piezo speaker
-int piezo = 8;
-
-/**
- * setups
- * runs once before everyhing else
- */
-void setup() {
-    pinMode(piezo, OUTPUT);
-}
-
-/**
- * loop
- * this will run forever and do what we want
- */
-void loop() {
-    playMelody(1);
-    delay(1000);
-}
-
-/**
- * playMelody
- * will play a simple melody on piezo speaker
- */
-void playMelody(int times) {
-    int melody[] = { 4699, 4699, 3520, 4699 };
-    int duration = 6;
-
-    for( int t = 0; t < times; t++ ) {
-        for( int i = 0; i < 4; i++ ) {
-            // pass tone to selected pin
-            tone(piezoPin, melody[i], 1000/duration);
-
-            // get a bit of time between the tones
-            delay(1000 / duration * 1.30 + 80);
-
-            // and don't forget to switch of the tone afterwards
-            noTone(piezoPin);
-        }
-    }
-}
diff --git a/examples/prism-arff.html b/examples/prism-arff.html deleted file mode 100644 index 418120996a..0000000000 --- a/examples/prism-arff.html +++ /dev/null @@ -1,46 +0,0 @@ -

Comments

-
%
-% Some comments
-%
-%
- -

Keywords

-
@attribute
-@data
-@relation
- -

Numbers

-
42
-0.14
- -

Strings

-
'Single \'quoted\' string'
-"Double \"quoted\" string"
- -

Full example

-
% 1. Title: Iris Plants Database
-%
-% 2. Sources:
-%      (a) Creator: R.A. Fisher
-%      (b) Donor: Michael Marshall (MARSHALL%PLU@io.arc.nasa.gov)
-%      (c) Date: July, 1988
-%
-@RELATION iris
-
-@ATTRIBUTE sepallength  NUMERIC
-@ATTRIBUTE sepalwidth   NUMERIC
-@ATTRIBUTE petallength  NUMERIC
-@ATTRIBUTE petalwidth   NUMERIC
-@ATTRIBUTE class        {Iris-setosa,Iris-versicolor,Iris-virginica}
-
-@DATA
-5.1,3.5,1.4,0.2,Iris-setosa
-4.9,3.0,1.4,0.2,Iris-setosa
-4.7,3.2,1.3,0.2,Iris-setosa
-4.6,3.1,1.5,0.2,Iris-setosa
-5.0,3.6,1.4,0.2,Iris-setosa
-5.4,3.9,1.7,0.4,Iris-setosa
-4.6,3.4,1.4,0.3,Iris-setosa
-5.0,3.4,1.5,0.2,Iris-setosa
-4.4,2.9,1.4,0.2,Iris-setosa
-4.9,3.1,1.5,0.1,Iris-setosa
diff --git a/examples/prism-armasm.html b/examples/prism-armasm.html deleted file mode 100644 index d119f22fd2..0000000000 --- a/examples/prism-armasm.html +++ /dev/null @@ -1,13 +0,0 @@ -

Full example

-
; Source: https://developer.arm.com/documentation/dui0473/c/writing-arm-assembly-language/subroutines-calls
-        AREA    subrout, CODE, READONLY     ; Name this block of code
-        ENTRY                     ; Mark first instruction to execute
-start   MOV     r0, #10           ; Set up parameters
-        MOV     r1, #3
-        BL      doadd             ; Call subroutine
-stop    MOV     r0, #0x18         ; angel_SWIreason_ReportException
-        LDR     r1, =0x20026      ; ADP_Stopped_ApplicationExit
-        SVC     #0x123456         ; ARM semihosting (formerly SWI)
-doadd   ADD     r0, r0, r1        ; Subroutine code
-        BX      lr                ; Return from subroutine
-        END                       ; Mark end of file
diff --git a/examples/prism-arturo.html b/examples/prism-arturo.html deleted file mode 100644 index fbd8c12b86..0000000000 --- a/examples/prism-arturo.html +++ /dev/null @@ -1,421 +0,0 @@ -

Full example

-
; this is a comment
-; this is another comment
-
-;---------------------------------
-; VARIABLES & VALUES
-;---------------------------------
-
-; numbers
-a1: 2
-a2: 3.14
-a3: to :complex [1 2.0]     ; 1.0+2.0i
-
-; strings
-c1: "this is a string"
-c2: {
-    this is a multiline string
-    that is indentation-agnostic
-}
-c3: {:
-    this is 
-        a verbatim
-            multiline string
-                which will remain exactly
-                    as the original
-:}
-
-; characters
-ch: `c`
-
-; blocks/arrays
-d: [1 2 3]
-
-; dictionaries
-e: #[
-    name: "John"
-    surname: "Doe"
-    age: 34
-    likes: [pizza spaghetti]
-]
-
-; yes, functions are values too
-f: function [x][
-    2 * x
-]
-
-; colors - right, you can directly define them as well!
-g1: #red
-g2: #0077BF
-
-; dates
-h: now              ; 2021-05-03T17:10:48+02:00
-
-; logical values
-i1: true
-i2: false
-i3: maybe
-
-;---------------------------------
-; BASIC OPERATORS
-;---------------------------------
-
-; simple arithmetic
-1 + 1       ; => 2
-8 - 1       ; => 7
-4.2 - 1.1   ; => 3.1
-10 * 2      ; => 20
-35 / 4      ; => 8
-35 // 4     ; => 8.75
-2 ^ 5       ; => 32
-5 % 3       ; => 2
-
-; bitwise operators
-and 3 5     ; => 1
-or 3 5      ; => 7
-xor 3 5     ; => 6
-
-; pre-defined constants
-pi          ; => 3.141592653589793
-epsilon     ; => 2.718281828459045
-null        ; => null
-true        ; => true
-false       ; => false
-
-;---------------------------------
-; COMPARISON OPERATORS
-;---------------------------------
-
-; equality
-1 = 1       ; => true
-2 = 1       ; => false
-
-; inequality
-1 <> 1      ; => false
-2 <> 1      ; => true
-
-; more comparisons
-1 < 10      ; => true
-1 =< 10     ; => true
-10 =< 10    ; => true
-1 > 10      ; => false
-1 >= 10     ; => false
-11 >= 10    ; => true
-
-;---------------------------------
-; CONDITIONALS
-;---------------------------------
-
-; logical operators
-and? true true      ; => true
-and? true false     ; => false
-or? true false      ; => true
-or? false false     ; => false
-
-and? [1=2][2<3]     ; => false 
-                    ; (the second block will not be evaluated)
-
-; simple if statements
-if 2 > 1 [ print "yes!"]    ; yes!
-if 3 <> 2 -> print "true!"  ; true!
-
-; if/else statements
-if? 2 > 3 -> print "2 is greater than 3"
-else -> print "2 is not greater than 3"         ; 2 is not greater than 3
-
-; switch statements
-switch 2 > 3 -> print "2 is greater than 3"
-                -> print "2 is not greater than 3" ; 2 is not greater than 3
-
-a: (2 > 3)["yes"]["no"]         ; a: "no"
-a: (2 > 3)? -> "yes" -> "no"    ; a: "no" (exactly the same as above)
-
-; case/when statements
-case [1]
-    when? [>2] -> print "1 is greater than 2. what?!"
-    when? [<0] -> print "1 is less than 0. nope..."
-    else -> print "here we are!"                ; here we are!
-
-;---------------------------------
-; LOOPS
-;---------------------------------
-
-; with `loop`
-arr: [1 4 5 3]
-loop arr 'x [
-    print ["x =" x]
-]
-; x = 1
-; x = 4
-; x = 5
-; x = 3
-
-; with loop and custom index
-loop.with:'i arr 'x [
-    print ["item at position" i "=>" x]
-]
-; item at position 0 => 1
-; item at position 1 => 4
-; item at position 2 => 5
-; item at position 3 => 3
-
-; using ranges
-loop 1..3 'x ->         ; since it's a single statement
-    print x             ; there's no need for [block] notation
-                        ; we can wrap it up using the `->` syntactic sugar
-
-loop `a`..`c` 'ch ->
-    print ch
-; a
-; b
-; c
-
-; picking multiple items
-loop 1..10 [x y] ->
-    print ["x =" x ", y =" y]
-; x = 1 , y = 2 
-; x = 3 , y = 4 
-; x = 5 , y = 6 
-; x = 7 , y = 8 
-; x = 9 , y = 10 
-
-; looping through a dictionary
-dict: #[name: "John", surname: "Doe", age: 34]
-loop dict [key value][
-    print [key "->" value]
-]
-; name -> John 
-; surname -> Doe 
-; age -> 34 
-                    
-; while loops
-i: new 0
-while [i<3][
-    print ["i =" i]
-    inc 'i
-]
-; i = 0
-; i = 1
-; i = 2
-    
-;---------------------------------
-; STRINGS
-;---------------------------------
-
-; case
-a: "tHis Is a stRinG"
-print upper a               ; THIS IS A STRING
-print lower a               ; this is a string
-print capitalize a          ; THis Is a stRinG
-
-; concatenation
-a: "Hello " ++ "World!"     ; a: "Hello World!"
-
-; strings as an array
-split "hello"               ; => [h e l l o]
-split.words "hello world"   ; => [hello world]
-
-print first "hello"         ; h
-print last "hello"          ; o
-
-; conversion
-to :string 123              ; => "123"
-to :integer "123"           ; => 123
-
-; joining strings together
-join ["hello" "world"]              ; => "helloworld"
-join.with:"-" ["hello" "world"]     ; => "hello-world"
-
-; string interpolation
-x: 2
-print ~"x = |x|"            ; x = 2
-
-; interpolation with `print`
-print ["x =" x]             ; x = 2
-                            ; (`print` works by calculating the given block
-                            ;  and joining the different values as strings
-                            ;  with a single space between them)
-
-; templates
-print render.template {
-    <||= switch x=2 [ ||>
-        Yes, x = 2
-    <||][||>
-        No, x is not 2
-    <||]||> 
-} ; Yes, x = 2
-
-; matching
-prefix? "hello" "he"        ; => true
-suffix? "hello" "he"        ; => false
-
-contains? "hello" "ll"      ; => true
-contains? "hello" "he"      ; => true
-contains? "hello" "x"       ; => false
-
-in? "ll" "hello"            ; => true 
-in? "x" "hello"             ; => false
-
-;---------------------------------
-; BLOCKS
-;---------------------------------
-
-; calculate a block
-arr: [1 1+1 1+1+1]
-@arr                        ; => [1 2 3]
-
-; execute a block
-sth: [print "Hello world"]  ; this is perfectly valid,
-                            ; could contain *anything*
-                            ; and will not be executed...
-
-do sth                      ; Hello world
-                            ; (...until we tell it to)
-
-; array indexing
-arr: ["zero" "one" "two" "three"]
-print first arr             ; zero
-print arr\0                 ; zero
-print last arr              ; three
-print arr\3                 ; three
-
-x: 2
-print get arr x             ; two
-print arr\[x]               ; two
-
-; setting an array element
-arr\0: "nada"
-set arr 2 "dos"
-print arr                   ; nada one dos three
-
-; adding elements to an array
-arr: new []
-'arr ++ "one"
-'arr ++ "two"
-print arr                   ; one two
-
-; remove elements from an array
-arr: new ["one" "two" "three" "four"]
-'arr -- "two"               ; arr: ["one" "three" "four"]
-remove 'arr .index 0        ; arr: ["three" "four"]
-
-; getting the size of an array
-arr: ["one" 2 "three" 4]
-print size arr              ; 4
-
-; getting a slice of an array
-print slice ["one" "two" "three" "four"] 0 1        ; one two
-
-; check if array contains a specific element
-print contains? arr "one"   ; true
-print contains? arr "five"  ; false
-
-; sorting array
-arr: [1 5 3 2 4]
-sort arr                    ; => [1 2 3 4 5]
-sort.descending arr         ; => [5 4 3 2 1]
-
-; mapping values
-map 1..10 [x][2*x]          ; => [2 4 6 8 10 12 14 16 18 20]
-map 1..10 'x -> 2*x         ; same as above
-map 1..10 => [2*&]          ; same as above
-map 1..10 => [2*]           ; same as above
-
-; selecting/filtering array values
-select 1..10 [x][odd? x]    ; => [1 3 5 7 9]
-select 1..10 => odd?        ; same as above
-
-filter 1..10 => odd?        ; => [2 4 6 8 10]
-                            ; (now, we leave out all odd numbers - 
-                            ;  while select keeps them)
-
-; misc operations
-arr: ["one" 2 "three" 4]
-reverse arr                 ; => [4 "three" 2 "one"]
-shuffle arr                 ; => [2 4 "three" "one"]
-unique [1 2 3 2 3 1]        ; => [1 2 3]
-permutate [1 2 3]           ; => [[1 2 3] [1 3 2] [3 1 2] [2 1 3] [2 3 1] [3 2 1]]
-take 1..10 3                ; => [1 2 3]
-repeat [1 2] 3              ; => [1 2 1 2 1 2]
-
-;---------------------------------
-; FUNCTIONS
-;---------------------------------
-
-; declaring a function
-f: function [x][ 2*x ]
-f: function [x]-> 2*x       ; same as above
-f: $[x]->2*x                ; same as above (only using the `$` alias 
-                            ;  for the `function`... function)
-
-; calling a function
-f 10                        ; => 20
-
-; returning a value
-g: function [x][
-    if x < 2 -> return 0
-
-    res: 0
-    loop 0..x 'z [
-        res: res + z
-    ]
-    return res
-]
-
-;---------------------------------
-; CUSTOM TYPES
-;---------------------------------
-
-; defining a custom type
-define :person [                            ; define a new custom type "Person"
-    name                                    ; with fields: name, surname, age
-    surname
-    age 
-][ 
-    ; with custom post-construction initializer
-    init: [
-        this\name: capitalize this\name
-    ]
-
-    ; custom print function
-    print: [
-        render "NAME: |this\name|, SURNAME: |this\surname|, AGE: |this\age|"
-    ]
-
-    ; custom comparison operator
-    compare: 'age
-]
-
-; create a method for our custom type
-sayHello: function [this][
-    ensure -> is? :person this
-
-    print ["Hello" this\name]
-]
-
-; create new objects of our custom type
-a: to :person ["John" "Doe" 34]                 ; let's create 2 "Person"s
-b: to :person ["jane" "Doe" 33]                 ; and another one
-
-; call pseudo-inner method
-sayHello a                                      ; Hello John                       
-sayHello b                                      ; Hello Jane
-
-; access object fields
-print ["The first person's name is:" a\name]    ; The first person's name is: John
-print ["The second person's name is:" b\name]   ; The second person's name is: Jane
-
-; changing object fields
-a\name: "Bob"                                   
-sayHello a                                      ; Hello Bob
-
-; verifying object type
-print type a                                    ; :person
-print is? :person a                             ; true
-
-; printing objects
-print a                                         ; NAME: John, SURNAME: Doe, AGE: 34
-
-; sorting user objects (using custom comparator)
-sort @[a b]                                     ; Jane..., John...
-sort.descending @[a b]                          ; John..., Jane...
\ No newline at end of file diff --git a/examples/prism-asciidoc.html b/examples/prism-asciidoc.html deleted file mode 100644 index bd2aedfc84..0000000000 --- a/examples/prism-asciidoc.html +++ /dev/null @@ -1,104 +0,0 @@ -

Comments

-
/////
-Comment block
-/////
-
-// Comment line
- -

Titles

-
Level 0
-========
-Level 1
---------
-Level 2
-~~~~~~~~
-Level 3
-^^^^^^^^
-Level 4
-++++++++
-
-= Document Title (level 0) =
-== Section title (level 1) ==
-=== Section title (level 2) ===
-==== Section title (level 3) ====
-===== Section title (level 4) =====
-
-.Notes
- -

Blocks

-
++++++++++++++++++++++++++
-Passthrough block
-++++++++++++++++++++++++++
-
---------------------------
-Listing block
---------------------------
-
-..........................
-Literal block
-No *highlighting* _here_
-..........................
-
-**************************
-Sidebar block
-**************************
-
-[quote,'http://en.wikipedia.org/wiki/Samuel_Johnson[Samuel Johnson]']
-_____________________________________________________________________
-Sir, a woman's preaching is like a dog's walking on his hind legs. It
-is not done well; but you are surprised to find it done at all.
-_____________________________________________________________________
-
-==========================
-Example block
-==========================
- -

Lists

-
- List item.
-* List item.
-** List item.
-*** List item.
-**** List item.
-***** List item.
-
-1.   Arabic (decimal) numbered list item.
-a.   Lower case alpha (letter) numbered list item.
-F.   Upper case alpha (letter) numbered list item.
-iii) Lower case roman numbered list item.
-IX)  Upper case roman numbered list item.
-
-. Arabic (decimal) numbered list item.
-.. Lower case alpha (letter) numbered list item.
-... Lower case roman numbered list item.
-.... Upper case alpha (letter) numbered list item.
-..... Upper case roman numbered list item.
-
-Dolor::
-  Donec eget arcu bibendum nunc consequat lobortis.
-  Suspendisse;;
-    A massa id sem aliquam auctor.
-  Morbi;;
-    Pretium nulla vel lorem.
-  In;;
-    Dictum mauris in urna.
-    Vivamus::: Fringilla mi eu lacus.
-    Donec:::   Eget arcu bibendum nunc consequat lobortis.
- -

Tables

-
[cols="e,m,^,>s",width="25%"]
-|============================
-|1 >s|2 |3 |4
-^|5 2.2+^.^|6 .3+<.>m|7
-^|8
-|9 2+>|10
-|============================
- -

Inline styles

-
*Some bold text*
-This is an _emphasis_
-[[[walsh-muellner]]]
- -

Attribute entries

-
:Author Initials: JB
-{authorinitials}
-:Author Initials!:
diff --git a/examples/prism-asm6502.html b/examples/prism-asm6502.html deleted file mode 100644 index 21f4b687f8..0000000000 --- a/examples/prism-asm6502.html +++ /dev/null @@ -1,39 +0,0 @@ -

Comments

-
; This is a comment
- -

Labels

-
label1:   ; a label
- -

Opcodes

-

-SEI
-CLC
-
-; lowercase
-inx
-bne label1
-
- -

Assembler directives

-

-.segment CODE
-.word $07d3
-
- -

Registers

-

-ASL A  ; "A"
-LDA label1,x  ; "x"
-
- -

Strings

-

-.include "header.asm"
-
- -

Numbers

-

-LDA #127
-STA $80f0
-LDY #%01011000
-
diff --git a/examples/prism-asmatmel.html b/examples/prism-asmatmel.html deleted file mode 100644 index 577916c292..0000000000 --- a/examples/prism-asmatmel.html +++ /dev/null @@ -1,78 +0,0 @@ -

Comments

-
; This is a comment
- -

Labels

-
label1:   ; a label
- -

Opcodes

-
LD
-OUT
-
-; lowercase
-ldi
-jmp label1
-
- -

Assembler directives

-
.segment CODE
-.word $07d3
-
- -

Registers

-
LD A  ; "A"
-LDA label1,x  ; "x"
-
- -

Strings

-
.include "header.asm"
-
- -

Numbers

-
ldi r24,#127
-ldi r24,$80f0
-ldi r24,#%01011000
-
- -

Constants

-
ldi r16, (0<<PB5)|(1<<PB4)|(1<<PB3)|(1<<PB2)|(1<<PB1)|(1<<PB0)
- -

Example program to light up LEDs

-

Attach an LED (through a 220 ohm resistor) to any of the pins 0-12

-
; Pin Constant Values (Tested on Arduino UNO)
-; PD0 - 0
-; PD1 - 1
-; PD2 - 2
-; PD3 - 3
-; PD4 - 4
-; PD5 - 5
-; PD6 - 6
-; PD7 - 7
-
-; PB0 - 8
-; PB1 - 9
-; PB2 - 10
-; PB3 - 11
-; PB4 - 12
-; PB5 - 13 - System LED
-
-start:
-
-	; Set pins 0-7 to high
-	ldi		r17, (1<<PD7)|(1<<PD6)|(1<<PD5)|(1<<PD4)|(1<<PD3)|(1<<PD2)|(1<<PD1)|(1<<PD0)
-	out		PORTD, r17
-
-	; Set pins 8-13 to high
-	ldi		r16, (1<<PB5)|(1<<PB4)|(1<<PB3)|(1<<PB2)|(1<<PB1)|(1<<PB0)
-	out		PORTB, r16
-
-	; Set pins 0-7 to output mode
-	ldi		r18, (1<<DDD7)|(1<<DDD6)|(1<<DDD5)|(1<<DDD4)|(1<<DDD3)|(1<<DDD2)|(1<<DDD1)|(1<<DDD0)
-	out		DDRD, r18
-
-	; Set pins 8-13 to output mode
-	ldi		r19, (1<<DDB5)|(1<<DDB4)|(1<<DDB3)|(1<<DDB2)|(1<<DDB1)|(1<<DDB0)
-	out		DDRB, r19
-
-loop:
-	rjmp loop ; loop forever
-
diff --git a/examples/prism-aspnet.html b/examples/prism-aspnet.html deleted file mode 100644 index d65a84d85e..0000000000 --- a/examples/prism-aspnet.html +++ /dev/null @@ -1,36 +0,0 @@ -

Comments

-
<%-- This is a comment --%>
-<%-- This is a
-multi-line comment --%>
- -

Page directives

-
<%@ Page Title="Products" Language="C#" MasterPageFile="~/Site.Master" AutoEventWireup="true"  CodeBehind="ProductList.aspx.cs" Inherits="WingtipToys.ProductList" %>
-
- -

Directive tag

-
<%: Page.Title %>
-<a href="ProductDetails.aspx?productID=<%#:Item.ProductID%>">
-<span>
-	<%#:Item.ProductName%>
-</span>
- -

Highlighted C# inside scripts

-

This requires the C# component to be loaded. - On this page, check C# before checking ASP.NET should make - the example below work properly.

-
<script runat="server">
-	// The following variables are visible to all procedures
-	// within the script block.
-	String str;
-	int i;
-	int i2;
-
-	int DoubleIt(int inpt)
-	{
-		// The following variable is visible only within
-		// the DoubleIt procedure.
-		int factor = 2;
-
-		return inpt * factor;
-	}
-</script>
diff --git a/examples/prism-autohotkey.html b/examples/prism-autohotkey.html deleted file mode 100644 index 3e7ced7064..0000000000 --- a/examples/prism-autohotkey.html +++ /dev/null @@ -1,68 +0,0 @@ -

Comments

-
; This is a comment
- -

Strings

-
"foo ""bar"" baz"
- -

Numbers

-
123
-123.456
-123.456e789
-0xAF
- -

Full example

-
;----Open the selected favorite
-f_OpenFavorite:
-; Fetch the array element that corresponds to the selected menu item:
-StringTrimLeft, f_path, f_path%A_ThisMenuItemPos%, 0
-if f_path =
-    return
-if f_class = #32770    ; It's a dialog.
-{
-    if f_Edit1Pos <>   ; And it has an Edit1 control.
-    {
-        ; Activate the window so that if the user is middle-clicking
-        ; outside the dialog, subsequent clicks will also work:
-        WinActivate ahk_id %f_window_id%
-        ; Retrieve any filename that might already be in the field so
-        ; that it can be restored after the switch to the new folder:
-        ControlGetText, f_text, Edit1, ahk_id %f_window_id%
-        ControlSetText, Edit1, %f_path%, ahk_id %f_window_id%
-        ControlSend, Edit1, {Enter}, ahk_id %f_window_id%
-        Sleep, 100  ; It needs extra time on some dialogs or in some cases.
-        ControlSetText, Edit1, %f_text%, ahk_id %f_window_id%
-        return
-    }
-    ; else fall through to the bottom of the subroutine to take standard action.
-}
-else if f_class in ExploreWClass,CabinetWClass  ; In Explorer, switch folders.
-{
-    if f_Edit1Pos <>   ; And it has an Edit1 control.
-    {
-        ControlSetText, Edit1, %f_path%, ahk_id %f_window_id%
-        ; Tekl reported the following: "If I want to change to Folder L:\folder
-        ; then the addressbar shows http://www.L:\folder.com. To solve this,
-        ; I added a {right} before {Enter}":
-        ControlSend, Edit1, {Right}{Enter}, ahk_id %f_window_id%
-        return
-    }
-    ; else fall through to the bottom of the subroutine to take standard action.
-}
-else if f_class = ConsoleWindowClass ; In a console window, CD to that directory
-{
-    WinActivate, ahk_id %f_window_id% ; Because sometimes the mclick deactivates it.
-    SetKeyDelay, 0  ; This will be in effect only for the duration of this thread.
-    IfInString, f_path, :  ; It contains a drive letter
-    {
-        StringLeft, f_path_drive, f_path, 1
-        Send %f_path_drive%:{enter}
-    }
-    Send, cd %f_path%{Enter}
-    return
-}
-; Since the above didn't return, one of the following is true:
-; 1) It's an unsupported window type but f_AlwaysShowMenu is y (yes).
-; 2) It's a supported type but it lacks an Edit1 control to facilitate the custom
-;    action, so instead do the default action below.
-Run, Explorer %f_path%  ; Might work on more systems without double quotes.
-return
diff --git a/examples/prism-autoit.html b/examples/prism-autoit.html deleted file mode 100644 index be283a4473..0000000000 --- a/examples/prism-autoit.html +++ /dev/null @@ -1,38 +0,0 @@ -

Comments

-
; Single-line comment
-#comments-start
-	Multi-line
-	comment
-#comments-end
-#cs
-	Multi-line
-	comment
-#ce
-;#comments-start
-	foo()
-;#comments-end
- -

Strings

-
"foo'bar'baz"
-"foo""bar""baz"
-'foo"bar"baz'
-'foo''bar''baz'
- -

Numbers

-
2
-4.566
-1.5e3
-0x4fff
- -

Booleans

-
True
-False
- -

Keywords and variables

-
; Display all the numbers for 1 to 10 but skip displaying  7.
-For $i = 1 To 10
-    If $i = 7 Then
-        ContinueLoop ; Skip displaying the message box when $i is equal to 7.
-    EndIf
-    MsgBox($MB_SYSTEMMODAL, "", "The value of $i is: " & $i)
-Next
diff --git a/examples/prism-avisynth.html b/examples/prism-avisynth.html deleted file mode 100644 index e78fecd9e9..0000000000 --- a/examples/prism-avisynth.html +++ /dev/null @@ -1,24 +0,0 @@ -

Full Example

-
/*
- * Example AviSynth script for PrismJS demonstration.
- * By Zinfidel
- */
-
-SetFilterMTMode("DEFAULT_MT_MODE", MT_MULTI_INSTANCE)
-AddAutoloadDir("MAINSCRIPTDIR/programs/plugins")
-
-# Multiplies clip size and changes aspect ratio to 4:3
-function CorrectAspectRatio(clip c, int scaleFactor, bool "useNearestNeighbor") {
-    useNearestNeighbor = default(useNearestNeighbor, false)
-    stretchFactor = (c.Height * (4 / 3)) / c.Width
-
-    return useNearestNeighbor \
-        ? c.PointResize(c.Width * scaleFactor * stretchFactor, c.Height * scaleFactor) \
-        : c.Lanczos4Resize(c.Width * scaleFactor * stretchFactor, c.Height * scaleFactor)
-}
-
-AviSource("myclip.avi")
-last.CorrectAspectRatio(3, yes)
-
-
-Prefetch(4)
\ No newline at end of file diff --git a/examples/prism-avro-idl.html b/examples/prism-avro-idl.html deleted file mode 100644 index d6572b7130..0000000000 --- a/examples/prism-avro-idl.html +++ /dev/null @@ -1,44 +0,0 @@ -

Full example

-
// Source: https://avro.apache.org/docs/current/idl.html#example
-
-/**
- * An example protocol in Avro IDL
- */
-@namespace("org.apache.avro.test")
-protocol Simple {
-
-	@aliases(["org.foo.KindOf"])
-	enum Kind {
-		FOO,
-		BAR, // the bar enum value
-		BAZ
-	}
-
-	fixed MD5(16);
-
-	record TestRecord {
-		@order("ignore")
-		string name;
-
-		@order("descending")
-		Kind kind;
-
-		MD5 hash;
-
-		union { MD5, null} @aliases(["hash"]) nullableHash;
-
-		array<long> arrayOfLongs;
-	}
-
-	error TestError {
-		string message;
-	}
-
-	string hello(string greeting);
-	TestRecord echo(TestRecord `record`);
-	int add(int arg1, int arg2);
-	bytes echoBytes(bytes data);
-	void `error`() throws TestError;
-	void ping() oneway;
-}
-
diff --git a/examples/prism-awk.html b/examples/prism-awk.html deleted file mode 100644 index f1e040a484..0000000000 --- a/examples/prism-awk.html +++ /dev/null @@ -1,7 +0,0 @@ -

Full example

-
# Source: awklang.org
-BEGIN { ascetion = bsection = 0 }
-$2 ~ /^[aA][0-9]+/ { asection++ }
-$2 ~ /^[bB][0-9]+/ { bsection++ }
-END { print asection, bsection }
-
diff --git a/examples/prism-bash.html b/examples/prism-bash.html deleted file mode 100644 index 5cf56d1b59..0000000000 --- a/examples/prism-bash.html +++ /dev/null @@ -1,49 +0,0 @@ -

Shebang

-
#!/bin/bash
- -

Comments

-
# This is a comment
- -

Strings

-
STRING="Hello World"
-'Single and
-multi-line strings are supported.'
-"Single and
-multi-line strings are supported."
-cat << EOF
-Here-Documents
-are also supported
-EOF
- -

Variables

-
echo $STRING
-args=("$@")
-echo ${args[0]} ${args[1]} ${args[2]}
- -

Keywords

-
for (( i=0;i<$ELEMENTS;i++)); do
-	echo ${ARRAY[${i}]}
-done
-while read LINE; do
-    ARRAY[$count]=$LINE
-    ((count++))
-done
-if [ -d $directory ]; then
-	echo "Directory exists"
-else
-	echo "Directory does not exists"
-fi
-
- -

Some well-known commands

-
crontab -l -u USER | grep -v 'YOUR JOB COMMAND or PATTERN' | crontab -u USER -
-
-groups user1 user2|cut -d: -f2|xargs -n1|sort|uniq -d
-
-wget -q -O - http://www.example.com/automation/remotescript.sh | bash /dev/stdin parameter1 parameter2
-
-sudo dpkg -i vagrant_1.7.2_x86_64.deb
-
-git pull origin master
-
-sudo gpg --refresh-keys; sudo apt-key update; sudo rm -rf /var/lib/apt/{lists,lists.old}; sudo mkdir -p /var/lib/apt/lists/partial; sudo apt-get clean all; sudo apt-get update
diff --git a/examples/prism-basic.html b/examples/prism-basic.html deleted file mode 100644 index 241a0571aa..0000000000 --- a/examples/prism-basic.html +++ /dev/null @@ -1,69 +0,0 @@ -

Note: this component focuses on first and second-generation BASICs (such as MSX BASIC, GW-BASIC, SuperBASIC, QuickBASIC, PowerBASIC...).

- -

Comments

-
! This is a comment
-REM This is a remark
- -

Strings

-
"This a string."
-"This is a string with ""quotes"" in it."
- -

Numbers

-
42
-3.14159
--42
--3.14159
-.5
-10.
-2E10
-4.2E-14
--3E+2
- -

Dartmouth Basic example

-
5 LET S = 0
-10 MAT INPUT V
-20 LET N = NUM
-30 IF N = 0 THEN 99
-40 FOR I = 1 TO N
-45 LET S = S + V(I)
-50 NEXT I
-60 PRINT S/N
-70 GO TO 5
-99 END
- -

GW-BASIC example

-
10 INPUT "What is your name: ", U$
-20 PRINT "Hello "; U$
-30 INPUT "How many stars do you want: ", N
-40 S$ = ""
-50 FOR I = 1 TO N
-60 S$ = S$ + "*"
-70 NEXT I
-80 PRINT S$
-90 INPUT "Do you want more stars? ", A$
-100 IF LEN(A$) = 0 THEN GOTO 90
-110 A$ = LEFT$(A$, 1)
-120 IF A$ = "Y" OR A$ = "y" THEN GOTO 30
-130 PRINT "Goodbye "; U$
-140 END
- -

QuickBASIC example

-
DECLARE SUB PrintSomeStars (StarCount!)
-REM QuickBASIC example
-INPUT "What is your name: ", UserName$
-PRINT "Hello "; UserName$
-DO
-   INPUT "How many stars do you want: ", NumStars
-   CALL PrintSomeStars(NumStars)
-   DO
-      INPUT "Do you want more stars? ", Answer$
-   LOOP UNTIL Answer$ <> ""
-   Answer$ = LEFT$(Answer$, 1)
-LOOP WHILE UCASE$(Answer$) = "Y"
-PRINT "Goodbye "; UserName$
-
-SUB PrintSomeStars (StarCount)
-   REM This procedure uses a local variable called Stars$
-   Stars$ = STRING$(StarCount, "*")
-   PRINT Stars$
-END SUB
diff --git a/examples/prism-batch.html b/examples/prism-batch.html deleted file mode 100644 index 13f9018c00..0000000000 --- a/examples/prism-batch.html +++ /dev/null @@ -1,17 +0,0 @@ -

Comments

-
::
-:: Foo bar
-REM This is a comment too
-REM Multi-line ^
-comment
- -

Labels

-
:foobar
-GOTO :EOF
- -

Commands

-
@ECHO OFF
-FOR /l %%a in (5,-1,1) do (TITLE %title% -- closing in %%as)
-SET title=%~n0
-if /i "%InstSize:~0,1%"=="M" set maxcnt=3
-ping -n 2 -w 1 127.0.0.1
\ No newline at end of file diff --git a/examples/prism-bbcode.html b/examples/prism-bbcode.html deleted file mode 100644 index a7416eac51..0000000000 --- a/examples/prism-bbcode.html +++ /dev/null @@ -1,21 +0,0 @@ -

Full example

-
[list]
-[*]Entry A
-[*]Entry B
-[/list]
-
-[list=1]
-[*]Entry 1
-[*]Entry 2
-[/list]
-
-[style color="fuchsia"]Text in fuchsia[/style] or
-[style color=#FF00FF]Text in fuchsia[/style] or
-[color=#FF00FF]Text in fuchsia[/color]
-[quote]quoted text[/quote]
-[quote="author"]quoted text[/quote]
-
-[:-)]
-
-[url]https://en.wikipedia.org[/url]
-[url=https://en.wikipedia.org]English Wikipedia[/url]
diff --git a/examples/prism-bbj.html b/examples/prism-bbj.html deleted file mode 100644 index a04366bb26..0000000000 --- a/examples/prism-bbj.html +++ /dev/null @@ -1,63 +0,0 @@ -

Routines example

-

-use ::BBjGridExWidget/BBjGridExWidget.bbj::BBjGridExWidget
-use com.basiscomponents.db.ResultSet
-use com.basiscomponents.bc.SqlQueryBC
-
-declare auto BBjTopLevelWindow wnd!
-wnd! = BBjAPI().openSysGui("X0").addWindow(10, 10, 800, 600, "My First Grid")
-wnd!.setCallback(BBjAPI.ON_CLOSE,"byebye")
-
-gosub main
-process_events
-
-rem Retrieve the data from the database and configure the grid
-main:
-	declare SqlQueryBC sbc!
-	declare ResultSet rs!
-	declare BBjGridExWidget grid!
-
-	sbc! = new SqlQueryBC(BBjAPI().getJDBCConnection("CDStore"))
-	rs! = sbc!.retrieve("SELECT * FROM CDINVENTORY")
-
-	grid! = new BBjGridExWidget(wnd!, 100, 0, 0, 800, 600)
-	grid!.setData(rs!)
-return
-
-byebye:
-bye
-
- -

OOP example

-

-use java.util.Arrays
-use java.util.ArrayList
-use ::BBjGridExWidget/BBjGridExWidget.bbj::BBjGridExWidget
-
-rem /**
-rem  * This file is part of the MyPackage.
-rem  *
-rem  * For the full copyright and license information, please view the LICENSE
-rem  * file that was distributed with this source code.
-rem  */
-rem /**
-
-class public Employee
-  field public BBjNumber ID
-  field public BBjString Name$
-classend
-
-class public Salaried extends Employee implements Payable
-  field public BBjNumber MonthlySalary
-  method public BBjNumber pay()
-    methodret #MonthlySalary
-  methodend
-  method public void print()
-    print "Employee",#getID(),": ",#getName()
-    print #pay():"($###,###.00)"
-  methodend
-  method public BBjNumber account()
-    methodret 11111
-  methodend
-classend
-
diff --git a/examples/prism-bicep.html b/examples/prism-bicep.html deleted file mode 100644 index 31a0697021..0000000000 --- a/examples/prism-bicep.html +++ /dev/null @@ -1,19 +0,0 @@ -

Variable assignment

-
var foo = 'bar'
- -

Operators

-
(1 + 2 * 3)/4 >= 3 && 4 < 5 || 6 > 7
- -

Keywords

-
resource appServicePlan 'Microsoft.Web/serverfarms@2020-09-01' existing =  = if (diagnosticsEnabled) {
-	name: logAnalyticsWsName
-  }
-  module cosmosDb './cosmosdb.bicep' = {
-	name: 'cosmosDbDeploy'
-  }
-  param env string
-  var oneNumber = 123
-  output databaseName string = cosmosdbDatabaseName
-  for item in cosmosdbAllowedIpAddresses: {
-	  ipAddressOrRange: item
-  }
diff --git a/examples/prism-birb.html b/examples/prism-birb.html deleted file mode 100644 index cdc572707d..0000000000 --- a/examples/prism-birb.html +++ /dev/null @@ -1,31 +0,0 @@ -

Comments

-
// Single line comment
-/* Block comment
-on multiple lines */
- -

Annotations

-
<Supersede> // marks an instance member as overriding a superclass
- -

Numbers

-
int x = 1;
-double y = 1.1;
-
- -

Strings

-
String s1 = 'Strings allow single quotes';
-String s2 = "as well as double quotes";
-var s2 = 'Birb strings are
-	multiline by default';
- -

Full example

-
class Birb {
-  final String name;
-  int age = 19;
-
-  void construct(String newName){
-	nest.name = newName;
-  }
-}
-Birb.construct('Yoko');
-screm(Birb.name);
-
\ No newline at end of file diff --git a/examples/prism-bison.html b/examples/prism-bison.html deleted file mode 100644 index a4ccf8dd64..0000000000 --- a/examples/prism-bison.html +++ /dev/null @@ -1,86 +0,0 @@ -

Comments

-
// Single-line comment
-/* Multi-line
-comment */
- -

C prologue and Bison declarations

-
%{
-  #include <stdio.h>
-  #include <math.h>
-  int yylex (void);
-  void yyerror (char const *);
-%}
-
-%define api.value.type {double}
-%token NUM
-%union { char *string; }
-%%
-%%
- -

Grammar rules

-
%%
-exp:
-  NUM           { $$ = $1;           }
-| exp exp '+'   { $$ = $1 + $2;      }
-| exp exp '-'   { $$ = $1 - $2;      }
-| exp exp '*'   { $$ = $1 * $2;      }
-| exp exp '/'   { $$ = $1 / $2;      }
-| exp exp '^'   { $$ = pow($1, $2);  }  /* Exponentiation */
-| exp 'n'       { $$ = -$1;          }  /* Unary minus    */
-;
-
-$@1: %empty { a(); };
-$@2: %empty { c(); };
-$@3: %empty { d(); };
-exp: $@1 "b" $@2 $@3 "e" { f(); };
-%%
- -

Full example

-
/* Mini Calculator */
-/* calc.y */
-
-%{
-#include "heading.h"
-int yyerror(char *s);
-int yylex(void);
-%}
-
-%union{
-  int		int_val;
-  string*	op_val;
-}
-
-%start	input
-
-%token	<int_val>	INTEGER_LITERAL
-%type	<int_val>	exp
-%left	PLUS
-%left	MULT
-
-%%
-
-input:		/* empty */
-		| exp	{ cout << "Result: " << $1 << endl; }
-		;
-
-exp:		INTEGER_LITERAL	{ $$ = $1; }
-		| exp PLUS exp	{ $$ = $1 + $3; }
-		| exp MULT exp	{ $$ = $1 * $3; }
-		;
-
-%%
-
-int yyerror(string s)
-{
-  extern int yylineno;	// defined and maintained in lex.c
-  extern char *yytext;	// defined and maintained in lex.c
-
-  cerr << "ERROR: " << s << " at symbol \"" << yytext;
-  cerr << "\" on line " << yylineno << endl;
-  exit(1);
-}
-
-int yyerror(char *s)
-{
-  return yyerror(string(s));
-}
diff --git a/examples/prism-bnf.html b/examples/prism-bnf.html deleted file mode 100644 index bf30e1fe9d..0000000000 --- a/examples/prism-bnf.html +++ /dev/null @@ -1,27 +0,0 @@ -

Full example

-
<number>   ::= "+" <unsigned> | "-" <unsigned> | <unsigned>
-<unsigned> ::= "NaN" | "Infinity" | <decimal> | <decimal> <exponent>
-<decimal>  ::= <integer> | "." <non-zero-integer> | <non-zero-integer> "." | <integer> "." <integer>
-
-<exponent>      ::= <exponent-char> <exponent-sign> <integer>
-<exponent-char> ::= "e" | "E"
-<exponent-sign> ::= "+" | "-" | ""
-
-<integer>          ::= "0" | <non-zero-integer>
-<non-zero-integer> ::= <non-zero-digit> | <non-zero-digit> <digits>
-
-<digits>         ::= <digit> | <digit> <digits>
-<digit>          ::= "0" | <non-zero-digit>
-<non-zero-digit> ::= "1" | "2" | "3" | "4" | "5" | "6" | "7" | "8" | "9"
- -

Routing Backus–Naur form

-
<number>   ::= [ "+" | "-" ] <unsigned>
-<unsigned> ::= "NaN" | "Infinity" | <decimal> [ <exponent> ]
-<decimal>  ::= <integer> [ "." <integer> ] | "." <non-zero-integer> | <non-zero-integer> "."
-<exponent> ::= ( "e" | "E" ) [ "+" | "-" ] <integer>
-
-<integer>          ::= "0" | <non-zero-integer>
-<non-zero-integer> ::= <non-zero-digit> [ <digit>... ]
-
-<digit>          ::= "0" | <non-zero-digit>
-<non-zero-digit> ::= "1" | "2" | "3" | "4" | "5" | "6" | "7" | "8" | "9"
diff --git a/examples/prism-bqn.html b/examples/prism-bqn.html deleted file mode 100644 index 7d14cdc045..0000000000 --- a/examples/prism-bqn.html +++ /dev/null @@ -1,125 +0,0 @@ -

Examples From Rosetta Code

-

100 Doors

-

-swch ← ≠´{100⥊1«𝕩⥊0}¨1+↕100
-¯1↓∾{𝕩∾@+10}¨•Fmt¨⟨swch,/swch⟩
-
-

Archimedean Spiral

-

-{(•math.Sin •Plot○(⊢×↕∘≠) •math.Cos) -(2×π) × 𝕩⥊(↕÷-⟜1)100}
-
-

Damm Algorithm

-

-table ← >⟨ 0‿3‿1‿7‿5‿9‿8‿6‿4‿2
-	   7‿0‿9‿2‿1‿5‿4‿8‿6‿3
-	   4‿2‿0‿6‿8‿7‿1‿3‿5‿9
-	   1‿7‿5‿0‿9‿8‿3‿4‿2‿6
-	   6‿1‿2‿3‿0‿4‿5‿9‿7‿8
-	   3‿6‿7‿4‿2‿0‿9‿5‿8‿1
-	   5‿8‿6‿9‿7‿2‿0‿1‿3‿4
-	   8‿9‿4‿5‿3‿6‿2‿0‿1‿7
-	   9‿4‿3‿8‿6‿1‿7‿2‿0‿5
-	   2‿5‿8‿1‿4‿3‿6‿7‿9‿0 ⟩
-
-
-Digits ← 10{⌽𝕗|⌊∘÷⟜𝕗⍟(↕1+·⌊𝕗⋆⁼1⌈⊢)}
-
-Damm ← {0=0(table⊑˜⋈)˜´⌽Digits 𝕩}
-
-Damm¨5724‿5727‿112946
-
-

Knuth/Fisher-Yates Shuffle

-

-Knuth ← {
-  𝕊 arr:
-  l ← ≠arr
-  {
-    arr ↩ ⌽⌾(⟨•rand.Range l, 𝕩⟩⊸⊏)arr
-  }¨↕l
-  arr
-}
-P ← •Show Knuth
-
-P ⟨⟩
-P ⟨10⟩
-P ⟨10, 20⟩
-P ⟨10, 20, 30⟩
-
-

Comments

-
#!/usr/bin/env bqn
-# Full Line Comment
-'#'  # The preceding should not be a comment.
-"BQN is #1" # The preceding should not be a comment.
-1 + 1 # Comment at End of Line.
-
- -

Literals

-

-"String Literal"
-'c'
-"""There is a double quote at the start of this string."
-"'c'"
-# "Comment, not String"
-"String, # Not Comment"
-@
-
- -

Tokens

-

Primitive Functions

-

-+-×÷⋆√⌊⌈|¬∧∨<>≠=≤≥≡≢⊣⊢⥊∾≍⋈↑↓↕«»⌽⍉/⍋⍒⊏⊑⊐⊒∊⍷⊔!
-
-

1-Operators

-

-˙˜˘¨⌜⁼´˝`
-
-

2-Operators

-

-∘○⊸⟜⌾⊘◶⎉⚇⍟⎊
-
-

Special Names

-

-𝕨𝕩𝕗𝕘𝕤𝕎𝕏𝔽𝔾𝕊𝕣_𝕣
-_𝕣_
-
-

Punctuation

-

-←⇐↩(){}⟨⟩[]‿·⋄,.;:?
-
- -

Words

-

Numbers

-

-1464
-3.14159
-¯2
-∞
-π
-¯∞
-2.8e¯4
-1.618E2
-
-

Names

-

-VariableName
-ThereAre4Symbols_¯∞πAllowedInNames
-
-

Namespaces

-

-example.b
-{n⇐7}.n
-
-

System Functions

-

-•Function
- •function
-•_function_
-@•Function@
-+•Function+
-˙•Function˙
-∘•Function∘
-𝕨•Function𝕩
-←•Function?
-•Function_.¯∞πCanHaveSymbols
-•0.0.0.0
-
diff --git a/examples/prism-brainfuck.html b/examples/prism-brainfuck.html deleted file mode 100644 index d47a974406..0000000000 --- a/examples/prism-brainfuck.html +++ /dev/null @@ -1,37 +0,0 @@ -

Full example

-
+++++ +++               Set Cell #0 to 8
-[
-    >++++               Add 4 to Cell #1; this will always set Cell #1 to 4
-    [                   as the cell will be cleared by the loop
-        >++             Add 2 to Cell #2
-        >+++            Add 3 to Cell #3
-        >+++            Add 3 to Cell #4
-        >+              Add 1 to Cell #5
-        <<<<-           Decrement the loop counter in Cell #1
-    ]                   Loop till Cell #1 is zero; number of iterations is 4
-    >+                  Add 1 to Cell #2
-    >+                  Add 1 to Cell #3
-    >-                  Subtract 1 from Cell #4
-    >>+                 Add 1 to Cell #6
-    [<]                 Move back to the first zero cell you find; this will
-                        be Cell #1 which was cleared by the previous loop
-    <-                  Decrement the loop Counter in Cell #0
-]                       Loop till Cell #0 is zero; number of iterations is 8
-
-The result of this is:
-Cell No :   0   1   2   3   4   5   6
-Contents:   0   0  72 104  88  32   8
-Pointer :   ^
-
->>.                     Cell #2 has value 72 which is 'H'
->---.                   Subtract 3 from Cell #3 to get 101 which is 'e'
-+++++++..+++.           Likewise for 'llo' from Cell #3
->>.                     Cell #5 is 32 for the space
-<-.                     Subtract 1 from Cell #4 for 87 to give a 'W'
-<.                      Cell #3 was set to 'o' from the end of 'Hello'
-+++.------.--------.    Cell #3 for 'rl' and 'd'
->>+.                    Add 1 to Cell #5 gives us an exclamation point
->++.                    And finally a newline from Cell #6
- -

One-line example

-
++++++++[>++++[>++>+++>+++>+<<<<-]>+>+>->>+[<]<-]>>.>---.+++++++..+++.>>.<-.<.+++.------.--------.>>+.>++.
diff --git a/examples/prism-brightscript.html b/examples/prism-brightscript.html deleted file mode 100644 index 15bef53ed0..0000000000 --- a/examples/prism-brightscript.html +++ /dev/null @@ -1,13 +0,0 @@ -

Full example

-
Function Main()
-	MyFunA(4)
-	MyFunB(4)
-End Function
-
-Function MyFunA(p as Object) as Void
-	print "A",p,type(p)
-End Function
-
-Function MyFunB(p as Integer) as Void
-	print "B",p,type(p)
-End Function
diff --git a/examples/prism-bro.html b/examples/prism-bro.html deleted file mode 100644 index 86d3b3d9ea..0000000000 --- a/examples/prism-bro.html +++ /dev/null @@ -1,645 +0,0 @@ -

Comments

-
# Single line comment
-
- -

Strings

-

-"a", "b"
-
- -

Numbers

-
123
-123.456
--123.456
-
- -

Misc

-

-@ifndef ourexp
-@load-sigs somesigs
-
- -

Full example

-

-##! Scan detector ported from Bro 1.x.
-##!
-##! This script has evolved over many years and is quite a mess right now. We
-##! have adapted it to work with Bro 2.x, but eventually Bro 2.x will
-##! get its own rewritten and generalized scan detector.
-
-@load base/frameworks/notice/main
-
-module Scan;
-
-export {
-	redef enum Notice::Type += {
-		## The source has scanned a number of ports.
-		PortScan,
-		## The source has scanned a number of addresses.
-		AddressScan,
-		## Apparent flooding backscatter seen from source.
-		BackscatterSeen,
-
-		## Summary of scanning activity.
-		ScanSummary,
-		## Summary of distinct ports per scanner.
-		PortScanSummary,
-		## Summary of distinct low ports per scanner.
-		LowPortScanSummary,
-
-		## Source reached :bro:id:`Scan::shut_down_thresh`
-		ShutdownThresh,
-		## Source touched privileged ports.
-		LowPortTrolling,
-	};
-
-	# Whether to consider UDP "connections" for scan detection.
-	# Can lead to false positives due to UDP fanout from some P2P apps.
-	const suppress_UDP_scan_checks = F &redef;
-
-	const activate_priv_port_check = T &redef;
-	const activate_landmine_check = F &redef;
-	const landmine_thresh_trigger = 5 &redef;
-
-	const landmine_address: set[addr] &redef;
-
-	const scan_summary_trigger = 25 &redef;
-	const port_summary_trigger = 20 &redef;
-	const lowport_summary_trigger = 10 &redef;
-
-	# Raise ShutdownThresh after this many failed attempts
-	const shut_down_thresh = 100 &redef;
-
-	# Which services should be analyzed when detecting scanning
-	# (not consulted if analyze_all_services is set).
-	const analyze_services: set[port] &redef;
-	const analyze_all_services = T &redef;
-
-	# Track address scaners only if at least these many hosts contacted.
-	const addr_scan_trigger = 0 &redef;
-
-	# Ignore address scanners for further scan detection after
-	# scanning this many hosts.
-	# 0 disables.
-	const ignore_scanners_threshold = 0 &redef;
-
-	# Report a scan of peers at each of these points.
-	const report_peer_scan: vector of count = {
-		20, 100, 1000, 10000, 50000, 100000, 250000, 500000, 1000000,
-	} &redef;
-
-	const report_outbound_peer_scan: vector of count = {
-		100, 1000, 10000,
-	} &redef;
-
-	# Report a scan of ports at each of these points.
-	const report_port_scan: vector of count = {
-		50, 250, 1000, 5000, 10000, 25000, 65000,
-	} &redef;
-
-	# Once a source has scanned this many different ports (to however many
-	# different remote hosts), start tracking its per-destination access.
-	const possible_port_scan_thresh = 20 &redef;
-
-	# Threshold for scanning privileged ports.
-	const priv_scan_trigger = 5 &redef;
-	const troll_skip_service = {
-		25/tcp, 21/tcp, 22/tcp, 20/tcp, 80/tcp,
-	} &redef;
-
-	const report_accounts_tried: vector of count = {
-		20, 100, 1000, 10000, 100000, 1000000,
-	} &redef;
-
-	const report_remote_accounts_tried: vector of count = {
-		100, 500,
-	} &redef;
-
-	# Report a successful password guessing if the source attempted
-	# at least this many.
-	const password_guessing_success_threshhold = 20 &redef;
-
-	const skip_accounts_tried: set[addr] &redef;
-
-	const addl_web = {
-		81/tcp, 443/tcp, 8000/tcp, 8001/tcp, 8080/tcp, }
-	&redef;
-
-	const skip_services = { 113/tcp, } &redef;
-	const skip_outbound_services = { 21/tcp, addl_web, }
-		&redef;
-
-	const skip_scan_sources = {
-		255.255.255.255,	# who knows why we see these, but we do
-	} &redef;
-
-	const skip_scan_nets: set[subnet] = {} &redef;
-
-	# List of well known local server/ports to exclude for scanning
-	# purposes.
-	const skip_dest_server_ports: set[addr, port] = {} &redef;
-
-	# Reverse (SYN-ack) scans seen from these ports are considered
-	# to reflect possible SYN-flooding backscatter, and not true
-	# (stealth) scans.
-	const backscatter_ports = {
-		80/tcp, 8080/tcp, 53/tcp, 53/udp, 179/tcp, 6666/tcp, 6667/tcp,
-	} &redef;
-
-	const report_backscatter: vector of count = {
-		20,
-	} &redef;
-
-	global check_scan:
-		function(c: connection, established: bool, reverse: bool): bool;
-
-	# The following tables are defined here so that we can redef
-	# the expire timeouts.
-	# FIXME: should we allow redef of attributes on IDs which
-	# are not exported?
-
-	# How many different hosts connected to with a possible
-	# backscatter signature.
-	global distinct_backscatter_peers: table[addr] of table[addr] of count
-		&read_expire = 15 min;
-
-	# Expire functions that trigger summaries.
-	global scan_summary:
-		function(t: table[addr] of set[addr], orig: addr): interval;
-	global port_summary:
-		function(t: table[addr] of set[port], orig: addr): interval;
-	global lowport_summary:
-		function(t: table[addr] of set[port], orig: addr): interval;
-
-	# Indexed by scanner address, yields # distinct peers scanned.
-	# pre_distinct_peers tracks until addr_scan_trigger hosts first.
-	global pre_distinct_peers: table[addr] of set[addr]
-		&read_expire = 15 mins &redef;
-
-	global distinct_peers: table[addr] of set[addr]
-		&read_expire = 15 mins &expire_func=scan_summary &redef;
-	global distinct_ports: table[addr] of set[port]
-		&read_expire = 15 mins &expire_func=port_summary &redef;
-	global distinct_low_ports: table[addr] of set[port]
-		&read_expire = 15 mins &expire_func=lowport_summary &redef;
-
-	# Indexed by scanner address, yields a table with scanned hosts
-	# (and ports).
-	global scan_triples: table[addr] of table[addr] of set[port];
-
-	global remove_possible_source:
-		function(s: set[addr], idx: addr): interval;
-	global possible_scan_sources: set[addr]
-		&expire_func=remove_possible_source &read_expire = 15 mins;
-
-	# Indexed by source address, yields user name & password tried.
-	global accounts_tried: table[addr] of set[string, string]
-		&read_expire = 1 days;
-
-	global ignored_scanners: set[addr] &create_expire = 1 day &redef;
-
-	# These tables track whether a threshold has been reached.
-	# More precisely, the counter is the next index of threshold vector.
-	global shut_down_thresh_reached: table[addr] of bool &default=F;
-	global rb_idx: table[addr] of count
-			&default=1 &read_expire = 1 days &redef;
-	global rps_idx: table[addr] of count
-			&default=1 &read_expire = 1 days &redef;
-	global rops_idx: table[addr] of count
-			&default=1 &read_expire = 1 days &redef;
-	global rpts_idx: table[addr,addr] of count
-			&default=1 &read_expire = 1 days &redef;
-	global rat_idx: table[addr] of count
-			&default=1 &read_expire = 1 days &redef;
-	global rrat_idx: table[addr] of count
-			&default=1 &read_expire = 1 days &redef;
-}
-
-global thresh_check: function(v: vector of count, idx: table[addr] of count,
-				orig: addr, n: count): bool;
-global thresh_check_2: function(v: vector of count,
-				idx: table[addr,addr] of count, orig: addr,
-				resp: addr, n: count): bool;
-
-function scan_summary(t: table[addr] of set[addr], orig: addr): interval
-	{
-	local num_distinct_peers = orig in t ? |t[orig]| : 0;
-
-	if ( num_distinct_peers >= scan_summary_trigger )
-		NOTICE([$note=ScanSummary, $src=orig, $n=num_distinct_peers,
-			$identifier=fmt("%s", orig),
-			$msg=fmt("%s scanned a total of %d hosts",
-					orig, num_distinct_peers)]);
-
-	return 0 secs;
-	}
-
-function port_summary(t: table[addr] of set[port], orig: addr): interval
-	{
-	local num_distinct_ports = orig in t ? |t[orig]| : 0;
-
-	if ( num_distinct_ports >= port_summary_trigger )
-		NOTICE([$note=PortScanSummary, $src=orig, $n=num_distinct_ports,
-			$identifier=fmt("%s", orig),
-			$msg=fmt("%s scanned a total of %d ports",
-					orig, num_distinct_ports)]);
-
-	return 0 secs;
-	}
-
-function lowport_summary(t: table[addr] of set[port], orig: addr): interval
-	{
-	local num_distinct_lowports = orig in t ? |t[orig]| : 0;
-
-	if ( num_distinct_lowports >= lowport_summary_trigger )
-		NOTICE([$note=LowPortScanSummary, $src=orig,
-			$n=num_distinct_lowports,
-			$identifier=fmt("%s", orig),
-			$msg=fmt("%s scanned a total of %d low ports",
-					orig, num_distinct_lowports)]);
-
-	return 0 secs;
-	}
-
-function clear_addr(a: addr)
-	{
-	delete distinct_peers[a];
-	delete distinct_ports[a];
-	delete distinct_low_ports[a];
-	delete scan_triples[a];
-	delete possible_scan_sources[a];
-	delete distinct_backscatter_peers[a];
-	delete pre_distinct_peers[a];
-	delete rb_idx[a];
-	delete rps_idx[a];
-	delete rops_idx[a];
-	delete rat_idx[a];
-	delete rrat_idx[a];
-	delete shut_down_thresh_reached[a];
-	delete ignored_scanners[a];
-	}
-
-function ignore_addr(a: addr)
-	{
-	clear_addr(a);
-	add ignored_scanners[a];
-	}
-
-function check_scan(c: connection, established: bool, reverse: bool): bool
-	{
-	local id = c$id;
-
-	local service = "ftp-data" in c$service ? 20/tcp
-			: (reverse ? id$orig_p : id$resp_p);
-	local rev_service = reverse ? id$resp_p : id$orig_p;
-	local orig = reverse ? id$resp_h : id$orig_h;
-	local resp = reverse ? id$orig_h : id$resp_h;
-	local outbound = Site::is_local_addr(orig);
-
-	# The following works better than using get_conn_transport_proto()
-	# because c might not correspond to an active connection (which
-	# causes the function to fail).
-	if ( suppress_UDP_scan_checks &&
-	     service >= 0/udp && service <= 65535/udp )
-		return F;
-
-	if ( service in skip_services && ! outbound )
-		return F;
-
-	if ( outbound && service in skip_outbound_services )
-		return F;
-
-	if ( orig in skip_scan_sources )
-		return F;
-
-	if ( orig in skip_scan_nets )
-		return F;
-
-	# Don't include well known server/ports for scanning purposes.
-	if ( ! outbound && [resp, service] in skip_dest_server_ports )
-		return F;
-
-	if ( orig in ignored_scanners)
-		return F;
-
-	if ( ! established &&
-		# not established, service not expressly allowed
-
-		# not known peer set
-		(orig !in distinct_peers || resp !in distinct_peers[orig]) &&
-
-		# want to consider service for scan detection
-		(analyze_all_services || service in analyze_services) )
-		{
-		if ( reverse && rev_service in backscatter_ports &&
-		     # reverse, non-priv backscatter port
-		     service >= 1024/tcp )
-			{
-			if ( orig !in distinct_backscatter_peers )
-				{
-				local empty_bs_table:
-					table[addr] of count &default=0;
-				distinct_backscatter_peers[orig] =
-					empty_bs_table;
-				}
-
-			if ( ++distinct_backscatter_peers[orig][resp] <= 2 &&
-			     # The test is <= 2 because we get two check_scan()
-			     # calls, once on connection attempt and once on
-			     # tear-down.
-
-			     distinct_backscatter_peers[orig][resp] == 1 &&
-
-			     # Looks like backscatter, and it's not scanning
-			     # a privileged port.
-
-			     thresh_check(report_backscatter, rb_idx, orig,
-					|distinct_backscatter_peers[orig]|)
-			   )
-				{
-				NOTICE([$note=BackscatterSeen, $src=orig,
-					$p=rev_service,
-					$identifier=fmt("%s", orig),
-					$msg=fmt("backscatter seen from %s (%d hosts; %s)",
-						orig, |distinct_backscatter_peers[orig]|, rev_service)]);
-				}
-
-			if ( ignore_scanners_threshold > 0 &&
-			     |distinct_backscatter_peers[orig]| >
-					ignore_scanners_threshold )
-				ignore_addr(orig);
-			}
-
-		else
-			{ # done with backscatter check
-			local ignore = F;
-
-			if ( orig !in distinct_peers && addr_scan_trigger > 0 )
-				{
-				if ( orig !in pre_distinct_peers )
-					pre_distinct_peers[orig] = set();
-
-				add pre_distinct_peers[orig][resp];
-				if ( |pre_distinct_peers[orig]| < addr_scan_trigger )
-					ignore = T;
-				}
-
-			if ( ! ignore )
-				{ # XXXXX
-
-				if ( orig !in distinct_peers )
-					distinct_peers[orig] = set() &mergeable;
-
-				if ( resp !in distinct_peers[orig] )
-					add distinct_peers[orig][resp];
-
-				local n = |distinct_peers[orig]|;
-
-				# Check for threshold if not outbound.
-				if ( ! shut_down_thresh_reached[orig] &&
-				     n >= shut_down_thresh &&
-				     ! outbound && orig !in Site::neighbor_nets )
-					{
-					shut_down_thresh_reached[orig] = T;
-					local msg = fmt("shutdown threshold reached for %s", orig);
-					NOTICE([$note=ShutdownThresh, $src=orig,
-						$identifier=fmt("%s", orig),
-						$p=service, $msg=msg]);
-					}
-
-				else
-					{
-					local address_scan = F;
-					if ( outbound &&
-					     # inside host scanning out?
-					     thresh_check(report_outbound_peer_scan, rops_idx, orig, n) )
-						address_scan = T;
-
-					if ( ! outbound &&
-					     thresh_check(report_peer_scan, rps_idx, orig, n) )
-						address_scan = T;
-
-					if ( address_scan )
-						NOTICE([$note=AddressScan,
-							$src=orig, $p=service,
-							$n=n,
-							$identifier=fmt("%s-%d", orig, n),
-							$msg=fmt("%s has scanned %d hosts (%s)",
-								orig, n, service)]);
-
-					if ( address_scan &&
-					     ignore_scanners_threshold > 0 &&
-					     n > ignore_scanners_threshold )
-						ignore_addr(orig);
-					}
-				}
-			} # XXXX
-		}
-
-	if ( established )
-		# Don't consider established connections for port scanning,
-		# it's too easy to be mislead by FTP-like applications that
-		# legitimately gobble their way through the port space.
-		return F;
-
-	# Coarse search for port-scanning candidates: those that have made
-	# connections (attempts) to possible_port_scan_thresh or more
-	# distinct ports.
-	if ( orig !in distinct_ports || service !in distinct_ports[orig] )
-		{
-		if ( orig !in distinct_ports )
-			distinct_ports[orig] = set() &mergeable;
-
-		if ( service !in distinct_ports[orig] )
-			add distinct_ports[orig][service];
-
-		if ( |distinct_ports[orig]| >= possible_port_scan_thresh &&
-			orig !in scan_triples )
-			{
-			scan_triples[orig] = table() &mergeable;
-			add possible_scan_sources[orig];
-			}
-		}
-
-	# Check for low ports.
-	if ( activate_priv_port_check && ! outbound && service < 1024/tcp &&
-	     service !in troll_skip_service )
-		{
-		if ( orig !in distinct_low_ports ||
-		     service !in distinct_low_ports[orig] )
-			{
-			if ( orig !in distinct_low_ports )
-				distinct_low_ports[orig] = set() &mergeable;
-
-			add distinct_low_ports[orig][service];
-
-			if ( |distinct_low_ports[orig]| == priv_scan_trigger &&
-			     orig !in Site::neighbor_nets )
-				{
-				local svrc_msg = fmt("low port trolling %s %s", orig, service);
-				NOTICE([$note=LowPortTrolling, $src=orig,
-					$identifier=fmt("%s", orig),
-					$p=service, $msg=svrc_msg]);
-				}
-
-			if ( ignore_scanners_threshold > 0 &&
-			     |distinct_low_ports[orig]| >
-					ignore_scanners_threshold )
-				ignore_addr(orig);
-			}
-		}
-
-	# For sources that have been identified as possible scan sources,
-	# keep track of per-host scanning.
-	if ( orig in possible_scan_sources )
-		{
-		if ( orig !in scan_triples )
-			scan_triples[orig] = table() &mergeable;
-
-		if ( resp !in scan_triples[orig] )
-			scan_triples[orig][resp] = set() &mergeable;
-
-		if ( service !in scan_triples[orig][resp] )
-			{
-			add scan_triples[orig][resp][service];
-
-			if ( thresh_check_2(report_port_scan, rpts_idx,
-					    orig, resp,
-					    |scan_triples[orig][resp]|) )
-				{
-				local m = |scan_triples[orig][resp]|;
-				NOTICE([$note=PortScan, $n=m, $src=orig,
-					$p=service,
-					$identifier=fmt("%s-%d", orig, n),
-					$msg=fmt("%s has scanned %d ports of %s",
-					orig, m, resp)]);
-				}
-			}
-		}
-
-	return T;
-	}
-
-
-# Hook into the catch&release dropping. When an address gets restored, we reset
-# the source to allow dropping it again.
-event Drop::address_restored(a: addr)
-	{
-	clear_addr(a);
-	}
-
-event Drop::address_cleared(a: addr)
-	{
-	clear_addr(a);
-	}
-
-# When removing a possible scan source, we automatically delete its scanned
-# hosts and ports.  But we do not want the deletion propagated, because every
-# peer calls the expire_function on its own (and thus applies the delete
-# operation on its own table).
-function remove_possible_source(s: set[addr], idx: addr): interval
-	{
-	suspend_state_updates();
-	delete scan_triples[idx];
-	resume_state_updates();
-
-	return 0 secs;
-	}
-
-# To recognize whether a certain threshhold vector (e.g. report_peer_scans)
-# has been transgressed, a global variable containing the next vector index
-# (idx) must be incremented.  This cumbersome mechanism is necessary because
-# values naturally don't increment by one (e.g. replayed table merges).
-function thresh_check(v: vector of count, idx: table[addr] of count,
-			orig: addr, n: count): bool
-	{
-	if ( ignore_scanners_threshold > 0 && n > ignore_scanners_threshold )
-		{
-		ignore_addr(orig);
-		return F;
-		}
-
-	if ( idx[orig] <= |v| && n >= v[idx[orig]] )
-		{
-		++idx[orig];
-		return T;
-		}
-	else
-		return F;
-	}
-
-# Same as above, except the index has a different type signature.
-function thresh_check_2(v: vector of count, idx: table[addr, addr] of count,
-			orig: addr, resp: addr, n: count): bool
-	{
-	if ( ignore_scanners_threshold > 0 && n > ignore_scanners_threshold )
-		{
-		ignore_addr(orig);
-		return F;
-		}
-
-	if ( idx[orig,resp] <= |v| && n >= v[idx[orig, resp]] )
-		{
-		++idx[orig,resp];
-		return T;
-		}
-	else
-		return F;
-	}
-
-event connection_established(c: connection)
-	{
-	local is_reverse_scan = (c$orig$state == TCP_INACTIVE);
-	Scan::check_scan(c, T, is_reverse_scan);
-	}
-
-event partial_connection(c: connection)
-	{
-	Scan::check_scan(c, T, F);
-	}
-
-event connection_attempt(c: connection)
-	{
-	Scan::check_scan(c, F, c$orig$state == TCP_INACTIVE);
-	}
-
-event connection_half_finished(c: connection)
-	{
-	# Half connections never were "established", so do scan-checking here.
-	Scan::check_scan(c, F, F);
-	}
-
-event connection_rejected(c: connection)
-	{
-	local is_reverse_scan = c$orig$state == TCP_RESET;
-
-	Scan::check_scan(c, F, is_reverse_scan);
-	}
-
-event connection_reset(c: connection)
-	{
-	if ( c$orig$state == TCP_INACTIVE || c$resp$state == TCP_INACTIVE )
-		# We never heard from one side - that looks like a scan.
-		Scan::check_scan(c, c$orig$size + c$resp$size > 0,
-				c$orig$state == TCP_INACTIVE);
-	}
-
-event connection_pending(c: connection)
-	{
-	if ( c$orig$state == TCP_PARTIAL && c$resp$state == TCP_INACTIVE )
-		Scan::check_scan(c, F, F);
-	}
-
-# Report the remaining entries in the tables.
-event bro_done()
-	{
-	for ( orig in distinct_peers )
-		scan_summary(distinct_peers, orig);
-
-	for ( orig in distinct_ports )
-		port_summary(distinct_ports, orig);
-
-	for ( orig in distinct_low_ports )
-		lowport_summary(distinct_low_ports, orig);
-	}
-
diff --git a/examples/prism-bsl.html b/examples/prism-bsl.html deleted file mode 100644 index 163000b060..0000000000 --- a/examples/prism-bsl.html +++ /dev/null @@ -1,386 +0,0 @@ -

Comments

-
 // This is a 1C:Enterprise comments
-//
- -

Strings and characters

-
"This is a 1C:Enterprise string"
-""
-"a"
-"A tabulator character: ""#9"" is easy to embed"
- -

Numbers

-
123
-123.456
-
- -

Full example

-
///////////////////////////////////////////////////////////////////////////////////////////////////////
-// Copyright (c) 2019, ООО 1С-Софт
-// Все права защищены. Эта программа и сопроводительные материалы предоставляются 
-// в соответствии с условиями лицензии Attribution 4.0 International (CC BY 4.0)
-// Текст лицензии доступен по ссылке:
-// https://creativecommons.org/licenses/by/4.0/legalcode
-///////////////////////////////////////////////////////////////////////////////////////////////////////
-
-#Область СлужебныеПроцедурыИФункции
-
-////////////////////////////////////////////////////////////////////////////////
-//  Основные процедуры и функции поиска контактов.
-
-// Получает представление и всю контактную информацию контакта.
-//
-// Параметры:
-//  Контакт                 - ОпределяемыйТип.КонтактВзаимодействия - контакт для которого получается информация.
-//  Представление           - Строка - в данный параметр будет помещено полученное представление.
-//  СтрокаКИ                - Строка - в данный параметр будет помещено полученная контактная информация.
-//  ТипКонтактнойИнформации - Перечисления.ТипыКонтактнойИнформации - возможность установить отбор по типу получаемой
-//                                                                    контактной информации.
-//
-Процедура ПредставлениеИВсяКонтактнаяИнформациюКонтакта(Контакт, Представление, СтрокаКИ,ТипКонтактнойИнформации = Неопределено) Экспорт
-	
-	Представление = "";
-	СтрокаКИ = "";
-	Если Не ЗначениеЗаполнено(Контакт) 
-		ИЛИ ТипЗнч(Контакт) = Тип("СправочникСсылка.СтроковыеКонтактыВзаимодействий") Тогда
-		Контакт = Неопределено;
-		Возврат;
-	КонецЕсли;
-	
-	ИмяТаблицы = Контакт.Метаданные().Имя;
-	ИмяПоляДляНаименованияВладельца = Взаимодействия.ИмяПоляДляНаименованияВладельца(ИмяТаблицы);
-	
-	Запрос = Новый Запрос;
-	Запрос.Текст =
-	"ВЫБРАТЬ
-	|	СправочникКонтакт.Наименование          КАК Наименование,
-	|	" + ИмяПоляДляНаименованияВладельца + " КАК НаименованиеВладельца
-	|ИЗ
-	|	Справочник." + ИмяТаблицы + " КАК СправочникКонтакт
-	|ГДЕ
-	|	СправочникКонтакт.Ссылка = &Контакт
-	|";
-	
-	Запрос.УстановитьПараметр("Контакт", Контакт);
-	Запрос.УстановитьПараметр("ТипКонтактнойИнформации", ТипКонтактнойИнформации);
-	Выборка = Запрос.Выполнить().Выбрать();
-	Если Не Выборка.Следующий() Тогда
-		Возврат;
-	КонецЕсли;
-	
-	Представление = Выборка.Наименование;
-	
-	Если Не ПустаяСтрока(Выборка.НаименованиеВладельца) Тогда
-		Представление = Представление + " (" + Выборка.НаименованиеВладельца + ")";
-	КонецЕсли;
-	
-	МассивКонтактов = ОбщегоНазначенияКлиентСервер.ЗначениеВМассиве(Контакт);
-	ТаблицаКИ = УправлениеКонтактнойИнформацией.КонтактнаяИнформацияОбъектов(МассивКонтактов, ТипКонтактнойИнформации, Неопределено, ТекущаяДатаСеанса());
-	
-	Для Каждого СтрокаТаблицы Из ТаблицаКИ Цикл
-		Если СтрокаТаблицы.Тип <> Перечисления.ТипыКонтактнойИнформации.Другое Тогда
-			СтрокаКИ = СтрокаКИ + ?(ПустаяСтрока(СтрокаКИ), "", "; ") + СтрокаТаблицы.Представление;
-		КонецЕсли;
-	КонецЦикла;
-	
-КонецПроцедуры
-
-// Получает наименование и адреса электронной почты контакта.
-//
-// Параметры:
-//  Контакт - Ссылка - контакт, для которого получаются данные.
-//
-// Возвращаемое значение:
-//  Структура - содержит наименование контакта и список значений электронной почты контакта.
-//
-Функция НаименованиеИАдресаЭлектроннойПочтыКонтакта(Контакт) Экспорт
-	
-	Если Не ЗначениеЗаполнено(Контакт) 
-		Или ТипЗнч(Контакт) = Тип("СправочникСсылка.СтроковыеКонтактыВзаимодействий") Тогда
-		Возврат Неопределено;
-	КонецЕсли;
-	
-	МетаданныеКонтакта = Контакт.Метаданные();
-	
-	Если МетаданныеКонтакта.Иерархический Тогда
-		Если Контакт.ЭтоГруппа Тогда
-			Возврат Неопределено;
-		КонецЕсли;
-	КонецЕсли;
-	
-	МассивОписанияТиповКонтактов = ВзаимодействияКлиентСервер.ОписанияКонтактов();
-	ЭлементМассиваОписания = Неопределено;
-	Для Каждого ЭлементМассива Из МассивОписанияТиповКонтактов Цикл
-		
-		Если ЭлементМассива.Имя = МетаданныеКонтакта.Имя Тогда
-			ЭлементМассиваОписания = ЭлементМассива;
-			Прервать;
-		КонецЕсли;
-		
-	КонецЦикла;
-	
-	Если ЭлементМассиваОписания = Неопределено Тогда
-		Возврат Неопределено;
-	КонецЕсли;
-	
-	ИмяТаблицы = МетаданныеКонтакта.ПолноеИмя();
-	
-	ТекстЗапроса =
-	"ВЫБРАТЬ РАЗРЕШЕННЫЕ РАЗЛИЧНЫЕ
-	|	ЕСТЬNULL(ТаблицаКонтактнаяИнформация.АдресЭП,"""") КАК АдресЭП,
-	|	СправочникКонтакт." + ЭлементМассиваОписания.ИмяРеквизитаПредставлениеКонтакта + " КАК Наименование
-	|ИЗ
-	|	" + ИмяТаблицы + " КАК СправочникКонтакт
-	|		ЛЕВОЕ СОЕДИНЕНИЕ " + ИмяТаблицы + ".КонтактнаяИнформация КАК ТаблицаКонтактнаяИнформация
-	|		ПО (ТаблицаКонтактнаяИнформация.Ссылка = СправочникКонтакт.Ссылка)
-	|			И (ТаблицаКонтактнаяИнформация.Тип = ЗНАЧЕНИЕ(Перечисление.ТипыКонтактнойИнформации.АдресЭлектроннойПочты))
-	|ГДЕ
-	|	СправочникКонтакт.Ссылка = &Контакт
-	|ИТОГИ ПО
-	|	Наименование";
-	
-	Запрос = Новый Запрос;
-	Запрос.Текст = ТекстЗапроса;
-	Запрос.УстановитьПараметр("Контакт", Контакт);
-	Выборка = Запрос.Выполнить().Выбрать(ОбходРезультатаЗапроса.ПоГруппировкам);
-	
-	Если Не Выборка.Следующий() Тогда
-		Возврат Неопределено;
-	КонецЕсли;
-	
-	Адреса = Новый Структура("Наименование,Адреса", Выборка.Наименование, Новый СписокЗначений);
-	ВыборкаАдреса = Выборка.Выбрать();
-	Пока ВыборкаАдреса.Следующий() Цикл
-		Адреса.Адреса.Добавить(ВыборкаАдреса.АдресЭП);
-	КонецЦикла;
-	
-	Возврат Адреса;
-	
-КонецФункции
-
-// Получает адреса электронной почты контакта.
-//
-// Параметры:
-//  Контакт - ОпределяемыйТип.КонтактВзаимодействия - контакт, для которого получаются данные.
-//
-// Возвращаемое значение:
-//  Массив - массив структур содержащих адреса, виды и представления адресов.
-//
-Функция ПолучитьАдресаЭлектроннойПочтыКонтакта(Контакт, ВключатьНезаполненныеВиды = Ложь) Экспорт
-	
-	Если Не ЗначениеЗаполнено(Контакт) Тогда
-		Возврат Неопределено;
-	КонецЕсли;
-	
-	Запрос = Новый Запрос;
-	ИмяМетаданныхКонтакта = Контакт.Метаданные().Имя;
-	
-	Если ВключатьНезаполненныеВиды Тогда
-		
-		Запрос.Текст =
-		"ВЫБРАТЬ
-		|	ВидыКонтактнойИнформации.Ссылка КАК Вид,
-		|	ВидыКонтактнойИнформации.Наименование КАК ВидНаименование,
-		|	Контакты.Ссылка КАК Контакт
-		|ПОМЕСТИТЬ КонтактВидыКИ
-		|ИЗ
-		|	Справочник.ВидыКонтактнойИнформации КАК ВидыКонтактнойИнформации,
-		|	Справочник." + ИмяМетаданныхКонтакта + " КАК Контакты
-		|ГДЕ
-		|	ВидыКонтактнойИнформации.Родитель = &ГруппаВидаКонтактнойИнформации
-		|	И Контакты.Ссылка = &Контакт
-		|	И ВидыКонтактнойИнформации.Тип = ЗНАЧЕНИЕ(Перечисление.ТипыКонтактнойИнформации.АдресЭлектроннойПочты)
-		|;
-		|
-		|////////////////////////////////////////////////////////////////////////////////
-		|ВЫБРАТЬ
-		|	Представление(КонтактВидыКИ.Контакт) КАК Представление,
-		|	ЕСТЬNULL(КонтактнаяИнформация.АдресЭП, """") КАК АдресЭП,
-		|	КонтактВидыКИ.Вид,
-		|	КонтактВидыКИ.ВидНаименование
-		|ИЗ
-		|	КонтактВидыКИ КАК КонтактВидыКИ
-		|		ЛЕВОЕ СОЕДИНЕНИЕ Справочник." + ИмяМетаданныхКонтакта + ".КонтактнаяИнформация КАК КонтактнаяИнформация
-		|		ПО (КонтактнаяИнформация.Ссылка = КонтактВидыКИ.Контакт)
-		|			И (КонтактнаяИнформация.Вид = КонтактВидыКИ.Вид)";
-		
-		ГруппаВидаКонтактнойИнформации = УправлениеКонтактнойИнформацией.ВидКонтактнойИнформацииПоИмени("Справочник" + ИмяМетаданныхКонтакта);
-		Запрос.УстановитьПараметр("ГруппаВидаКонтактнойИнформации", ГруппаВидаКонтактнойИнформации);
-	Иначе
-		
-		Запрос.Текст =
-		"ВЫБРАТЬ
-		|	Таблицы.АдресЭП,
-		|	Таблицы.Вид,
-		|	Таблицы.Представление,
-		|	Таблицы.Вид.Наименование КАК ВидНаименование
-		|ИЗ
-		|	Справочник." + ИмяМетаданныхКонтакта + ".КонтактнаяИнформация КАК Таблицы
-		|ГДЕ
-		|	Таблицы.Ссылка = &Контакт
-		|	И Таблицы.Тип = ЗНАЧЕНИЕ(Перечисление.ТипыКонтактнойИнформации.АдресЭлектроннойПочты)";
-		
-	КонецЕсли;
-	
-	Запрос.УстановитьПараметр("Контакт", Контакт);
-	
-	Выборка = Запрос.Выполнить().Выбрать();
-	Если Выборка.Количество() = 0 Тогда
-		Возврат Новый Массив;
-	КонецЕсли;
-	
-	Результат = Новый Массив;
-	Пока Выборка.Следующий() Цикл
-		Адрес = Новый Структура;
-		Адрес.Вставить("АдресЭП",         Выборка.АдресЭП);
-		Адрес.Вставить("Вид",             Выборка.Вид);
-		Адрес.Вставить("Представление",   Выборка.Представление);
-		Адрес.Вставить("ВидНаименование", Выборка.ВидНаименование);
-		Результат.Добавить(Адрес);
-	КонецЦикла;
-	
-	Возврат Результат;
-	
-КонецФункции
-
-Функция ОтправитьПолучитьПочтуПользователяВФоне(УникальныйИдентификатор) Экспорт
-	
-	ПараметрыПроцедуры = Новый Структура;
-	
-	ПараметрыВыполнения = ДлительныеОперации.ПараметрыВыполненияВФоне(УникальныйИдентификатор);
-	ПараметрыВыполнения.НаименованиеФоновогоЗадания = НСтр("ru = 'Получение и отправка электронной почты пользователя'");
-	
-	ДлительнаяОперация = ДлительныеОперации.ВыполнитьВФоне("УправлениеЭлектроннойПочтой.ОтправитьЗагрузитьПочтуПользователя",
-		ПараметрыПроцедуры,	ПараметрыВыполнения);
-	Возврат ДлительнаяОперация;
-	
-КонецФункции
-
-////////////////////////////////////////////////////////////////////////////////
-//  Прочее
-
-// Устанавливает предмет для массива взаимодействий.
-//
-// Параметры:
-//  МассивВзаимодействий - Массив - массив взаимодействий для которых будет установлен предмет.
-//  Предмет  - Ссылка - предмет, на который будет выполнена замена.
-//  ПроверятьНаличиеДругихЦепочек - Булево - если Истина, то будет выполнена замена предмета и для взаимодействий,
-//                                           которые входят в  цепочки взаимодействий первым взаимодействием которых
-//                                           является взаимодействие входящее в массив.
-//
-Процедура УстановитьПредметДляМассиваВзаимодействий(МассивВзаимодействий, Предмет, ПроверятьНаличиеДругихЦепочек = Ложь) Экспорт
-
-	Если ПроверятьНаличиеДругихЦепочек Тогда
-		
-		Запрос = Новый Запрос;
-		Запрос.Текст = "ВЫБРАТЬ РАЗЛИЧНЫЕ
-		|	ПредметыВзаимодействий.Взаимодействие КАК Ссылка
-		|ИЗ
-		|	РегистрСведений.ПредметыПапкиВзаимодействий КАК ПредметыВзаимодействий
-		|ГДЕ
-		|	НЕ (НЕ ПредметыВзаимодействий.Предмет В (&МассивВзаимодействий)
-		|			И НЕ ПредметыВзаимодействий.Взаимодействие В (&МассивВзаимодействий))";
-		
-		Запрос.УстановитьПараметр("МассивВзаимодействий", МассивВзаимодействий);
-		МассивВзаимодействий = Запрос.Выполнить().Выгрузить().ВыгрузитьКолонку("Ссылка");
-		
-	КонецЕсли;
-	
-	НачатьТранзакцию();
-	Попытка
-		Блокировка = Новый БлокировкаДанных;
-		РегистрыСведений.ПредметыПапкиВзаимодействий.ЗаблокироватьПредметыПапокВзаимодействий(Блокировка, МассивВзаимодействий);
-		Блокировка.Заблокировать();
-		
-		Если ТипЗнч(Предмет) = Тип("РегистрСведенийКлючЗаписи.СостоянияПредметовВзаимодействий") Тогда
-			Предмет = Предмет.Предмет;
-		КонецЕсли;
-		
-		Запрос = Новый Запрос;
-		Запрос.Текст = "ВЫБРАТЬ РАЗЛИЧНЫЕ
-		|	ПредметыПапкиВзаимодействий.Предмет
-		|ИЗ
-		|	РегистрСведений.ПредметыПапкиВзаимодействий КАК ПредметыПапкиВзаимодействий
-		|ГДЕ
-		|	ПредметыПапкиВзаимодействий.Взаимодействие В(&МассивВзаимодействий)
-		|
-		|ОБЪЕДИНИТЬ ВСЕ
-		|
-		|ВЫБРАТЬ
-		|	&Предмет";
-		
-		Запрос.УстановитьПараметр("Предмет", Предмет);
-		Запрос.УстановитьПараметр("МассивВзаимодействий", МассивВзаимодействий);
-		
-		ВыборкаПредметы = Запрос.Выполнить().Выбрать();
-		
-		Для Каждого Взаимодействие Из МассивВзаимодействий Цикл
-			Взаимодействия.УстановитьПредмет(Взаимодействие, Предмет, Ложь);
-		КонецЦикла;
-		
-		Взаимодействия.РассчитатьРассмотреноПоПредметам(Взаимодействия.ТаблицаДанныхДляРасчетаРассмотрено(ВыборкаПредметы, "Предмет"));
-		ЗафиксироватьТранзакцию();
-	Исключение
-		ОтменитьТранзакцию();
-		ВызватьИсключение;
-	КонецПопытки;	
-КонецПроцедуры
-
-// Преобразует письмо в двоичные данные и подготавливает к сохранению на диск.
-//
-// Параметры:
-//  Письмо                  - ДокументСсылка.ЭлектронноеПисьмоВходящее,
-//                            ДокументСсылка.ЭлектронноеПисьмоИсходящее - письмо, которое подготавливается к сохранению.
-//  УникальныйИдентификатор - УникальныйИдентификатор - уникальный идентификатор формы, из которой была вызвана команда сохранения.
-//
-// Возвращаемое значение:
-//  Структура - структура, содержащая подготовленные данные письма.
-//
-Функция ДанныеПисьмаДляСохраненияКакФайл(Письмо, УникальныйИдентификатор) Экспорт
-
-	ДанныеФайла = СтруктураДанныхФайла();
-	
-	ДанныеПисьма = Взаимодействия.ИнтернетПочтовоеСообщениеИзПисьма(Письмо);
-	Если ДанныеПисьма <> Неопределено Тогда
-		
-		ДвоичныеДанные = ДанныеПисьма.ИнтернетПочтовоеСообщение.ПолучитьИсходныеДанные();
-		ДанныеФайла.СсылкаНаДвоичныеДанныеФайла = ПоместитьВоВременноеХранилище(ДвоичныеДанные, УникальныйИдентификатор);
-
-		ДанныеФайла.Наименование = Взаимодействия.ПредставлениеПисьма(ДанныеПисьма.ИнтернетПочтовоеСообщение.Тема,
-			ДанныеПисьма.ДатаПисьма);
-		
-		ДанныеФайла.Расширение  = "eml";
-		ДанныеФайла.ИмяФайла    = ДанныеФайла.Наименование + "." + ДанныеФайла.Расширение;
-		ДанныеФайла.Размер      = ДвоичныеДанные.Размер();
-		ПапкаДляСохранитьКак = ОбщегоНазначения.ХранилищеОбщихНастроекЗагрузить("НастройкиПрограммы", "ПапкаДляСохранитьКак");
-		ДанныеФайла.Вставить("ПапкаДляСохранитьКак", ПапкаДляСохранитьКак);
-		ДанныеФайла.ДатаМодификацииУниверсальная = ТекущаяДатаСеанса();
-		ДанныеФайла.ПолноеНаименованиеВерсии = ДанныеФайла.ИмяФайла;
-		
-	КонецЕсли;
-	
-	Возврат ДанныеФайла;
-
-КонецФункции
-
-Функция СтруктураДанныхФайла()
-
-	СтруктураДанныхФайла = Новый Структура;
-	СтруктураДанныхФайла.Вставить("СсылкаНаДвоичныеДанныеФайла",        "");
-	СтруктураДанныхФайла.Вставить("ОтносительныйПуть",                  "");
-	СтруктураДанныхФайла.Вставить("ДатаМодификацииУниверсальная",       Дата(1, 1, 1));
-	СтруктураДанныхФайла.Вставить("ИмяФайла",                           "");
-	СтруктураДанныхФайла.Вставить("Наименование",                       "");
-	СтруктураДанныхФайла.Вставить("Расширение",                         "");
-	СтруктураДанныхФайла.Вставить("Размер",                             "");
-	СтруктураДанныхФайла.Вставить("Редактирует",                        Неопределено);
-	СтруктураДанныхФайла.Вставить("ПодписанЭП",                         Ложь);
-	СтруктураДанныхФайла.Вставить("Зашифрован",                         Ложь);
-	СтруктураДанныхФайла.Вставить("ФайлРедактируется",                  Ложь);
-	СтруктураДанныхФайла.Вставить("ФайлРедактируетТекущийПользователь", Ложь);
-	СтруктураДанныхФайла.Вставить("ПолноеНаименованиеВерсии",           "");
-	
-	Возврат СтруктураДанныхФайла;
-
-КонецФункции 
-
-#КонецОбласти
\ No newline at end of file diff --git a/examples/prism-c.html b/examples/prism-c.html deleted file mode 100644 index 635b01fd5d..0000000000 --- a/examples/prism-c.html +++ /dev/null @@ -1,22 +0,0 @@ -

Strings

-
"foo \"bar\" baz"
-'foo \'bar\' baz'
-"Multi-line strings ending with a \
-are supported too."
- -

Macro statements

-
# include <stdio.h>
-#define PG_locked   0
-#define PG_error    1
-
- -

Full example

-
#include <stdio.h>
-main(int argc, char *argv[])
-{
-   int c;
-   printf("Number of command line arguments passed: %d\n", argc);
-   for ( c = 0 ; c < argc ; c++)
-      printf("%d. Command line argument passed is %s\n", c+1, argv[c]);
-   return 0;
-}
diff --git a/examples/prism-cfscript.html b/examples/prism-cfscript.html deleted file mode 100644 index 6a0a771bb0..0000000000 --- a/examples/prism-cfscript.html +++ /dev/null @@ -1,43 +0,0 @@ -

Comments

-
// This is a comment
-
-/* This is a comment
-on multiple lines */
-
-/**
-* This is a Javadoc style comment
-*
-* @hint This is an annotation
-*/
-
- -

Functions

-
public boolean function myFunc(required any arg) {
-  return true;
-}
- -

Full example

-
component accessors="true" {
-  property type="string" name="prop1" default="";
-  property string prop2;
-  function init(){
-    this.prop3 = 12;
-    return this;
-  }
-
-  /**
-  * @hint Annotations supported
-  * @foo.hint
-  */
-  public any function build( required foo, color="blue", boolean bar=true ){
-    arguments.foo = {
-      'name' : "something",
-      test = true
-    }
-    var foobar = function( required string baz, x=true, y=false ){
-      return "bar!";
-    };
-    return foo;
-  }
-}
-
diff --git a/examples/prism-chaiscript.html b/examples/prism-chaiscript.html deleted file mode 100644 index a167d39a49..0000000000 --- a/examples/prism-chaiscript.html +++ /dev/null @@ -1,56 +0,0 @@ -

Full example

-
// http://chaiscript.com/examples.html#ChaiScript_Language_Examples
-// Source: https://gist.github.com/lefticus/cf058f2927fef68d58e0#file-chaiscript_overview-chai
-
-// ChaiScript supports the normal kind of control blocks you've come to expect from
-// C++ and JavaScript
-
-
-if (5 > 2) {
-  print("Yup, 5 > 2");
-} else if (2 > 5) {
-  // never gonna happen
-} else {
-  // really not going to happen
-}
-
-var x = true;
-
-while (x)
-{
-  print("x was true")
-  x = false;
-}
-
-for (var i = 1; i < 10; ++i)
-{
-  print(i); // prints 1 through 9
-}
-
-
-// function definition
-
-def myFunc(x) {
-  print(x);
-}
-
-// function definition with function guards
-def myFunc(x) : x > 2 && x < 5 {
-  print(to_string(x) + " is between 2 and 5")
-}
-
-def myFunc(x) : x >= 5 {
-  print(t_string(x) + " is greater than or equal to 5")
-}
-
-myFunc(3)
-
-// ChaiScript also supports in string evaluation, which C++ does not
-
-print("${3 + 5} is 8");
-
-// And dynamic code evaluation
-
-var value = eval("4 + 2 + 12");
-
-// value is equal to 18
diff --git a/examples/prism-cil.html b/examples/prism-cil.html deleted file mode 100644 index 0d228d363a..0000000000 --- a/examples/prism-cil.html +++ /dev/null @@ -1,49 +0,0 @@ -

Full example

-
// Metadata version: v4.0.30319
-.assembly extern mscorlib
-{
-  .publickeytoken = (B7 7A 5C 56 19 34 E0 89 )                         // .z\V.4..
-  .ver 4:0:0:0
-}
-.assembly i1ohgbkl
-{
-  .hash algorithm 0x00008004
-  .ver 0:0:0:0
-}
-.module i1ohgbkl.dll
-// MVID: {AC981AA1-16FE-413D-BBED-D83AE719F45C}
-.imagebase 0x10000000
-.file alignment 0x00000200
-.stackreserve 0x00100000
-.subsystem 0x0003       // WINDOWS_CUI
-.corflags 0x00000001    //  ILONLY
-// Image base: 0x017C0000
-​
-​
-// =============== CLASS MEMBERS DECLARATION ===================
-​
-.class public auto ansi beforefieldinit Program
-       extends [mscorlib]System.Object
-{
-  .method public hidebysig static void  Main() cil managed
-  {
-    //
-    .maxstack  8
-    IL_0000:  nop
-    IL_0001:  ldstr      "Hello World"
-    IL_0006:  call       void [mscorlib]System.Console::WriteLine(string)
-    IL_000b:  nop
-    IL_000c:  ret
-  } // end of method Program::Main
-​
-  .method public hidebysig specialname rtspecialname
-          instance void  .ctor() cil managed
-  {
-    //
-    .maxstack  8
-    IL_0000:  ldarg.0
-    IL_0001:  call       instance void [mscorlib]System.Object::.ctor()
-    IL_0006:  ret
-  } // end of method Program::.ctor
-​
-} // end of class Program
diff --git a/examples/prism-cilkc.html b/examples/prism-cilkc.html deleted file mode 100644 index 627e19fb2d..0000000000 --- a/examples/prism-cilkc.html +++ /dev/null @@ -1,42 +0,0 @@ -

Cilk keywords

-
cilk_scope {}
-cilk_spawn f();
-cilk_spawn {}
-cilk_sync;
-cilk_for () {}
-int cilk_reducer() x;
- -

Full example

-
#include <cilk/cilk.h>
-
-int fib_cilk_scope(int n) {
-	if (n < 2)
-		return;
-	int x, y;
-	cilk_scope {
-		x = cilk_spawn fib(n-1);
-		y = fib(n-2);
-	}
-	return x + y;
-
-int fib_cilk_sync(int n) {
-	if (n < 2)
-		return;
-	int x = cilk_spawn fib(n-1);
-	int y = fib(n-2);
-	cilk_sync;
-	return x + y;
-}
-
-void zero(void *v) {
-	*(int *)v = 0;
-}
-void plus(void *l, void *r) {
-	*(int *)l += *(int *)r;
-}
-int array_sum_cilk_for_reducer(int *A, int n) {
-	int cilk_reducer(zero, plus) sum = 0;
-	cilk_for (int i = 0; i < n; ++i)
-		sum += A[i];
-	return sum;
-}
diff --git a/examples/prism-cilkcpp.html b/examples/prism-cilkcpp.html deleted file mode 100644 index 2101c67be0..0000000000 --- a/examples/prism-cilkcpp.html +++ /dev/null @@ -1,43 +0,0 @@ -

Cilk keywords

-
cilk_scope {}
-cilk_spawn f();
-cilk_spawn {}
-cilk_sync;
-cilk_for () {}
-int cilk_reducer() x;
- -

Full example

-
#include <cilk/cilk.h>
-#include <vector>
-
-int fib_cilk_scope(int n) {
-	if (n < 2)
-		return;
-	int x, y;
-	cilk_scope {
-		x = cilk_spawn fib(n-1);
-		y = fib(n-2);
-	}
-	return x + y;
-
-int fib_cilk_sync(int n) {
-	if (n < 2)
-		return;
-	int x = cilk_spawn fib(n-1);
-	int y = fib(n-2);
-	cilk_sync;
-	return x + y;
-}
-
-void zero(void *v) {
-	*(int *)v = 0;
-}
-void plus(void *l, void *r) {
-	*(int *)l += *(int *)r;
-}
-int array_sum_cilk_for_reducer(std::vector<int> A) {
-	int cilk_reducer(zero, plus) sum = 0;
-	cilk_for (auto itr = A.cbegin(); itr != A.cend(); ++itr)
-		sum += *itr;
-	return sum;
-}
diff --git a/examples/prism-clike.html b/examples/prism-clike.html deleted file mode 100644 index b5aab46540..0000000000 --- a/examples/prism-clike.html +++ /dev/null @@ -1,27 +0,0 @@ -

Note: The C-like component is not really a language on its own, - it is the basis of many other components.

- -

Comments

-
// Single line comment
-/* Multi-line
-comment */
- -

Strings

-
"foo \"bar\" baz";
-'foo \'bar\' baz';
- -

Numbers

-
123
-123.456
--123.456
-1e-23
-123.456E789
-0xaf
-0xAF
-
- -

Functions

-
foo();
-Bar();
-_456();
-
diff --git a/examples/prism-clojure.html b/examples/prism-clojure.html deleted file mode 100644 index 8e12fca893..0000000000 --- a/examples/prism-clojure.html +++ /dev/null @@ -1,386 +0,0 @@ -

Full example

-

-; This code is copied from https://learnxinyminutes.com/docs/clojure/
-
-; Comments start with semicolons.
-
-; Clojure is written in "forms", which are just
-; lists of things inside parentheses, separated by whitespace.
-;
-; The clojure reader assumes that the first thing is a
-; function or macro to call, and the rest are arguments.
-
-; The first call in a file should be ns, to set the namespace
-(ns learnclojure)
-
-; More basic examples:
-
-; str will create a string out of all its arguments
-(str "Hello" " " "World") ; => "Hello World"
-
-; Math is straightforward
-(+ 1 1) ; => 2
-(- 2 1) ; => 1
-(* 1 2) ; => 2
-(/ 2 1) ; => 2
-
-; Equality is =
-(= 1 1) ; => true
-(= 2 1) ; => false
-
-; You need not for logic, too
-(not true) ; => false
-
-; Nesting forms works as you expect
-(+ 1 (- 3 2)) ; = 1 + (3 - 2) => 2
-
-; Types
-;;;;;;;;;;;;;
-
-; Clojure uses Java's object types for booleans, strings and numbers.
-; Use `class` to inspect them.
-(class 1) ; Integer literals are java.lang.Long by default
-(class 1.); Float literals are java.lang.Double
-(class ""); Strings always double-quoted, and are java.lang.String
-(class false) ; Booleans are java.lang.Boolean
-(class nil); The "null" value is called nil
-
-; If you want to create a literal list of data, use ' to stop it from
-; being evaluated
-'(+ 1 2) ; => (+ 1 2)
-; (shorthand for (quote (+ 1 2)))
-
-; You can eval a quoted list
-(eval '(+ 1 2)) ; => 3
-
-; Collections & Sequences
-;;;;;;;;;;;;;;;;;;;
-
-; Lists are linked-list data structures, while Vectors are array-backed.
-; Vectors and Lists are java classes too!
-(class [1 2 3]); => clojure.lang.PersistentVector
-(class '(1 2 3)); => clojure.lang.PersistentList
-
-; A list would be written as just (1 2 3), but we have to quote
-; it to stop the reader thinking it's a function.
-; Also, (list 1 2 3) is the same as '(1 2 3)
-
-; "Collections" are just groups of data
-; Both lists and vectors are collections:
-(coll? '(1 2 3)) ; => true
-(coll? [1 2 3]) ; => true
-
-; "Sequences" (seqs) are abstract descriptions of lists of data.
-; Only lists are seqs.
-(seq? '(1 2 3)) ; => true
-(seq? [1 2 3]) ; => false
-
-; A seq need only provide an entry when it is accessed.
-; So, seqs which can be lazy -- they can define infinite series:
-(range 4) ; => (0 1 2 3)
-(range) ; => (0 1 2 3 4 ...) (an infinite series)
-(take 4 (range)) ;  (0 1 2 3)
-
-; Use cons to add an item to the beginning of a list or vector
-(cons 4 [1 2 3]) ; => (4 1 2 3)
-(cons 4 '(1 2 3)) ; => (4 1 2 3)
-
-; Conj will add an item to a collection in the most efficient way.
-; For lists, they insert at the beginning. For vectors, they insert at the end.
-(conj [1 2 3] 4) ; => [1 2 3 4]
-(conj '(1 2 3) 4) ; => (4 1 2 3)
-
-; Use concat to add lists or vectors together
-(concat [1 2] '(3 4)) ; => (1 2 3 4)
-
-; Use filter, map to interact with collections
-(map inc [1 2 3]) ; => (2 3 4)
-(filter even? [1 2 3]) ; => (2)
-
-; Use reduce to reduce them
-(reduce + [1 2 3 4])
-; = (+ (+ (+ 1 2) 3) 4)
-; => 10
-
-; Reduce can take an initial-value argument too
-(reduce conj [] '(3 2 1))
-; = (conj (conj (conj [] 3) 2) 1)
-; => [3 2 1]
-
-; Functions
-;;;;;;;;;;;;;;;;;;;;;
-
-; Use fn to create new functions. A function always returns
-; its last statement.
-(fn [] "Hello World") ; => fn
-
-; (You need extra parens to call it)
-((fn [] "Hello World")) ; => "Hello World"
-
-; You can create a var using def
-(def x 1)
-x ; => 1
-
-; Assign a function to a var
-(def hello-world (fn [] "Hello World"))
-(hello-world) ; => "Hello World"
-
-; You can shorten this process by using defn
-(defn hello-world [] "Hello World")
-
-; The [] is the list of arguments for the function.
-(defn hello [name]
-  (str "Hello " name))
-(hello "Steve") ; => "Hello Steve"
-
-; You can also use this shorthand to create functions:
-(def hello2 #(str "Hello " %1))
-(hello2 "Fanny") ; => "Hello Fanny"
-
-; You can have multi-variadic functions, too
-(defn hello3
-  ([] "Hello World")
-  ([name] (str "Hello " name)))
-(hello3 "Jake") ; => "Hello Jake"
-(hello3) ; => "Hello World"
-
-; Functions can pack extra arguments up in a seq for you
-(defn count-args [& args]
-  (str "You passed " (count args) " args: " args))
-(count-args 1 2 3) ; => "You passed 3 args: (1 2 3)"
-
-; You can mix regular and packed arguments
-(defn hello-count [name & args]
-  (str "Hello " name ", you passed " (count args) " extra args"))
-(hello-count "Finn" 1 2 3)
-; => "Hello Finn, you passed 3 extra args"
-
-
-; Maps
-;;;;;;;;;;
-
-; Hash maps and array maps share an interface. Hash maps have faster lookups
-; but don't retain key order.
-(class {:a 1 :b 2 :c 3}) ; => clojure.lang.PersistentArrayMap
-(class (hash-map :a 1 :b 2 :c 3)) ; => clojure.lang.PersistentHashMap
-
-; Arraymaps will automatically become hashmaps through most operations
-; if they get big enough, so you don't need to worry.
-
-; Maps can use any hashable type as a key, but usually keywords are best
-; Keywords are like strings with some efficiency bonuses
-(class :a) ; => clojure.lang.Keyword
-
-(def stringmap {"a" 1, "b" 2, "c" 3})
-stringmap  ; => {"a" 1, "b" 2, "c" 3}
-
-(def keymap {:a 1, :b 2, :c 3})
-keymap ; => {:a 1, :c 3, :b 2}
-
-; By the way, commas are always treated as whitespace and do nothing.
-
-; Retrieve a value from a map by calling it as a function
-(stringmap "a") ; => 1
-(keymap :a) ; => 1
-
-; Keywords can be used to retrieve their value from a map, too!
-(:b keymap) ; => 2
-
-; Don't try this with strings.
-;("a" stringmap)
-; => Exception: java.lang.String cannot be cast to clojure.lang.IFn
-
-; Retrieving a non-present key returns nil
-(stringmap "d") ; => nil
-
-; Use assoc to add new keys to hash-maps
-(def newkeymap (assoc keymap :d 4))
-newkeymap ; => {:a 1, :b 2, :c 3, :d 4}
-
-; But remember, clojure types are immutable!
-keymap ; => {:a 1, :b 2, :c 3}
-
-; Use dissoc to remove keys
-(dissoc keymap :a :b) ; => {:c 3}
-
-; Sets
-;;;;;;
-
-(class #{1 2 3}) ; => clojure.lang.PersistentHashSet
-(set [1 2 3 1 2 3 3 2 1 3 2 1]) ; => #{1 2 3}
-
-; Add a member with conj
-(conj #{1 2 3} 4) ; => #{1 2 3 4}
-
-; Remove one with disj
-(disj #{1 2 3} 1) ; => #{2 3}
-
-; Test for existence by using the set as a function:
-(#{1 2 3} 1) ; => 1
-(#{1 2 3} 4) ; => nil
-
-; There are more functions in the clojure.sets namespace.
-
-; Useful forms
-;;;;;;;;;;;;;;;;;
-
-; Logic constructs in clojure are just macros, and look like
-; everything else
-(if false "a" "b") ; => "b"
-(if false "a") ; => nil
-
-; Use let to create temporary bindings
-(let [a 1 b 2]
-  (> a b)) ; => false
-
-; Group statements together with do
-(do
-  (print "Hello")
-  "World") ; => "World" (prints "Hello")
-
-; Functions have an implicit do
-(defn print-and-say-hello [name]
-  (print "Saying hello to " name)
-  (str "Hello " name))
-(print-and-say-hello "Jeff") ;=> "Hello Jeff" (prints "Saying hello to Jeff")
-
-; So does let
-(let [name "Urkel"]
-  (print "Saying hello to " name)
-  (str "Hello " name)) ; => "Hello Urkel" (prints "Saying hello to Urkel")
-
-
-; Use the threading macros (-> and ->>) to express transformations of
-; data more clearly.
-
-; The "Thread-first" macro (->) inserts into each form the result of
-; the previous, as the first argument (second item)
-(->
-   {:a 1 :b 2}
-   (assoc :c 3) ;=> (assoc {:a 1 :b 2} :c 3)
-   (dissoc :b)) ;=> (dissoc (assoc {:a 1 :b 2} :c 3) :b)
-
-; This expression could be written as:
-; (dissoc (assoc {:a 1 :b 2} :c 3) :b)
-; and evaluates to {:a 1 :c 3}
-
-; The double arrow does the same thing, but inserts the result of
-; each line at the *end* of the form. This is useful for collection
-; operations in particular:
-(->>
-   (range 10)
-   (map inc)     ;=> (map inc (range 10)
-   (filter odd?) ;=> (filter odd? (map inc (range 10))
-   (into []))    ;=> (into [] (filter odd? (map inc (range 10)))
-                 ; Result: [1 3 5 7 9]
-
-; When you are in a situation where you want more freedom as where to
-; put the result of previous data transformations in an
-; expression, you can use the as-> macro. With it, you can assign a
-; specific name to transformations' output and use it as a
-; placeholder in your chained expressions:
-
-(as-> [1 2 3] input
-  (map inc input);=> You can use last transform's output at the last position
-  (nth input 2) ;=>  and at the second position, in the same expression
-  (conj [4 5 6] input [8 9 10])) ;=> or in the middle !
-
-
-
-; Modules
-;;;;;;;;;;;;;;;
-
-; Use "use" to get all functions from the module
-(use 'clojure.set)
-
-; Now we can use set operations
-(intersection #{1 2 3} #{2 3 4}) ; => #{2 3}
-(difference #{1 2 3} #{2 3 4}) ; => #{1}
-
-; You can choose a subset of functions to import, too
-(use '[clojure.set :only [intersection]])
-
-; Use require to import a module
-(require 'clojure.string)
-
-; Use / to call functions from a module
-; Here, the module is clojure.string and the function is blank?
-(clojure.string/blank? "") ; => true
-
-; You can give a module a shorter name on import
-(require '[clojure.string :as str])
-(str/replace "This is a test." #"[a-o]" str/upper-case) ; => "THIs Is A tEst."
-; (#"" denotes a regular expression literal)
-
-; You can use require (and use, but don't) from a namespace using :require.
-; You don't need to quote your modules if you do it this way.
-(ns test
-  (:require
-    [clojure.string :as str]
-    [clojure.set :as set]))
-
-; Java
-;;;;;;;;;;;;;;;;;
-
-; Java has a huge and useful standard library, so
-; you'll want to learn how to get at it.
-
-; Use import to load a java module
-(import java.util.Date)
-
-; You can import from an ns too.
-(ns test
-  (:import java.util.Date
-           java.util.Calendar))
-
-; Use the class name with a "." at the end to make a new instance
-(Date.) ; <a date object>
-
-; Use . to call methods. Or, use the ".method" shortcut
-(. (Date.) getTime) ; <a timestamp>
-(.getTime (Date.)) ; exactly the same thing.
-
-; Use / to call static methods
-(System/currentTimeMillis) ; <a timestamp> (system is always present)
-
-; Use doto to make dealing with (mutable) classes more tolerable
-(import java.util.Calendar)
-(doto (Calendar/getInstance)
-  (.set 2000 1 1 0 0 0)
-  .getTime) ; => A Date. set to 2000-01-01 00:00:00
-
-; STM
-;;;;;;;;;;;;;;;;;
-
-; Software Transactional Memory is the mechanism clojure uses to handle
-; persistent state. There are a few constructs in clojure that use this.
-
-; An atom is the simplest. Pass it an initial value
-(def my-atom (atom {}))
-
-; Update an atom with swap!.
-; swap! takes a function and calls it with the current value of the atom
-; as the first argument, and any trailing arguments as the second
-(swap! my-atom assoc :a 1) ; Sets my-atom to the result of (assoc {} :a 1)
-(swap! my-atom assoc :b 2) ; Sets my-atom to the result of (assoc {:a 1} :b 2)
-
-; Use '@' to dereference the atom and get the value
-my-atom  ;=> Atom<#...> (Returns the Atom object)
-@my-atom ; => {:a 1 :b 2}
-
-; Here's a simple counter using an atom
-(def counter (atom 0))
-(defn inc-counter []
-  (swap! counter inc))
-
-(inc-counter)
-(inc-counter)
-(inc-counter)
-(inc-counter)
-(inc-counter)
-
-@counter ; => 5
-
-; Other STM constructs are refs and agents.
-; Refs: http://clojure.org/refs
-; Agents: http://clojure.org/agents
diff --git a/examples/prism-cmake.html b/examples/prism-cmake.html deleted file mode 100644 index cec9576110..0000000000 --- a/examples/prism-cmake.html +++ /dev/null @@ -1,102 +0,0 @@ -

Comments

-
# This is a comment
- -

Keywords

-
add_library(foo main.cpp)
-target_link_libraries(foo bar)
-
- -

Functions

-
user_defined_function()
-another_custom_function(argument)
-
- -

Variables

-
CMAKE_COMPILER_IS_GNUG77
-CMAKE_COMPILE_PDB_OUTPUT_DIRECTORY
-CMAKE_COMPILE_PDB_OUTPUT_DIRECTORY_WHATEVER
-CMAKE_CONFIGURATION_TYPES
-CMAKE_CPACK_COMMAND
-CMAKE_CROSSCOMPILING
-CMAKE_CROSSCOMPILING_EMULATOR
-CMAKE_CTEST_COMMAND
-CMAKE_CUDA_EXTENSIONS
-CMAKE_CUDA_HOST_COMPILER
-CMAKE_CUDA_SEPARABLE_COMPILATION
-CMAKE_CUDA_STANDARD
-CMAKE_CUDA_STANDARD_REQUIRED
-"${INSIDE_STRING}"
-"${PROPER}chaining${VARIABLES}"
-
- -

Properties

-
CUDA_STANDARD
-CUDA_STANDARD_REQUIRED
-CXX_EXTENSIONS
-CXX_STANDARD
-cxx_std_17
-cxx_variadic_templates
- -

Strings

-
"A string"
-    "A multi
-    line
-    string"
-    "A ${VARIABLE} insde a string"
- -

Full example

-
cmake_minimum_required(VERSION 3.13)
-
-project(crypto)
-
-add_library(base INTERFACE)
-target_compile_features(base INTERFACE
-    cxx_std_17
-    )
-
-add_subdirectory(helpers)
-add_subdirectory(msg)
-
-add_library(analyzers-obj OBJECT
-    CryptoAnalyzer.cpp
-    )
-
-target_include_directories(analyzers-obj
-    PUBLIC
-        ${CMAKE_CURRENT_SOURCE_DIR}
-    )
-
-find_package(predi REQUIRED)
-target_link_libraries(analyzers-obj
-    PUBLIC
-        base
-        predi::predi
-        crypto::helpers
-    )
-
-set_target_properties(analyzers-obj
-    PROPERTIES
-        POSITION_INDEPENDENT_CODE ON
-    )
-
-add_library(analyzers SHARED
-    $<TARGET_OBJECTS:analyzers-obj>
-    )
-
-target_link_libraries(analyzers PUBLIC analyzers-obj)
-
-add_executable(crypto
-    main.cpp
-    )
-
-target_link_libraries(crypto
-    PUBLIC
-        analyzers
-    PRIVATE
-        base
-        messages
-    )
-
-enable_testing()
-add_subdirectory(tests)
-
\ No newline at end of file diff --git a/examples/prism-cobol.html b/examples/prism-cobol.html deleted file mode 100644 index c807cf10c8..0000000000 --- a/examples/prism-cobol.html +++ /dev/null @@ -1,26 +0,0 @@ -

Full example

-
       *> https://en.wikipedia.org/w/index.php?title=COBOL&oldid=1011483106
-       RD  sales-report
-           PAGE LIMITS 60 LINES
-           FIRST DETAIL 3
-           CONTROLS seller-name.
-
-       01  TYPE PAGE HEADING.
-           03  COL 1                    VALUE "Sales Report".
-           03  COL 74                   VALUE "Page".
-           03  COL 79                   PIC Z9 SOURCE PAGE-COUNTER.
-
-       01  sales-on-day TYPE DETAIL, LINE + 1.
-           03  COL 3                    VALUE "Sales on".
-           03  COL 12                   PIC 99/99/9999 SOURCE sales-date.
-           03  COL 21                   VALUE "were".
-           03  COL 26                   PIC $$$$9.99 SOURCE sales-amount.
-
-       01  invalid-sales TYPE DETAIL, LINE + 1.
-           03  COL 3                    VALUE "INVALID RECORD:".
-           03  COL 19                   PIC X(34) SOURCE sales-record.
-
-       01  TYPE CONTROL HEADING seller-name, LINE + 2.
-           03  COL 1                    VALUE "Seller:".
-           03  COL 9                    PIC X(30) SOURCE seller-name.
-
diff --git a/examples/prism-coffeescript.html b/examples/prism-coffeescript.html deleted file mode 100644 index a710aa990d..0000000000 --- a/examples/prism-coffeescript.html +++ /dev/null @@ -1,61 +0,0 @@ -

Comments

-
# This is a comment
-### This is a
-multi-line comment###
- -

Strings

-
'foo \'bar\' baz'
-"foo \"bar\" baz"
-'Multi-line
-strings are supported'
-"Multi-line
-strings are supported"
-''' 'Block strings'
-are supported too'''
-""" "Block strings"
-are supported too"""
- -

String interpolation

-
"String #{interpolation} is supported"
-'This works #{only} between double-quoted strings'
- -

Object properties

-
kids =
-  brother:
-    name: "Max"
-    age:  11
-  sister:
-    name: "Ida"
-    age:  9
- -

Regexps

-
/normal [r]egexp?/;
-/// ^(
-  mul\t[i-l]ine
-  regexp          # with embedded comment
-) ///
- -

Classes

-
class Animal
-  constructor: (@name) ->
-  move: (meters) ->
-    alert @name + " moved #{meters}m."
-
-class Snake extends Animal
-  move: ->
-    alert "Slithering..."
-    super 5
-
-class Horse extends Animal
-  move: ->
-    alert "Galloping..."
-    super 45
-
-sam = new Snake "Sammy the Python"
-tom = new Horse "Tommy the Palomino"
-
-sam.move()
-tom.move()
- -

Inline JavaScript

-
`alert("foo")`
\ No newline at end of file diff --git a/examples/prism-concurnas.html b/examples/prism-concurnas.html deleted file mode 100644 index 87b9a4ce06..0000000000 --- a/examples/prism-concurnas.html +++ /dev/null @@ -1,89 +0,0 @@ -

Comments

-
// This is a comment
-/* This is a comment
-on multiple lines */
- -

Numbers

-
12
-12e5
-12.f
-12f
-12d
-12.d
-12.0
-12.0f
-12.0d
- -

strings and language extensions

-
"hi"
-'hi'
-'c'
-'what "yach"'
-s'c'
-"c"
-r"[a-z|A-Z]+"
- -

Functions

-
def add(a int, b int) => a + b
- -

Language Extensions

-
dcalc = mylisp||(+ 1 2 (* 2 3))|| // == 9
-
-myFortran || program hello
-          		print *, "Hello World!"
-       		 end program hello|| //prints "Hello World!"
-
-lotto = myAPL || x[⍋x←6?40] || //6 unique random numbers from 1 to 40
- -

Full example

-
//an overloaded function
-def adder(a int, b int) => a + b
-def adder(a int, b float) => adder(a, b as int)
-def adder(a int) => adder(a, 10)
-
-//a default value
-def powerPlus(a int, raiseTo = 2, c int) => a ** raiseTo + c
-
-//call our function with a default value
-res1 = powerPlus(4, 10)//second argument defaults to '2'
-res2 = powerPlus(4, 3, 10)//second argument provided
-
-//calling a function with named parameters:
-def powerAdder(a int, raiseATo = 2, b int, raiseBTo = 2) => a**raiseATo + b**raiseBTo
-res3 = powerAdder(2, 4, raiseATo=3)//equivalent to: powerAdder(2, 3, 4, 2)
-
-//varargs:
-def sum(elms int...) int {
-  res = 0
-  for(elm in elms){
-    res += elm
-  }
-  res
-}
-
-//call our function with a vararg
-thesum = sum(1, 2, 3, 4, 5)
-
-//partially defined typedef
-typedef NameMap<X> = java.util.ArrayList<java.util.HashMap<String, java.util.HashSet<X>>>
-
-//using typedefs...
-nm NameMap<String>= new NameMap<String>()
-
-@Annotation
-class MyClass(a int, b int, c String){
-  override toString() => 'MyClass({a}, {b}, "{c}")'
-}
-
-mc1 = MyClass(12, 14, "hi there")
-mc2 = mc1@ //copy mc1
-
-assert mc1 == mc2//same values!
-assert mc1 &<> mc2//different objects!
-
-mc3 = mc1@(a = 100)//copy mc1 but overwrite value of a
-assert 'MyClass(100, 14, "hi there")' == mc3.toString()
-
-mc4 = mc1@(<a, b>)//copy mc1 but exclude a and b
-assert 'MyClass(0, 0, "hi there")' == mc3.toString()
-
diff --git a/examples/prism-cooklang.html b/examples/prism-cooklang.html deleted file mode 100644 index 4ba6ff1f6b..0000000000 --- a/examples/prism-cooklang.html +++ /dev/null @@ -1,41 +0,0 @@ -

Comments

-

--- This is a single line comment
-[- this
-is
-a multi line comment -]
-
- -

Meta

-

->> servings: 3
->> source: https://cooklang.org/docs/spec
->> any key: any value
-
- -

Ingredients

-

-@salt without amount
-@egg{1}
-@milk{1%l}
-@milk{1|2%l}
-@egg{1|2}
-@egg{1*}
-@milk{2*%l}
-
- -

Cookware

-

-#spoon without amount
-#spoon{10%pair}
-#spoon{1|2}
-#spoon{1*%pair}
-#spoon{1|2%pair}
-#spoon{1*}
-
- -

Timer

-

-~{25%minutes} without name
-~named timer{1%hours}
-
\ No newline at end of file diff --git a/examples/prism-coq.html b/examples/prism-coq.html deleted file mode 100644 index 1e9b51db32..0000000000 --- a/examples/prism-coq.html +++ /dev/null @@ -1,45 +0,0 @@ -

Full example

-
(* Source: https://coq.inria.fr/a-short-introduction-to-coq *)
-
-Inductive seq : nat -> Set :=
-| niln : seq 0
-| consn : forall n : nat, nat -> seq n -> seq (S n).
-
-Fixpoint length (n : nat) (s : seq n) {struct s} : nat :=
-  match s with
-  | niln => 0
-  | consn i _ s' => S (length i s')
-  end.
-
-Theorem length_corr : forall (n : nat) (s : seq n), length n s = n.
-Proof.
-  intros n s.
-
-  (* reasoning by induction over s. Then, we have two new goals
-     corresponding on the case analysis about s (either it is
-     niln or some consn *)
-  induction s.
-
-    (* We are in the case where s is void. We can reduce the
-       term: length 0 niln *)
-    simpl.
-
-    (* We obtain the goal 0 = 0. *)
-    trivial.
-
-    (* now, we treat the case s = consn n e s with induction
-       hypothesis IHs *)
-    simpl.
-
-    (* The induction hypothesis has type length n s = n.
-       So we can use it to perform some rewriting in the goal: *)
-    rewrite IHs.
-
-    (* Now the goal is the trivial equality: S n = S n *)
-    trivial.
-
-  (* Now all sub cases are closed, we perform the ultimate
-     step: typing the term built using tactics and save it as
-     a witness of the theorem. *)
-Qed.
-
diff --git a/examples/prism-cpp.html b/examples/prism-cpp.html deleted file mode 100644 index f0fa1d3d20..0000000000 --- a/examples/prism-cpp.html +++ /dev/null @@ -1,61 +0,0 @@ -

Strings

-
"foo \"bar\" baz"
-'foo \'bar\' baz'
-"Multi-line strings ending with a \
-are supported too."
- -

Macro statements

-
# include <stdio.h>
-#define PG_locked   0
-#define PG_error    1
-
- -

Booleans

-
true;
-false;
- -

Operators

-
a and b;
-c bitand d;
- -

Full example

-
/*
-David Cary 2010-09-14
-quick demo for wikibooks
-public domain
-*/
-#include <iostream>
-#include <vector>
-using namespace std;
-
-vector<int> pick_vector_with_biggest_fifth_element(
-    vector<int> left,
-    vector<int> right
-){
-    if( (left[5]) < (right[5]) ){
-        return( right );
-    };
-    // else
-    return( left );
-}
-
-int vector_demo(void){
-    cout << "vector demo" << endl;
-    vector<int> left(7);
-    vector<int> right(7);
-
-    left[5] = 7;
-    right[5] = 8;
-    cout << left[5] << endl;
-    cout << right[5] << endl;
-    vector<int> biggest(
-        pick_vector_with_biggest_fifth_element( left, right )
-    );
-    cout << biggest[5] << endl;
-
-    return 0;
-}
-
-int main(void){
-    vector_demo();
-}
diff --git a/examples/prism-crystal.html b/examples/prism-crystal.html deleted file mode 100644 index c3cad166af..0000000000 --- a/examples/prism-crystal.html +++ /dev/null @@ -1,16 +0,0 @@ -

Number literals with underscores and postfix

-
1_u32
-123_456.789e-10_f64
- -

Attributes

-
@[AlwaysInline]
-def foo
-	1
-end
- -

Macro expansions

-
{% for key, value in {foo: 100, bar: 20} %}
-	def {{ key.id }}
-		{{ value }}
-	end
-{% end %}
\ No newline at end of file diff --git a/examples/prism-csharp.html b/examples/prism-csharp.html deleted file mode 100644 index fc60c71076..0000000000 --- a/examples/prism-csharp.html +++ /dev/null @@ -1,57 +0,0 @@ -

Comments

-
// Single line comment
-/* Multi-line
-comment */
- -

Strings

-
"foo \"bar\" baz"
-@"Verbatim strings"
-@"Luis: ""Patrick, where did you get that overnight bag?""
-    Patrick: ""Jean Paul Gaultier.""";
-
- -

Full example

-
using System.Windows.Forms;
-using System.Drawing;
-
-public static DialogResult InputBox(string title, string promptText, ref string value)
-{
-  Form form = new Form();
-  Label label = new Label();
-  TextBox textBox = new TextBox();
-  Button buttonOk = new Button();
-  Button buttonCancel = new Button();
-
-  form.Text = title;
-  label.Text = promptText;
-  textBox.Text = value;
-
-  buttonOk.Text = "OK";
-  buttonCancel.Text = "Cancel";
-  buttonOk.DialogResult = DialogResult.OK;
-  buttonCancel.DialogResult = DialogResult.Cancel;
-
-  label.SetBounds(9, 20, 372, 13);
-  textBox.SetBounds(12, 36, 372, 20);
-  buttonOk.SetBounds(228, 72, 75, 23);
-  buttonCancel.SetBounds(309, 72, 75, 23);
-
-  label.AutoSize = true;
-  textBox.Anchor = textBox.Anchor | AnchorStyles.Right;
-  buttonOk.Anchor = AnchorStyles.Bottom | AnchorStyles.Right;
-  buttonCancel.Anchor = AnchorStyles.Bottom | AnchorStyles.Right;
-
-  form.ClientSize = new Size(396, 107);
-  form.Controls.AddRange(new Control[] { label, textBox, buttonOk, buttonCancel });
-  form.ClientSize = new Size(Math.Max(300, label.Right + 10), form.ClientSize.Height);
-  form.FormBorderStyle = FormBorderStyle.FixedDialog;
-  form.StartPosition = FormStartPosition.CenterScreen;
-  form.MinimizeBox = false;
-  form.MaximizeBox = false;
-  form.AcceptButton = buttonOk;
-  form.CancelButton = buttonCancel;
-
-  DialogResult dialogResult = form.ShowDialog();
-  value = textBox.Text;
-  return dialogResult;
-}
diff --git a/examples/prism-cshtml.html b/examples/prism-cshtml.html deleted file mode 100644 index cc11eeb9ae..0000000000 --- a/examples/prism-cshtml.html +++ /dev/null @@ -1,36 +0,0 @@ -

Full example

-
@* Source: https://docs.microsoft.com/en-us/aspnet/core/razor-pages/?view=aspnetcore-5.0&tabs=visual-studio#the-home-page *@
-
-@page
-@model RazorPagesContacts.Pages.Customers.IndexModel
-@addTagHelper *, Microsoft.AspNetCore.Mvc.TagHelpers
-
-<h1>Contacts home page</h1>
-<form method="post">
-	<table class="table">
-		<thead>
-			<tr>
-				<th>ID</th>
-				<th>Name</th>
-				<th></th>
-			</tr>
-		</thead>
-		<tbody>
-			@foreach (var contact in Model.Customer)
-			{
-				<tr>
-					<td> @contact.Id  </td>
-					<td>@contact.Name</td>
-					<td>
-						<a asp-page="./Edit" asp-route-id="@contact.Id">Edit</a> |
-						<button type="submit" asp-page-handler="delete"
-								asp-route-id="@contact.Id">delete
-						</button>
-					</td>
-				</tr>
-			}
-		</tbody>
-	</table>
-	<a asp-page="Create">Create New</a>
-</form>
-
diff --git a/examples/prism-csp.html b/examples/prism-csp.html deleted file mode 100644 index e10a416b0e..0000000000 --- a/examples/prism-csp.html +++ /dev/null @@ -1,13 +0,0 @@ -

A complete policy

-
default-src 'none';
-script-src my.cdn.com;
-img-src 'self' data:;
-child-src 'self' data: ms-appx-web:;
-block-all-mixed-content;
-report-uri https://my-reports.com/submit;
-
- -

An policy with unsafe source expressions

-
script-src 'self' 'unsafe-eval' 'unsafe-inline';
-style-src 'unsafe-inline' 'unsafe-hashed-attributes' 'self';
-
diff --git a/examples/prism-css-extras.html b/examples/prism-css-extras.html deleted file mode 100644 index c780d93536..0000000000 --- a/examples/prism-css-extras.html +++ /dev/null @@ -1,28 +0,0 @@ -

Selectors

-
a#id.class:hover {}
-li:nth-child(2n+1) {}
-span::before {}
-a[title], a[href$=".pdf"] {}, a[href$=".jpg" i] {}
-
- -

Some of added tokens aren't supported by Prism's default themes.

- -

Variables

-
:root {
-	--foo: 12px;
-}
-a {
-	font-size: var(--foo);
-	padding: calc(var(--foo) + .5em);
-}
-
- -

Colors

-
span {
-	background: rgba(0, 128, 255, .4);
-	color: red;
-	color: green;
-	color: blue;
-	border: 1px solid #FFF;
-}
-
diff --git a/examples/prism-css.html b/examples/prism-css.html deleted file mode 100644 index a36f196676..0000000000 --- a/examples/prism-css.html +++ /dev/null @@ -1,34 +0,0 @@ -

Empty rule

-
*{} * {} p {}
-
ul,
-ol {}
- -

Simple rule

-
p { color: red; }
- -

Important rule

-

-p {
-    color: red !important;
-    line-height: normal!important;
-}
-p{position:absolute!important}
-
- -

@ rule

-
@media screen and (min-width: 100px) {}
- -

LESS variable

-
@main-color: red;
-.foo {
-	background: @main-color;
-}
- -

Comment

-
/* Simple comment here */
- -

String

-
content: 'foo';
- -

URL

-
content: url(foo.png);
diff --git a/examples/prism-csv.html b/examples/prism-csv.html deleted file mode 100644 index cbba8d9dcc..0000000000 --- a/examples/prism-csv.html +++ /dev/null @@ -1,7 +0,0 @@ -

Full example

-
Year,Make,Model,Description,Price
-1997,Ford,E350,"ac, abs, moon",3000.00
-1999,Chevy,"Venture ""Extended Edition""","",4900.00
-1999,Chevy,"Venture ""Extended Edition, Very Large""",,5000.00
-1996,Jeep,Grand Cherokee,"MUST SELL!
-air, moon roof, loaded",4799.00
diff --git a/examples/prism-cue.html b/examples/prism-cue.html deleted file mode 100644 index f2c53895c7..0000000000 --- a/examples/prism-cue.html +++ /dev/null @@ -1,23 +0,0 @@ -

Full example

-
#Spec: {
-	kind: string
-
-	name: {
-		first:   !=""  // must be specified and non-empty
-		middle?: !=""  // optional, but must be non-empty when specified
-		last:    !=""
-	}
-
-	// The minimum must be strictly smaller than the maximum and vice versa.
-	minimum?: int & <maximum
-	maximum?: int & >minimum
-}
-
-// A spec is of type #Spec
-spec: #Spec
-spec: {
-	knid: "Homo Sapiens" // error, misspelled field
-
-	name: first: "Jane"
-	name: last:  "Doe"
-}
diff --git a/examples/prism-cypher.html b/examples/prism-cypher.html deleted file mode 100644 index e290a05c95..0000000000 --- a/examples/prism-cypher.html +++ /dev/null @@ -1,8 +0,0 @@ -

Full example

-
MATCH (person:Person)-[:WORKS_FOR]->(company)
-WHERE company.name STARTS WITH "Company"
-AND EXISTS {
-  MATCH (person)-[:LIKES]->(t:Technology)
-  WHERE size((t)<-[:LIKES]-()) >= 3
-}
-RETURN person.name as person, company.name AS company;
diff --git a/examples/prism-d.html b/examples/prism-d.html deleted file mode 100644 index 9ef1d6c78a..0000000000 --- a/examples/prism-d.html +++ /dev/null @@ -1,254 +0,0 @@ -

Comments

-
// Single line comment
-/* Multi-line
-	comment */
-/+ Mutli-line
-	/+ nestable +/
-	comment +/
- -

Numbers

-
0 .. 2_147_483_647
-2_147_483_648 .. 9_223_372_036_854_775_807
-0L .. 9_223_372_036_854_775_807L
-0U .. 4_294_967_296U
-4_294_967_296U .. 18_446_744_073_709_551_615U
-0UL .. 18_446_744_073_709_551_615UL
-0x0 .. 0x7FFF_FFFF
-0x8000_0000 .. 0xFFFF_FFFF
-0x1_0000_0000 .. 0x7FFF_FFFF_FFFF_FFFF
-0x8000_0000_0000_0000 .. 0xFFFF_FFFF_FFFF_FFFF
-0x0L .. 0x7FFF_FFFF_FFFF_FFFFL
-0x8000_0000_0000_0000L .. 0xFFFF_FFFF_FFFF_FFFFL
-0x0U .. 0xFFFF_FFFFU
-0x1_0000_0000U .. 0xFFFF_FFFF_FFFF_FFFFU
-0x0UL .. 0xFFFF_FFFF_FFFF_FFFFUL
-
-123_456.567_8          // 123456.5678
-1_2_3_4_5_6_.5_6_7_8   // 123456.5678
-1_2_3_4_5_6_.5e-6_     // 123456.5e-6
-0x1.FFFFFFFFFFFFFp1023 // double.max
-0x1p-52                // double.epsilon
-1.175494351e-38F       // float.min
-6.3i                   // idouble 6.3
-6.3fi                  // ifloat 6.3
-6.3Li                  // ireal 6.3
-4.5 + 6.2i             // complex number (phased out)
- -

Strings

-
// WYSIWYG strings
-r"hello"
-r"c:\root\foo.exe"
-r"ab\n"
-`hello`
-`c:\root\foo.exe`
-`ab\n`
-
-// Double-quoted strings
-"hello"
-"c:\\root\\foo.exe"
-"ab\n"
-"ab
-"
-
-// Hex strings
-x"0A"
-x"00 FBCD 32FD 0A"
-
-// String postfix characters
-"hello"c  // string
-"hello"w  // wstring
-"hello"d  // dstring
-
-// Delimited strings
-q"(foo(xxx))"
-q"[foo{]"
-q"EOS
-This
-is a multi-line
-heredoc string
-EOS"
-q"/foo]/"
-
-// Token strings
-q{foo}
-q{/*}*/ }
-q{ foo(q{hello}); }
-q{ __TIME__ }
-
-// Character literals
-'a'
-'\u000A'
- -

Iasm registers

-
AL AH AX EAX
-BL BH BX EBX
-CL CH CX ECX
-DL DH DX EDX
-BP EBP
-SP ESP
-DI EDI
-SI ESI
-ES CS SS DS GS FS
-CR0 CR2 CR3 CR4
-DR0 DR1 DR2 DR3 DR6 DR7
-TR3 TR4 TR5 TR6 TR7
-ST
-ST(0) ST(1) ST(2) ST(3) ST(4) ST(5) ST(6) ST(7)
-MM0  MM1  MM2  MM3  MM4  MM5  MM6  MM7
-XMM0 XMM1 XMM2 XMM3 XMM4 XMM5 XMM6 XMM7
-
-RAX  RBX  RCX  RDX
-BPL  RBP
-SPL  RSP
-DIL  RDI
-SIL  RSI
-R8B  R8W  R8D  R8
-R9B  R9W  R9D  R9
-R10B R10W R10D R10
-R11B R11W R11D R11
-R12B R12W R12D R12
-R13B R13W R13D R13
-R14B R14W R14D R14
-R15B R15W R15D R15
-XMM8 XMM9 XMM10 XMM11 XMM12 XMM13 XMM14 XMM15
-YMM0 YMM1 YMM2  YMM3  YMM4  YMM5  YMM6  YMM7
-YMM8 YMM9 YMM10 YMM11 YMM12 YMM13 YMM14 YMM15
- -

Full example

-
#!/usr/bin/dmd -run
-/* sh style script syntax is supported! */
-/* Hello World in D
-   To compile:
-     dmd hello.d
-   or to optimize:
-     dmd -O -inline -release hello.d
-   or to get generated documentation:
-     dmd hello.d -D
-  */
-import std.stdio;  // References to  commonly used I/O routines.
-void main(char[][] args)   // 'void' here means return 0 by default.
-{
-    // Write-Formatted-Line
-     writefln("Hello World, "   // automatic concatenation of string literals
-              "Reloaded");
-     // Strings are denoted as a dynamic array of chars 'char[]'
-     // auto type inference and built-in foreach
-     foreach(argc, argv; args)
-    {
-        // OOP is supported, of course! And automatic type inference.
-         auto cl = new CmdLin(argc, argv);
-
-        // 'writefln' is the improved 'printf' !!
-         // user-defined class properties.
-         writefln(cl.argnum, cl.suffix, " arg: %s", cl.argv);
-        // Garbage Collection or explicit memory management - your choice!!!
-         delete cl;
-    }
-     // Nested structs, classes and functions!
-     struct specs
-    {
-        // all vars. automatically initialized
-         int count, allocated;
-    }
-
-    // Note that declarations read right-to-left.
-    // So that 'char[][]' reads as an array of an array of chars.
-
-    specs argspecs(char[][] args)
-    // Optional (built-in) function contracts.
-     in{
-        assert (args.length > 0); // assert built in
-     }
-    out(result){
-        assert(result.count == CmdLin.total);
-        assert(result.allocated > 0);
-    }
-    body{
-        specs* s = new specs;
-        // no need for '->'
-         s.count = args.length;  // The 'length' property is number of elements.
-         s.allocated = typeof(args).sizeof; // built-in properties for native types
-         foreach(argv; args)
-            s.allocated += argv.length * typeof(argv[0]).sizeof;
-        return *s;
-    }
-
-    // built-in string and common string operations, e.g. '~' is concatenate.
-     char[] argcmsg  = "argc = %d";
-    char[] allocmsg = "allocated = %d";
-    writefln(argcmsg ~ ", " ~ allocmsg,
-         argspecs(args).count,argspecs(args).allocated);
-}
-/**
-   Stores a single command line argument.
- */
- class CmdLin
-{
-    private {
-     int _argc;
-     char[] _argv;
-     static uint _totalc;
-    }
-
- public:
-/************
-      Object constructor.
-      params:
-        argc = ordinal count of this argument.
-        argv = text of the parameter
-  *********/
-     this(int argc, char[] argv)
-    {
-        _argc = argc + 1;
-        _argv = argv;
-        _totalc++;
-    }
-
-    ~this() /// Object destructor
-     {
-        // Doesn't actually do anything for this example.
-     }
-
-     int argnum() /// A property that returns arg number
-     {
-        return _argc;
-    }
-     char[] argv() /// A property  that returns arg text
-     {
-        return _argv;
-    }
-     wchar[] suffix() /// A property  that returns ordinal suffix
-     {
-        wchar[] suffix;  // Built in  Unicode strings (utf8,utf16, utf32)
-         switch(_argc)
-        {
-        case 1:
-            suffix = "st";
-            break;
-        case 2:
-            suffix = "nd";
-            break;
-        case 3:
-            suffix = "rd";
-            break;
-        default:  // 'default' is mandatory with "-w" compile switch.
-             suffix = "th";
-        }
-        return suffix;
-    }
-
-/* **************
-      * A property of the whole class, not just an instance.
-      * returns: The total number of commandline args added.
-      *************/
-     static typeof(_totalc) total()
-    {
-        return _totalc;
-    }
-     // Class invariant, things that must be true after any method is run.
-     invariant
-     {
-         assert(_argc > 0);
-         assert(_totalc >= _argc);
-     }
-}
diff --git a/examples/prism-dart.html b/examples/prism-dart.html deleted file mode 100644 index e38d85eae2..0000000000 --- a/examples/prism-dart.html +++ /dev/null @@ -1,59 +0,0 @@ -

Comments

-
// Single line comment
-/// Documentation single line comment
-/* Block comment
-on several lines */
-/** Multi-line
-doc comment */
- -

Annotations

-
@todo('seth', 'make this do something')
-@deprecated // Metadata; makes Dart Editor warn about using activate().
- -

Numbers

-
var x = 1;
-var hex = 0xDEADBEEF;
-var bigInt = 346534658346524376592384765923749587398457294759347029438709349347;
-var y = 1.1;
-var exponents = 1.42e5;
-
- -

Strings

-
var s1 = 'Single quotes work well for string literals.';
-var s2 = "Double quotes work just as well.";
-var s3 = 'It\'s easy to escape the string delimiter.';
-var s4 = "It's even easier to just use the other string delimiter.";
-var s1 = '''
-You can create
-multi-line strings like this one.
-''';
-var s2 = """This is also a
-multi-line string.""";
-var s = r"In a raw string, even \n isn't special.";
- -

Full example

-
class Logger {
-  final String name;
-  bool mute = false;
-
-  // _cache is library-private, thanks to the _ in front of its name.
-  static final Map<String, Logger> _cache = <String, Logger>{};
-
-  factory Logger(String name) {
-    if (_cache.containsKey(name)) {
-      return _cache[name];
-    } else {
-      final logger = new Logger._internal(name);
-      _cache[name] = logger;
-      return logger;
-    }
-  }
-
-  Logger._internal(this.name);
-
-  void log(String msg) {
-    if (!mute) {
-      print(msg);
-    }
-  }
-}
\ No newline at end of file diff --git a/examples/prism-dataweave.html b/examples/prism-dataweave.html deleted file mode 100644 index f66a2da7d2..0000000000 --- a/examples/prism-dataweave.html +++ /dev/null @@ -1,39 +0,0 @@ -

Full example

-

-%dw 2.0
-input payalod application/json
-ns ns0 http://localhost.com
-var a = 123
-type T = String
-fun test(a: Number) = a + 123
-output application/json
----
-{
-    // This is a comment
-    /**
-    This is a multiline comment
-    **/
-    name: payload.name,
-    string: "this",
-    'another string': true,
-    "regex": /123/,
-    fc: test(1),
-    "dates": |12-12-2020-T12:00:00|,
-    number: 123,
-    "null": null,
-
-    a: {} match {
-        case  is {} -> foo.name
-    },
-    b: {} update {
-    case name at .user.name ->  "123"
-    },
-    stringMultiLine: "This is a multiline
-        string
-    ",
-    a: if( !true > 2) a else 2,
-    b: do {
-            {}
-        }
-}
-
diff --git a/examples/prism-dax.html b/examples/prism-dax.html deleted file mode 100644 index 1309c4a59e..0000000000 --- a/examples/prism-dax.html +++ /dev/null @@ -1,39 +0,0 @@ -

Comments

-
// This is a comment
-

Simple example

-

-Sales YTD := 
-CALCULATE (
-    [Sales Amount], 
-    DATESYTD( 'Date'[Date] )
-)
-
-

Full example

-

-Burn Rate (Hours) = 
-
-// Only consider those projects which have been alread created
-VAR filterDate = 
-    FILTER (
-        ALL ( 'Date'[Date] ),
-        'Date'[Date] <= MAX('Date'[Date])
-    )
-
-RETURN
-IF (
-    // Show blank for months before project start
-    MAX ( 'Project'[Project Created Relative Months Pos] ) < SELECTEDVALUE ( 'Date'[Fiscal RelativeMonthPos] ),
-    BLANK (),
-    MIN(
-        1,
-        DIVIDE (
-            // Add 0 to consider months with no hours
-            [Hours Actual Billable] + 0,
-            CALCULATE (
-                [Planned Hours] + 0,
-                filterDate
-            )
-        )
-    )
-)
-
diff --git a/examples/prism-dhall.html b/examples/prism-dhall.html deleted file mode 100644 index 9005686d6e..0000000000 --- a/examples/prism-dhall.html +++ /dev/null @@ -1,30 +0,0 @@ -

Full example

-

--- source: https://github.com/dhall-lang/dhall-lang/blob/master/Prelude/Optional/head.dhall
-
-{-
-Returns the first non-empty `Optional` value in a `List`
--}
-let head
-    : ∀(a : Type) → List (Optional a) → Optional a
-    = λ(a : Type) →
-      λ(xs : List (Optional a)) →
-        List/fold
-          (Optional a)
-          xs
-          (Optional a)
-          ( λ(l : Optional a) →
-            λ(r : Optional a) →
-              merge { Some = λ(x : a) → Some x, None = r } l
-          )
-          (None a)
-
-let example0 = assert : head Natural [ None Natural, Some 1, Some 2 ] ≡ Some 1
-
-let example1 =
-      assert : head Natural [ None Natural, None Natural ] ≡ None Natural
-
-let example2 =
-      assert : head Natural ([] : List (Optional Natural)) ≡ None Natural
-
-in  head
diff --git a/examples/prism-diff.html b/examples/prism-diff.html deleted file mode 100644 index e753f7ff0f..0000000000 --- a/examples/prism-diff.html +++ /dev/null @@ -1,33 +0,0 @@ -

Normal Diff

-
7c7
-< qt: core
----
-> qt: core quick
- -

Context Diff

-
*** qcli.yml	2014-12-16 11:43:41.000000000 +0800
---- /Users/uranusjr/Desktop/qcli.yml	2014-12-31 11:28:08.000000000 +0800
-***************
-*** 4,8 ****
-  project:
-      sources: "src/*.cpp"
-      headers: "src/*.h"
-!     qt: core
-  public_headers: "src/*.h"
---- 4,8 ----
-  project:
-      sources: "src/*.cpp"
-      headers: "src/*.h"
-!     qt: core gui
-  public_headers: "src/*.h"
- -

Unified Diff

-
--- qcli.yml	2014-12-16 11:43:41.000000000 +0800
-+++ /Users/uranusjr/Desktop/qcli.yml	2014-12-31 11:28:08.000000000 +0800
-@@ -4,5 +4,5 @@
- project:
-     sources: "src/*.cpp"
-     headers: "src/*.h"
--    qt: core
-+    qt: core gui
- public_headers: "src/*.h"
diff --git a/examples/prism-django.html b/examples/prism-django.html deleted file mode 100644 index 3a8829af49..0000000000 --- a/examples/prism-django.html +++ /dev/null @@ -1,31 +0,0 @@ -

Comment

-
{# This is a comment #}
- -

Variable

-
{{ some_variable }}
- -

Template Tag

-
{% if some_condition %}
-Conditional block
-{% endif %}
-
- -

Full Example

-
{# This is a Django template example #}
-{% extends "base_generic.html" %}
-
-{% block title %}{{ section.title }}{% endblock %}
-
-{% block content %}
-<h1>{{ section.title }}</h1>
-
-{% for story in story_list %}
-<h2>
-  <a href="{{ story.get_absolute_url }}">
-    {{ story.headline|upper }}
-  </a>
-</h2>
-<p>{{ story.tease|truncatewords:"100" }}</p>
-{% endfor %}
-{% endblock %}
-
diff --git a/examples/prism-dns-zone-file.html b/examples/prism-dns-zone-file.html deleted file mode 100644 index 00f5a04322..0000000000 --- a/examples/prism-dns-zone-file.html +++ /dev/null @@ -1,14 +0,0 @@ -

Full example

-
$TTL 3d
-@ IN SOA root.localhost. root.sneaky.net. (
-    2015050503 ; serial
-    12h        ; refresh
-    15m        ; retry
-    3w         ; expire
-    3h         ; negative response TTL
-  )
-  IN NS root.localhost.
-  IN NS localhost. ; secondary name server is preferably externally maintained
-
-www IN A 3.141.59.26
-ww1 IN CNAME www
diff --git a/examples/prism-docker.html b/examples/prism-docker.html deleted file mode 100644 index 206d84314a..0000000000 --- a/examples/prism-docker.html +++ /dev/null @@ -1,51 +0,0 @@ -

Comments

-
# These are the comments for a dockerfile.
-# I want to make sure $(variables) don't break out,
-# and we shouldn't see keywords like ADD or ENTRYPOINT
-
-# I also want to make sure that this "string" and this 'string' don't break out.
-
- -

Full example

-
# Nginx
-#
-# VERSION               0.0.1
-
-FROM      ubuntu
-MAINTAINER Victor Vieux <victor@docker.com>
-
-LABEL Description="This image is used to start the foobar executable" Vendor="ACME Products" Version="1.0"
-RUN apt-get update && apt-get install -y inotify-tools nginx apache2 openssh-server
-
-# Firefox over VNC
-#
-# VERSION               0.3
-
-FROM ubuntu
-
-# Install vnc, xvfb in order to create a 'fake' display and firefox
-RUN apt-get update && apt-get install -y x11vnc xvfb firefox
-RUN mkdir ~/.vnc
-# Setup a password
-RUN x11vnc -storepasswd 1234 ~/.vnc/passwd
-# Autostart firefox (might not be the best way, but it does the trick)
-RUN bash -c 'echo "firefox" >> /.bashrc'
-
-EXPOSE 5900
-CMD    ["x11vnc", "-forever", "-usepw", "-create"]
-
-# Multiple images example
-#
-# VERSION               0.1
-
-FROM ubuntu
-RUN echo foo > bar
-# Will output something like ===> 907ad6c2736f
-
-FROM ubuntu
-RUN echo moo > oink
-# Will output something like ===> 695d7793cbe4
-
-# You᾿ll now have two images, 907ad6c2736f with /bar, and 695d7793cbe4 with
-# /oink.
-
diff --git a/examples/prism-dot.html b/examples/prism-dot.html deleted file mode 100644 index 21af68c8f3..0000000000 --- a/examples/prism-dot.html +++ /dev/null @@ -1,31 +0,0 @@ -

Full example

-
// source: http://www.ryandesign.com/canviz/graphs/dot/directed/ctext.gv.txt
-# Generated Tue Aug 21 10:21:21 GMT 2007 by dot - Graphviz version 2.15.20070819.0440 (Tue Aug 21 09:56:32 GMT 2007)
-#
-#
-# real	0m0.105s
-# user	0m0.076s
-# sys	0m0.022s
-
-digraph G {
-	node [label="\N"];
-	graph [bb="0,0,352,238",
-		_draw_="c 5 -white C 5 -white P 4 0 0 0 238 352 238 352 0 ",
-		xdotversion="1.2"];
-	xyz [label="hello\nworld", color=slateblue, fontsize=24, fontname="Palatino-Italic", style=filled, fontcolor=hotpink, pos="67,191", width="1.64", height="1.29", _draw_="S 6 -filled c 9 -slateblue C 9 -slateblue E 67 191 59 47 ", _ldraw_="F 24.000000 15 -Palatino-Italic c 7 -hotpink T 67 196 0 65 5 -hello F 24.000000 15 -Palatino-Italic c 7 -hotpink T 67 167 0 75 5\
- -world "];
-	red [color=red, style=filled, pos="171,191", width="0.75", height="0.50", _draw_="S 6 -filled c 3 -red C 3 -red E 171 191 27 18 ", _ldraw_="F 14.000000 11 -Times-Roman c 5 -black T 171 186 0 24 3 -red "];
-	green [color=green, style=filled, pos="128,90", width="0.92", height="0.50", _draw_="S 6 -filled c 5 -green C 5 -green E 128 90 33 18 ", _ldraw_="F 14.000000 11 -Times-Roman c 5 -black T 128 85 0 41 5 -green "];
-	blue [color=blue, style=filled, fontcolor=black, pos="214,90", width="0.78", height="0.50", _draw_="S 6 -filled c 4 -blue C 4 -blue E 214 90 28 18 ", _ldraw_="F 14.000000 11 -Times-Roman c 5 -black T 214 85 0 31 4 -blue "];
-	cyan [color=cyan, style=filled, pos="214,18", width="0.83", height="0.50", _draw_="S 6 -filled c 4 -cyan C 4 -cyan E 214 18 30 18 ", _ldraw_="F 14.000000 11 -Times-Roman c 5 -black T 214 13 0 34 4 -cyan "];
-	magenta [color=magenta, style=filled, pos="307,18", width="1.25", height="0.50", _draw_="S 6 -filled c 7 -magenta C 7 -magenta E 307 18 45 18 ", _ldraw_="F 14.000000 11 -Times-Roman c 5 -black T 307 13 0 64 7 -magenta "];
-	yellow [color=yellow, style=filled, pos="36,18", width="1.00", height="0.50", _draw_="S 6 -filled c 6 -yellow C 6 -yellow E 36 18 36 18 ", _ldraw_="F 14.000000 11 -Times-Roman c 5 -black T 36 13 0 47 6 -yellow "];
-	orange [color=orange, style=filled, pos="128,18", width="1.06", height="0.50", _draw_="S 6 -filled c 6 -orange C 6 -orange E 128 18 38 18 ", _ldraw_="F 14.000000 11 -Times-Roman c 5 -black T 128 13 0 51 6 -orange "];
-	red -> green [pos="e,136,108 164,173 157,158 147,135 140,118", _draw_="c 5 -black B 4 164 173 157 158 147 135 140 118 ", _hdraw_="S 5 -solid S 15 -setlinewidth(1) c 5 -black C 5 -black P 3 143 116 136 108 136 119 "];
-	red -> blue [pos="e,206,108 178,173 185,158 195,135 202,118", _draw_="c 5 -black B 4 178 173 185 158 195 135 202 118 ", _hdraw_="S 5 -solid S 15 -setlinewidth(1) c 5 -black C 5 -black P 3 206 119 206 108 199 116 "];
-	blue -> cyan [pos="e,214,36 214,72 214,64 214,55 214,46", _draw_="c 5 -black B 4 214 72 214 64 214 55 214 46 ", _hdraw_="S 5 -solid S 15 -setlinewidth(1) c 5 -black C 5 -black P 3 218 46 214 36 211 46 "];
-	blue -> magenta [pos="e,286,34 232,76 246,66 263,52 278,40", _draw_="c 5 -black B 4 232 76 246 66 263 52 278 40 ", _hdraw_="S 5 -solid S 15 -setlinewidth(1) c 5 -black C 5 -black P 3 280 43 286 34 276 37 "];
-	green -> yellow [pos="e,56,33 109,75 96,65 78,51 64,40", _draw_="c 5 -black B 4 109 75 96 65 78 51 64 40 ", _hdraw_="S 5 -solid S 15 -setlinewidth(1) c 5 -black C 5 -black P 3 66 37 56 33 61 42 "];
-	green -> orange [pos="e,128,36 128,72 128,64 128,55 128,46", _draw_="c 5 -black B 4 128 72 128 64 128 55 128 46 ", _hdraw_="S 5 -solid S 15 -setlinewidth(1) c 5 -black C 5 -black P 3 132 46 128 36 125 46 "];
-}
-
diff --git a/examples/prism-ebnf.html b/examples/prism-ebnf.html deleted file mode 100644 index c787639066..0000000000 --- a/examples/prism-ebnf.html +++ /dev/null @@ -1,63 +0,0 @@ -

Full example

-
SYNTAX = SYNTAX RULE, { SYNTAX RULE } ;
-SYNTAX RULE
-  = META IDENTIFIER, '=', DEFINITIONS LIST, ' ;' ;
-DEFINITIONS LIST
-  = SINGLE DEFINITION,
-    { '|', SINGLE DEFINITION } ;
-SINGLE DEFINITION = TERM, { ',', TERM } ;
-TERM = FACTOR, [ '-', EXCEPTION ] ;
-EXCEPTION = FACTOR ;
-FACTOR = [ INTEGER, '*' ], PRIMARY ;
-PRIMARY
-  = OPTIONAL SEQUENCE | REPEATED SEQUENCE
-  | SPECIAL SEQUENCE | GROUPED SEQUENCE
-  | META IDENTIFIER | TERMINAL | EMPTY ;
-EMPTY = ;
-OPTIONAL SEQUENCE = '[', DEFINITIONS LIST, ']' ;
-REPEATED SEQUENCE = '{', DEFINITIONS LIST, '}' ;
-GROUPED SEQUENCE = '(', DEFINITIONS LIST, ')' ;
-TERMINAL
-  = "'", CHARACTER - "'",
-    { CHARACTER - "'" }, "'"
-  | '"', CHARACTER - '"',
-    { CHARACTER - '"' }, '"' ;
-META IDENTIFIER = LETTER, { LETTER | DIGIT } ;
-INTEGER = DIGIT, { DIGIT } ;
-SPECIAL SEQUENCE = '?', { CHARACTER - '?' }, '?' ;
-COMMENT = '(*', { COMMENT SYMBOL }, '*)' ;
-COMMENT SYMBOL
-  = COMMENT | TERMINAL | SPECIAL SEQUENCE
-    | CHARACTER ;
- -

Full example with alternative syntax

-
SYNTAX = SYNTAX RULE, (: SYNTAX RULE :).
-SYNTAX RULE
-  = META IDENTIFIER, '=', DEFINITIONS LIST, '.'. (* '.' instead of ';' *)
-DEFINITIONS LIST
-  = SINGLE DEFINITION,
-    (: '/', SINGLE DEFINITION :).
-SINGLE DEFINITION = TERM, (: ',', TERM :).
-TERM = FACTOR, (/ '-', EXCEPTION /).
-EXCEPTION = FACTOR.
-FACTOR = (/ INTEGER, '*' /), PRIMARY.
-PRIMARY
-  = OPTIONAL SEQUENCE / REPEATED SEQUENCE (* / is the same as | *)
-  / SPECIAL SEQUENCE / GROUPED SEQUENCE
-  / META IDENTIFIER / TERMINAL / EMPTY.
-EMPTY = .
-OPTIONAL SEQUENCE = '(/', DEFINITIONS LIST, '/)'.
-REPEATED SEQUENCE = '(:', DEFINITIONS LIST, ':)'.
-GROUPED SEQUENCE = '(', DEFINITIONS LIST, ')'.
-TERMINAL
-  = "'", CHARACTER - "'",
-    (: CHARACTER - "'" :), "'"
-  / '"', CHARACTER - '"',
-    (: CHARACTER - '"' :), '"'.
-META IDENTIFIER = LETTER, (: LETTER / DIGIT :).
-INTEGER = DIGIT, (: DIGIT :).
-SPECIAL SEQUENCE = '?', (: CHARACTER - '?' :), '?'.
-COMMENT = '(*', (: COMMENT SYMBOL :), '*)'.
-COMMENT SYMBOL
-  = COMMENT / TERMINAL / SPECIAL SEQUENCE
-    / CHARACTER.
diff --git a/examples/prism-editorconfig.html b/examples/prism-editorconfig.html deleted file mode 100644 index eb317a362a..0000000000 --- a/examples/prism-editorconfig.html +++ /dev/null @@ -1,47 +0,0 @@ -

Comment

-
# This is a comment
-; And this is too
- -

Section Header

-
[*]
-[*.js]
-[*.{bash,sh,zsh}]
- -

Key-Value Pair

-
key = value
-indent_style = space
- -

Full example

-
# EditorConfig is awesome: https://EditorConfig.org
-
-# top-most EditorConfig file
-root = true
-
-# Unix-style newlines with a newline ending every file
-[*]
-end_of_line = lf
-insert_final_newline = true
-
-# Matches multiple files with brace expansion notation
-# Set default charset
-[*.{js,py}]
-charset = utf-8
-
-# 4 space indentation
-[*.py]
-indent_style = space
-indent_size = 4
-
-# Tab indentation (no size specified)
-[Makefile]
-indent_style = tab
-
-# Indentation override for all JS under lib directory
-[lib/**.js]
-indent_style = space
-indent_size = 2
-
-# Matches the exact files either package.json or .travis.yml
-[{package.json,.travis.yml}]
-indent_style = space
-indent_size = 2
diff --git a/examples/prism-eiffel.html b/examples/prism-eiffel.html deleted file mode 100644 index 94c18b22f5..0000000000 --- a/examples/prism-eiffel.html +++ /dev/null @@ -1,72 +0,0 @@ -

Comments

-
-- A comment
-
- -

Simple string and character

-
"A simple string with %"double quotes%""
-'a'
-
- -

Verbatim-strings

-
"[
-  A aligned verbatim string
-]"
-"{
-  A non-aligned verbatim string
-}"
-
- -

Numbers

-
1_000
-1_000.
-1_000.e+1_000
-1_000.1_000e-1_000
-.1
-0b1010_0001
-0xAF_5B
-0c75_22
-
- -

Class names

-
deferred class
-    A [G]
-
-feature
-    items: G
-        deferred  end
-
-end
-
- -

Full example

-
note
-  description: "Represents a person."
-
-class
-  PERSON
-
-create
-  make, make_unknown
-
-feature {NONE} -- Creation
-
-  make (a_name: like name)
-      -- Create a person with `a_name' as `name'.
-    do
-      name := a_name
-    ensure
-      name = a_name
-    end
-
-    make_unknown
-    do ensure
-      name = Void
-      end
-
-feature -- Access
-
-  name: detachable STRING
-      -- Full name or Void if unknown.
-
-end
-
diff --git a/examples/prism-ejs.html b/examples/prism-ejs.html deleted file mode 100644 index bf5537dd42..0000000000 --- a/examples/prism-ejs.html +++ /dev/null @@ -1,16 +0,0 @@ -

Full example

-
<h1>Let's have fun!</h1>
-<%
-    const fruits = ["Apple", "Pear", "Orange", "Lemon"];
-    const random = Array.from({ length: 198 }).map(x => Math.random());
-%>
-
-<p>These fruits are amazing:</p>
-<ul><% for (const fruit of fruits) { %>
-  <li><%=fruit%>s</li><% } %>
-</ul>
-
-<p>Some random numbers:</p>
-
-<% random.forEach((c, i) => {
-%> <%- c.toFixed(10) + ((i + 1) % 6 === 0 ? " <br>\n": "") %><%});%>
diff --git a/examples/prism-elixir.html b/examples/prism-elixir.html deleted file mode 100644 index df4426be74..0000000000 --- a/examples/prism-elixir.html +++ /dev/null @@ -1,452 +0,0 @@ -

Comments

-
# This is a comment
- -

Atoms

-
:foo
-:bar
- -

Numbers

-
42
-0b1010
-0o777
-0x1F
-3.14159
-5.2e10
-100_000
- -

Strings and heredoc

-
'A string with \'quotes\'!'
-"A string with \"quotes\"!"
-"Multi-line
-strings are supported"
-""" "Heredoc" strings are
-also supported.
-"""
- -

Sigils

-
~s"""This is a sigil
-using heredoc delimiters"""
-~r/a [reg]exp/
-~r(another|regexp)
-~w[some words]s
-~c<a char list>
- -

Interpolation

-
"This is an #{:atom}"
-~s/#{40+2} is the answer/
- -

Function capturing

-
fun = &Math.zero?/1
-(&is_function/1).(fun)
-fun = &(&1 + 1)
-fun.(1)
-fun = &List.flatten(&1, &2)
-fun.([1, [[2], 3]], [4, 5])
- -

Module attributes

-
defmodule MyServer do
-  @vsn 2
-end
-
-defmodule Math do
-  @moduledoc """
-  Provides math-related functions.
-
-      iex> Math.sum(1, 2)
-      3
-
-  """
-
-  @doc """
-  Calculates the sum of two numbers.
-  """
-  def sum(a, b), do: a + b
-end
- -

Full example

-
# Example from http://learnxinyminutes.com/docs/elixir/
-
-# Single line comments start with a number symbol.
-
-# There's no multi-line comment,
-# but you can stack multiple comments.
-
-# To use the elixir shell use the `iex` command.
-# Compile your modules with the `elixirc` command.
-
-# Both should be in your path if you installed elixir correctly.
-
-## ---------------------------
-## -- Basic types
-## ---------------------------
-
-# There are numbers
-3    # integer
-0x1F # integer
-3.0  # float
-
-# Atoms, that are literals, a constant with name. They start with `:`.
-:hello # atom
-
-# Tuples that are stored contiguously in memory.
-{1,2,3} # tuple
-
-# We can access a tuple element with the `elem` function:
-elem({1, 2, 3}, 0) #=> 1
-
-# Lists that are implemented as linked lists.
-[1,2,3] # list
-
-# We can access the head and tail of a list as follows:
-[head | tail] = [1,2,3]
-head #=> 1
-tail #=> [2,3]
-
-# In elixir, just like in Erlang, the `=` denotes pattern matching and
-# not an assignment.
-#
-# This means that the left-hand side (pattern) is matched against a
-# right-hand side.
-#
-# This is how the above example of accessing the head and tail of a list works.
-
-# A pattern match will error when the sides don't match, in this example
-# the tuples have different sizes.
-# {a, b, c} = {1, 2} #=> ** (MatchError) no match of right hand side value: {1,2}
-
-# There are also binaries
-<<1,2,3>> # binary
-
-# Strings and char lists
-"hello" # string
-'hello' # char list
-
-# Multi-line strings
-"""
-I'm a multi-line
-string.
-"""
-#=> "I'm a multi-line\nstring.\n"
-
-# Strings are all encoded in UTF-8:
-"héllò" #=> "héllò"
-
-# Strings are really just binaries, and char lists are just lists.
-<<?a, ?b, ?c>> #=> "abc"
-[?a, ?b, ?c]   #=> 'abc'
-
-# `?a` in elixir returns the ASCII integer for the letter `a`
-?a #=> 97
-
-# To concatenate lists use `++`, for binaries use `<>`
-[1,2,3] ++ [4,5]     #=> [1,2,3,4,5]
-'hello ' ++ 'world'  #=> 'hello world'
-
-<<1,2,3>> <> <<4,5>> #=> <<1,2,3,4,5>>
-"hello " <> "world"  #=> "hello world"
-
-# Ranges are represented as `start..end` (both inclusive)
-1..10 #=> 1..10
-lower..upper = 1..10 # Can use pattern matching on ranges as well
-[lower, upper] #=> [1, 10]
-
-## ---------------------------
-## -- Operators
-## ---------------------------
-
-# Some math
-1 + 1  #=> 2
-10 - 5 #=> 5
-5 * 2  #=> 10
-10 / 2 #=> 5.0
-
-# In elixir the operator `/` always returns a float.
-
-# To do integer division use `div`
-div(10, 2) #=> 5
-
-# To get the division remainder use `rem`
-rem(10, 3) #=> 1
-
-# There are also boolean operators: `or`, `and` and `not`.
-# These operators expect a boolean as their first argument.
-true and true #=> true
-false or true #=> true
-# 1 and true    #=> ** (ArgumentError) argument error
-
-# Elixir also provides `||`, `&&` and `!` which accept arguments of any type.
-# All values except `false` and `nil` will evaluate to true.
-1 || true  #=> 1
-false && 1 #=> false
-nil && 20  #=> nil
-!true #=> false
-
-# For comparisons we have: `==`, `!=`, `===`, `!==`, `<=`, `>=`, `<` and `>`
-1 == 1 #=> true
-1 != 1 #=> false
-1 < 2  #=> true
-
-# `===` and `!==` are more strict when comparing integers and floats:
-1 == 1.0  #=> true
-1 === 1.0 #=> false
-
-# We can also compare two different data types:
-1 < :hello #=> true
-
-# The overall sorting order is defined below:
-# number < atom < reference < functions < port < pid < tuple < list < bit string
-
-# To quote Joe Armstrong on this: "The actual order is not important,
-# but that a total ordering is well defined is important."
-
-## ---------------------------
-## -- Control Flow
-## ---------------------------
-
-# `if` expression
-if false do
-  "This will never be seen"
-else
-  "This will"
-end
-
-# There's also `unless`
-unless true do
-  "This will never be seen"
-else
-  "This will"
-end
-
-# Remember pattern matching? Many control-flow structures in elixir rely on it.
-
-# `case` allows us to compare a value against many patterns:
-case {:one, :two} do
-  {:four, :five} ->
-    "This won't match"
-  {:one, x} ->
-    "This will match and bind `x` to `:two`"
-  _ ->
-    "This will match any value"
-end
-
-# It's common to bind the value to `_` if we don't need it.
-# For example, if only the head of a list matters to us:
-[head | _] = [1,2,3]
-head #=> 1
-
-# For better readability we can do the following:
-[head | _tail] = [:a, :b, :c]
-head #=> :a
-
-# `cond` lets us check for many conditions at the same time.
-# Use `cond` instead of nesting many `if` expressions.
-cond do
-  1 + 1 == 3 ->
-    "I will never be seen"
-  2 * 5 == 12 ->
-    "Me neither"
-  1 + 2 == 3 ->
-    "But I will"
-end
-
-# It is common to set the last condition equal to `true`, which will always match.
-cond do
-  1 + 1 == 3 ->
-    "I will never be seen"
-  2 * 5 == 12 ->
-    "Me neither"
-  true ->
-    "But I will (this is essentially an else)"
-end
-
-# `try/catch` is used to catch values that are thrown, it also supports an
-# `after` clause that is invoked whether or not a value is caught.
-try do
-  throw(:hello)
-catch
-  message -> "Got #{message}."
-after
-  IO.puts("I'm the after clause.")
-end
-#=> I'm the after clause
-# "Got :hello"
-
-## ---------------------------
-## -- Modules and Functions
-## ---------------------------
-
-# Anonymous functions (notice the dot)
-square = fn(x) -> x * x end
-square.(5) #=> 25
-
-# They also accept many clauses and guards.
-# Guards let you fine tune pattern matching,
-# they are indicated by the `when` keyword:
-f = fn
-  x, y when x > 0 -> x + y
-  x, y -> x * y
-end
-
-f.(1, 3)  #=> 4
-f.(-1, 3) #=> -3
-
-# Elixir also provides many built-in functions.
-# These are available in the current scope.
-is_number(10)    #=> true
-is_list("hello") #=> false
-elem({1,2,3}, 0) #=> 1
-
-# You can group several functions into a module. Inside a module use `def`
-# to define your functions.
-defmodule Math do
-  def sum(a, b) do
-    a + b
-  end
-
-  def square(x) do
-    x * x
-  end
-end
-
-Math.sum(1, 2)  #=> 3
-Math.square(3) #=> 9
-
-# To compile our simple Math module save it as `math.ex` and use `elixirc`
-# in your terminal: elixirc math.ex
-
-# Inside a module we can define functions with `def` and private functions with `defp`.
-# A function defined with `def` is available to be invoked from other modules,
-# a private function can only be invoked locally.
-defmodule PrivateMath do
-  def sum(a, b) do
-    do_sum(a, b)
-  end
-
-  defp do_sum(a, b) do
-    a + b
-  end
-end
-
-PrivateMath.sum(1, 2)    #=> 3
-# PrivateMath.do_sum(1, 2) #=> ** (UndefinedFunctionError)
-
-# Function declarations also support guards and multiple clauses:
-defmodule Geometry do
-  def area({:rectangle, w, h}) do
-    w * h
-  end
-
-  def area({:circle, r}) when is_number(r) do
-    3.14 * r * r
-  end
-end
-
-Geometry.area({:rectangle, 2, 3}) #=> 6
-Geometry.area({:circle, 3})       #=> 28.25999999999999801048
-# Geometry.area({:circle, "not_a_number"})
-#=> ** (FunctionClauseError) no function clause matching in Geometry.area/1
-
-# Due to immutability, recursion is a big part of elixir
-defmodule Recursion do
-  def sum_list([head | tail], acc) do
-    sum_list(tail, acc + head)
-  end
-
-  def sum_list([], acc) do
-    acc
-  end
-end
-
-Recursion.sum_list([1,2,3], 0) #=> 6
-
-# Elixir modules support attributes, there are built-in attributes and you
-# may also add custom ones.
-defmodule MyMod do
-  @moduledoc """
-  This is a built-in attribute on a example module.
-  """
-
-  @my_data 100 # This is a custom attribute.
-  IO.inspect(@my_data) #=> 100
-end
-
-## ---------------------------
-## -- Structs and Exceptions
-## ---------------------------
-
-# Structs are extensions on top of maps that bring default values,
-# compile-time guarantees and polymorphism into Elixir.
-defmodule Person do
-  defstruct name: nil, age: 0, height: 0
-end
-
-joe_info = %Person{ name: "Joe", age: 30, height: 180 }
-#=> %Person{age: 30, height: 180, name: "Joe"}
-
-# Access the value of name
-joe_info.name #=> "Joe"
-
-# Update the value of age
-older_joe_info = %{ joe_info | age: 31 }
-#=> %Person{age: 31, height: 180, name: "Joe"}
-
-# The `try` block with the `rescue` keyword is used to handle exceptions
-try do
-  raise "some error"
-rescue
-  RuntimeError -> "rescued a runtime error"
-  _error -> "this will rescue any error"
-end
-
-# All exceptions have a message
-try do
-  raise "some error"
-rescue
-  x in [RuntimeError] ->
-    x.message
-end
-
-## ---------------------------
-## -- Concurrency
-## ---------------------------
-
-# Elixir relies on the actor model for concurrency. All we need to write
-# concurrent programs in elixir are three primitives: spawning processes,
-# sending messages and receiving messages.
-
-# To start a new process we use the `spawn` function, which takes a function
-# as argument.
-f = fn -> 2 * 2 end #=> #Function<erl_eval.20.80484245>
-spawn(f) #=> #PID<0.40.0>
-
-# `spawn` returns a pid (process identifier), you can use this pid to send
-# messages to the process. To do message passing we use the `send` operator.
-# For all of this to be useful we need to be able to receive messages. This is
-# achieved with the `receive` mechanism:
-defmodule Geometry do
-  def area_loop do
-    receive do
-      {:rectangle, w, h} ->
-        IO.puts("Area = #{w * h}")
-        area_loop()
-      {:circle, r} ->
-        IO.puts("Area = #{3.14 * r * r}")
-        area_loop()
-    end
-  end
-end
-
-# Compile the module and create a process that evaluates `area_loop` in the shell
-pid = spawn(fn -> Geometry.area_loop() end) #=> #PID<0.40.0>
-
-# Send a message to `pid` that will match a pattern in the receive statement
-send pid, {:rectangle, 2, 3}
-#=> Area = 6
-#   {:rectangle,2,3}
-
-send pid, {:circle, 2}
-#=> Area = 12.56000000000000049738
-#   {:circle,2}
-
-# The shell is also a process, you can use `self` to get the current pid
-self() #=> #PID<0.27.0>
diff --git a/examples/prism-elm.html b/examples/prism-elm.html deleted file mode 100644 index 00d0e33314..0000000000 --- a/examples/prism-elm.html +++ /dev/null @@ -1,91 +0,0 @@ -

Comments

-
-- Single line comment
-{- Multi-line
-comment -}
- -

Strings and characters

-
'a'
-'\n'
-'\x03'
-"foo \" bar"
-"""
-"multiline strings" are also
-supported!
-"""
- -

Full example

-
module Main exposing (..)
-
-import Html exposing (Html)
-import Svg exposing (..)
-import Svg.Attributes exposing (..)
-import Time exposing (Time, second)
-
-
-main =
-    Html.program
-        { init = init
-        , view = view
-        , update = update
-        , subscriptions = subscriptions
-        }
-
-
-
--- MODEL
-
-
-type alias Model =
-    Time
-
-
-init : ( Model, Cmd Msg )
-init =
-    ( 0, Cmd.none )
-
-
-
--- UPDATE
-
-
-type Msg
-    = Tick Time
-
-
-update : Msg -> Model -> ( Model, Cmd Msg )
-update msg model =
-    case msg of
-        Tick newTime ->
-            ( newTime, Cmd.none )
-
-
-
--- SUBSCRIPTIONS
-
-
-subscriptions : Model -> Sub Msg
-subscriptions model =
-    Time.every second (\time -> Tick time)
-
-
-
--- VIEW
-
-
-view : Model -> Html Msg
-view model =
-    let
-        angle =
-            turns (Time.inMinutes model)
-
-        handX =
-            toString (50 + 40 * cos angle)
-
-        handY =
-            toString (50 + 40 * sin angle)
-    in
-    svg [ viewBox "0 0 100 100", width "300px" ]
-        [ circle [ cx "50", cy "50", r "45", fill "#0B79CE" ] []
-        , line [ x1 "50", y1 "50", x2 handX, y2 handY, stroke "#023963" ] []
-        ]
-
diff --git a/examples/prism-erb.html b/examples/prism-erb.html deleted file mode 100644 index 46c0143f7e..0000000000 --- a/examples/prism-erb.html +++ /dev/null @@ -1,22 +0,0 @@ -

Full example

-
<%# index.erb %>
-<h1>Listing Books</h1>
-<table>
-  <tr>
-    <th>Title</th>
-    <th>Summary</th>
-    <th></th>
-    <th></th>
-    <th></th>
-  </tr>
-
-<% @books.each do |book| %>
-  <tr>
-    <td><%= book.title %></td>
-    <td><%= book.content %></td>
-    <td><%= link_to "Show", book %></td>
-    <td><%= link_to "Edit", edit_book_path(book) %></td>
-    <td><%= link_to "Remove", book, method: :delete, data: { confirm: "Are you sure?" } %></td>
-  </tr>
-<% end %>
-</table>
\ No newline at end of file diff --git a/examples/prism-erlang.html b/examples/prism-erlang.html deleted file mode 100644 index 05445adfc2..0000000000 --- a/examples/prism-erlang.html +++ /dev/null @@ -1,47 +0,0 @@ -

Comments

-
% This is a comment
-%% coding: utf-8
- -

Strings

-
"foo \"bar\" baz"
- -

Numbers

-
42.
-$A.
-$\n.
-2#101.
-16#1f.
-2.3.
-2.3e3.
-2.3e-3.
- -

Functions

-
P = spawn(m, loop, []).
-io:format("I am ~p~n", [self()]).
-'weird function'().
-
- -

Variables

-
P = {adam,24,{july,29}}.
-M1 = #{name=>adam,age=>24,date=>{july,29}}.
-M2 = maps:update(age,25,M1).
-io:format("{~p,~p}: ~p~n", [?MODULE,?LINE,X]).
- -

Operators

-
1==1.0.
-1=:=1.0.
-1 > a.
-+1.
--1.
-1+1.
-4/2.
-5 div 2.
-5 rem 2.
-2#10 band 2#01.
-2#10 bor 2#01.
-a + 10.
-1 bsl (1 bsl 64).
-not true.
-true and false.
-true xor false.
-true or garbage.
\ No newline at end of file diff --git a/examples/prism-etlua.html b/examples/prism-etlua.html deleted file mode 100644 index d24707a62c..0000000000 --- a/examples/prism-etlua.html +++ /dev/null @@ -1,12 +0,0 @@ -

Full example

-
<div class="foo">
-	<% if true then %>
-		Hello <%= name %>,
-		Here are your items:
-		<% for i, item in pairs(items) do %>
-			 * <%= item -%>
-			<% --[[ comment block ]] %>
-		<% end %>
-		<%- "<b>this is not escaped</b>" %>
-	<% end %>
-</div>
diff --git a/examples/prism-excel-formula.html b/examples/prism-excel-formula.html deleted file mode 100644 index ccce7aa984..0000000000 --- a/examples/prism-excel-formula.html +++ /dev/null @@ -1,10 +0,0 @@ -

Full example

-
=SUM(G7*9)
-=INT(RAND()*999)
-=AVERAGE(A4:A13)+N("Average user rating")
-=CONCATENATE(F4, ",", " ", G4," ",H4)
-=IF($A4>500, $A4, 0)
-=AND($B4>=501,$C4<=500)
-=SUBTOTAL(103,staff[Name])
-=TRIMMEAN(staff[Salary],10%)
-=SUM([Sales.xlsx]Jan!B2:B5)
diff --git a/examples/prism-factor.html b/examples/prism-factor.html deleted file mode 100644 index 90bb143025..0000000000 --- a/examples/prism-factor.html +++ /dev/null @@ -1,127 +0,0 @@ -

Comments

-
! FIXME: a comment
-
-USE: multiline
-
-![[ comment ]]
-/* comment */
- -

Strings

-
"a string" "\"" "\x8" "%s"
-
-SBUF" asbdef"
-
-USE: multiline
-
-STRING: name
-content
-;
-
-HEREDOC: marker
-text
-marker
-
-[==[
-	str
-	ing
-]==]
-
- -

Numbers

-
5 1/5 +9 -9 +1/5 -1/5 -1/5. 23+1/5 -23-1/5 23-1/5 ! NOTE: last one = word
-
-+12.13 0.01 0e0 3E4 3e-4 3E-4 030 0xd 0o30 0b1100
--12.13 -0 -0.01 -0e0 -3E4 -3E-4 -030 -0xd -0o30 -0b1100
-
-348756424956392657834385437598743583648756332457
--348756424956392657834385437598743583648756332457
-
-NAN: a
-NAN: 80000deadbeef
-
-0b1.010p2 0x1.0p3 0x1.p1 0b1.111111p1111 ...
- -

Sequences

-
{ 1 2 3 4 }
-{ a b c d e t f }
-{ "a" "b" "c" }
-
-{ { a b } { c d } }
-H{ { a b } { c d } }
-H{ { "a" "b" } { "c" "d" } }
-V{ 1 2 3 4 }
-V{ "1" "2" "3" "4" }
-BV{ 1 2 3 4 }
- -

Regular Expressions

-
USE: regexp
-R/ abcde?.*+\?\.\*\+\/\\\/idmsr-idmsr/idmsr-idmsr
- -

Colon parsing words

-
: a ( -- ) ;
-:: ; ! ; is not a word name
-:: ;a ! ;a is a word name
-USING: a b c ;
-USE: a
-IN: a.b
-CHAR: a
-GENERIC#: x 1 ( x: integer quot: ( x -- y ) -- )
- -

Special words (builtins, conventions)

-
and not with map filter
-
-new last-index + - neg
-
-<array> <=> SYNTAX: x $[ xyz ]
-
-set-x change-x with-variable ?of if* (gensym) hex. $description reader>> >>setter writer<<
-
-string>number >hex base> mutater!
-
- -

Full example

-
USING: accessors arrays assocs combinators
-combinators.short-circuit effects io kernel sequences
-sequences.deep splitting strings vocabs words ;
-IN: prism
-
-: make-prism-syntax ( syntax-vocab -- seq )
- 	vocab-words [
-		dup name>> ">>" = [ drop t ] [
-			{
-				[ "delimiter" word-prop ]
-				[ name>> last { CHAR: : CHAR: { CHAR: [ CHAR: ( CHAR: ) CHAR: ? CHAR: " } member? ]
-				[ name>> { "t" "f" } member? ]
-			} 1|| not
-		] if
-	] filter ;
-
-: combinator? ( word -- ? )
-	[ "declared-effect" word-prop in>> flatten
-		[
-			[ effect? ] [ { "quots" "quot" } member? ] bi or
-		] any?
-	] [
-		"help" word-prop ?first flatten [ dup word? [ name>> ] when "quot" swap subseq? ] any?
-	] bi or ;
-
-: classify ( vocab-spec -- seq )
-	vocab-words [
-		dup {
-			{ [ dup combinator? ] [ drop "combinator" ] }
-			{ [ dup "macro" word-prop ] [ drop "macro" ] }
-			[ drop "ordinary" ]
-		} cond 2array
-	] map ;
-
-: print-strings ( strs -- )
-	[ name>> "'" dup surround ] map ", " join print ; recursive ! WARN: not recursive
-
-: combinators. ( vocab-spec -- )
-	classify [ nip "combinator" = ] assoc-filter keys print-strings ; flushable
-
-: ordinaries. ( vocab-spec -- )
-	classify [ nip "ordinary" = ] assoc-filter keys print-strings ; foldable
-
-: macros. ( vocab-spec -- )
-	classify [ nip "macro" = ] assoc-filter keys print-strings ; inline
diff --git a/examples/prism-false.html b/examples/prism-false.html deleted file mode 100644 index cbc3bc6d0a..0000000000 --- a/examples/prism-false.html +++ /dev/null @@ -1,52 +0,0 @@ -

Hello, world!

- -
"Hello, world!"
- -

Lambda functions

- -

Increment

- -
5 [7+]! . {Outputs 12.}
- -

Square numbers

- -
[$*] s: 7s;! . {Outputs 49.}
- -

Conditions

- -

Equal, less, or greater than

- -
5x:
-7y:
-x;y;=
-$
-x;
-.
-[" equals "]?
-~[
-    x;y;>
-    $
-    [" is greater than "]?
-    ~[" is less than "]?
-]?
-y;
-.
- -

Loops

- -

English alphabet

- -
'Ai: 'Zm: 1m;+ m: [m;i;>][i;, 1i;+ i:]#
- -

Ten Green Bottles

- -
[$ . " green bottle" 1> ["s"]? ".
-"] f:
-10n: [n;0>][n;f;! n;1- n:]#
- -

User input

- -

Reverse a string

- -
"Enter the string character by character (or a space to finish):
-"0i: [ß ^ $ 32=~][i;1+ i:]# % "Reverse: " [i;0>][, i;1- i:]#
diff --git a/examples/prism-firestore-security-rules.html b/examples/prism-firestore-security-rules.html deleted file mode 100644 index 08b0cc486c..0000000000 --- a/examples/prism-firestore-security-rules.html +++ /dev/null @@ -1,37 +0,0 @@ -

Full example

-
rules_version = '2';
-service cloud.firestore {
-
-  match /databases/{database}/documents {
-
-    // Returns `true` if the requested post is 'published'
-    // or the user authored the post
-    function authorOrPublished() {
-      return resource.data.published == true || request.auth.uid == resource.data.author;
-    }
-
-    match /{path=**}/posts/{post} {
-
-      // Anyone can query published posts
-      // Authors can query their unpublished posts
-      allow list: if authorOrPublished();
-
-      // Anyone can retrieve a published post
-      // Authors can retrieve an unpublished post
-      allow get: if authorOrPublished();
-    }
-
-    match /forums/{forumid}/posts/{postid} {
-      // Only a post's author can write to a post
-      allow write: if request.auth.uid == resource.data.author;
-    }
-  }
-
-  match /databases/{database}/reviews {
-    // Assign roles to all users and refine access based on user roles
-    match /some_collection/{document} {
-      allow read: if get(/databases/$(database)/reviews/users/$(request.auth.uid)).data.role == "Reader"
-      allow write: if get(/databases/$(database)/reviews/users/$(request.auth.uid)).data.role == "Writer"
-    }
-  }
-}
diff --git a/examples/prism-flow.html b/examples/prism-flow.html deleted file mode 100644 index 76f3e14a18..0000000000 --- a/examples/prism-flow.html +++ /dev/null @@ -1,18 +0,0 @@ -

Primitive types

-
function method(x: number, y: string, z: boolean) {}
-function stringifyBasicValue(value: string | number) {}
-function add(one: any, two: any): number {
-  return one + two;
-}
-
-const bar: number = 2;
-var barVar: number = 2;
-let barLet: number = 2;
-let isOneOf: number | boolean | string = foo;
- -

Keywords

-
type UnionAlias = 1 | 2 | 3;
-opaque type ID = string;
-declare opaque type PositiveNumber: number;
-type Country = $Keys<typeof countries>;
-type RequiredProps = $Diff<Props, DefaultProps>;
\ No newline at end of file diff --git a/examples/prism-fortran.html b/examples/prism-fortran.html deleted file mode 100644 index 00b23f5ab0..0000000000 --- a/examples/prism-fortran.html +++ /dev/null @@ -1,71 +0,0 @@ -

Comments

-
! This is a comment
- -

Strings

-
"foo 'bar' baz"
-'foo ''bar'' baz'
-''
-ITALICS_'This is in italics'
-"test &
-	! Some "tricky comment" here
-	&test"
- -

Numbers

-
473
-+56
--101
-21_2
-21_SHORT
-1976354279568241_8
-B'01110'
-B"010"
-O'047'
-O"642"
-Z'F41A'
-Z"00BC"
--12.78
-+1.6E3
-2.1
--16.E4_8
-0.45E-4
-10.93E7_QUAD
-.123
-3E4
- -

Full example

-
MODULE MOD1
-TYPE INITIALIZED_TYPE
-	INTEGER :: I = 1 ! Default initialization
-END TYPE INITIALIZED_TYPE
-SAVE :: SAVED1, SAVED2
-INTEGER :: SAVED1, UNSAVED1
-TYPE(INITIALIZED_TYPE) :: SAVED2, UNSAVED2
-ALLOCATABLE :: SAVED1(:), SAVED2(:), UNSAVED1(:), UNSAVED2(:)
-END MODULE MOD1
-
-PROGRAM MAIN
-CALL SUB1 ! The values returned by the ALLOCATED intrinsic calls
-          ! in the PRINT statement are:
-          ! .FALSE., .FALSE., .FALSE., and .FALSE.
-          ! Module MOD1 is used, and its variables are allocated.
-          ! After return from the subroutine, whether the variables
-          ! which were not specified with the SAVE attribute
-          ! retain their allocation status is processor dependent.
-CALL SUB1 ! The values returned by the first two ALLOCATED intrinsic
-	      ! calls in the PRINT statement are:
-	      ! .TRUE., .TRUE.
-	      ! The values returned by the second two ALLOCATED
-	      ! intrinsic calls in the PRINT statement are
-	      ! processor dependent and each could be either
-	      ! .TRUE. or .FALSE.
-CONTAINS
-	SUBROUTINE SUB1
-	USE MOD1 ! Brings in saved and not saved variables.
-	PRINT *, ALLOCATED(SAVED1), ALLOCATED(SAVED2), &
-	         ALLOCATED(UNSAVED1), ALLOCATED(UNSAVED2)
-	IF (.NOT. ALLOCATED(SAVED1)) ALLOCATE(SAVED1(10))
-	IF (.NOT. ALLOCATED(SAVED2)) ALLOCATE(SAVED2(10))
-	IF (.NOT. ALLOCATED(UNSAVED1)) ALLOCATE(UNSAVED1(10))
-	IF (.NOT. ALLOCATED(UNSAVED2)) ALLOCATE(UNSAVED2(10))
-	END SUBROUTINE SUB1
-END PROGRAM MAIN
\ No newline at end of file diff --git a/examples/prism-fsharp.html b/examples/prism-fsharp.html deleted file mode 100644 index c0b9921710..0000000000 --- a/examples/prism-fsharp.html +++ /dev/null @@ -1,88 +0,0 @@ -

Comments

-
// Single line comment
-(* Multi-line
-comment *)
- -

Strings

-
"foo \"bar\" baz"
-@"Verbatim strings"
-"""Alternate "verbatim" strings"""
-
- -

Numbers

-
//8 bit Int
-86y
-0b00000101y
-//Unsigned 8 bit Int
-86uy
-0b00000101uy
-//16 bit Int
-86s
-//Unsigned 16 bit Int
-86us
-//Int
-86
-86l
-0b10000
-0x2A6
-//Unsigned Int
-86u
-86ul
-//unativeint
-0x00002D3Fun
-//Long
-86L
-//Unsigned Long
-86UL
-//Float
-4.14F
-4.14f
-4.f
-4.F
-0x0000000000000000lf
-//Double
-4.14
-2.3E+32
-2.3e+32
-2.3e-32
-2.3e32
-0x0000000000000000LF
-//BigInt
-9999999999999999999999999999I
-//Decimal
-0.7833M
-0.7833m
-3.m
-3.M
-
- -

Full example

-
// The declaration creates a constructor that takes two values, name and age.
-type Person(name:string, age:int) =
-    // A Person object's age can be changed. The mutable keyword in the
-    // declaration makes that possible.
-    let mutable internalAge = age
-
-    // Declare a second constructor that takes only one argument, a name.
-    // This constructor calls the constructor that requires two arguments,
-    // sending 0 as the value for age.
-    new(name:string) = Person(name, 0)
-
-    // A read-only property.
-    member this.Name = name
-    // A read/write property.
-    member this.Age
-        with get() = internalAge
-        and set(value) = internalAge <- value
-
-    // Instance methods.
-    // Increment the person's age.
-    member this.HasABirthday () = internalAge <- internalAge + 1
-
-    // Check current age against some threshold.
-    member this.IsOfAge targetAge = internalAge >= targetAge
-
-    // Display the person's name and age.
-    override this.ToString () =
-        "Name:  " + name + "\n" + "Age:   " + (string)internalAge
-
diff --git a/examples/prism-ftl.html b/examples/prism-ftl.html deleted file mode 100644 index 76bf52b586..0000000000 --- a/examples/prism-ftl.html +++ /dev/null @@ -1,21 +0,0 @@ -

Full example

-
<html>
-<head>
-	<title>Welcome!</title>
-</head>
-<body>
-	<h1>
-		Welcome ${user}<#if user == "Big Joe">, our beloved leader</#if>!
-	</h1>
-	<p>Our latest product:
-	<a href="${latestProduct.url}">${latestProduct.name}</a>!
-	<p>See what our happy customers have to say!</p>
-	<ul>
-	<#list userStories as story>
-		<li>
-			<p>${story.text?esc} - by <span>${story.user.name}</span>
-		<li>
-	</#list>
-	</ul>
-</body>
-</html>
diff --git a/examples/prism-gap.html b/examples/prism-gap.html deleted file mode 100644 index 01e3f08cd7..0000000000 --- a/examples/prism-gap.html +++ /dev/null @@ -1,15 +0,0 @@ -

Full example

-
# Source: https://www.gap-system.org/Manuals/doc/ref/chap4.html#X815F71EA7BC0EB6F
-gap> fib := function ( n )
->     local f1, f2, f3, i;
->     f1 := 1; f2 := 1;
->     for i in [3..n] do
->       f3 := f1 + f2;
->       f1 := f2;
->       f2 := f3;
->     od;
->     return f2;
->   end;;
-gap> List( [1..10], fib );
-[ 1, 1, 2, 3, 5, 8, 13, 21, 34, 55 ]
-
diff --git a/examples/prism-gcode.html b/examples/prism-gcode.html deleted file mode 100644 index ebc1561569..0000000000 --- a/examples/prism-gcode.html +++ /dev/null @@ -1,22 +0,0 @@ -

Comments

-
; comment
-(some more comments)
-G28 (even in here) X0
-
- -

Quoted strings

-
"foo""bar"
- -

Full example

-
M190 S60 ; Heat bed to 60°C
-G21 ; Set units to millimeters
-G28 ; Move to Origin (Homing)
-G29 ; Auto Bed Leveling
-G28 X0 Y0 ; Home X and Y to min endstops
-M107 ; Fan off
-M109 S200 ; Heat hotend to 200°C
-G92 E0 ; Set current extruder position as zero
-G1 F200 E15 ; Extrude 15mm filament with 200mm/min
-G92 E0 ; Set current extruder position as zero
-G1 F500
-
diff --git a/examples/prism-gdscript.html b/examples/prism-gdscript.html deleted file mode 100644 index 16b510656a..0000000000 --- a/examples/prism-gdscript.html +++ /dev/null @@ -1,66 +0,0 @@ -

Full example

-
extends BaseClass
-class_name MyClass, "res://path/to/optional/icon.svg"
-
-# Member Variables
-
-var a = 5
-var s = "Hello"
-var arr = [1, 2, 3]
-var dict = {"key": "value", 2:3}
-var typed_var: int
-var inferred_type := "String"
-
-# Constants
-
-const ANSWER = 42
-const THE_NAME = "Charly"
-
-# Enums
-
-enum {UNIT_NEUTRAL, UNIT_ENEMY, UNIT_ALLY}
-enum Named {THING_1, THING_2, ANOTHER_THING = -1}
-
-# Built-in Vector Types
-
-var v2 = Vector2(1, 2)
-var v3 = Vector3(1, 2, 3)
-
-# Function
-
-func some_function(param1, param2):
-	var local_var = 5
-
-	if param1 < local_var:
-		print(param1)
-	elif param2 > 5:
-		print(param2)
-	else:
-		print("Fail!")
-
-	for i in range(20):
-		print(i)
-
-	while param2 != 0:
-		param2 -= 1
-
-	var local_var2 = param1 + 3
-	return local_var2
-
-# Functions override functions with the same name on the base/parent class.
-# If you still want to call them, use '.' (like 'super' in other languages).
-
-func something(p1, p2):
-	.something(p1, p2)
-
-# Inner Class
-
-class Something:
-	var a = 10
-
-# Constructor
-
-func _init():
-	print("Constructed!")
-	var lv = Something.new()
-	print(lv.a)
diff --git a/examples/prism-gedcom.html b/examples/prism-gedcom.html deleted file mode 100644 index 3fee6ab008..0000000000 --- a/examples/prism-gedcom.html +++ /dev/null @@ -1,50 +0,0 @@ -

Full example

-
0 HEAD
-1 CHAR ASCII
-1 SOUR ID_OF_CREATING_FILE
-1 GEDC
-2 VERS 5.5
-2 FORM Lineage-Linked
-1 SUBM @SUBMITTER@
-0 @SUBMITTER@ SUBM
-1 NAME /Submitter/
-1 ADDR Submitters address
-2 CONT address continued here
-0 @FATHER@ INDI
-1 NAME /Father/
-1 SEX M
-1 BIRT
-2 PLAC birth place
-2 DATE 1 JAN 1899
-1 DEAT
-2 PLAC death place
-2 DATE 31 DEC 1990
-1 FAMS @FAMILY@
-0 @MOTHER@ INDI
-1 NAME /Mother/
-1 SEX F
-1 BIRT
-2 PLAC birth place
-2 DATE 1 JAN 1899
-1 DEAT
-2 PLAC death place
-2 DATE 31 DEC 1990
-1 FAMS @FAMILY@
-0 @CHILD@ INDI
-1 NAME /Child/
-1 BIRT
-2 PLAC birth place
-2 DATE 31 JUL 1950
-1 DEAT
-2 PLAC death place
-2 DATE 29 FEB 2000
-1 FAMC @FAMILY@
-0 @FAMILY@ FAM
-1 MARR
-2 PLAC marriage place
-2 DATE 1 APR 1950
-1 HUSB @FATHER@
-1 WIFE @MOTHER@
-1 CHIL @CHILD@
-0 TRLR
-
\ No newline at end of file diff --git a/examples/prism-gettext.html b/examples/prism-gettext.html deleted file mode 100644 index 379ac2800c..0000000000 --- a/examples/prism-gettext.html +++ /dev/null @@ -1,6 +0,0 @@ -

Full example

-
#  Source: https://www.gnu.org/software/gettext/manual/html_node/PO-Files.html
-#: lib/error.c:116
-msgid "Unknown system error"
-msgstr "Error desconegut del sistema"
-
diff --git a/examples/prism-gherkin.html b/examples/prism-gherkin.html deleted file mode 100644 index f38446e720..0000000000 --- a/examples/prism-gherkin.html +++ /dev/null @@ -1,74 +0,0 @@ -

Strings

-
"foo \"bar\" baz"
-'foo \'bar\' baz'
-
-"""
-Some Title, Eh?
-===============
-Here is the first paragraph of my blog post.
-Lorem ipsum dolor sit amet, consectetur adipiscing
-elit.
-"""
-
- -

Keywords

-
Feature: Some terse yet descriptive text of what is desired
-    In order to realize a named business value
-    As an explicit system actor
-    I want to gain some beneficial outcome which furthers the goal
-
-    Additional text...
-
-    Scenario: Some determinable business situation
-    Given some precondition
-    And some other precondition
-    When some action by the actor
-    And some other action
-    And yet another action
-    Then some testable outcome is achieved
-    And something else we can check happens too
-
-    Scenario: A different situation
-    ...
- -

Comments and tags

-
# user.feature
-@users
-Feature: Sign in to the store
-  In order to view my orders list
-  As a visitor
-  I need to be able to log in to the store
-
-  @javascript @login
-  Scenario: Trying to login without credentials
-      Given I am on the store homepage
-        And I follow "Login"
-       When I press "Login"
-       Then I should be on login page
-       # And I should see "Invalid credentials"
-
- -

Tables and parameters

-
Scenario Outline: Eating
-  Given there are <start> cucumbers
-  When I eat <eat> cucumbers
-  Then I should have <left> cucumbers
-
-  Examples:
-    | start | eat | left |
-    |  12   |  5  |  7   |
-    |  20   |  5  |  15  |
- -

Localized keywords

-
#language: fr
-Fonctionnalité: Contrôle le format de la valeur saisie d'un champ d'une révision
-  En tant qu'expert ou analyste
-  Je ne dois pas pouvoir soumettre des données au mauvais format
-
-  Contexte:
-    Etant donné que je suis connecté avec le pseudo "p_flore" et le mot de passe "p4flore"
-    Et que la gamme du contrat 27156 supporte les révisions
-    Etant donné que le contrat ayant l'id "27156" a une révision
-    Et je suis sur "/contrat/27156/revision/1"
-    Et que j'attends quelques secondes
-    ...
diff --git a/examples/prism-git.html b/examples/prism-git.html deleted file mode 100644 index cd5668d175..0000000000 --- a/examples/prism-git.html +++ /dev/null @@ -1,39 +0,0 @@ -

Comments

-
# On branch prism-examples
-# Changes to be committed:
-#   (use "git reset HEAD <file>..." to unstage)
-#
-#       new file:   examples/prism-git.html
- -

Inserted and deleted lines

-
- Some deleted line
-+ Some added line
- -

Diff

-
$ git diff
-diff --git file.txt file.txt
-index 6214953..1d54a52 100644
---- file.txt
-+++ file.txt
-@@ -1 +1,2 @@
--Here's my tetx file
-+Here's my text file
-+And this is the second line
- -

Logs

-
$ git log
-commit a11a14ef7e26f2ca62d4b35eac455ce636d0dc09
-Author: lgiraudel
-Date:   Mon Feb 17 11:18:34 2014 +0100
-
-    Add of a new line
-
-commit 87edc4ad8c71b95f6e46f736eb98b742859abd95
-Author: lgiraudel
-Date:   Mon Feb 17 11:18:15 2014 +0100
-
-    Typo fix
-
-commit 3102416a90c431400d2e2a14e707fb7fd6d9e06d
-Author: lgiraudel
-Date:   Mon Feb 17 10:58:11 2014 +0100
\ No newline at end of file diff --git a/examples/prism-glsl.html b/examples/prism-glsl.html deleted file mode 100644 index 7d64da4bfd..0000000000 --- a/examples/prism-glsl.html +++ /dev/null @@ -1,65 +0,0 @@ -

Vertex shader example

-
attribute vec3 vertex;
-attribute vec3 normal;
-
-uniform mat4 _mvProj;
-uniform mat3 _norm;
-
-varying vec3 vColor;
-varying vec3 localPos;
-
-#pragma include "light.glsl"
-
-// constants
-vec3 materialColor = vec3(1.0,0.7,0.8);
-vec3 specularColor = vec3(1.0,1.0,1.0);
-
-void main(void) {
-	// compute position
-	gl_Position = _mvProj * vec4(vertex, 1.0);
-
-	localPos = vertex;
-
-	// compute light info
-	vec3 n = normalize(_norm * normal);
-	vec3 diffuse;
-	float specular;
-	float glowingSpecular = 50.0;
-	getDirectionalLight(n, _dLight, glowingSpecular, diffuse, specular);
-	vColor = max(diffuse,_ambient.xyz)*materialColor+specular*specularColor+_ambient;
-}
- -

Fragment shader example

-
#ifdef GL_ES
-precision highp float;
-#endif
-
-uniform vec3 BrickColor, MortarColor;
-uniform vec3 BrickSize;
-uniform vec3 BrickPct;
-
-varying vec3 vColor;
-varying vec3 localPos;
-void main()
-{
-	vec3 color;
-	vec3 position, useBrick;
-
-
-	position = localPos / BrickSize.xyz;
-
-	if (fract(position.y * 0.5) > 0.5){
-		position.x += 0.5;
-		position.z += 0.5;
-	}
-
-	position = fract(position);
-
-	useBrick = step(position, BrickPct.xyz);
-
-	color = mix(MortarColor, BrickColor, useBrick.x * useBrick.y * useBrick.z);
-	color *= vColor;
-
-	gl_FragColor = vec4(color, 1.0);
-}
-
diff --git a/examples/prism-gml.html b/examples/prism-gml.html deleted file mode 100644 index 5526c5cd3a..0000000000 --- a/examples/prism-gml.html +++ /dev/null @@ -1,29 +0,0 @@ -

Comments

-
// This is a comment
-/* This is a comment
-on multiple lines */
- -

Functions

-
variable_instance_set(_inst,_var_name,_start+_change);
- -

Full example

-
if(instance_exists(_inst) || _inst==global){
-	if(_delay<=0){
-		_time+=1;
-		if(_time<_duration){
-			event_user(0);
-		}else{
-			if(_inst!=global){
-				variable_instance_set(_inst,_var_name,_start+_change);
-			}else{
-				variable_global_set(_var_name,_start+_change);
-			}
-			instance_destroy();
-		}
-	}else{
-		_delay-=1;
-	}
-}else{
-	instance_destroy();
-}
-
diff --git a/examples/prism-gn.html b/examples/prism-gn.html deleted file mode 100644 index d0a7fa7200..0000000000 --- a/examples/prism-gn.html +++ /dev/null @@ -1,24 +0,0 @@ -

Full example

-
# Source: https://gn.googlesource.com/gn/+/main/docs/cross_compiles.md
-
-declare_args() {
-  # Applies only to toolchains targeting target_cpu.
-  sysroot = ""
-}
-
-config("my_config") {
-  # Uses current_cpu because compile flags are toolchain-dependent.
-  if (current_cpu == "arm") {
-    defines = [ "CPU_IS_32_BIT" ]
-  } else {
-    defines = [ "CPU_IS_64_BIT" ]
-  }
-  # Compares current_cpu with target_cpu to see whether current_toolchain
-  # has the same architecture as target_toolchain.
-  if (sysroot != "" && current_cpu == target_cpu) {
-    cflags = [
-      "-isysroot",
-      sysroot,
-    ]
-  }
-}
diff --git a/examples/prism-go-module.html b/examples/prism-go-module.html deleted file mode 100644 index 52855d457b..0000000000 --- a/examples/prism-go-module.html +++ /dev/null @@ -1,15 +0,0 @@ -

Full example

-
// Source: https://go.dev/doc/modules/gomod-ref#example
-
-module example.com/mymodule
-
-go 1.14
-
-require (
-    example.com/othermodule v1.2.3
-    example.com/thismodule v1.2.3
-    example.com/thatmodule v1.2.3
-)
-
-replace example.com/thatmodule => ../thatmodule
-exclude example.com/thismodule v1.3.0
diff --git a/examples/prism-go.html b/examples/prism-go.html deleted file mode 100644 index da2bc7f931..0000000000 --- a/examples/prism-go.html +++ /dev/null @@ -1,68 +0,0 @@ -

Comments

-
// This is a comment
-/* This is a comment
-on multiple lines */
- -

Numbers

-
42
-0600
-0xBadFace
-170141183460469231731687303715884105727
-0.
-72.40
-072.40
-2.71828
-1.e+0
-6.67428e-11
-1E6
-.25
-.12345E+5
-0i
-011i
-0.i
-2.71828i
-1.e+0i
-6.67428e-11i
-1E6i
-.25i
-.12345E+5i
- -

Runes and strings

-
'\t'
-'\000'
-'\x07'
-'\u12e4'
-'\U00101234'
-`abc`
-`multi-line
-string`
-"Hello, world!"
-"multi-line
-string"
- -

Functions

-
func(a, b int, z float64) bool { return a*b < int(z) }
- -

Full example

-
package main
-import "fmt"
-
-func sum(a []int, c chan int) {
-	sum := 0
-	for _, v := range a {
-		sum += v
-	}
-	c <- sum // send sum to c
-}
-
-func main() {
-	a := []int{7, 2, 8, -9, 4, 0}
-
-	c := make(chan int)
-	go sum(a[:len(a)/2], c)
-	go sum(a[len(a)/2:], c)
-	x, y := <-c, <-c // receive from c
-
-	fmt.Println(x, y, x+y)
-}
-
diff --git a/examples/prism-gradle.html b/examples/prism-gradle.html deleted file mode 100644 index ce3b010766..0000000000 --- a/examples/prism-gradle.html +++ /dev/null @@ -1,54 +0,0 @@ -

Full example

-
apply plugin: "java"
-apply plugin: "eclipse"
-apply plugin: "idea"
-
-group = "com.mycompany.hadoopproject"
-version = "1.0"
-
-repositories {
-    // Standard Maven 
-    mavenCentral()
-    maven {
-        url "https://repository.cloudera.com/artifactory/cloudera-repos/"
-    }
-}
-
-// Mimic Maven 'provided' configuration, as suggested in GRADLE-784
-configurations {
-    provided
-}
-sourceSets {
-    main {
-        compileClasspath += configurations.provided
-    }
-}
-
-ext.hadoopVersion = "2.0.0-mr1-cdh4.0.1"
-dependencies {
-    provided "org.apache.hadoop:hadoop-client:${hadoopVersion}"
-
-    // Example of adding a specific compile time dependency
-    compile "com.google.guava:guava:11.0.2"
-
-    testCompile "junit:junit:4.8.2"
-}
-
-// Java version selection
-sourceCompatibility = 1.6
-targetCompatibility = 1.6
-
-eclipse {
-    classpath {
-        // Ensure Eclipse build output appears in build directory
-        defaultOutputDir = file("${buildDir}/eclipse-classes")
-        // Ensure the provided configuration jars are available in Eclipse
-        plusConfigurations += configurations.provided
-    }
-}
-
-// Emulate Maven shade plugin with a fat jar.
-// http://docs.codehaus.org/display/GRADLE/Cookbook#Cookbook-Creatingafatjar
-jar {
-    from configurations.compile.collect { it.isDirectory() ? it : zipTree(it) }
-}
diff --git a/examples/prism-graphql.html b/examples/prism-graphql.html deleted file mode 100644 index 7a030bceee..0000000000 --- a/examples/prism-graphql.html +++ /dev/null @@ -1,62 +0,0 @@ -

Comments

-
# This is a comment
- -

Strings

-
""
-"foo \"bar\" baz"
-""" "Multi-line" strings
-are supported."""
-
- -

Numbers

-
0
-42
-3.14159
--9e-5
-0.9E+7
- -

Keywords

-
query withFragments {
-  user(id: 4) {
-    friends(first: 10) {
-      ...friendFields
-    }
-    mutualFriends(first: 10) {
-      ...friendFields
-    }
-  }
-}
-
-fragment friendFields on User {
-  id
-  name
-  profilePic(size: 50)
-}
- -

Markdown inside of descriptions require markdown to be loaded. -On this page, checking Markdown before checking GraphQL should -make the example below work properly.

- -

Descriptions

-
"""
-This is a multiline description
-# Heading
-[Prism](http://www.prismjs.com)
-
-It can contain **Markdown
-	on multiple lines**
-"""
-type Example {
-	id: ID!
-}
-
-type Sample {
-	"""
-	Simple multiline description
-	"""
-	name(
-		"This is a single line description"
-		first: Int
-	): String
-}
-
\ No newline at end of file diff --git a/examples/prism-groovy.html b/examples/prism-groovy.html deleted file mode 100644 index ac36cf7e53..0000000000 --- a/examples/prism-groovy.html +++ /dev/null @@ -1,83 +0,0 @@ -

Comments

-
// Single line comment
-/* Multi-line
-comment */
- -

Strings

-
"foo 'bar' baz"
-'foo "bar" baz'
-"""Multi-line
-string"""
-'''Multi-line
-string'''
-"String /containing/ slashes"
-
- -

Slashy strings (regex)

-
/.*foo.*/
-/regex"containing quotes"/
-$/.*"(.*)".*/(.*)/$
- -

Interpolation inside GStrings and regex

-
"The answer is ${21*2}"
-"The $foxtype ${foxcolor.join()} fox"
-/foo${21*2}baz/
-'No interpolation here : ${21*2}'
- -

Full example

-
#!/usr/bin/env groovy
-package model
-
-import groovy.transform.CompileStatic
-import java.util.List as MyList
-
-trait Distributable {
-    void distribute(String version) {}
-}
-
-@CompileStatic
-class Distribution implements Distributable {
-    double number = 1234.234 / 567
-    def otherNumber = 3 / 4
-    boolean archivable = condition ?: true
-    def ternary = a ? b : c
-    String name = "Guillaume"
-    Closure description = null
-    List<DownloadPackage> packages = []
-    String regex = ~/.*foo.*/
-    String multi = '''
-        multi line string
-    ''' + """
-        now with double quotes and ${gstring}
-    """ + $/
-        even with dollar slashy strings
-    /$
-
-    /**
-     * description method
-     * @param cl the closure
-     */
-    void description(Closure cl) { this.description = cl }
-
-    void version(String name, Closure versionSpec) {
-        def closure = { println "hi" } as Runnable
-
-        MyList ml = [1, 2, [a: 1, b:2,c :3]]
-        for (ch in "name") {}
-
-        // single line comment
-        DownloadPackage pkg = new DownloadPackage(version: name)
-
-        check that: true
-
-        label:
-        def clone = versionSpec.rehydrate(pkg, pkg, pkg)
-        /*
-            now clone() in a multiline comment
-        */
-        clone()
-        packages.add(pkg)
-
-        assert 4 / 2 == 2
-    }
-}
diff --git a/examples/prism-haml.html b/examples/prism-haml.html deleted file mode 100644 index 364595ad01..0000000000 --- a/examples/prism-haml.html +++ /dev/null @@ -1,79 +0,0 @@ -

Comments

-

-/ This is comment
-    on multiple lines
-/ This is a comment
-but this is not
--# This is another comment
-    on multiple lines
- -

Doctype

-
!!! XML
-!!!
-!!! 5
- -

Tags

-
%div
-	%span
-%span(class="widget_#{@widget.number}")
-%div{:id => [@item.type, @item.number], :class => [@item.type, @item.urgency]}
-%html{:xmlns => "http://www.w3.org/1999/xhtml", "xml:lang" => "en", :lang => "en"}
-%html{html_attrs('fr-fr')}
-%div[@user, :greeting]
-%img
-%pre><
-  foo
-  bar
-%img
-
- -

Markup

-
%div
-  <p id="blah">Blah!</p>
- -

Inline Ruby

-
= ['hi', 'there', 'reader!'].join " "
-- foo = "hello"
-= link_to_remote "Add to cart",
-    :url => { :action => "add", :id => product.id },
-    :update => { :success => "cart", :failure => "error" }
-~ "Foo\n<pre>Bar\nBaz</pre>"
-%p
-  - case 2
-  - when 1
-    = "1!"
-  - when 2
-    = "2?"
-  - when 3
-    = "3."
-- (42...47).each do |i|
-  %p= i
-%p See, I can count!
-
- -

Filters

- -
%head
-	:css
-		#content: {
-			background: url('img/background.jpg');
-		}
-		div {
-			color: #333;
-		}
-	:javascript
-		(function() {
-			var test = "Do you like Prism?";
-			if(confirm(test)) {
-				do_something_great();
-			}
-		}());
-%body
-
- -

Filters require the desired language to be loaded. -On this page, check CoffeeScript before checking Haml should make -the example below work properly.

-
%script
-  :coffee
-    console.log 'This is coffee script'
diff --git a/examples/prism-handlebars.html b/examples/prism-handlebars.html deleted file mode 100644 index 8e07329166..0000000000 --- a/examples/prism-handlebars.html +++ /dev/null @@ -1,31 +0,0 @@ -

Comments

-
{{! This is a comment with <p>some markup</p> in it }}
-{{! This is a comment }} {{ this_is_not }}
- -

Variables

-
<p>{{ text }}</p>
-<h1>{{article.title}}</h1>
-{{{ triple_stash_is_supported }}}
-{{articles.[10].[#comments]}}
- -

Strings, numbers and booleans

-
{{{link "See more..." story.url}}}
-{{ true }}
-{{ custom_helper 42 href="somepage.html" false }}
- -

Block helpers

-
<div class="body">
-	{{#bold}}{{body}}{{/bold}}
-</div>
-{{#with story}}
-	<div class="intro">{{{intro}}}</div>
-	<div class="body">{{{body}}}</div>
-{{/with}}
-<div class="{{#if test}}foo{{else}}bar{{/if}}"></div>
-{{#list array}}
-	{{@index}}. {{title}}
-{{/list}}
-{{#block-with-hyphens args=yep}}
-	This should probably work...
-{{/block-with-hyphens}}
-
diff --git a/examples/prism-haskell.html b/examples/prism-haskell.html deleted file mode 100644 index 799bbdfa79..0000000000 --- a/examples/prism-haskell.html +++ /dev/null @@ -1,80 +0,0 @@ -

Comments

-
-- Single line comment
-{- Multi-line
-comment -}
- -

Strings and characters

-
'a'
-'\n'
-'\^A'
-'\^]'
-'\NUL'
-'\23'
-'\o75'
-'\xFE'
-"Here is a backslant \\ as well as \137, \
-    \a numeric escape character, and \^X, a control character."
- -

Numbers

-
42
-123.456
-123.456e-789
-1e+3
-0o74
-0XAF
- -

Full example

-
hGetLine h =
-  wantReadableHandle_ "Data.ByteString.hGetLine" h $
-    \ h_@Handle__{haByteBuffer} -> do
-      flushCharReadBuffer h_
-      buf <- readIORef haByteBuffer
-      if isEmptyBuffer buf
-         then fill h_ buf 0 []
-         else haveBuf h_ buf 0 []
- where
-
-  fill h_@Handle__{haByteBuffer,haDevice} buf len xss =
-    len `seq` do
-    (r,buf') <- Buffered.fillReadBuffer haDevice buf
-    if r == 0
-       then do writeIORef haByteBuffer buf{ bufR=0, bufL=0 }
-               if len > 0
-                  then mkBigPS len xss
-                  else ioe_EOF
-       else haveBuf h_ buf' len xss
-
-  haveBuf h_@Handle__{haByteBuffer}
-          buf@Buffer{ bufRaw=raw, bufR=w, bufL=r }
-          len xss =
-    do
-        off <- findEOL r w raw
-        let new_len = len + off - r
-        xs <- mkPS raw r off
-
-      -- if eol == True, then off is the offset of the '\n'
-      -- otherwise off == w and the buffer is now empty.
-        if off /= w
-            then do if (w == off + 1)
-                            then writeIORef haByteBuffer buf{ bufL=0, bufR=0 }
-                            else writeIORef haByteBuffer buf{ bufL = off + 1 }
-                    mkBigPS new_len (xs:xss)
-            else do
-                 fill h_ buf{ bufL=0, bufR=0 } new_len (xs:xss)
-
-  -- find the end-of-line character, if there is one
-  findEOL r w raw
-        | r == w = return w
-        | otherwise =  do
-            c <- readWord8Buf raw r
-            if c == fromIntegral (ord '\n')
-                then return r -- NB. not r+1: don't include the '\n'
-                else findEOL (r+1) w raw
-
-mkPS :: RawBuffer Word8 -> Int -> Int -> IO ByteString
-mkPS buf start end =
- create len $ \p ->
-   withRawBuffer buf $ \pbuf -> do
-   copyBytes p (pbuf `plusPtr` start) len
- where
-   len = end - start
diff --git a/examples/prism-haxe.html b/examples/prism-haxe.html deleted file mode 100644 index 61fbf0e4b7..0000000000 --- a/examples/prism-haxe.html +++ /dev/null @@ -1,37 +0,0 @@ -

Strings and string interpolation

-
"Foo
-bar $baz"
-'Foo
-bar'
-"${4 + 2}"
- -

Regular expressions

-
~/haxe/i
-~/[A-Z0-9._%-]+@[A-Z0-9.-]+.[A-Z][A-Z][A-Z]?/i
-~/(dog|fox)/g
- -

Conditional compilation

-
#if !debug
-  trace("ok");
-#elseif (debug_level > 3)
-  trace(3);
-#else
-  trace("debug level too low");
-#end
- -

Metadata

-
@author("Nicolas")
-@debug
-class MyClass {
-  @range(1, 8)
-  var value:Int;
-
-  @broken
-  @:noCompletion
-  static function method() { }
-}
- -

Reification

-
macro static function add(e:Expr) {
-  return macro $e + $e;
-}
\ No newline at end of file diff --git a/examples/prism-hcl.html b/examples/prism-hcl.html deleted file mode 100644 index 5b15134ba5..0000000000 --- a/examples/prism-hcl.html +++ /dev/null @@ -1,42 +0,0 @@ -

Comments

-
# Configure the AWS Provider
-// Configure the AWS Provider
-
- -

Resources

-
resource "aws_instance" "web" {
-  ami           = "${data.aws_ami.ubuntu.id}"
-  instance_type = "t2.micro"
-
-  tags {
-    Name = "HelloWorld"
-  }
-}
- -

Provider

-
provider "aws" {
-  access_key = "${var.aws_access_key}"
-  secret_key = "${var.aws_secret_key}"
-  region     = "us-east-1"
-}
- -

Variables

-
variable "images" {
-  type = "map"
-
-  default = {
-    us-east-1 = "image-1234"
-    us-west-2 = "image-4567"
-  }
-}
- -

Outputs

-
output "address" {
-  value = "${aws_instance.db.public_dns}"
-}
- -

Modules

-
module "consul" {
-  source  = "hashicorp/consul/aws"
-  servers = 5
-}
diff --git a/examples/prism-hlsl.html b/examples/prism-hlsl.html deleted file mode 100644 index 96b4bac5c9..0000000000 --- a/examples/prism-hlsl.html +++ /dev/null @@ -1,18 +0,0 @@ -

Full example

-
// Source: https://github.com/mellinoe/veldrid/blob/d60e5a036add2123a15f0da02f1da65a80503d54/src/Veldrid.ImGui/Assets/HLSL/imgui-frag.hlsl
-
-struct PS_INPUT
-{
-	float4 pos : SV_POSITION;
-	float4 col : COLOR0;
-	float2 uv  : TEXCOORD0;
-};
-
-Texture2D FontTexture : register(t0);
-sampler FontSampler : register(s0);
-
-float4 FS(PS_INPUT input) : SV_Target
-{
-	float4 out_col = input.col * FontTexture.Sample(FontSampler, input.uv);
-	return out_col;
-}
diff --git a/examples/prism-hoon.html b/examples/prism-hoon.html deleted file mode 100644 index 6d45086c44..0000000000 --- a/examples/prism-hoon.html +++ /dev/null @@ -1,17 +0,0 @@ -

Caesar cipher

- -
|= [a=@ b=tape]
-^- tape
-?: (gth a 25)
-$(a (sub a 26))
-%+ turn b
-|= c=@tD
-?: &((gte c 'A') (lte c 'Z'))
-=. c (add c a)
-?. (gth c 'Z') c
-(sub c 26)
-?: &((gte c 'a') (lte c 'z'))
-=. c (add c a)
-?. (gth c 'z') c
-(sub c 26)
-c
\ No newline at end of file diff --git a/examples/prism-hpkp.html b/examples/prism-hpkp.html deleted file mode 100644 index ced16eb7cc..0000000000 --- a/examples/prism-hpkp.html +++ /dev/null @@ -1,11 +0,0 @@ -

Pin for one year with report-uri

-
pin-sha256="EpOpN/ahUF6jhWShDUdy+NvvtaGcu5F7qM6+x2mfkh4=";
-max-age=31536000;
-includeSubDomains;
-report-uri="https://my-reports.com/submit"
-
- -

Pin for a short time (considered unsafe)

-
pin-sha256="EpOpN/ahUF6jhWShDUdy+NvvtaGcu5F7qM6+x2mfkh4=";
-max-age=123
-
diff --git a/examples/prism-hsts.html b/examples/prism-hsts.html deleted file mode 100644 index f7d0e4512e..0000000000 --- a/examples/prism-hsts.html +++ /dev/null @@ -1,8 +0,0 @@ -

Policy with far-future max-age

-
max-age=31536000
- -

Policy with near-future max-age, considered unsafe

-
max-age=123
- -

Policy with extra directives

-
max-age=31536000; includeSubdomains; preload
diff --git a/examples/prism-http.html b/examples/prism-http.html deleted file mode 100644 index a2091768fe..0000000000 --- a/examples/prism-http.html +++ /dev/null @@ -1,33 +0,0 @@ -

Request header

-
GET http://localhost:9999/foo.html HTTP/1.1
-Accept-Language: fr,fr-fr;q=0.8,en-us;q=0.5,en;q=0.3
-Accept-Encoding: gzip, deflate
- -

Response header

-
HTTP/1.1 200 OK
-Server: GitHub.com
-Date: Mon, 22 Dec 2014 18:25:30 GMT
-Content-Type: text/html; charset=utf-8
- -

Response body highlighted based on Content-Type

-

This currently supports the following content types : - "application/json", - "application/xml", - "text/xml" and - "text/html".

-
HTTP/1.1 200 OK
-Server: GitHub.com
-Date: Mon, 22 Dec 2014 18:25:30 GMT
-Content-Type: text/html; charset=utf-8
-Last-Modified: Sun, 21 Dec 2014 20:29:48 GMT
-Transfer-Encoding: chunked
-Expires: Mon, 22 Dec 2014 18:35:30 GMT
-Cache-Control: max-age=600
-Vary: Accept-Encoding
-Content-Encoding: gzip
-
-<!DOCTYPE html>
-<html lang="en">
-<head></head>
-<body></body>
-</html>
\ No newline at end of file diff --git a/examples/prism-ichigojam.html b/examples/prism-ichigojam.html deleted file mode 100644 index 24bcbf22d4..0000000000 --- a/examples/prism-ichigojam.html +++ /dev/null @@ -1,29 +0,0 @@ -

Note: this component focuses on IchigoJam, which uses a small subset of basic and introduces its own markers.

- -

Comments

-
' This is a comment
-REM This is a remark
-'NoSpaceIsOK
-REMNOSPACE
- -

Strings

-
"This a string."
-"This is a string with ""quotes"" in it."
- -

Numbers

-
42
-3.14159
--42
--3.14159
-.5
-10.
-2E10
-4.2E-14
--3E+2
-#496F726953756B69
-`11100010
- -

IchigoJam Basic example

-
A=0
-FOR I=1 TO 100 : A=A+I : NEXT
-PRINT A
\ No newline at end of file diff --git a/examples/prism-icon.html b/examples/prism-icon.html deleted file mode 100644 index 1dce690cb7..0000000000 --- a/examples/prism-icon.html +++ /dev/null @@ -1,172 +0,0 @@ -

Comments

-
#
-# Foobar
- -

Strings and csets

-
""
-"Foo\"bar"
-''
-'a\'bcdefg'
- -

Numbers

-
42
-3.14159
-5.2E+8
-16rface
-2r1101
- -

Full example

-
# Author: Robert J. Alexander
-global GameObject, Tree, Learn
-record Question(question, yes, no)
-procedure main()
-   GameObject := "animal"
-   Tree := Question("Does it live in water", "goldfish", "canary")
-   Get()                                  # Recall prior knowledge
-   Game()                                 # Play a game
-   return
-end
-#  Game() -- Conducts a game.
-#
-procedure Game()
-   while Confirm("Are you thinking of ", Article(GameObject), " ",
-      GameObject) do Ask(Tree)
-   write("Thanks for a great game.")
-   if \Learn &Confirm("Want to save knowledge learned this session")
-   then Save()
-   return
-end
-#  Confirm() -- Handles yes/no questions and answers.
-#
-procedure Confirm(q[])
-   local answer, s
-   static ok
-   initial {
-      ok := table()
-      every ok["y" | "yes" | "yeah" | "uh huh"] := "yes"
-      every ok["n" | "no"  | "nope" | "uh uh" ] := "no"
-      }
-   while /answer do {
-      every writes(!q)
-      write("?")
-      case s := read() | exit(1) of {
-         #  Commands recognized at a yes/no prompt.
-         #
-         "save":    Save()
-         "get":     Get()
-         "list":    List()
-         "dump":    Output(Tree)
-         default:   {
-            (answer := \ok[map(s, &ucase, &lcase)]) |
-               write("This is a \"yes\" or \"no\" question.")
-            }
-         }
-      }
-   return answer == "yes"
-end
-#  Ask() -- Navigates through the barrage of questions leading to a
-#  guess.
-#
-procedure Ask(node)
-   local guess, question
-   case type(node) of {
-      "string":        {
-         if not Confirm("It must be ", Article(node), " ", node, ", right") then {
-            Learn := "yes"
-            write("What were you thinking of?")
-            guess := read() | exit(1)
-            write("What question would distinguish ", Article(guess), " ",
-               guess, " from ", Article(node), " ", node, "?")
-            question := read() | exit(1)
-            if question[-1] == "?" then question[-1] := ""
-            question[1] := map(question[1], &lcase, &ucase)
-            if Confirm("For ", Article(guess), " ", guess, ", what would the answer be")
-            then return Question(question, guess, node)
-         else return Question(question, node, guess)
-         }
-      }
-      "Question":  {
-         if Confirm(node.question) then node.yes := Ask(node.yes)
-         else node.no := Ask(node.no)
-         }
-      }
-end
-#  Article() -- Come up with the appropriate indefinite article.
-#
-procedure Article(word)
-   return if any('aeiouAEIOU', word) then "an" else "a"
-end
-#  Save() -- Store our acquired knowledge in a disk file name
-#  based on the GameObject.
-#
-procedure Save()
-   local f
-   f := open(GameObject || "s", "w")
-   Output(Tree, f)
-   close(f)
-   return
-end
-#  Output() -- Recursive procedure used to output the knowledge tree.
-#
-procedure Output(node, f, sense)
-   static indent
-   initial indent := 0
-   /f := &output
-   /sense := " "
-   case type(node) of {
-      "string":        write(f, repl(" ", indent), sense, "A: ", node)
-      "Question":  {
-         write(f, repl(" ", indent), sense, "Q: ", node.question)
-         indent +:= 1
-         Output(node.yes, f, "y")
-         Output(node.no, f, "n")
-         indent -:= 1
-         }
-      }
-   return
-end
-#  Get() -- Read in a knowledge base from a file.
-#
-procedure Get()
-   local f
-   f := open(GameObject || "s", "r") | fail
-   Tree := Input(f)
-   close(f)
-   return
-end
-#  Input() -- Recursive procedure used to input the knowledge tree.
-#
-procedure Input(f)
-   local nodetype, s
-   read(f) ? (tab(upto(~' \t')) & =("y" | "n" | "") &
-      nodetype := move(1) & move(2) & s := tab(0))
-   return if nodetype == "Q" then Question(s, Input(f), Input(f)) else s
-end
-#  List() -- Lists the objects in the knowledge base.
-#
-$define Length           78
-procedure List()
-   local lst, line, item
-   lst := Show(Tree, [ ])
-   line := ""
-   every item := !sort(lst) do {
-      if *line + *item > Length then {
-         write(trim(line))
-         line := ""
-         }
-      line ||:= item || ", "
-      }
-   write(line[1:-2])
-   return
-end
-#
-#  Show() -- Recursive procedure used to navigate the knowledge tree.
-#
-procedure Show(node, lst)
-   if type(node) == "Question" then {
-      lst := Show(node.yes, lst)
-      lst := Show(node.no, lst)
-      }
-   else put(lst, node)
-   return lst
-end
\ No newline at end of file diff --git a/examples/prism-icu-message-format.html b/examples/prism-icu-message-format.html deleted file mode 100644 index 691aa47e21..0000000000 --- a/examples/prism-icu-message-format.html +++ /dev/null @@ -1,22 +0,0 @@ -

Full example

-
https://unicode-org.github.io/icu/userguide/format_parse/messages/
-
-{gender_of_host, select,
-  female {
-    {num_guests, plural, offset:1
-      =0 {{host} does not give a party.}
-      =1 {{host} invites {guest} to her party.}
-      =2 {{host} invites {guest} and one other person to her party.}
-      other {{host} invites {guest} and # other people to her party.}}}
-  male {
-    {num_guests, plural, offset:1
-      =0 {{host} does not give a party.}
-      =1 {{host} invites {guest} to his party.}
-      =2 {{host} invites {guest} and one other person to his party.}
-      other {{host} invites {guest} and # other people to his party.}}}
-  other {
-    {num_guests, plural, offset:1
-      =0 {{host} does not give a party.}
-      =1 {{host} invites {guest} to their party.}
-      =2 {{host} invites {guest} and one other person to their party.}
-      other {{host} invites {guest} and # other people to their party.}}}}
diff --git a/examples/prism-idris.html b/examples/prism-idris.html deleted file mode 100644 index 558f1fa8ca..0000000000 --- a/examples/prism-idris.html +++ /dev/null @@ -1,56 +0,0 @@ -

Comments

-
-- Single line comment
-{- Multi-line
-comment -}
- -

Strings and characters

-
'a'
-'\n'
-'\^A'
-'\^]'
-'\NUL'
-'\23'
-'\o75'
-'\xFE'
- -

Numbers

-
42
-123.456
-123.456e-789
-1e+3
-0o74
-0XAF
- -

Larger example

-
module Main
-
-import Data.Vect
-
--- this is comment
-record Person where
-  constructor MkPerson2
-  age : Integer
-  name : String
-
-||| identity function
-id : a -> a
-id x = x
-
-{-
-Bool type can be defined in
-userland
--}
-data Bool = True | False
-
-implementation Show Bool where
-  show True = "True"
-  show False = "False"
-
-not : Bool -> Bool
-not b = case b of
-          True  => False
-          False => True
-
-vect3 : Vect 3 Int
-vect3 = with Vect (1 :: 2 :: 3 :: Nil)
-
diff --git a/examples/prism-iecst.html b/examples/prism-iecst.html deleted file mode 100644 index 2bfc455654..0000000000 --- a/examples/prism-iecst.html +++ /dev/null @@ -1,40 +0,0 @@ -

Code

-

-CONFIGURATION DefaultCfg
-    VAR_GLOBAL
-      Start_Stop AT %IX0.0: BOOL; (* This is a comment *)
-    END_VAR
-    TASK NewTask  (INTERVAL := T#20ms);
-    PROGRAM Main WITH NewTask : PLC_PRG;
-END_CONFIGURATION
-  
-PROGRAM demo
-    VAR_EXTERNAL
-      Start_Stop: BOOL;
-      StringVar: STRING[250] := "Test String"
-    END_VAR
-    VAR
-      a : REAL; // Another comment
-      todTest: TIME_OF_DAY := TOD#12:55;
-    END_VAR
-    a := csq(12.5);
-    IF a > REAL#100 - 16#FAC0 + 2#1001_0110 THEN
-      Start_Stop := TRUE;
-    END_IF
-END_PROGRAM;
-  
-FUNCTION_BLOCK PRIVATE MyName EXTENDS AnotherName
-      
-END_FUNCTION_BLOCK
-
-/* Get a square of the circle */
-FUNCTION csq : REAL 
-    VAR_INPUT
-      r: REAL;
-    END_VAR
-    VAR CONSTANT
-      c_pi: REAL := 3.14;
-    END_VAR
-    csq := ABS(c_pi * (r * 2));
-END_FUNCTION
-
\ No newline at end of file diff --git a/examples/prism-ignore.html b/examples/prism-ignore.html deleted file mode 100644 index 9d15f97863..0000000000 --- a/examples/prism-ignore.html +++ /dev/null @@ -1,7 +0,0 @@ -

Comment

-
# This is a comment
- -

Entry

-
file[1-3].txt
-.configs/**
-!.configs/shared.cfg
diff --git a/examples/prism-inform7.html b/examples/prism-inform7.html deleted file mode 100644 index d4c3b746e1..0000000000 --- a/examples/prism-inform7.html +++ /dev/null @@ -1,161 +0,0 @@ -

Comments

-
[This is a comment]
-[This is a
-multi-line comment]
- -

Texts

-
"This is a string"
-"This is a
-multi-line string"
- -

Numbers

-
42
-3.14159
-50kg
-100m
-one
-three
-twelve
- -

Titles

-
Section 2 - Flamsteed's Balloon
-
-Part SR1 - The Physical World Model
-
-Table of Floors
- -

Standard kinds, verbs and keywords

-
In the Treehouse is a container called the cardboard box.
-The cardboard box is a closed container. The glass bottle is a transparent open container. The box is fixed in place and openable.
-
-Check photographing:
-    if the noun is the camera, say "Sadly impossible." instead.
- -

Text substitution

-
"[if the player is in Center Ring]A magician's booth stands in the corner, painted dark blue with glittering gold stars.[otherwise if the magician's booth is closed]A crack of light indicates the way back out to the center ring.[otherwise]The door stands open to the outside.[end if]".
- -

Full example

-
"Lakeside Living"
-
-A volume is a kind of value. 15.9 fl oz specifies a volume with parts ounces and tenths (optional, preamble optional).
-
-A fluid container is a kind of container. A fluid container has a volume called a fluid capacity. A fluid container has a volume called current volume.
-
-The fluid capacity of a fluid container is usually 12.0 fl oz. The current volume of a fluid container is usually 0.0 fl oz.
-
-Liquid is a kind of value. The liquids are water, absinthe, and iced tea. A fluid container has a liquid.
-
-Instead of examining a fluid container:
-    if the noun is empty,
-        say "You catch just a hint of [the liquid of the noun] at the bottom.";
-    otherwise
-        say "[The noun] contains [current volume of the noun in rough terms] of [liquid of the noun]."
-
-To say (amount - a volume) in rough terms:
-    if the amount is less than 0.5 fl oz:
-        say "a swallow or two";
-    otherwise if tenths part of amount is greater than 3 and tenths part of amount is less than 7:
-        let estimate be ounces part of amount;
-        say "[estimate in words] or [estimate plus 1 in words] fluid ounces";
-    otherwise:
-        if tenths part of amount is greater than 6, increase amount by 1.0 fl oz;
-        say "about [ounces part of amount in words] fluid ounce[s]".
-
-Before printing the name of a fluid container (called the target) while not drinking or pouring:
-    if the target is empty:
-        say "empty ";
-    otherwise:
-        do nothing.
-
-After printing the name of a fluid container (called the target) while not examining or pouring:
-    unless the target is empty:
-        say " of [liquid of the target]";
-        omit contents in listing.
-
-Instead of inserting something into a fluid container:
-    say "[The second noun] has too narrow a mouth to accept anything but liquids."
-
-Definition: a fluid container is empty if the current volume of it is 0.0 fl oz. Definition: a fluid container is full if the current volume of it is the fluid capacity of it.
-
-Understand "drink from [fluid container]" as drinking.
-
-Instead of drinking a fluid container:
-    if the noun is empty:
-        say "There is no more [liquid of the noun] within." instead;
-    otherwise:
-        decrease the current volume of the noun by 0.2 fl oz;
-        if the current volume of the noun is less than 0.0 fl oz, now the current volume of the noun is 0.0 fl oz;
-        say "You take a sip of [the liquid of the noun][if the noun is empty], leaving [the noun] empty[end if]."
-
-Part 2 - Filling
-
-Understand the command "fill" as something new.
-
-Understand "fill [fluid container] with/from [full liquid source]" as filling it with. Understand "fill [fluid container] with/from [fluid container]" as filling it with.
-
-Understand "fill [something] with/from [something]" as filling it with.
-
-Filling it with is an action applying to two things. Carry out filling it with: try pouring the second noun into the noun instead.
-
-Understand "pour [fluid container] in/into/on/onto [fluid container]" as pouring it into. Understand "empty [fluid container] into [fluid container]" as pouring it into.
-
-Understand "pour [something] in/into/on/onto [something]" as pouring it into. Understand "empty [something] into [something]" as pouring it into.
-
-Pouring it into is an action applying to two things.
-
-Check pouring it into:
-    if the noun is not a fluid container, say "You can't pour [the noun]." instead;
-    if the second noun is not a fluid container, say "You can't pour liquids into [the second noun]." instead;
-    if the noun is the second noun, say "You can hardly pour [the noun] into itself." instead;
-    if the liquid of the noun is not the liquid of the second noun:
-        if the second noun is empty, now the liquid of the second noun is the liquid of the noun;
-        otherwise say "Mixing [the liquid of the noun] with [the liquid of the second noun] would give unsavory results." instead;
-    if the noun is empty, say "No more [liquid of the noun] remains in [the noun]." instead;
-    if the second noun is full, say "[The second noun] cannot contain any more than it already holds." instead.
-
-Carry out pouring it into:
-    let available capacity be the fluid capacity of the second noun minus the current volume of the second noun;
-    if the available capacity is greater than the current volume of the noun, now the available capacity is the current volume of the noun;
-    increase the current volume of the second noun by available capacity;
-    decrease the current volume of the noun by available capacity.
-
-Report pouring it into:
-    say "[if the noun is empty][The noun] is now empty;[otherwise][The noun] now contains [current volume of the noun in rough terms] of [liquid of the noun]; [end if]";
-    say "[the second noun] contains [current volume of the second noun in rough terms] of [liquid of the second noun][if the second noun is full], and is now full[end if]."
-
-Understand the liquid property as describing a fluid container. Understand "of" as a fluid container.
-
-A liquid source is a kind of fluid container. A liquid source has a liquid. A liquid source is usually scenery. The fluid capacity of a liquid source is usually 3276.7 fl oz. The current volume of a liquid source is usually 3276.7 fl oz. Instead of examining a liquid source: say "[The noun] is full of [liquid of the noun]."
-
-Carry out pouring a liquid source into something: now the current volume of the noun is 3276.7 fl oz.
-
-After pouring a liquid source into a fluid container:
-    say "You fill [the second noun] up with [liquid of the noun] from [the noun]."
-
-Instead of pouring a fluid container into a liquid source:
-    if the noun is empty, say "[The noun] is already empty." instead;
-    now the current volume of the noun is 0.0 fl oz;
-    say "You dump out [the noun] into [the second noun]."
-
-Swimming is an action applying to nothing. Understand "swim" or "dive" as swimming.
-
-Instead of swimming in the presence of a liquid source:
-    say "You don't feel like a dip just now."
-
-Before inserting something into a liquid source: say "[The noun] would get lost and never be seen again." instead.
-
-Part 3 - Scenario
-
-The Lakeside is a room. The Lakeside swing is an enterable supporter in the Lakeside. "Here you are by the lake, enjoying a summery view."
-
-The glass is a fluid container carried by the player. The liquid of the glass is absinthe. The current volume of the glass is 0.8 fl oz.
-
-The pitcher is a fluid container in the Lakeside. The fluid capacity of the pitcher is 32.0 fl oz. The current volume of the pitcher is 20.0 fl oz. The liquid of the pitcher is absinthe.
-
-The lake is a liquid source. It is in the Lakeside.
-
-The player wears a bathing outfit. The description of the bathing outfit is "Stylishly striped in blue and white, and daringly cut to reveal almost all of your calves, and quite a bit of upper arm, as well. You had a moral struggle, purchasing it; but mercifully the lakeshore is sufficiently secluded that no one can see you in this immodest apparel."
-
-Instead of taking off the outfit: say "What odd ideas come into your head sometimes!"
-
-Test me with "fill glass / empty absinthe into lake / fill glass / swim / drink lake / drink / x water / x lake". 
diff --git a/examples/prism-ini.html b/examples/prism-ini.html deleted file mode 100644 index 284fbe440c..0000000000 --- a/examples/prism-ini.html +++ /dev/null @@ -1,10 +0,0 @@ -

Comments

-
; This is a comment
- -

Section title

-
[owner]
-[database]
- -

Properties

-
name=prism
-file="somefile.txt"
\ No newline at end of file diff --git a/examples/prism-io.html b/examples/prism-io.html deleted file mode 100644 index ff5160a43d..0000000000 --- a/examples/prism-io.html +++ /dev/null @@ -1,31 +0,0 @@ -

Comments

-
//
-// Foobar
-#!/usr/bin/env io
-/* multiline
-comment
-*/
- -

Strings

-
"this is a \"test\".\nThis is only a test."
-"""this is a "test".
-This is only a test."""
- -

Numbers

-
123
-123.456
-0.456
-123e-4
-123e4
-123.456e-7
-123.456e2
-
- -

Full example

-
"Hello, world!" println
-A := Object clone    // creates a new, empty object named "A"
-factorial := method(n,
-    if(n == 0, return 1)
-    res := 1
-    Range 1 to(n) foreach(i, res = res * i)
-)
diff --git a/examples/prism-j.html b/examples/prism-j.html deleted file mode 100644 index 0227e31fd0..0000000000 --- a/examples/prism-j.html +++ /dev/null @@ -1,59 +0,0 @@ -

Comments

-
NB. This is a comment
- -

Strings

-
'This is a string.'
-'This is a string with ''quotes'' in it.'
- -

Numbers

-
2.3e2 2.3e_2 2j3
-2p1 1p_1
-1x2 2x1 1x_1
-2e2j_2e2 2e2j2p1 2ad45 2ar0.785398
-16b1f 10b23 _10b23 1e2b23 2b111.111
- -

Verbs

-
%4
-3%4
-,b
-'I';'was';'here'
-3 5$'wake read lamp '
- -

Adverbs

-
1 2 3 */ 4 5 6 7
-'%*'(1 3;2 _1)} y
- -

Conjunctions

-
10&^. 2 3 10 100 200
-+`*
-+:@*: +/ -:@%:
- -

Examples

-
NB. The following functions E1, E2 and E3
-NB. interchange two rows of a matrix,
-NB. multiply a row by a constant,
-NB. and add a multiple of one row to another:
-
-E1=: <@] C. [
-E2=: f`g`[}
-E3=: F`g`[}
-f=: {:@] * {.@] { [
-F=: [: +/ (1:,{:@]) * (}:@] { [)
-g=: {.@]
-M=: i. 4 5
-M;(M E1 1 3);(M E2 1 10);(M E3 1 3 10)
- -
NB. Implementation of quicksort
-
-sel=: adverb def 'u # ['
-
-quicksort=: verb define
-  if. 1 >: #y do. y
-  else.
-    (quicksort y <sel e),(y =sel e),quicksort y >sel e=.y{~?#y
-  end.
-)
- -
NB. Implementation of quicksort (tacit programming)
-
-quicksort=: (($:@(<#[), (=#[), $:@(>#[)) ({~ ?@#)) ^: (1<#)
diff --git a/examples/prism-java.html b/examples/prism-java.html deleted file mode 100644 index 277a1ab12b..0000000000 --- a/examples/prism-java.html +++ /dev/null @@ -1,65 +0,0 @@ -

Comments

-
// Single line comment
-/* Multi-line
-comment */
- -

Strings

-
"foo \"bar\" baz";
-'foo \'bar\' baz';
- -

Numbers

-
123
-123.456
--123.456
-.3f
-1.3e9d
-0xaf
-0xAF
-0xFF.AEP-4
-
- -

Full example

-
import java.util.Scanner;
-
-public class Life {
-
-    @Override @Bind("One")
-    public void show(boolean[][] grid){
-        String s = "";
-        for(boolean[] row : grid){
-            for(boolean val : row)
-                if(val)
-                    s += "*";
-                else
-                    s += ".";
-            s += "\n";
-        }
-        System.out.println(s);
-    }
-
-    public static boolean[][] gen(){
-        boolean[][] grid = new boolean[10][10];
-        for(int r = 0; r < 10; r++)
-            for(int c = 0; c < 10; c++)
-                if( Math.random() > 0.7 )
-                    grid[r][c] = true;
-        return grid;
-    }
-
-    public static void main(String[] args){
-        boolean[][] world = gen();
-        show(world);
-        System.out.println();
-        world = nextGen(world);
-        show(world);
-        Scanner s = new Scanner(System.in);
-        while(s.nextLine().length() == 0){
-            System.out.println();
-            world = nextGen(world);
-            show(world);
-
-        }
-    }
-
-	// [...]
-}
diff --git a/examples/prism-javadoc.html b/examples/prism-javadoc.html deleted file mode 100644 index 4e809797bd..0000000000 --- a/examples/prism-javadoc.html +++ /dev/null @@ -1,29 +0,0 @@ -

Full example

-
/**
- * Returns the value to which the specified key is mapped,
- * or {@code null} if this map contains no mapping for the key.
- *
- * <p>More formally, if this map contains a mapping from a key
- * {@code k} to a value {@code v} such that {@code (key==null ? k==null :
- * key.equals(k))}, then this method returns {@code v}; otherwise
- * it returns {@code null}.  (There can be at most one such mapping.)
- *
- * <p>If this map permits null values, then a return value of
- * {@code null} does not <i>necessarily</i> indicate that the map
- * contains no mapping for the key; it's also possible that the map
- * explicitly maps the key to {@code null}.  The {@link #containsKey
- * containsKey} operation may be used to distinguish these two cases.
- *
- * @param key the key whose associated value is to be returned
- * @return the value to which the specified key is mapped, or
- *         {@code null} if this map contains no mapping for the key
- * @throws ClassCastException if the key is of an inappropriate type for
- *         this map
- * (<a href="{@docRoot}/java/util/Collection.html#optional-restrictions">optional</a>)
- * @throws NullPointerException if the specified key is null and this map
- *         does not permit null keys
- * (<a href="{@docRoot}/java/util/Collection.html#optional-restrictions">optional</a>)
- */
-V get(Object key);
-
-// Source: Java 1.8, Map#get(Object)
diff --git a/examples/prism-javascript.html b/examples/prism-javascript.html deleted file mode 100644 index f073b65de0..0000000000 --- a/examples/prism-javascript.html +++ /dev/null @@ -1,66 +0,0 @@ -

Variable assignment

-
var foo = "bar", baz = 5;
- -

Operators

-
(1 + 2 * 3)/4 >= 3 && 4 < 5 || 6 > 7
- -

Indented code

-
if (true) {
-	while (true) {
-		doSomething();
-	}
-}
- -

Regex with slashes

-
var foo = /([^/])\/(\\?.|\[.+?])+?\/[gim]{0,3}/g;
- -

Regex that ends with double slash

-
var bar = /\/\*[\w\W]*?\*\//g;
- -

Single line comments & regexes

-
// http://lea.verou.me
-var comment = /\/\*[\w\W]*?\*\//g;
- -

Link in comment

-
// http://lea.verou.me
-/* http://lea.verou.me */
- -

Nested strings

-
var foo = "foo", bar = "He \"said\" 'hi'!"
- -

Strings inside comments

-
// "foo"
-/* "foo" */
- -

Strings with slashes

-
env.content + '</' + env.tag + '>'
-var foo = "/" + "/";
-var foo = "http://prismjs.com"; // Strings are strings and comments are comments ;)
- -

Regex inside single line comment

-
// hey, /this doesn’t fail!/ :D
- -

Two or more division operators on the same line

-
var foo = 5 / 6 / 7;
- -

A division operator on the same line as a regex

-
var foo = 1/2, bar = /a/g;
-var foo = /a/, bar = 3/4;
- -

ES6 features

-
// Regex "y" and "u" flags
-var a = /[a-zA-Z]+/gimyu;
-
-// for..of loops
-for(let x of y) { }
-
-// Modules: import
-import { foo as bar } from "file.js"
-
-// Template strings
-`Only on ${y} one line`
-`This template string ${x} is on
-
-multiple lines.`
-`40 + 2 = ${ 40 + 2 }`
-`The squares of the first 3 natural integers are ${[for (x of [1,2,3]) x*x].join(', ')}`
diff --git a/examples/prism-javastacktrace.html b/examples/prism-javastacktrace.html deleted file mode 100644 index 3511aa6ae5..0000000000 --- a/examples/prism-javastacktrace.html +++ /dev/null @@ -1,63 +0,0 @@ -

Full example

-
javax.servlet.ServletException: Something bad happened
-    at com.example.myproject.OpenSessionInViewFilter.doFilter(OpenSessionInViewFilter.java:60)
-    at org.mortbay.jetty.servlet.ServletHandler$CachedChain.doFilter(ServletHandler.java:1157)
-    at com.example.myproject.ExceptionHandlerFilter.doFilter(ExceptionHandlerFilter.java:28)
-    at org.mortbay.jetty.servlet.ServletHandler$CachedChain.doFilter(ServletHandler.java:1157)
-    at com.example.myproject.OutputBufferFilter.doFilter(OutputBufferFilter.java:33)
-    at org.mortbay.jetty.servlet.ServletHandler$CachedChain.doFilter(ServletHandler.java:1157)
-    at org.mortbay.jetty.servlet.ServletHandler.handle(ServletHandler.java:388)
-    at org.mortbay.jetty.security.SecurityHandler.handle(SecurityHandler.java:216)
-    at org.mortbay.jetty.servlet.SessionHandler.handle(SessionHandler.java:182)
-    at org.mortbay.jetty.handler.ContextHandler.handle(ContextHandler.java:765)
-    at org.mortbay.jetty.webapp.WebAppContext.handle(WebAppContext.java:418)
-    at org.mortbay.jetty.handler.HandlerWrapper.handle(HandlerWrapper.java:152)
-    at org.mortbay.jetty.Server.handle(Server.java:326)
-    at org.mortbay.jetty.HttpConnection.handleRequest(HttpConnection.java:542)
-    at org.mortbay.jetty.HttpConnection$RequestHandler.content(HttpConnection.java:943)
-    at org.mortbay.jetty.HttpParser.parseNext(HttpParser.java:756)
-    at org.mortbay.jetty.HttpParser.parseAvailable(HttpParser.java:218)
-    at org.mortbay.jetty.HttpConnection.handle(HttpConnection.java:404)
-    at org.mortbay.jetty.bio.SocketConnector$Connection.run(SocketConnector.java:228)
-    at org.mortbay.thread.QueuedThreadPool$PoolThread.run(QueuedThreadPool.java:582)
-Caused by: com.example.myproject.MyProjectServletException
-    at com.example.myproject.MyServlet.doPost(MyServlet.java:169)
-    at javax.servlet.http.HttpServlet.service(HttpServlet.java:727)
-    at javax.servlet.http.HttpServlet.service(HttpServlet.java:820)
-    at org.mortbay.jetty.servlet.ServletHolder.handle(ServletHolder.java:511)
-    at org.mortbay.jetty.servlet.ServletHandler$CachedChain.doFilter(ServletHandler.java:1166)
-    at com.example.myproject.OpenSessionInViewFilter.doFilter(OpenSessionInViewFilter.java:30)
-    ... 27 more
-Suppressed: org.hibernate.exception.ConstraintViolationException: could not insert: [com.example.myproject.MyEntity]
-    at org.hibernate.exception.SQLStateConverter.convert(SQLStateConverter.java:96)
-    at org.hibernate.exception.JDBCExceptionHelper.convert(JDBCExceptionHelper.java:66)
-    at org.hibernate.id.insert.AbstractSelectingDelegate.performInsert(AbstractSelectingDelegate.java:64)
-    at org.hibernate.persister.entity.AbstractEntityPersister.insert(AbstractEntityPersister.java:2329)
-    at org.hibernate.persister.entity.AbstractEntityPersister.insert(AbstractEntityPersister.java:2822)
-    at org.hibernate.action.EntityIdentityInsertAction.execute(EntityIdentityInsertAction.java:71)
-    at org.hibernate.engine.ActionQueue.execute(ActionQueue.java:268)
-    at org.hibernate.event.def.AbstractSaveEventListener.performSaveOrReplicate(AbstractSaveEventListener.java:321)
-    at org.hibernate.event.def.AbstractSaveEventListener.performSave(AbstractSaveEventListener.java:204)
-    at org.hibernate.event.def.AbstractSaveEventListener.saveWithGeneratedId(AbstractSaveEventListener.java:130)
-    at org.hibernate.event.def.DefaultSaveOrUpdateEventListener.saveWithGeneratedOrRequestedId(DefaultSaveOrUpdateEventListener.java:210)
-    at org.hibernate.event.def.DefaultSaveEventListener.saveWithGeneratedOrRequestedId(DefaultSaveEventListener.java:56)
-    at org.hibernate.event.def.DefaultSaveOrUpdateEventListener.entityIsTransient(DefaultSaveOrUpdateEventListener.java:195)
-    at org.hibernate.event.def.DefaultSaveEventListener.performSaveOrUpdate(DefaultSaveEventListener.java:50)
-    at org.hibernate.event.def.DefaultSaveOrUpdateEventListener.onSaveOrUpdate(DefaultSaveOrUpdateEventListener.java:93)
-    at org.hibernate.impl.SessionImpl.fireSave(SessionImpl.java:705)
-    at org.hibernate.impl.SessionImpl.save(SessionImpl.java:693)
-    at org.hibernate.impl.SessionImpl.save(SessionImpl.java:689)
-    at sun.reflect.GeneratedMethodAccessor5.invoke(Unknown Source)
-    at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:25)
-    at java.lang.reflect.Method.invoke(Method.java:597)
-    at org.hibernate.context.ThreadLocalSessionContext$TransactionProtectionWrapper.invoke(ThreadLocalSessionContext.java:344)
-    at $Proxy19.save(Unknown Source)
-    at com.example.myproject.MyEntityService.save(MyEntityService.java:59) <-- relevant call (see notes below)
-    at com.example.myproject.MyServlet.doPost(MyServlet.java:164)
-    ... 32 more
-Caused by: java.sql.SQLException: Violation of unique constraint MY_ENTITY_UK_1: duplicate value(s) for column(s) MY_COLUMN in statement [...]
-    at org.hsqldb.jdbc.Util.throwError(Unknown Source)
-    at org.hsqldb.jdbc.jdbcPreparedStatement.executeUpdate(Unknown Source)
-    at com.mchange.v2.c3p0.impl.NewProxyPreparedStatement.executeUpdate(NewProxyPreparedStatement.java:105)
-    at org.hibernate.id.insert.AbstractSelectingDelegate.performInsert(AbstractSelectingDelegate.java:57)
-    ... 54 more
diff --git a/examples/prism-jexl.html b/examples/prism-jexl.html deleted file mode 100644 index 0c5a77e916..0000000000 --- a/examples/prism-jexl.html +++ /dev/null @@ -1,8 +0,0 @@ -

Full example

-

-[
-  fun(1,2),
-  { obj: "1" }.obj,
-  ctx|transform
-]|join(", ")
-
diff --git a/examples/prism-jolie.html b/examples/prism-jolie.html deleted file mode 100644 index 9a35b009e1..0000000000 --- a/examples/prism-jolie.html +++ /dev/null @@ -1,162 +0,0 @@ -

Comments

-
// Single line comment
-/* Multi-line
-comment */
- -

Strings

-
"foo \"bar\" baz";
-'foo \'bar\' baz'
- -

Numbers

-
42
-42L
-1.2e3
-0.1E-4
-0.2e+1
-
- -

Full example

-
include "console.iol"
-
-type HubType: void {
-  .sid: undefined
-  .nodes[1,*] : NodeType
-}
-
-type NodeType: void {
-  .sid: string
-  .node: string
-  .load?: int
-}
-
-type NetType: HubType | NodeType
-
-interface NetInterface {
-  OneWay: start( string ), addElement( NetType ), removeElement( NetType ), quit( void )
-  RequestResponse: showElements( void )( NetType ) throws SomeFault
-}
-
-type LogType: void {
-  .message: string
-}
-
-interface LoggerInterface {
-  RequestResponse: log( LogType )( void )
-}
-
-outputPort LoggerService {
-    Interfaces: LoggerInterface
-}
-
-embedded {
-  Jolie: "logger.ol" in LoggerService
-}
-
-type AuthenticationData: void {
-    .key:string
-}
-
-interface extender AuthInterfaceExtender {
-    OneWay: *(AuthenticationData)
-}
-
-service SubService
-{
-  Interfaces: NetInterface
-
-  main
-  {
-     println@Console( "I do nothing" )()
-  }
-}
-
-inputPort ExtLogger {
-  Location: "socket://localhost:9000"
-  Protocol: sodep
-  Interfaces: LoggerInterface
-  Aggregates: LoggerService with AuthInterfaceExtender
-}
-
-courier ExtLogger {
-  [interface LoggerInterface( request )] {
-    if ( key == "secret" ){
-      forward ( request )
-    }
-  }
-}
-
-inputPort In {
-  Location: "socket://localhost:8000"
-  Protocol: http {
-    .debug = true;
-    .debug.showContent = true
-  }
-  Interfaces: NetInterface
-  Aggregates: SubService,
-              LoggerService
-  Redirects: A => SubService,
-             B => SubService
-}
-
-cset {
-  sid: HubType.sid NodeType.sid
-}
-
-execution{ concurrent }
-
-define netmodule {
-  if( request.load == 0 || request.load < 1 &&
-      request.load <= 2 || request.load >= 3 &&
-      request.load > 4  || request.load%4 == 2
-  ) {
-    scope( scopeName ) {
-      // inline comment
-      install( MyFault => println@Console( "Something \"Went\" Wrong" + ' but it\'s ok' )() );
-      /*
-      * Multi-line
-      * Comment
-      */
-      install( this => cH; println@Console( "Something went wrong: " + ^load )() );
-      install( default => comp( scopeName ); println@Console( "Something went wrong" )() );
-      load -> request.( "load" );
-      { ++load | load++ | --load | load-- };
-      throw( MyFault )
-    }
-  } else {
-    foreach ( node -> request.nodes ) {
-      with( node ){
-        while( .load != 100 ) {
-          .load++
-        }
-      }
-    }
-  }
-}
-
-main
-{
-  start( sid );
-  synchronized( unneededSync ){
-    csets.sid = sid;
-    undef( sid )
-  };
-  provide
-    [ addElement( request ) ]{
-      if( request instanceof NodeType ) {
-        netmodule
-      }
-    }
-    [ removeElement() ]
-    [ showElements()( response ){
-       /*
-       * assemble response
-       */
-       nullProcess
-     }]{
-       // log the request
-       log@LoggerService( new )();
-       log @ LoggerService( new )()
-     }
-  until
-   [ quit() ]{ exit }
-}
diff --git a/examples/prism-jq.html b/examples/prism-jq.html deleted file mode 100644 index 53aead9b7a..0000000000 --- a/examples/prism-jq.html +++ /dev/null @@ -1,11 +0,0 @@ -

Full example

-
# comment
-def some_method:
-	to_entries | sort_by(.foo) |
-	map(.foo) as $keys |
-	map(.bar) | transpose |
-	map(
-		[$keys, .] | transpose |
-		map({foo: .[0], bar: .[1], "foo-bar": "foo\("-" + "bar")"}) | from_entries
-	)
-;
diff --git a/examples/prism-js-extras.html b/examples/prism-js-extras.html deleted file mode 100644 index fa3ea9b5a0..0000000000 --- a/examples/prism-js-extras.html +++ /dev/null @@ -1,20 +0,0 @@ -

Support built-in JS classes

-
Math.sin();
-Number.isNaN();
-Object.keys();
-
-// and many more
- -

DOM variables

-
document.querySelectorAll();
-window.parent;
-location.href;
-performance.now();
-
-// and many more
- -

console

-
console.log();
- -

Invisible changes

-

The goal of JS Extras is to make the tokenization of JavaScript more granular to allow for more customization in your themes. To to do this, JS Extras adds many new tokens and given existing tokens new aliases. These new tokens and aliases can be used by your theme but aren't supported by Prism's default themes and therefore invisible.

diff --git a/examples/prism-js-templates.html b/examples/prism-js-templates.html deleted file mode 100644 index e1fd09dc6c..0000000000 --- a/examples/prism-js-templates.html +++ /dev/null @@ -1,25 +0,0 @@ -

HTML template literals

-
html`
-<p>
-	Foo.
-</p>`;
- -

JS DOM

-
div.innerHTML = `<p></p>`;
-div.outerHTML = `<p></p>`;
- -

styled-jsx CSS template literals

-
css`a:hover { color: blue; }`;
- -

styled-components CSS template literals

-
const Button = styled.button`
-	color: blue;
-	background: red;
-`;
- -

Markdown template literals

-
markdown`# My title`;
- -

GraphQL template literals

-
gql`{ foo }`;
-graphql`{ foo }`;
diff --git a/examples/prism-jsdoc.html b/examples/prism-jsdoc.html deleted file mode 100644 index 85a7442972..0000000000 --- a/examples/prism-jsdoc.html +++ /dev/null @@ -1,21 +0,0 @@ -

Full example

-
/**
- * @typedef {object} Foo
- * @property {string} bar
- * @memberof Baz
- */
-
-/**
- * Trims the given string.
- *
- * @param {string} [str=""] the string.
- * @returns {string} the trimmed string.
- * @throws {TypeError} if the argument is not a string.
- * @example trim(" hello ")
- */
-function trim(str = "") {
-	if (typeof str != "string") {
-		throw new TypeError("str has to be a string");
-	}
-	return str.trim();
-}
diff --git a/examples/prism-json.html b/examples/prism-json.html deleted file mode 100644 index 027f9310f7..0000000000 --- a/examples/prism-json.html +++ /dev/null @@ -1,16 +0,0 @@ -

Full example

-
{
-    "data": {
-        "labels": [
-            "foo",
-            "bar"
-        ],
-        "series": [
-            [ 0, 1, 2, 3 ],
-            [ 0, -4, -8, -12 ]
-        ]
-    },
-    // we even support comments
-    "error": null,
-    "status": "Ok"
-}
diff --git a/examples/prism-json5.html b/examples/prism-json5.html deleted file mode 100644 index 544e175043..0000000000 --- a/examples/prism-json5.html +++ /dev/null @@ -1,13 +0,0 @@ -

Full example

-
{
-  // comments
-  unquoted: 'and you can quote me on that',
-  singleQuotes: 'I can use "double quotes" here',
-  lineBreaks: "Look, Mom! \
-No \\n's!",
-  hexadecimal: 0xdecaf,
-  leadingDecimalPoint: .8675309, andTrailing: 8675309.,
-  positiveSign: +1,
-  trailingComma: 'in objects', andIn: ['arrays',],
-  "backwardsCompatible": "with JSON",
-}
diff --git a/examples/prism-jsonp.html b/examples/prism-jsonp.html deleted file mode 100644 index 5de6ffa882..0000000000 --- a/examples/prism-jsonp.html +++ /dev/null @@ -1,2 +0,0 @@ -

Callbacks

-
callback({ "data": null });
diff --git a/examples/prism-jsstacktrace.html b/examples/prism-jsstacktrace.html deleted file mode 100644 index f67f68de34..0000000000 --- a/examples/prism-jsstacktrace.html +++ /dev/null @@ -1,99 +0,0 @@ -

Full example

-
(node:40780) DeprecationWarning: Using Buffer without `new` will soon stop working. Use `new Buffer()`, or preferably `Buffer.from()`, `Buffer.allocUnsafe()` or `Buffer.alloc()` instead.
-    at Buffer (buffer.js:79:13)
-    at repl:1:1
-    at sigintHandlersWrap (vm.js:22:35)
-    at sigintHandlersWrap (vm.js:96:12)
-    at ContextifyScript.Script.runInThisContext (vm.js:21:12)
-    at REPLServer.defaultEval (repl.js:313:29)
-    at bound (domain.js:280:14)
-    at REPLServer.runBound [as eval] (domain.js:293:12)
-    at REPLServer.onLine (repl.js:513:10)
-    at emitOne (events.js:101:20)
-
-Error: custom error
-    at Server.<anonymous> (/trace/showcases/http.js:4:9)
-    at emitTwo (events.js:106:13)
-    at Server.emit (events.js:191:7)
-    at HTTPParser.parserOnIncoming [as onIncoming] (_http_server.js:543:12)
-    at HTTPParser.parserOnHeadersComplete (_http_common.js:105:23)
-    at new <anonymous> (_http_common.js:159:16)
-    at exports.FreeList.alloc (internal/freelist.js:14:46)
-    at Server.connectionListener (_http_server.js:316:24)
-    at emitOne (events.js:96:13)
-    at Server.emit (events.js:188:7)
-    at TCP.onconnection (net.js:1460:8)
-    at createServerHandle (net.js:1181:14)
-    at Server._listen2 (net.js:1225:14)
-    at listen (net.js:1290:10)
-    at Server.listen (net.js:1386:5)
-    at Object.<anonymous> (/trace/showcases/http.js:5:4)
-    at Module._compile (module.js:541:32)
-    at Object.Module._extensions..js (module.js:550:10)
-    at Module.load (module.js:458:32)
-    at tryModuleLoad (module.js:417:12)
-    at Function.Module._load (module.js:409:3)
-    at Module.runMain (module.js:575:10)
-    at run (bootstrap_node.js:340:7)
-    at startup (bootstrap_node.js:132:9)
-    at bootstrap_node.js:455:3
-
-
-Error: custom error
-    at /trace/showcases/basic.js:7:13
-    at _combinedTickCallback (internal/process/next_tick.js:67:7)
-    at process._tickCallback (internal/process/next_tick.js:98:9)
-    at InternalFieldObject.ondone (/trace/showcases/basic.js:6:13)
-    at /trace/showcases/basic.js:5:10
-    at FSReqWrap.readFileAfterClose [as oncomplete] (fs.js:445:3)
-    at ReadFileContext.close (fs.js:358:11)
-    at FSReqWrap.readFileAfterRead [as oncomplete] (fs.js:414:15)
-    at ReadFileContext.read (fs.js:342:11)
-    at FSReqWrap.readFileAfterStat [as oncomplete] (fs.js:398:11)
-    at FSReqWrap.readFileAfterOpen [as oncomplete] (fs.js:374:11)
-    at Object.fs.readFile (fs.js:303:11)
-    at Object.<anonymous> (/trace/showcases/basic.js:4:4)
-    at Module._compile (module.js:541:32)
-    at Object.Module._extensions..js (module.js:550:10)
-    at Module.load (module.js:458:32)
-    at tryModuleLoad (module.js:417:12)
-    at Function.Module._load (module.js:409:3)
-    at Module.runMain (module.js:575:10)
-    at run (bootstrap_node.js:340:7)
-    at startup (bootstrap_node.js:132:9)
-    at bootstrap_node.js:455:3
-
-
-BulkWriteError: E11000 duplicate key error collection: test.test index: _id_ dup key: { : 1 }
-    at OrderedBulkOperation.handleWriteError (/workspace/node_modules/mongodb/lib/bulk/common.js:1048:11)
-    at resultHandler (/workspace/node_modules/mongodb/lib/bulk/ordered.js:159:23)
-    at /workspace/node_modules/mongodb/node_modules/mongodb-core/lib/connection/pool.js:532:18
-    at _combinedTickCallback (internal/process/next_tick.js:131:7)
-    at process._tickCallback (internal/process/next_tick.js:180:9)
-
-Error
-    at Collection.(anonymous function) [as insertMany] (/workspace/node_modules/monogram/lib/collection.js:80:21)
-    at insert (/workspace/test.js:14:31)
-    at run (/workspace/test.js:9:9)
-    at <anonymous>
-    at process._tickCallback (internal/process/next_tick.js:188:7)
-
-Error
-    at Collection.(anonymous function) [as insertMany] (/workspace/node_modules/monogram/lib/collection.js:80:21)
-    at insert (/workspace/test.js:15:31)
-    at processTicksAndRejections (internal/process/next_tick.js:81:5)
-
-
-Deno:
-
-Error: Some error
-    at throwsA (<unknown>:1:23)
-    at <unknown>:1:13
-    at evaluate ($deno$/repl.ts:64:34)
-    at Object.replLoop ($deno$/repl.ts:153:13)
-
-Uncaught NotFound: No such file or directory (os error 2)
-    at DenoError (deno/js/errors.ts:22:5)
-    at maybeError (deno/js/errors.ts:41:12)
-    at handleAsyncMsgFromRust (deno/js/dispatch.ts:27:17)
-
diff --git a/examples/prism-jsx.html b/examples/prism-jsx.html deleted file mode 100644 index faff492034..0000000000 --- a/examples/prism-jsx.html +++ /dev/null @@ -1,18 +0,0 @@ -

Full example

-
var ExampleApplication = React.createClass({
-    render: function() {
-      var elapsed = Math.round(this.props.elapsed  / 100);
-      var seconds = elapsed / 10 + (elapsed % 10 ? '' : '.0' );
-      var message =
-        'React has been successfully running for ' + seconds + ' seconds.';
-
-      return <p>{message}</p>;
-    }
-  });
-  var start = new Date().getTime();
-  setInterval(function() {
-    React.render(
-      <ExampleApplication elapsed={new Date().getTime() - start} />,
-      document.getElementById('container')
-    );
-  }, 50);
diff --git a/examples/prism-julia.html b/examples/prism-julia.html deleted file mode 100644 index b69d0454f8..0000000000 --- a/examples/prism-julia.html +++ /dev/null @@ -1,29 +0,0 @@ -

Full example

-
function mandel(z)
-    c = z
-    maxiter = 80
-    for n = 1:maxiter
-        if abs(z) > 2
-            return n-1
-        end
-        z = z^2 + c
-    end
-    return maxiter
-end
-
-function randmatstat(t)
-    n = 5
-    v = zeros(t)
-    w = zeros(t)
-    for i = 1:t
-        a = randn(n,n)
-        b = randn(n,n)
-        c = randn(n,n)
-        d = randn(n,n)
-        P = [a b c d]
-        Q = [a b; c d]
-        v[i] = trace((P.'*P)^4)
-        w[i] = trace((Q.'*Q)^4)
-    end
-    std(v)/mean(v), std(w)/mean(w)
-end
\ No newline at end of file diff --git a/examples/prism-keepalived.html b/examples/prism-keepalived.html deleted file mode 100644 index c8bc961c8f..0000000000 --- a/examples/prism-keepalived.html +++ /dev/null @@ -1,130 +0,0 @@ -

A example from keepalived document

-

-# Configuration File for keepalived
-global_defs {
-    notification_email {
-        admin@domain.com
-        0633225522@domain.com
-    }
-    notification_email_from keepalived@domain.com
-    smtp_server 192.168.200.20
-    smtp_connect_timeout 30
-    router_id LVS_MAIN
-}
-
-# VRRP Instances definitions
-vrrp_instance VI_1 {
-    state MASTER
-    interface eth0
-    virtual_router_id 51
-    priority 150
-    advert_int 1
-    authentication {
-        auth_type PASS
-        auth_pass k@l!ve1
-    }
-    virtual_ipaddress {
-        192.168.200.10
-        192.168.200.11
-    }
-}
-vrrp_instance VI_2 {
-    state MASTER
-    interface eth1
-    virtual_router_id 52
-    priority 150
-    advert_int 1
-    authentication {
-        auth_type PASS
-        auth_pass k@l!ve2
-    }
-    virtual_ipaddress {
-        192.168.100.10
-    }
-}
-vrrp_instance VI_3 {
-    state BACKUP
-    interface eth0
-    virtual_router_id 53
-    priority 100
-    advert_int 1
-    authentication {
-        auth_type PASS
-        auth_pass k@l!ve3
-    }
-    virtual_ipaddress {
-        192.168.200.12
-        192.168.200.13
-    }
-}
-vrrp_instance VI_4 {
-    state BACKUP
-    interface eth1
-    virtual_router_id 54
-    priority 100
-    advert_int 1
-    authentication {
-        auth_type PASS
-        auth_pass k@l!ve4
-    }
-    virtual_ipaddress {
-        192.168.100.11
-    }
-}
-# Virtual Servers definitions
-virtual_server 192.168.200.10 80 {
-    delay_loop 30
-    lb_algo wrr
-    lb_kind NAT
-    persistence_timeout 50
-    protocol TCP
-    sorry_server 192.168.100.100 80
-    real_server 192.168.100.2 80 {
-        weight 2
-        HTTP_GET {
-            url {
-                path /testurl/test.jsp
-                digest ec90a42b99ea9a2f5ecbe213ac9eba03
-            }
-            url {
-                path /testurl2/test.jsp
-                digest 640205b7b0fc66c1ea91c463fac6334c
-            }
-            connect_timeout 3
-            retry 3
-            delay_before_retry 2
-        }
-    }
-    real_server 192.168.100.3 80 {
-        weight 1
-        HTTP_GET {
-            url {
-                path /testurl/test.jsp
-                digest 640205b7b0fc66c1ea91c463fac6334c
-            }
-            connect_timeout 3
-            retry 3
-            delay_before_retry 2
-        }
-    }
-}
-virtual_server 192.168.200.12 443 {
-    delay_loop 20
-    lb_algo rr
-    lb_kind NAT
-    persistence_timeout 360
-    protocol TCP
-    real_server 192.168.100.2 443 {
-        weight 1
-        TCP_CHECK {
-            connect_timeout 3
-        }
-    }
-    real_server 192.168.100.3 443 {
-        weight 1
-        TCP_CHECK {
-            connect_timeout 3
-        }
-    }
-}
-
\ No newline at end of file diff --git a/examples/prism-keyman.html b/examples/prism-keyman.html deleted file mode 100644 index 770827d586..0000000000 --- a/examples/prism-keyman.html +++ /dev/null @@ -1,107 +0,0 @@ -

Comments

-
c This is a comment
- -

Strings, numbers and characters

-
"'this' is a string"
-'and so is "this"'
-U+0041 d65 x41   c these are all the letter A
-
- -

Prefixes and Virtual Keys

- -

-c Match RAlt+E on desktops, Ctrl+Alt+E on web because L/R Alt not consistently supported in browsers.
-$KeymanOnly: + [RALT K_E] > "€"
-$KeymanWeb: + [CTRL ALT K_E] > "€"
-
- -

Example Code

- -
c =====================Begin Identity Section===================================================
-c 
-c Mnemonic input method for Amharic script on US-QWERTY
-c keyboards for Keyman version 7.1, compliant with Unicode 4.1 and later.
-c 
-
-store(&VERSION) '9.0'
-store(&Name) "Amharic"
-c store(&MnemonicLayout) "1"
-store(&CapsAlwaysOff) "1"
-store(&Copyright) "Creative Commons Attribution 3.0"
-store(&Message) "This is an Amharic language mnemonic input method for Ethiopic script that requires Unicode 4.1 support."
-store(&WINDOWSLANGUAGES) 'x045E x045E'
-store(&LANGUAGE) 'x045E'
-store(&EthnologueCode) "amh"
-store(&VISUALKEYBOARD) 'gff-amh-7.kvk'
-store(&KMW_EMBEDCSS) 'gff-amh-7.css'
-HOTKEY "^%A"
-c 
-c =====================End Identity Section=====================================================
-
-c =====================Begin Data Section=======================================================
-
-c ---------------------Maps for Numbers---------------------------------------------------------
-store(ArabOnes) '23456789'
-store(ones)     '፪፫፬፭፮፯፰፱'
-store(tens)     '፳፴፵፶፷፸፹፺'
-store(arabNumbers) '123456789'
-store(ethNumbers) '፩፪፫፬፭፮፯፰፱፲፳፴፵፶፷፸፹፺፻፼'
-store(arabNumbersWithZero) '0123456789'
-store(ColonOrComma) ':,'
-store(ethWordspaceOrComma) '፡፣'
-c ---------------------End Numbers--------------------------------------------------------------
-
-c =====================End Data Section=========================================================
-
-c =====================Begin Functional Section=================================================
-c 
-store(&LAYOUTFILE) 'gff-amh-7_layout.js'
-store(&BITMAP) 'amharic.bmp'
-store(&TARGETS) 'any windows'
-begin Unicode > use(main)
-group(main) using keys    
-
-c ---------------------Input of Numbers---------------------------------------------------------
-
-c Special Rule for Arabic Numerals
-c 
-c The following attempts to auto-correct the use of Ethiopic wordspace and
-c Ethiopic comma within an Arabic numeral context.  Ethiopic wordspace gets
-c used erroneously in time formats and Ethiopic commas as an order of thousands
-c delimiter. The correction context is not known until numerals appear on _both_
-c sides of the punctuation.
-c 
-  any(arabNumbersWithZero) any(ethWordspaceOrComma) + any(arabNumbers) > index(arabNumbersWithZero,1) index(ColonOrComma,2) index(arabNumbers,3)
-
-c Ethiopic Numerals
-
-  "'" + '1' > '፩'
-  "'" + any(ArabOnes) > index(ones,2)
-
-c special cases for multiples of one
-  '፩'  + '0' > '፲'
-  '፲'  + '0' > '፻'
-  '፻'  + '0' > '፲፻'
-  '፲፻' + '0' > '፼'
-  '፼'  + '0' > '፲፼'    
-  '፲፼' + '0' > '፻፼' 
-  '፻፼'  + '0' > '፲፻፼'
-  '፲፻፼' + '0' > '፼፼'
-  '፼፼' + '0' > context beep  c do not go any higher, we could beep here
-
-c upto the order of 100 million
-  any(ones)     + '0' > index(tens,1)
-  any(tens)     + '0' > index(ones,1) '፻'  c Hundreds
-  any(ones)  '፻ '+ '0' > index(tens,1) '፻'  c Thousands
-  any(tens)  '፻' + '0' > index(ones,1) '፼'  c Ten Thousands
-  any(ones)  '፼' + '0' > index(tens,1) '፼'  c Hundred Thousands
-  any(tens)  '፼' + '0' > index(ones,1) '፻፼' c Millions
-  any(ones) '፻፼' + '0' > index(tens,1) '፻፼' c Ten Millions
-  any(tens) '፻፼' + '0' > index(ones,1) '፼፼' c Hundred Millions
-
-c enhance this later, look for something that can copy a match over
-  any(ethNumbers) + any(arabNumbers) > index(ethNumbers,1)  index(ethNumbers,2)
-c ---------------------End Input of Numbers-----------------------------------------------------
-                                            
-c =====================End Functional Section===================================================
-
diff --git a/examples/prism-kotlin.html b/examples/prism-kotlin.html deleted file mode 100644 index 7c8f7b4ee4..0000000000 --- a/examples/prism-kotlin.html +++ /dev/null @@ -1,134 +0,0 @@ -

Numbers

-
123
-123L
-0x0F
-0b00001011
-123.5
-123.5e10
-123.5f
-123.5F
- -

Strings and interpolation

-
'2'
-'\uFF00'
-'\''
-
-"foo $bar \"baz"
-"""
-foo ${40 + 2}
-baz${bar()}
-"""
- -

Labels

-
loop@ for (i in 1..100) {
-  for (j in 1..100) {
-    if (...)
-      break@loop
-  }
-}
- -

Annotations

-
public class MyTest {
-    lateinit var subject: TestSubject
-
-    @SetUp fun setup() {
-        subject = TestSubject()
-    }
-
-    @Test fun test() {
-        subject.method()  // dereference directly
-    }
-}
- -

Full example

-
package com.example.html
-
-interface Element {
-    fun render(builder: StringBuilder, indent: String)
-
-    override fun toString(): String {
-        val builder = StringBuilder()
-        render(builder, "")
-        return builder.toString()
-    }
-}
-
-class TextElement(val text: String): Element {
-    override fun render(builder: StringBuilder, indent: String) {
-        builder.append("$indent$text\n")
-    }
-}
-
-abstract class Tag(val name: String): Element {
-    val children = arrayListOf<Element>()
-    val attributes = hashMapOf<String, String>()
-
-    protected fun initTag<T: Element>(tag: T, init: T.() -> Unit): T {
-        tag.init()
-        children.add(tag)
-        return tag
-    }
-
-    override fun render(builder: StringBuilder, indent: String) {
-        builder.append("$indent<$name${renderAttributes()}>\n")
-        for (c in children) {
-            c.render(builder, indent + "  ")
-        }
-        builder.append("$indent</$name>\n")
-    }
-
-    private fun renderAttributes(): String? {
-        val builder = StringBuilder()
-        for (a in attributes.keySet()) {
-            builder.append(" $a=\"${attributes[a]}\"")
-        }
-        return builder.toString()
-    }
-}
-
-abstract class TagWithText(name: String): Tag(name) {
-    operator fun String.plus() {
-        children.add(TextElement(this))
-    }
-}
-
-class HTML(): TagWithText("html") {
-    fun head(init: Head.() -> Unit) = initTag(Head(), init)
-
-    fun body(init: Body.() -> Unit) = initTag(Body(), init)
-}
-
-class Head(): TagWithText("head") {
-    fun title(init: Title.() -> Unit) = initTag(Title(), init)
-}
-
-class Title(): TagWithText("title")
-
-abstract class BodyTag(name: String): TagWithText(name) {
-    fun b(init: B.() -> Unit) = initTag(B(), init)
-    fun p(init: P.() -> Unit) = initTag(P(), init)
-    fun h1(init: H1.() -> Unit) = initTag(H1(), init)
-    fun a(href: String, init: A.() -> Unit) {
-        val a = initTag(A(), init)
-        a.href = href
-    }
-}
-
-class Body(): BodyTag("body")
-
-class B(): BodyTag("b")
-class P(): BodyTag("p")
-class H1(): BodyTag("h1")
-class A(): BodyTag("a") {
-    public var href: String
-        get() = attributes["href"]!!
-        set(value) {
-            attributes["href"] = value
-        }
-}
-
-fun html(init: HTML.() -> Unit): HTML {
-    val html = HTML()
-    html.init()
-    return html
-}
\ No newline at end of file diff --git a/examples/prism-kumir.html b/examples/prism-kumir.html deleted file mode 100644 index 4d0af70a7f..0000000000 --- a/examples/prism-kumir.html +++ /dev/null @@ -1,61 +0,0 @@ -

Example

- -
алг
-нач
-  | Решение квадратного уравнения.
-  вещ a, b, c
-  вещ таб корни[1:2]
-  цел индекс, число корней
-  вывод "Укажите первый коэффициент: "
-  ввод a
-  вывод нс, "Укажите второй коэффициент: "
-  ввод b
-  вывод нс, "Укажите свободный член: "
-  ввод c
-  решить квур(a, b, c, число корней, корни)
-  если число корней = -1
-    то
-      вывод нс, "Первый коэффициент не может быть равен нулю.", нс
-    иначе
-      если число корней = 0
-        то
-          вывод нс, "Уравнение не имеет корней.", нс
-        иначе
-          если число корней = 1
-            то
-              вывод нс, "Уравнение имеет один корень.", нс
-              вывод "x = ", корни[1], нс
-            иначе
-              вывод нс, "Уравнение имеет два корня.", нс
-              нц для индекс от 1 до число корней шаг 1
-                вывод "x", индекс, " = ", корни[индекс], нс
-              кц
-          все
-      все
-  все
-кон
-
-алг решить квур(арг вещ a, b, c, арг рез цел число корней, арг рез вещ таб корни[1:2])
-нач
-  вещ дискриминант
-  если a = 0
-    то
-      число корней := -1
-    иначе
-      дискриминант := b**2 - 4 * a * c
-      если дискриминант > 0
-        то
-          корни[1] := (-b - sqrt(дискриминант)) / (2 * a)
-          корни[2] := (-b + sqrt(дискриминант)) / (2 * a)
-          число корней := 2
-        иначе
-          если дискриминант = 0
-            то
-              корни[1] := -b / (2 * a)
-              число корней := 1
-            иначе
-              число корней := 0
-          все
-      все
-  все
-кон
diff --git a/examples/prism-kusto.html b/examples/prism-kusto.html deleted file mode 100644 index aa2fd81d60..0000000000 --- a/examples/prism-kusto.html +++ /dev/null @@ -1,8 +0,0 @@ -

Full example

-
// Source: https://docs.microsoft.com/en-us/azure/data-explorer/kusto/query/tutorial?pivots=azuredataexplorer
-
-StormEvents
-| where StartTime > datetime(2007-02-01) and StartTime < datetime(2007-03-01)
-| where EventType == 'Flood' and State == 'CALIFORNIA'
-| project StartTime, EndTime , State , EventType , EpisodeNarrative
-
diff --git a/examples/prism-latex.html b/examples/prism-latex.html deleted file mode 100644 index 137df3605d..0000000000 --- a/examples/prism-latex.html +++ /dev/null @@ -1,12 +0,0 @@ -

Comments

-
% This is a comment
- -

Commands

-
\begin{document}
-\documentstyle[twoside,epsfig]{article}
-\usepackage{epsfig,multicol}
- -

Math mode

-
$\alpha$
-H$_{2}$O
-45$^{\circ}$C
\ No newline at end of file diff --git a/examples/prism-latte.html b/examples/prism-latte.html deleted file mode 100644 index 684a693274..0000000000 --- a/examples/prism-latte.html +++ /dev/null @@ -1,16 +0,0 @@ -

Full example

-
<!DOCTYPE html>
-<html>
-	<head>
-		<title>{$title|upper}</title>
-	</head>
-	<body>
-		{if count($menu) > 1}
-			<ul class="menu">
-				{foreach $menu as $item}
-				<li><a href="{$item->href}">{$item->caption}</a></li>
-				{/foreach}
-			</ul>
-		{/if}
-	</body>
-</html>
diff --git a/examples/prism-less.html b/examples/prism-less.html deleted file mode 100644 index 56f0562177..0000000000 --- a/examples/prism-less.html +++ /dev/null @@ -1,50 +0,0 @@ -

Comments

-
// Single line comment
-/* Multi-line
-comment */
- -

Variables

-
@nice-blue: #5B83AD;
-@light-blue: @nice-blue + #111;
- -

At-rules

-
@media screen and (min-width: 320px) {}
- -

Mixins

-
.bordered {
-  border-top: dotted 1px black;
-  border-bottom: solid 2px black;
-}
-#menu a {
-  .bordered;
-}
-#header a {
-  color: orange;
-  #bundle > .button;
-}
- -

Mixins with parameters

-
.foo (@bg: #f5f5f5, @color: #900) {
-  background: @bg;
-  color: @color;
-}
-.bar {
-  .foo();
-}
-.class1 {
-  .mixin(@margin: 20px; @color: #33acfe);
-}
-.class2 {
-  .mixin(#efca44; @padding: 40px);
-}
- -

Interpolation

-
@mySelector: banner;
-.@{mySelector} {
-  font-weight: bold;
-}
-@property: color;
-.widget {
-  @{property}: #0ee;
-  background-@{property}: #999;
-}
diff --git a/examples/prism-lilypond.html b/examples/prism-lilypond.html deleted file mode 100644 index d61d94ad2d..0000000000 --- a/examples/prism-lilypond.html +++ /dev/null @@ -1,60 +0,0 @@ -

Full example

-
\version "2.16.0"
-\include "example-header.ily"
-
-#(ly:set-option 'point-and-click #f)
-#(set-global-staff-size 24)
-
-global = {
-    \time 4/4
-    \numericTimeSignature
-    \key c \major
-}
-
-cf = \relative c {
-  \clef bass
-  \global
-  c4 c' b a |
-  g a f d |
-  e f g g, |
-  c1
-}
-
-upper = \relative c'' {
-  \global
-  r4 s4 s2 |
-  s1*2 |
-  s2 s4 s
-  \bar "||"
-}
-
-bassFigures = \figuremode {
-  s1*2 | s4 <6> <6 4> <7> | s1
-}
-
-\markup { "Exercise 3: Write 8th notes against the given bass line." }
-
-\score {
-  \new PianoStaff <<
-    \new Staff {
-      \context Voice = "added voice" \with {
-        \consists "Balloon_engraver"
-      }
-      \upper
-    }
-
-    \new Staff = lower {
-      <<
-%      \context Voice = "cantus firmus" \with {
-%        \consists "Balloon_engraver"
-%      }
-        \context Staff = lower \cf
-        \new FiguredBass \bassFigures
-      >>
-    }
-  >>
-  \layout {}
-  %{\midi {
-    \tempo 4 = 120
-  }%}
-}
diff --git a/examples/prism-linker-script.html b/examples/prism-linker-script.html deleted file mode 100644 index 5a240bce7f..0000000000 --- a/examples/prism-linker-script.html +++ /dev/null @@ -1,53 +0,0 @@ -

Full example

-
/* Source: https://github.com/stivale/stivale2-barebones/blob/master/kernel/linker.ld */
-
-/* We want the symbol _start to be our entry point */
-ENTRY(_start)
-
-/* Define the program headers we want so the bootloader gives us the right */
-/* MMU permissions */
-PHDRS
-{
-    null    PT_NULL    FLAGS(0) ;                   /* Null segment */
-    text    PT_LOAD    FLAGS((1 << 0) | (1 << 2)) ; /* Execute + Read */
-    rodata  PT_LOAD    FLAGS((1 << 2)) ;            /* Read only */
-    data    PT_LOAD    FLAGS((1 << 1) | (1 << 2)) ; /* Write + Read */
-}
-
-SECTIONS
-{
-    /* We wanna be placed in the topmost 2GiB of the address space, for optimisations */
-    /* and because that is what the stivale2 spec mandates. */
-    /* Any address in this region will do, but often 0xffffffff80000000 is chosen as */
-    /* that is the beginning of the region. */
-    . = 0xffffffff80000000;
-
-    .text : {
-        *(.text .text.*)
-    } :text
-
-    /* Move to the next memory page for .rodata */
-    . += CONSTANT(MAXPAGESIZE);
-
-    /* We place the .stivale2hdr section containing the header in its own section, */
-    /* and we use the KEEP directive on it to make sure it doesn't get discarded. */
-    .stivale2hdr : {
-        KEEP(*(.stivale2hdr))
-    } :rodata
-
-    .rodata : {
-        *(.rodata .rodata.*)
-    } :rodata
-
-    /* Move to the next memory page for .data */
-    . += CONSTANT(MAXPAGESIZE);
-
-    .data : {
-        *(.data .data.*)
-    } :data
-
-    .bss : {
-        *(COMMON)
-        *(.bss .bss.*)
-    } :data
-}
diff --git a/examples/prism-liquid.html b/examples/prism-liquid.html deleted file mode 100644 index 55058a2651..0000000000 --- a/examples/prism-liquid.html +++ /dev/null @@ -1,75 +0,0 @@ -

Comments

-
{% comment %}This is a comment{% endcomment %}
- -

Control Flow

- -

Liquid provides multiple control flow statements.

- -

if

-

-{% if customer.name == 'kevin' %}
-  Hey Kevin!
-{% elsif customer.name == 'anonymous' %}
-  Hey Anonymous!
-{% else %}
-  Hi Stranger!
-{% endif %}
-
- -

unless

- -

The opposite of if – executes a block of code only if a certain condition is not met.

- -

-{% unless product.title == 'Awesome Shoes' %}
-These shoes are not awesome.
-{% endunless %}
-
- -

case

- -

Creates a switch statement to compare a variable with different values. case initializes the switch statement, and when compares its values.

- -

-{% assign handle = 'cake' %}
-{% case handle %}
-  {% when 'cake' %}
-    This is a cake
-  {% when 'cookie' %}
-    This is a cookie
-  {% else %}
-    This is not a cake nor a cookie
-{% endcase %}
-
- -

for

- -

Repeatedly executes a block of code.

- -

break = Causes the loop to stop iterating when it encounters the break tag.
-continue = Causes the loop to skip the current iteration when it encounters the continue tag.

- -

-{% for i in (1..10) %}
-  {% if i == 4 %}
-    {% break %}
-  {% elsif i == 6 %}
-    {% continue %}
-  {% else %}
-    {{ i }}
-  {% endif %}
-{% endfor %}
-
- -

range

- -

-{% for i in (3..5) %}
-  {{ i }}
-{% endfor %}
-
-{% assign num = 4 %}
-{% for i in (1..num) %}
-  {{ i }}
-{% endfor %}
-
diff --git a/examples/prism-lisp.html b/examples/prism-lisp.html deleted file mode 100644 index 436d5c9c8c..0000000000 --- a/examples/prism-lisp.html +++ /dev/null @@ -1,46 +0,0 @@ -

Comments

-
;; (foo bar)
- -

Strings

-
(foo "bar")
- -

With nested symbols

-
(foo "A string with a `symbol ")
- -

With nested arguments

-
(foo "A string with an ARGUMENT ")
- -

Quoted symbols

-
(foo #'bar)
- -

Lisp properties

-
(foo :bar)
- -

Splices

-
(foo ,bar ,@bar)
- -

Keywords

-
(let foo (bar arg))
- -

Declarations

-
(declare foo)
- -

Booleans

-
(foo t)
-
(foo nil)
- -

Numbers

-
(foo 1)
-
(foo -1.5)
- -

Definitions

-
(defvar bar 23)
-
(defcustom bar 23)
- -

Function definitions

-
(defun multiply-by-seven (number)
-       "Multiply NUMBER by seven."
-       (* 7 number))
- -

Lambda expressions

-
(lambda (number) (* 7 number))
\ No newline at end of file diff --git a/examples/prism-livescript.html b/examples/prism-livescript.html deleted file mode 100644 index e9194d363c..0000000000 --- a/examples/prism-livescript.html +++ /dev/null @@ -1,84 +0,0 @@ -

Comments

-
# This is a single line comment
-/* This is a
-multi line comment */
- -

Numbers

-
42
-42km
-3.754km_2
-16~BadFace
-36~azertyuiop0123456789
- -

Strings and interpolation

-
''
-''''''
-""
-""""""
-'Foo \' bar
-	baz'
-'''Foo \''' bar
-	bar'''
-"Foo #bar \"
-	#{2 + 2}\""
-"""#foobar \""" #{ if /test/ == 'test' then 3 else 4}
-	baz"""
- -

Regex

-
/foobar/ig
-//
-^foo # foo
-[bar]*bA?z # barbaz
-//m
- -

Full example

-
# example from Str.ls
-
-split = (sep, str) -->
-  str.split sep
-
-join = (sep, xs) -->
-  xs.join sep
-
-lines = (str) ->
-  return [] unless str.length
-  str.split '\n'
-
-unlines = (.join '\n')
-
-words = (str) ->
-  return [] unless str.length
-  str.split /[ ]+/
-
-unwords = (.join ' ')
-
-chars = (.split '')
-
-unchars = (.join '')
-
-reverse = (str) ->
-  str.split '' .reverse!.join ''
-
-repeat = (n, str) -->
-  result = ''
-  for til n
-    result += str
-  result
-
-capitalize = (str) ->
-  (str.char-at 0).to-upper-case! + str.slice 1
-
-camelize = (.replace /[-_]+(.)?/g, (, c) -> (c ? '').to-upper-case!)
-
-# convert camelCase to camel-case, and setJSON to set-JSON
-dasherize = (str) ->
-    str
-      .replace /([^-A-Z])([A-Z]+)/g, (, lower, upper) ->
-         "#{lower}-#{if upper.length > 1 then upper else upper.to-lower-case!}"
-      .replace /^([A-Z]+)/, (, upper) ->
-         if upper.length > 1 then "#upper-" else upper.to-lower-case!
-
-module.exports = {
-  split, join, lines, unlines, words, unwords, chars, unchars, reverse,
-  repeat, capitalize, camelize, dasherize,
-}
\ No newline at end of file diff --git a/examples/prism-llvm.html b/examples/prism-llvm.html deleted file mode 100644 index d6b39f0f35..0000000000 --- a/examples/prism-llvm.html +++ /dev/null @@ -1,23 +0,0 @@ -

Full Example

-

-; Declare the string constant as a global constant.
-@.str = private unnamed_addr constant [13 x i8] c"hello world\0A\00"
-
-; External declaration of the puts function
-declare i32 @puts(i8* nocapture) nounwind
-
-; Definition of main function
-define i32 @main() {   ; i32()*
-entry:
-  ; Convert [13 x i8]* to i8*...
-  %cast210 = getelementptr [13 x i8], [13 x i8]* @.str, i64 0, i64 0
-
-  ; Call puts function to write out the string to stdout.
-  call i32 @puts(i8* %cast210)
-  ret i32 0
-}
-
-; Named metadata
-!0 = !{i32 42, null, !"string"}
-!foo = !{!0}
-
diff --git a/examples/prism-log.html b/examples/prism-log.html deleted file mode 100644 index efb1d4f43d..0000000000 --- a/examples/prism-log.html +++ /dev/null @@ -1,10 +0,0 @@ -

Nginx example

-
/47.29.201.179 - - [28/Feb/2019:13:17:10 +0000] "GET /?p=1 HTTP/2.0" 200 5316 "https://domain1.com/?p=1" "Mozilla/5.0 (Windows NT 6.1) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/72.0.3626.119 Safari/537.36" "2.75"
-
Mar 19 22:10:18 xxxxxx journal: xxxxxxx.mylabserver.com nginx: photos.example.com 127.0.0.1 - - [19/Mar/2018:22:10:18 +0000] "GET / HTTP/1.1" 200 1863 "-" "curl/7.29.0" "-"
-Mar 19 22:10:24 xxxxxxx journal: xxxxxxxx.mylabserver.com nginx: photos.example.com 127.0.0.1 - - [19/Mar/2018:22:10:24 +0000] "GET / HTTP/1.1" 200 53324 "-" "curl/7.29.0" "-"
-
TLSv1.2 AES128-SHA 1.1.1.1 "Mozilla/5.0 (X11; Linux x86_64; rv:45.0) Gecko/20100101 Firefox/45.0"
-TLSv1.2 ECDHE-RSA-AES128-GCM-SHA256 2.2.2.2 "Mozilla/5.0 (iPhone; CPU iPhone OS 9_1 like Mac OS X) AppleWebKit/601.1.46 (KHTML, like Gecko) Version/9.0 Mobile/13B143 Safari/601.1"
-TLSv1.2 ECDHE-RSA-AES128-GCM-SHA256 3.3.3.3 "Mozilla/5.0 (Windows NT 6.1; WOW64; rv:58.0) Gecko/20100101 Firefox/58.0"
-TLSv1.2 ECDHE-RSA-AES128-GCM-SHA256 4.4.4.4 "Mozilla/5.0 (Android 4.4.2; Tablet; rv:65.0) Gecko/65.0 Firefox/65.0"
-TLSv1 AES128-SHA 5.5.5.5 "Mozilla/5.0 (Android 4.4.2; Tablet; rv:65.0) Gecko/65.0 Firefox/65.0"
-TLSv1.2 ECDHE-RSA-CHACHA20-POLY1305 6.6.6.6 "Mozilla/5.0 (Linux; U; Android 5.0.2; en-US; XT1068 Build/LXB22.46-28) AppleWebKit/537.36 (KHTML, like Gecko) Version/4.0 Chrome/57.0.2987.108 UCBrowser/12.10.2.1164 Mobile Safari/537.36"
diff --git a/examples/prism-lolcode.html b/examples/prism-lolcode.html deleted file mode 100644 index 38308328aa..0000000000 --- a/examples/prism-lolcode.html +++ /dev/null @@ -1,62 +0,0 @@ -

Comments

-
BTW Single line comment
-OBTW Multi-line
-comment TLDR
- -

Strings and special characters

-
"foo :"bar:" baz"
-"foo:)bar:>baz"
-"Interpolation :{works} too!"
- -

Numbers

-
42
--42
-123.456
- -

Variable declaration

-
I HAS A var
-var R "THREE"
-var R 3
- -

Types

-
MAEK some_expr A YARN
-some_var IS NOW A NUMBR
- -

Full example

-
OBTW Convert a number to hexadecimal. This
-     is returned as a string.
-TLDR
-HOW IZ I decimal_to_hex YR num
-    I HAS A i ITZ 0
-    I HAS A rem
-    I HAS A hex_num ITZ A BUKKIT
-    I HAS A decimal_num ITZ num
-    IM IN YR num_loop
-        rem R MOD OF decimal_num AN 16
-        I HAS A hex_digit
-        rem, WTF?
-            OMG 10, hex_digit R "A", GTFO
-            OMG 11, hex_digit R "B", GTFO
-            OMG 12, hex_digit R "C", GTFO
-            OMG 13, hex_digit R "D", GTFO
-            OMG 14, hex_digit R "E", GTFO
-            OMG 15, hex_digit R "F", GTFO
-            OMGWTF, hex_digit R rem
-        OIC
-        hex_num HAS A SRS i ITZ hex_digit
-        decimal_num R QUOSHUNT OF decimal_num AN 16
-        BOTH SAEM decimal_num AN 0, O RLY?
-            YA RLY, GTFO
-            NO WAI, i R SUM OF i AN 1
-        OIC
-    IM OUTTA YR num_loop
-    I HAS A hex_string ITZ A YARN
-    IM IN YR string_reverse
-        DIFFRINT i AN BIGGR OF i AN 0, O RLY?
-            YA RLY, GTFO
-        OIC
-        hex_string R SMOOSH hex_string AN hex_num'Z SRS i MKAY
-        i R DIFF OF i AN 1
-    IM OUTTA YR string_reverse
-    FOUND YR hex_string
-IF U SAY SO
\ No newline at end of file diff --git a/examples/prism-lua.html b/examples/prism-lua.html deleted file mode 100644 index 9c18b9d068..0000000000 --- a/examples/prism-lua.html +++ /dev/null @@ -1,79 +0,0 @@ -

Comments

-
#!/usr/local/bin/lua
---
--- Single line comment
---[[ Multi line
-comment ]]
---[====[ Multi line
-comment ]====]
- -

Strings

-
""
-"Foo\"bar"
-"Foo\
-bar \z
-baz"
-''
-'Foo\'bar'
-'Foo\
-bar \z
-baz'
-[[Multi "line"
-string]]
-[==[Multi [["line"]]
-string]==]
- -

Numbers

-
3
-345
-0xff
-0xBEBADA
-3, 3., 3.1, .3,
-3e12, 3.e-41, 3.1E+1, .3e1
-0x0.1E
-0xA23p-4
-0X1.921FB54442D18P+1
- -

Full example

-
function To_Functable(t, fn)
-  return setmetatable(t,
-    {
-     __index = function(t, k) return fn(k) end,
-     __call = function(t, k) return t[k] end
-    })
-end
-
--- Functable bottles of beer implementation
-
-spell_out = {
-  "One", "Two", "Three", "Four", "Five",
-  "Six", "Seven", "Eight", "Nine", "Ten",
-  [0] = "No more",
-  [-1] = "Lots more"
-}
-
-spell_out = To_Functable(spell_out, function(i) return i end)
-
-bottles = To_Functable({"Just one bottle of beer"},
-                       function(i)
-                         return spell_out(i) .. " bottles of beer"
-                       end)
-
-function line1(i)
-  return bottles(i) .. " on the wall, " .. bottles(i) .. "\n"
-end
-
-line2 = To_Functable({[0] = "Go to the store, Buy some more,\n"},
-                     function(i)
-                       return "Take one down and pass it around,\n"
-                     end)
-
-function line3(i)
-  return bottles(i) .. " on the wall.\n"
-end
-
-function song(n)
-  for i = n, 0, -1 do
-    io.write(line1(i), line2(i), line3(i - 1), "\n")
-  end
-end
diff --git a/examples/prism-magma.html b/examples/prism-magma.html deleted file mode 100644 index 558e819f0a..0000000000 --- a/examples/prism-magma.html +++ /dev/null @@ -1,34 +0,0 @@ -

Full example

-
// Source: http://magma.maths.usyd.edu.au/magma/handbook/text/115#963
-> D := Denominator;
-> N := Numerator;
-> farey := function(n)
->    f := [ RationalField() | 0, 1/n ];
->    p := 0;
->    q := 1;
->    while p/q lt 1 do
->       p := ( D(f[#f-1]) + n) div D(f[#f]) * N(f[#f])  - N(f[#f-1]);
->       q := ( D(f[#f-1]) + n) div D(f[#f]) * D(f[#f])  - D(f[#f-1]);
->       Append(~f, p/q);
->    end while;
->    return f;
-> end function;
-> function farey(n)
->    if n eq 1 then
->       return [RationalField() | 0, 1 ];
->    else
->       f := farey(n-1);
->       i := 0;
->       while i lt #f-1 do
->          i +:= 1;
->          if D(f[i]) + D(f[i+1]) eq n then
->             Insert( ~f, i+1, (N(f[i]) + N(f[i+1]))/(D(f[i]) + D(f[i+1])));
->          end if;
->       end while;
->       return f;
->    end if;
-> end function;
-> farey := func< n |
->               Sort(Setseq({ a/b : a in { 0..n }, b in { 1..n } | a le b }))>;
-> farey(6);
-[ 0, 1/6, 1/5, 1/4, 1/3, 2/5, 1/2, 3/5, 2/3, 3/4, 4/5, 5/6, 1 ]
diff --git a/examples/prism-makefile.html b/examples/prism-makefile.html deleted file mode 100644 index fd74713a89..0000000000 --- a/examples/prism-makefile.html +++ /dev/null @@ -1,263 +0,0 @@ -

Comments

-
# This is a comment
-include foo # This is another comment
- -

Targets

-
kbd.o command.o files.o : command.h
-display.o insert.o search.o files.o : buffer.h
-
-.PHONY: clean
-clean:
-        rm *.o temp
- -

Variables

-
objects = main.o kbd.o command.o display.o \
-          insert.o search.o files.o utils.o
-
-edit : $(objects)
-        cc -o edit $(objects)
-
-$(objects) : defs.h
-
-%oo: $$< $$^ $$+ $$*
-
-foo : bar/lose
-        cd $(@D) && gobble $(@F) > ../$@
- -

Strings

-
STR = 'A string!'
-
-HELLO = 'hello \
-world'
-
-HELLO2 = "hello \
-world"
- -

Directives

-
include foo *.mk $(bar)
-
-vpath %.c foo
-
-override define two-lines =
-foo
-$(bar)
-endef
-
-ifeq ($(CC),gcc)
-  libs=$(libs_for_gcc)
-else
-  libs=$(normal_libs)
-endif
- -

Functions

-
whoami    := $(shell whoami)
-host-type := $(shell arch)
-
-y = $(subst 1,2,$(x))
-
-dirs := a b c d
-files := $(foreach dir,$(dirs),$(wildcard $(dir)/*))
-
-reverse = $(2) $(1)
-foo = $(call reverse,a,b)
-
-$(foreach prog,$(PROGRAMS),$(eval $(call PROGRAM_template,$(prog))))
- -

Complete example

-
#!/usr/bin/make -f
-# Generated automatically from Makefile.in by configure.
-# Un*x Makefile for GNU tar program.
-# Copyright (C) 1991 Free Software Foundation, Inc.
-
-# This program is free software; you can redistribute
-# it and/or modify it under the terms of the GNU
-# General Public License …
-…
-…
-
-SHELL = /bin/sh
-
-#### Start of system configuration section. ####
-
-srcdir = .
-
-# If you use gcc, you should either run the
-# fixincludes script that comes with it or else use
-# gcc with the -traditional option.  Otherwise ioctl
-# calls will be compiled incorrectly on some systems.
-CC = gcc -O
-YACC = bison -y
-INSTALL = /usr/local/bin/install -c
-INSTALLDATA = /usr/local/bin/install -c -m 644
-
-# Things you might add to DEFS:
-# -DSTDC_HEADERS        If you have ANSI C headers and
-#                       libraries.
-# -DPOSIX               If you have POSIX.1 headers and
-#                       libraries.
-# -DBSD42               If you have sys/dir.h (unless
-#                       you use -DPOSIX), sys/file.h,
-#                       and st_blocks in `struct stat'.
-# -DUSG                 If you have System V/ANSI C
-#                       string and memory functions
-#                       and headers, sys/sysmacros.h,
-#                       fcntl.h, getcwd, no valloc,
-#                       and ndir.h (unless
-#                       you use -DDIRENT).
-# -DNO_MEMORY_H         If USG or STDC_HEADERS but do not
-#                       include memory.h.
-# -DDIRENT              If USG and you have dirent.h
-#                       instead of ndir.h.
-# -DSIGTYPE=int         If your signal handlers
-#                       return int, not void.
-# -DNO_MTIO             If you lack sys/mtio.h
-#                       (magtape ioctls).
-# -DNO_REMOTE           If you do not have a remote shell
-#                       or rexec.
-# -DUSE_REXEC           To use rexec for remote tape
-#                       operations instead of
-#                       forking rsh or remsh.
-# -DVPRINTF_MISSING     If you lack vprintf function
-#                       (but have _doprnt).
-# -DDOPRNT_MISSING      If you lack _doprnt function.
-#                       Also need to define
-#                       -DVPRINTF_MISSING.
-# -DFTIME_MISSING       If you lack ftime system call.
-# -DSTRSTR_MISSING      If you lack strstr function.
-# -DVALLOC_MISSING      If you lack valloc function.
-# -DMKDIR_MISSING       If you lack mkdir and
-#                       rmdir system calls.
-# -DRENAME_MISSING      If you lack rename system call.
-# -DFTRUNCATE_MISSING   If you lack ftruncate
-#                       system call.
-# -DV7                  On Version 7 Unix (not
-#                       tested in a long time).
-# -DEMUL_OPEN3          If you lack a 3-argument version
-#                       of open, and want to emulate it
-#                       with system calls you do have.
-# -DNO_OPEN3            If you lack the 3-argument open
-#                       and want to disable the tar -k
-#                       option instead of emulating open.
-# -DXENIX               If you have sys/inode.h
-#                       and need it 94 to be included.
-
-DEFS =  -DSIGTYPE=int -DDIRENT -DSTRSTR_MISSING \
-        -DVPRINTF_MISSING -DBSD42
-# Set this to rtapelib.o unless you defined NO_REMOTE,
-# in which case make it empty.
-RTAPELIB = rtapelib.o
-LIBS =
-DEF_AR_FILE = /dev/rmt8
-DEFBLOCKING = 20
-
-CDEBUG = -g
-CFLAGS = $(CDEBUG) -I. -I$(srcdir) $(DEFS) \
-        -DDEF_AR_FILE=\"$(DEF_AR_FILE)\" \
-        -DDEFBLOCKING=$(DEFBLOCKING)
-LDFLAGS = -g
-
-prefix = /usr/local
-# Prefix for each installed program,
-# normally empty or `g'.
-binprefix =
-
-# The directory to install tar in.
-bindir = $(prefix)/bin
-
-# The directory to install the info files in.
-infodir = $(prefix)/info
-
-#### End of system configuration section. ####
-
-SRCS_C  = tar.c create.c extract.c buffer.c   \
-          getoldopt.c update.c gnu.c mangle.c \
-          version.c list.c names.c diffarch.c \
-          port.c wildmat.c getopt.c getopt1.c \
-          regex.c
-SRCS_Y  = getdate.y
-SRCS    = $(SRCS_C) $(SRCS_Y)
-OBJS    = $(SRCS_C:.c=.o) $(SRCS_Y:.y=.o) $(RTAPELIB)
-
-AUX =   README COPYING ChangeLog Makefile.in  \
-        makefile.pc configure configure.in \
-        tar.texinfo tar.info* texinfo.tex \
-        tar.h port.h open3.h getopt.h regex.h \
-        rmt.h rmt.c rtapelib.c alloca.c \
-        msd_dir.h msd_dir.c tcexparg.c \
-        level-0 level-1 backup-specs testpad.c
-
-.PHONY: all
-all:    tar rmt tar.info
-
-tar:    $(OBJS)
-        $(CC) $(LDFLAGS) -o $@ $(OBJS) $(LIBS)
-
-rmt:    rmt.c
-        $(CC) $(CFLAGS) $(LDFLAGS) -o $@ rmt.c
-
-tar.info: tar.texinfo
-        makeinfo tar.texinfo
-
-.PHONY: install
-install: all
-        $(INSTALL) tar $(bindir)/$(binprefix)tar
-        -test ! -f rmt || $(INSTALL) rmt /etc/rmt
-        $(INSTALLDATA) $(srcdir)/tar.info* $(infodir)
-
-$(OBJS): tar.h port.h testpad.h
-regex.o buffer.o tar.o: regex.h
-# getdate.y has 8 shift/reduce conflicts.
-
-testpad.h: testpad
-        ./testpad
-
-testpad: testpad.o
-        $(CC) -o $@ testpad.o
-
-TAGS:   $(SRCS)
-        etags $(SRCS)
-
-.PHONY: clean
-clean:
-        rm -f *.o tar rmt testpad testpad.h core
-
-.PHONY: distclean
-distclean: clean
-        rm -f TAGS Makefile config.status
-
-.PHONY: realclean
-realclean: distclean
-        rm -f tar.info*
-
-.PHONY: shar
-shar: $(SRCS) $(AUX)
-        shar $(SRCS) $(AUX) | compress \
-          > tar-`sed -e '/version_string/!d' \
-                     -e 's/[^0-9.]*\([0-9.]*\).*/\1/' \
-                     -e q
-                     version.c`.shar.Z
-
-.PHONY: dist
-dist: $(SRCS) $(AUX)
-        echo tar-`sed \
-             -e '/version_string/!d' \
-             -e 's/[^0-9.]*\([0-9.]*\).*/\1/' \
-             -e q
-             version.c` > .fname
-        -rm -rf `cat .fname`
-        mkdir `cat .fname`
-        ln $(SRCS) $(AUX) `cat .fname`
-        tar chZf `cat .fname`.tar.Z `cat .fname`
-        -rm -rf `cat .fname` .fname
-
-tar.zoo: $(SRCS) $(AUX)
-        -rm -rf tmp.dir
-        -mkdir tmp.dir
-        -rm tar.zoo
-        for X in $(SRCS) $(AUX) ; do \
-            echo $$X ; \
-            sed 's/$$/^M/' $$X \
-            > tmp.dir/$$X ; done
-        cd tmp.dir ; zoo aM ../tar.zoo *
-        -rm -rf tmp.dir
-
diff --git a/examples/prism-markdown.html b/examples/prism-markdown.html deleted file mode 100644 index ea44fea4a6..0000000000 --- a/examples/prism-markdown.html +++ /dev/null @@ -1,69 +0,0 @@ -

Titles

-
Title 1
-==
-
-Title 2
--------
-
-# Title 1
-## Title 2
-### Title 3
-#### Title 4
-##### Title 5
-###### Title 6
-
- -

Bold and italic

-
*Italic*
-**Bold on
-multiple lines**
-*Italic on
-multiple lines too*
-__It also works with underscores__
-_It also works with underscores_
-
-__An empty line
-
-is not allowed__
-
- -

Links

-
[Prism](http://www.prismjs.com)
-[Prism](http://www.prismjs.com "Prism")
-
-[prism link]: http://www.prismjs.com (Prism)
-[Prism] [prism link]
-
- -

Lists and quotes

-
* This is
-* an unordered list
-
-1. This is an
-2. ordered list
-
-* *List item in italic*
-* **List item in bold**
-* [List item as a link](http://example.com "This is an example")
-
-> This is a quotation
->> With another quotation inside
-> _italic here_, __bold there__
-> And a [link](http://example.com)
-
- -

Code

-
Inline code between backticks `<p>Paragraph</p>`
-
-    some_code(); /* Indented
-    with four spaces */
-
-	some_code(); /* Indented
-	with a tab */
-
- -

Raw HTML

-
> This is a quotation
-> Containing <strong>raw HTML</strong>
-
-<p>*Italic text inside HTML tag*</p>
diff --git a/examples/prism-markup.html b/examples/prism-markup.html deleted file mode 100644 index e99c2f71b4..0000000000 --- a/examples/prism-markup.html +++ /dev/null @@ -1,77 +0,0 @@ -

Empty tag

-
<p></p>
- -

Tag that spans multiple lines

-
<p
->hello!
-</p>
- -

Name-attribute pair

-
<p></p>
- -

Name-attribute pair without quotes

-
<p class=prism></p>
- -

Attribute without value

-
<p data-foo></p>
-<p data-foo ></p>
-
- -

Namespaces

-
<html:p foo:bar="baz" foo:weee></html:p>
- -

XML prolog

-
<?xml version="1.0" encoding="utf-8"?>
-<svg></svg>
- -

DOCTYPE

-
<!DOCTYPE html>
-<html></html>
- -

CDATA section

-
<ns1:description><![CDATA[
-  CDATA is <not> magical.
-]]></ns1:description>
- -

Comment

-
<!-- I'm a comment -->
-And i'm not
- -

Entities

-
&amp; &#x2665; &#160; &#x152;
- -

Embedded JS and CSS

-
<!DOCTYPE html>
-<html lang="en">
-<head>
-	<meta charset="utf-8" />
-	<title>I can haz embedded CSS and JS</title>
-	<style>
-		@media print {
-			p { color: red !important; }
-		}
-	</style>
-</head>
-<body>
-	<h1>I can haz embedded CSS and JS</h1>
-	<script>
-	if (true) {
-		console.log('foo');
-	}
-	</script>
-
-</body>
-</html>
- -

Invalid HTML

-
<l </ul>
- -

Multi-line attribute values

-
<p title="foo
-bar
-baz">
- -

XML tags with non-ASCII characters

-
<Läufer>foo</Läufer>
-<tag läufer="läufer">bar</tag>
-<läufer:tag>baz</läufer:tag>
diff --git a/examples/prism-mata.html b/examples/prism-mata.html deleted file mode 100644 index e4d3af9c58..0000000000 --- a/examples/prism-mata.html +++ /dev/null @@ -1,9 +0,0 @@ -

Full example

-
// Source: https://www.stata.com/manuals/m-1first.pdf page 12
-numeric matrix tanh(numeric matrix u)
-{
-	numeric matrix eu, emu
-	eu = exp(u)
-	emu = exp(-u)
-	return( (eu-emu):/(eu+emu) )
-}
diff --git a/examples/prism-matlab.html b/examples/prism-matlab.html deleted file mode 100644 index 790d71c125..0000000000 --- a/examples/prism-matlab.html +++ /dev/null @@ -1,52 +0,0 @@ -

Strings

-
myString = 'Hello, world';
-otherString = 'You''re right';
- -

Comments

-
% Single line comment
-%{ Multi-line
-comment }%
- -

Numbers

-
x = 325.499
-realmax + .0001e+308
-e = 1 - 3*(4/3 - 1)
-b = 1e-16 + 1 - 1e-16;
-x = 2 + 3i;
-z =
-   4.7842 -1.0921i   0.8648 -1.5931i   1.2616 -2.2753i
-   2.6130 -0.0941i   4.8987 -2.3898i   4.3787 -3.7538i
-   4.4007 -7.1512i   1.3572 -5.2915i   3.6865 -0.5182i
-
- -

Control flow

-
if rem(a, 2) == 0
-    disp('a is even')
-    b = a/2;
-end
-switch dayString
-   case 'Monday'
-      disp('Start of the work week')
-   case 'Tuesday'
-      disp('Day 2')
-   case 'Wednesday'
-      disp('Day 3')
-   case 'Thursday'
-      disp('Day 4')
-   case 'Friday'
-      disp('Last day of the work week')
-   otherwise
-      disp('Weekend!')
-end
-n = 1;
-nFactorial = 1;
-while nFactorial < 1e100
-    n = n + 1;
-    nFactorial = nFactorial * n;
-end
- -

Functions

-
q = integral(sqr,0,1);
-y = parabola(x)
-mygrid = @(x,y) ndgrid((-x:x/c:x),(-y:y/c:y));
-[x,y] = mygrid(pi,2*pi);
diff --git a/examples/prism-maxscript.html b/examples/prism-maxscript.html deleted file mode 100644 index 08bd94483c..0000000000 --- a/examples/prism-maxscript.html +++ /dev/null @@ -1,33 +0,0 @@ -

Strings

-
-- Source: https://help.autodesk.com/view/MAXDEV/2022/ENU/?guid=GUID-5E5E1A71-24E2-4605-9720-2178B941DECC
-
-plugin RenderEffect MonoChrome
-name:"MonoChrome"
-classID:#(0x9e6e9e77, 0xbe815df4)
-(
-rollout about_rollout "About..."
-(
-  label about_label "MonoChrome Filter"
-)
-on apply r_image progressCB: do
-(
-  progressCB.setTitle "MonoChrome Effect"
-  local oldEscapeEnable = escapeEnable
-  escapeEnable = false
-  bmp_w = r_image.width
-  bmp_h = r_image.height
-  for y = 0 to bmp_h-1 do
-  (
-    if progressCB.progress y (bmp_h-1) then exit
-    pixel_line = getPixels r_image [0,y] bmp_w
-    for x = 1 to bmp_w do
-    (
-      p_v = pixel_line[x].value
-      pixel_line[x] = color p_v p_v p_v pixel_line[x].alpha
-    )--end x loop
-    setPixels r_image [0,y] pixel_line
-  )--end y loop
-  escapeEnable = oldEscapeEnable
-)--end on apply
-)--end plugin
-
diff --git a/examples/prism-mel.html b/examples/prism-mel.html deleted file mode 100644 index a42cf884a1..0000000000 --- a/examples/prism-mel.html +++ /dev/null @@ -1,137 +0,0 @@ -

Comments

-
// This is a comment
- -

Strings

-
"This is a string"
-"foo \"bar\" baz"
- -

Numbers

-
42
-3.14159
-0xA2F
- -

Variables

-
$x
-$floaty5000
-$longDescriptiveName
-$name_with_underscores
-$_line
-
-float $param;
-int $counter;
-string $name;
-vector $position;
- -

Arrays, vectors and matrices

-
string $array[3] = {"first\n", "second\n", "third\n"};
-print($array[0]); // Prints "first\n"
-print($array[1]); // Prints "second\n"
-print($array[2]); // Prints "third\n"
-
-vector $roger = <<3.0, 7.7, 9.1>>;
-vector $more = <<4.5, 6.789, 9.12356>>;
-// Assign a vector to variable $test:
-vector $test = <<3.0, 7.7, 9.1>>;
-$test = <<$test.x, 5.5, $test.z>>
-// $test is now <<3.0, 5.5, 9.1>>
-
-matrix $a3[3][4] = <<2.5, 4.5, 3.25, 8.05;
- 1.12, 1.3, 9.5, 5.2;
- 7.23, 6.006, 2.34, 4.67>>
- -

Commands

-
pickWalk -d down;
-string $mySelection[] = `ls -selection`;
-
-setAttr ($mySelection[0]+".particleRenderType") 5;
-
-addAttr -is true -ln "spriteTwist" -at "float" -min -180 -max 180 -dv 0.0 blue_nParticleShape;
- -

Full example

-
// From http://help.autodesk.com/view/MAYAUL/2015/ENU/?guid=Example_scripts_Dynamics_Time_Playback
-// Alias Script File
-// MODIFY THIS AT YOUR OWN RISK
-//
-// Creation Date: 8 May 1996
-// Author: rh
-//
-// Description:
-// Playback from frame 0 to frame <n> and return the
-// 		the playback rate in frames/sec. If a negative frame
-// count is given, this indicates silent mode. In silent
-// mode, no output is printed.
-//
-// This version is intended for use in batch tests of dynamics.
-// It requests particle and rigid body positions every frame.
-//
-// RETURN
-// Frame rate in frames/sec
-//
-global proc float dynTimePlayback( float $frames )
-{
- int $silent;
- // Get the list of particle shapes.
- //
- string $particleObjects[] = `ls -type particle`;
- int $particleCount = size( $particleObjects );
- // Get the list of transforms.
- // This will include rigid bodies.
- //
- string $transforms[] = `ls -tr`;
- int $trCount = size( $transforms );
- 	// Check for negative $frames. This indicates
- // $silent mode.
- //
- if ($frames < 0)
- {
- $silent = 1;
- $frames = -$frames;
- }
- else
- {
- $silent = 0;
- }
- // Setup the playback options.
- //
- playbackOptions -min 1 -max $frames -loop "once";
- currentTime -edit 0;
- // Playback the animation using the timerX command
- // to compute the $elapsed time.
- //
- float $startTime, $elapsed;
- $startTime = `timerX`;
-// play -wait;
- int $i;
- for ($i = 1; $i < $frames; $i++ )
- {
- // Set time
- //
- currentTime -e $i;
- int $obj;
- // Request count for every particle object.
- //
- for ($obj = 0; $obj < $particleCount; $obj++)
- {
-			string $cmd = "getAttr " + $particleObjects[$obj]+".count";
- eval( $cmd );
- }
- // Request position for every transform
-		// (includes every rigid body).
- //
- for ($obj = 0; $obj < $trCount; $obj++)
- {
- string $cmd = "getAttr " + $transforms[$obj]+".translate";
- eval ($cmd);
- }
- }
- $elapsed = `timerX -st $startTime`;
- // Compute the playback frame $rate. Print results.
- //
- float $rate = ($elapsed == 0 ? 0.0 : $frames / $elapsed) ;
- if ( ! $silent)
- {
- print( "Playback time: " + $elapsed + " secs\n" );
- print( "Playback $rate: " + $rate + " $frames/sec\n" );
- }
- return ( $rate );
-} // timePlayback //
diff --git a/examples/prism-mermaid.html b/examples/prism-mermaid.html deleted file mode 100644 index c379bf27b5..0000000000 --- a/examples/prism-mermaid.html +++ /dev/null @@ -1,25 +0,0 @@ -

Full example

-
%% https://github.com/mermaid-js/mermaid/blob/develop/docs/examples.md#larger-flowchart-with-some-styling
-
-graph TB
-	sq[Square shape] --> ci((Circle shape))
-
-	subgraph A
-		od>Odd shape]-- Two line<br/>edge comment --> ro
-		di{Diamond with <br/> line break} -.-> ro(Rounded<br>square<br>shape)
-		di==>ro2(Rounded square shape)
-	end
-
-	%% Notice that no text in shape are added here instead that is appended further down
-	e --> od3>Really long text with linebreak<br>in an Odd shape]
-
-	%% Comments after double percent signs
-	e((Inner / circle<br>and some odd <br>special characters)) --> f(,.?!+-*ز)
-
-	cyr[Cyrillic]-->cyr2((Circle shape Начало));
-
-	classDef green fill:#9f6,stroke:#333,stroke-width:2px;
-	classDef orange fill:#f96,stroke:#333,stroke-width:4px;
-	class sq,e green
-	class di orange
-
diff --git a/examples/prism-metafont.html b/examples/prism-metafont.html deleted file mode 100644 index 9a6a5b0c07..0000000000 --- a/examples/prism-metafont.html +++ /dev/null @@ -1,21 +0,0 @@ -

Comments and strings

-
%This makes a comment.
-"While this is a string."
- -

Numbers

-
0 1.2 .3
- -

Operators

-
eps*256>=1<>true
-""&ditto
-z1..z2--z3
-5+-+4=3
- -

Types

-
path p[],q[]
- -

Concrete example

-
% From plain.mf
-vardef penpos@#(expr b,d) =
-(x@#r-x@#l,y@#r-y@#l)=(b,0) rotated d;
-x@#=.5(x@#l+x@#r); y@#=.5(y@#l+y@#r) enddef;
\ No newline at end of file diff --git a/examples/prism-mizar.html b/examples/prism-mizar.html deleted file mode 100644 index 044c5c3fe9..0000000000 --- a/examples/prism-mizar.html +++ /dev/null @@ -1,45 +0,0 @@ -

Full example

- -
:: Example from http://webdocs.cs.ualberta.ca/~piotr/Mizar/Dagstuhl97/
-environ
-vocabulary SCM;
-constructors ARYTHM, PRE_FF, NAT_1, REAL_1;
-notation ARYTHM, PRE_FF, NAT_1;
-requirements ARYTHM;
-theorems REAL_1, PRE_FF, NAT_1, AXIOMS, CQC_THE1;
-schemes NAT_1;
-begin
-
-P: for k being Nat
-	st for n being Nat st n < k holds Fib (n+1) ≥ n
-		holds Fib (k+1) ≥ k
-proof let k be Nat; assume
-IH: for n being Nat st n < k holds Fib (n+1) ≥ n;
-	per cases;
-		suppose k ≤ 1; then k = 0 or k = 0+1 by CQC_THE1:2;
-			hence Fib (k+1) ≥ k by PRE_FF:1;
-		suppose 1 < k; then
-			1+1 ≤ k by NAT_1:38; then
-			consider m being Nat such that
-		A: k = 1+1+m by NAT_1:28;
-			thus Fib (k+1) ≥ k proof
-				per cases by NAT_1:19;
-				suppose S1: m = 0;
-					Fib (0+1+1+1) = Fib(0+1) + Fib(0+1+1) by PRE_FF:1
-					              = 1 + 1 by PRE_FF:1;
-					hence Fib (k+1) ≥ k by A, S1;
-				suppose m > 0; then
-					m+1 > 0+1 by REAL_1:59; then
-					m ≥ 1 by NAT_1:38; then
-				B: m+(m+1) ≥ m+1+1 by REAL_1:49;
-				C: k = m+1+1 by A, AXIOMS:13;
-				   m < m+1 & m+1 < m+1+1 by REAL_1:69; then
-				   m < k & m+1 < k by C, AXIOMS:22; then
-				D: Fib (m+1) ≥ m & Fib (m+1+1) ≥ m+1 by IH;
-				   Fib (m+1+1+1) = Fib (m+1) + Fib (m+1+1) by PRE_FF:1; then
-				   Fib (m+1+1+1) ≥ m+(m+1) by D, REAL_1:55;
-		hence Fib(k+1) ≥ k by C, B, AXIOMS:22;
-	end;
-end;
-
-for n being Nat holds Fib(n+1) ≥ n from Comp_Ind(P);
diff --git a/examples/prism-mongodb.html b/examples/prism-mongodb.html deleted file mode 100644 index 305eae5233..0000000000 --- a/examples/prism-mongodb.html +++ /dev/null @@ -1,59 +0,0 @@ -

Document

-

-{
-	'_id': ObjectId('5ec72ffe00316be87cab3927'),
-	'code': Code('function () { return 22; }'),
-	'binary': BinData(1, '232sa3d323sd232a32sda3s2d3a2s1d23s21d3sa'),
-	'dbref': DBRef('namespace', ObjectId('5ec72f4200316be87cab3926'), 'db'),
-	'timestamp': Timestamp(0, 0),
-	'long': NumberLong(9223372036854775807),
-	'decimal': NumberDecimal('1000.55'),
-	'integer': 100,
-	'maxkey': MaxKey(),
-	'minkey': MinKey(),
-	'isodate': ISODate('2012-01-01T00:00:00.000Z'),
-	'regexp': RegExp('prism(js)?', 'i'),
-	'string': 'Hello World',
-	'numberArray': [1, 2, 3],
-	'stringArray': ['1','2','3'],
-	'randomKey': null,
-	'object': { 'a': 1, 'b': 2 },
-	'max_key2': MaxKey(),
-	'number': 1234,
-	'invalid-key': 123,
-	noQuotesKey: 'value',
-}
-
- -

Query

-

-db.users.find({
-	_id: { $nin: ObjectId('5ec72ffe00316be87cab3927') },
-	age: { $gte: 18, $lte: 99 },
-	field: { $exists: true }
-})
-
- - -

Update

-

-db.users.updateOne(
-	{
-		_id: ObjectId('5ec72ffe00316be87cab3927')
-	},
-	{
-		$set: { age: 30 },
-		$inc: { updateCount: 1 }, 
-		$push: { updateDates: new Date() } 
-	}
-)
-
- -

Aggregate

-

-db.orders.aggregate([
-	{ $sort : { age : -1 } },
-	{ $project : { age : 1, status : 1, name : 1 } },
-	{ $limit: 5 }
-])
-
diff --git a/examples/prism-monkey.html b/examples/prism-monkey.html deleted file mode 100644 index 6716a9a4ae..0000000000 --- a/examples/prism-monkey.html +++ /dev/null @@ -1,74 +0,0 @@ -

Comments

-
' This is a comment
-
-#Rem            ' This is the start of a comment block
-Some comment    ' We are inside the comment block
-#End
- -

Strings

-
"Hello World"
-"~qHello World~q"
-"~tIndented~n"
- -

Numbers

-
0
-1234
-$3D0DEAD
-$CAFEBABE
-
-.0
-0.0
-.5
-0.5
-1.0
-1.5
-1.00001
-3.14159265
- -

Variable types

-
Local myVariable:Bool = True
-Local myVariable? = True
-Local myVariable:Int = 1024
-Local myVariable% = 1024
-Local myVariable:Float = 3.141516
-Local myVariable# = 3.141516
-Local myVariable:String = "Hello world"
-Local myVariable$ = "Hello world"
- -

Full example

-
Import mojo
-
-Class MyApp Extends App
-
-    Method OnCreate()
-
-        SetUpdateRate 60
-
-    End
-
-    Method OnRender()
-
-        Local date:=GetDate()
-
-        Local months:=["Jan","Feb","Mar","Apr","May","Jun","Jul","Aug","Sep","Oct","Nov","Dec"]
-
-        Local day:=("0"+date[2])[-2..]
-        Local month:=months[date[1]-1]
-        Local year:=date[0]
-        Local hour:=("0"+date[3])[-2..]
-        Local min:=("0"+date[4])[-2..]
-        Local sec:=("0"+date[5])[-2..] + "." + ("00"+date[6])[-3..]
-
-        Local now:=hour+":"+min+":"+sec+"  "+day+" "+month+" "+year
-
-        Cls
-        DrawText now,DeviceWidth/2,DeviceHeight/2,.5,.5
-    End
-
-End
-
-Function Main()
-
-    New MyApp
-
-End
\ No newline at end of file diff --git a/examples/prism-moonscript.html b/examples/prism-moonscript.html deleted file mode 100644 index f9dc2dc6a5..0000000000 --- a/examples/prism-moonscript.html +++ /dev/null @@ -1,64 +0,0 @@ -

Full example

-
class List
-  new: (t) =>
-    if t then return t
-
-  append: table.insert
-  join: table.concat
-
-  map: (f,...) => List [f x,... for x in *self]
-
-  -- apply a function on a list in-place
-  apply: (f,...) =>
-    for i = 1,#@ do @[i] = f @[i],...
-    self
-
-  clone: => @slice 1
-
-  slice: (i1,i2=#@) =>
-    -- workaround for MS slice bug
-    if i2 < 0 then i2 = #@ + i2 + 1
-    List [x for x in *self[i1,i2]]
-
-  extend: (other) =>
-    i = #self + 1
-    for o in *other
-        self[i] = o
-        i += 1
-    self
-
-  partition: (pred,...) =>
-    res = {}
-    for x in *@
-        k = pred x,...
-        if not res[k] then res[k] = List!
-        res[k]\append x
-    res
-
-  lpartition: (n,npred,...) =>
-      res = List[List{} for i = 1,n]
-      for x in *@
-        k = npred x,...
-        if k >= 1 and k <= n
-            res[k]\append x
-      res
-
-  __concat: (l1,l2) ->
-        List.clone(l1)\extend l2
-
-  __tostring: =>
-    tmp = @slice(1,10)\apply tostring
-    if #@ > 10 then tmp\append '...'
-    "["..tmp\join(',').."]"
-
--- hack to modify class so its constructor may return a new self
-patch = (klass) -> getmetatable(klass).__call = (cls,...) ->
-    self = setmetatable {}, cls.__base
-    newself = cls.__init self, ...
-    if newself
-        self = setmetatable newself, cls.__base
-    self
-
-patch List
-
-return List
diff --git a/examples/prism-n1ql.html b/examples/prism-n1ql.html deleted file mode 100644 index 1f5866e0e7..0000000000 --- a/examples/prism-n1ql.html +++ /dev/null @@ -1,33 +0,0 @@ -

Comments

-
# /* Multi-line
-comment */
- -

Strings

-
"foo \"bar\" baz"
-'foo \'bar\' baz'
-"Multi-line strings
-are supported"
-'Multi-line strings
-are supported'
- -

Parameters

-
 $1 $2 $3 
- -

Operators

-
SELECT 1 AND 1;
-SELECT 1 OR NULL;
-SELECT EXISTS 1;
-SELECT 2 BETWEEN 1 AND 3;
- -

Functions and keywords

-
SELECT COUNT(*) AS total, MAX(foo) AS max_foo
-FROM `my_bucket`
-WHERE `foo` IS NOT NULL;
-CREATE INDEX productName_index1 ON bucket_name(productName, ProductID)
-WHERE type="product" USING GSI
-WITH {"nodes":["node1:8091", "node2:8091", "node3:8091"]};
- -

Identifiers

-
SELECT *
-FROM `my_bucket`;
-
\ No newline at end of file diff --git a/examples/prism-n4js.html b/examples/prism-n4js.html deleted file mode 100755 index 19e5a6d5de..0000000000 --- a/examples/prism-n4js.html +++ /dev/null @@ -1,114 +0,0 @@ -

Keywords

-

-class C {..}
-interface I {..}
-
-foo(c: C, i: I) {
-    c instanceof C; // ok
-    c instanceof I; // ok
-}
-
- -

Annotations

-

-// Final Methods
-@Final
-private tasks = new Map<string,Task>();
-
-// Redefinition of Members
-@Override
-public async size(): int {
-  …
-}
-
-// Dependency Injection
-@Binder
-@Bind(Storage,StorageInMemory)
-class InMemoryBinder {}
-
-@GenerateInjector @UseBinder(InMemoryBinder)
-export public class TaskManagerTest {
-  …
-}
-
- -

Full example

-

-// A Web User Interface in HTML
-// NOTE: requires full example project bundled with N4JS IDE to run.
-
-import { TaskManager } from "TaskManager";
-import {Application, Response } from "express";
-import express from "express";
-import { Todo } from "model";
-
-
-export class WebUI {
-
-     private app: Application;
-
-     @Inject
-     private manager: TaskManager;
-
-     public start() {
-
-          this.app = express();
-
-          this.app.get('/', async (req, res) => {
-               let page = await this.renderHomePage();
-               res.send(page);
-          });
-
-          this.app.get("/clear", async (req, res) => {
-               await this.manager.clear();
-               redirect(res, '/');
-          });
-
-          this.app.get("/create", async (req, res) => {
-               let values = req.query as ~Object with {type: string, label: string};
-               if (values && values.type === 'Todo' && values.label && values.label.length > 0) {
-                    await this.manager.createTodo(values.label);
-               }
-               redirect(res, '/');
-          });
-
-          this.app.listen(4000, '0.0.0.0', 511, function() {
-               console.log("HTML server listening on http://localhost:4000/");
-          });
-     }
-
-     protected async renderHomePage(): string {
-          let tasks = await this.manager.getTasks();
-          let todos = tasks.filter((task) => task instanceof Todo);
-          return `
-
-<html>
-<body>
-     Your to-do's:
-     <ul>
-     ${
-          todos.length === 0 ? '<li><em>none</em></li>\n'
-          : todos.map((task) =>
-               '<li>' + task.label + ' <small>(id: ' + task.id + ')</small></li>'
-          ).join('\n')
-     }
-     </ul>
-     <hr/>
-     <form action="/create" method="get">
-     <input type="hidden" name="type" value="Todo">
-     Label: <input type="text" name="label"><br>
-     <input type="submit" value="Create Todo">
-     </form>
-     <hr/>
-     <a href="/clear">[Clear All]</a>
-</body>
-</html>
-`;
-     }
-}
-
-function redirect(res: Response, url: string) {
-     res.header('Cache-Control', 'no-cache');
-     res.redirect(301, url);
-}
-
diff --git a/examples/prism-nand2tetris-hdl.html b/examples/prism-nand2tetris-hdl.html deleted file mode 100644 index 318792e2b3..0000000000 --- a/examples/prism-nand2tetris-hdl.html +++ /dev/null @@ -1,23 +0,0 @@ -

Comments

-
// Single line comment
-/* Multi-line
-comment */
- -

Literal values

-
0
-32
-true
-false
- -

Full example

-
/*
- * Checks if two input bits are equal
- */
- 
-CHIP Eq {
-  IN a, b;
-  OUT out; // True iff a=b
-  PARTS:
-    Xor(a=a, b=b, out=uneq);
-    Not(in=uneq, out=out);
-}
diff --git a/examples/prism-naniscript.html b/examples/prism-naniscript.html deleted file mode 100644 index 6d5397bbdc..0000000000 --- a/examples/prism-naniscript.html +++ /dev/null @@ -1,72 +0,0 @@ - -

Comments

-
;Text of Comment
-		;		Comment with tabs before
-
- -

Define

-

->DefineKey define 12 super usefull lines
-
- -

Label

-
# Section
-#Section without whitespace
- # Section with whitespace
-	# SectionWithTab	
-
- -

Command

-

-@
-@ cmdWithWhiteSpaceBefore
-@cmdWithTrailingSemicolon:
-@paramlessCmd
- @cmdWithNoParamsAndWhitespaceBefore
-		@cmdWithNoParamsAndTabBefore
-					 @cmdWithNoParamsAndTabAndSpacesBefore
-           @cmdWithNoParamsWrappedInWhitespaces             
-@cmdWithNoParamWithTrailingSpace 
-@cmdWithNoParamWithMultipleTrailingSpaces   
-@cmdWithNoParamWithTrailingTab	
-@cmdWithNoParamWithTrailingTabAndSpaces	  
-@cmdWithPositiveIntParam 1
-@cmdWithNegativeIntParam -1
-@cmdWithPositiveFloatParamAndNoFraction 1.
-@cmdWithPositiveFloatParamAndFraction 1.10
-@cmdWithPositiveHegativeFloatParamAndNoFraction -1.
-@cmdWithPositiveHegativeFloatParamAndFraction -1.10
-@cmdWithBoolParamAndPositive true
-@cmdWithBoolParamAndNegative false
-@cmdWithStringParam hello$co\:mma"d"
-@cmdWithQuotedStringNamelessParameter "hello grizzly"
-@cmdWithQuotedStringNamelessParameterWithEscapedQuotesInTheValue "hello \"grizzly\""
-@set choice="moe"
-@command hello.grizzly
-@command one,two,three
-@command 1,2,3
-@command true,false,true
-@command hi:grizzly
-@command hi:1
-@command hi:true
-@command 1 in:forest danger:true
-@char 1 pos:0.25,-0.75 look:right
-
- -

Generic Text

-
Generic text with inlined commands[i] example[command 1 danger:true] more text here [act danger:false true:false]
-"Integer: a = {a} malesuada a + b = {a + b}", Random(a, b) = {Random(a, b)}, Random("foo", "bar", "foobar") = {Random("foo", "bar", "foobar")}
-UnclosedExpression{ab{cndum dui dolor tincidu{nt [s[fa]sdf [
-"Integer: a = {a} malesuada a + b = {a + b}", Random(a, b) = {Random(a, b)}, Random("foo", "bar", "foobar") = {Random("foo", "bar", "foobar")},}
-
- -

Expressions

-
{}
-{ Abs(a, d) + 12 - 1 / -230.0 + "Lol ipsum" }
-Expressions inside a generic text line: Loreim ipsu,{ Abs(a, d) + 12 - 1 / -230.0 + "Lol ipsum" } doler sit amen {¯\_(ツ)_/¯}.
-@ExpressionInsteadOfNamelessParameterValue {x > 0}
-@ExpressionBlendedWithNamelessParameterValue sdf{x > 0}df
-@ExpressionsInsideNamedParameterValueWrappedInQuotes text:"{a} < {b}"
-@ExpressionsBlendedWithNamedParameterValue param:32r2f,df{x > 0},d.{Abs(0) + 12.24 > 0}ff
-@ExpressionsInsteadOfNamelessParameterAndQuotedParameter {remark} if:remark=="Saying \\"Stop { "the" } car\\" was a mistake."
-
diff --git a/examples/prism-nasm.html b/examples/prism-nasm.html deleted file mode 100644 index e76146dfb7..0000000000 --- a/examples/prism-nasm.html +++ /dev/null @@ -1,59 +0,0 @@ -

Comments

-
; This is a comment
- -

Labels

-
label1:     ; a non-local label
-.local:     ; this is really label1.local
-..@foo:     ; this is a special symbol
-label2:     ; another non-local label
-.local:     ; this is really label2.local
-
- -

Registers

-
st0
-st1
-ax
-rax
-zmm4
- -

Strings

-

-mov eax,'abcd'
-
-db    'hello'               ; string constant
-db    'h','e','l','l','o'   ; equivalent character constants
-dd    'ninechars'           ; doubleword string constant
-dd    'nine','char','s'     ; becomes three doublewords
-db    'ninechars',0,0,0     ; and really looks like this
-
-db `\u263a`            ; UTF-8 smiley face
-db `\xe2\x98\xba`      ; UTF-8 smiley face
-db 0E2h, 098h, 0BAh    ; UTF-8 smiley face
-
- -

Numbers

-
mov     ax,200          ; decimal
-mov     ax,0200         ; still decimal
-mov     ax,0200d        ; explicitly decimal
-mov     ax,0d200        ; also decimal
-mov     ax,0c8h         ; hex
-mov     ax,$0c8         ; hex again: the 0 is required
-mov     ax,0xc8         ; hex yet again
-mov     ax,0hc8         ; still hex
-mov     ax,310q         ; octal
-mov     ax,310o         ; octal again
-mov     ax,0o310        ; octal yet again
-mov     ax,0q310        ; octal yet again
-mov     ax,11001000b    ; binary
-
-db    -0.2                    ; "Quarter precision"
-dw    -0.5                    ; IEEE 754r/SSE5 half precision
-dd    1.2                     ; an easy one
-dd    0x1p+2                  ; 1.0x2^2 = 4.0
-dq    0x1p+32                 ; 1.0x2^32 = 4 294 967 296.0
-dq    1.e10                   ; 10 000 000 000.0
-dq    1.e+10                  ; synonymous with 1.e10
-dq    1.e-10                  ; 0.000 000 000 1
-dt    3.141592653589793238462 ; pi
-do    1.e+4000                ; IEEE 754r quad precision
-
diff --git a/examples/prism-neon.html b/examples/prism-neon.html deleted file mode 100644 index 831697abfe..0000000000 --- a/examples/prism-neon.html +++ /dev/null @@ -1,16 +0,0 @@ -

Full example

-
# my web application config
-
-php:
-	date.timezone: Europe/Prague
-	zlib.output_compression: true  # use gzip
-
-database:
-	driver: mysql
-	username: root
-	password: beruska92
-
-users:
-	- Dave
-	- Kryten
-	- Rimmer
diff --git a/examples/prism-nevod.html b/examples/prism-nevod.html deleted file mode 100644 index a9d4cf1a5f..0000000000 --- a/examples/prism-nevod.html +++ /dev/null @@ -1,59 +0,0 @@ -

Comment

-
/* This is
-multi-line
-comment */
-// This is single-line comment
- -

String

-
"text in double quotes"
-'text in single quotes'
-'case-sensitive text'!
-'text ''Nevod'' in quotes'
-"text ""Nevod"" in double quotes"
-'text prefix'*
-'case-sensitive text prefix'!*
- -

Keyword

-
@inside
-@outside
-@having
-@search
-@where
- -

Package Import

-
@require "Common/DateTime.np"
-@require "Common/Url.np"
- -

Namespace

-
@namespace My { }
-@namespace My.Domain { }
- -

Pattern

-
@pattern #Percentage = Num + ?Space + {'%', 'pct.', 'pct', 'percent'};
-@pattern #GUID = Word(8) + [3 '-' + Word(4)] + '-' + Word(12);
-@pattern #HashTag = '#' + {AlphaNum, Alpha, '_'} + [0+ {Word, '_'}];
- -

Full Example

-
@namespace Common
-{
-  @search @pattern Url(Domain, Path, Query, Anchor) =
-    Method + Domain:Url.Domain + ?Port + ?Path:Url.Path +
-    ?Query:Url.Query + ?Anchor:Url.Anchor
-  @where
-  {
-    Method = {'http', 'https' , 'ftp', 'mailto', 'file', 'data', 'irc'} + '://';
-    Domain = Word + [1+ '.' + Word + [0+ {Word, '_', '-'}]];
-    Port = ':' + Num;
-    Path = ?'/' + [0+ {Word, '/', '_', '+', '-', '%', '.'}];
-    Query = '?' + ?(Param + [0+ '&' + Param])
-    @where
-    {
-      Param = Identifier + '=' + Identifier
-      @where
-      {
-        Identifier = {Alpha, AlphaNum, '_'} + [0+ {Word, '_'}];
-      };
-    };
-    Anchor(Value) = '#' + Value:{Word};
-  };
-}
\ No newline at end of file diff --git a/examples/prism-nginx.html b/examples/prism-nginx.html deleted file mode 100644 index b00ffbb2aa..0000000000 --- a/examples/prism-nginx.html +++ /dev/null @@ -1,26 +0,0 @@ -

Comments

-
# This is a comment
- -

Variables

-
fastcgi_param SERVER_NAME $server_name;
- -

Server Block

-

-server { # simple reverse-proxy
-  listen       80;
-  server_name  domain2.com www.domain2.com;
-  access_log   logs/domain2.access.log  main;
-  
-  # serve static files
-  
-  location ~ ^/(images|javascript|js|css|flash|media|static)/  {
-    root    /var/www/virtual/big.server.com/htdocs;
-    expires 30d;
-  }
-
-  # pass requests for dynamic content to rails/turbogears/zope, et al
-  location / {
-    proxy_pass      http://127.0.0.1:8080;
-  }
-}
-
\ No newline at end of file diff --git a/examples/prism-nim.html b/examples/prism-nim.html deleted file mode 100644 index 80296fb6ad..0000000000 --- a/examples/prism-nim.html +++ /dev/null @@ -1,222 +0,0 @@ -

Comments

-
# This is a comment
- -

Strings

-
"This is a string."
-"This is a string with \"quotes\" in it."
-"""This is
-a "multi-line"
-string."""
-""""A long string within quotes.""""
-R"This is a raw string."
-r"Some ""quotes"" inside a raw string."
-r"""Raw strings
-can also be multi-line."""
-foo"This is a generalized raw string literal."
-bar"""This is also
-a generalized raw string literal."""
- -

Characters

-
'a'
-'\''
-'\t'
-'\15'
-'\xFC'
- -

Numbers

-
42
-0xaf
-0xf_2_c
-0o07
-0b1111_0000
-0B0_10001110100_0000101001000111101011101111111011000101001101001001'f64
-9_000'u
-32.
-32.1f32
-32.e-5
-32.2e+2
-2'i16
-2i16
-0xfe'f32
- -

Full example

-
# Example from http://nim-by-example.github.io/oop_macro/
-import macros
-
-macro class*(head: expr, body: stmt): stmt {.immediate.} =
-  # The macro is immediate so that it doesn't
-  # resolve identifiers passed to it
-
-  var typeName, baseName: NimNode
-
-  if head.kind == nnkIdent:
-    # `head` is expression `typeName`
-    # echo head.treeRepr
-    # --------------------
-    # Ident !"Animal"
-    typeName = head
-
-  elif head.kind == nnkInfix and $head[0] == "of":
-    # `head` is expression `typeName of baseClass`
-    # echo head.treeRepr
-    # --------------------
-    # Infix
-    #   Ident !"of"
-    #   Ident !"Animal"
-    #   Ident !"RootObj"
-    typeName = head[1]
-    baseName = head[2]
-
-  else:
-    quit "Invalid node: " & head.lispRepr
-
-  # echo treeRepr(body)
-  # --------------------
-  # StmtList
-  #   VarSection
-  #     IdentDefs
-  #       Ident !"name"
-  #       Ident !"string"
-  #       Empty
-  #     IdentDefs
-  #       Ident !"age"
-  #       Ident !"int"
-  #       Empty
-  #   MethodDef
-  #     Ident !"vocalize"
-  #     Empty
-  #     Empty
-  #     FormalParams
-  #       Ident !"string"
-  #     Empty
-  #     Empty
-  #     StmtList
-  #       StrLit ...
-  #   MethodDef
-  #     Ident !"age_human_yrs"
-  #     Empty
-  #     Empty
-  #     FormalParams
-  #       Ident !"int"
-  #     Empty
-  #     Empty
-  #     StmtList
-  #       DotExpr
-  #         Ident !"this"
-  #         Ident !"age"
-
-  # create a new stmtList for the result
-  result = newStmtList()
-
-  # var declarations will be turned into object fields
-  var recList = newNimNode(nnkRecList)
-
-  # Iterate over the statements, adding `this: T`
-  # to the parameters of functions
-  for node in body.children:
-    case node.kind:
-
-      of nnkMethodDef, nnkProcDef:
-        # inject `this: T` into the arguments
-        let p = copyNimTree(node.params)
-        p.insert(1, newIdentDefs(ident"this", typeName))
-        node.params = p
-        result.add(node)
-
-      of nnkVarSection:
-        # variables get turned into fields of the type.
-        for n in node.children:
-          recList.add(n)
-
-      else:
-        result.add(node)
-
-  # The following prints out the AST structure:
-  #
-  # import macros
-  # dumptree:
-  #   type X = ref object of Y
-  #     z: int
-  # --------------------
-  # TypeSection
-  #   TypeDef
-  #     Ident !"X"
-  #     Empty
-  #     RefTy
-  #       ObjectTy
-  #         Empty
-  #         OfInherit
-  #           Ident !"Y"
-  #         RecList
-  #           IdentDefs
-  #             Ident !"z"
-  #             Ident !"int"
-  #             Empty
-
-  result.insert(0,
-    if baseName == nil:
-      quote do:
-        type `typeName` = ref object of RootObj
-    else:
-      quote do:
-        type `typeName` = ref object of `baseName`
-  )
-  # Inspect the tree structure:
-  #
-  # echo result.treeRepr
-  # --------------------
-  # StmtList
-  #   StmtList
-  #     TypeSection
-  #       TypeDef
-  #         Ident !"Animal"
-  #         Empty
-  #         RefTy
-  #           ObjectTy
-  #             Empty
-  #             OfInherit
-  #               Ident !"RootObj"
-  #             Empty   <= We want to replace this
-  #   MethodDef
-  #   ...
-
-  result[0][0][0][2][0][2] = recList
-
-  # Lets inspect the human-readable version of the output
-  # echo repr(result)
-  # Output:
-  #  type
-  #    Animal = ref object of RootObj
-  #      name: string
-  #      age: int
-  #
-  #  method vocalize(this: Animal): string =
-  #    "..."
-  #
-  #  method age_human_yrs(this: Animal): int =
-  #    this.age
-
-# ---
-
-class Animal of RootObj:
-  var name: string
-  var age: int
-  method vocalize: string = "..."
-  method age_human_yrs: int = this.age # `this` is injected
-
-class Dog of Animal:
-  method vocalize: string = "woof"
-  method age_human_yrs: int = this.age * 7
-
-class Cat of Animal:
-  method vocalize: string = "meow"
-
-# ---
-
-var animals: seq[Animal] = @[]
-animals.add(Dog(name: "Sparky", age: 10))
-animals.add(Cat(name: "Mitten", age: 10))
-
-for a in animals:
-  echo a.vocalize()
-  echo a.age_human_yrs()
diff --git a/examples/prism-nix.html b/examples/prism-nix.html deleted file mode 100644 index 9015776948..0000000000 --- a/examples/prism-nix.html +++ /dev/null @@ -1,46 +0,0 @@ -

Comments

-
#
-# Single line comment
-/* Multi-line
-comment */
- -

String

-
""
-"foo\"bar"
-"foo
-bar"
-
-''''
-''foo'''bar''
-''
-foo
-bar
-''
- -

String interpolation

-
"foo${42}bar"
-"foo\${42}bar" # This is not interpolated
-''foo${42}bar''
-''foo''${42}bar'' # This is not interpolated
- -

URLs and paths

-
ftp://ftp.nluug.nl/pub/gnu/hello/hello-2.1.1.tar.gz
-http://example.org/foo.tar.bz2
-/bin/sh
-./builder.sh
-~/foo.bar
- -

Integers, booleans and null

-
0
-42
-
-true
-false
-
-null
- -

Builtin functions

-
name = baseNameOf (toString url);
-imap =
-	if builtins ? genList then
-		f: list: genList (n: f (n + 1) (elemAt list n)) (length list)
\ No newline at end of file diff --git a/examples/prism-nsis.html b/examples/prism-nsis.html deleted file mode 100644 index 193791bbf9..0000000000 --- a/examples/prism-nsis.html +++ /dev/null @@ -1,18 +0,0 @@ -

Comments

-
; Single line comment
-# Single line comment
-/* Multi-line
-comment */
- -

Strings

-
"foo \"bar\" baz"
-'foo \'bar\' baz'
- -

Variables

-
LicenseLangString myLicenseData ${LANG_ENGLISH} "bigtest.nsi"
-LicenseData $(myLicenseData)
-StrCmp $LANGUAGE ${LANG_ENGLISH} 0 +2
- -

Compiler commands

-
!define VERSION "1.0.3"
-!insertmacro MyFunc ""
\ No newline at end of file diff --git a/examples/prism-objectivec.html b/examples/prism-objectivec.html deleted file mode 100644 index 025a8d71e3..0000000000 --- a/examples/prism-objectivec.html +++ /dev/null @@ -1,44 +0,0 @@ -

Full example

-
#import <UIKit/UIKit.h>
-#import "Dependency.h"
-
-@protocol WorldDataSource
-@optional
-- (NSString*)worldName;
-@required
-- (BOOL)allowsToLive;
-@end
-
-@interface Test : NSObject <HelloDelegate, WorldDataSource> {
-  NSString *_greeting;
-}
-
-@property (nonatomic, readonly) NSString *greeting;
-- (IBAction) show;
-@end
-
-@implementation Test
-
-@synthesize test=_test;
-
-+ (id) test {
-  return [self testWithGreeting:@"Hello, world!\nFoo bar!"];
-}
-
-+ (id) testWithGreeting:(NSString*)greeting {
-  return [[[self alloc] initWithGreeting:greeting] autorelease];
-}
-
-- (id) initWithGreeting:(NSString*)greeting {
-  if ( (self = [super init]) ) {
-    _greeting = [greeting retain];
-  }
-  return self;
-}
-
-- (void) dealloc {
-  [_greeting release];
-  [super dealloc];
-}
-
-@end
\ No newline at end of file diff --git a/examples/prism-ocaml.html b/examples/prism-ocaml.html deleted file mode 100644 index 85aa10750d..0000000000 --- a/examples/prism-ocaml.html +++ /dev/null @@ -1,60 +0,0 @@ -

Comments

-
(* Simple comment *)
-(* Multi-line
-comment *)
- -

Numbers

-
42
-3.14159
-42.
-2.4E+2
-10_452_102
-0xf4
-0xff_10_41
-0o427
-0b1100_1111_0000
- -

Strings and characters

-
"Simple string."
-"String with \"quotes\" in it."
-'c' `c`
-'\'' `\``
-'\123' `\123`
-'\xf4'
- -

Full example

-
module Make_interval(Endpoint : Comparable) = struct
-
-    type t = | Interval of Endpoint.t * Endpoint.t
-             | Empty
-
-    (** [create low high] creates a new interval from [low] to
-        [high].  If [low > high], then the interval is empty *)
-    let create ~low ~high =
-      if Endpoint.compare low high > 0 then Empty
-      else Interval (low,high)
-
-    (** Returns true iff the interval is empty *)
-    let is_empty = function
-      | Empty -> true
-      | Interval _ -> false
-
-    (** [contains t x] returns true iff [x] is contained in the
-        interval [t] *)
-    let contains t x =
-      match t with
-      | Empty -> false
-      | Interval (l,h) ->
-        Endpoint.compare x l >= 0 && Endpoint.compare x h <= 0
-
-    (** [intersect t1 t2] returns the intersection of the two input
-        intervals *)
-    let intersect t1 t2 =
-      let min x y = if Endpoint.compare x y <= 0 then x else y in
-      let max x y = if Endpoint.compare x y >= 0 then x else y in
-      match t1,t2 with
-      | Empty, _ | _, Empty -> Empty
-      | Interval (l1,h1), Interval (l2,h2) ->
-        create ~low:(max l1 l2) ~high:(min h1 h2)
-
-  end ;;
diff --git a/examples/prism-odin.html b/examples/prism-odin.html deleted file mode 100644 index 03290e8da8..0000000000 --- a/examples/prism-odin.html +++ /dev/null @@ -1,12 +0,0 @@ -

Example

- -
package main
-
-import "core:fmt"
-
-main :: proc() {
-  i: int
-  for i := 0; i < 100; i += 1 {
-    fmt.println(i, " bottles of beer on the wall.\n")
-  }
-}
diff --git a/examples/prism-opencl.html b/examples/prism-opencl.html deleted file mode 100644 index 6bfb735703..0000000000 --- a/examples/prism-opencl.html +++ /dev/null @@ -1,82 +0,0 @@ -

Note: Use the class "language-opencl" for OpenCL kernel code. - Host code is automatically highlighted with the "language-c" - or "language-cpp" class. -

- -

OpenCL host code

-
// OpenCL functions, constants, etc. are also highlighted in OpenCL host code in the c or cpp language
-cl::Event KernelFilterImages::runSingle(const cl::Image2D& imgSrc, SPImage2D& imgDst)
-{
-	const size_t rows = imgSrc.getImageInfo<CL_IMAGE_HEIGHT>();
-	const size_t cols = imgSrc.getImageInfo<CL_IMAGE_WIDTH>();
-
-	ASSERT(rows > 0 && cols > 0, "The image object seems to be invalid, no rows/cols set");
-	ASSERT(imgSrc.getImageInfo<CL_IMAGE_FORMAT>().image_channel_data_type == CL_FLOAT, "Only float type images are supported");
-	ASSERT(imgSrc.getInfo<CL_MEM_FLAGS>() == CL_MEM_READ_ONLY || imgSrc.getInfo<CL_MEM_FLAGS>() == CL_MEM_READ_WRITE, "Can't read the input image");
-
-	imgDst = std::make_shared<cl::Image2D>(*context, CL_MEM_READ_WRITE, cl::ImageFormat(CL_R, CL_FLOAT), cols, rows);
-
-	cl::Kernel kernel(*program, "filter_single");
-	kernel.setArg(0, imgSrc);
-	kernel.setArg(1, *imgDst);
-	kernel.setArg(2, bufferKernel1);
-	kernel.setArg(3, kernel1.rows);
-	kernel.setArg(4, kernel1.rows / 2);
-	kernel.setArg(5, kernel1.cols);
-	kernel.setArg(6, kernel1.cols / 2);
-	kernel.setArg(7, border);
-
-	cl::Event eventFilter;
-	const cl::NDRange global(cols, rows);
-	queue->enqueueNDRangeKernel(kernel, cl::NullRange, global, cl::NullRange, &events, &eventFilter);
-}
- -

OpenCL kernel code

-
// CLK_ADDRESS_CLAMP_TO_EDGE = aaa|abcd|ddd
-constant sampler_t sampler = CLK_NORMALIZED_COORDS_FALSE | CLK_ADDRESS_CLAMP_TO_EDGE | CLK_FILTER_NEAREST;
-typedef float type_single;
-
-type_single filter_sum_single_3x3(read_only image2d_t imgIn,
-                                  constant float* filterKernel,
-                                  const int2 coordBase,
-                                  const int border)
-{
-    type_single sum = (type_single)(0.0f);
-    const int rows = get_image_height(imgIn);
-    const int cols = get_image_width(imgIn);
-    int2 coordCurrent;
-    int2 coordBorder;
-    float color;
-
-    // Image patch is row-wise accessed
-    // Filter kernel is centred in the middle
-    #pragma unroll
-    for (int y = -ROWS_HALF_3x3; y <= ROWS_HALF_3x3; ++y)       // Start at the top left corner of the filter
-    {
-        coordCurrent.y = coordBase.y + y;
-        #pragma unroll
-        for (int x = -COLS_HALF_3x3; x <= COLS_HALF_3x3; ++x)   // And end at the bottom right corner
-        {
-            coordCurrent.x = coordBase.x + x;
-            coordBorder = borderCoordinate(coordCurrent, rows, cols, border);
-            color = read_imagef(imgIn, sampler, coordBorder).x;
-
-            const int idx = (y + ROWS_HALF_3x3) * COLS_3x3 + x + COLS_HALF_3x3;
-            sum += color * filterKernel[idx];
-        }
-    }
-
-    return sum;
-}
-
-kernel void filter_single_3x3(read_only image2d_t imgIn,
-                              write_only image2d_t imgOut,
-                              constant float* filterKernel,
-                              const int border)
-{
-    int2 coordBase = (int2)(get_global_id(0), get_global_id(1));
-
-    type_single sum = filter_sum_single_3x3(imgIn, filterKernel, coordBase, border);
-
-    write_imagef(imgOut, coordBase, sum);
-}
diff --git a/examples/prism-openqasm.html b/examples/prism-openqasm.html deleted file mode 100644 index 35ab2fc921..0000000000 --- a/examples/prism-openqasm.html +++ /dev/null @@ -1,43 +0,0 @@ -

Full example

-
// https://github.com/Qiskit/openqasm
-/*
- * Repeat-until-success circuit for Rz(theta),
- * cos(theta-pi)=3/5, from Nielsen and Chuang, Chapter 4.
- */
-OPENQASM 3;
-include "stdgates.inc";
-
-/*
- * Applies identity if out is 01, 10, or 11 and a Z-rotation by
- * theta + pi where cos(theta)=3/5 if out is 00.
- * The 00 outcome occurs with probability 5/8.
- */
-def segment qubit[2]:anc, qubit:psi -> bit[2] {
-  bit[2] b;
-  reset anc;
-  h anc;
-  ccx anc[0], anc[1], psi;
-  s psi;
-  ccx anc[0], anc[1], psi;
-  z psi;
-  h anc;
-  measure anc -> b;
-  return b;
-}
-
-qubit input;
-qubit ancilla[2];
-bit flags[2] = "11";
-bit output;
-
-reset input;
-h input;
-
-// braces are optional in this case
-while(int(flags) != 0) {
-  flags = segment ancilla, input;
-}
-rz(pi - arccos(3 / 5)) input;
-h input;
-output = measure input;  // should get zero
-
diff --git a/examples/prism-oz.html b/examples/prism-oz.html deleted file mode 100644 index d70ec2edaa..0000000000 --- a/examples/prism-oz.html +++ /dev/null @@ -1,89 +0,0 @@ -

Comments

-
%
-% Foobar
-
-/* Foo
-bar */
- -

Strings

-
""
-"Foo \"bar\" baz"
- -

Numbers

-
0
-42
-0154
-0xBadFace
-0B0101
-3.14159
-2e8
-3.E~7
-4.8E12
-&0
-&a
-&\n
-&\124
- -

Functions and procedures

-
proc {Max X Y Z}
-{Browse Z}
-f(M Y)
- -

Full example

-
proc {DisMember X Ys}
-   dis Ys = X|_ [] Yr in Ys = _|Yr {DisMember X Yr} end
-end
-
-class DataBase from BaseObject
-   attr d
-   meth init
-      d := {NewDictionary}
-   end
-   meth dic($) @d end
-   meth tell(I)
-      case {IsFree I.1} then
-         raise database(nonground(I)) end
-      else
-         Is = {Dictionary.condGet @d I.1 nil} in
-         {Dictionary.put @d I.1 {Append Is [I]}}
-      end
-   end
-   meth ask(I)
-      case {IsFree I} orelse {IsFree I.1} then
-         {DisMember I {Flatten {Dictionary.items @d}}}
-      else
-         {DisMember I {Dictionary.condGet @d I.1 nil}}
-      end
-   end
-   meth entries($)
-      {Dictionary.entries @d}
-   end
-end
-
-declare
-proc {Dynamic ?Pred}
-   Pred = {New DataBase init}
-end
-proc {Assert P I}
-   {P tell(I)}
-end
-proc {Query P I}
-   {P ask(I)}
-end
-
-EdgeP = {Dynamic}
-{ForAll
-[edge(1 2)
- edge(2 1)   % Cycle
- edge(2 3)
- edge(3 4)
- edge(2 5)
- edge(5 6)
- edge(4 6)
- edge(6 7)
- edge(6 8)
- edge(1 5)
- edge(5 1)  % Cycle
-]
-proc {$ I} {Assert EdgeP I} end
-}
\ No newline at end of file diff --git a/examples/prism-parigp.html b/examples/prism-parigp.html deleted file mode 100644 index 029302bc31..0000000000 --- a/examples/prism-parigp.html +++ /dev/null @@ -1,20 +0,0 @@ -

Comments

-
\\ Single line comment
-/* Multi line
-comment */
- -

Strings

-
""
-"Foo \"bar\" baz"
- -

Numbers

-
0.
-42
-3 . 14 15 9
-5.2 E +12
-.89
- -

Ignored whitespaces

-
p r i n t ("hello")
-if err(1/i, E, print (E))
-a + = b \ / c
\ No newline at end of file diff --git a/examples/prism-parser.html b/examples/prism-parser.html deleted file mode 100644 index c2fc79e570..0000000000 --- a/examples/prism-parser.html +++ /dev/null @@ -1,70 +0,0 @@ -

Comments

-
$foo[bar] # Some comment
- -

Variables and functions

-
@navigation[]
-$sections[^table::load[sections.cfg]]
-$sections.uri
- -

Literals

-
$foo(3+$bar)
-^switch[$sMode]{
-	^case[def]{$result(true)}
-}
-^if(in "/news/"){}
- -

Escape sequences

-
^^
-^"
-^;
- -

Embedded in markup

-
<nav>
-	<ul>
-	^sections.menu{
-		<li>
-			<a href="$sections.uri">$sections.name</a>
-		</li>
-	}
-	</ul>
-</nav>
- -

Full example

-
@CLASS
-MyTable
-
-@create[uParam]
-^switch[$uParam.CLASS_NAME]{
-   ^case[string;void]{$t[^table::create{$uParam}]}
-   ^case[table;MyTable]{$t[^table::create[$uParam]]}
-   ^case[DEFAULT]{^throw[MyTable;Unsupported type $uParam.CLASS_NAME]}
-}
-
-# method will return value in different calling contexts
-@GET[sMode]
-^switch[$sMode]{
-   ^case[table]{$result[$t]}
-   ^case[bool]{$result($t!=0)}
-   ^case[def]{$result(true)}
-   ^case[expression;double]{$result($t)}
-   ^case[DEFAULT]{^throw[MyTable;Unsupported mode '$sMode']}
-}
-
-
-# method will handle access to the "columns"
-@GET_DEFAULT[sName]
-$result[$t.$sName]
-
-
-# wrappers for all existing methods are required
-@count[]
-^t.count[]
-
-@menu[jCode;sSeparator]
-^t.menu{$jCode}[$sSeparator]
-
-
-# new functionality
-@remove[iOffset;iLimit]
-$iLimit(^iLimit.int(0))
-$t[^t.select(^t.offset[]<$iOffset || ^t.offset[]>=$iOffset+$iLimit)]
diff --git a/examples/prism-pascal.html b/examples/prism-pascal.html deleted file mode 100644 index dfea11a61d..0000000000 --- a/examples/prism-pascal.html +++ /dev/null @@ -1,65 +0,0 @@ -

Comments

-
(* This is an
-old style comment *)
-{ This is a
-Turbo Pascal comment }
-// This is a Delphi comment.
- -

Strings and characters

-
'This is a pascal string'
-''
-'a'
-^G
-#7
-#$f4
-'A tabulator character: '#9' is easy to embed'
- -

Numbers

-
123
-123.456
-132.456e-789
-132.456e+789
-$7aff
-&17
-%11110101
- -

Full example

-
Type
-    Str25    = String[25];
-    TBookRec = Record
-                Title, Author,
-                ISBN  : Str25;
-                Price : Real;
-               End;
-
-Procedure EnterNewBook(var newBook : TBookRec);
-Begin
- Writeln('Please enter the book details: ');
- Write('Book Name: ');
- Readln(newBook.Title);
- Write('Author: ');
- Readln(newBook.Author);
- Write('ISBN: ');
- Readln(newBook.ISBN);
- Write('Price: ');
- Readln(newBook.Price);
-End;
-
-Var
-    bookRecArray : Array[1..10] of TBookRec;
-    i            : 1..10;
-
-Begin
- For i := 1 to 10 do
-  EnterNewBook(bookRecArray[i]);
- Writeln('Thanks for entering the book details');
- Write('Now choose a record to display from 1 to 10: ');
- Readln(i);
- Writeln('Here are the book details of record #',i,':');
- Writeln;
- Writeln('Title:  ', bookRecArray[i].Title);
- Writeln('Author: ', bookRecArray[i].Author);
- Writeln('ISBN:   ', bookRecArray[i].ISBN);
- Writeln('Price:  ', bookRecArray[i].Price);
- Readln;
-End.
\ No newline at end of file diff --git a/examples/prism-pascaligo.html b/examples/prism-pascaligo.html deleted file mode 100644 index 4562c5082e..0000000000 --- a/examples/prism-pascaligo.html +++ /dev/null @@ -1,63 +0,0 @@ -

Comments

-
// Single line comment
-(* Multi-line
-comment *)
- -

Strings

-
"foo \"bar\" baz";
-'foo \'bar\' baz';
- -

Numbers

-
123
-123.456
--123.456
-1e-23
-123.456E789
-0xaf
-0xAF
-
- -

Functions

-
foo()
-Bar()
-_456()
-
- -

Full Example

-

-function pop (const h : heap) : (heap * heap_element * nat) is
-	begin
-		const result : heap_element = get_top (h) ;
-		var s : nat := size(h) ;
-		const last : heap_element = get_force(s, h) ;
-		remove s from map h ;
-		h[1n] := last ;
-		s := size(h) ;
-		var i : nat := 0n ;
-		var largest : nat := 1n ;
-		var left : nat := 0n ;
-		var right : nat := 0n ;
-		var c : nat := 0n ;
-		while (largest =/= i) block {
-			c := c + 1n ;
-			i := largest ;
-			left := 2n * i ;
-			right := left + 1n ;
-			if (left <= s) then begin
-				if (heap_element_lt(get_force(left , h) , get_force(i , h))) then begin
-					largest := left ;
-					const tmp : heap_element = get_force(i , h) ;
-					h[i] := get_force(left , h) ;
-					h[left] := tmp ;
-				end else skip ;
-			end else if (right <= s) then begin
-				if (heap_element_lt(get_force(right , h) , get_force(i , h))) then begin
-					largest := right ;
-					const tmp : heap_element = get_force(i , h) ;
-					h[i] := get_force(right , h) ;
-					h[left] := tmp ;
-				end else skip ;
-			end else skip ;
-		}
-	end with (h , result , c)
-
diff --git a/examples/prism-pcaxis.html b/examples/prism-pcaxis.html deleted file mode 100644 index 59ab31141d..0000000000 --- a/examples/prism-pcaxis.html +++ /dev/null @@ -1,35 +0,0 @@ -

Full example

-
CHARSET="ANSI";
-AXIS-VERSION="2000";
-LANGUAGE="en";
-CREATION-DATE="20170406 11:08";
-TIMEVAL("time")=TLIST(A1, "1994"-"1996");
-SUBJECT-AREA="";
-UNITS="Number";
-
-STUB="County","Sex";
-VALUES("County")="State","Carlow","Dublin","Kildare","Kilkenny","Laois","Longford","Louth","Meath","Offaly","Westmeath","Wexford",
-"Wicklow","Clare","Cork","Kerry","Limerick","Tipperary","Waterford","Galway","Leitrim","Mayo","Roscommon","Sligo","Cavan",
-"Donegal","Monaghan";
-VALUES("Sex")="Both sexes","Male","Female";
-VALUES[de]("Sex")="Beide Geschlechter","Mann","Frau";
-CODES("County")="-","01","02","03","04","05","06","07","08","09","10","11","12","13","14","15","16","17","18","19","20","21","22","23","24","25","26";
-CODES("Sex")="-","1","2";
-
-DATA=
-47163 87913 70192 84531 93120 343 5911 47038 51126 47870 95976 5643 66043 38987 63125 46882
-57422 89992 11661 35817 92686 21781 37230 80669 14129 56688 81300 20184 88680 52135 17148 28192
-92218 99175 76054 79907 90207 50547 31522 4244 91079 58776 83402 54109 21254 42946 83519 31242
-10925 37377 45279 19704 96633 51732 34458 9746 91761 42687 51681 54409 61058 74227 70802 34546
-64862 12022 29896 23616 50371 89808 57186 63895 94767 76388 66475 56716 50133 6604 52853 40763
-70558 74672 58190 40909 6869 49937 9271 28067 99656 25674 69442 20608 28046 73287 60416 77515
-51639 15516 40968 95524 6694 12956 83150 77099 45687 27241 6492 94966 36856 60693 720 74671
-17309 4831 69376 67757 67499 69029 5209 50738 86947 77747 10996 9167 69176 98856 29531 5865
-27654 52277 62293 30179 85049 76961 92772 65142 16252 6768 55784 20556 26088 97219 97245 44060
-64577 91018 75157 42780 96186 62948 73288 74597 2145 16047 1671 2690 2275 45398 71478 53720
-94832 91800 10398 84830 6009 9024 53132 97850 63832 13269 45376 38564 60343 85293 9330 16810
-24898 76675 32778 26905 40945 37569 43532 38650 38316 75398 60829 91004 97946 49080 93534 78275
-20002 87183 80802 56487 12666 18416 91632 74573 70729 97984 48479 93014 10281 90382 28497 15366
-29720 25646 98513 47065 37662 94058 17383 47234 87293 37849 32087 98641 62012 12584 35492 87090
-85157 90539 31005 67590 13627 44803 46789 8026 86877 18429 8935 78118 41728 67025 69312 52172
-49224 68064 93025 1195 64873 684 90039 86065 67324 66534 1110 22354 36867 27479 76286 8539
diff --git a/examples/prism-peoplecode.html b/examples/prism-peoplecode.html deleted file mode 100644 index bcd9cd734e..0000000000 --- a/examples/prism-peoplecode.html +++ /dev/null @@ -1,128 +0,0 @@ -

Full example

-
/* Source: https://github.com/chrismalek/psoftToXML/blob/master/psftToXML.pcode */
-
-class psoftToXML
-	method RowsetToXML(&parentNode As XmlNode, &rowSetIn As Rowset) Returns XmlNode;
-	method RecordToXML(&parentNode As XmlNode, &recordIn As Record) Returns XmlNode;
-	method FieldToXML(&ParentNode As XmlNode, &fieldIn As Field) Returns XmlNode;
-	method RowToXML(&ParentNode As XmlNode, &rowIn As Row) Returns XmlNode;
-	method psoftToXML();
-	property array of string fieldsToSkip;
-private
-	instance string &psObjectTypeString;
-end-class;
-
-method psoftToXML
-	&psObjectTypeString = "PSOBJECTTYPE";
-	%This.fieldsToSkip = CreateArrayRept("", 0);
-end-method;
-
-method FieldToXML
-	/+ &ParentNode as XmlNode, +/
-	/+ &fieldIn as Field +/
-	/+ Returns XmlNode +/
-	Local XmlNode &outNode;
-
-	Local XmlNode &fldNode, &tempNode;
-
-	&fldNode = &ParentNode.AddElement(&fieldIn.Name);
-
-	&fldNode.AddAttribute("PSFIELDTYPE", &fieldIn.Type);
-	&fldNode.AddAttribute(%This.psObjectTypeString, "FIELD");
-
-	If &fieldIn.IsEditXlat Then
-		&fldNode.AddAttribute("LongTranslateValue", &fieldIn.LongTranslateValue);
-	End-If;
-
-	Evaluate &fieldIn.Type
-	When = "LONGCHAR"
-	When = "IMAGE"
-	When = "IMAGEREFERENCE"
-		If All(&fieldIn.Value) Then
-
-			&tempNode = &fldNode.AddCDataSection(&fieldIn.Value);
-		End-If;
-		Break;
-
-	When = "NUMBER";
-		&tempNode = &fldNode.AddText(&fieldIn.Value);
-		Break;
-	When-Other
-		If All(&fieldIn.Value) Then
-			&tempNode = &fldNode.AddText(&fieldIn.Value);
-		End-If;
-
-		Break;
-	End-Evaluate;
-
-	Return &outNode;
-end-method;
-
-
-method RecordToXML
-	/+ &parentNode as XmlNode, +/
-	/+ &recordIn as Record +/
-	/+ Returns XmlNode +/
-
-	Local XmlNode &outNode, &fieldNode;
-
-	Local integer &i;
-
-	&outNode = &parentNode.AddElement(&recordIn.Name);
-
-	&outNode.AddAttribute(%This.psObjectTypeString, "RECORD");
-
-	For &i = 1 To &recordIn.FieldCount
-
-		If %This.fieldsToSkip.Find(&recordIn.GetField(&i).Name) <= 0 Then
-			&fieldNode = %This.FieldToXML(&outNode, &recordIn.GetField(&i));
-		End-If;
-	End-For;
-
-	Return &outNode;
-end-method;
-
-
-method RowToXML
-	/+ &ParentNode as XmlNode, +/
-	/+ &rowIn as Row +/
-	/+ Returns XmlNode +/
-
-	Local XmlNode &outNode, &recNode;
-
-	Local integer &i;
-
-	&outNode = &ParentNode.AddElement("ROW");
-	&outNode.AddAttribute(&psObjectTypeString, "ROW");
-	&outNode.AddAttribute("RowNumber", String(&rowIn.RowNumber));
-
-	For &i = 1 To &rowIn.RecordCount
-		&recNode = %This.RecordToXML(&outNode, &rowIn.GetRecord(&i));
-	End-For;
-
-	Local XmlNode &rsNode;
-	For &i = 1 To &rowIn.ChildCount
-		&rsNode = %This.RowsetToXML(&outNode, &rowIn.GetRowset(&i));
-
-	End-For;
-
-	Return &outNode;
-end-method;
-
-
-method RowsetToXML
-	/+ &parentNode as XmlNode, +/
-	/+ &rowSetIn as Rowset +/
-	/+ Returns XmlNode +/
-
-	Local XmlNode &outNode, &rowNode;
-
-	Local integer &i;
-	&outNode = &parentNode.AddElement(&rowSetIn.DBRecordName);
-	&outNode.AddAttribute(&psObjectTypeString, "ROWSET");
-
-	For &i = 1 To &rowSetIn.ActiveRowCount
-		&rowNode = %This.RowToXML(&outNode, &rowSetIn.GetRow(&i));
-	End-For;
-	Return &outNode;
-end-method;
diff --git a/examples/prism-perl.html b/examples/prism-perl.html deleted file mode 100644 index 80a0874818..0000000000 --- a/examples/prism-perl.html +++ /dev/null @@ -1,71 +0,0 @@ -

Comments

-
# Single line comment
-=head1 Here There
-	Be Pods!
-=cut
- -

Strings

-
q/foo bar baz/;
-q awhy not ?a;
-qw(foo bar baz) q{foo bar baz}
-q[foo bar baz] qq<foo bar baz>
-"foo bar baz" 'foo bar baz' `foo bar baz`
- -

Regex

-
m/foo/ s/foo/bar/
-m zfooz s zfoozbarz
-qr(foo) m{foo} s(foo)(bar) s{foo}{bar}
-m[foo] m<foo> tr[foo][bar] s<foo><bar>
-/foo/i
-
- -

Variables

-
${^POSTMATCH}
-$^V
-$element_count = scalar(@whatever);
-keys(%users) = 1000;
-$1, $_, %!;
- -

Numbers

-
12345
-12345.67
-.23E-10 # a very small number
-3.14_15_92 # a very important number
-4_294_967_296 # underscore for legibility
-0xff # hex
-0xdead_beef # more hex
-0377 # octal (only numbers, begins with 0)
-0b011011 # binary
- -

Full example

-
sub read_config_file {
-  my ($class, $filename) = @_;
-
-  unless (defined $filename) {
-    my $home  = File::HomeDir->my_home || '.';
-    $filename = File::Spec->catfile($home, '.pause');
-
-    return {} unless -e $filename and -r _;
-  }
-
-  my %conf;
-  if ( eval { require Config::Identity } ) {
-    %conf = Config::Identity->load($filename);
-    $conf{user} = delete $conf{username} unless $conf{user};
-  }
-  else { # Process .pause manually
-    open my $pauserc, '<', $filename
-      or die "can't open $filename for reading: $!";
-
-    while (<$pauserc>) {
-      chomp;
-      next unless $_ and $_ !~ /^\s*#/;
-
-      my ($k, $v) = /^\s*(\w+)\s+(.+)$/;
-      Carp::croak "multiple enties for $k" if $conf{$k};
-      $conf{$k} = $v;
-    }
-  }
-
-  return \%conf;
-}
diff --git a/examples/prism-php-extras.html b/examples/prism-php-extras.html deleted file mode 100644 index cfe1214e32..0000000000 --- a/examples/prism-php-extras.html +++ /dev/null @@ -1,14 +0,0 @@ -

General

-

This adds new tokens to the PHP language to allow more customization in your theme.

-

Prism's default themes do not support the new tokens, so there will be no visible changes in the following examples.

- -

$this

-
$this->foo = 2;
- -

Global variables

-
$_SERVER;
-$_GET;
-$_POST;
-$argc; $argv;
-
-// and many more
diff --git a/examples/prism-php.html b/examples/prism-php.html deleted file mode 100644 index 23d4bae604..0000000000 --- a/examples/prism-php.html +++ /dev/null @@ -1,67 +0,0 @@ -

Comments

-
// Single line comment
-/* Multi-line
-comment */
-# Shell-like comment
- -

Strings

-
'foo \'bar\' baz'
-"foo \"bar\" baz"
-"a string # containing an hash"
-$foo = <<<FOO
-    Heredoc strings are supported too!
-FOO;
-$bar = <<<'BAR'
-    And also Nowdoc strings
-BAR;
- -

Variables

-
$some_var = 5;
-$otherVar = "Some text";
-$null = null;
-$false = false;
- -

Functions

-
$json = json_encode($my_object);
-$array1 = array("a" => "green", "red", "blue", "red");
-$array2 = array("b" => "green", "yellow", "red");
-$result = array_diff($array1, $array2);
- -

Constants

-
define('MAXSIZE', 42);
-echo MAXSIZE;
-json_decode($json, false, 512, JSON_BIGINT_AS_STRING)
- -

PHP 5.3+ support

-
namespace my\name;
-$c = new \my\name\MyClass;
-$arr = [1,2,3];
-trait ezcReflectionReturnInfo {
-    function getReturnType() { /*1*/ }
-    function getReturnDescription() { /*2*/ }
-}
-function gen_one_to_three() {
-    for ($i = 1; $i <= 3; $i++) {
-        // Note that $i is preserved between yields.
-        yield $i;
-    }
-}
- -

PHP embedded in HTML

-
<div class="<?php echo $a ? 'foo' : 'bar'; ?>">
-<?php if($var < 42) {
-    echo "Something";
-} else {
-    echo "Something else";
-} ?>
-</div>
- -

String interpolation

-
$str = "This is $great!";
-$foobar = "Another example: {${$foo->bar()}}";
-$a = <<<FOO
-    Hello $world!
-FOO;
-$b = <<<"FOOBAR"
-    Interpolation inside Heredoc strings {$obj->values[3]->name}
-FOOBAR;
diff --git a/examples/prism-phpdoc.html b/examples/prism-phpdoc.html deleted file mode 100644 index 5b2f9075fa..0000000000 --- a/examples/prism-phpdoc.html +++ /dev/null @@ -1,15 +0,0 @@ -

Full example

-
<?php
-
-/** @var \DateTime[] An array of DateTime objects. */
-/** @var string[] An array of string objects. */
-/** @var callable[] An array of with callable functions or methods. */
-
-/** @var \ArrayObject|\DateTime[] */
-$dates = array()
-
-/**
- * @param bool|\DateTime $foo the first argument
- * @return string|null
- */
-function bar($foo) { ... }
diff --git a/examples/prism-plant-uml.html b/examples/prism-plant-uml.html deleted file mode 100644 index f58743c304..0000000000 --- a/examples/prism-plant-uml.html +++ /dev/null @@ -1,20 +0,0 @@ -

Full example

-
' Source: https://plantuml.com/sequence-diagram
-@startuml
-participant Participant as Foo
-actor       Actor       as Foo1
-boundary    Boundary    as Foo2
-control     Control     as Foo3
-entity      Entity      as Foo4
-database    Database    as Foo5
-collections Collections as Foo6
-queue       Queue       as Foo7
-Foo -> Foo1 : To actor
-Foo -> Foo2 : To boundary
-Foo -> Foo3 : To control
-Foo -> Foo4 : To entity
-Foo -> Foo5 : To database
-Foo -> Foo6 : To collections
-Foo -> Foo7 : To queue
-@enduml
-
diff --git a/examples/prism-plsql.html b/examples/prism-plsql.html deleted file mode 100644 index 2212b14eb6..0000000000 --- a/examples/prism-plsql.html +++ /dev/null @@ -1,40 +0,0 @@ -

Comments

-
-- Single line comment
-/* Multi-line
-comment */
- -

Operators

-
l_message  := 'Hello ' || place_in;
- -

Keywords

-
CREATE OR REPLACE PROCEDURE
-hello_place (place_in IN VARCHAR2)
-IS
-  l_message  VARCHAR2 (100);
-BEGIN
-  l_message  := 'Hello ' || place_in;
-  DBMS_OUTPUT.put_line (l_message);
-END hello_place;
-
-DECLARE
-  l_dept_id
-  employees.department_id%TYPE := 10;
-BEGIN
-  DELETE FROM employees
-       WHERE department_id = l_dept_id;
-
-  DBMS_OUTPUT.put_line (SQL%ROWCOUNT);
-END;
-
-DECLARE
-  l_message   VARCHAR2 (100) := 'Hello';
-  l_message2  VARCHAR2 (100) := ' World!';
-BEGIN
-  IF SYSDATE >= TO_DATE ('01-JAN-2011')
-  THEN
-    l_message2 := l_message || l_message2;
-    DBMS_OUTPUT.put_line (l_message2);
-  ELSE
-    DBMS_OUTPUT.put_line (l_message);
-  END IF;
-END;
\ No newline at end of file diff --git a/examples/prism-powerquery.html b/examples/prism-powerquery.html deleted file mode 100644 index 4363c273f0..0000000000 --- a/examples/prism-powerquery.html +++ /dev/null @@ -1,74 +0,0 @@ -

Comments

-
// This is a comment
-

Simple example

-

-let
-    x = 1 + 1,
-    y = 2 + 2,
-    z = y + 1
-in
-    x + y + z
-
-

Another example

-

-let Orders = Table.FromRecords({  
-    [OrderID = 1, CustomerID = 1, Item = "fishing rod", Price = 100.0],  
-    [OrderID = 2, CustomerID = 1, Item = "1 lb. worms", Price = 5.0],  
-    [OrderID = 3, CustomerID = 2, Item = "fishing net", Price = 25.0]}),  
-    #"Capitalized Each Word" = Table.TransformColumns(Orders, {"Item", Text.Proper})  
-in  
-    #"Capitalized Each Word"
-
-

Full example

-

-    let
-    Source = Sales,
-    LookupTable = #table(
-    type table
-        [
-            #"FROM"=text,
-            #"TO"=text
-        ], 
-        {
-            {"CEE","Central & Eastern Europe"},
-            {"WE","Western Europe"}  
-        }
-    ),
-
-    JT = Table.NestedJoin(
-        Source, 
-        {"Area"}, 
-        LookupTable, 
-        {"FROM"}, 
-        "Map", 
-        JoinKind.LeftOuter
-    ),
-
-    #"Expanded Map" = Table.ExpandTableColumn(
-        JT, 
-        "Map", 
-        {"TO"}, 
-        {"TO"}
-    ),
-
-    #"Replace non-matches with original value" = Table.AddColumn(
-        #"Expanded Map", 
-        "Replaced", 
-        each 
-            if [TO] = null then [Area] 
-            else [TO]
-    ),
-
-    #"Remove original column" = Table.RemoveColumns(
-        #"Replace non-matches with original value",
-        {"Area", "TO"}
-    ),
-
-    #"Renamed replace column to original name" = Table.RenameColumns(
-        #"Remove original column",
-        {{"Replaced", "Area"}}
-    )
-
-in
-    #"Renamed replace column to original name"
-
diff --git a/examples/prism-powershell.html b/examples/prism-powershell.html deleted file mode 100644 index 7028084a78..0000000000 --- a/examples/prism-powershell.html +++ /dev/null @@ -1,19 +0,0 @@ -

Comments

-
# This is a comment
-<# This is a
-multi-line comment #>
- -

Variable Interpolation

-
$Name = "Alice"
-Write-Host "Hello, my name is $Name."
- -

Full Example

-
Function SayHello([string]$name) {
-    Write-Host "Hello, $name."
-}
-$Names = @("Bob", "Alice")
-
-$Names | ForEach {
-    SayHello $_
-}
-
diff --git a/examples/prism-processing.html b/examples/prism-processing.html deleted file mode 100644 index 3c74ba3b98..0000000000 --- a/examples/prism-processing.html +++ /dev/null @@ -1,173 +0,0 @@ -

Full example

-
// Processing implementation of Game of Life by Joan Soler-Adillon
-// from https://processing.org/examples/gameoflife.html
-
-// Size of cells
-int cellSize = 5;
-
-// How likely for a cell to be alive at start (in percentage)
-float probabilityOfAliveAtStart = 15;
-
-// Variables for timer
-int interval = 100;
-int lastRecordedTime = 0;
-
-// Colors for active/inactive cells
-color alive = color(0, 200, 0);
-color dead = color(0);
-
-// Array of cells
-int[][] cells; 
-// Buffer to record the state of the cells and use this while changing the others in the interations
-int[][] cellsBuffer; 
-
-// Pause
-boolean pause = false;
-
-void setup() {
-  size (640, 360);
-
-  // Instantiate arrays 
-  cells = new int[width/cellSize][height/cellSize];
-  cellsBuffer = new int[width/cellSize][height/cellSize];
-
-  // This stroke will draw the background grid
-  stroke(48);
-
-  noSmooth();
-
-  // Initialization of cells
-  for (int x=0; x<width/cellSize; x++) {
-    for (int y=0; y<height/cellSize; y++) {
-      float state = random (100);
-      if (state > probabilityOfAliveAtStart) { 
-        state = 0;
-      }
-      else {
-        state = 1;
-      }
-      cells[x][y] = int(state); // Save state of each cell
-    }
-  }
-  background(0); // Fill in black in case cells don't cover all the windows
-}
-
-
-void draw() {
-
-  //Draw grid
-  for (int x=0; x<width/cellSize; x++) {
-    for (int y=0; y<height/cellSize; y++) {
-      if (cells[x][y]==1) {
-        fill(alive); // If alive
-      }
-      else {
-        fill(dead); // If dead
-      }
-      rect (x*cellSize, y*cellSize, cellSize, cellSize);
-    }
-  }
-  // Iterate if timer ticks
-  if (millis()-lastRecordedTime>interval) {
-    if (!pause) {
-      iteration();
-      lastRecordedTime = millis();
-    }
-  }
-
-  // Create  new cells manually on pause
-  if (pause && mousePressed) {
-    // Map and avoid out of bound errors
-    int xCellOver = int(map(mouseX, 0, width, 0, width/cellSize));
-    xCellOver = constrain(xCellOver, 0, width/cellSize-1);
-    int yCellOver = int(map(mouseY, 0, height, 0, height/cellSize));
-    yCellOver = constrain(yCellOver, 0, height/cellSize-1);
-
-    // Check against cells in buffer
-    if (cellsBuffer[xCellOver][yCellOver]==1) { // Cell is alive
-      cells[xCellOver][yCellOver]=0; // Kill
-      fill(dead); // Fill with kill color
-    }
-    else { // Cell is dead
-      cells[xCellOver][yCellOver]=1; // Make alive
-      fill(alive); // Fill alive color
-    }
-  } 
-  else if (pause && !mousePressed) { // And then save to buffer once mouse goes up
-    // Save cells to buffer (so we opeate with one array keeping the other intact)
-    for (int x=0; x<width/cellSize; x++) {
-      for (int y=0; y<height/cellSize; y++) {
-        cellsBuffer[x][y] = cells[x][y];
-      }
-    }
-  }
-}
-
-
-
-void iteration() { // When the clock ticks
-  // Save cells to buffer (so we opeate with one array keeping the other intact)
-  for (int x=0; x<width/cellSize; x++) {
-    for (int y=0; y<height/cellSize; y++) {
-      cellsBuffer[x][y] = cells[x][y];
-    }
-  }
-
-  // Visit each cell:
-  for (int x=0; x<width/cellSize; x++) {
-    for (int y=0; y<height/cellSize; y++) {
-      // And visit all the neighbours of each cell
-      int neighbours = 0; // We'll count the neighbours
-      for (int xx=x-1; xx<=x+1;xx++) {
-        for (int yy=y-1; yy<=y+1;yy++) {  
-          if (((xx>=0)&&(xx<width/cellSize))&&((yy>=0)&&(yy<height/cellSize))) { // Make sure you are not out of bounds
-            if (!((xx==x)&&(yy==y))) { // Make sure to to check against self
-              if (cellsBuffer[xx][yy]==1){
-                neighbours ++; // Check alive neighbours and count them
-              }
-            } // End of if
-          } // End of if
-        } // End of yy loop
-      } //End of xx loop
-      // We've checked the neigbours: apply rules!
-      if (cellsBuffer[x][y]==1) { // The cell is alive: kill it if necessary
-        if (neighbours < 2 || neighbours > 3) {
-          cells[x][y] = 0; // Die unless it has 2 or 3 neighbours
-        }
-      } 
-      else { // The cell is dead: make it live if necessary      
-        if (neighbours == 3 ) {
-          cells[x][y] = 1; // Only if it has 3 neighbours
-        }
-      } // End of if
-    } // End of y loop
-  } // End of x loop
-} // End of function
-
-void keyPressed() {
-  if (key=='r' || key == 'R') {
-    // Restart: reinitialization of cells
-    for (int x=0; x<width/cellSize; x++) {
-      for (int y=0; y<height/cellSize; y++) {
-        float state = random (100);
-        if (state > probabilityOfAliveAtStart) {
-          state = 0;
-        }
-        else {
-          state = 1;
-        }
-        cells[x][y] = int(state); // Save state of each cell
-      }
-    }
-  }
-  if (key==' ') { // On/off of pause
-    pause = !pause;
-  }
-  if (key=='c' || key == 'C') { // Clear all
-    for (int x=0; x<width/cellSize; x++) {
-      for (int y=0; y<height/cellSize; y++) {
-        cells[x][y] = 0; // Save all to zero
-      }
-    }
-  }
-}
\ No newline at end of file diff --git a/examples/prism-prolog.html b/examples/prism-prolog.html deleted file mode 100644 index a0df67e5bf..0000000000 --- a/examples/prism-prolog.html +++ /dev/null @@ -1,23 +0,0 @@ -

Comments

-
% This is a comment
-/* This is a
-multi-line comment */
- -

Numbers

-
42
-3.1415
- -

Strings

-
"This is a string."
-"This is a string \
-on multiple lines."
-"A string with \"quotes\" in it."
-"Another string with ""quotes"" in it."
- -

Example

-
:- dynamic fibo/2.
-fibo(0, 1). fibo(1, 1).
-fibo(N, F) :-
-N >= 2, N1 is N - 1, N2 is N - 2,
-fibo(N1, F1), fibo(N2, F2), F is F1 + F2,
-assert(fibo(N,F):-!). % assert as first clause
diff --git a/examples/prism-promql.html b/examples/prism-promql.html deleted file mode 100644 index 5570bbda63..0000000000 --- a/examples/prism-promql.html +++ /dev/null @@ -1,17 +0,0 @@ -

Examples

-
# These examples are taken from: https://prometheus.io/docs/prometheus/latest/querying/examples/
-
-http_requests_total{job="apiserver", handler="/api/comments"}[5m]
-
-http_requests_total{job=~".*server"}
-
-max_over_time(deriv(rate(distance_covered_total[5s])[30s:5s])[10m:])
-
-sum by (job) (
-  rate(http_requests_total[5m])
-)
-
-sum by (app, proc) (
-  instance_memory_limit_bytes - instance_memory_usage_bytes
-) / 1024 / 1024
-
diff --git a/examples/prism-properties.html b/examples/prism-properties.html deleted file mode 100644 index bbc81f99af..0000000000 --- a/examples/prism-properties.html +++ /dev/null @@ -1,9 +0,0 @@ -

Comments

-
# This is a comment
-! This is a comment too
- -

Properties

-
some_key some_value
-some\ key\ with\ spaces : some value
-some_key = some \
-multiline value
\ No newline at end of file diff --git a/examples/prism-protobuf.html b/examples/prism-protobuf.html deleted file mode 100644 index 7174552d71..0000000000 --- a/examples/prism-protobuf.html +++ /dev/null @@ -1,25 +0,0 @@ -

Full example

-
syntax = "proto3";
-
-package foo.generated;
-option java_package = "org.foo.generated";
-option optimize_for = SPEED;
-
-// What's up with all the foo?
-message Foo {
-
-  message Bar {
-
-    optional string key   = 1;
-    optional Foo value = 2;
-    optional string value_raw = 3 [deprecated=true];
-  }
-
-  enum Level {
-    INFO  = 0;
-    WARN  = 1;
-    ERROR = 2;
-  }
-
-  repeated Property property = 1;
-}
diff --git a/examples/prism-psl.html b/examples/prism-psl.html deleted file mode 100644 index daee2b952c..0000000000 --- a/examples/prism-psl.html +++ /dev/null @@ -1,43 +0,0 @@ -

Strings

-
# PSL Strings are properly rendered
-print("Hello, World!");
-
-# Escaped sequences are highlighted too
-print("Goodbye \H\H\H\H\H\H\H\HHello, World!\n");
-
-# Multi-line strings are supported
-print("multi
-line");
-
- -

Numbers

-
a = 1;
-b = 2.5;
-c = 0xff;
-
- -

PSL Built-in Functions

-
p = nthargf(process(".*"), 1, " \t", "\n");
-lock("test");
-execute("OS", "pwd");
-
- -

PSL Keywords

-
foreach entry (["aaa", "bbb", "ccc"]) {
-	if (grep("[bc]", entry)) {
-		last;
-	}
-}
-
- -

PSL Constants

-
set("/CLASS/inst/paramA/state", WARN);
-if (true) {
-	PslDebug = -1;
-}
-output = execute("OS", "echo test");
-if (errno) {
-	print(ALARM." with errno=".errno."\n");
-}
-print(trim(output, "\n\r\t ", TRIM_LEADING_AND_TRAILING));
-
\ No newline at end of file diff --git a/examples/prism-pug.html b/examples/prism-pug.html deleted file mode 100644 index ee46c8b0ec..0000000000 --- a/examples/prism-pug.html +++ /dev/null @@ -1,85 +0,0 @@ -

Comments

-
// Some
-  multiline
-  comment !
-
-// This is a comment
-But this is not
- -

Doctype

-
doctype html
-doctype 1.1
-doctype html PUBLIC "-//W3C//DTD XHTML Basic 1.1//EN"
- -

Tags

-
ul
-  li Item A
-  li Item B
-  li Item C
-foo(bar='baz')/
-input(type='checkbox', checked=true.toString())
-#content
-div#foo(data-bar="foo")&attributes({'data-foo': 'bar'})
- -

Markup

-
<div class="foo bar"></div>
- -

Control flow

-
#user
-  if user.description
-    p.description= user.description
-  else if authorised
-    p.description.
-      User has no description,
-      why not add one...
-  else
-    p.description User has no description
-ul
-  each val in [1, 2, 3, 4, 5]
-    li= val
-case friends
-  when 0
-    p you have no friends
-  when 1
-    p you have a friend
-  default
-    p you have #{friends} friends
-
- -

Inline JavaScript

-
script alert('test');
-script(type="text/javascript").
-  alert('foo');
-  alert('bar');
-- var classes = ['foo', 'bar', 'baz']
-- for (var x = 0; x < 3; x++)
-  li item
-
- -

Keywords

-
include ./includes/head.pug
-extends ./layout.pug
-block content
-append head
- -

Mixins

-
mixin list
-  ul
-    li foo
-    li bar
-    li baz
-+list
-mixin pet(name)
-  li.pet= name
-ul
-  +pet('cat')
-  +pet('dog')
-
- -

Filters

-

Filters require the desired language to be loaded. -On this page, check CoffeeScript before checking Pug should make -the example below work properly.

-
script
-  :coffee
-    console.log 'This is coffee script'
diff --git a/examples/prism-puppet.html b/examples/prism-puppet.html deleted file mode 100644 index ff73e81fe4..0000000000 --- a/examples/prism-puppet.html +++ /dev/null @@ -1,139 +0,0 @@ -

Comments

-
#
-# Foobar
-/* Foo
-bar */
- -

Strings and interpolation

-
'foo \'bar\' baz'
-"$foo \"bar\" ${baz}"
-
-@(FOOBAR) # Unquoted heredoc string
-Foo bar baz
-FOOBAR
-
-@("BARBAZ"/$L) # Quoted heredoc string
-	$foo bar ${baz}
-	|-BARBAZ
- -

Regular expressions

-
if $host =~ /^www(\d+)\./ {}
-$foo = /foo
-	bar # Extended regexes can include comments
-baz/x
- -

Variables

-
$foo
-$::foobar
-$foo::bar::baz
- -

Functions

-
require apache
-template('apache/vhost-default.conf.erb')
-[1,20,3].filter |$value| { $value < 10 }
- -

All-in-one example

-
file {'ntp.conf':
-  path    => '/etc/ntp.conf',
-  ensure  => file,
-  content => template('ntp/ntp.conf'),
-  owner   => 'root',
-  mode    => '0644',
-}
-package {'ntp':
-  ensure => installed,
-  before => File['ntp.conf'],
-}
-service {'ntpd':
-  ensure    => running,
-  subscribe => File['ntp.conf'],
-}
-Package['ntp'] -> File['ntp.conf'] ~> Service['ntpd']
-
-$package_list = ['ntp', 'apache2', 'vim-nox', 'wget']
-$myhash = { key => { subkey => 'b' }}
-
-include ntp
-require ntp
-class {'ntp':}
-
-define apache::vhost ($port, $docroot, $servername = $title, $vhost_name = '*') {
-  include apache
-  include apache::params
-  $vhost_dir = $apache::params::vhost_dir
-  file { "${vhost_dir}/${servername}.conf":
-      content => template('apache/vhost-default.conf.erb'),
-      owner   => 'www',
-      group   => 'www',
-      mode    => '644',
-      require => Package['httpd'],
-      notify  => Service['httpd'],
-  }
-}
-
-apache::vhost {'homepages':
-  port    => 8081,
-  docroot => '/var/www-testhost',
-}
-Apache::Vhost['homepages']
-
-node 'www1.example.com' {
-  include common
-  include apache
-  include squid
-}
-node /^www\d+$/ {
-  include common
-}
-
-# comment
-/* comment */
-
-if $is_virtual {
-  warning( 'Tried to include class ntp on virtual machine; this node may be misclassified.' )
-}
-elsif $operatingsystem == 'Darwin' {
-  warning( 'This NTP module does not yet work on our Mac laptops.' )
-else {
-  include ntp
-}
-
-if $hostname =~ /^www(\d+)\./ {
-  notify { "Welcome web server $1": }
-}
-
-case $operatingsystem {
-  'Solaris':          { include role::solaris }
-  'RedHat', 'CentOS': { include role::redhat  }
-  /^(Debian|Ubuntu)$/:{ include role::debian  }
-  default:            { include role::generic }
-}
-$rootgroup = $osfamily ? {
-    'Solaris'          => 'wheel',
-    /(Darwin|FreeBSD)/ => 'wheel',
-    default            => 'root',
-}
-
-User <| groups == 'admin' |>
-Concat::Fragment <<| tag == "bacula-storage-dir-${bacula_director}" |>>
-
-Exec <| title == 'update_migrations' |> {
-  environment => 'RUBYLIB=/usr/lib/ruby/site_ruby/1.8/',
-}
-
-@user {'deploy':
-  uid     => 2004,
-  comment => 'Deployment User',
-  group   => www-data,
-  groups  => ["enterprise"],
-  tag     => [deploy, web],
-}
-
-@@nagios_service { "check_zfs${hostname}":
-  use                 => 'generic-service',
-  host_name           => "$fqdn",
-  check_command       => 'check_nrpe_1arg!check_zfs',
-  service_description => "check_zfs${hostname}",
-  target              => '/etc/nagios3/conf.d/nagios_service.cfg',
-  notify              => Service[$nagios::params::nagios_service],
-}
diff --git a/examples/prism-pure.html b/examples/prism-pure.html deleted file mode 100644 index 9bcac74185..0000000000 --- a/examples/prism-pure.html +++ /dev/null @@ -1,115 +0,0 @@ -

Comments

-
#! shebang
-// Single line comment
-/* Multi-line
-comment */
- -

Strings

-
"This is a string."
-"This is a string with \"quotes\" in it."
- -

Numbers

-
4711
-4711L
-1.2e-3
-.14
-1000
-0x3e8
-01750
-0b1111101000
-inf
-nan
- -

Inline code

-

Inline code requires the desired language to be loaded. -On this page, check C, C++ and Fortran before checking Pure should make -the examples below work properly.

-
%<
-int mygcd(int x, int y)
-{
-  if (y == 0)
-    return x;
-  else
-    return mygcd(y, x%y);
-}
-%>
-
-%< -*- Fortran90 -*-
-function fact(n) result(p)
-  integer n, p
-  p = 1
-  do i = 1, n
-     p = p*i
-  end do
-end function fact
-%>
-
-%< -*- C++ -*-
-
-#include <pure/runtime.h>
-#include <string>
-#include <map>
-
-// An STL map mapping strings to Pure expressions.
-
-using namespace std;
-typedef map<string,pure_expr*> exprmap;
-
-// Since we can't directly deal with C++ classes in Pure, provide some C
-// functions to create, destroy and manipulate these objects.
-
-extern "C" exprmap *map_create()
-{
-  return new exprmap;
-}
-
-extern "C" void map_add(exprmap *m, const char *key, pure_expr *x)
-{
-  exprmap::iterator it = m->find(string(key));
-  if (it != m->end()) pure_free(it->second);
-  (*m)[key] = pure_new(x);
-}
-
-extern "C" void map_del(exprmap *m, const char *key)
-{
-  exprmap::iterator it = m->find(key);
-  if (it != m->end()) {
-    pure_free(it->second);
-    m->erase(it);
-  }
-}
-
-extern "C" pure_expr *map_get(exprmap *m, const char *key)
-{
-  exprmap::iterator it = m->find(key);
-  return (it != m->end())?it->second:0;
-}
-
-extern "C" pure_expr *map_keys(exprmap *m)
-{
-  size_t i = 0, n = m->size();
-  pure_expr **xs = new pure_expr*[n];
-  for (exprmap::iterator it = m->begin(); it != m->end(); ++it)
-    xs[i++] = pure_string_dup(it->first.c_str());
-  pure_expr *x = pure_listv(n, xs);
-  delete[] xs;
-  return x;
-}
-
-extern "C" void map_destroy(exprmap *m)
-{
-  for (exprmap::iterator it = m->begin(); it != m->end(); ++it)
-    pure_free(it->second);
-  delete m;
-}
-
-%>
- -

Example

-
queens n       = catch reverse (search n 1 []) with
-  search n i p = throw p if i>n;
-               = void [search n (i+1) ((i,j):p) | j = 1..n; safe (i,j) p];
-  safe (i,j) p = ~any (check (i,j)) p;
-  check (i1,j1) (i2,j2)
-               = i1==i2 || j1==j2 || i1+j1==i2+j2 || i1-j1==i2-j2;
-end;
diff --git a/examples/prism-purebasic.html b/examples/prism-purebasic.html deleted file mode 100644 index 379f737dc6..0000000000 --- a/examples/prism-purebasic.html +++ /dev/null @@ -1,30 +0,0 @@ -

Note: PureBasic Examples.

- -

Comments

-
; This is a comment
- -

Strings

-
"This a string."
- -

Numbers

-
42
-3.14159
--42
--3.14159
-.5
-10.
-2E10
-4.2E-14
--3E+2
- -

PureBasic example

-
Procedure.s Test(s.s)
-	Protected a$, b$, Result.s
-
-	Result = Mid(s, 1, 3)
-
-	ProcedureReturn Result
-EndProcedure
-
-Test()
-End
diff --git a/examples/prism-purescript.html b/examples/prism-purescript.html deleted file mode 100644 index 0b71ec3823..0000000000 --- a/examples/prism-purescript.html +++ /dev/null @@ -1,57 +0,0 @@ -

Comments

-
-- Single line comment
-{- Multi-line
-comment -}
- -

Strings and characters

-
'a'
-'\n'
-'\^A'
-'\^]'
-'\NUL'
-'\23'
-'\o75'
-'\xFE'
-"Here is a backslant \\ as well as \137, \
-    \a numeric escape character, and \^X, a control character."
- -

Numbers

-
42
-123.456
-123.456e-789
-1e+3
-0o74
-0XAF
- -

Full example

-
module Codewars.Kata.SumFracts (sumFracts) where
-
-import Prelude
-
-import Data.Foldable (foldl)
-import Data.BigInt (BigInt, fromInt, toString)
-import Data.List (List, length)
-import Data.Tuple (Tuple(..))
-import Data.Maybe (Maybe(..))
-import Data.Ord (abs, signum)
-
-reduce :: Tuple BigInt BigInt -> Tuple BigInt BigInt
-reduce (Tuple num den) =
-  let gcd' = gcd num den
-      den' = den / gcd'
-   in Tuple (num / gcd' * (signum den')) (abs den')
-   
-sumFracts :: List (Tuple Int Int) -> Maybe String
-sumFracts fracts =
-  let fracts' = fracts <#> (\(Tuple n d) -> Tuple (fromInt n) (fromInt d)) >>> reduce
-      
-      den = foldl (\acc (Tuple _ d) -> lcm acc d) one fracts'
-      num = foldl (\acc (Tuple n d) -> acc + n * (den / d)) zero fracts'
-      
-      Tuple n d = reduce $ Tuple num den
-      
-   in if length fracts == 0
-        then Nothing
-        else if d == one
-                then Just $ toString n
-                else Just $ (toString n) >< " " >< (toString d)
diff --git a/examples/prism-python.html b/examples/prism-python.html deleted file mode 100644 index 3a63e8bc40..0000000000 --- a/examples/prism-python.html +++ /dev/null @@ -1,51 +0,0 @@ -

Comments

-
# This is a comment
-# -*- coding: <encoding-name> -*-
- -

Strings

-
"foo \"bar\" baz"
-'foo \'bar\' baz'
-""" "Multi-line" strings
-are supported."""
-''' 'Multi-line' strings
-are supported.'''
- -

Numbers

-
7
-2147483647
-0o177
-0b100110111
-3
-79228162514264337593543950336
-0o377
-0x100000000
-0xdeadbeef
-3.14
-10.
-.001
-1e100
-3.14e-10
-0e0
-3.14j
-10.j
-10j
-.001j
-1e100j
-3.14e-10j
-
- -

Full example

-
def median(pool):
-    '''Statistical median to demonstrate doctest.
-    >>> median([2, 9, 9, 7, 9, 2, 4, 5, 8])
-    7
-    '''
-    copy = sorted(pool)
-    size = len(copy)
-    if size % 2 == 1:
-        return copy[(size - 1) / 2]
-    else:
-        return (copy[size/2 - 1] + copy[size/2]) / 2
-if __name__ == '__main__':
-    import doctest
-    doctest.testmod()
diff --git a/examples/prism-q.html b/examples/prism-q.html deleted file mode 100644 index 85673d3abc..0000000000 --- a/examples/prism-q.html +++ /dev/null @@ -1,102 +0,0 @@ -

Comments

-
foo / This is a comment
-/ This is a comment too
-
-/
-Some multi-line
-comment here
-\
-
-\
-This comment will
-continue until the
-end of code
- -

Character data and strings

-
"q"
-"\""
-"\\"
-"\142"
-"foo bar baz"
- -

Symbols

-
`
-`q
-`zaphod
-`:198.162.0.2:5042
-`:www.yourco.com:5042
-`.new
- -

Numbers

-
42
-b:-123h
-c:1234567890j
-pi:3.14159265
-float1:1f
-r:1.4142e
-2.0
-4.00e
-f:1.23456789e-10
-r:1.2345678e-10e
-bit:0b
-byte:0x2a
-a:42
-bit:1b
-
-0w 0n 0W 0Wh 0Wj
- -

Dates

-
d:2006.07.04
-t:09:04:59.000
-dt:2006.07.04T09:04:59.000
-mon:2006.07m
-mm:09:04
-sec:09:04:59
-d:2006.07.04
-
-0Nm 0Nd 0Nz 0Nu 0Nv 0Wd 0Wt 0Wz
- -

Verbs

-
99+L
-x<42|x>98
-(x<42)|x>98
-42~(4 2;(1 0))
-(4 2)~(4; 2*1)
- -

Adverbs

-
" ," ,/: ("Now";"is";"the";"time")
-L1,/:\:L2
-0+/10 20 30
-(1#) each 1001 1002 1004 1003
- -

Built-in functions and q-sql

-
string 42
-L1 cross L2
-type c
-select from t where price=(max;price) fby ([]sym;ex)
-ungroup `p xgroup sp
-`instrument insert (`g; `$"Google"; `$"Internet")
- -

Example

-
/ Example from http://code.kx.com/wiki/Cookbook/CorporateActions
-getCAs:{[caTypes]
-    / handles multiplie corporate actions on one date
-    t:0!select factor:prd factor by date-1,sym from ca where caType in caTypes;
-    t,:update date:1901.01.01,factor:1.0 from ([]sym:distinct t`sym);
-    t:`date xasc t;
-    t:update factor:reverse prds reverse 1 rotate factor by sym from t;
-    :update `g#sym from 0!t;
-  };
-
-adjust:{[t;caTypes]
-    t:0!t;
-    factors:enlist 1.0^aj[`sym`date;([] date:t`date;sym:t`sym);getCAs caTypes]`factor;
-    mc:c where (lower c:cols t) like "*price"; / find columns to multiply
-    dc:c where lower[c] like "*size"; / find columns to divide
-    :![t;();0b;(mc,dc)!((*),/:mc,\:factors),((%),/:dc,\:factors)]; / multiply or divide out the columns
-  };
-
-/ get the adjustment factors considering all corporate actions
-getCAs exec distinct caType from ca
-
-adjust[t;`dividend] / adjust trades for dividends only
diff --git a/examples/prism-qml.html b/examples/prism-qml.html deleted file mode 100644 index 2069d838ed..0000000000 --- a/examples/prism-qml.html +++ /dev/null @@ -1,36 +0,0 @@ -

Full example

-
// https://code.qt.io/cgit/qt/qtdeclarative.git/tree/examples/qml/referenceexamples/valuesource/example.qml?h=5.14
-
-import People 1.0
-import QtQuick 2.0  // For QColor
-
-BirthdayParty {
-	HappyBirthdaySong on announcement { name: "Bob Jones" }
-
-	onPartyStarted: console.log("This party started rockin' at " + time);
-
-
-	host: Boy {
-		name: "Bob Jones"
-		shoe { size: 12; color: "white"; brand: "Nike"; price: 90.0 }
-	}
-
-	Boy {
-		name: "Leo Hodges"
-		BirthdayParty.rsvp: "2009-07-06"
-		shoe { size: 10; color: "black"; brand: "Reebok"; price: 59.95 }
-	}
-	Boy {
-		name: "Jack Smith"
-		shoe { size: 8; color: "blue"; brand: "Puma"; price: 19.95 }
-	}
-	Girl {
-		name: "Anne Brown"
-		BirthdayParty.rsvp: "2009-07-01"
-		shoe.size: 7
-		shoe.color: "red"
-		shoe.brand: "Marc Jacobs"
-		shoe.price: 699.99
-	}
-
-}
diff --git a/examples/prism-qore.html b/examples/prism-qore.html deleted file mode 100644 index 710e1614e7..0000000000 --- a/examples/prism-qore.html +++ /dev/null @@ -1,962 +0,0 @@ -

Full example

-
#!/usr/bin/env qore
-
-# database test script
-# databases users must be able to create and destroy tables and procedures, etc
-# in order to execute all tests
-
-%require-our
-%enable-all-warnings
-
-our ($o, $errors, $test_count);
-
-const opts =
-	( "help"    : "h,help",
-	  "host"    : "H,host=s",
-	  "pass"    : "p,pass=s",
-	  "db"      : "d,db=s",
-	  "user"    : "u,user=s",
-	  "type"    : "t,type=s",
-	  "enc"     : "e,encoding=s",
-	  "verbose" : "v,verbose:i+",
-	  "leave"   : "l,leave"
- );
-
-sub usage()
-{
-	printf("usage: %s [options]
- -h,--help          this help text
- -u,--user=ARG      set username
- -p,--pass=ARG      set password
- -d,--db=ARG        set database name
- -e,--encoding=ARG  set database character set encoding (i.e. \"utf8\")
- -H,--host=ARG      set hostname (for MySQL and PostgreSQL connections)
- -t,--type          set database driver (default mysql)
- -v,--verbose       more v's = more information
- -l,--leave         leave test tables in schema at end\n",
-	   basename($ENV."_"));
-	exit();
-}
-
-const object_map =
- ( "oracle" :
-   ( "tables" : ora_tables ),
-   "mysql"  :
-   ( "tables" : mysql_tables ),
-   "pgsql"  :
-   ( "tables" : pgsql_tables ),
-   "sybase" :
-   ( "tables" : syb_tables,
-	 "procs"  : sybase_procs ),
-   "freetds"  :
-   ( "tables" : freetds_sybase_tables,
-	 "procs"  : sybase_procs ) );
-
-const ora_tables = (
-	"family" : "create table family (
-   family_id int not null,
-   name varchar2(80) not null
-)",
-	"people" : "create table people (
-   person_id int not null,
-   family_id int not null,
-   name varchar2(250) not null,
-   dob date not null
-)",
-	"attributes" : "create table attributes (
-   person_id int not null,
-   attribute varchar2(80) not null,
-   value varchar2(160) not null
-)" );
-
-const mysql_tables = (
-	"family" : "create table family (
-   family_id int not null,
-   name varchar(80) not null
-) type = innodb",
-	"people" : "create table people (
-   person_id int not null,
-   family_id int not null,
-   name varchar(250) not null,
-   dob date not null
-) type = innodb",
-	"attributes" : "create table attributes (
-   person_id int not null,
-   attribute varchar(80) not null,
-   value varchar(160) not null
-) type = innodb" );
-
-const pgsql_tables = (
-	"family" : "create table family (
-   family_id int not null,
-   name varchar(80) not null )",
-	"people" : "create table people (
-   person_id int not null,
-   family_id int not null,
-   name varchar(250) not null,
-   dob date not null )",
-	"attributes" : "create table attributes (
-   person_id int not null,
-   attribute varchar(80) not null,
-   value varchar(160) not null)",
-	"data_test" : "create table data_test (
-		int2_f smallint not null,
-		int4_f integer not null,
-		int8_f int8 not null,
-		bool_f boolean not null,
-
-		float4_f real not null,
-		float8_f double precision not null,
-
-		number_f numeric(16,3) not null,
-		money_f money not null,
-
-		text_f text not null,
-		varchar_f varchar(40) not null,
-		char_f char(40) not null,
-		name_f name not null,
-
-		date_f date not null,
-		abstime_f abstime not null,
-		reltime_f reltime not null,
-		interval_f interval not null,
-		time_f time not null,
-		timetz_f time with time zone not null,
-		timestamp_f timestamp not null,
-		timestamptz_f timestamp with time zone not null,
-		tinterval_f tinterval not null,
-
-		bytea_f bytea not null
-		--bit_f bit(11) not null,
-		--varbit_f bit varying(11) not null
-)" );
-
-const syb_tables = (
-	"family" : "create table family (
-   family_id int not null,
-   name varchar(80) not null
-)",
-	"people" : "create table people (
-   person_id int not null,
-   family_id int not null,
-   name varchar(250) not null,
-   dob date not null
-)",
-	"attributes" : "create table attributes (
-   person_id int not null,
-   attribute varchar(80) not null,
-   value varchar(160) not null
-)",
-	"data_test" : "create table data_test (
-	null_f char(1) null,
-
-	varchar_f varchar(40) not null,
-	char_f char(40) not null,
-	unichar_f unichar(40) not null,
-	univarchar_f univarchar(40) not null,
-	text_f text not null,
-	unitext_f unitext not null, -- note that unitext is stored as 'image'
-
-		bit_f bit not null,
-	tinyint_f tinyint not null,
-	smallint_f smallint not null,
-	int_f int not null,
-		int_f2 int not null,
-
-	decimal_f decimal(10,4) not null,
-
-	float_f float not null,     -- 8-bytes
-	real_f real not null,       -- 4-bytes
-	money_f money not null,
-	smallmoney_f smallmoney not null,
-
-	date_f date not null,
-	time_f time not null,
-	datetime_f datetime not null,
-	smalldatetime_f smalldatetime not null,
-
-	binary_f binary(4) not null,
-	varbinary_f varbinary(4) not null,
-	image_f image not null
-)" );
-
-const sybase_procs = (
-	"find_family" :
-"create procedure find_family @name varchar(80)
-as
-select * from family where name = @name
-commit -- to maintain transaction count
-",
-	"get_values" :
-"create procedure get_values @string varchar(80) output, @int int output
-as
-select @string = 'hello there'
-select @int = 150
-commit -- to maintain transaction count
-",
-	"get_values_and_select" :
-"create procedure get_values_and_select @string varchar(80) output, @int int output
-as
-select @string = 'hello there'
-select @int = 150
-select * from family where family_id = 1
-commit -- to maintain transaction count
-",
-	"get_values_and_multiple_select" :
-"create procedure get_values_and_multiple_select @string varchar(80) output, @int int output
-as
-select @string = 'hello there'
-select @int = 150
-select * from family where family_id = 1
-select * from people where person_id = 1
-commit -- to maintain transaction count
-",
-	"just_select" :
-"create procedure just_select
-as
-select * from family where family_id = 1
-commit -- to maintain transaction count
-",
-	"multiple_select" :
-"create procedure multiple_select
-as
-select * from family where family_id = 1
-select * from people where person_id = 1
-commit -- to maintain transaction count
-"
- );
-
-const freetds_sybase_tables = (
-	"family" : "create table family (
-   family_id int not null,
-   name varchar(80) not null
-)",
-	"people" : "create table people (
-   person_id int not null,
-   family_id int not null,
-   name varchar(250) not null,
-   dob date not null
-)",
-	"attributes" : "create table attributes (
-   person_id int not null,
-   attribute varchar(80) not null,
-   value varchar(160) not null
-)",
-	"data_test" : "create table data_test (
-	null_f char(1) null,
-
-	varchar_f varchar(40) not null,
-	char_f char(40) not null,
-	text_f text not null,
-	unitext_f unitext not null, -- note that unitext is stored as 'image'
-
-		bit_f bit not null,
-	tinyint_f tinyint not null,
-	smallint_f smallint not null,
-	int_f int not null,
-		int_f2 int not null,
-
-	decimal_f decimal(10,4) not null,
-
-	float_f float not null,     -- 8-bytes
-	real_f real not null,       -- 4-bytes
-	money_f money not null,
-	smallmoney_f smallmoney not null,
-
-	date_f date not null,
-	time_f time not null,
-	datetime_f datetime not null,
-	smalldatetime_f smalldatetime not null,
-
-	binary_f binary(4) not null,
-	varbinary_f varbinary(4) not null,
-	image_f image not null
-)" );
-
-const freetds_mssql_tables = (
-	"family" : "create table family (
-   family_id int not null,
-   name varchar(80) not null
-)",
-	"people" : "create table people (
-   person_id int not null,
-   family_id int not null,
-   name varchar(250) not null,
-   dob datetime not null
-)",
-	"attributes" : "create table attributes (
-   person_id int not null,
-   attribute varchar(80) not null,
-   value varchar(160) not null
-)",
-	"data_test" : "create table data_test (
-	null_f char(1) null,
-
-	varchar_f varchar(40) not null,
-	char_f char(40) not null,
-	text_f text not null,
-
-		bit_f bit not null,
-	tinyint_f tinyint not null,
-	smallint_f smallint not null,
-	int_f int not null,
-		int_f2 int not null,
-
-	decimal_f decimal(10,4) not null,
-
-	float_f float not null,     -- 8-bytes
-	real_f real not null,       -- 4-bytes
-	money_f money not null,
-	smallmoney_f smallmoney not null,
-
-	datetime_f datetime not null,
-	smalldatetime_f smalldatetime not null,
-
-	binary_f binary(4) not null,
-	varbinary_f varbinary(4) not null,
-	image_f image not null
-)" );
-
-sub parse_command_line()
-{
-	my $g = new GetOpt(opts);
-	$o = $g.parse(\$ARGV);
-	if ($o.help)
-	usage();
-
-	if (!strlen($o.db))
-	{
-	stderr.printf("set the login parameters with -u,-p,-d, etc (-h for help)\n");
-	exit(1);
-	}
-	if (elements $ARGV)
-	{
-	stderr.printf("excess arguments on command-line (%n): -h for help\n", $ARGV);
-	exit(1);
-	}
-	if (!strlen($o.type))
-	$o.type = "mysql";
-}
-
-sub create_datamodel($db)
-{
-	drop_test_datamodel($db);
-
-	my $driver = $db.getDriverName();
-	# create tables
-	my $tables = object_map.$driver.tables;
-	if ($driver == "freetds")
-	if ($db.is_sybase)
-		$tables = freetds_sybase_tables;
-		else
-		$tables = freetds_mssql_tables;
-
-	foreach my $table in (keys $tables)
-	{
-	tprintf(2, "creating table %n\n", $table);
-	$db.exec($tables.$table);
-	}
-
-	# create procedures if any
-	foreach my $proc in (keys object_map.$driver.procs)
-	{
-	tprintf(2, "creating procedure %n\n", $proc);
-	$db.exec(object_map.$driver.procs.$proc);
-	}
-
-	# create functions if any
-	foreach my $func in (keys object_map.$driver.funcs)
-	{
-	tprintf(2, "creating function %n\n", $func);
-	$db.exec(object_map.$driver.funcs.$func);
-	}
-
-	$db.exec("insert into family values ( 1, 'Smith' )");
-	$db.exec("insert into family values ( 2, 'Jones' )");
-
-	# we insert the dates here using binding by value so we don't have
-	# to worry about each database's specific date format
-	$db.exec("insert into people values ( 1, 1, 'Arnie', %v)", 1983-05-13);
-	$db.exec("insert into people values ( 2, 1, 'Sylvia', %v)", 1994-11-10);
-	$db.exec("insert into people values ( 3, 1, 'Carol', %v)", 2003-07-23);
-	$db.exec("insert into people values ( 4, 1, 'Bernard', %v)", 1979-02-27);
-	$db.exec("insert into people values ( 5, 1, 'Isaac', %v)", 2000-04-04);
-	$db.exec("insert into people values ( 6, 2, 'Alan', %v)", 1992-06-04);
-	$db.exec("insert into people values ( 7, 2, 'John', %v)", 1995-03-23);
-
-	$db.exec("insert into attributes values ( 1, 'hair', 'blond' )");
-	$db.exec("insert into attributes values ( 1, 'eyes', 'hazel' )");
-	$db.exec("insert into attributes values ( 2, 'hair', 'blond' )");
-	$db.exec("insert into attributes values ( 2, 'eyes', 'blue' )");
-	$db.exec("insert into attributes values ( 3, 'hair', 'brown' )");
-	$db.exec("insert into attributes values ( 3, 'eyes', 'grey')");
-	$db.exec("insert into attributes values ( 4, 'hair', 'brown' )");
-	$db.exec("insert into attributes values ( 4, 'eyes', 'brown' )");
-	$db.exec("insert into attributes values ( 5, 'hair', 'red' )");
-	$db.exec("insert into attributes values ( 5, 'eyes', 'green' )");
-	$db.exec("insert into attributes values ( 6, 'hair', 'black' )");
-	$db.exec("insert into attributes values ( 6, 'eyes', 'blue' )");
-	$db.exec("insert into attributes values ( 7, 'hair', 'brown' )");
-	$db.exec("insert into attributes values ( 7, 'eyes', 'brown' )");
-	$db.commit();
-}
-
-sub drop_test_datamodel($db)
-{
-	my $driver = $db.getDriverName();
-	# drop the tables and ignore exceptions
-	# the commits are needed for databases like postgresql, where errors will prohibit and further
-	# actions from being taken on the Datasource
-	foreach my $table in (keys object_map.$driver.tables)
-	try {
-		$db.exec("drop table " + $table);
-		$db.commit();
-		tprintf(2, "dropped table %n\n", $table);
-	}
-		catch ()
-	{
-		$db.commit();
-	}
-
-	# drop procedures and ignore exceptions
-	foreach my $proc in (keys object_map.$driver.procs)
-	{
-	my $cmd = object_map.$driver.drop_proc_cmd;
-	if (!exists $cmd)
-		$cmd = "drop procedure";
-	try {
-		$db.exec($cmd + " " + $proc);
-		$db.commit();
-		tprintf(2, "dropped procedure %n\n", $proc);
-	}
-	catch ()
-	{
-		$db.commit();
-	}
-	}
-
-	# drop functions and ignore exceptions
-	foreach my $func in (keys object_map.$driver.funcs)
-	{
-	my $cmd = object_map.$driver.drop_func_cmd;
-	if (!exists $cmd)
-		$cmd = "drop function";
-	try {
-		$db.exec($cmd + " " + $func);
-		$db.commit();
-		tprintf(2, "dropped function %n\n", $func);
-	}
-	catch ()
-	{
-		$db.commit();
-	}
-	}
-}
-
-sub getDS()
-{
-	my $ds = new Datasource($o.type, $o.user, $o.pass, $o.db, $o.enc);
-	if (strlen($o.host))
-	$ds.setHostName($o.host);
-	return $ds;
-}
-
-sub tprintf($v, $msg)
-{
-	if ($v <= $o.verbose)
-	vprintf($msg, $argv);
-}
-
-sub test_value($v1, $v2, $msg)
-{
-	++$test_count;
-	if ($v1 == $v2)
-	tprintf(1, "OK: %s test\n", $msg);
-	else
-	{
-		tprintf(0, "ERROR: %s test failed! (%n != %n)\n", $msg, $v1, $v2);
-		$errors++;
-	}
-}
-
-const family_hash = (
-  "Jones" : (
-	  "people" : (
-	  "John" : (
-		  "dob" : 1995-03-23,
-		  "eyes" : "brown",
-		  "hair" : "brown" ),
-	  "Alan" : (
-		  "dob" : 1992-06-04,
-		  "eyes" : "blue",
-		  "hair" : "black" ) ) ),
-	"Smith" : (
-	"people" : (
-		"Arnie" : (
-		"dob" : 1983-05-13,
-		"eyes" : "hazel",
-		"hair" : "blond" ),
-		"Carol" : (
-		"dob" : 2003-07-23,
-		"eyes" : "grey",
-		"hair" : "brown" ),
-		"Isaac" : (
-		"dob" : 2000-04-04,
-		"eyes" : "green",
-		"hair" : "red" ),
-		"Bernard" : (
-		"dob" : 1979-02-27,
-		"eyes" : "brown",
-		"hair" : "brown" ),
-		"Sylvia" : (
-		"dob" : 1994-11-10,
-		"eyes" : "blue",
-		"hair" : "blond" ) ) ) );
-
-sub context_test($db)
-{
-	# first we select all the data from the tables and then use
-	# context statements to order the output hierarchically
-
-	# context statements are most useful when a set of queries can be executed once
-	# and the results processed many times by creating "views" with context statements
-
-	my $people = $db.select("select * from people");
-	my $attributes = $db.select("select * from attributes");
-
-	my $today = format_date("YYYYMMDD", now());
-
-	# in this test, we create a big hash structure out of the queries executed above
-	# and compare it at the end to the expected result
-
-	# display each family sorted by family name
-	my $fl;
-	context family ($db.select("select * from family")) sortBy (%name)
-	{
-	my $pl;
-	tprintf(2, "Family %d: %s\n", %family_id, %name);
-
-	# display people, sorted by eye color, descending
-	context people ($people)
-		sortDescendingBy (find %value in $attributes
-				  where (%attribute == "eyes"
-					 && %person_id == %people:person_id))
-		where (%family_id == %family:family_id)
-	{
-		my $al;
-		tprintf(2, "  %s, born %s\n", %name, format_date("Month DD, YYYY", %dob));
-		context ($attributes) sortBy (%attribute) where (%person_id == %people:person_id)
-		{
-		$al.%attribute = %value;
-		tprintf(2, "    has %s %s\n", %value, %attribute);
-		}
-		# leave out the ID fields and name from hash under name; subtracting a
-		# string from a hash removes that key from the result
-		# this is "doing it the hard way", there is only one key left,
-		# "dob", then attributes are added directly into the person hash
-		$pl.%name = %% - "family_id" - "person_id" - "name" + $al;
-	}
-	# leave out family_id and name fields (leaving an empty hash)
-	$fl.%name = %% - "family_id" - "name" + ( "people" : $pl );
-	}
-
-	# test context ordering
-	test_value(keys $fl, ("Jones", "Smith"), "first context");
-	test_value(keys $fl.Smith.people, ("Arnie", "Carol", "Isaac", "Bernard", "Sylvia"), "second context");
-	# test entire context value
-	test_value($fl, family_hash, "third context");
-}
-
-
-sub test_timeout($db, $c)
-{
-	$db.setTransactionLockTimeout(1ms);
-	try {
-	# this should cause a TRANSACTION-LOCK-TIMEOUT exception to be thrown
-	$db.exec("insert into family values (3, 'Test')\n");
-	test_value(True, False, "transaction timeout");
-	$db.exec("delete from family where name = 'Test'");
-	}
-	catch ($ex)
-	{
-	test_value(True, True, "transaction timeout");
-	}
-	# signal parent thread to continue
-	$c.dec();
-}
-
-sub transaction_test($db)
-{
-	my $ndb = getDS();
-	my $r;
-	tprintf(2, "db.autocommit=%N, ndb.autocommit=%N\n", $db.getAutoCommit(), $ndb.getAutoCommit());
-
-	# first, we insert a new row into "family" but do not commit it
-	my $rows = $db.exec("insert into family values (3, 'Test')\n");
-	if ($rows !== 1)
-	printf("FAILED INSERT, rows=%N\n", $rows);
-
-	# now we verify that the new row is not visible to the other datasource
-	# unless it's a sybase/ms sql server datasource, in which case this would deadlock :-(
-	if ($o.type != "sybase" && $o.type != "freetds")
-	{
-	$r = $ndb.selectRow("select name from family where family_id = 3").name;
-	test_value($r, NOTHING, "first transaction");
-	}
-
-	# now we verify that the new row is visible to the inserting datasource
-	$r = $db.selectRow("select name from family where family_id = 3").name;
-	test_value($r, "Test", "second transaction");
-
-	# test datasource timeout
-	# this Counter variable will allow the parent thread to sleep
-	# until the child thread times out
-	my $c = new Counter(1);
-	background test_timeout($db, $c);
-
-	# wait for child thread to time out
-	$c.waitForZero();
-
-	# now, we commit the transaction
-	$db.commit();
-
-	# now we verify that the new row is visible in the other datasource
-	$r = $ndb.selectRow("select name from family where family_id = 3").name;
-	test_value($r, "Test", "third transaction");
-
-	# now we delete the row we inserted (so we can repeat the test)
-	$r = $ndb.exec("delete from family where family_id = 3");
-	test_value($r, 1, "delete row count");
-	$ndb.commit();
-}
-
-sub oracle_test()
-{
-}
-
-# here we use a little workaround for modules that provide functions,
-# namespace additions (constants, classes, etc) needed by test functions
-# at parse time.  To avoid parse errors (as database modules are loaded
-# in this script at run-time when the Datasource class is instantiated)
-# we use a Program object that we parse and run on demand to return the
-# value required
-sub get_val($code)
-{
-	my $p = new Program();
-
-	my $str = sprintf("return %s;", $code);
-	$p.parse($str, "code");
-	return $p.run();
-}
-
-sub pgsql_test($db)
-{
-	my $args = ( "int2_f"          : 258,
-		 "int4_f"          : 233932,
-		 "int8_f"          : 239392939458,
-		 "bool_f"          : True,
-		 "float4_f"        : 21.3444,
-		 "float8_f"        : 49394.23423491,
-		 "number_f"        : get_val("pgsql_bind(PG_TYPE_NUMERIC, '7235634215.3250')"),
-		 "money_f"         : get_val("pgsql_bind(PG_TYPE_CASH, \"400.56\")"),
-		 "text_f"          : 'some text  ',
-		 "varchar_f"       : 'varchar ',
-		 "char_f"          : 'char text',
-		 "name_f"          : 'name',
-		 "date_f"          : 2004-01-05,
-		 "abstime_f"       : 2005-12-03T10:00:01,
-		 "reltime_f"       : 5M + 71D + 19h + 245m + 51s,
-		 "interval_f"      : 6M + 3D + 2h + 45m + 15s,
-		 "time_f"          : 11:35:00,
-		 "timetz_f"        : get_val("pgsql_bind(PG_TYPE_TIMETZ, \"11:38:21 CST\")"),
-		 "timestamp_f"     : 2005-04-01T11:35:26,
-		 "timestamptz_f"   : 2005-04-01T11:35:26.259,
-		 "tinterval_f"     : get_val("pgsql_bind(PG_TYPE_TINTERVAL, '[\"May 10, 1947 23:59:12\" \"Jan 14, 1973 03:14:21\"]')"),
-		 "bytea_f"         : <bead>
-		 #bit_f             :
-		 #varbit_f          :
-	);
-
-	$db.vexec("insert into data_test values (%v, %v, %v, %v, %v, %v, %v, %v, %v, %v, %v, %v, %v, %v, %v, %v, %v, %v, %v, %v, %v, %v)", hash_values($args));
-
-	my $q = $db.selectRow("select * from data_test");
-	if ($o.verbose > 1)
-	foreach my $k in (keys $q)
-		tprintf(2, " %-16s= %-10s %N\n", $k, type($q.$k), $q.$k);
-
-	# fix values where we know the return type is different
-	$args.money_f = 400.56;
-	$args.timetz_f = 11:38:21;
-	$args.tinterval_f = '["1947-05-10 21:59:12" "1973-01-14 02:14:21"]';
-	$args.number_f = "7235634215.3250";
-	$args.reltime_f = 19177551s;
-	$args.interval_f = 6M + 3D + 9915s;
-
-	# rounding errors can happen in float4
-	$q.float4_f = round($q.float4_f);
-	$args.float4_f = round($args.float4_f);
-
-	# remove values where we know they won't match
-	# abstime and timestamptz are converted to GMT by the server
-	delete $q.abstime_f;
-	delete $q.timestamptz_f;
-
-	# compare each value
-	foreach my $k in (keys $q)
-	test_value($q.$k, $args.$k, sprintf("%s bind and retrieve", $k));
-
-	$db.commit();
-}
-
-sub mysql_test()
-{
-}
-
-const family_q = ( "family_id" : 1,
-		   "name" : "Smith" );
-const person_q = ( "person_id" : 1,
-		   "family_id" : 1,
-		   "name" : "Arnie",
-		   "dob" : 1983-05-13 );
-const params = ( "string" : "hello there",
-		 "int" : 150 );
-
-sub sybase_test($db)
-{
-	# simple stored proc test, bind by name
-	my $x = $db.exec("exec find_family %v", "Smith");
-	test_value($x, ("name": list("Smith"), "family_id" : list(1)), "simple stored proc");
-
-	# stored proc execute with output params
-	$x = $db.exec("declare @string varchar(40), @int int
-exec get_values :string output, :int output");
-	test_value($x, params + ("rowcount":1), "get_values");
-
-	# we use Datasource::selectRows() in the following queries because we
-	# get hash results instead of a hash of lists as with exec in the queries
-	# normally we should not use selectRows to execute a stored procedure,
-	# as the Datasource::selectRows() method will not grab the transaction lock,
-	# but we already called Datasource::exec() above, so we have it already.
-	# the other alternative would be to call Datasource::beginTransaction() before
-	# Datasource::selectRows()
-
-	# simple stored proc test, bind by name, returns hash
-	$x = $db.selectRows("exec find_family %v", "Smith");
-	test_value($x, family_q, "simple stored proc");
-
-	# stored proc execute with output params and select results
-	$x = $db.selectRows("declare @string varchar(40), @int int
-exec get_values_and_select :string output, :int output");
-	test_value($x, ("query":family_q,"params":params), "get_values_and_select");
-
-	# stored proc execute with output params and multiple select results
-	$x = $db.selectRows("declare @string varchar(40), @int int
-exec get_values_and_multiple_select :string output, :int output");
-	test_value($x, ("query":("query0":family_q,"query1":person_q),"params":params), "get_values_and_multiple_select");
-
-	# stored proc execute with just select results
-	$x = $db.selectRows("exec just_select");
-	test_value($x, family_q, "just_select");
-
-	# stored proc execute with multiple select results
-	$x = $db.selectRows("exec multiple_select");
-	test_value($x, ("query0":family_q,"query1":person_q), "multiple_select");
-
-	my $args = ( "null_f"          : NULL,
-		 "varchar_f"       : "varchar",
-		 "char_f"          : "char",
-		 "unichar_f"       : "unichar",
-		 "univarchar_f"    : "univarchar",
-		 "text_f"          : "test",
-		 "unitext_f"       : "test",
-		 "bit_f"           : True,
-		 "tinyint_f"       : 55,
-		 "smallint_f"      : 4285,
-		 "int_f"           : 405402,
-		 "int_f2"          : 214123498,
-		 "decimal_f"       : 500.1231,
-		 "float_f"         : 23443.234324234,
-		 "real_f"          : 213.123,
-		 "money_f"         : 3434234250.2034,
-		 "smallmoney_f"    : 211100.1012,
-		 "date_f"          : 2007-05-01,
-			 "time_f"          : 10:30:01,
-		 "datetime_f"      : 3459-01-01T11:15:02.250,
-		 "smalldatetime_f" : 2007-12-01T12:01:00,
-		 "binary_f"        : <0badbeef>,
-		 "varbinary_f"     : <feedface>,
-		 "image_f"         : <cafebead> );
-
-	# insert data
-	my $rows = $db.vexec("insert into data_test values (%v, %v, %v, %v, %v, %v, %v, %v, %v, %v, %v, %d, %v, %v, %v, %v, %v, %v, %v, %v, %v, %v, %v, %v)", hash_values($args));
-
-	my $q = $db.selectRow("select * from data_test");
-	if ($o.verbose > 1)
-	foreach my $k in (keys $q)
-		tprintf(2, " %-16s= %-10s %N\n", $k, type($q.$k), $q.$k);
-
-	# remove values where we know they won't match
-	# unitext_f is returned as IMAGE by the server
-	delete $q.unitext_f;
-	delete $args.unitext_f;
-	# rounding errors can happen in real
-	$q.real_f = round($q.real_f);
-	$args.real_f = round($args.real_f);
-
-	# compare each value
-	foreach my $k in (keys $q)
-	test_value($q.$k, $args.$k, sprintf("%s bind and retrieve", $k));
-
-	$db.commit();
-}
-
-sub freetds_test($db)
-{
-	# simple stored proc test, bind by name
-	my $x = $db.exec("exec find_family %v", "Smith");
-	test_value($x, ("name": list("Smith"), "family_id" : list(1)), "simple stored proc");
-
-	# we cannot retrieve parameters from newer SQL Servers with the approach we use;
-	# Microsoft changed the handling of the protocol and require us to use RPC calls,
-	# this will be implemented in the next version of qore where the "freetds" driver will
-	# be able to add custom methods to the Datasource class.  For now, we skip these tests
-
-	if ($db.is_sybase)
-	{
-	$x = $db.exec("declare @string varchar(40), @int int
-exec get_values :string output, :int output");
-	test_value($x, params, "get_values");
-	}
-
-	# we use Datasource::selectRows() in the following queries because we
-	# get hash results instead of a hash of lists as with exec in the queries
-	# normally we should not use selectRows to execute a stored procedure,
-	# as the Datasource::selectRows() method will not grab the transaction lock,
-	# but we already called Datasource::exec() above, so we have it already.
-	# the other alternative would be to call Datasource::beginTransaction() before
-	# Datasource::selectRows()
-
-	# simple stored proc test, bind by name, returns hash
-	$x = $db.selectRows("exec find_family %v", "Smith");
-	test_value($x, family_q, "simple stored proc");
-
-	# stored proc execute with output params and select results
-	if ($db.is_sybase)
-	{
-	$x = $db.selectRows("declare @string varchar(40), @int int
-exec get_values_and_select :string output, :int output");
-	test_value($x, ("query":family_q,"params":params), "get_values_and_select");
-
-	# stored proc execute with output params and multiple select results
-	$x = $db.selectRows("declare @string varchar(40), @int int
-exec get_values_and_multiple_select :string output, :int output");
-	test_value($x, ("query":("query0":family_q,"query1":person_q),"params":params), "get_values_and_multiple_select");
-	}
-
-	# stored proc execute with just select results
-	$x = $db.selectRows("exec just_select");
-	test_value($x, family_q, "just_select");
-
-	# stored proc execute with multiple select results
-	$x = $db.selectRows("exec multiple_select");
-	test_value($x, ("query0":family_q,"query1":person_q), "multiple_select");
-
-	# the freetds driver does not work with the following sybase column types:
-	# unichar, univarchar
-
-	my $args = ( "null_f"          : NULL,
-		 "varchar_f"       : "test",
-		 "char_f"          : "test",
-		 "text_f"          : "test",
-		 "unitext_f"       : "test",
-		 "bit_f"           : True,
-		 "tinyint_f"       : 55,
-		 "smallint_f"      : 4285,
-		 "int_f"           : 405402,
-		 "int_f2"          : 214123498,
-		 "decimal_f"       : 500.1231,
-		 "float_f"         : 23443.234324234,
-		 "real_f"          : 213.123,
-		 "money_f"         : 3434234250.2034,
-		 "smallmoney_f"    : 211100.1012,
-		 "date_f"          : 2007-05-01,
-			 "time_f"          : 10:30:01,
-		 "datetime_f"      : 3459-01-01T11:15:02.250,
-		 "smalldatetime_f" : 2007-12-01T12:01:00,
-		 "binary_f"        : <0badbeef>,
-		 "varbinary_f"     : <feedface>,
-		 "image_f"         : <cafebead> );
-
-	# remove fields not supported by sql server
-	if (!$db.is_sybase)
-	{
-	delete $args.unitext_f;
-	delete $args.date_f;
-	delete $args.time_f;
-	}
-
-	my $sql = "insert into data_test values (";
-	for (my $i; $i < elements $args; ++$i)
-	$sql += "%v, ";
-	$sql = substr($sql, 0, -2) + ")";
-
-	# insert data, using the values from the hash above
-	my $rows = $db.vexec($sql, hash_values($args));
-
-	my $q = $db.selectRow("select * from data_test");
-	if ($o.verbose > 1)
-	foreach my $k in (keys $q)
-		tprintf(2, " %-16s= %-10s %N\n", $k, type($q.$k), $q.$k);
-
-	# remove values where we know they won't match
-	# unitext_f is returned as IMAGE by the server
-	delete $q.unitext_f;
-	delete $args.unitext_f;
-	# rounding errors can happen in real
-	$q.real_f = round($q.real_f);
-	$args.real_f = round($args.real_f);
-
-	# compare each value
-	foreach my $k in (keys $q)
-	test_value($q.$k, $args.$k, sprintf("%s bind and retrieve", $k));
-
-	$db.commit();
-}
-
-sub main()
-{
-	my $test_map =
-	( "sybase" : \sybase_test(),
-	  "freetds"  : \freetds_test(),
-	  "mysql"  : \mysql_test(),
-	  "pgsql"  : \pgsql_test(),
-	  "oracle" : \oracle_test());
-
-	parse_command_line();
-	my $db = getDS();
-
-	my $driver = $db.getDriverName();
-	printf("testing %s driver\n", $driver);
-	my $sv = $db.getServerVersion();
-	if ($o.verbose > 1)
-	tprintf(2, "client version=%n\nserver version=%n\n", $db.getClientVersion(), $sv);
-
-	# determine if the server is a sybase or sql server dataserver
-	if ($driver == "freetds")
-	if ($sv !~ /microsoft/i)
-		$db.is_sybase = True;
-
-	create_datamodel($db);
-
-	context_test($db);
-	transaction_test($db);
-	my $test = $test_map.($db.getDriverName());
-	if (exists $test)
-	$test($db);
-
-	if (!$o.leave)
-	drop_test_datamodel($db);
-	printf("%d/%d tests OK\n", $test_count - $errors, $test_count);
-}
-
-main();
\ No newline at end of file diff --git a/examples/prism-qsharp.html b/examples/prism-qsharp.html deleted file mode 100644 index eec88a8966..0000000000 --- a/examples/prism-qsharp.html +++ /dev/null @@ -1,33 +0,0 @@ -

Full example

-
namespace Bell {
-  open Microsoft.Quantum.Canon;
-  open Microsoft.Quantum.Intrinsic;
-
-  operation SetQubitState(desired : Result, target : Qubit) : Unit {
-      if desired != M(target) {
-          X(target);
-      }
-  }
-
-  @EntryPoint()
-  operation TestBellState(count : Int, initial : Result) : (Int, Int) {
-
-      mutable numOnes = 0;
-      use qubit = Qubit();
-      for test in 1..count {
-          SetQubitState(initial, qubit);
-          let res = M(qubit);        
-
-          // Count the number of ones we saw:
-          if res == One {
-                set numOnes += 1;
-          }
-      }
-
-      SetQubitState(Zero, qubit); 
-
-  // Return number of times we saw a |0> and number of times we saw a |1>
-  Message("Test results (# of 0s, # of 1s): ");
-  return (count - numOnes, numOnes);
-  }
-}
diff --git a/examples/prism-r.html b/examples/prism-r.html deleted file mode 100644 index 3c694189d2..0000000000 --- a/examples/prism-r.html +++ /dev/null @@ -1,38 +0,0 @@ -

Comments

-
# This is a comment
- -

Strings

-
"foo \"bar\" baz"
-'foo \'bar\' baz'
- -

Full example

-
# Goal: To make a latex table with results of an OLS regression.
-
-# Get an OLS --
-x1 = runif(100)
-x2 = runif(100, 0, 2)
-y = 2 + 3*x1 + 4*x2 + rnorm(100)
-m = lm(y ~ x1 + x2)
-
-# and print it out prettily --
-library(xtable)
-# Bare --
-xtable(m)
-xtable(anova(m))
-
-# Better --
-print.xtable(xtable(m, caption="My regression",
-                    label="t:mymodel",
-                    digits=c(0,3,2,2,3)),
-             type="latex",
-             file="xtable_demo_ols.tex",
-             table.placement = "tp",
-             latex.environments=c("center", "footnotesize"))
-
-print.xtable(xtable(anova(m),
-                    caption="ANOVA of my regression",
-                    label="t:anova_mymodel"),
-             type="latex",
-             file="xtable_demo_anova.tex",
-             table.placement = "tp",
-             latex.environments=c("center", "footnotesize"))
\ No newline at end of file diff --git a/examples/prism-racket.html b/examples/prism-racket.html deleted file mode 100644 index d09509f43f..0000000000 --- a/examples/prism-racket.html +++ /dev/null @@ -1,16 +0,0 @@ -

Full example

-
; Source: https://github.com/mbutterick/pollen/blob/master/pollen/private/to-string.rkt
-
-#lang racket/base
-(provide (all-defined-out))
-
-(define (to-string x)
-  (cond
-    [(string? x) x]
-    [(or (null? x) (void? x)) ""]
-    [(or (symbol? x) (number? x) (path? x) (char? x)) (format "~a" x)]
-    ;; special handling for procedures, because if a procedure reaches this func,
-    ;; it usually indicates a failed attempt to use a tag function.
-    ;; meaning, it's more useful to raise an error.
-    [(procedure? x) (error 'pollen "Can't convert procedure ~a to string" x)]
-    [else (format "~v" x)]))
diff --git a/examples/prism-reason.html b/examples/prism-reason.html deleted file mode 100644 index 8842f24c6e..0000000000 --- a/examples/prism-reason.html +++ /dev/null @@ -1,35 +0,0 @@ -

Comments

-
/* This is a comment */
- -

Strings and characters

-
"This is a \"string\""
-'a'
-'\\'
-'\o123'
-'\x4a'
- -

Constructors

-
type response =
-  | Yes
-  | No
-  | PrettyMuch;
- -

Example

-
type car = {maker: string, model: string};
-type carList =
-  | List car carList
-  | NoMore;
-
-let chevy = {maker: "Chevy", model: "Suburban"};
-let toyota = {maker: "Toyota", model: "Tacoma"};
-let myCarList = List chevy (List toyota NoMore);
-
-let hasExactlyTwoCars = fun lst =>
-  switch lst {
-    | NoMore => false                              /* 0 */
-    | List p NoMore => false                       /* 1 */
-    | List p (List p2 NoMore) => true              /* 2 */
-    | List p (List p2 (List p3 theRest)) => false  /* 3+ */
-  };
-
-let justTwo = hasExactlyTwoCars myCarList;  /* true! */
\ No newline at end of file diff --git a/examples/prism-regex.html b/examples/prism-regex.html deleted file mode 100644 index 41a59c1f76..0000000000 --- a/examples/prism-regex.html +++ /dev/null @@ -1,46 +0,0 @@ -

The regex languages con be used for inline regex snippets like (?<number>\d+)[-_ ]\k<number> but it mainly adds itself to other languages such as:

- -

JavaScript

-
Prism.languages.markup = {
-	'comment': /<!--[\s\S]*?-->/,
-	'prolog': /<\?[\s\S]+?\?>/,
-	'doctype': {
-		pattern: /<!DOCTYPE(?:[^>"'[\]]|"[^"]*"|'[^']*')+(?:\[(?:[^<"'\]]|"[^"]*"|'[^']*'|<(?!!--)|<!--(?:[^-]|-(?!->))*-->)*\]\s*)?>/i,
-		greedy: true
-	},
-	'cdata': /<!\[CDATA\[[\s\S]*?]]>/i,
-	'tag': {
-		pattern: /<\/?(?!\d)[^\s>\/=$<%]+(?:\s(?:\s*[^\s>\/=]+(?:\s*=\s*(?:"[^"]*"|'[^']*'|[^\s'">=]+(?=[\s>]))|(?=[\s/>])))+)?\s*\/?>/i,
-		greedy: true,
-		inside: {
-			'tag': {
-				pattern: /^<\/?[^\s>\/]+/i,
-				inside: {
-					'punctuation': /^<\/?/,
-					'namespace': /^[^\s>\/:]+:/
-				}
-			},
-			'attr-value': {
-				pattern: /=\s*(?:"[^"]*"|'[^']*'|[^\s'">=]+)/i,
-				inside: {
-					'punctuation': [
-						/^=/,
-						{
-							pattern: /^(\s*)["']|["']$/,
-							lookbehind: true
-						}
-					]
-				}
-			},
-			'punctuation': /\/?>/,
-			'attr-name': {
-				pattern: /[^\s>\/]+/,
-				inside: {
-					'namespace': /^[^\s>\/:]+:/
-				}
-			}
-
-		}
-	},
-	'entity': /&#?[\da-z]{1,8};/i
-};
diff --git a/examples/prism-rego.html b/examples/prism-rego.html deleted file mode 100644 index d8050a366e..0000000000 --- a/examples/prism-rego.html +++ /dev/null @@ -1,44 +0,0 @@ -

Full example

-
# Role-based Access Control (RBAC)
-
-# By default, deny requests.
-default allow = false
-
-# Allow admins to do anything.
-allow {
-	user_is_admin
-}
-
-# Allow the action if the user is granted permission to perform the action.
-allow {
-	# Find grants for the user.
-	some grant
-	user_is_granted[grant]
-
-	# Check if the grant permits the action.
-	input.action == grant.action
-	input.type == grant.type
-}
-
-# user_is_admin is true if...
-user_is_admin {
-
-	# for some `i`...
-	some i
-
-	# "admin" is the `i`-th element in the user->role mappings for the identified user.
-	data.user_roles[input.user][i] == "admin"
-}
-
-# user_is_granted is a set of grants for the user identified in the request.
-# The `grant` will be contained if the set `user_is_granted` for every...
-user_is_granted[grant] {
-	some i, j
-
-	# `role` assigned an element of the user_roles for this user...
-	role := data.user_roles[input.user][i]
-
-	# `grant` assigned a single grant from the grants list for 'role'...
-	grant := data.role_grants[role][j]
-}
-
diff --git a/examples/prism-renpy.html b/examples/prism-renpy.html deleted file mode 100644 index 746d215b32..0000000000 --- a/examples/prism-renpy.html +++ /dev/null @@ -1,113 +0,0 @@ -

Comments

-
# This is a comment
- -

Strings

-
"foo \"bar\" baz"
-'foo \'bar\' baz'
-""" "Multi-line" strings
-are supported."""
-''' 'Multi-line' strings
-are supported.'''
- -

Python

-
class Dog:
-
-    tricks = []             # mistaken use of a class variable
-
-    def __init__(self, name):
-        self.name = name
-
-    def add_trick(self, trick):
-        self.tricks.append(trick)
- -

Properties

-
style my_text is text:
-    size 40
-    font "gentium.ttf"
- -

Configuration

-
init -1:
-    python hide:
-
-        ## Should we enable the use of developer tools? This should be
-        ## set to False before the game is released, so the user can't
-        ## cheat using developer tools.
-
-        config.developer = True
-
-        ## These control the width and height of the screen.
-
-        config.screen_width = 800
-        config.screen_height = 600
-
-        ## This controls the title of the window, when Ren'Py is
-        ## running in a window.
-
-        config.window_title = u"The Question"
- - -

Full example

-
# Declare images used by this game.
-image bg lecturehall = "lecturehall.jpg"
-image bg uni = "uni.jpg"
-image bg meadow = "meadow.jpg"
-image bg club = "club.jpg"
-
-image sylvie normal = "sylvie_normal.png"
-image sylvie giggle = "sylvie_giggle.png"
-image sylvie smile = "sylvie_smile.png"
-image sylvie surprised = "sylvie_surprised.png"
-
-image sylvie2 normal = "sylvie2_normal.png"
-image sylvie2 giggle = "sylvie2_giggle.png"
-image sylvie2 smile = "sylvie2_smile.png"
-image sylvie2 surprised = "sylvie2_surprised.png"
-
-# Define characters used by this game.
-define s = Character('Sylvie', color="#c8ffc8")
-define m = Character('Me', color="#c8c8ff")
-
-
-# The game starts here.
-label start:
-
-    $ bl_game = False
-
-    play music "illurock.ogg"
-
-    scene bg lecturehall
-    with fade
-
-    "Well, professor Eileen's lecture was interesting."
-    "But to be honest, I couldn't concentrate on it very much."
-    "I had a lot of other thoughts on my mind."
-    "And they all ended up with a question."
-    "A question, I've been meaning to ask someone."
-
-    scene bg uni
-    with fade
-
-    "When we came out of the university, I saw her."
-
-    show sylvie normal
-    with dissolve
-
-    "She was a wonderful person."
-    "I've known her ever since we were children."
-    "And she's always been a good friend."
-    "But..."
-    "Recently..."
-    "I think..."
-    "... that I wanted more."
-    "More just talking... more than just walking home together when our classes ended."
-    "And I decided..."
-
-    menu:
-
-        "... to ask her right away.":
-
-            jump rightaway
-
-        "... to ask her later.":
-
-            jump later
diff --git a/examples/prism-rescript.html b/examples/prism-rescript.html deleted file mode 100644 index e36f10a769..0000000000 --- a/examples/prism-rescript.html +++ /dev/null @@ -1,52 +0,0 @@ -

Comments

-
/* This is a comment */
-// Another comment
-
- -

Let bindings

-
let name = "Alonzo Church"
-let message = `Hello ${name}`
-let message2 = `Hello ${person.name}`
-let result = `Testing => ${Module.Another.value}`
-let value = 1
-let result = 1 + 1
-let langs = ["ReScript", "JavaScript"]
-let person = ("Alonzo", 32)
- -

Type declarations & Functions

-
type role = | Admin | Editor | Viewer 
-type numeric = #1 | #2 | #3
-type normal = #Poly | #Variant
-type myPolyVar = [ #"poly-variant" | #"test-chars" ]
-
-type person = {
- name: string,
- age: int,
- role: role
-}
-
-type record = {
-  "field": string
-}
-
-let sum = (a, b) => a + b
-let sum2 = (a:int, b: int) => a + b
- -

Modules, JSX & Components

-
%%raw(``)
-module Button = {
-  @react.component
-  let make = (~count: int) =>{
-    let times = switch count {
-    | 1 => "once"
-    | 2 => "twice"
-    | n => Belt.Int.toString(n) ++ " times"
-    }
-    let msg = "Click me " ++ times
-
-	<button onClick={Js.log}>{msg->React.string}</button>;
-  }
-}
-
-@react.component
-let make = () => <MyModule.Button count=1 />
diff --git a/examples/prism-rest.html b/examples/prism-rest.html deleted file mode 100644 index a7288a38b8..0000000000 --- a/examples/prism-rest.html +++ /dev/null @@ -1,310 +0,0 @@ -

Titles

-
===============
- Section Title
-===============
-
----------------
- Section Title
----------------
-
-Section Title
-=============
-
-Section Title
--------------
-
-Section Title
-`````````````
-
-Section Title
-'''''''''''''
-
-Section Title
-.............
-
-Section Title
-~~~~~~~~~~~~~
-
-Section Title
-*************
-
-Section Title
-+++++++++++++
-
-Section Title
-^^^^^^^^^^^^^
- -

Lists

-
- This is the first bullet list item.
-- This is the first paragraph in the second item in the list.
-
-  This is the second paragraph in the second item in the list.
-
-  - This is a sublist.  The bullet lines up with the left edge of
-    the text blocks above.
-
-- This is the third item of the main list.
-
-This paragraph is not part of the list.
-
-1. Item 1 initial text.
-
-   a) Item 1a.
-   b) Item 1b.
-
-2. a) Item 2a.
-   b) Item 2b.
- -

Field lists

-
:Date: 2001-08-16
-:Version: 1
-:Authors: - Me
-          - Myself
-          - I
-:Indentation: Since the field marker may be quite long, the second
-   and subsequent lines of the field body do not have to line up
-   with the first line, but they must be indented relative to the
-   field name marker, and they must line up with each other.
-:Parameter i: integer
- -

Option lists

-
-a         Output all.
--b         Output both (this description is
-           quite long).
--c arg     Output just arg.
---long     Output all day long.
-
--p         This option has two paragraphs in the description.
-           This is the first.
-
-           This is the second.  Blank lines may be omitted between
-           options (as above) or left in (as here and below).
-
---very-long-option  A VMS-style option.  Note the adjustment for
-                    the required two spaces.
-
---an-even-longer-option
-           The description can also start on the next line.
-
--2, --two  This option has two variants.
-
--f FILE, --file=FILE  These two options are synonyms; both have
-                      arguments.
-
-/V         A VMS/DOS-style option.
- -

Literal blocks

-
::
-
-    for a in [5,4,3,2,1]:   # this is program code, shown as-is
-        print a
-    print "it's..."
-    # a literal block continues until the indentation ends
-
-John Doe wrote::
-
->> *Great* idea!
->
-> Why didn't I think of that?
-
-You just did!  ;-)
- -

Line blocks

-
| Lend us a couple of bob till Thursday.
-| I'm absolutely skint.
-| But I'm expecting a postal order and I can pay you back
-  as soon as it comes.
-| Love, Ewan.
-
-Take it away, Eric the Orchestra Leader!
-
-    | A one, two, a one two three four
-    |
-    | Half a bee, philosophically,
-    |     must, *ipso facto*, half not be.
-    | But half the bee has got to be,
-    |     *vis a vis* its entity.  D'you see?
-    |
-    | But can a bee be said to be
-    |     or not to be an entire bee,
-    |         when half the bee is not a bee,
-    |             due to some ancient injury?
-    |
-    | Singing...
- -

Grid tables and simple tables

-
+------------------------+------------+----------+----------+
-| Header row, column 1   | Header 2   | Header 3 | Header 4 |
-| (header rows optional) |            |          |          |
-+========================+============+==========+==========+
-| body row 1, column 1   | column 2   | column 3 | column 4 |
-+------------------------+------------+----------+----------+
-| body row 2             | Cells may span columns.          |
-+------------------------+------------+---------------------+
-| body row 3             | Cells may  | - Table cells       |
-+------------------------+ span rows. | - contain           |
-| body row 4             |            | - body elements.    |
-+------------------------+------------+---------------------+
-
-	+--------------+----------+-----------+-----------+
-	| row 1, col 1 | column 2 | column 3  | column 4  |
-	+--------------+----------+-----------+-----------+
-	| row 2        |                                  |
-	+--------------+----------+-----------+-----------+
-	| row 3        |          |           |           |
-	+--------------+----------+-----------+-----------+
-
-=====  =====  =======
-  A      B    A and B
-=====  =====  =======
-False  False  False
-True   False  False
-False  True   False
-True   True   True
-=====  =====  =======
-
-	=====  =====  ======
-	   Inputs     Output
-	------------  ------
-	  A      B    A or B
-	=====  =====  ======
-	False  False  False
-	True   False  True
-	False  True   True
-	True   True   True
-	=====  =====  ======
- -

Footnotes and links

-
.. [1] Body elements go here.
-
-If [#note]_ is the first footnote reference, it will show up as
-"[1]".  We can refer to it again as [#note]_ and again see
-"[1]".  We can also refer to it as note_ (an ordinary internal
-hyperlink reference).
-
-.. [#note] This is the footnote labeled "note".
-
-Here is a symbolic footnote reference: [*]_.
-
-.. [*] This is the footnote.
-
-[2]_ will be "2" (manually numbered),
-[#]_ will be "3" (anonymous auto-numbered), and
-[#label]_ will be "1" (labeled auto-numbered).
-
-.. [2] This footnote is labeled manually, so its number is fixed.
-
-.. [#label] This autonumber-labeled footnote will be labeled "1".
-   It is the first auto-numbered footnote and no other footnote
-   with label "1" exists.  The order of the footnotes is used to
-   determine numbering, not the order of the footnote references.
-
-.. [#] This footnote will be labeled "3".  It is the second
-   auto-numbered footnote, but footnote label "2" is already used.
-
-Here is a citation reference: [CIT2002]_.
-
-.. [CIT2002] This is the citation.  It's just like a footnote,
-   except the label is textual.
-
-.. _hyperlink-name: link-block
-
-.. __: anonymous-hyperlink-target-link-block
-
-__ anonymous-hyperlink-target-link-block
-
-Clicking on this internal hyperlink will take us to the target_
-below.
-
-.. _target:
-
-The hyperlink target above points to this paragraph.
- -

Directives

-
.. image:: mylogo.jpeg
-
-.. figure:: larch.png
-
-   The larch.
-
-.. note:: This is a paragraph
-
-   - Here is a bullet list.
-
-.. figure:: picture.png
-   :scale: 50 %
-   :alt: map to buried treasure
-
-   This is the caption of the figure (a simple paragraph).
-
-   The legend consists of all elements after the caption.  In this
-   case, the legend consists of this paragraph and the following
-   table:
-
-   +-----------------------+-----------------------+
-   | Symbol                | Meaning               |
-   +=======================+=======================+
-   | .. image:: tent.png   | Campground            |
-   +-----------------------+-----------------------+
-   | .. image:: waves.png  | Lake                  |
-   +-----------------------+-----------------------+
-   | .. image:: peak.png   | Mountain              |
-   +-----------------------+-----------------------+
- -

Substitutions

-
The |biohazard| symbol must be used on containers used to
-dispose of medical waste.
-
-.. |biohazard| image:: biohazard.png
-
-|Michael| and |Jon| are our widget-wranglers.
-
-.. |Michael| user:: mjones
-.. |Jon|     user:: jhl
-
-West led the |H| 3, covered by dummy's |H| Q, East's |H| K,
-and trumped in hand with the |S| 2.
-
-.. |H| image:: /images/heart.png
-   :height: 11
-   :width: 11
-.. |S| image:: /images/spade.png
-   :height: 11
-   :width: 11
-
-* |Red light| means stop.
-* |Green light| means go.
-* |Yellow light| means go really fast.
-
-.. |Red light|    image:: red_light.png
-.. |Green light|  image:: green_light.png
-.. |Yellow light| image:: yellow_light.png
- -

Comments

-
.. This is a comment
-
-..
-   _so: is this!
-
-..
-   [and] this!
-
-..
-   this:: too!
-
-..
-   |even| this:: !
- -

Inline markup

-
This is *emphasized text*.
-This is **strong text**.
-This is `interpreted text`.
-:role:`interpreted text`
-`interpreted text`:role:
-This text is an example of ``inline literals``.
-The regular expression ``[+-]?(\d+(\.\d*)?|\.\d+)`` matches
-floating-point numbers (without exponents).
-
-See the `Python home page <http://www.python.org>`_ for info.
-
-Oh yes, the _`Norwegian Blue`.  What's, um, what's wrong with it?
diff --git a/examples/prism-rip.html b/examples/prism-rip.html deleted file mode 100644 index 99769c3b3b..0000000000 --- a/examples/prism-rip.html +++ /dev/null @@ -1,12 +0,0 @@ -

Comments

-
# This is a comment
- -

Strings

-
"foo \"bar\" baz"
-'foo \'bar\' baz'
- -

Regex

-
regular_expression = /abc/
- -

Symbols

-
string_symbol = :rip 
\ No newline at end of file diff --git a/examples/prism-roboconf.html b/examples/prism-roboconf.html deleted file mode 100644 index ca57221e79..0000000000 --- a/examples/prism-roboconf.html +++ /dev/null @@ -1,49 +0,0 @@ -

Full example

-
ApacheServer {
-    # Apache instances will be deployed by Roboconf's Puppet extension
-    installer: puppet;
-
-    # Web applications could be deployed over this Apache server
-    children: My-Dash-Board, Marketing-Suite;
-
-    # Properties exported by this component.
-    # 'port' should have a default value, or we will have to set it when we create an instance.
-    exports: port = 19099;
-
-    # 'ip' is a special variable. It will be updated at runtime by a Roboconf agent.
-    exports: ip;
-
-    # Other components properties that this server needs to have so that it can start.
-    imports: LB.port (optional), LB.ip (optional);
-
-    # Here, the Apache may also be notified about components instances of type LB.
-    # The imports are marked as optional. It means that if there is no LB instance, an
-    # Apache instance will be able to start anyway.
-    #
-    # If the import was not optional, e.g.
-    #
-    # imports: LB.port, LB.ip;
-    # or even
-    # imports: LB.port (optional), LB.ip;
-    #
-    # ... then an Apache instance would need at least one LB instance somewhere.
-
-    # Imports may also reference variables from other applications
-    imports: external Lamp.lb-ip;
-}
-
-facet LoadBalanced {
-    exports: ip, port;  # Define we export two variables.
-}
-
-instance of VM {
-
-    # This will create 5 VM instances, called VM 1, VM 2, VM3, VM 4 and VM 5.
-    name: VM ;  # Yes, there is a space at the end... :)
-    count: 5;
-
-    # On every VM instance, we will deploy...
-    instance of Tomcat {
-        name: Tomcat;
-    }
-}
diff --git a/examples/prism-robotframework.html b/examples/prism-robotframework.html deleted file mode 100644 index 8ddd56c120..0000000000 --- a/examples/prism-robotframework.html +++ /dev/null @@ -1,21 +0,0 @@ -

Full example

-
*** Settings ***
-Documentation    Example using the space separated plain text format.
-Library          OperatingSystem
-
-*** Variables ***
-${MESSAGE}       Hello, world!
-
-*** Test Cases ***
-My Test
-    [Documentation]    Example test
-    Log    ${MESSAGE}
-    My Keyword    /tmp
-
-Another Test
-    Should Be Equal    ${MESSAGE}    Hello, world!
-
-*** Keywords ***
-My Keyword
-    [Arguments]    ${path}
-    Directory Should Exist    ${path}
diff --git a/examples/prism-ruby.html b/examples/prism-ruby.html deleted file mode 100644 index 58d43cd1ea..0000000000 --- a/examples/prism-ruby.html +++ /dev/null @@ -1,33 +0,0 @@ -

Comments

-
# This is a comment
-=begin
-Multi-line
-comment
-=end
- -

Strings

-
"foo \"bar\" baz"
-'foo \'bar\' baz'
-<<STRING
-  here's some #{string} contents
-STRING
- -

Regular expressions

-
/foo?[ ]*bar/
- -

Variables

-
$foo = 5;
-class InstTest
-  def set_foo(n)
-    @foo = n
-  end
-  def set_bar(n)
-    @bar = n
-  end
-end
- -

Symbols

-
mystring = :steveT;
- -

String Interpolation

-
"foo #{'bar'+my_variable}"
\ No newline at end of file diff --git a/examples/prism-rust.html b/examples/prism-rust.html deleted file mode 100644 index e7b2d1ae44..0000000000 --- a/examples/prism-rust.html +++ /dev/null @@ -1,49 +0,0 @@ -

Comments

-
// Single line comment
-/// Doc comments
-/* Multiline
-comment */
- -

Strings

-
'C'; '\''; '\n'; '\u{7FFF}'; // Characters
-"foo \"bar\" baz"; // String
-r##"foo #"bar"# baz"##; // Raw string with # pairs
-b'C'; b'\''; b'\n'; // Bytes
-b"foo \"bar\" baz"; // Byte string
-br##"foo #"bar"# baz"##; // Raw byte string with # pairs
-
- -

Numbers

-
0xff_u8;                           // type u8
-0o70_i16;                          // type i16
-0b1111_1111_1001_0000_i32;         // type i32
-
-123.0f64;        // type f64
-0.1f64;          // type f64
-0.1f32;          // type f32
-12E+99_f64;      // type f64
-
- -

Booleans

-
true; false;
- -

Functions and macros

-
println!("x is {}", x);
-fn next_two(x: i32) -> (i32, i32) { (x + 1, x + 2) }
-next_two(5);
-vec![1, 2, 3];
-
- -

Attributes

-
#![warn(unstable)]
-#[test]
-fn a_test() {
-	// ...
-}
- -

Closure parameters and bitwise OR

-
let x = a | b;
-let y = c || d;
-let add_one = |x: i32| -> i32 { 1i + x };
-let printer = || { println!("x is: {}", x); };
-
diff --git a/examples/prism-sas.html b/examples/prism-sas.html deleted file mode 100644 index da2a8b52b8..0000000000 --- a/examples/prism-sas.html +++ /dev/null @@ -1,159 +0,0 @@ -

Comments

-
/* This is a
-multi-line comment */
-
-* This is a comment too;
- -

Numbers, dates and times

-
42; 4.5; 4.5e-10; -3; -3.5e2; -4.2e-23;
-0afx; 0123x;
-'1jan2013'd; '01jan09'd;
-'9:25't; '9:25:19pm't;
-'01may12:9:30:00'dt; '18jan2003:9:27:05am'dt;
-'2013-05-17T09:15:30–05:00'dt; '2013-05-17T09:15:30–05'dt;
-'2013-07-20T12:00:00+00:00'dt; '2013-07-20T12:00:00Z'dt;
- -

Strings

-
'Single quoted string';
-"Double quoted string";
-'String ''quoted'' string "containing" quote';
-"Double ""quoted"" string 'containing' quote";
- -

Operators

-
A**B;
-'foo'||'bar'!!'baz'¦¦'test';
-A<>B><C;
-A~=B¬=C^=D>=E<=F;
-a*b/c+d-e<f>g&h|i!j¦k;
-~a;¬b;^c;
-(a eq b) ne (c gt d) lt e ge f le h;
-state in ('NY','NJ','PA');
-not a;
- -

More examples

-
/* Some examples adapted from the documentation
-   http://support.sas.com/documentation/cdl/en/basess/64003/PDF/default/basess.pdf */
-
-data city; * another inline comment;
-
-	input Year 4. @7 ServicesPolice comma6.
-		@15 ServicesFire comma6. @22 ServicesWater_Sewer comma6.
-		@30 AdminLabor comma6. @39 AdminSupplies comma6.
-		@45 AdminUtilities comma6.;
-	ServicesTotal=ServicesPolice+ServicesFire+ServicesWater_Sewer;
-	AdminTotal=AdminLabor+AdminSupplies+AdminUtilities;
-	Total=ServicesTotal+AdminTotal;
-
-	Test='A string '' whith a quote';
-	Test2 = "A string "" whith a quote";
-
-	label   Total='Total Outlays'
-			ServicesTotal='Services: Total'
-			ServicesPolice='Services: Police'
-			ServicesFire='Services: Fire'
-			ServicesWater_Sewer='Services: Water & Sewer'
-			AdminTotal='Administration: Total'
-			AdminLabor='Administration: Labor'
-			AdminSupplies='Administration: Supplies'
-			AdminUtilities='Administration: Utilities';
-	datalines;
-1993 2,819 1,120 422 391 63 98
-1994 2,477 1,160 500 172 47 70
-1995 2,028 1,061 510 269 29 79
-1996 2,754 893 540 227 21 67
-1997 2,195 963 541 214 21 59
-1998 1,877 926 535 198 16 80
-1999 1,727 1,111 535 213 27 70
-2000 1,532 1,220 519 195 11 69
-2001 1,448 1,156 577 225 12 58
-2002 1,500 1,076 606 235 19 62
-2003 1,934 969 646 266 11 63
-2004 2,195 1,002 643 256 24 55
-2005 2,204 964 692 256 28 70
-2006 2,175 1,144 735 241 19 83
-2007 2,556 1,341 813 238 25 97
-2008 2,026 1,380 868 226 24 97
-2009 2,526 1,454 946 317 13 89
-2010 2,027 1,486 1,043 226 . 82
-2011 2,037 1,667 1,152 244 20 88
-2012 2,852 1,834 1,318 270 23 74
-2013 2,787 1,701 1,317 307 26 66
-;
-proc datasets library=work nolist
-;
-contents data=city
-;
-run;
-
-
-data city3;
-	set city(firstobs=10 obs=15);
-run;
-
-data services (keep=ServicesTotal ServicesPolice ServicesFire
-				ServicesWater_Sewer)
-	admin (keep=AdminTotal AdminLabor AdminSupplies
-			AdminUtilities);
-	set city(drop=Total);
-run;
-proc print data=services;
-	title 'City Expenditures: Services';
-run;
-
-data newlength;
-	set mylib.internationaltours;
-	length Remarks $ 30;
-	if Vendor = 'Hispania' then Remarks = 'Bonus for 10+ people';
-	else if Vendor = 'Mundial' then Remarks = 'Bonus points';
-	else if Vendor = 'Major' then Remarks = 'Discount for 30+ people';
-run;
-proc print data=newlength;
-	var Country Vendor Remarks;
-	title 'Information About Vendors';
-run;
-
-libname mylib 'permanent-data-library';
-data mylib.departures;
-	input Country $ 1-9 CitiesInTour 11-12 USGate $ 14-26
-	ArrivalDepartureGates $ 28-48;
-	datalines;
-Japan 5 San Francisco Tokyo, Osaka
-Italy 8 New York Rome, Naples
-Australia 12 Honolulu Sydney, Brisbane
-Venezuela 4 Miami Caracas, Maracaibo
-Brazil 4 Rio de Janeiro, Belem
-;
-proc print data=mylib.departures;
-	title 'Data Set AIR.DEPARTURES';
-run;
-
-data missingval;
-	length Country $ 10 TourGuide $ 10;
-	input Country TourGuide;
-	* lines is an alias for datalines;
-	lines;
-Japan Yamada
-Italy Militello
-Australia Edney
-Venezuela .
-Brazil Cardoso
-;
-
-data inventory_tool;
-	input PartNumber $ Description $ InStock @17
-		ReceivedDate date9. @27 Price;
-	format ReceivedDate date9.;
-	* cards is an alias for datalines;
-	cards;
-K89R seal 34 27jul2010 245.00
-M4J7 sander 98 20jun2011 45.88
-LK43 filter 121 19may2011 10.99
-MN21 brace 43 10aug2012 27.87
-BC85 clamp 80 16aug2012 9.55
-NCF3 valve 198 20mar2012 24.50
-KJ66 cutter 6 18jun2010 19.77
-UYN7 rod 211 09sep2010 11.55
-JD03 switch 383 09jan2013 13.99
-BV1E timer 26 03aug2013 34.50
-;
-run;
diff --git a/examples/prism-sass.html b/examples/prism-sass.html deleted file mode 100644 index a2f0673a2b..0000000000 --- a/examples/prism-sass.html +++ /dev/null @@ -1,28 +0,0 @@ -

Comments

-
/* This comment will appear in the CSS output.
-  This is nested beneath the comment,
-  so it's part of it
-
-// This comment will not appear in the CSS output.
-  This is nested beneath the comment as well,
-  so it also won't appear
- -

At-rules and shortcuts

-
@mixin large-text
-  color: #ff0000
-
-@media (min-width: 600px)
-  h1
-    @include large-text
-
-=large-text
-  color: #ff0000
-
-h1
-  +large-text
- -

Variables

-
$width: 5em
-#main
-  width: $width
-
diff --git a/examples/prism-scala.html b/examples/prism-scala.html deleted file mode 100644 index b9ed1f1b65..0000000000 --- a/examples/prism-scala.html +++ /dev/null @@ -1,87 +0,0 @@ -

Comments

-
// Single line comment
-/* Mutli-line
-comment */
- -

Strings and characters

-
'a'
-"foo bar baz"
-"""Multi-line
-string"""
- -

Numbers

-
0
-21
-0xFFFFFFFF
--42L
-0.0
-1e30f
-3.14159f
-1.0e-100
-.1
-
- -

Symbols

-
'x
-'identifier
- -

Full example

-
// Contributed by John Williams
-package examples
-
-object lazyLib {
-
-  /** Delay the evaluation of an expression until it is needed. */
-  def delay[A](value: => A): Susp[A] = new SuspImpl[A](value)
-
-  /** Get the value of a delayed expression. */
-  implicit def force[A](s: Susp[A]): A = s()
-
-  /**
-   * Data type of suspended computations. (The name froms from ML.)
-   */
-  abstract class Susp[+A] extends Function0[A]
-
-  /**
-   * Implementation of suspended computations, separated from the
-   * abstract class so that the type parameter can be invariant.
-   */
-  class SuspImpl[A](lazyValue: => A) extends Susp[A] {
-    private var maybeValue: Option[A] = None
-
-    override def apply() = maybeValue match {
-      case None =>
-        val value = lazyValue
-        maybeValue = Some(value)
-        value
-	  case Some(value) =>
-        value
-    }
-
-    override def toString() = maybeValue match {
-      case None => "Susp(?)"
-      case Some(value) => "Susp(" + value + ")"
-    }
-  }
-}
-
-object lazyEvaluation {
-  import lazyLib._
-
-  def main(args: Array[String]) = {
-    val s: Susp[Int] = delay { println("evaluating..."); 3 }
-
-    println("s     = " + s)       // show that s is unevaluated
-    println("s()   = " + s())     // evaluate s
-    println("s     = " + s)       // show that the value is saved
-    println("2 + s = " + (2 + s)) // implicit call to force()
-
-    val sl = delay { Some(3) }
-    val sl1: Susp[Some[Int]] = sl
-    val sl2: Susp[Option[Int]] = sl1   // the type is covariant
-
-    println("sl2   = " + sl2)
-    println("sl2() = " + sl2())
-    println("sl2   = " + sl2)
-  }
-}
diff --git a/examples/prism-scheme.html b/examples/prism-scheme.html deleted file mode 100644 index de50f2267c..0000000000 --- a/examples/prism-scheme.html +++ /dev/null @@ -1,35 +0,0 @@ -

Comments

-
; This is a comment
- -

Booleans

-
#t
-#f
- -

Strings

-
"two \"quotes\" within"
- -

Functions

-
(lambda (x) (+ x 3))
-(apply vector 'a 'b '(c d e))
-
- -

Full example

-
;; Calculation of Hofstadter's male and female sequences as a list of pairs
-
-(define (hofstadter-male-female n)
-  (letrec ((female (lambda (n)
-		     (if (= n 0)
-			 1
-			 (- n (male (female (- n 1)))))))
-	   (male (lambda (n)
-		   (if (= n 0)
-		       0
-		       (- n (female (male (- n 1))))))))
-    (let loop ((i 0))
-      (if (> i n)
-	  '()
-	  (cons (cons (female i)
-		      (male i))
-		(loop (+ i 1)))))))
-
-(hofstadter-male-female 8)
\ No newline at end of file diff --git a/examples/prism-scss.html b/examples/prism-scss.html deleted file mode 100644 index f0daaf577d..0000000000 --- a/examples/prism-scss.html +++ /dev/null @@ -1,31 +0,0 @@ -

Comments

-
// Single line comment
-/* Multi-line
-comment */
- -

At-rules

-
@import "foo.scss";
-@media (min-width: 600px) {}
-.seriousError {
-    @extend .error;
-}
-@for $i from 1 through 3 {}
-
- -

Compass URLs

-
@font-face {
-	font-family: "opensans";
-	src: font-url("opensans.ttf");
-}
- -

Variables

-
$width: 5em;
-#main {
-    width: $width;
-}
- -

Interpolations are highlighted in property names

-
p.#{$name} {
-    #{$attr}-color: blue;
-}
-
\ No newline at end of file diff --git a/examples/prism-shell-session.html b/examples/prism-shell-session.html deleted file mode 100644 index 07c9ce4c3d..0000000000 --- a/examples/prism-shell-session.html +++ /dev/null @@ -1,18 +0,0 @@ -

Full example

-
$ git checkout master
-Switched to branch 'master'
-Your branch is up-to-date with 'origin/master'.
-$ git push
-Everything up-to-date
-$ echo "Foo
-> Bar"
-Foo
-Bar
- -

bash and sh console sessions are fully supported.

- -
foo@bar:/$ cd ~
-foo@bar:~$ sudo -i
-[sudo] password for foo:
-root@bar:~# echo "hello!"
-hello!
diff --git a/examples/prism-smali.html b/examples/prism-smali.html deleted file mode 100644 index 61c07c1893..0000000000 --- a/examples/prism-smali.html +++ /dev/null @@ -1,30 +0,0 @@ -

Full example

-
# Source: https://github.com/JesusFreke/smali/blob/master/examples/HelloWorld/HelloWorld.smali
-
-.class public LHelloWorld;
-
-#Ye olde hello world application
-#To assemble and run this on a phone or emulator:
-#
-#java -jar smali.jar -o classes.dex HelloWorld.smali
-#zip HelloWorld.zip classes.dex
-#adb push HelloWorld.zip /data/local
-#adb shell dalvikvm -cp /data/local/HelloWorld.zip HelloWorld
-#
-#if you get out of memory type errors when running smali.jar, try
-#java -Xmx512m -jar smali.jar HelloWorld.smali
-#instead
-
-.super Ljava/lang/Object;
-
-.method public static main([Ljava/lang/String;)V
-    .registers 2
-
-    sget-object v0, Ljava/lang/System;->out:Ljava/io/PrintStream;
-
-    const-string v1, "Hello World!"
-
-    invoke-virtual {v0, v1}, Ljava/io/PrintStream;->println(Ljava/lang/String;)V
-
-    return-void
-.end method
diff --git a/examples/prism-smalltalk.html b/examples/prism-smalltalk.html deleted file mode 100644 index 7fb70f8f7c..0000000000 --- a/examples/prism-smalltalk.html +++ /dev/null @@ -1,92 +0,0 @@ -

Numbers

-
3
-30.45
--3
-0.005
--14.0
-13772
-8r377
-8r153
-8r34.1
-8r-37
-16r106
-16rFF
-16rAC.DC
-16r-1.C
-1.586e5
-1.586e-3
-8r3e2
-2r11e6
- -

Strings and characters

-
$a
-$M
-$-
-$$
-$1
-'hi'
-'food'
-'the Smalltalk-80 system'
-'can''t'
- -

Symbols

-
#bill
-#M63
-#+
-#*
- -

Arrays

-
#(1 2 3)
-#('food' 'utilities' 'rent' 'household' 'transportation' 'taxes' 'recreation')
-#(('one' 1) ('not' 'negative') 0 -1)
-#(9 'nine' $9 (0 'zero' $0 ( ) 'e' $f 'g' $h 'i'))
- -

Blocks

-
sum := 0.
-#(2 3 5 7 11) do: [ :primel | sum := sum + (prime * prime)]
-
-sizeAdder := [ :array | total := total + array size].
-
-[ :x :y | (x * x) + (y * y)]
-[ :frame :clippingBox | frame intersect: clippingBox]
- -

Full example

-
Object>>method: num
-    "comment 123"
-    | var1 var2 |
-    (1 to: num) do: [:i | |var| ^i].
-    Klass with: var1.
-    Klass new.
-    arr := #('123' 123.345 #hello Transcript var $@).
-    arr := #().
-    var2 = arr at: 3.
-    ^ self abc
-
-heapExample
-    "HeapTest new heapExample"
-    "Multiline
-    decription"
-    | n rnd array time sorted |
-    n := 5000.
-    "# of elements to sort"
-    rnd := Random new.
-    array := (1 to: n)
-                collect: [:i | rnd next].
-    "First, the heap version"
-    time := Time
-                millisecondsToRun: [sorted := Heap withAll: array.
-    1
-        to: n
-        do: [:i |
-            sorted removeFirst.
-            sorted add: rnd next]].
-    Transcript cr; show: 'Time for Heap: ' , time printString , ' msecs'.
-    "The quicksort version"
-    time := Time
-                millisecondsToRun: [sorted := SortedCollection withAll: array.
-    1
-        to: n
-        do: [:i |
-            sorted removeFirst.
-            sorted add: rnd next]].
-    Transcript cr; show: 'Time for SortedCollection: ' , time printString , ' msecs'
\ No newline at end of file diff --git a/examples/prism-smarty.html b/examples/prism-smarty.html deleted file mode 100644 index 650e6fc1d4..0000000000 --- a/examples/prism-smarty.html +++ /dev/null @@ -1,71 +0,0 @@ -

Comments

-
{* This is a comment with <p>some markup</p> in it *}
-{* Multi-line
-comment *}
- -

Variables

-
{$foo}
-{$foo.bar}
-{$foo.$bar}
-{$foo[$bar]}
-{$foo->bar}
-{$foo->bar()}
-{#foo#}
-{$smarty.config.foo}
-{$foo[bar]}
-
- -

Strings and numbers

-
{$foo[4]}
-{$foo['bar']}
- -

Tags and filters

-
{assign var=foo value='baa'}
-{include file='header.tpl'}
-{$smarty.now|date_format:'%Y-%m-%d %H:%M:%S'}
-{$title|truncate:40:'...'}
-{$myArray|@count}
-
-{math equation="height * width / division"
-   height=$row_height
-   width=$row_width
-   division=#col_div#}
- -

Control flow

- -
{if ( $amount < 0 or $amount > 1000 ) and $volume >= #minVolAmt#}
-   ...
-{/if}
-{if count($var) gt 0}{/if}
-{if $var is even by 3}
-   ...
-{/if}
-
-{foreach from=$myArray item=i name=foo}
-	{$smarty.foreach.foo.index}|{$smarty.foreach.foo.iteration},
-{/foreach}
-
-<ul>
-{foreach from=$items key=myId item=i}
-  <li><a href="item.php?id={$myId}">{$i.no}: {$i.label}</li>
-{/foreach}
-</ul>
-
- -

Literal section

-
{literal}
-	<script>
-		(function() { /* This is JS, not Smarty */ } ());
-	</script>
-{/literal}
-
-<style type="text/css">
-{literal}
-/* this is an intersting idea for this section */
-.madIdea{
-    border: 3px outset #ffffff;
-    margin: 2 3 4 5px;
-    background-color: #001122;
-}
-{/literal}
-</style>
diff --git a/examples/prism-sml.html b/examples/prism-sml.html deleted file mode 100644 index d5030eb815..0000000000 --- a/examples/prism-sml.html +++ /dev/null @@ -1,43 +0,0 @@ -

Full example

-
(* source: https://github.com/HarrisonGrodin/ml-numbers/blob/ba35c763092052e391871edf224f17474c6231b1/src/Rational.sml *)
-
-structure Rational :> RATIONAL =
-  struct
-    type t = int * int  (* (a,b) invariant: a,b coprime; b nonnegative *)
-
-    local
-      val rec gcd = fn
-        (m,0) => m
-      | (m,n) => gcd (n, m mod n)
-    in
-      infix 8 //
-      val op // = fn (x,y) => (
-        let
-          val gcd = gcd (x,y)
-        in
-          (x div gcd, y div gcd)
-        end
-      )
-    end
-
-    val show = Fn.id
-
-    val zero = (0,1)
-    val one  = (1,1)
-
-    val eq : t * t -> bool = (op =)
-    val compare = fn ((a,b),(x,y)) => Int.compare (a * y, b * x)
-    val toString = fn (x,y) => Int.toString x ^ " // " ^ Int.toString y
-    val percent =
-      Fn.curry (Fn.flip (op ^)) "%"
-      o Int.toString
-      o (fn (a,b) => (100 * a) div b)
-
-    val op + = fn ((a,b),(x,y)) => (a * y + b * x) // (b * y)
-    val ~ = fn (a,b) => (~a,b)
-    val op - = fn (r1,r2) => r1 + ~r2
-
-    val op * = fn ((a,b),(x,y)) => (a * x) // (b * y)
-    val inv = Fn.flip (op //)
-    val op / = fn (r1,r2) => r1 * inv r2
-  end
diff --git a/examples/prism-solidity.html b/examples/prism-solidity.html deleted file mode 100644 index f66afca109..0000000000 --- a/examples/prism-solidity.html +++ /dev/null @@ -1,151 +0,0 @@ -

Full example

-
pragma solidity >=0.4.22 <0.7.0;
-
-/// @title Voting with delegation.
-contract Ballot {
-	// This declares a new complex type which will
-	// be used for variables later.
-	// It will represent a single voter.
-	struct Voter {
-		uint weight; // weight is accumulated by delegation
-		bool voted;  // if true, that person already voted
-		address delegate; // person delegated to
-		uint vote;   // index of the voted proposal
-	}
-
-	// This is a type for a single proposal.
-	struct Proposal {
-		bytes32 name;   // short name (up to 32 bytes)
-		uint voteCount; // number of accumulated votes
-	}
-
-	address public chairperson;
-
-	// This declares a state variable that
-	// stores a `Voter` struct for each possible address.
-	mapping(address => Voter) public voters;
-
-	// A dynamically-sized array of `Proposal` structs.
-	Proposal[] public proposals;
-
-	/// Create a new ballot to choose one of `proposalNames`.
-	constructor(bytes32[] memory proposalNames) public {
-		chairperson = msg.sender;
-		voters[chairperson].weight = 1;
-
-		// For each of the provided proposal names,
-		// create a new proposal object and add it
-		// to the end of the array.
-		for (uint i = 0; i < proposalNames.length; i++) {
-			// `Proposal({...})` creates a temporary
-			// Proposal object and `proposals.push(...)`
-			// appends it to the end of `proposals`.
-			proposals.push(Proposal({
-					name: proposalNames[i],
-					voteCount: 0
-			}));
-		}
-	}
-
-	// Give `voter` the right to vote on this ballot.
-	// May only be called by `chairperson`.
-	function giveRightToVote(address voter) public {
-		// If the first argument of `require` evaluates
-		// to `false`, execution terminates and all
-		// changes to the state and to Ether balances
-		// are reverted.
-		// This used to consume all gas in old EVM versions, but
-		// not anymore.
-		// It is often a good idea to use `require` to check if
-		// functions are called correctly.
-		// As a second argument, you can also provide an
-		// explanation about what went wrong.
-		require(
-			msg.sender == chairperson,
-			"Only chairperson can give right to vote."
-		);
-		require(
-			!voters[voter].voted,
-			"The voter already voted."
-		);
-		require(voters[voter].weight == 0);
-		voters[voter].weight = 1;
-	}
-
-	/// Delegate your vote to the voter `to`.
-	function delegate(address to) public {
-		// assigns reference
-		Voter storage sender = voters[msg.sender];
-		require(!sender.voted, "You already voted.");
-
-		require(to != msg.sender, "Self-delegation is disallowed.");
-
-		// Forward the delegation as long as
-		// `to` also delegated.
-		// In general, such loops are very dangerous,
-		// because if they run too long, they might
-		// need more gas than is available in a block.
-		// In this case, the delegation will not be executed,
-		// but in other situations, such loops might
-		// cause a contract to get "stuck" completely.
-		while (voters[to].delegate != address(0)) {
-			to = voters[to].delegate;
-
-			// We found a loop in the delegation, not allowed.
-			require(to != msg.sender, "Found loop in delegation.");
-		}
-
-		// Since `sender` is a reference, this
-		// modifies `voters[msg.sender].voted`
-		sender.voted = true;
-		sender.delegate = to;
-		Voter storage delegate_ = voters[to];
-		if (delegate_.voted) {
-			// If the delegate already voted,
-			// directly add to the number of votes
-			proposals[delegate_.vote].voteCount += sender.weight;
-		} else {
-			// If the delegate did not vote yet,
-			// add to her weight.
-			delegate_.weight += sender.weight;
-		}
-	}
-
-	/// Give your vote (including votes delegated to you)
-	/// to proposal `proposals[proposal].name`.
-	function vote(uint proposal) public {
-		Voter storage sender = voters[msg.sender];
-		require(sender.weight != 0, "Has no right to vote");
-		require(!sender.voted, "Already voted.");
-		sender.voted = true;
-		sender.vote = proposal;
-
-		// If `proposal` is out of the range of the array,
-		// this will throw automatically and revert all
-		// changes.
-		proposals[proposal].voteCount += sender.weight;
-	}
-
-	/// @dev Computes the winning proposal taking all
-	/// previous votes into account.
-	function winningProposal() public view
-			returns (uint winningProposal_)
-	{
-		uint winningVoteCount = 0;
-		for (uint p = 0; p < proposals.length; p++) {
-			if (proposals[p].voteCount > winningVoteCount) {
-				winningVoteCount = proposals[p].voteCount;
-				winningProposal_ = p;
-			}
-		}
-	}
-
-	// Calls winningProposal() function to get the index
-	// of the winner contained in the proposals array and then
-	// returns the name of the winner
-	function winnerName() public view
-			returns (bytes32 winnerName_)
-	{
-		winnerName_ = proposals[winningProposal()].name;
-	}
-}
diff --git a/examples/prism-solution-file.html b/examples/prism-solution-file.html deleted file mode 100644 index 06de0aa8e7..0000000000 --- a/examples/prism-solution-file.html +++ /dev/null @@ -1,28 +0,0 @@ -

Full example

-
# https://docs.microsoft.com/en-us/visualstudio/extensibility/internals/solution-dot-sln-file?view=vs-2015&redirectedfrom=MSDN
-Microsoft Visual Studio Solution File, Format Version 12.00
-# Visual Studio Version 16
-VisualStudioVersion = 16.0.29709.97
-MinimumVisualStudioVersion = 10.0.40219.1
-Project("{F184B08F-C81C-45F6-A57F-5ABD9991F28F}") = "Project1", "Project1.vbproj", "{8CDD8387-B905-44A8-B5D5-07BB50E05BEA}"
-EndProject
-Global
-	GlobalSection(SolutionNotes) = postSolution
-	EndGlobalSection
-	GlobalSection(SolutionConfiguration) = preSolution
-		ConfigName.0 = Debug
-		ConfigName.1 = Release
-	EndGlobalSection
-	GlobalSection(ProjectDependencies) = postSolution
-	EndGlobalSection
-	GlobalSection(ProjectConfiguration) = postSolution
-		{8CDD8387-B905-44A8-B5D5-07BB50E05BEA}.Debug.ActiveCfg = Debug|x86
-		{8CDD8387-B905-44A8-B5D5-07BB50E05BEA}.Debug.Build.0 = Debug|x86
-		{8CDD8387-B905-44A8-B5D5-07BB50E05BEA}.Release.ActiveCfg = Release|x86
-		{8CDD8387-B905-44A8-B5D5-07BB50E05BEA}.Release.Build.0 = Release|x86
-	EndGlobalSection
-	GlobalSection(ExtensibilityGlobals) = postSolution
-	EndGlobalSection
-	GlobalSection(ExtensibilityAddIns) = postSolution
-	EndGlobalSection
-EndGlobal
diff --git a/examples/prism-soy.html b/examples/prism-soy.html deleted file mode 100644 index 9b43ceb75b..0000000000 --- a/examples/prism-soy.html +++ /dev/null @@ -1,36 +0,0 @@ -

Comments

-
/* Multi-line
-comment */
-// This is a comment with <p>some markup</p> in it
- -

Variable

-
{$name}
-{$folders[0]['name']}
-{$aaa?.bbb.ccc?[0]}
- -

Commands

-
{template .helloNames}
-  // Greet the person.
-  {call .helloName data="all" /}<br>
-  // Greet the additional people.
-  {foreach $additionalName in $additionalNames}
-    {call .helloName}
-      {param name: $additionalName /}
-    {/call}
-    {if not isLast($additionalName)}
-      <br>  // break after every line except the last
-    {/if}
-  {ifempty}
-    No additional people to greet.
-  {/foreach}
-{/template}
- -

Functions and print directives

-
{if length($items) > 5}
-{$foo|changeNewlineToBr}
-{$bar|truncate: 4, false}
- -

Literal section

-
{literal}
-This is not a {$variable}
-{/literal}
diff --git a/examples/prism-sparql.html b/examples/prism-sparql.html deleted file mode 100644 index f416c8598c..0000000000 --- a/examples/prism-sparql.html +++ /dev/null @@ -1,304 +0,0 @@ -

Introduction

- -

The queries shown here can be found in the SPARQL specifications: -https://www.w3.org/TR/sparql11-query/

- -

query 2.1.6 Examples of Query Syntax

- -
PREFIX  dc: <http://purl.org/dc/elements/1.1/>
-	SELECT  ?title
-	WHERE   { <http://example.org/book/book1> dc:title ?title }
-
- -

query 2.1.6-q1 Examples of Query Syntax

- -
PREFIX  dc: <http://purl.org/dc/elements/1.1/>
-PREFIX  : <http://example.org/book/>
-SELECT  $title
-WHERE   { :book1  dc:title  $title }
-
- -

query 2.1.6-q2 Examples of Query Syntax

- -
BASE    <http://example.org/book/>
-PREFIX  dc: <http://purl.org/dc/elements/1.1/>
-SELECT  $title
-WHERE   { <book1>  dc:title  ?title }
-
- -

query 2.5.3 Example of Basic Graph Pattern Matching

- -
PREFIX foaf:   <http://xmlns.com/foaf/0.1/>
-SELECT ?mbox
-WHERE
-	{ ?x foaf:name "Johnny Lee Outlaw" .
-		?x foaf:mbox ?mbox }
-
- -

query 3.1.1 Matching Integers

- -
SELECT ?v WHERE { ?v ?p 42 }
- -

query 3.1.2 Matching Arbitrary Datatypes

- -
SELECT ?v WHERE { ?v ?p "abc"^^<http://example.org/datatype#specialDatatype> }
- -

query 3.1.3-q1 Matching Language Tags

- -
SELECT ?x WHERE { ?x ?p "cat"@en }
- -

query 3.2 Value Constraints

- -
PREFIX  dc:  <http://purl.org/dc/elements/1.1/>
-PREFIX  ns:  <http://example.org/ns#>
-SELECT  ?title ?price
-WHERE   { ?x ns:price ?price .
-					FILTER (?price < 30) .
-					?x dc:title ?title . }
-
- -

query 5.5 Nested Optional Graph Patterns

- -
PREFIX foaf: <http://xmlns.com/foaf/0.1/>
-PREFIX vcard: <http://www.w3.org/2001/vcard-rdf/3.0#>
-SELECT ?foafName ?mbox ?gname ?fname
-WHERE
-	{  ?x foaf:name ?foafName .
-		 OPTIONAL { ?x foaf:mbox ?mbox } .
-		 OPTIONAL {  ?x vcard:N ?vc .
-								 ?vc vcard:Given ?gname .
-								 OPTIONAL { ?vc vcard:Family ?fname }
-							}
-	}
-
- -

query 6.1-q2 Joining Patterns with UNION

- -
PREFIX dc10:  <http://purl.org/dc/elements/1.1/>
-PREFIX dc11:  <http://purl.org/dc/elements/1.0/>
-
-SELECT ?title ?author
-WHERE  { { ?book dc10:title ?title .  ?book dc10:creator ?author }
-				 UNION
-				 { ?book dc11:title ?title .  ?book dc11:creator ?author }
-			 }
-
-
- -

query 8.3 Restricting by Bound Variables

- -
PREFIX  data:  <http://example.org/foaf/>
-PREFIX  foaf:  <http://xmlns.com/foaf/0.1/>
-PREFIX  rdfs:  <http://www.w3.org/2000/01/rdf-schema#>
-
-SELECT ?mbox ?nick ?ppd
-WHERE
-{
-	GRAPH data:aliceFoaf
-	{
-		?alice foaf:mbox <mailto:alice@work.example> ;
-					 foaf:knows ?whom .
-		?whom  foaf:mbox ?mbox ;
-					 rdfs:seeAlso ?ppd .
-		?ppd  a foaf:PersonalProfileDocument .
-	} .
-	GRAPH ?ppd
-	{
-			?w foaf:mbox ?mbox ;
-				 foaf:nick ?nick
-	}
-}
-
- -

query 9.3 Combining FROM and FROM NAMED

- -
PREFIX foaf: <http://xmlns.com/foaf/0.1/>
-PREFIX dc: <http://purl.org/dc/elements/1.1/>
-
-SELECT ?who ?g ?mbox
-FROM <http://example.org/dft.ttl>
-FROM NAMED <http://example.org/alice>
-FROM NAMED <http://example.org/bob>
-WHERE
-{
-	 ?g dc:publisher ?who .
-	 GRAPH ?g { ?x foaf:mbox ?mbox }
-}
-
- -

query 10.1.2 DISTINCT

- -

-	PREFIX foaf:    <http://xmlns.com/foaf/0.1//>
-SELECT DISTINCT ?name WHERE { ?x foaf:name ?name }
-
- -

query 10.1.3-q2 ORDER BY

- -
PREFIX foaf:    <http://xmlns.com/foaf/0.1/>
-
-SELECT ?name
-WHERE { ?x foaf:name ?name ; :empId ?emp }
-ORDER BY ?name DESC(?emp)
-
- -

query 10.1.5 OFFSET

- -
PREFIX foaf:    <http://xmlns.com/foaf/0.1/>
-
-SELECT  ?name
-WHERE   { ?x foaf:name ?name }
-ORDER BY ?name
-LIMIT   5
-OFFSET  10
-
- -

query 10.3.1 Templates with Blank Nodes

- -
PREFIX foaf:    <http://xmlns.com/foaf/0.1/>
-PREFIX vcard:   <http://www.w3.org/2001/vcard-rdf/3.0#>
-
-CONSTRUCT { ?x  vcard:N _:v .
-						_:v vcard:givenName ?gname .
-						_:v vcard:familyName ?fname }
-WHERE
- {
-		{ ?x foaf:firstname ?gname } UNION  { ?x foaf:givenname   ?gname } .
-		{ ?x foaf:surname   ?fname } UNION  { ?x foaf:family_name ?fname } .
- }
-
- -

query 10.3.3 Solution Modifiers and CONSTRUCT

- -
PREFIX foaf: <http://xmlns.com/foaf/0.1/>
-PREFIX site: <http://example.org/stats#>
-
-CONSTRUCT { [] foaf:name ?name }
-WHERE
-{ [] foaf:name ?name ;
-		 site:hits ?hits .
-}
-ORDER BY desc(?hits)
-LIMIT 2
- -

query 10.4.3 Descriptions of Resources

- -
PREFIX ent:  <http://org.example.com/employees#>
-DESCRIBE ?x WHERE { ?x ent:employeeId "1234" }
-
- -

query 10.5-q1 Asking "yes or no" questions

- -
PREFIX foaf:    <http://xmlns.com/foaf/0.1/>
-ASK  { ?x foaf:name  "Alice" ;
-					foaf:mbox  <mailto:alice@work.example> }
-
- -

query 11.4.1 bound

- -
PREFIX foaf: <http://xmlns.com/foaf/0.1/>
-PREFIX dc:   <http://purl.org/dc/elements/1.1/>
-PREFIX xsd:   <http://www.w3.org/2001/XMLSchema#>
-SELECT ?name
- WHERE { ?x foaf:givenName  ?givenName .
-				 OPTIONAL { ?x dc:date ?date } .
-				 FILTER ( bound(?date) ) }
- -

query 11.4.3 isBlank

- -

-PREFIX a:      <http://www.w3.org/2000/10/annotation-ns#>
-PREFIX dc:     <http://purl.org/dc/elements/1.1/>
-PREFIX foaf:   <http://xmlns.com/foaf/0.1/>
-
-SELECT ?given ?family
-WHERE { ?annot  a:annotates  <http://www.w3.org/TR/rdf-sparql-query/> .
-?annot  dc:creator   ?c .
-OPTIONAL { ?c  foaf:given   ?given ; foaf:family  ?family } .
-FILTER isBlank(?c)
-}
- -

query 11.4.5 str

- -

-	PREFIX foaf: <http://xmlns.com/foaf/0.1/>
-	SELECT ?name ?mbox
-	 WHERE { ?x foaf:name  ?name ;
-							foaf:mbox  ?mbox .
-FILTER regex(str(?mbox), "@work.example") }
-
- -

query 11.4.7 datatype

- -

-	PREFIX foaf: <http://xmlns.com/foaf/0.1/>
-	PREFIX xsd:  <http://www.w3.org/2001/XMLSchema#>
-	PREFIX eg:   <http://biometrics.example/ns#>
-	SELECT ?name ?shoeSize
-	 WHERE { ?x foaf:name  ?name ; eg:shoeSize  ?shoeSize .
-					 FILTER ( datatype(?shoeSize) = xsd:integer ) }
-
- -

query 11.4.10-q1 RDFterm-equal

- -

-	PREFIX a:      <http://www.w3.org/2000/10/annotation-ns#>
-	PREFIX dc:     <http://purl.org/dc/elements/1.1/>
-	PREFIX xsd:    <http://www.w3.org/2001/XMLSchema#>
-
-	SELECT ?annotates
-	WHERE { ?annot  a:annotates  ?annotates .
-					?annot  dc:date      ?date .
-					FILTER ( ?date = xsd:dateTime("2004-01-01T00:00:00Z") || ?date = xsd:dateTime("2005-01-01T00:00:00Z") ) }
-
- -

query 11.6-q1 Extensible Value Testing

- -

-	PREFIX aGeo: <http://example.org/geo#>
-
-	SELECT ?neighbor
-	WHERE { ?a aGeo:placeName "Grenoble" .
-					?a aGeo:location ?axLoc .
-					?a aGeo:location ?ayLoc .
-
-					?b aGeo:placeName ?neighbor .
-					?b aGeo:location ?bxLoc .
-					?b aGeo:location ?byLoc .
-
-					FILTER ( aGeo:distance(?axLoc, ?ayLoc, ?bxLoc, ?byLoc) < 10 ) .
-				}
-
- -

The final example query is not based on the SPARQL 1.1 queries.

- -

Full Example query

- -

-	base <http://example.org/geo#>
-	prefix geo: <http://www.opengis.net/ont/geosparql#>
-	prefix rdfs: <http://www.w3.org/2000/01/rdf-schema#>
-	select ?shape ?shapeColor ?shapeHeight ?shapeName (sample(?shapeLabel) as ?shapeLabel)  {
-		{
-			select * {
-				values (?placeName ?streetName) {
-					"Grenoble" "Paul Mistral"
-				}
-				?place geo:NamePlace ?placeName.
-				?pand geo:hasGeometry/geo:asWKT ?shape;
-			}
-
-		}
-		?pand geo:measuredHeight ?shapeHeight.
-		# Only retrieve buildings larger then 10 meters.
-		FILTER ( ?shapeHeight < 10 ) .
-		BIND(IF(!bound(?EindGeldigheid5), "#22b14c", "#ed1c24" ) AS?tColor)
-		# tekst label
-		bind(concat(str(?streetName),' ',str(?houseNumber),', ',str(?PlaceName)) as ?shapeName)
-		bind("""Multi-line
-		String Element
-		""" as ?shapeLabel)
-	}
-	group by ?shape ?shapeColor ?shapeHeight ?shapeName
-	limit 10
-
diff --git a/examples/prism-splunk-spl.html b/examples/prism-splunk-spl.html deleted file mode 100644 index 8675476323..0000000000 --- a/examples/prism-splunk-spl.html +++ /dev/null @@ -1,7 +0,0 @@ -

Full example

-
source=monthly_data.csv
-| rename remote_ip AS ip
-| eval isLocal=if(cidrmatch("123.132.32.0/25",ip), "local", "not local")
-| eval error=case(status == 200, "OK", status == 404, "Not found", true(), "Other")
-  `comment("TODO: Add support for more status codes")`
-| sort amount
diff --git a/examples/prism-sqf.html b/examples/prism-sqf.html deleted file mode 100644 index 93639763c4..0000000000 --- a/examples/prism-sqf.html +++ /dev/null @@ -1,100 +0,0 @@ -

Full example

-
#include "script_component.hpp"
-/*
- * Author: BaerMitUmlaut
- * Handles any audible, visual and physical effects of fatigue.
- *
- * Arguments:
- * 0: Unit <OBJECT>
- * 1: Fatigue <NUMBER>
- * 2: Speed <NUMBER>
- * 3: Overexhausted <BOOL>
- *
- * Return Value:
- * None
- *
- * Example:
- * [_player, 0.5, 3.3, true] call ace_advanced_fatigue_fnc_handleEffects
- *
- * Public: No
- */
-params ["_unit", "_fatigue", "_speed", "_overexhausted"];
-
-#ifdef DEBUG_MODE_FULL
-	systemChat str _fatigue;
-	systemChat str vectorMagnitude velocity _unit;
-#endif
-
-// - Audible effects ----------------------------------------------------------
-GVAR(lastBreath) = GVAR(lastBreath) + 1;
-if (_fatigue > 0.4 && {GVAR(lastBreath) > (_fatigue * -10 + 9)} && {!underwater _unit}) then {
-	switch (true) do {
-		case (_fatigue < 0.6): {
-			playSound (QGVAR(breathLow) + str(floor random 6));
-		};
-		case (_fatigue < 0.85): {
-			playSound (QGVAR(breathMid) + str(floor random 6));
-		};
-		default {
-			playSound (QGVAR(breathMax) + str(floor random 6));
-		};
-	};
-	GVAR(lastBreath) = 0;
-};
-
-// - Visual effects -----------------------------------------------------------
-GVAR(ppeBlackoutLast) = GVAR(ppeBlackoutLast) + 1;
-if (GVAR(ppeBlackoutLast) == 1) then {
-	GVAR(ppeBlackout) ppEffectAdjust [1,1,0,[0,0,0,1],[0,0,0,0],[1,1,1,1],[10,10,0,0,0,0.1,0.5]];
-	GVAR(ppeBlackout) ppEffectCommit 1;
-} else {
-	if (_fatigue > 0.85) then {
-		if (GVAR(ppeBlackoutLast) > (100 - _fatigue * 100) / 3) then {
-			GVAR(ppeBlackout) ppEffectAdjust [1,1,0,[0,0,0,1],[0,0,0,0],[1,1,1,1],[2,2,0,0,0,0.1,0.5]];
-			GVAR(ppeBlackout) ppEffectCommit 1;
-			GVAR(ppeBlackoutLast) = 0;
-		};
-	};
-};
-
-// - Physical effects ---------------------------------------------------------
-if (GVAR(isSwimming)) exitWith {
-	if (GVAR(setAnimExclusions) isEqualTo []) then {
-		_unit setAnimSpeedCoef linearConversion [0.7, 0.9, _fatigue, 1, 0.5, true];
-	};
-	if ((isSprintAllowed _unit) && {_fatigue > 0.7}) then {
-		[_unit, "blockSprint", QUOTE(ADDON), true] call EFUNC(common,statusEffect_set);
-	} else {
-		if ((!isSprintAllowed _unit) && {_fatigue < 0.7}) then {
-			[_unit, "blockSprint", QUOTE(ADDON), false] call EFUNC(common,statusEffect_set);
-		};
-	};
-};
-if ((getAnimSpeedCoef _unit) != 1) then {
-	if (GVAR(setAnimExclusions) isEqualTo []) then {
-		TRACE_1("reset",getAnimSpeedCoef _unit);
-		_unit setAnimSpeedCoef 1;
-	};
-};
-
-if (_overexhausted) then {
-	[_unit, "forceWalk", QUOTE(ADDON), true] call EFUNC(common,statusEffect_set);
-} else {
-	if (isForcedWalk _unit && {_fatigue < 0.7}) then {
-		[_unit, "forceWalk", QUOTE(ADDON), false] call EFUNC(common,statusEffect_set);
-	} else {
-		if ((isSprintAllowed _unit) && {_fatigue > 0.7}) then {
-			[_unit, "blockSprint", QUOTE(ADDON), true] call EFUNC(common,statusEffect_set);
-		} else {
-			if ((!isSprintAllowed _unit) && {_fatigue < 0.6}) then {
-				[_unit, "blockSprint", QUOTE(ADDON), false] call EFUNC(common,statusEffect_set);
-			};
-		};
-	};
-};
-
-_unit setVariable [QGVAR(aimFatigue), _fatigue];
-
-private _aimCoef = [missionNamespace, "ACE_setCustomAimCoef", "max"] call EFUNC(common,arithmeticGetResult);
-_unit setCustomAimCoef _aimCoef;
-
diff --git a/examples/prism-sql.html b/examples/prism-sql.html deleted file mode 100644 index 6fe9977523..0000000000 --- a/examples/prism-sql.html +++ /dev/null @@ -1,34 +0,0 @@ -

Comments

-
# Single line comment
--- Single line comment
-// Single line comment
-/* Multi-line
-comment */
- -

Strings

-
"foo \"bar\" baz"
-'foo \'bar\' baz'
-"Multi-line strings
-are supported"
-'Multi-line strings
-are supported'
- -

Variables

-
SET @variable = 1;
-SET @$_ = 2;
-SET @"quoted-variable" = 3;
-SET @'quoted-variable' = 3;
-SET @`quoted-variable` = 3;
- -

Operators

-
SELECT 1 && 1;
-SELECT 1 OR NULL;
-SELECT 5 & 2*3;
-SELECT 2 BETWEEN 1 AND 3;
- -

Functions and keywords

-
SELECT COUNT(*) AS cpt, MAX(t.pos) AS max_pos
-FROM `my_table`
-LEFT JOIN `other_table` AS t
-WHERE `somecol` IS NOT NULL
-ORDER BY t.other_col DESC
diff --git a/examples/prism-squirrel.html b/examples/prism-squirrel.html deleted file mode 100644 index 14ff2d6af3..0000000000 --- a/examples/prism-squirrel.html +++ /dev/null @@ -1,57 +0,0 @@ -

Full example

-
 // source: http://www.squirrel-lang.org/#look
-
-local table = {
-	a = "10"
-	subtable = {
-		array = [1,2,3]
-	},
-	[10 + 123] = "expression index"
-}
-
-local array=[ 1, 2, 3, { a = 10, b = "string" } ];
-
-foreach (i,val in array)
-{
-	::print("the type of val is"+typeof val);
-}
-
-/////////////////////////////////////////////
-
-class Entity
-{
-	constructor(etype,entityname)
-	{
-		name = entityname;
-		type = etype;
-	}
-
-	x = 0;
-	y = 0;
-	z = 0;
-	name = null;
-	type = null;
-}
-
-function Entity::MoveTo(newx,newy,newz)
-{
-	x = newx;
-	y = newy;
-	z = newz;
-}
-
-class Player extends Entity {
-	constructor(entityname)
-	{
-		base.constructor("Player",entityname)
-	}
-	function DoDomething()
-	{
-		::print("something");
-	}
-
-}
-
-local newplayer = Player("da playar");
-
-newplayer.MoveTo(100,200,300);
diff --git a/examples/prism-stan.html b/examples/prism-stan.html deleted file mode 100644 index 6d7b0ff937..0000000000 --- a/examples/prism-stan.html +++ /dev/null @@ -1,21 +0,0 @@ -

Full example

-
// source: https://github.com/stan-dev/example-models/blob/8a6964135560f54f52695ccd4d2492a8067f0c30/misc/linear-regression/regression_std.stan
-
-// normal mixture, unknown proportion and means, known variance
-// p(y|mu,theta) = theta * Normal(y|mu[1],1) + (1-theta) * Normal(y|mu[2],1);
-
-data {
-  int<lower=0>  N;
-  real y[N];
-}
-parameters {
-  real<lower=0,upper=1> theta;
-  real mu[2];
-}
-model {
-  theta ~ uniform(0,1); // equivalently, ~ beta(1,1);
-  for (k in 1:2)
-    mu[k] ~ normal(0,10);
-  for (n in 1:N)
-    target += log_mix(theta, normal_lpdf(y[n]|mu[1],1.0), normal_lpdf(y[n]|mu[2],1.0));
-}
diff --git a/examples/prism-stata.html b/examples/prism-stata.html deleted file mode 100644 index eaca66a121..0000000000 --- a/examples/prism-stata.html +++ /dev/null @@ -1,13 +0,0 @@ -

Full example

-
// Source: https://blog.stata.com/2018/10/09/how-to-automate-common-tasks/
-program normalize
-	version 15.1
-
-	syntax varlist [if] [in] [ , prefix(name) suffix(name) ]
-
-	foreach var in `varlist' {
-		summarize `var' `if' `in'
-		generate `prefix'`var'`suffix' = (`var' - r(mean)) / r(sd)   `if' `in'
-	}
-end
-
diff --git a/examples/prism-stylus.html b/examples/prism-stylus.html deleted file mode 100644 index 2b8ffdca91..0000000000 --- a/examples/prism-stylus.html +++ /dev/null @@ -1,72 +0,0 @@ -

Full Example

-
/*!
- * Adds the given numbers together.
- */
-/*
- * Adds the given numbers together.
- */
-// I'm a comment!
-body {
-	font: 12px Helvetica, Arial, sans-serif;
-}
-a.button {
-	-webkit-border-radius: 5px;
-	-moz-border-radius: 5px;
-	border-radius: 5px;
-}
-
-body
-	font: 12px Helvetica, Arial, sans-serif;
-
-a.button:after
-	-webkit-border-radius: 5px;
-	-moz-border-radius: 5px;
-	border-radius: 5px;
-
-body
-	font: 12px Helvetica, Arial, sans-serif
-
-a.link > button#test, input[type=button], a:after
-	-webkit-border-radius: 5px
-	-moz-border-radius: 5px
-	border-radius: 5px
-
-font-size = 14px
-font = font-size "Lucida Grande", Arial
-
-body {
-	padding: 50px;
-	font: 14px/1.4 fonts;
-}
-
-border-radius()
-	-webkit-border-radius arguments
-	-moz-border-radius arguments
-	border-radius arguments
-
-body
-	font 12px Helvetica, Arial, sans-serif
-
-a.button
-	border-radius(5px)
-
-@media (max-width: 30em) {
-	body {
-		color: #fff;
-	}
-}
-
-@media (max-width: 500px)
-	.foo
-		color: #000
-
-	@media (min-width: 100px), (min-height: 200px)
-		.foo
-			color: #100
-
-sum(nums...)
-	sum = 0
-	sum += n for n in nums
-
-sum(1 2 3 4)
-// => 10
diff --git a/examples/prism-supercollider.html b/examples/prism-supercollider.html deleted file mode 100644 index 068639b702..0000000000 --- a/examples/prism-supercollider.html +++ /dev/null @@ -1,11 +0,0 @@ -

Full Example

-
// Source: https://supercollider.github.io/
-// modulate a sine frequency and a noise amplitude with another sine
-// whose frequency depends on the horizontal mouse pointer position
-{
-        var x = SinOsc.ar(MouseX.kr(1, 100));
-        SinOsc.ar(300 * x + 800, 0, 0.1)
-        +
-        PinkNoise.ar(0.1 * x + 0.1)
-}.play;
-
diff --git a/examples/prism-swift.html b/examples/prism-swift.html deleted file mode 100644 index e49a0d4a74..0000000000 --- a/examples/prism-swift.html +++ /dev/null @@ -1,67 +0,0 @@ -

Comments

-
// this is a comment
-/* this is also a comment,
-but written over multiple lines */
-
- -

Numbers

-
42
--23
-3.14159
-0.1
--273.15
-1.25e-2
-0xC.3p0
-1_000_000
-1_000_000.000_000_1
- -

Strings

-
let someString = "Some string literal value"
-var emptyString = ""
-// String interpolation
-let multiplier = 3
-"\(multiplier) times 2.5 is \(Double(multiplier) * 2.5)"
- -

Control flow

-
for index in 1...5 {
-	println("\(index) times 5 is \(index * 5)")
-}
-for _ in 1...power {
-	answer *= base
-}
-while square < finalSquare {
-	// roll the dice
-	if ++diceRoll == 7 { diceRoll = 1 }
-	// move by the rolled amount
-	square += diceRoll
-	if square < board.count {
-		// if we're still on the board, move up or down for a snake or a ladder
-		square += board[square]
-	}
-}
-switch someCharacter {
-	case "a", "e", "i", "o", "u":
-		println("\(someCharacter) is a vowel")
-	case "b", "c", "d", "f", "g", "h", "j", "k", "l", "m",
-		"n", "p", "q", "r", "s", "t", "v", "w", "x", "y", "z":
-		println("\(someCharacter) is a consonant")
-	default:
-		println("\(someCharacter) is not a vowel or a consonant")
-}
-
- -

Classes and attributes

-
class MyViewController: UIViewController {
-	@IBOutlet weak var button: UIButton!
-	@IBOutlet var textFields: [UITextField]!
-	@IBAction func buttonTapped(AnyObject) {
-		println("button tapped!")
-	}
-}
-
-@IBDesignable
-class MyCustomView: UIView {
-	@IBInspectable var textColor: UIColor
-	@IBInspectable var iconHeight: CGFloat
-	/* ... */
-}
diff --git a/examples/prism-systemd.html b/examples/prism-systemd.html deleted file mode 100644 index 082ff8b54d..0000000000 --- a/examples/prism-systemd.html +++ /dev/null @@ -1,20 +0,0 @@ -

Full example

-
# Source: https://www.freedesktop.org/software/systemd/man/systemd.syntax.html
-
-[Section A]
-KeyOne=value 1
-KeyTwo=value 2
-
-# a comment
-
-[Section B]
-Setting="something" "some thing" "…"
-KeyTwo=value 2 \
-       value 2 continued
-
-[Section C]
-KeyThree=value 3\
-# this line is ignored
-; this line is ignored too
-       value 3 continued
-
diff --git a/examples/prism-t4-cs.html b/examples/prism-t4-cs.html deleted file mode 100644 index e3651c7708..0000000000 --- a/examples/prism-t4-cs.html +++ /dev/null @@ -1,16 +0,0 @@ -

Full example

-
<#@ template hostspecific="false" language="C#" #>
-<#@ assembly name="System.Core.dll" #>
-<#@ output extension=".txt" #>
-<#
-    using System.Collections.Generic;
-
-    var numbers = new List<int> { 0, 1, 2, 3, 4, 5, 6, /* 7, */ 8, 9, 10  };
-
-    foreach (var i in numbers)
-    {
-#>
-The square of <#= i #> is <#= i * i #>
-<#
-    }
-#>
diff --git a/examples/prism-t4-vb.html b/examples/prism-t4-vb.html deleted file mode 100644 index 04c999693d..0000000000 --- a/examples/prism-t4-vb.html +++ /dev/null @@ -1,16 +0,0 @@ -

Full example

-
<#@ template hostspecific="false" language="VB" #>
-<#@ assembly name="System.Core.dll" #>
-<#@ output extension=".txt" #>
-<#
-    Imports System.Collections.Generic
-
-    Dim numbers() As Integer = { 0, 1, 2, 3, 4, 5, 6, 8, 9, 10  }
-    ' not including 7
-
-    For Each i In numbers
-#>
-The square of <#= i #> is <#= i * i #>
-<#
-    Next
-#>
diff --git a/examples/prism-tap.html b/examples/prism-tap.html deleted file mode 100644 index d395678948..0000000000 --- a/examples/prism-tap.html +++ /dev/null @@ -1,7 +0,0 @@ -

Full example

-
1..48
-ok 1 Description # Directive
-# Diagnostic
-....
-ok 47 Description
-ok 48 Description
diff --git a/examples/prism-tcl.html b/examples/prism-tcl.html deleted file mode 100644 index 080d817c7c..0000000000 --- a/examples/prism-tcl.html +++ /dev/null @@ -1,26 +0,0 @@ -

Comments

-
# This is a comment
- -

Strings

-
"foo \"bar\" baz"
-"foo\
-bar\
-baz"
- -

Variables

-
$foo
-$foo::bar_42
-$::baz
-${foobar}
-set foo::bar "baz"
- -

Functions

-
proc foobar {baz} {
-	puts $baz
-}
-
-proc RESTORE/post/:post_id/comment/:comment_id {post_id comment_id} {
-    #| Restore a comment handler
-    comment_restore $comment_id
-    qc::actions redirect [url "/post/$post_id" show_deleted_comment_ids $comment_id]
-}
\ No newline at end of file diff --git a/examples/prism-textile.html b/examples/prism-textile.html deleted file mode 100644 index f195e9673b..0000000000 --- a/examples/prism-textile.html +++ /dev/null @@ -1,158 +0,0 @@ -

HTML

-
I am <b>very</b> serious.
-
-<div style="background:#fff">Foo bar</div>
- -

Blocks

-
h1. Header 1
-
-h2. Header 2
-
-h3. Header 3 written on
-multiple lines
-
-bq. A block quotation
-on multiple lines.
- -

Footnotes

-
This is covered elsewhere[1].
-
-fn1. Down here, in fact.
- -

Structural emphasis

-
I _believe_ every word.
-And then? She *fell*!
-
-I __know__.
-I **really** __know__.
-
-??Cat's Cradle?? by Vonnegut
-
-Convert with @r.to_html@
-
-I'm -sure- not sure.
-
-You are a +pleasant+ child.
-
-a ^2^ + b ^2^ = c ^2^
-log ~2~ x
- -

Block attributes

-
p(example1). An example
-
-p(#big-red). Red here
-
-p(example1#big-red2). Red here
-
-p{color:blue;margin:30px}. Spacey blue
-
-p[fr]. rouge
- -

Phrase attributes

-
I seriously *{color:red}blushed*
-when I _(big)sprouted_ that
-corn stalk from my
-%[es]cabeza%.
- -

Phrase alignments and indentation

-
p<. align left
-
-p>. align right
-
-p=. centered
-
-p<>. justified
-
-p(. left ident 1em
-
-p((. left ident 2em
-
-p))). right ident 3em
- -

Attributes and alignments combined

-
h2()>. Bingo.
-
-h3()>[no]{color:red}. Bingo
- -

Lists

-
# First item
-# Second item
-# Third
-
-# Fuel could be:
-## Coal
-## Gasoline
-## Electricity
-# Humans need only:
-## Water
-## Protein
-
-* First item
-* Second item
-* Third
-
-* Fuel could be:
-** Coal
-** Gasoline
-** Electricity
-* Humans need only:
-** Water
-** Protein
-
-#(foo) List can have attributes too
-#{background: red} Red item
- -

Links and images

-
I searched "Google":http://google.com.
-
-I am crazy about "Hobix":hobix
-and "it's":hobix "all":hobix I ever
-"link to":hobix!
-
-[hobix]http://hobix.com
-
-And "(some-link)[en]links":# can have attributes too!
-
-!http://redcloth.org/hobix.com/textile/sample.jpg!
-!openwindow1.gif(Bunny.)!
-!openwindow1.gif!:http://hobix.com/
-
-!>obake.gif!
-
-And others sat all round the small
-machine and paid it to sing to them.
- -

Tables

-
| name | age | sex |
-| joan | 24 | f |
-| archie | 29 | m |
-| bella | 45 | f |
-
-|_. name |_. age |_. sex |
-| joan | 24 | f |
-| archie | 29 | m |
-| bella | 45 | f |
-
-|_. attribute list |
-|<. align left |
-|>. align right|
-|=. center |
-|<>. justify |
-|^. valign top |
-|~. bottom |
-
-|\2. spans two cols |
-| col 1 | col 2 |
-
-|/3. spans 3 rows | a |
-| b |
-| c |
-
-|{background:#ddd}. Grey cell|
-
-table{border:1px solid black}.
-|This|is|a|row|
-|This|is|a|row|
-
-|This|is|a|row|
-{background:#ddd}. |This|is|grey|row|
diff --git a/examples/prism-toml.html b/examples/prism-toml.html deleted file mode 100644 index 7f68c8ef9b..0000000000 --- a/examples/prism-toml.html +++ /dev/null @@ -1,28 +0,0 @@ -

Full example

-
# This is a comment
-
-key = "value"
-paths.home = 'c:\foo\'
-
-[database.prod]
-server = "192.168.1.1"
-ports = [ 8001, 8001, 8002 ]
-connection_max = 5000
-enabled = true
-
-
-[[users]]
-name = "John"
-bday = 1995-09-22
-bio = ""
-interests = [ "biking", "fishing" ]
-
-[[users]]
-name = "Jane"
-bday = 1989-05-09
-bio = """\
-Hi!
-
-I love programming!\
-"""
-interests = [ "programming" ]
diff --git a/examples/prism-tremor.html b/examples/prism-tremor.html deleted file mode 100644 index c0c89e2753..0000000000 --- a/examples/prism-tremor.html +++ /dev/null @@ -1,82 +0,0 @@ -

Comments

-
# Single line comment
-### Module level documentation comment
-## Statement level documentation comment
-# Regular code comment
-
- -

Strings

-

-# double quote single line strings
-"foo \"bar\" baz"
-
-# heredocs or multiline strings
-"""
-{ "snot": "badger" }
-"""
-
- -

Variables

-

-# Immutable constants
-const snot = "fleek";
-
-# Mutable variables
-let badger = "flook";
-
- -

Operators

-

-merge {} of
-  { "snot": "badger" }
-end;
-
-patch {} of
-  insert snot = "badger"
-end;
-
- -

Functions and keywords

-

-fn fib_(a, b, n) of
-case (a, b, n) when n > 0 => recur(b, a + b, n - 1)
-default => a
-end;
-
-fn fib(n) with
-fib_(0, 1, n)
-end;
-
-fib(event)
-
- -

Queries

-

-	define script fib
-	script
-        fn fib_(a, b, n) of
-            case (a, b, n) when n > 0 => recur(b, a + b, n - 1)
-            default => a
-        end;
-
-        fn fib(n) with
-            fib_(0, 1, n)
-        end;
-
-		{ "fib": fib(event.n) }
-	end;
-
-	create script fib;
-	select event.n from in into fib;
-	select event from fib into out;
-
- -

Deployments

-

-define pipeline passthrough
-pipeline
-  select event from in into out;
-end;
-
-deploy pipeline passthrough;
-
\ No newline at end of file diff --git a/examples/prism-tsx.html b/examples/prism-tsx.html deleted file mode 100644 index d83d1dd839..0000000000 --- a/examples/prism-tsx.html +++ /dev/null @@ -1,31 +0,0 @@ -

Full example

-
import * as React from 'react';
-
-interface IState {
-	clicks: number;
-}
-
-export class Clicker extends React.Component<any, IState> {
-	constructor(props) {
-		super(props);
-
-		this.state = {
-			clicks: 0,
-		};
-	}
-
-	public clickHandler = () => {
-		this.setState({ clicks: this.state.clicks + 1 });
-	}
-
-	public render() {
-		return (
-			<div>
-				<p>You have clicked the button {this.state.clicks} time(s).</p>
-				<p>
-					<button onClick={this.clickHandler}>click me</button>
-				</p>
-			</div>
-		);
-	}
-}
diff --git a/examples/prism-tt2.html b/examples/prism-tt2.html deleted file mode 100644 index 1a6711f970..0000000000 --- a/examples/prism-tt2.html +++ /dev/null @@ -1,61 +0,0 @@ -

Comments

-
[%# this entire directive is ignored no
-    matter how many lines it wraps onto
-%]
-[% # this is a comment
-   theta = 20      # so is this
-   rho   = 30      # <aol>me too!</aol>
-%]
-
- -

Variables

-
[% text %]
-[% article.title %]
-[%= eat.whitespace.left %]
-[% eat.whitespace.right =%]
-[%= eat.whitespace.both =%]
-[% object.method() %]
- - -

Conditionals and Loops

-
[% IF foo = bar %]
-this
-[% ELSE %]
-that
-[% END %]
-[% FOREACH post IN q.listPosts(lingua = "de") %]
-  <a href="[% post.permalink %]">[% post.title | html %]</a>
-[% END %]
- -

Multiple Directives

-
[% IF title;
-      INCLUDE header;
-   ELSE;
-      INCLUDE other/header  title="Some Other Title";
-   END
-%]
- -

Operators

-
[% FOREACH post IN q.listPosts(lingua => 'de') %]
-  [% post.title | myfilter(foo = "bar") %]
-[% END %]
- -

Known Limitations

-
    -
  • - Outline tags are not supported.
  • -
  • The arguments to - TAGS - are usually misinterpreted
  • -
  • In TT2, you can use keywords as identifiers where this is - unambiguous. But these keywords will be highlighted as keywords, not - as variables here.
  • -
  • The - ANYCASE - option is not supported.
  • -
  • - Any number of backslashes in front of dollar signs inside of double quoted - strings are ignored since the behavior of Template Toolkit 2.26 seems to be - inconsistent. -
  • -
diff --git a/examples/prism-turtle.html b/examples/prism-turtle.html deleted file mode 100644 index a64a2a5779..0000000000 --- a/examples/prism-turtle.html +++ /dev/null @@ -1,18 +0,0 @@ -

Full example

-
@base <http://example.org/> .
-@prefix rdf: <http://www.w3.org/1999/02/22-rdf-syntax-ns#> .
-@prefix rdfs: <http://www.w3.org/2000/01/rdf-schema#> .
-@prefix foaf: <http://xmlns.com/foaf/0.1/> .
-@prefix rel: <http://www.perceive.net/schemas/relationship/> .
-
-GRAPH <urn:myGraph> {
-<#green-goblin>
-    rel:enemyOf <#spiderman> ;
-    a foaf:Person ;    # in the context of the Marvel universe
-    foaf:name "Green Goblin" .
-
-<#spiderman>
-    rel:enemyOf <#green-goblin> ;
-    a foaf:Person ;
-    foaf:name "Spiderman", "Человек-паук"@ru .
-}
diff --git a/examples/prism-twig.html b/examples/prism-twig.html deleted file mode 100644 index 167ffadd95..0000000000 --- a/examples/prism-twig.html +++ /dev/null @@ -1,25 +0,0 @@ -

Comments

-
{# Some comment
-on multiple lines
-with <html></html>
-inside #}
- -

Keywords

-
{% if foo %} bar {% endif %}
-{% for key, value in arr if value %} {{ do_something() }} {% endfor %}
-{% include 'header.html' %}
-{% include 'template.html' with {'foo': 'bar'} %}
- -

Operators

-
{{ not a }}
-{{ 20 // 7 }}
-{{ b b-and c }}
-{% if phone matches '/^[\\d\\.]+$/' %} ... {% endif %}
- -

Twig embedded in HTML

-
<div>
-{% if foo %}
-	<p>Foo!</p>
-{% else %}
-	<p>Not foo...</p>
-{% endif %}
diff --git a/examples/prism-typescript.html b/examples/prism-typescript.html deleted file mode 100755 index 561c4dc4d0..0000000000 --- a/examples/prism-typescript.html +++ /dev/null @@ -1,28 +0,0 @@ -

Full example

-
interface SearchFunc {
-  (source: string, subString: string): boolean;
-}
-
-var mySearch: SearchFunc;
-mySearch = function(source: string, subString: string) {
-  var result = source.search(subString);
-  if (result == -1) {
-    return false;
-  }
-  else {
-    return true;
-  }
-}
-
-class Greeter {
-    greeting: string;
-    constructor(message: string) {
-        this.greeting = message;
-    }
-    greet() {
-        return "Hello, " + this.greeting;
-    }
-}
-
-var greeter = new Greeter("world");
-
diff --git a/examples/prism-typoscript.html b/examples/prism-typoscript.html deleted file mode 100644 index 2ebcc1373f..0000000000 --- a/examples/prism-typoscript.html +++ /dev/null @@ -1,95 +0,0 @@ -

Typical TypoScript Setup File

-
# import other files
-@import 'EXT:fluid_styled_content/Configuration/TypoScript/setup.typoscript'
-@import 'EXT:sitepackage/Configuration/TypoScript/Helper/DynamicContent.typoscript'
-
-page = PAGE
-page {
-	typeNum = 0
-
-	// setup templates
-	10 = FLUIDTEMPLATE
-	10 {
-		templateName = TEXT
-		templateName.stdWrap.cObject = CASE
-		templateName.stdWrap.cObject {
-			key.data = pagelayout
-
-			pagets__sitepackage_default = TEXT
-			pagets__sitepackage_default.value = Default
-
-			pagets__sitepackage_alternate = TEXT
-			pagets__sitepackage_alternate.value = Alternative
-
-			default = TEXT
-			default.value = Default
-		}
-		
-		templateRootPaths {
-			0 = EXT:sitepackage/Resources/Private/Templates/Page/
-			1 = {$sitepackage.fluidtemplate.templateRootPath}
-		}
-		
-		partialRootPaths {
-			0 = EXT:sitepackage/Resources/Private/Partials/Page/
-			1 = {$sitepackage.fluidtemplate.partialRootPath}
-		}
-		
-		layoutRootPaths {
-			0 = EXT:sitepackage/Resources/Private/Layouts/Page/
-			1 = {$sitepackage.fluidtemplate.layoutRootPath}
-		}
-
-		dataProcessing {
-			10 = TYPO3\CMS\Frontend\DataProcessing\MenuProcessor
-			10 {
-				levels = 1
-				includeSpacer = 1
-				as = mainnavigation
-			}
-		}
-	}
-
-	// include css into head
-	includeCSS {
-		bootstrap = https://maxcdn.bootstrapcdn.com/bootstrap/4.0.0/css/bootstrap.min.css
-		bootstrap.external = 1
-		website = EXT:sitepackage/Resources/Public/Css/styles.css
-	}
-
-	// include js into footer
-	includeJSFooter {
-		jquery = https://code.jquery.com/jquery-3.2.1.slim.min.js
-		jquery.external = 1
-		bootstrap = https://maxcdn.bootstrapcdn.com/bootstrap/4.0.0/js/bootstrap.min.js
-		bootstrap.external = 1
-		website = EXT:sitepackage/Resources/Public/JavaScript/scripts.js
-	}
-}
-
-// global site configuration
-config {
-	absRefPrefix = auto
-	cache_period = 86400
-	debug = 0
-	disablePrefixComment = 1
-	doctype = html5
-	extTarget =
-	index_enable = 1
-	index_externals = 1
-	index_metatags = 1
-	inlineStyle2TempFile = 1
-	intTarget =
-	linkVars = L
-	metaCharset = utf-8
-	no_cache = 0
-	pageTitleFirst = 1
-	prefixLocalAnchors = all
-	removeDefaultJS = 0
-	sendCacheHeaders = 1
-	compressCss = 0
-	compressJs = 0
-	concatenateCss = 0
-	concatenateJs = 0
-}
-
diff --git a/examples/prism-unrealscript.html b/examples/prism-unrealscript.html deleted file mode 100644 index b4926e6ba7..0000000000 --- a/examples/prism-unrealscript.html +++ /dev/null @@ -1,38 +0,0 @@ -

Full example

-
// Source: https://github.com/Jusas/XCOM2_ReconSoldierClass/blob/master/ReconOperatorSoldierClass/Src/ReconSoldierClass/Classes/ReconOperator_AcademyUnlocks.uc
-
-class ReconOperator_AcademyUnlocks extends X2StrategyElement;
-
-static function array<X2DataTemplate> CreateTemplates()
-{
-	local array<X2DataTemplate> Templates;
-
-	Templates.AddItem(AdrenalineUnlock());
-
-	return Templates;
-}
-
-static function X2SoldierAbilityUnlockTemplate AdrenalineUnlock()
-{
-	local X2SoldierAbilityUnlockTemplate Template;
-	local ArtifactCost Resources;
-
-	`CREATE_X2TEMPLATE(class'X2SoldierAbilityUnlockTemplate', Template, 'ReconAdrenalineUnlock');
-
-	Template.AllowedClasses.AddItem('ReconSoldierClass');
-	Template.AbilityName = 'ReconAdrenalineSpike';
-	Template.strImage = "img:///UILibrary_ReconOperator.GTS.GTS_adrenaline";
-
-	// Requirements
-	Template.Requirements.RequiredHighestSoldierRank = 5;
-	Template.Requirements.RequiredSoldierClass = 'ReconSoldierClass';
-	Template.Requirements.RequiredSoldierRankClassCombo = true;
-	Template.Requirements.bVisibleIfSoldierRankGatesNotMet = true;
-
-	// Cost
-	Resources.ItemTemplateName = 'Supplies';
-	Resources.Quantity = 75;
-	Template.Cost.ResourceCosts.AddItem(Resources);
-
-	return Template;
-}
diff --git a/examples/prism-uorazor.html b/examples/prism-uorazor.html deleted file mode 100644 index 5c218ff9a0..0000000000 --- a/examples/prism-uorazor.html +++ /dev/null @@ -1,13 +0,0 @@ -

Full example

-

-# UO Razor Script Highlighting by Jaseowns
-// These two are comments
-// Example script:
-setvar "my_training_target"
-while skill "anatomy" < 100
-    useskill "anatomy"
-    wft 500
-    target "my_training_target"
-    wait 2000
-endwhile
-
diff --git a/examples/prism-uri.html b/examples/prism-uri.html deleted file mode 100644 index da6dc04bec..0000000000 --- a/examples/prism-uri.html +++ /dev/null @@ -1,13 +0,0 @@ -

Full example

-
https://john.doe@www.example.com:123/forum/questions/?tag=networking&order=newest#top
-https://example.com/path/resource.txt#fragment
-ldap://[2001:db8::7]/c=GB?objectClass?one
-mailto:John.Doe@example.com
-news:comp.infosystems.www.servers.unix
-tel:+1-816-555-1212
-telnet://192.0.2.16:80/
-urn:oasis:names:specification:docbook:dtd:xml:4.1.2
-//example.com/path/resource.txt
-/path/resource.txt
-path/resource.txt
-
diff --git a/examples/prism-v.html b/examples/prism-v.html deleted file mode 100644 index 1ddb018263..0000000000 --- a/examples/prism-v.html +++ /dev/null @@ -1,91 +0,0 @@ -

Comments

-
// This is a comment
-/* This is a comment
-on multiple lines */
- -

Numbers

-
123
-0x7B
-0b01111011
-0o173
-170141183460469231731687303715884105727
-1_000_000
-0b0_11
-3_122.55
-0xF_F
-0o17_3
-72.40
-072.40
-2.71828
-
- -

Runes and strings

-
'\t'
-'\000'
-'\x07'
-'\u12e4'
-'\U00101234'
-`abc`
-`multi-line
-string`
-"Hello, world!"
-"multi-line
-string"
- -

String interpolation

-
'Hello, $name!'
-"age = $user.age"
-'can register = ${user.age > 13}'
-'x = ${x:4.2f}'
-'[${x:10}]'
-'[${int(x):-10}]'
-
- -

Struct

-
struct Foo {
-	a int   // private immutable (default)
-mut:
-	b int   // private mutable
-	c int   // (you can list multiple fields with the same access modifier)
-pub:
-	d int   // public immutable (readonly)
-pub mut:
-	e int   // public, but mutable only in parent module
-__global:
-	f int   // public and mutable both inside and outside parent module
-}           // (not recommended to use, that's why the 'global' keyword
-			// starts with __)
-
- -

Functions

-
func(a, b int, z float64) bool { return a*b < int(z) }
- -

Full example

-

-module mymodule
-
-import external_module
-
-fn sqr(n int) int {
-	return n * n
-}
-
-fn run(value int, op fn (int) int) int {
-	return op(value)
-}
-
-fn main() {
-	println(run(5, sqr)) // "25"
-	// Anonymous functions can be declared inside other functions:
-	double_fn := fn (n int) int {
-		return n + n
-	}
-	println(run(5, double_fn)) // "10"
-	// Functions can be passed around without assigning them to variables:
-	res := run(5, fn (n int) int {
-		return n + n
-	})
-
-	external_module.say_hi()
-}
-
diff --git a/examples/prism-vala.html b/examples/prism-vala.html deleted file mode 100644 index 456bdce2af..0000000000 --- a/examples/prism-vala.html +++ /dev/null @@ -1,33 +0,0 @@ -

Comments

-
// Single line comment
-/** Multi-line
-doc comment */
- -

Strings

-
"foo \"bar\" baz"
-"Multi-line strings ending with a \
-are supported too."
-"""Verbatim strings
-You can create
-multi-line strings like this too."""
-@"Template string with variables $var1 $(var2 * 2)"
- -

Regex

-
/foo?[ ]*bar/
- -

Full example

-
using Gtk;
-
-int main (string[] args) {
-	Gtk.init(ref args);
-
-	var window = new Window();
-
-	var button = new Button.with_label("Click me!");
-
-	window.add(button);
-	window.show_all();
-
-	Gtk.main();
-	return 0;
-}
diff --git a/examples/prism-vbnet.html b/examples/prism-vbnet.html deleted file mode 100644 index b5e3081284..0000000000 --- a/examples/prism-vbnet.html +++ /dev/null @@ -1,16 +0,0 @@ -

Comments

-
!foobar
-REM foobar
-'foobar
- -

Example

-
Public Function findValue(ByVal arr() As Double,
-    ByVal searchValue As Double) As Double
-    Dim i As Integer = 0
-    While i <= UBound(arr) AndAlso arr(i) <> searchValue
-        ' If i is greater than UBound(arr), searchValue is not checked.
-        i += 1
-    End While
-    If i > UBound(arr) Then i = -1
-    Return i
-End Function
diff --git a/examples/prism-velocity.html b/examples/prism-velocity.html deleted file mode 100644 index a97fa05e1b..0000000000 --- a/examples/prism-velocity.html +++ /dev/null @@ -1,47 +0,0 @@ -

Comments

-
## Single line comment
-#* Multi-line
-comment *#
- -

Unparsed sections

-
## Section below is not parsed
-#[[
-	## This is not a comment
-]]#
- -

Variables

-
$mud
-$customer.Name
-$flogger.getPromo( $mud )
-$!{mudSlinger_9}
-$foo[0]
-$foo[$i]
-$foo["bar"]
-$foo.bar[1].junk
-$foo.callMethod()[1]
- -

Directives

-
#set($foo.bar[1] = 3)
-#if($a==1)true enough#{else}no way!#end
-#macro( d )
-<tr><td>$!bodyContent</td></tr>
-#end
-#@d()Hello!#end
- -

Integration with HTML

-
<html>
-  <body>
-    Hello $customer.Name!
-    <table>
-    #foreach( $mud in $mudsOnSpecial )
-      #if ( $customer.hasPurchased($mud) )
-        <tr>
-          <td>
-            $flogger.getPromo( $mud )
-          </td>
-        </tr>
-      #end
-    #end
-    </table>
-  </body>
-</html>
\ No newline at end of file diff --git a/examples/prism-verilog.html b/examples/prism-verilog.html deleted file mode 100644 index d7c9a0bfc9..0000000000 --- a/examples/prism-verilog.html +++ /dev/null @@ -1,103 +0,0 @@ -

Note that this package supports syntax highlighting for both Verilog and System Verilog.

- -

Comments

-
/* Multiline comments in Verilog
-   look like C comments and // is OK in here. */
-// Single-line comment in Verilog.
- -

Literals

-
// example code from: http://iroi.seu.edu.cn/books/asics/Book2/CH11/CH11.02.htm
-module declarations;
-  parameter H12_UNSIZED = 'h 12;
-  parameter H12_SIZED = 6'h 12;
-  parameter D42 = 8'B0010_1010;
-  parameter D123 = 123;
-  parameter D63 = 8'o 77;
-  parameter A = 'h x, B = 'o x, C = 8'b x, D = 'h z, E = 16'h ????;
-  reg [3:0] B0011,Bxxx1,Bzzz1;
-  real R1,R2,R3;
-  integer I1,I3,I_3;
-  parameter BXZ = 8'b1x0x1z0z;
-
-  initial begin
-    B0011 = 4'b11; Bxxx1 = 4'bx1; Bzzz1 = 4'bz1;
-    R1 = 0.1e1; R2 = 2.0; R3 = 30E-01;
-    I1 = 1.1; I3 = 2.5; I_3 = -2.5;
-  end
-
-  initial begin #1;
-    $display("H12_UNSIZED, H12_SIZED (hex) = %h, %h",H12_UNSIZED, H12_SIZED);
-    $display("D42 (bin) = %b",D42," (dec) = %d",D42);
-    $display("D123 (hex) = %h",D123," (dec) = %d",D123);
-    $display("D63 (oct) = %o",D63);
-    $display("A (hex) = %h",A," B (hex) = %h",B);
-    $display("C (hex) = %h",C," D (hex) = %h",D," E (hex) = %h",E);
-    $display("BXZ (bin) = %b",BXZ," (hex) = %h",BXZ);
-    $display("B0011, Bxxx1, Bzzz1 (bin) = %b, %b, %b",B0011,Bxxx1,Bzzz1);
-    $display("R1, R2, R3 (e, f, g) = %e, %f, %g", R1, R2, R3);
-    $display("I1, I3, I_3 (d) = %d, %d, %d", I1, I3, I_3);
-  end
-endmodule
- -

Full example

-
`include "internal_defines.vh"
-
-//*****************************************************************************
-// memory_decoder: a custom module used to handle memory transactions
-//*****************************************************************************
-//
-// out_mem (output) - The output to memory
-// out_reg (output) - The output to the register file
-// mem_we  (output) - Which byte in the word to write too
-// mem_in  (input)  - The input from memory
-// addr_in (input)  - The lowest 2 bits of byte offset to store in memory
-// data_in (input)  - The input from the register file to be stored
-// l_bit   (input)  - The load bit signal (control)
-// b_bit   (input)  - The byte bit signal (control)
-//
-module memory_decoder(out_mem, out_reg, mem_in, data_in, l_bit, b_bit, addr_in,
-                      mem_we);
-
-  output reg  [31:0]  out_mem, out_reg;
-  output reg  [3:0]   mem_we;
-  input       [31:0]  mem_in, data_in;
-  input       [1:0]   addr_in;
-  input               l_bit, b_bit;
-
-  always_comb begin
-    mem_we = 4'b0000;     // dont write memory by default
-    if (l_bit == 1) begin // ldr and ldrb
-      out_mem = mem_in;   // dont change memory!
-      if (b_bit == 1) begin
-        /* figure out which byte to load from memory */
-        case (addr_in)
-          2'b00: out_reg = {24'b00, mem_in[7:0]};
-          2'b01: out_reg = {24'b00, mem_in[15:8]};
-          2'b10: out_reg = {24'b00, mem_in[23:16]};
-          2'b11: out_reg = {24'b00, mem_in[31:24]};
-        endcase
-      end
-      else begin
-        out_reg = mem_in;
-      end
-    end
-    else begin            // str and strb
-      out_reg = `UNKNOWN; // We are not reading from mem
-      if (b_bit == 1) begin
-        /* figure out which byte to write to in memory */
-        out_mem = {4{data_in[7:0]}};
-        case (addr_in)
-          2'b00: mem_we = 4'b1000;
-          2'b01: mem_we = 4'b0100;
-          2'b10: mem_we = 4'b0010;
-          2'b11: mem_we = 4'b0001;
-        endcase
-      end
-      else begin
-        mem_we = 4'b1111; // write to all channels
-        out_mem = data_in;
-      end
-    end
-  end
-
-endmodule
\ No newline at end of file diff --git a/examples/prism-vhdl.html b/examples/prism-vhdl.html deleted file mode 100644 index 0d3b56f6b9..0000000000 --- a/examples/prism-vhdl.html +++ /dev/null @@ -1,92 +0,0 @@ -

Comments

-
-- I am a comment
-I am not
- -

Literals

-
constant FREEZE : integer := 32;
-constant TEMP : real := 32.0;
-A_INT <= 16#FF#;
-B_INT <= 2#1010_1010#;
-MONEY := 1_000_000.0;
-FACTOR := 2.2E-6;
-constant DEL1 :time := 10 ns;
-constant DEL2 :time := 2.27 us;
-type MY_LOGIC is ('X','0','1','Z');
-type T_STATE is (IDLE, READ, END_CYC);
-signal CLK : MY_LOGIC := '0';
-signal STATE : T_STATE := IDLE;
-constant FLAG :bit_vector(0 to 7) := "11111111";
-constant MSG : string := "Hello";
-BIT_8_BUS <= B"1111_1111";
-BIT_9_BUS <= O"353";
-BIT_16_BUS <= X"AA55";
-constant TWO_LINE_MSG : string := "Hello" & CR & "World";
- -

Full example

-
-- example code from: http://www.csee.umbc.edu/portal/help/VHDL/samples/samples.html
-library IEEE;
-use IEEE.std_logic_1164.all;
-
-entity fadd is               -- full adder stage, interface
-  port(a    : in  std_logic;
-       b    : in  std_logic;
-       cin  : in  std_logic;
-       s    : out std_logic;
-       cout : out std_logic);
-end entity fadd;
-
-architecture circuits of fadd is  -- full adder stage, body
-begin  -- circuits of fadd
-  s <= a xor b xor cin after 1 ns;
-  cout <= (a and b) or (a and cin) or (b and cin) after 1 ns;
-end architecture circuits; -- of fadd
-
-library IEEE;
-use IEEE.std_logic_1164.all;
-entity add32 is             -- simple 32 bit ripple carry adder
-  port(a    : in  std_logic_vector(31 downto 0);
-       b    : in  std_logic_vector(31 downto 0);
-       cin  : in  std_logic;
-       sum  : out std_logic_vector(31 downto 0);
-       cout : out std_logic);
-end entity add32;
-
-architecture circuits of add32 is
-  signal c : std_logic_vector(0 to 30); -- internal carry signals
-begin  -- circuits of add32
-  a0: entity WORK.fadd port map(a(0), b(0), cin, sum(0), c(0));
-  stage: for I in 1 to 30 generate
-             as: entity WORK.fadd port map(a(I), b(I), c(I-1) , sum(I), c(I));
-         end generate stage;
-  a31: entity WORK.fadd port map(a(31), b(31), c(30) , sum(31), cout);
-end architecture circuits;  -- of add32
-
-use STD.textio.all;
-library IEEE;
-use IEEE.std_logic_1164.all;
-use IEEE.std_logic_textio.all;
-
-entity signal_trace is
-end signal_trace;
-
-architecture circuits of signal_trace is
-  signal a:    std_logic_vector(31 downto 0) := x"00000000";
-  signal b:    std_logic_vector(31 downto 0) := x"FFFFFFFF";
-  signal cin:  std_logic := '1';
-  signal cout: std_logic;
-  signal sum:  std_logic_vector(31 downto 0);
-begin  -- circuits of signal_trace
-  adder: entity WORK.add32 port map(a, b, cin, sum, cout); -- parallel circuit
-
-  prtsum: process (sum)
-            variable my_line : LINE;
-            alias swrite is write [line, string, side, width] ;
-          begin
-            swrite(my_line, "sum=");
-            write(my_line, sum);
-            swrite(my_line, ",  at=");
-            write(my_line, now);
-            writeline(output, my_line);
-          end process prtsum;
-
-end architecture circuits; -- of signal_trace
diff --git a/examples/prism-vim.html b/examples/prism-vim.html deleted file mode 100644 index 567b8206e8..0000000000 --- a/examples/prism-vim.html +++ /dev/null @@ -1,25 +0,0 @@ -

Comments

-
" This is a comment
- -

Variables

-

-set softab = 2
-map <leader>tn :tabnew
-
- -

Map

-
mystring = :steveT;
- -

Functions

-

-func! DeleteTrailingWS()
-  exe "normal mz"
-  %s/\s\+$//ge
-  exe "normal `z"
-endfunc
- -

Logic

-

-if has("mac")
-  nmap <D-j> <M-j>
-endif
\ No newline at end of file diff --git a/examples/prism-visual-basic.html b/examples/prism-visual-basic.html deleted file mode 100644 index 733faa8225..0000000000 --- a/examples/prism-visual-basic.html +++ /dev/null @@ -1,36 +0,0 @@ -

Comments

-
' Comment
-REM This is a comment too
- -

Strings and characters

-
"Foo""bar"
-“”
-"a"c
- -

Dates and times

-
# 8/23/1970 3:45:39AM #
-#8/23/1970 #
-# 3:45:39AM #
-# 3:45:39#
-# 13:45:39 #
-# 1AM #
-# 13:45:39PM #
- -

Numbers

-
42S
-.369E+14
-3.1415R
- -

Preprocessing directives

-
#ExternalChecksum("c:\wwwroot\inetpub\test.aspx", _
-    "{12345678-1234-1234-1234-123456789abc}", _
-    "1a2b3c4e5f617239a49b9a9c0391849d34950f923fab9484")
- -

Keywords

-
Function AddNumbers(ByVal X As Integer, ByVal Y As Integer)
-    AddNumbers = X + Y
-End Function
-Module Test
-    Sub Main()
-    End Sub
-End Module
\ No newline at end of file diff --git a/examples/prism-warpscript.html b/examples/prism-warpscript.html deleted file mode 100644 index 177d0d57d9..0000000000 --- a/examples/prism-warpscript.html +++ /dev/null @@ -1,22 +0,0 @@ -

Full example

-
// Source: https://www.warp10.io/content/04_Tutorials/01_WarpScript/05_Best_Practices
-
-//factorial macro. take a number on the stack, push its factorial
-<%
-	'input' STORE
-	1
-	1 $input <% * %> FOR
-%> 'factorial' STORE
-
-//build a map with key from 1 to 10 and value = key!
-{} 'result' STORE
-
-1 10
-<%
-	'key' STORE
-	$result $key @factorial $key PUT
-	DROP //remove the map let by PUT
-%> FOR
-
-//push the result on the stack
-$result
diff --git a/examples/prism-wasm.html b/examples/prism-wasm.html deleted file mode 100644 index 5cc1b65c62..0000000000 --- a/examples/prism-wasm.html +++ /dev/null @@ -1,43 +0,0 @@ -

Comments

-
;; Single line comment
-(; Multi-line
-comment ;)
- -

Strings

-
""
-"Foobar"
-"Foo\"ba\\r"
- -

Numbers

-
42
-3.1415
-0.4E-4
--3.1_41_5
-0xBADFACE
-0xB_adF_a_c_e
-+0x4E.F7
-0xFFp+4
-inf
-nan
-nan:0xf4
- -

Keywords

-
(func (param i32) (param f32) (local f64)
-  get_local 0
-  get_local 1
-  get_local 2)
- -

Identifiers

-
$p
-$getAnswer
-$return_i32
- -

Full example

-
(module
-  (import "js" "memory" (memory 1))
-  (import "js" "table" (table 1 anyfunc))
-  (elem (i32.const 0) $shared0func)
-  (func $shared0func (result i32)
-   i32.const 0
-   i32.load)
-)
\ No newline at end of file diff --git a/examples/prism-web-idl.html b/examples/prism-web-idl.html deleted file mode 100644 index 7f2c9a91f1..0000000000 --- a/examples/prism-web-idl.html +++ /dev/null @@ -1,28 +0,0 @@ -

Full example

-
[Exposed=Window]
-interface Paint { };
-
-[Exposed=Window]
-interface SolidColor : Paint {
-	attribute double red;
-	attribute double green;
-	attribute double blue;
-};
-
-[Exposed=Window]
-interface Pattern : Paint {
-	attribute DOMString imageURL;
-};
-
-[Exposed=Window]
-interface GraphicalWindow {
-	constructor();
-	readonly attribute unsigned long width;
-	readonly attribute unsigned long height;
-
-	attribute Paint currentPaint;
-
-	undefined drawRectangle(double x, double y, double width, double height);
-
-	undefined drawText(double x, double y, DOMString text);
-};
diff --git a/examples/prism-wgsl.html b/examples/prism-wgsl.html deleted file mode 100644 index 16626c0e8c..0000000000 --- a/examples/prism-wgsl.html +++ /dev/null @@ -1,60 +0,0 @@ -

Full example

-
// Vertex shader
-struct CameraUniform {
-    view_proj: mat4x4<f32>;
-};
-[[group(1), binding(0)]]
-var<uniform> camera: CameraUniform;
-
-struct InstanceInput {
-    [[location(5)]] model_matrix_0: vec4<f32>;
-    [[location(6)]] model_matrix_1: vec4<f32>;
-    [[location(7)]] model_matrix_2: vec4<f32>;
-    [[location(8)]] model_matrix_3: vec4<f32>;
-};
-
-struct VertexInput {
-    [[location(0)]] position: vec3<f32>; 
-    [[location(1)]] tex_coords: vec2<f32>;
-};
-
-struct VertexOutput {
-    [[builtin(position)]] clip_position: vec4<f32>;
-    [[location(0)]] tex_coords: vec2<f32>;
-};
-
-@vertex
-[[stage(vertex)]]
-fn vs_main(
-    model: VertexInput,
-    instance: InstanceInput,
-) -> VertexOutput {
-    let model_matrix = mat4x4<f32>(
-        instance.model_matrix_0,
-        instance.model_matrix_1,
-        instance.model_matrix_2,
-        instance.model_matrix_3,
-    );
-
-    bool mybool1 = true;
-    bool mybool2 = false;
-
-    var out: VertexOutput;
-    out.tex_coords = model.tex_coords;
-    out.clip_position = camera.view_proj * model_matrix * vec4<f32>(model.position, 1.0);
-    return out;
-}
-
-// Fragment shader
-
-[[group(0), binding(0)]]
-var t_diffuse: texture_2d<f32>;
-[[group(0), binding(1)]]
-var s_diffuse: sampler;
-
-@fragment
-[[stage(fragment)]]
-fn fs_main(in: VertexOutput) -> [[location(0)]] vec4<f32> {
-    return textureSample(t_diffuse, s_diffuse, in.tex_coords);
-}
-
\ No newline at end of file diff --git a/examples/prism-wiki.html b/examples/prism-wiki.html deleted file mode 100644 index 99dbd0c618..0000000000 --- a/examples/prism-wiki.html +++ /dev/null @@ -1,145 +0,0 @@ -

Embedded markup

-
Paragraphs can be forced in lists by using HTML tags.
-Two line break symbols, <code><nowiki><br /><br /></nowiki></code>, will create the desired effect. So will enclosing all but the first paragraph with <code><nowiki><p>...</p></nowiki></code>
- -

Headings

-
= Header 1 =
-== Header 2 ==
-=== Header 3 ===
-==== Header 4 ====
-===== Header 5 =====
-====== Header 6 ======
- -

Bold and italic

-
'''''Both bold and italic'''''
-'''Only bold'''
-''Only italic''
- -

Links and Magic links

-
[[w:en:Formal_grammar|Formal grammar]]
-[http://www.cl.cam.ac.uk/~mgk25/iso-ebnf.html EBNF help]
-
-ISBN 1234567890
-ISBN 123456789x
-ISBN      1 2 3-4-5 6789 X
-ISBN 978-9999999999
-
-RFC 822
-PMID 822
- -

Magic words and special symbols

-
#REDIRECT [[somewhere]]
-
-{{SITENAME}}
-{{PAGESINCATEGORY:category}}
-{{#dateformat:2009-12-25|mdy}}
-
-__NOTOC__
-
-{{!}}
-
-~~~ ~~~~ ~~~~~
- -

Lists

-
* Lists are easy to do:
-** start every line
-* with a star
-** more stars mean
-*** deeper levels
-
-# Numbered lists are good
-## very organized
-## easy to follow
-
-; Definition lists
-; item : definition
-; semicolon plus term
-: colon plus definition
-
-* Or create mixed lists
-*# and nest them
-*#* like this
-*#*; definitions
-*#*: work:
-*#*; apple
-*#*; banana
-*#*: fruits
- -

Tables

-
{|
-|Orange
-|Apple
-|-
-|Bread
-|Pie
-|-
-|Butter
-|Ice cream
-|}
-
-{|
-|Lorem ipsum dolor sit amet,
-consetetur sadipscing elitr,
-sed diam nonumy eirmod tempor invidunt
-ut labore et dolore magna aliquyam erat,
-sed diam voluptua.
-
-At vero eos et accusam et justo duo dolores
-et ea rebum. Stet clita kasd gubergren,
-no sea takimata sanctus est Lorem ipsum
-dolor sit amet.
-|
-* Lorem ipsum dolor sit amet
-* consetetur sadipscing elitr
-* sed diam nonumy eirmod tempor invidunt
-|}
-
-{|
-|  Orange    ||   Apple   ||   more
-|-
-|   Bread    ||   Pie     ||   more
-|-
-|   Butter   || Ice cream ||  and more
-|}
-
-{|
-! style="text-align:left;"| Item
-! Amount
-! Cost
-|-
-|Orange
-|10
-|7.00
-|-
-|Bread
-|4
-|3.00
-|-
-|Butter
-|1
-|5.00
-|-
-!Total
-|
-|15.00
-|}
-
-{|
-! style="text-align:left;"| Item !! style="color:red;"| Amount !! Cost
-|-
-|Orange
-|10
-|7.00
-|-
-| style="text-align:right;"| Bread
-|4
-|3.00
-|-
-|Butter
-|1
-|5.00
-|-
-!Total
-|
-|15.00
-|}
diff --git a/examples/prism-wolfram.html b/examples/prism-wolfram.html deleted file mode 100644 index a6eeabdbc6..0000000000 --- a/examples/prism-wolfram.html +++ /dev/null @@ -1,31 +0,0 @@ -

Comments

-

-(* This is a comment *)
-
- -

Strings

-

-"foo bar baz"
-
- -

Numbers

-

-7
-3.14
-10.
-.001
-1e100
-3.14e-10
-2147483647
-
- -

Full example

-

-(* Most operators are supported *)
-f /@ {1, 2, 3};
-f @@ Range[10];
-f @@@ y;
-Module[{x=1}, 
-    Return @ $Failed
-]
-
diff --git a/examples/prism-wren.html b/examples/prism-wren.html deleted file mode 100644 index bce7637be6..0000000000 --- a/examples/prism-wren.html +++ /dev/null @@ -1,17 +0,0 @@ -

Full example

-
// Source: https://wren.io/
-
-System.print("Hello, world!")
-
-class Wren {
-  flyTo(city) {
-    System.print("Flying to %(city)")
-  }
-}
-
-var adjectives = Fiber.new {
-  ["small", "clean", "fast"].each {|word| Fiber.yield(word) }
-}
-
-while (!adjectives.isDone) System.print(adjectives.call())
-
diff --git a/examples/prism-xeora.html b/examples/prism-xeora.html deleted file mode 100644 index 541a916518..0000000000 --- a/examples/prism-xeora.html +++ /dev/null @@ -1,111 +0,0 @@ -

Special Constants

-
$DomainContents$
-$PageRenderDuration$
- -

Operators & Variables

-
$SearchKey$
-$^SearchKey$
-$~SearchKey$
-$-SearchKey$
-$+SearchKey$
-$=SearchKey$
-$#SearchKey$
-$##SearchKey$
-
-$*SearchKey$
-
-$@SearchObject.SearchProperty$
-$@#SearchObject.SearchProperty$
-$@-SearchObject.SearchProperty$
- -

Controls

-
$C:ControlID$
-$C:ControlID:{ <!-- Something --> }:ControlID$
-$C:ControlID:{ <!-- Something --> }:ControlID:{ <!-- Something (Alternative) --> }:ControlID$
-
-Control with Parent
-$C[Control1]:Control2$
-$C[Control2]:Control3:{ <!-- Something --> }:Control3$
-$C[Control2]:Control3:{ <!-- Something --> }:Control3:{ <!-- Something (Alternative) --> }:Control3$
-
-Control with Parent & Leveling
-$C#1[ParentControlID]:ControlID:{ <!-- Something --> }:ControlID$
-
-All Control Tags has leveling specification;
-$C:LoopControl1:{
-	$#FirstLoopSQLField1$
-
-	$C:ControlID:{ <!-- Something --> }:ControlID$
-
-	$C:LoopControl2:{
-		$##FirstLoopSQLField1$
-		$#SecondLoopSQLField1$
-
-		$C#1:ControlID:{ <!-- Something --> }:ControlID$
-	}:LoopControl2$
-}:LoopControl1$
-
-XML setup on a Control in Controls.xml
-<Control id="[ControlID]">
-	<Type>[ControlType]</Type>
-
-	<Bind>[ThemeID|AddonID]?[ControlClass].[FunctionName],SomeOperatorTags(seperated with |)</Bind>
-
-	<BlockIDsToUpdate localupdate="True|False">
-		<BlockID>[BlockID]</BlockID>
-		<BlockID>[BlockID]</BlockID>
-		<BlockID>[BlockID]</BlockID>
-	</BlockIDsToUpdate>
-
-	<DefaultButtonID>[ControlID]</DefaultButtonID>
-
-	<Text>[TextBox, Password value or Button Text]</Text>
-
-	<Content>[Textarea Content]</Content>
-
-	<Source>[Image URL]</Source>
-
-	<Url>[Link URL]</Url>
-
-	<Attributes>
-		<Attribute key="[HTMLAttributeKey]">[AttributeValue]</Attributes>
-	</Attributes>
-</Control>
- -

Directives

-
$T:TemplateID$
-$L:TranslationID$
-$P:TemplateID$
- -

Executable Functions

-
$F:AddonLib1?GlobalControls.PrintOutSums$
-$F:AddonLib1?GlobalControls.PrintOut,~FormField$
-$F:AddonLib1?GlobalControls.SumNumbers,~FormField|=5$
- -

Client Side Function Binding

-
$XF:{AddonLib1?GlobalControls.SumNumbers,~FormField|=5}:XF$
- -

Inline Statements

-
$S:StatementID:{ <!-- C# Code --> }:StatementID$
-$S:StatementID:{!NOCACHE <!-- C# Code --> }:StatementID$
-
-$S:Statement1:{
-	int intvalue1 = 5;
-	int intvalue2 = Integer.Parse("0" + $~FormValue$);
-
-	return intvalue1 * intvalue2;
-}:Statement1$
- -

Request Blocks

-
$H:RequestBlockID:{ <!-- Something --> }:RequestBlockID$
-$H:RequestBlockID:{!RENDERONREQUEST <!-- Something --> }:RequestBlockID$
- -

Cache Block

-
$PC:{ <!-- Page Content Part --> }:PC$
- -

Message Handling Block

-
$MB:{ <!-- Message Output Content --> }:MB$
-$MB:{
-	$#Message$
-	$#MessageType$
-}:MB$
diff --git a/examples/prism-xml-doc.html b/examples/prism-xml-doc.html deleted file mode 100644 index 0e815617db..0000000000 --- a/examples/prism-xml-doc.html +++ /dev/null @@ -1,14 +0,0 @@ -

C#

-
/// <summary>
-/// Summary documentation goes here.
-/// </summary>
- -

F#

-
/// <summary>
-/// Summary documentation goes here.
-/// </summary>
- -

VB.net

-
''' <summary>
-''' Summary documentation goes here.
-''' </summary>
diff --git a/examples/prism-xojo.html b/examples/prism-xojo.html deleted file mode 100644 index 5dd8fc85e5..0000000000 --- a/examples/prism-xojo.html +++ /dev/null @@ -1,63 +0,0 @@ -

Comments

-
' This is a comment
-// This is a comment too
-Rem This is a remark
- -

Strings

-
""
-"foo ""bar"" baz"
- -

Numbers and colors

-
42
-3.14159
-3E4
-&b0110
-&cAABBCCDD
-&hBadFace
-&o777
-&u9
- -

Example

-
Dim g As Graphics
-Dim yOffSet As Integer
-g = OpenPrinterDialog()
-If g <> Nil Then
-  If MainDishMenu.ListIndex <> -1 Then
-    g.Bold = True
-    g.DrawString("Main Dish:",20,20)
-    g.Bold = False
-    g.DrawString(MainDishMenu.Text,100,20)
-    g.Bold = True
-    g.DrawString("Side Order:",20,40)
-    g.Bold = False
-    If FriesRadio.Value Then
-      g.DrawString(FriesRadio.Caption,100,40)
-    End If
-    If PotatoRadio.Value Then
-      g.DrawString(PotatoRadio.Caption,100,40)
-    End If
-    If OnionRingRadio.Value Then
-      g.DrawString(OnionRingRadio.Caption,100,40)
-    End If
-    yOffSet = 60
-    If CheeseCheckBox.Value Then
-      g.Bold = True
-      g.DrawString("Extra:",20,yOffSet)
-      g.Bold = False
-      g.DrawString(CheeseCheckBox.Caption,100,yOffSet)
-      yOffSet = yOffSet + 20
-    End If
-    If BaconCheckBox.Value Then
-      g.Bold = True
-      g.DrawString("Extra:",20,yOffSet)
-      g.Bold = False
-      g.DrawString(BaconCheckBox.Caption,100,yOffSet)
-      yOffSet = yOffSet + 20
-    End If
-    g.Bold = True
-    g.DrawString("Notes:",20,yOffSet)
-    g.Bold = False
-    g.DrawString(NotesField.Text,100,yOffSet,(g.Width-40))
-  End If
-End If
-
diff --git a/examples/prism-xquery.html b/examples/prism-xquery.html deleted file mode 100644 index 8166d771c2..0000000000 --- a/examples/prism-xquery.html +++ /dev/null @@ -1,47 +0,0 @@ -

Comments

-
(::)
-(: Comment :)
-(: Multi-line
-comment :)
-(:~
-: The <b>functx:substring-after-last</b> function returns the part
-: of <b>$string</b> that appears after the last occurrence of
-: <b>$delim</b>. If <b>$string</b> does not contain
-: <b>$delim</b>, the entire string is returned.
-:
-: @param $string the string to substring
-: @param $delim the delimiter
-: @return the substring
-:)
- -

Variables

-
$myProduct
-$foo-bar
-$strings:LetterA
- -

Functions

-
document-node(schema-element(catalog))
-strings:trim($arg as xs:string?)
-false()
- -

Keywords

-
xquery version "1.0";
-declare default element namespace "http://datypic.com/cat";
-declare boundary-space preserve;
-declare default collation "http://datypic.com/collation/custom";
- -

Types

-
xs:anyAtomicType
-element
-xs:double
- -

Full example

-
<report xmlns="http://datypic.com/report"
-xmlns:cat="http://datypic.com/cat"
-xmlns:prod="http://datypic.com/prod"> {
-for $product in doc("prod_ns.xml")/prod:product
-return <lineItem>
-{$product/prod:number}
-{$product/prod:name}
-</lineItem>
-} </report>
\ No newline at end of file diff --git a/examples/prism-yaml.html b/examples/prism-yaml.html deleted file mode 100644 index 58b78f60cc..0000000000 --- a/examples/prism-yaml.html +++ /dev/null @@ -1,107 +0,0 @@ -

Null and Boolean

-
---
-A null: null
-A null: ~
-Also a null: # Empty
-Not a null: ""
-Booleans: [ true, True, false, FALSE ]
-
- -

Numbers and timestamps

-
---
-Integers: [ 0, -0, 3, 0o7, 0x3A, -19 ]
-Floats: [ 0., -0.0, .5, 12e03, +12e03, -2E+05 ]
-Also floats: [ .inf, -.Inf, +.INF, .NAN ]
-Timestamps:
-  canonical: 2001-12-15T02:59:43.1Z
-  iso8601: 2001-12-14t21:59:43.10-05:00
-  spaced: 2001-12-14 21:59:43.10 -5
-  date: 2002-12-14
-  times:
-    - 10:53
-    - 10:53:20.53
-
- -

Strings

-
---
-product: High Heeled "Ruby" Slippers
-description: "Putting on these \"slippers\" is easy."
-address:
-  city:   East Centerville
-  street: !!str |
-    123 Tornado Alley
-    Suite 16
-
-  specialDelivery:  >
-    Follow the Yellow Brick
-    Road to the Emerald City.
-    #Pay no attention to the
-    man behind the curtain.
-
- -

Sequences and maps

-
---
-- Casablanca
-- North by Northwest
-- {
-    name: John Smith, age: 33}
-- name: Mary Smith
-  age: 27
----
-"name": John Smith
-age: 33
-men: [ John Smith,
-    "Bill Jones" ]
-women:
- - Mary Smith
- - "Susan Williams"
-
- -

Tags

-
---
-!!map {
-  ? !!str friends: !!seq [
-    !!map {
-      ? !!str "age"
-      : !!int 33,
-      ? !!str "name"
-      : !!str "John Smith",
-    }
-  ],
-  men:
-    [ !!str "John Smith", !!str "Bill Jones"]
-}
-
- -

Full example

-
%YAML 1.2
---- !<tag:clarkevans.com,2002:invoice>
-invoice: 34843
-date   : 2001-01-23
-bill-to: &id001
-  given  : Chris
-  family : Dumars
-  address:
-    lines: |
-      458 Walkman Dr.
-      Suite #292
-    city    : Royal Oak
-    state   : MI
-    postal  : 48046
-ship-to:
-  <<: *id001
-  product:
-    - sku         : BL394D
-      quantity    : 4
-      description : Basketball
-      price       : 450.00
-    - sku         : BL4438H
-      quantity    : 1
-      description : Super Hoop
-      price       : 2392.00
-tax  : 251.42
-total: 4443.52
-comments:
-    Late afternoon is best.
-    Backup contact is Nancy
-
diff --git a/examples/prism-yang.html b/examples/prism-yang.html deleted file mode 100644 index 744e4d4261..0000000000 --- a/examples/prism-yang.html +++ /dev/null @@ -1,50 +0,0 @@ -

Full example

-

Source

-
submodule execd-dns {
-
-	belongs-to execd { prefix execd; }
-
-	import inet-types { prefix inet; }
-
-	include execd-types;
-
-	description
-		"The 'dns' component provides support for configuring the DNS resolver.
-
-		 The 'domain' keyword of /etc/resolv.conf is not supported, since
-		 it is equivalent to 'search' with a single domain. I.e. in terms
-		 of the data model, the domains are always configured as 'search'
-		 elements, even if there is only one. The set of available options
-		 has been limited to those that are generally available across
-		 different resolver implementations, and generally useful.";
-
-	revision "2008-11-04" {
-		description "draft-ietf-netmod-yang-02 compatible.";
-	}
-	revision "2007-08-29" {
-		description "Syntax fixes after pyang validation.";
-	}
-	revision "2007-06-08" {
-		description "Initial revision.";
-	}
-
-	grouping dns {
-		list search {
-			key name;
-			max-elements 3;
-			leaf name      { type int32; }
-			leaf domain    { type inet:host; }
-		}
-		list server {
-			key address;
-			max-elements 3;
-			ordered-by user;
-			leaf address   { type inet:ip-address; }
-		}
-		container options {
-			leaf ndots    { type uint8; }
-			leaf timeout  { type uint8; }
-			leaf attempts { type uint8; }
-		}
-	}
-}
diff --git a/examples/prism-zig.html b/examples/prism-zig.html deleted file mode 100644 index 67bf148cd3..0000000000 --- a/examples/prism-zig.html +++ /dev/null @@ -1,46 +0,0 @@ -

Full example

-
const std = @import("std");
-
-pub fn main() !void {
-    // If this program is run without stdout attached, exit with an error.
-    const stdout_file = try std.io.getStdOut();
-    // If this program encounters pipe failure when printing to stdout, exit
-    // with an error.
-    try stdout_file.write("Hello, world!\n");
-}
-
-const warn = @import("std").debug.warn;
-
-pub fn main() void {
-    warn("Hello, world!\n");
-}
-
-const assert = @import("std").debug.assert;
-
-test "comments" {
-    // Comments in Zig start with "//" and end at the next LF byte (end of line).
-    // The below line is a comment, and won't be executed.
-
-    //assert(false);
-
-    const x = true;  // another comment
-    assert(x);
-}
-
-/// A structure for storing a timestamp, with nanosecond precision (this is a
-/// multiline doc comment).
-const Timestamp = struct {
-    /// The number of seconds since the epoch (this is also a doc comment).
-    seconds: i64,  // signed so we can represent pre-1970 (not a doc comment)
-    /// The number of nanoseconds past the second (doc comment again).
-    nanos: u32,
-
-    /// Returns a `Timestamp` struct representing the Unix epoch; that is, the
-    /// moment of 1970 Jan 1 00:00:00 UTC (this is a doc comment too).
-    pub fn unixEpoch() Timestamp {
-        return Timestamp{
-            .seconds = 0,
-            .nanos = 0,
-        };
-    }
-};
diff --git a/extending.html b/extending.html deleted file mode 100644 index 2015bb87c9..0000000000 --- a/extending.html +++ /dev/null @@ -1,635 +0,0 @@ - - - - - - -Extending Prism ▲ Prism - - - - - - - - - - - -
-
- -

Extending Prism

-

Prism is awesome out of the box, but it’s even awesomer when it’s customized to your own needs. This section will help you write new language definitions, plugins and all-around Prism hacking.

-
- -
-

Language definitions

- -

Every language is defined as a set of tokens, which are expressed as regular expressions. For example, this is the language definition for JSON:

-

-
-	

At its core, a language definition is just a JavaScript object, and a token is just an entry of the language definition. The simplest language definition is an empty object:

-
Prism.languages['some-language'] = { };
- -

Unfortunately, an empty language definition isn't very useful, so let's add a token. The simplest way to express a token is using a regular expression literal:

-
Prism.languages['some-language'] = {
-	'token-name': /regex/,
-};
- -

Alternatively, an object literal can also be used. With this notation, the regular expression describing the token is the pattern property of the object:

-
Prism.languages['some-language'] = {
-	'token-name': {
-		pattern: /regex/
-	},
-};
- -

So far, the functionality is exactly the same between the regex and object notations. However, the object notation allows for additional options. More on that later.

- -

The name of a token can theoretically be any string that is also a valid CSS class, but there are some guidelines to follow. More on that later.

- -

Language definitions can have any number of tokens, but the name of each token must be unique:

-
Prism.languages['some-language'] = {
-	'token-1': /I love regexes!/,
-	'token-2': /regex/,
-};
- -

Prism will match tokens against the input text one after the other, in order, and tokens cannot overlap with the matches of previous tokens. So in the above example, token-2 will not match the substring "regex" inside of matches of token-1. More information about Prism's matching algorithm later.

- -

Lastly, in many languages, there are multiple different ways of declaring the same constructs (e.g. comments, strings, ...) and sometimes it is difficult or unpractical to match all of them with one single regular expression. To add multiple regular expressions for one token name, an array can be used:

-
Prism.languages['some-language'] = {
-	'token-name': [
-		/regex 1/,
-		/regex 2/,
-		{ pattern: /regex 3/ }
-	],
-};
- -

Note: An array cannot be used in the pattern property.

- - -

Object notation

- -

Instead of using just plain regular expressions, Prism also supports an object notation for tokens. This notation enables the following options:

- -
-
pattern: RegExp
-
-

This is the only required option. It holds the regular expression of the token.

-
- -
lookbehind: boolean
-
-

This option mitigates JavaScript's poor browser support for lookbehinds. When set to true, the first capturing group in the pattern regex is discarded when matching this token, so it effectively functions as a lookbehind.

- -

For an example of this, check out how the C-like language definition finds class-name tokens:

-
Prism.languages.clike = {
-	// ...
-	'class-name': {
-		pattern: /(\b(?:class|extends|implements|instanceof|interface|new|trait)\s+)\w+/i,
-		lookbehind: true
-	}
-};
-
- -
greedy: boolean
-
-

This option enables greedy matching for the token. For more information, see the section about the matching algorithm.

-
- -
alias: string | string[]
-
-

This option can be used to define one or more aliases for the token. The result will be that the styles of the token name and the alias(es) are combined. This can be useful to combine the styling of a standard token, which is already supported by most of the themes, with a more precise token name. For more information on this topic, see granular highlighting.

- -

E.g. the token name latex-equation is not supported by most themes, but it will be highlighted the same as a string in the following example:

-
Prism.languages.latex = {
-	// ...
-	'latex-equation': {
-		pattern: /\$.*?\$/,
-		alias: 'string'
-	}
-};
-
- -
inside: Grammar
-
-

This option accepts another object literal, with tokens that are allowed to be nested in this token. All tokens in the inside grammar will be encapsulated by this token. This makes it easier to define certain languages.

- -

For an example of nested tokens, check out the url token in the CSS language definition:

-
Prism.languages.css = {
-	// ...
-	'url': {
-		// e.g. url(https://example.com)
-		pattern: /\burl\(.*?\)/i,
-		inside: {
-			'function': /^url/i,
-			'punctuation': /^\(|\)$/
-		}
-	}
-};
- -

The inside option can also be used to create recursive languages. This is useful for languages where one token can contain arbitrary expressions, e.g. languages with a string interpolation syntax.

- -

For example, here is how JavaScript implements template string interpolation:

-
Prism.languages.javascript = {
-	// ...
-	'template-string': {
-		pattern: /`(?:\\.|\$\{[^{}]*\}|(?!\$\{)[^\\`])*`/,
-		inside: {
-			'interpolation': {
-				pattern: /\$\{[^{}]*\}/,
-				inside: {
-					'punctuation': /^\$\{|\}$/,
-					'expression': {
-						pattern: /[\s\S]+/,
-						inside: null // see below
-					}
-				}
-			}
-		}
-	}
-};
-Prism.languages.javascript['template-string'].inside['interpolation'].inside['expression'].inside = Prism.languages.javascript;
- -

Be careful when creating recursive grammars as they might lead to infinite recursion which will cause a stack overflow.

-
-
- - -

Token names

- -

The name of a token determines the semantic meaning of matched text of the token. Tokens can capture anything from simple language constructs, like comments, to more complex ones, like template string interpolation expressions. Token names differentiate these language constructs.

- -

A token name can theoretically be any string that is a valid CSS class name. However, in practice, it makes sense for token names to follow some rules. In Prism's code, we enforce that all token names use kebab case (foo-bar) and contain only lower-case ASCII letters, digits, and hyphen characters. E.g. class-name is allowed but Class_name is not.

- -

Prism also defines some standard tokens names that should be used for most tokens.

- -

Themes

- -

Prism's themes assign color (and other styles) to tokens based on their name (and aliases). This means that the language definition does not control the color of tokens, themes do.

- -

However, themes only support a limited number of known token names. If a theme does not know a particular token name, no styles will be applied. While different themes may support different token names, all themes are guaranteed to support Prism's standard tokens. Standard tokens as special token names with specific semantic meanings. They are the common ground all language definitions and themes agree on and must follow. Standard tokens should be preferred when choosing token names.

- -

Granular highlighting

- -

While standard tokens should be the preferred choice, they are also quite general. This is by design as they have to apply to a large number and variety of different languages, but sometimes more fine-grained tokenization (and subsequent highlighting) is desirable.

- -

Granular highlighting is a method of choosing token names to enable fine control for themes, while also ensuring compatibility with all themes.

- -

Let's look at an example. Say we had a language that supported both decimal and binary literals for numbers, and we wanted to give binary number special highlighting. We might implement it like this:

-
Prism.languages['my-language'] = {
-	// ...
-	'number': /\b\d+(?:\.\d+)?\b/,
-	'binary-number': /\b0b[01]+\b/,
-};
- -

But this has a problem. binary-number is not a standard token, so almost no theme is going to given binary numbers any color.

- -

The solution to this problem is to use an alias:

-
Prism.languages['my-language'] = {
-	// ...
-	'number': /\b\d+(?:\.\d+)?\b/,
-	'binary-number': {
-		pattern: /\b0b[01]+\b/,
-		alias: 'number'
-	},
-};
- -

Aliases allow themes to apply the styles of multiple names to one token. This means that themes that do support the binary-number token name can assign a special color, and themes don't support it will fallback to their usual color for numbers.

- -

This is granular highlighting: using a non-standard token name and a standard token as an alias.

- - -

The matching algorithm

- -

The job of Prism's matching algorithm is to produce a token stream given a language definition and some text. A token stream is Prism's representation of (partially or fully) tokenized text and is implemented as a list of strings (representing literal text) and tokens (representing tokenized text).

- -

Note: The word "token" is ambiguous here. We use "token" to refer to both the entry of a language definition (as described in above sections) and a Token object inside a token stream. Which type of "token" is meant can be inferred from context.

- -

The simplified token stream notation will be used in this section. Briefly, the notation uses JSON to represent a token stream. E.g. ["foo ", ["keyword", "bar"], " baz"] is the simplified token stream notation for the token stream that starts with the string foo , is followed by a token of type keyword and text bar, and ends with the string baz.

- -

Back to the matching algorithm: Prism's matching algorithm is a hybrid with two modes: first-come, first-served (FCFS) matching and greedy matching.

- -

FCFS matching

- -

This is Prism default matching mode. All tokens are matched one after the other, in order, tokens cannot overlap, and tokens cannot match text that is already matched by previous tokens.

- -

The algorithm itself is quite simple. Let's say we wanted to tokenize the JS code max(3, 5, exp2(7)); and that function tokens had already been processed. The current token stream would be:

-
[
-	["function", "max"],
-	"(3, 5, ",
-	["function", "exp2"],
-	"(7));"
-]
- -

Next, we would tokenize numbers with the token 'number': /[0-9]+/.

- -

FCFS matching will go through all strings in the current token stream to find matches for the number regex. The first string is "(3, 5, ", so the match 3 is found. A new token is created for 3 and inserted into the token stream to replace the matching text. The token stream is now:

-
[
-	["function", "max"],
-	"(",
-	["number", "3"],
-	", 5, ",
-	["function", "exp2"],
-	"(7));"
-]
- -

Now, the algorithm goes to the next string ", 5, " and finds another match. A new token is created for 5 and the token stream is now:

-
[
-	["function", "max"],
-	"(",
-	["number", "3"],
-	", ",
-	["number", "5"],
-	", ",
-	["function", "exp2"],
-	"(7));"
-]
- -

The next string is ", " and no matches are found. The string after that is "(7));" and a new token is create for 7: -

[
-	["function", "max"],
-	"(",
-	["number", "3"],
-	", ",
-	["number", "5"],
-	", ",
-	["function", "exp2"],
-	"(",
-	["number", "7"],
-	"));"
-]
- -

The last string to check is "));" and no matches are found. The number token has now been processed and the algorithm will go process the next token in the language definition.

- -

Notice how FCFS matching did not find the 2 in exp2. Since FCFS matching completely ignores existing tokens in the token stream, the number regex cannot see already-tokenized text. This is a very useful property. In the above example, 2 is a part of the function name exp2, so highlighting it as a number would be incorrect.

- -

Greedy matching

- -

Greedy matching is very similar to FCFS matching. All tokens are matched in order and tokens cannot overlap. The defining difference is that greedy tokens can match the text of previous tokens.

- -

Let's look at an example to see why greedy matching is useful and how it works conceptually. A very simplified version of JavaScript's comment and string syntax might be implemented like this:

-
Prism.languages.javascript = {
-	'comment': /\/\/.*/,
-	'string': /'(?:\\.|[^\\\r\n])*'/
-};
- -

To understand why greedy matching is useful, let's look at how FCFS matching would tokenize the text 'http://example.com':

- -

FCFS matching starts with the token stream ["'http://example.com'"] and tries to find matches for 'comment': /\/\/.*/. The match //example.com' is found and inserted into the token stream:

-
[
-	"'http:",
-	["comment", "//example.com'"]
-]
- -

Then FCFS matching will search for matches for 'string': /'(?:\\.|[^'\\\r\n])*'/. The first string of the token stream, "'http:", does not match the string regex, so the token stream remains unchanged. The string token has now been processed and the above token stream is the final result.

- -

Obviously, this is bad. The code 'http://example.com' is clearly just a string containing a URL, but FCFS matching doesn't understand this.

- -

An obvious, but incorrect, fix might be to swap the order of comment and string. This would fix 'http://example.com'. However, the problem was merely moved. Comments like // it's my co-worker's code (note the two single quotes) will now be tokenized incorrectly.

- -

This is the problem greedy matching solves. Let's make the tokens greedy and then see how this affects the result:

-
Prism.languages.javascript = {
-	'comment': {
-		pattern: /\/\/.*/,
-		greedy: true
-	},
-	'string': {
-		pattern: /'(?:\\.|[^'\\\r\n])*'/,
-		greedy: true
-	}
-};
- -

While the actual greedy matching algorithm is quite complex and littered with subtle edge cases, its effect quite simple: a list of greedy tokens will behave as if they were matched by a single regex. This is how greedy matching works conceptually and how you should think about greedy tokens.

- -

This means that the greedy comment and string tokens will behave like the following language definition, but the combined token will result in the correct token names of the original greedy tokens:

-
Prism.languages.javascript = {
-	'comment-or-string': /\/\/.*|'(?:\\.|[^'\\\r\n])*'/
-};
- -

In the above example, 'http://example.com' will be matched by /\/\/.*|'(?:\\.|[^'\\\r\n])*'/ completely. Since the '(?:\\.|[^'\\\r\n])*' part of the regex caused the match, a token of type string will be created and the following token stream will be produced:

-
[
-	["string", "'http://example.com'"]
-]
- -

Similarly, the tokenization will also be correct for the // it's my co-worker's code example.

- -

When deciding whether a token should be greedy, use the following guide lines:

- -
    -
  1. -

    Most tokens are not greedy.

    - -

    Most tokens in most languages are not greedy, because they don't need to be. Typically only the comment, string, and regex literal tokens need to be greedy. All other tokens can use FCFS matching.

    - -

    Generally, a token should only be greedy if it can contain the start of another token.

    -
  2. -
  3. -

    All tokens before a greedy token should also be greedy.

    - -

    Greedy matching works subtly differently if there are non-greedy tokens before a greedy token. This typically leads to subtle and hard-to-catch bugs that sometimes take years to uncover.

    - -

    To make sure that greedy matching works as expected, the greedy tokens should be the first tokens of a language.

    -
  4. -
  5. -

    Greedy tokens come in groups.

    - -

    If a language definition contains only a single greedy token, then the greedy token shouldn't be greedy. As explained above, greedy matching conceptually combines the regexes of all greedy tokens into one. If there is only one greedy token, greedy matching will behave like FCFS matching.

    -
  6. -
- -

Helper functions

- -

Prism also provides some useful function for creating and modifying language definitions. Prism.languages.insertBefore can be used to modify existing languages definitions. Prism.languages.extend is useful for when your language is very similar to another existing language.

- - -

The rest property

- -

The rest property in language definitions is special. Prism expects this property to be another language definition instead of a token. The tokens of the grammar in the rest property will be appended to the end of the language definition with the rest property. It can be thought of as a built-in object spread operator.

- -

This is useful for referring to tokens defined elsewhere. However, the rest property should be used sparingly. When referencing another language, it is typically better to encapsulate the text of the language into a token and use the inside property instead.

-
- -
-

Creating a new language definition

- -

This section will explain the usual workflow of creating a new language definition.

- -

As an example, we will create the language definition of the fictional Foo's Binary, Artistic Robots™ language or just Foo Bar for short.

- -
    -
  1. -

    Create a new file components/prism-foo-bar.js.

    - -

    In this example, we choose foo-bar as the id of the new language. The language id has to be unique and should work well with the language-xxxx CSS class name Prism uses to refer to language definitions. Your language id should ideally match the regular expression /^[a-z][a-z\d]*(?:-[a-z][a-z\d]*)*$/.

    -
  2. -
  3. -

    Edit components.json to register the new language by adding it to the languages object. (Please note that all language entries are sorted alphabetically by title.)
    - Our new entry for this example will look like this:

    - -
    "foo-bar": {
    -	"title": "Foo Bar",
    -	"owner": "Your GitHub name"
    -}
    - -

    If your language definition depends any other languages, you have to specify this here as well by adding a "require" property. E.g. "require": "clike", or "require": ["markup", "css"]. For more information on dependencies read the declaring dependencies section.

    - -

    Note: Any changes made to components.json require a rebuild (see step 3).

    -
  4. -
  5. -

    Rebuild Prism by running npm run build.

    - -

    This will make your language available to the test page, or more precise: your local version of it. You can open your local test.html page in any browser, select your language, and see how your language definition highlights any code you input.

    - -

    Note: You have to reload the test page to apply changes made to prism-foo-bar.js but you don't have to rebuild Prism itself. However, if you change components.json (e.g. because you added a dependency) then these changes will not show up on the test page until you rebuild Prism.

    -
  6. -
  7. -

    Write the language definition.

    - -

    The above section already explains the makeup of language definitions.

    -
  8. -
  9. -

    Adding aliases.

    - -

    Aliases for are useful if your language is known under more than just one name or there are very common abbreviations for your language (e.g. JS for JavaScript). Keep in mind that aliases are very similar to language ids in that they also have to be unique (i.e. there cannot be an alias which is the same as another alias of language id) and work as CSS class names.

    - -

    In this example, we will register the alias foo for foo-bar because Foo Bar code is stored in .foo files.

    - -

    To add the alias, we add this line at the end of prism-foo-bar.js:

    - -
    Prism.languages.foo = Prism.languages['foo-bar'];
    - -

    Aliases also have to be registered in components.json by adding the alias property to the language entry. In this example, the updated entry will look like this:

    - -
    "foo-bar": {
    -	"title": "Foo Bar",
    -	"alias": "foo",
    -	"owner": "Your GitHub name"
    -}
    - -

    Note: alias can also be a string array if you need to register multiple aliases.

    - -

    Using aliasTitles, it's also possible to give aliases specific titles. In this example, this won't be necessary but a good example as to where this is useful is the markup language:

    - -
    "markup": {
    -	"title": "Markup",
    -	"alias": ["html", "xml", "svg", "mathml"],
    -	"aliasTitles": {
    -		"html": "HTML",
    -		"xml": "XML",
    -		"svg": "SVG",
    -		"mathml": "MathML"
    -	},
    -	"option": "default"
    -}
    -
  10. -
  11. -

    Adding tests.

    - -

    Create a folder tests/languages/foo-bar/. This is where your test files will live. The test format and how to run tests is described here.

    - -

    You should add a test for every major feature of your language. Test files should test the common case and certain edge cases (if any). Good examples are the tests of the JavaScript language.

    - -

    You can use this template for new .test files:

    - -
    The code to test.
    -
    -----------------------------------------------------
    -
    -----------------------------------------------------
    -
    -Brief description.
    - -

    For every test file:

    - -
      -
    1. -

      Add the code to test and a brief description.

      -
    2. -
    3. -

      Verify that your language definition correctly highlights the test code. This can be done using your local version of the test page.
      - Note: Using the Show tokens options, you see the token stream your language definition created.

      -
    4. -
    5. -

      Once you carefully checked that the test case is handled correctly (i.e. by using the test page), run the following command:

      - npm run test:languages -- --language=foo-bar --accept -

      This command will take the token stream your language definition currently produces and inserted into the test file. The empty space between the two lines separating the code and the description of test case will be replaced with a simplified version of the token stream.

      -
    6. -
    7. -

      Carefully check that the inserted token stream JSON is what you expect.

      -
    8. -
    9. Re-run npm run test:languages -- --language=foo-bar to verify that the test passes.
    10. -
    -
  12. -
  13. -

    Add an example page.

    - -

    Create a new file examples/prism-foo-bar.html. This will be the template containing the example markup. Just look at other examples to see how these files are structured.
    - We don't have any rules as to what counts as an example, so a single Full example section where you present the highlighting of the major features of the language is enough.

    -
  14. -
  15. -

    Run npm test to check that all tests pass, not just your language tests.
    - This will usually pass without problems. If you can't get all the tests to pass, skip this step.

    -
  16. -
  17. -

    Run npm run build again.

    - -

    Your language definition is now ready!

    -
  18. -
-
- - -
-

Dependencies

- -

Languages and plugins can depend on each other, so Prism has its own dependency system to declare and resolve dependencies.

- -

Declaring dependencies

- -

You declare a dependency by adding a property to the entry of your language or plugin in the components.json file. The name of the property will be dependency kind and its value will be the component id of the dependee. If multiple languages or plugins are depended upon then you can also declare an array of component ids.

- -

In the following example, we will use the require dependency kind to declare that a fictional language Foo depends on the JavaScript language and that another fictional language Bar depends on both JavaScript and CSS.

- -
{
-	"languages": {
-		"javascript": { "title": "JavaScript" },
-		"css": { "title": "CSS" },
-		...,
-		"foo": {
-			"title": "Foo",
-			"require": "javascript"
-		},
-		"bar": {
-			"title": "Bar",
-			"require": ["css", "javascript"]
-		}
-	}
-}
- -

Dependency kinds

- -

There are 3 kinds of dependencies:

- -
-
require
-
- Prism will ensure that all dependees are loaded before the depender.
- You are not allowed to modify the dependees unless they are also declared as modify. - -

This kind of dependency is most useful if you e.g. extend another language or dependee as an embedded language (e.g. like PHP is embedded in HTML).

-
-
optional
-
- Prism will ensure that an optional dependee is loaded before the depender if the dependee is loaded. Unlike require dependencies which also guarantee that the dependees are loaded, optional dependencies only guarantee the order of loaded components.
- You are not allowed to modify the dependees. If you need to modify the optional dependee, declare it as modify instead. - -

This kind of dependency is useful if you have embedded languages but you want to give the users a choice as to whether they want to include the embedded language. By using optional dependencies, users can better control the bundle size of Prism by only including the languages they need.
- E.g. HTTP can highlight JSON and XML payloads but it doesn't force the user to include these languages.

-
-
modify
-
- This is an optional dependency which also declares that the depender might modify the dependees. - -

This kind of dependency is useful if your language modifies another language (e.g. by adding tokens).
- E.g. CSS Extras adds new tokens to the CSS language.

-
-
- -

To summarize the properties of the different dependency kinds:

- - - - - - - - - - - - - - - - - -
Non-optionalOptional
Read onlyrequireoptional
Modifiablemodify
- - - -

Note: You can declare a component as both require and modify

- -

Resolving dependencies

- -

We consider the dependencies of components an implementation detail, so they may change from release to release. Prism will usually resolve dependencies for you automatically. So you won't have to worry about dependency loading if you download a bundle or use the loadLanguages function in NodeJS, the AutoLoader, or our Babel plugin.

- -

If you have to resolve dependencies yourself, use the getLoader function exported by dependencies.js. Example:

- -
const getLoader = require('prismjs/dependencies');
-const components = require('prismjs/components');
-
-const componentsToLoad = ['markup', 'css', 'php'];
-const loadedComponents = ['clike', 'javascript'];
-
-const loader = getLoader(components, componentsToLoad, loadedComponents);
-loader.load(id => {
-	require(`prismjs/components/prism-${id}.min.js`);
-});
- -

For more details on the getLoader API, check out the inline documentation.

- -
- - -
-

Writing plugins

- -

Prism’s plugin architecture is fairly simple. To add a callback, you use Prism.hooks.add(hookname, callback). - hookname is a string with the hook id, that uniquely identifies the hook your code should run at. - callback is a function that accepts one parameter: an object with various variables that can be modified, since objects in JavaScript are passed by reference. - For example, here’s a plugin from the Markup language definition that adds a tooltip to entity tokens which shows the actual character encoded: -

Prism.hooks.add('wrap', function(env) {
-	if (env.token === 'entity') {
-		env.attributes['title'] = env.content.replace(/&amp;/, '&');
-	}
-});
-

Of course, to understand which hooks to use you would have to read Prism’s source. Imagine where you would add your code and then find the appropriate hook. - If there is no hook you can use, you may request one to be added, detailing why you need it there. -

- -
-

API documentation

- -

All public and stable parts of Prism's API are documented here.

-
- -
- - - - - - - - - - diff --git a/faq.html b/faq.html deleted file mode 100644 index 8dd2a57338..0000000000 --- a/faq.html +++ /dev/null @@ -1,236 +0,0 @@ - - - - - - -FAQ ▲ Prism - - - - - - - - - - -
-
- -

FAQ

-

Frequently Asked Questions, with a few Questions I want people to Frequently Ask.

-
- -
-

This page doesn’t work in Opera!

- -

Prism works fine in Opera. However, this page might sometimes appear to not be working in Opera, due to the theme switcher triggering an Opera bug. - This will be fixed soon.

-
- -
-

Isn’t it bad to do syntax highlighting with regular expressions?

- -

It is true that to correctly handle every possible case of syntax found in the wild, one would need to write a full-blown parser. - However, in most web applications and websites a small error margin is usually acceptable and a rare highlighting failure is not the end of the world. - A syntax highlighter based on regular expressions might only be accurate 99% of the time (the actual percentage is just a guess), - but in exchange for the small error margin, it offers some very important benefits: - -

    -
  • Smaller filesize. Proper parsers are very big.
  • -
  • Extensibility. Authors can define new languages simply by knowing how to code regular expressions. - Writing a correct, unambiguous BNF grammar is a task at least an order of magnitude harder.
  • -
  • Graceful error recovery. Parsers fail on incorrect syntax, where regular expressions keep matching.
  • -
- -

For this reason, most syntax highlighters on the web and on desktop, are powered by regular expressions. This includes the internal syntax - highlighters used by popular native applications like Espresso and Sublime Text, at the time of writing. - Of course, not every regex-powered syntax highlighter is created equal. The number and type of failures can be vastly different, depending on - the exact algorithm used. Prism’s known failures are documented on this page..

-
- -
-

Why is asynchronous highlighting disabled by default?

- -

Web Workers are good for preventing syntax highlighting of really large code blocks from blocking the main UI thread. - In most cases, you will want to highlight reasonably sized chunks of code, and this will not be needed. - Furthermore, using Web Workers is actually slower than synchronously highlighting, due to the overhead of creating and terminating - the Worker. It just appears faster in these cases because it doesn’t block the main thread. - In addition, since Web Workers operate on files instead of objects, plugins that hook on core parts of Prism (e.g. modify language definitions) - will not work unless included in the same file (using the builder in the Download page will protect you from this pitfall). - Lastly, Web Workers cannot interact with the DOM and most other APIs (e.g. the console), so they are notoriously hard to debug. -

-
- -
-

Why is pre-existing HTML stripped off?

- -

Because it would complicate the code a lot, although it’s not a crucial feature for most people. - If it’s very important to you, you can use the Keep Markup plugin.

-
- -
-

If pre-existing HTML is stripped off, how can I highlight certain parts of the code?

- -

There is a number of ways around it. You can always break the block of code into multiple parts, and wrap the HTML around it (or just use a .highlight class). - You can see an example of this in action at the “Basic usage” section of the homepage.

-

Another way around the limitation is to use the Line Highlght plugin, to highlight and link to specific lines and/or line ranges. -

- -
-

How do I know which tokens I can style for every language?

- -

Every token that is highlighted gets at least two classes: token and a class with the token type (e.g. comment) plus any number of aliases. - Aliases can be seen as additional token types and are used to give specialized tokens a more common class for easier styling. - You can find the different types of tokens either by looking at the keys of the object defining the language or by using the below interface.

- -

Language:

-
- -

Additionally, you can find a list of standard tokens on this page.

-
- -
-

How can I use different highlighting for tokens with the same name in different languages?

-

Just use a descendant selector, that includes the language class. The default prism.css does this, to have different colors for - JavaScript strings (which are very common) and CSS strings (which are relatively rare). Here’s that code, simplified to illustrate the technique: -

.token.string {
-	color: #690;
-}
-
-.language-css .token.string,
-.style .token.string {
-	color: #a67f59;
-}
- -

Abbreviated language classes (e.g. lang-css) will be converted to their extended forms, so you don’t need to account for them.

-

The same technique can be used to differentiate XML tag namespaces from attribute namespaces:

-
.tag > .token.namespace {
-	color: #b37298;
-}
-.attr-name > .token.namespace {
-	color: #ab6;
-}
-
- -
- - - - - - - - - - - diff --git a/gulpfile.js/changelog.js b/gulpfile.js/changelog.js deleted file mode 100644 index fc21879523..0000000000 --- a/gulpfile.js/changelog.js +++ /dev/null @@ -1,395 +0,0 @@ -'use strict'; - -const { src, dest } = require('gulp'); - -const replace = require('gulp-replace'); -const pump = require('pump'); -const git = require('simple-git').gitP(__dirname); - -const { changelog } = require('./paths'); - - -const ISSUE_RE = /#(\d+)(?![\d\]])/g; -const ISSUE_SUB = '[#$1](https://github.com/PrismJS/prism/issues/$1)'; - -function linkify(cb) { - return pump([ - src(changelog), - replace(ISSUE_RE, ISSUE_SUB), - replace( - /\[[\da-f]+(?:, *[\da-f]+)*\]/g, - m => m.replace(/([\da-f]{7})[\da-f]*/g, '[`$1`](https://github.com/PrismJS/prism/commit/$1)') - ), - dest('.') - ], cb); -} - -/** - * Creates an array which iterates its items in the order given by `compareFn`. - * - * The array may not be sorted at all times. - * - * @param {(a: T, b: T) => number} compareFn - * @returns {T[]} - * @template T - */ -function createSortedArray(compareFn) { - /** @type {T[]} */ - const a = []; - - a['sort'] = function () { - return Array.prototype.sort.call(this, compareFn); - }; - a[Symbol.iterator] = function () { - return this.slice().sort(compareFn)[Symbol.iterator](); - }; - - return a; -} - -/** - * Parses the given log line and adds the list of the changed files to the output. - * - * @param {string} line A one-liner log line consisting of the commit hash and the commit message. - * @returns {Promise} - * - * @typedef {{ message: string, hash: string, changes: CommitChange[] }} CommitInfo - * @typedef {{ file: string, mode: ChangeMode }} CommitChange - * @typedef {"A" | "C" | "D" | "M" | "R" | "T" | "U" | "X" | "B"} ChangeMode - */ -async function getCommitInfo(line) { - // eslint-disable-next-line regexp/no-super-linear-backtracking - const [, hash, message] = /^([a-f\d]+)\s+(.*)$/i.exec(line); - - /* The output looks like this: - * - * M components.js - * M components.json - * - * or nothing for e.g. reverts. - */ - const output = await git.raw(['diff-tree', '--no-commit-id', '--name-status', '-r', hash]); - - const changes = !output ? [] : output.trim().split(/\n/g).map(line => { - const [, mode, file] = /(\w)\s+(.+)/.exec(line); - return { mode: /** @type {ChangeMode} */ (mode), file }; - }); - - return { hash, message, changes }; -} - -/** - * Parses the output of `git log` with the given revision range. - * - * @param {string | Promise} range The revision range in which the log will be parsed. - * @returns {Promise} - */ -async function getLog(range) { - /* The output looks like this: - * - * bfbe4464 Invoke `callback` after `after-highlight` hook (#1588) - * b41fb8f1 Fixes regex for JS examples (#1591) - */ - const output = await git.raw(['log', await Promise.resolve(range), '--oneline']); - - if (output) { - const commits = output.trim().split(/\n/g); - return Promise.all(commits.map(getCommitInfo)); - } else { - return []; - } -} - -const revisionRanges = { - nextRelease() { - return git.raw(['describe', '--abbrev=0', '--tags']).then(res => `${res.trim()}..HEAD`); - } -}; -const strCompare = (a, b) => a.localeCompare(b, 'en'); - -async function changes() { - const { languages, plugins } = require('../components.js'); - - const infos = await getLog(revisionRanges.nextRelease()); - - const entries = { - 'TODO:': {}, - 'New components': { - ['']: createSortedArray(strCompare) - }, - 'Updated components': {}, - 'Updated plugins': {}, - 'Updated themes': {}, - 'Other': {}, - }; - /** - * - * @param {string} category - * @param {string | { message: string, hash: string }} info - */ - function addEntry(category, info) { - const path = category.split(/\s*>>\s*/); - if (path[path.length - 1] !== '') { - path.push(''); - } - - let current = entries; - for (const key of path) { - if (key) { - current = current[key] = current[key] || {}; - } else { - (current[key] = current[key] || []).push(info); - } - } - } - - - /** @param {CommitChange} change */ - function notGenerated(change) { - return !change.file.endsWith('.min.js') - && !change.file.startsWith('docs/') - && ['prism.js', 'components.js', 'package-lock.json'].indexOf(change.file) === -1; - } - /** @param {CommitChange} change */ - function notPartlyGenerated(change) { - return change.file !== 'plugins/autoloader/prism-autoloader.js' && - change.file !== 'plugins/show-language/prism-show-language.js'; - } - /** @param {CommitChange} change */ - function notTests(change) { - return !/^tests\//.test(change.file); - } - /** @param {CommitChange} change */ - function notExamples(change) { - return !/^examples\//.test(change.file); - } - /** @param {CommitChange} change */ - function notFailures(change) { - return !/^known-failures.html$/.test(change.file); - } - /** @param {CommitChange} change */ - function notComponentsJSON(change) { - return change.file !== 'components.json'; - } - - /** - * @param {((e: T, index: number) => boolean)[]} filters - * @returns {(e: T, index: number) => boolean} - * @template T - */ - function and(...filters) { - return (e, index) => { - for (let i = 0, l = filters.length; i < l; i++) { - if (!filters[i](e, index)) { - return false; - } - } - return true; - }; - } - - /** - * Some commit message have the format `component changed: actual message`. - * This function can be used to remove this prefix. - * - * @param {string} prefix - * @param {CommitInfo} info - * @returns {{ message: string, hash: string }} - */ - function removeMessagePrefix(prefix, info) { - const source = String.raw`^${prefix.replace(/([^-\w\s])/g, '\\$1').replace(/[-\s]/g, '[-\\s]')}:\s*`; - const patter = RegExp(source, 'i'); - return { - message: info.message.replace(patter, ''), - hash: info.hash - }; - } - - - /** - * @type {((info: CommitInfo) => boolean)[]} - */ - const commitSorters = [ - - function rebuild(info) { - if (info.changes.length > 0 && info.changes.filter(notGenerated).length === 0) { - console.log('Rebuild found: ' + info.message); - return true; - } - }, - - function addedComponent(info) { - let relevantChanges = info.changes.filter(and(notGenerated, notTests, notExamples, notFailures)); - - // `components.json` has to be modified - if (relevantChanges.some(c => c.file === 'components.json')) { - relevantChanges = relevantChanges.filter(and(notComponentsJSON, notPartlyGenerated)); - - // now, only the newly added JS should be left - if (relevantChanges.length === 1) { - const change = relevantChanges[0]; - if (change.mode === 'A' && change.file.startsWith('components/prism-')) { - const lang = change.file.match(/prism-([\w-]+)\.js$/)[1]; - const entry = languages[lang] || { - title: 'REMOVED LANGUAGE ' + lang, - }; - const titles = [entry.title]; - if (entry.aliasTitles) { - titles.push(...Object.values(entry.aliasTitles)); - } - addEntry('New components', `__${titles.join('__ & __')}__: ${infoToString(info)}`); - return true; - } - } - } - }, - - function changedComponentOrCore(info) { - let relevantChanges = info.changes.filter(and(notGenerated, notTests, notExamples, notFailures)); - - // if `components.json` changed, then autoloader and show-language also change - if (relevantChanges.some(c => c.file === 'components.json')) { - relevantChanges = relevantChanges.filter(and(notComponentsJSON, notPartlyGenerated)); - } - - if (relevantChanges.length === 1) { - const change = relevantChanges[0]; - if (change.mode === 'M' && change.file.startsWith('components/prism-')) { - const lang = change.file.match(/prism-([\w-]+)\.js$/)[1]; - if (lang === 'core') { - addEntry('Other >> Core', removeMessagePrefix('Core', info)); - } else { - const title = languages[lang].title; - addEntry('Updated components >> ' + title, removeMessagePrefix(title, info)); - } - return true; - } - } - }, - - function changedPlugin(info) { - let relevantChanges = info.changes.filter(and(notGenerated, notTests, notExamples, c => !/\.(?:css|html)$/.test(c.file))); - - if (relevantChanges.length > 0 && - relevantChanges.every(c => c.mode === 'M' && /^plugins\/.*\.js$/.test(c.file))) { - - if (relevantChanges.length === 1) { - const change = relevantChanges[0]; - const id = change.file.match(/\/prism-([\w-]+)\.js/)[1]; - const title = plugins[id].title || plugins[id]; - addEntry('Updated plugins >> ' + title, removeMessagePrefix(title, info)); - } else { - addEntry('Updated plugins', info); - } - return true; - } - }, - - function changedTheme(info) { - if (info.changes.length > 0 && info.changes.every(c => { - return /themes\/.*\.css/.test(c.file) && c.mode === 'M'; - })) { - if (info.changes.length === 1) { - const change = info.changes[0]; - let name = (change.file.match(/prism-(\w+)\.css$/) || [, 'Default'])[1]; - name = name[0].toUpperCase() + name.substr(1); - addEntry('Updated themes >> ' + name, removeMessagePrefix(name, info)); - } else { - addEntry('Updated themes', info); - } - return true; - } - }, - - function changedInfrastructure(info) { - let relevantChanges = info.changes.filter(notGenerated); - - if (relevantChanges.length > 0 && relevantChanges.every(c => { - if (/^(?:gulpfile.js|tests)\//.test(c.file)) { - // gulp tasks or tests - return true; - } - if (/^\.[\w.]+$/.test(c.file)) { - // a .something file - return true; - } - return ['bower.json', 'CNAME', 'composer.json', 'package.json', 'package-lock.json'].indexOf(c.file) >= 0; - })) { - addEntry('Other >> Infrastructure', info); - return true; - } - - // or dependencies.js - const excludeTests = info.changes.filter(notTests); - if (excludeTests.length === 1 && excludeTests[0].file === 'dependencies.js') { - addEntry('Other >> Infrastructure', info); - return true; - } - }, - - function changedWebsite(info) { - if (info.changes.length > 0 && info.changes.every(c => { - return /[\w-]+\.html$/.test(c.file) || /^(?:assets|docs)\//.test(c.file); - })) { - addEntry('Other >> Website', info); - return true; - } - }, - - function otherChanges(info) { - // detect changes of the Github setup - // This assumes that .md files are related to GitHub - if (info.changes.length > 0 && info.changes.every(c => /\.md$/i.test(c.file))) { - addEntry('Other', info); - return true; - } - }, - - ]; - - for (const info of infos) { - if (!commitSorters.some(sorter => sorter(info))) { - addEntry('TODO:', info); - } - } - - - let md = ''; - - /** - * Stringifies the given commit info. - * - * @param {string | CommitInfo} info - * @returns {string} - */ - function infoToString(info) { - if (typeof info === 'string') { - return info; - } - return `${info.message} [\`${info.hash}\`](https://github.com/PrismJS/prism/commit/${info.hash})`; - } - function printCategory(category, indentation = '') { - for (const subCategory of Object.keys(category).sort(strCompare)) { - if (subCategory) { - md += `${indentation}* __${subCategory}__\n`; - printCategory(category[subCategory], indentation + ' '); - } else { - for (const info of category['']) { - md += `${indentation}* ${infoToString(info)}\n`; - } - } - } - } - - for (const category of Object.keys(entries)) { - md += `\n### ${category}\n\n`; - printCategory(entries[category]); - } - console.log(md); -} - - -module.exports = { - linkify, - changes -}; diff --git a/gulpfile.js/docs.js b/gulpfile.js/docs.js deleted file mode 100644 index 7b23cafbe8..0000000000 --- a/gulpfile.js/docs.js +++ /dev/null @@ -1,71 +0,0 @@ -'use strict'; - -const { src, dest, series } = require('gulp'); -const replace = require('gulp-replace'); -const jsdoc = require('gulp-jsdoc3'); -const pump = require('pump'); -const del = require('del'); - -const jsDoc = { - config: '../.jsdoc.json', - readme: 'README.md', - files: ['components/prism-core.js'], - junk: ['docs/fonts/Source-Sans-Pro', 'docs/**/Apache-License-2.0.txt'] -}; - - -function docsClean() { - return del([ - // everything in the docs folder - 'docs/**/*', - // except for our CSS overwrites - '!docs/styles', - '!docs/styles/overwrites.css', - ]); -} - -function docsCreate(cb) { - let config = require(jsDoc.config); - let files = [jsDoc.readme].concat(jsDoc.files); - src(files, { read: false }).pipe(jsdoc(config, cb)); -} - -function docsAddFavicon(cb) { - return pump([ - src('docs/*.html'), - replace( - /\s*<\/head>/, - '\n $&' - ), - dest('docs/') - ], cb); -} - -function docsRemoveExcessFiles() { - return del(jsDoc.junk); -} - -function docsFixLineEnds(cb) { - // https://github.com/jsdoc/jsdoc/issues/1837 - return pump([ - src('docs/*.html'), - replace(/\r\n?|\n/g, '\n'), - dest('docs/') - ], cb); -} - -const docs = series(docsClean, docsCreate, docsRemoveExcessFiles, docsAddFavicon, docsFixLineEnds); - -module.exports = { - docs, - handlers: { - jsdocCommentFound(comment) { - // This is a hack. - // JSDoc doesn't support TS' type import syntax (e.g. `@type {import("./my-file.js").Type}`) and throws an - // error if used. So we just replace the "function" with some literal that JSDoc will interpret as a - // namespace. Not pretty but it works. - comment.comment = comment.comment - .replace(/\bimport\s*\(\s*(?:"(?:[^"\r\n\\]|\\.)*"|'(?:[^'\r\n\\]|\\.)*')\s*\)/g, '__dyn_import__'); - } - } -}; diff --git a/gulpfile.js/index.js b/gulpfile.js/index.js deleted file mode 100644 index 24a5443d5a..0000000000 --- a/gulpfile.js/index.js +++ /dev/null @@ -1,303 +0,0 @@ -'use strict'; - -const { src, dest, series, parallel, watch } = require('gulp'); - -const rename = require('gulp-rename'); -const terser = require('gulp-terser'); -const header = require('gulp-header'); -const concat = require('gulp-concat'); -const replace = require('gulp-replace'); -const cleanCSS = require('gulp-clean-css'); -const webfont = require('webfont').default; -const pump = require('pump'); -const util = require('util'); -const fs = require('fs'); - -const paths = require('./paths'); -const { changes, linkify } = require('./changelog'); -const { docs } = require('./docs'); - - -const componentsPromise = new Promise((resolve, reject) => { - fs.readFile(paths.componentsFile, { - encoding: 'utf-8' - }, (err, data) => { - if (!err) { - resolve(JSON.parse(data)); - } else { - reject(err); - } - }); -}); - -function inlineRegexSource() { - return replace( - /\/((?:[^\n\r[\\\/]|\\.|\[(?:[^\n\r\\\]]|\\.)*\])+)\/\s*\.\s*source\b/g, - (m, source) => { - // escape backslashes - source = source.replace(/\\(.)|\[(?:\\s\\S|\\S\\s)\]/g, function (m, g1) { - if (g1) { - // characters like /\n/ can just be kept as "\n" instead of being escaped to "\\n" - if (/[nrt0/]/.test(g1)) { - return m; - } - if ('\\' == g1) { - return '\\\\\\\\'; // escape using 4 backslashes - } - return '\\\\' + g1; - } else { - return '[^]'; - } - }); - // escape single quotes - source = source.replace(/'/g, "\\'"); - // wrap source in single quotes - return "'" + source + "'"; - } - ); -} - -function minifyJS() { - return [ - inlineRegexSource(), - terser({ - ecma: 5, - compress: { - passes: 3, - }, - output: { - comments: false - } - }) - ]; -} - - -function minifyComponents(cb) { - pump([src(paths.components), ...minifyJS(), rename({ suffix: '.min' }), dest('components')], cb); -} -function minifyPlugins(cb) { - pump([src(paths.plugins), ...minifyJS(), rename({ suffix: '.min' }), dest('plugins')], cb); -} -function minifyPluginCSS(cb) { - pump([src(paths.pluginsCSS), cleanCSS(), rename({ suffix: '.min' }), dest('plugins')], cb); -} -function minifyThemes(cb) { - pump([src(paths.themes), cleanCSS(), rename({ suffix: '.min' }), dest('themes')], cb); -} -function build(cb) { - pump([src(paths.main), header(` -/* ********************************************** - Begin <%= file.relative %> -********************************************** */ - -`), concat('prism.js'), dest('./')], cb); -} - -async function componentsJsonToJs() { - const data = await componentsPromise; - const js = `var components = ${JSON.stringify(data)}; -if (typeof module !== 'undefined' && module.exports) { module.exports = components; }`; - return util.promisify(fs.writeFile)(paths.componentsFileJS, js); -} - -function watchComponentsAndPlugins() { - watch(paths.components, parallel(minifyComponents, build)); - watch(paths.plugins, parallel(minifyPlugins, build)); -} - -async function languagePlugins() { - const data = await componentsPromise; - /** @type {Record} */ - const languagesMap = {}; - const dependenciesMap = {}; - const aliasMap = {}; - - /** - * Tries to guess the name of a language given its id. - * - * From `prism-show-language.js`. - * - * @param {string} id The language id. - * @returns {string} - */ - function guessTitle(id) { - if (!id) { - return id; - } - return (id.substring(0, 1).toUpperCase() + id.substring(1)).replace(/s(?=cript)/, 'S'); - } - - /** - * @param {string} key - * @param {string} title - */ - function addLanguageTitle(key, title) { - if (!(key in languagesMap)) { - if (guessTitle(key) === title) { - languagesMap[key] = null; - } else { - languagesMap[key] = title; - } - } - } - - for (const id in data.languages) { - if (id !== 'meta') { - const language = data.languages[id]; - const title = language.displayTitle || language.title; - - addLanguageTitle(id, title); - - for (const name in language.aliasTitles) { - addLanguageTitle(name, language.aliasTitles[name]); - } - - if (language.alias) { - if (typeof language.alias === 'string') { - aliasMap[language.alias] = id; - addLanguageTitle(language.alias, title); - } else { - language.alias.forEach(function (alias) { - aliasMap[alias] = id; - addLanguageTitle(alias, title); - }); - } - } - - if (language.require) { - dependenciesMap[id] = language.require; - } - } - } - - function formattedStringify(json) { - return JSON.stringify(json, null, '\t').replace(/\n/g, '\n\t'); - } - - /** @type {Record} */ - const nonNullLanguageMap = { - 'none': 'Plain text', - 'plain': 'Plain text', - 'plaintext': 'Plain text', - 'text': 'Plain text', - 'txt': 'Plain text' - }; - for (const id in languagesMap) { - const title = languagesMap[id]; - if (title) { - nonNullLanguageMap[id] = title; - } - } - - const jsonLanguagesMap = formattedStringify(nonNullLanguageMap); - const jsonDependenciesMap = formattedStringify(dependenciesMap); - const jsonAliasMap = formattedStringify(aliasMap); - - const tasks = [ - { - plugin: paths.showLanguagePlugin, - maps: { languages: jsonLanguagesMap } - }, - { - plugin: paths.autoloaderPlugin, - maps: { aliases: jsonAliasMap, dependencies: jsonDependenciesMap } - } - ]; - - // TODO: Use `Promise.allSettled` (https://github.com/tc39/proposal-promise-allSettled) - const taskResults = await Promise.all(tasks.map(async task => { - try { - const value = await new Promise((resolve, reject) => { - const stream = src(task.plugin) - .pipe(replace( - /\/\*(\w+)_placeholder\[\*\/[\s\S]*?\/\*\]\*\//g, - (m, mapName) => `/*${mapName}_placeholder[*/${task.maps[mapName]}/*]*/` - )) - .pipe(dest(task.plugin.substring(0, task.plugin.lastIndexOf('/')))); - - stream.on('error', reject); - stream.on('end', resolve); - }); - return { status: 'fulfilled', value }; - } catch (error) { - return { status: 'rejected', reason: error }; - } - })); - - const rejectedTasks = taskResults.filter(/** @returns {r is {status: 'rejected', reason: any}} */ r => r.status === 'rejected'); - if (rejectedTasks.length > 0) { - throw rejectedTasks.map(r => r.reason); - } -} - -async function treeviewIconFont() { - // List of all icons - // Add new icons to the end of the list. - const iconList = [ - 'file', 'folder', - 'image', 'audio', 'video', - 'text', 'code', - 'archive', 'pdf', - 'excel', 'powerpoint', 'word' - ]; - const fontName = 'PrismTreeview'; - - // generate the font - const result = await webfont({ - files: iconList.map(n => `plugins/treeview/icons/${n}.svg`), - formats: ['woff'], - fontName, - sort: false - }); - - /** @type {Buffer} */ - const woff = result.woff; - /** - * @type {{ contents: string; srcPath: string; metadata: Metadata }[]} - * @typedef Metadata - * @property {string} path - * @property {string} name - * @property {string[]} unicode - * @property {boolean} renamed - * @property {number} width - * @property {number} height - * */ - const glyphsData = result.glyphsData; - - const fontFace = ` -/* @GENERATED-FONT */ -@font-face { - font-family: "${fontName}"; - /** - * This font is generated from the .svg files in the \`icons\` folder. See the \`treeviewIconFont\` function in - * \`gulpfile.js/index.js\` for more information. - * - * Use the following escape sequences to refer to a specific icon: - * - * - ${glyphsData.map(({ metadata }) => { - const codePoint = metadata.unicode[0].codePointAt(0); - return `\\${codePoint.toString(16)} ${metadata.name}`; - }).join('\n\t * - ')} - */ - src: url("data:application/font-woff;base64,${woff.toString('base64')}") - format("woff"); -} -`.trim(); - - const cssPath = 'plugins/treeview/prism-treeview.css'; - const fontFaceRegex = /\/\*\s*@GENERATED-FONT\s*\*\/\s*@font-face\s*\{(?:[^{}/]|\/(?!\*)|\/\*(?:[^*]|\*(?!\/))*\*\/)*\}/; - - const css = fs.readFileSync(cssPath, 'utf-8'); - fs.writeFileSync(cssPath, css.replace(fontFaceRegex, fontFace), 'utf-8'); -} - -const components = minifyComponents; -const plugins = series(languagePlugins, treeviewIconFont, minifyPlugins, minifyPluginCSS); - -module.exports = { - watch: watchComponentsAndPlugins, - default: series(parallel(components, plugins, minifyThemes, componentsJsonToJs, build), docs), - linkify, - changes -}; diff --git a/gulpfile.js/paths.js b/gulpfile.js/paths.js deleted file mode 100644 index 4f8389d1bc..0000000000 --- a/gulpfile.js/paths.js +++ /dev/null @@ -1,21 +0,0 @@ -'use strict'; - -module.exports = { - componentsFile: 'components.json', - componentsFileJS: 'components.js', - components: ['components/**/*.js', '!components/index.js', '!components/**/*.min.js'], - themes: ['themes/*.css', '!themes/*.min.css'], - main: [ - 'components/prism-core.js', - 'components/prism-markup.js', - 'components/prism-css.js', - 'components/prism-clike.js', - 'components/prism-javascript.js', - 'plugins/file-highlight/prism-file-highlight.js' - ], - plugins: ['plugins/**/*.js', '!plugins/**/*.min.js'], - pluginsCSS: ['plugins/**/*.css', '!plugins/**/*.min.css'], - showLanguagePlugin: 'plugins/show-language/prism-show-language.js', - autoloaderPlugin: 'plugins/autoloader/prism-autoloader.js', - changelog: 'CHANGELOG.md' -}; diff --git a/index.html b/index.html deleted file mode 100644 index 0fbdd77608..0000000000 --- a/index.html +++ /dev/null @@ -1,385 +0,0 @@ - - - - - - - -Prism - - - - - - - - - -
-
- -
    -
  • - Dead simple - Include prism.css and prism.js, use proper HTML5 code tags (code.language-xxxx), done! -
  • -
  • - Intuitive - Language classes are inherited so you can only define the language once for multiple code snippets. -
  • -
  • - Light as a feather - The core is 2KB minified & gzipped. Languages add 0.3-0.5KB each, themes are around 1KB. -
  • -
  • - Blazing fast - Supports parallelism with Web Workers, if available. -
  • -
  • - Extensible - Define new languages or extend existing ones. - Add new features thanks to Prism’s plugin architecture. -
  • -
  • - Easy styling - All styling is done through CSS, with sensible class names like .comment, .string, .property etc -
  • -
- -
- -
-

Used By

- -

Prism is used on several websites, small and large. Some of them are:

- -
- Smashing Magazine - A List Apart - Mozilla Developer Network (MDN) - CSS-Tricks - SitePoint - Drupal - React - Stripe - MySQL -
-
- -
-

Examples

- -

The Prism source, highlighted with Prism (don’t you just love how meta this is?):

-

-
-	

This page’s CSS code, highlighted with Prism:

-

-
-	

This page’s HTML, highlighted with Prism:

-

-
-	

This page’s logo (SVG), highlighted with Prism:

-

-
-	

If you’re still not sold, you can view more examples or try it out for yourself.

-
- -
-

Full list of features

-
    -
  • Only 2KB minified & gzipped (core). Each language definition adds roughly 300-500 bytes.
  • -
  • Encourages good author practices. Other highlighters encourage or even force you to use elements that are semantically wrong, - like <pre> (on its own) or <script>. - Prism forces you to use the correct element for marking up code: <code>. - On its own for inline code, or inside a <pre> for blocks of code. - In addition, the language is defined through the way recommended in the HTML5 draft: through a language-xxxx class.
  • -
  • The language-xxxx class is inherited. - This means that if multiple code snippets have the same language, you can just define it once,in one of their common ancestors.
  • -
  • Supports parallelism with Web Workers, if available. - Disabled by default (why?).
  • -
  • Very easy to extend without modifying the code, due to Prism’s plugin architecture. - Multiple hooks are scattered throughout the source.
  • -
  • Very easy to define new languages. - The only thing you need is a good understanding of regular expressions.
  • -
  • All styling is done through CSS, with sensible class names rather than ugly, namespaced, abbreviated nonsense.
  • -
  • Wide browser support: Edge, IE11, Firefox, Chrome, Safari, Opera, most mobile browsers.
  • -
  • Highlights embedded languages (e.g. CSS inside HTML, JavaScript inside HTML).
  • -
  • Highlights inline code as well, not just code blocks.
  • -
  • It doesn’t force you to use any Prism-specific markup, not even a Prism-specific class name, only standard markup you should be using anyway. - So, you can just try it for a while, remove it if you don’t like it and leave no traces behind.
  • -
  • Highlight specific lines and/or line ranges (requires plugin).
  • -
  • Show invisible characters like tabs, line breaks etc (requires plugin).
  • -
  • Autolink URLs and emails, use Markdown links in comments (requires plugin).
  • -
-
- -
-

Limitations

-
    -
  • Any pre-existing HTML in the code will be stripped off. There are ways around it though.
  • -
  • Regex-based so it *will* fail on certain edge cases, which are documented in the known failures page.
  • -
  • Some of our themes have problems with certain layouts. Known cases are documented here.
  • -
  • No IE 6-10 support. If someone can read code, they are probably in the 95% of the population with a modern browser.
  • -
-
- -
-

Basic usage

- -

You will need to include the prism.css and prism.js files you downloaded in your page. Example: -

<!DOCTYPE html>
-<html>
-<head>
-	...
-	<link href="themes/prism.css" rel="stylesheet" />
-</head>
-<body>
-	...
-	<script src="prism.js"></script>
-</body>
-</html>
- -

Prism does its best to encourage good authoring practices. Therefore, it only works with <code> elements, since marking up code without a <code> element is semantically invalid. - According to the HTML5 spec, the recommended way to define a code language is a language-xxxx class, which is what Prism uses. - Alternatively, Prism also supports a shorter version: lang-xxxx.

- -

The recommended way to mark up a code block - (both for semantics and for Prism) is a <pre> element with a <code> element inside, like so:

- -
<pre><code class="language-css">p { color: red }</code></pre>
- -

If you use that pattern, the <pre> will automatically get the language-xxxx class (if it doesn’t already have it) and will be styled as a code block.

- -

Inline code snippets are done like this:

- -
<code class="language-css">p { color: red }</code>
- -

Note: You have to escape all < and & characters inside <code> elements (code blocks and inline snippets) with &lt; and &amp; respectively, or else the browser might interpret them as an HTML tag or entity. If you have large portions of HTML code, you can use the Unescaped Markup plugin to work around this.

- -

Language inheritance

- -

To make things easier however, Prism assumes that the language class is inherited. Therefore, if multiple <code> elements have the same language, you can add the language-xxxx class on one of their common ancestors. - This way, you can also define a document-wide default language, by adding a language-xxxx class on the <body> or <html> element.

- -

If you want to opt-out of highlighting a <code> element that inherits its language, you can add the language-none class to it. The none language can also be inherited to disable highlighting for the element with the class and all of its descendants.

- -

If you want to opt-out of highlighting but still use plugins like Show Invisibles, add use language-plain class instead.

- -

Manual highlighting

- -

If you want to prevent any elements from being automatically highlighted and instead use the API, you can set Prism.manual to true before the DOMContentLoaded event is fired. By setting the data-manual attribute on the <script> element containing Prism core, this will be done automatically. - Example:

- -
<script src="prism.js" data-manual></script>
- -

or

- -
<script>
-window.Prism = window.Prism || {};
-window.Prism.manual = true;
-</script>
-<script src="prism.js"></script>
- -

Usage with CDNs

- -

In combination with CDNs, we recommend using the Autoloader plugin which automatically loads languages when necessary.

- -

The setup of the Autoloader, will look like the following. You can also add your own themes of course.

- -
<!DOCTYPE html>
-<html>
-<head>
-	...
-	<link href="https://{{cdn}}/prismjs@v1.x/themes/prism.css" rel="stylesheet" />
-</head>
-<body>
-	...
-	<script src="https://{{cdn}}/prismjs@v1.x/components/prism-core.min.js"></script>
-	<script src="https://{{cdn}}/prismjs@v1.x/plugins/autoloader/prism-autoloader.min.js"></script>
-</body>
-</html>
- -

Please note that links in the above code sample serve as placeholders. You have to replace them with valid links to the CDN of your choice.

- -

CDNs which provide PrismJS are e.g. cdnjs, jsDelivr, and UNPKG.

- -

Usage with Webpack, Browserify, & Other Bundlers

- -

If you want to use Prism with a bundler, install Prism with npm:

- -
$ npm install prismjs
- -

You can then import into your bundle:

- -
import Prism from 'prismjs';
- -

To make it easy to configure your Prism instance with only the languages and plugins you need, use the babel plugin, - babel-plugin-prismjs. This will allow you to load - the minimum number of languages and plugins to satisfy your needs. - See that plugin's documentation for configuration details.

- -

Usage with Node

- -

If you want to use Prism on the server or through the command line, Prism can be used with Node.js as well. - This might be useful if you're trying to generate static HTML pages with highlighted code for environments that don't support browser-side JS, like AMP pages.

- -

Example:

-
const Prism = require('prismjs');
-
-// The code snippet you want to highlight, as a string
-const code = `var data = 1;`;
-
-// Returns a highlighted HTML string
-const html = Prism.highlight(code, Prism.languages.javascript, 'javascript');
- -

Requiring prismjs will load the default languages: markup, css, - clike and javascript. You can load more languages with the - loadLanguages() utility, which will automatically handle any required dependencies.

-

Example:

- -
const Prism = require('prismjs');
-const loadLanguages = require('prismjs/components/');
-loadLanguages(['haml']);
-
-// The code snippet you want to highlight, as a string
-const code = `= ['hi', 'there', 'reader!'].join " "`;
-
-// Returns a highlighted HTML string
-const html = Prism.highlight(code, Prism.languages.haml, 'haml');
- -

Note: Do not use loadLanguages() with Webpack or another bundler, as this will cause Webpack to include all languages and plugins. Use the babel plugin described above.

- -

Note: loadLanguages() will ignore unknown languages and log warning messages to the console. You can prevent the warnings by setting loadLanguages.silent = true.

- -
- -
-

Supported languages

-

This is the list of all languages currently supported by Prism, with - their corresponding alias, to use in place of xxxx in the language-xxxx (or lang-xxxx) class:

-
-

Couldn’t find the language you were looking for? Request it!

-
- -
-

Plugins

-

Plugins are additional scripts (and CSS code) that extend Prism’s functionality. Many of the following plugins are official, but are released as plugins to keep the Prism Core small for those who don’t need the extra functionality.

-
    - -

    No assembly required to use them. Just select them in the download page.

    -

    It’s very easy to write your own Prism plugins. Did you write a plugin for Prism that you want added to this list? Send a pull request!

    -
    - -
    -

    Third-party language definitions

    - - -
    - -
    -

    Third-party tutorials

    - -

    Several tutorials have been written by members of the community to help you integrate Prism into multiple different website types and configurations:

    - - - -

    Please note that the tutorials listed here are not verified to contain correct information. Read at your risk and always check the official documentation here if something doesn’t work :)

    - -

    Have you written a tutorial about Prism that’s not already included here? Send a pull request!

    -
    - -
    -

    Credits

    - -
    - -
    - - - - - - - - - - diff --git a/known-failures.html b/known-failures.html deleted file mode 100644 index fb4a53802d..0000000000 --- a/known-failures.html +++ /dev/null @@ -1,409 +0,0 @@ - - - - - - -Known failures ▲ Prism - - - - - - - - - - -
    -
    - -

    Known failures

    -

    A list of rare edge cases where Prism highlights code incorrectly.

    -
    - -
    -

    There are certain edge cases where Prism will fail. There are always such cases in every regex-based syntax highlighter.
    - However, Prism dares to be open and honest about them. If a failure is listed here, it doesn’t mean it will never be fixed. This is more of a “known bugs” list, just with a certain type of bug.

    -
    - - -
    - -

    Comments only support one level of nesting

    -
    (* Nested block
    -	(* comments
    -		(* on more than
    -		2 levels *)
    -	are *)
    -not supported *)
    - -
    - - -
    - -

    Nested block comments

    -
    #cs
    -	#cs
    -		foo()
    -	#ce
    -#ce
    - -
    - - -
    - -

    Two levels of nesting inside C section

    -
    {
    -	if($1) {
    -		if($2) {
    -
    -		}
    -	}
    -} // <- Broken
    -%%
    -%%
    - -
    - - -
    - -

    Comments only support one level of nesting

    -
    /+ /+ /+ this does not work +/ +/ +/
    - -

    Token strings only support one level of nesting

    -
    q{ q{ q{ this does not work } } }
    - -
    - - -
    - -

    String interpolation in single-quoted strings

    -
    '#{:atom} <- this should not be highligted'
    - -
    - - -
    - -

    Two divisions on the same line

    -
    2 / 3 / 4
    - -
    - - -
    - -

    Names starting with a number

    -
    The box 1A is a container
    - -
    - - -
    - -

    String interpolation containing a closing brace

    -
    `${ /* } */ a + b }`
    -`${ '}' }`
    - -

    String interpolation with deeply nested braces

    -
    `${foo({ a: { b: { c: true } } })}`
    - -
    - - -
    - -

    At-rules looking like variables

    -
    @import "some file.less";
    - -

    At-rules containing interpolation

    -
    @import "@{themes}/tidal-wave.less";
    - -

    extend is not highlighted consistently

    -
    nav ul {
    -  &:extend(.inline);
    -  background: blue;
    -}
    -.a:extend(.b) {}
    - -
    - - -
    - -

    Functions with a single string parameter not using parentheses are not highlighted

    -
    foobar"param";
    - -
    - - -
    - -

    Numbers with underscores

    -
    mov     ax,1100_1000b
    -mov     ax,1100_1000y
    -mov     ax,0b1100_1000
    -mov     ax,0y1100_1000
    -
    -dd    1.222_222_222
    - -
    - - -
    - -

    Code block starting with a comment

    -
    # Doesn't work
    -# Does work
    -
     # Does work when prefixed with a space
    - -

    Comments inside expressions break literals and operators

    -
    ^if(
    -    $age>=4  # not too young
    -    && $age<=80  # and not too old
    -)
    - -
    - - -
    - -

    Null-ary predicates are not highlighted

    -
    halt.
    -trace.
    -
    -:- if(test1).
    -section_1.
    -:- elif(test2).
    -section_2.
    -:- elif(test3).
    -section_3.
    -:- else.
    -section_else.
    -:- endif.
    - -
    - - -
    - -

    More than one level of nested braces inside interpolation

    -
    "Foobar ${foo({
    -    bar => {baz => 42}
    -    baz => 42
    -})} <- broken"
    - -
    - - -
    - -

    Interpolation expressions containing strings with { or }

    -
    f"{'}'}"
    - -
    - - -
    - -

    The global context is highlighted as a verb

    -
    \d .
    - -
    - - -
    - -

    Nothing is highlighted inside table cells

    -
    +---------------+----------+
    -| column 1     | column 2  |
    -+--------------+-----------+
    -| **bold**?    | *italic*? |
    -+--------------+-----------+
    - -

    The inline markup recognition rules are not as strict as they are in the spec

    -

    No inline markup should be highlighted in the following code.

    -
    2 * x a ** b (* BOM32_* ` `` _ __ |
    -"*" '|' (*) [*] {*} <*> ‘*’ ‚*‘ ‘*‚ ’*’ ‚*’ “*” „*“ “*„ ”*” „*” »*« ›*‹ «*» »*» ›*›
    - -
    - - -
    - -

    Nested block comments

    -
    /* Nested block
    -	/* comments
    -	are */
    -not supported */
    - -

    Delimiters of parameters for closures that don't use braces

    -
    |x| x + 1i;
    - -
    - - -
    - -

    Deprecated Sass syntax is not supported

    -
    .page
    -  color = 5px + 9px
    -
    -!width = 13px
    -.icon
    -  width = !width
    - -

    Selectors with pseudo classes are highlighted as property/value pairs

    -
    a:hover
    -  text-decoration: underline
    - -
    - - -
    - -

    Nested block comments

    -
    /* Nested block
    -	/* comments
    -	are */
    -not supported */
    - -
    - - -
    - -

    The first argument of case-lambda argument lists are highlighted as functions

    -
    (define plus
    -	(case-lambda
    -		(() 0)
    -		((x) x)
    -		((x y) (+ x y))
    -		((x y z) (+ (+ x y) z))
    -		(args (apply + args))))
    - -
    - - -
    - -

    Nested block comments

    -
    /* Nested block
    -	/* comments
    -	are */
    -not supported */
    - -
    - - -
    - -

    HTML inside Textile is not supported

    - -

    But Textile inside HTML should be just fine.

    - -
    <strong>This _should_ work properly.</strong>
    -*But this is <em>definitely</em> broken.*
    - -
    - - -
    - -

    Tag containing Twig is not highlighted

    -
    <div{% if foo %} class="bar"{% endif %}></div>
    - -
    - - -
    - -

    Nested magic words are not supported

    - -
    {{#switch:{{PAGENAME}}
    -| L'Aquila = No translation
    -| L = Not OK
    -| L'Aquila = Entity escaping
    -| L'Aquila = Numeric char encoding
    -}}
    - -

    Nesting of bold and italic is not supported

    -
    ''Italic with '''bold''' inside''
    - -
    - - -
    - -

    Themes

    - -

    Some of our themes are not compatible with certain layouts.

    - -

    Coy

    - -

    Coy's shadows and background might not wrap around the code correctly if combined with float of flexbox layouts.

    - - - -

    Workarounds

    - -

    There are 2 possible workarounds:

    - -

    The first workaround is setting display: flex-root; for the pre element. This will fix the issue but flex-root has limited browser support.

    - -

    The second is adding clear: both; to the style of the pre element. This will fix the issue but it will change the way code blocks behave when overlapping with other elements.

    - -
    - - -
    - - - - - - - - - - diff --git a/package-lock.json b/package-lock.json index d14226123c..1ec9750087 100644 --- a/package-lock.json +++ b/package-lock.json @@ -1,7 +1,7 @@ { "name": "prismjs", "version": "1.29.0", - "lockfileVersion": 2, + "lockfileVersion": 3, "requires": true, "packages": { "": { @@ -9,2922 +9,3384 @@ "version": "1.29.0", "license": "MIT", "devDependencies": { - "@types/node-fetch": "^2.5.5", + "@eslint/js": "^9.24.0", + "@ianvs/prettier-plugin-sort-imports": "^4.4.1", + "@prettier/sync": "^0.5.2", + "@rollup/plugin-commonjs": "^28.0.3", + "@rollup/plugin-terser": "^0.4.4", + "@types/benchmark": "^2.1.2", + "@types/chai": "^5.2.1", + "@types/clean-css": "^4.2.11", + "@types/jsdom": "^21.1.7", + "@types/mocha": "^10.0.10", + "@types/node": "^22.15.2", + "@types/yargs": "^17.0.33", "benchmark": "^2.1.4", - "chai": "^4.2.0", - "danger": "^10.5.0", - "del": "^4.1.1", - "docdash": "^1.2.0", - "eslint": "^7.22.0", - "eslint-plugin-jsdoc": "^32.3.0", - "eslint-plugin-regexp": "^1.6.0", - "gulp": "^4.0.2", - "gulp-clean-css": "^4.3.0", - "gulp-concat": "^2.3.4", - "gulp-header": "^2.0.7", - "gulp-jsdoc3": "^3.0.0", - "gulp-rename": "^1.2.0", - "gulp-replace": "^1.0.0", - "gulp-terser": "^2.1.0", - "gzip-size": "^5.1.1", - "htmlparser2": "^4.0.0", - "http-server": "^0.12.3", - "jsdom": "^16.7.0", - "mocha": "^9.2.2", - "node-fetch": "^3.1.1", + "chai": "^5.2.0", + "clean-css": "^5.3.3", + "cross-fetch": "^4.1.0", + "danger": "^13.0.4", + "eslint": "^9.24.0", + "eslint-config-prettier": "^10.1.2", + "eslint-plugin-eslint-comments": "^3.2.0", + "eslint-plugin-jsdoc": "^50.6.9", + "eslint-plugin-regexp": "^2.7.0", + "globals": "^16.0.0", + "gzip-size": "^7.0.0", + "htmlparser2": "^10.0.0", + "jsdom": "^24.1.3", + "magic-string": "^0.30.17", + "mocha": "^10.8.2", + "mocha-chai-jest-snapshot": "^1.1.6", "npm-run-all": "^4.1.5", - "prettier": "^2.4.1", - "pump": "^3.0.0", + "prettier": "^3.5.3", + "prettier-plugin-brace-style": "^0.7.3", + "prettier-plugin-merge": "^0.7.4", + "prettier-plugin-space-before-function-paren": "^0.0.8", "refa": "^0.9.1", - "regexp-ast-analysis": "^0.2.4", + "regexp-ast-analysis": "^0.5.1", "regexpp": "^3.2.0", - "scslre": "^0.1.6", - "simple-git": "^3.3.0", - "webfont": "^9.0.0", - "yargs": "^13.2.2" + "rollup": "^4.40.0", + "scslre": "^0.3.0", + "simple-git": "^3.27.0", + "typescript": "^5.8.3", + "webfont": "^11.2.26", + "yargs": "^17.7.2" }, "engines": { - "node": ">=6" + "node": ">=18" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/prismjs" } }, - "node_modules/@babel/code-frame": { - "version": "7.12.11", - "resolved": "https://registry.npmjs.org/@babel/code-frame/-/code-frame-7.12.11.tgz", - "integrity": "sha512-Zt1yodBx1UcyiePMSkWnU4hPqhwq7hGi2nFL1LeA3EUl+q2LQx16MISgJ0+z7dnmgvP9QtIleuETGOiOH1RcIw==", + "node_modules/@ampproject/remapping": { + "version": "2.3.0", + "resolved": "https://registry.npmjs.org/@ampproject/remapping/-/remapping-2.3.0.tgz", + "integrity": "sha512-30iZtAPgz+LTIYoeivqYo853f02jBYSd5uGnGpkFV0M3xOt9aN73erkgYAmZU43x4VfqcnLxW9Kpg3R5LC4YYw==", "dev": true, + "license": "Apache-2.0", "dependencies": { - "@babel/highlight": "^7.10.4" + "@jridgewell/gen-mapping": "^0.3.5", + "@jridgewell/trace-mapping": "^0.3.24" + }, + "engines": { + "node": ">=6.0.0" } }, - "node_modules/@babel/helper-validator-identifier": { - "version": "7.12.11", - "resolved": "https://registry.npmjs.org/@babel/helper-validator-identifier/-/helper-validator-identifier-7.12.11.tgz", - "integrity": "sha512-np/lG3uARFybkoHokJUmf1QfEvRVCPbmQeUQpKow5cQ3xWrV9i3rUHodKDJPQfTVX61qKi+UdYk8kik84n7XOw==", - "dev": true - }, - "node_modules/@babel/highlight": { - "version": "7.13.10", - "resolved": "https://registry.npmjs.org/@babel/highlight/-/highlight-7.13.10.tgz", - "integrity": "sha512-5aPpe5XQPzflQrFwL1/QoeHkP2MsA4JCntcXHRhEsdsfPVkvPi2w7Qix4iV7t5S/oC9OodGrggd8aco1g3SZFg==", + "node_modules/@asamuzakjp/css-color": { + "version": "3.1.4", + "resolved": "https://registry.npmjs.org/@asamuzakjp/css-color/-/css-color-3.1.4.tgz", + "integrity": "sha512-SeuBV4rnjpFNjI8HSgKUwteuFdkHwkboq31HWzznuqgySQir+jSTczoWVVL4jvOjKjuH80fMDG0Fvg1Sb+OJsA==", "dev": true, + "license": "MIT", "dependencies": { - "@babel/helper-validator-identifier": "^7.12.11", - "chalk": "^2.0.0", - "js-tokens": "^4.0.0" + "@csstools/css-calc": "^2.1.3", + "@csstools/css-color-parser": "^3.0.9", + "@csstools/css-parser-algorithms": "^3.0.4", + "@csstools/css-tokenizer": "^3.0.3", + "lru-cache": "^10.4.3" } }, - "node_modules/@babel/parser": { - "version": "7.10.3", - "resolved": "https://registry.npmjs.org/@babel/parser/-/parser-7.10.3.tgz", - "integrity": "sha512-oJtNJCMFdIMwXGmx+KxuaD7i3b8uS7TTFYW/FNG2BT8m+fmGHoiPYoH0Pe3gya07WuFmM5FCDIr1x0irkD/hyA==", + "node_modules/@babel/code-frame": { + "version": "7.26.2", + "resolved": "https://registry.npmjs.org/@babel/code-frame/-/code-frame-7.26.2.tgz", + "integrity": "sha512-RJlIHRueQgwWitWgF8OdFYGZX328Ax5BCemNGlqHfplnRT9ESi8JkFlvaVYbS+UubVY6dpv87Fs2u5M29iNFVQ==", "dev": true, - "bin": { - "parser": "bin/babel-parser.js" + "license": "MIT", + "dependencies": { + "@babel/helper-validator-identifier": "^7.25.9", + "js-tokens": "^4.0.0", + "picocolors": "^1.0.0" }, "engines": { - "node": ">=6.0.0" + "node": ">=6.9.0" } }, - "node_modules/@babel/polyfill": { - "version": "7.12.1", - "resolved": "https://registry.npmjs.org/@babel/polyfill/-/polyfill-7.12.1.tgz", - "integrity": "sha512-X0pi0V6gxLi6lFZpGmeNa4zxtwEmCs42isWLNjZZDE0Y8yVfgu0T2OAHlzBbdYlqbW/YXVvoBHpATEM+goCj8g==", - "deprecated": "🚨 This package has been deprecated in favor of separate inclusion of a polyfill and regenerator-runtime (when needed). See the @babel/polyfill docs (https://babeljs.io/docs/en/babel-polyfill) for more information.", + "node_modules/@babel/compat-data": { + "version": "7.26.8", + "resolved": "https://registry.npmjs.org/@babel/compat-data/-/compat-data-7.26.8.tgz", + "integrity": "sha512-oH5UPLMWR3L2wEFLnFJ1TZXqHufiTKAiLfqw5zkhS4dKXLJ10yVztfil/twG8EDTA4F/tvVNw9nOl4ZMslB8rQ==", "dev": true, - "dependencies": { - "core-js": "^2.6.5", - "regenerator-runtime": "^0.13.4" + "license": "MIT", + "engines": { + "node": ">=6.9.0" } }, - "node_modules/@eslint/eslintrc": { - "version": "0.4.0", - "resolved": "https://registry.npmjs.org/@eslint/eslintrc/-/eslintrc-0.4.0.tgz", - "integrity": "sha512-2ZPCc+uNbjV5ERJr+aKSPRwZgKd2z11x0EgLvb1PURmUrn9QNRXFqje0Ldq454PfAVyaJYyrDvvIKSFP4NnBog==", + "node_modules/@babel/core": { + "version": "7.26.10", + "resolved": "https://registry.npmjs.org/@babel/core/-/core-7.26.10.tgz", + "integrity": "sha512-vMqyb7XCDMPvJFFOaT9kxtiRh42GwlZEg1/uIgtZshS5a/8OaduUfCi7kynKgc3Tw/6Uo2D+db9qBttghhmxwQ==", "dev": true, + "license": "MIT", "dependencies": { - "ajv": "^6.12.4", - "debug": "^4.1.1", - "espree": "^7.3.0", - "globals": "^12.1.0", - "ignore": "^4.0.6", - "import-fresh": "^3.2.1", - "js-yaml": "^3.13.1", - "minimatch": "^3.0.4", - "strip-json-comments": "^3.1.1" + "@ampproject/remapping": "^2.2.0", + "@babel/code-frame": "^7.26.2", + "@babel/generator": "^7.26.10", + "@babel/helper-compilation-targets": "^7.26.5", + "@babel/helper-module-transforms": "^7.26.0", + "@babel/helpers": "^7.26.10", + "@babel/parser": "^7.26.10", + "@babel/template": "^7.26.9", + "@babel/traverse": "^7.26.10", + "@babel/types": "^7.26.10", + "convert-source-map": "^2.0.0", + "debug": "^4.1.0", + "gensync": "^1.0.0-beta.2", + "json5": "^2.2.3", + "semver": "^6.3.1" + }, + "engines": { + "node": ">=6.9.0" }, - "engines": { - "node": "^10.12.0 || >=12.0.0" + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/babel" } }, - "node_modules/@eslint/eslintrc/node_modules/debug": { - "version": "4.3.1", - "resolved": "https://registry.npmjs.org/debug/-/debug-4.3.1.tgz", - "integrity": "sha512-doEwdvm4PCeK4K3RQN2ZC2BYUBaxwLARCqZmMjtF8a51J2Rb0xpVloFRnCODwqjpwnAoao4pelN8l3RJdv3gRQ==", + "node_modules/@babel/core/node_modules/semver": { + "version": "6.3.1", + "resolved": "https://registry.npmjs.org/semver/-/semver-6.3.1.tgz", + "integrity": "sha512-BR7VvDCVHO+q2xBEWskxS6DJE1qRnb7DxzUrogb71CWoSficBxYsiAGd+Kl0mmq/MprG9yArRkyrQxTO6XjMzA==", "dev": true, - "dependencies": { - "ms": "2.1.2" - }, - "engines": { - "node": ">=6.0" - }, - "peerDependenciesMeta": { - "supports-color": { - "optional": true - } + "license": "ISC", + "bin": { + "semver": "bin/semver.js" } }, - "node_modules/@eslint/eslintrc/node_modules/globals": { - "version": "12.4.0", - "resolved": "https://registry.npmjs.org/globals/-/globals-12.4.0.tgz", - "integrity": "sha512-BWICuzzDvDoH54NHKCseDanAhE3CeDorgDL5MT6LMXXj2WCnd9UC2szdk4AWLfjdgNBCXLUanXYcpBBKOSWGwg==", + "node_modules/@babel/generator": { + "version": "7.27.0", + "resolved": "https://registry.npmjs.org/@babel/generator/-/generator-7.27.0.tgz", + "integrity": "sha512-VybsKvpiN1gU1sdMZIp7FcqphVVKEwcuj02x73uvcHE0PTihx1nlBcowYWhDwjpoAXRv43+gDzyggGnn1XZhVw==", "dev": true, + "license": "MIT", "dependencies": { - "type-fest": "^0.8.1" + "@babel/parser": "^7.27.0", + "@babel/types": "^7.27.0", + "@jridgewell/gen-mapping": "^0.3.5", + "@jridgewell/trace-mapping": "^0.3.25", + "jsesc": "^3.0.2" }, "engines": { - "node": ">=8" - }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" + "node": ">=6.9.0" } }, - "node_modules/@eslint/eslintrc/node_modules/import-fresh": { - "version": "3.3.0", - "resolved": "https://registry.npmjs.org/import-fresh/-/import-fresh-3.3.0.tgz", - "integrity": "sha512-veYYhQa+D1QBKznvhUHxb8faxlrwUnxseDAbAp457E0wLNio2bOSKnjYDhMj+YiAq61xrMGhQk9iXVk5FzgQMw==", + "node_modules/@babel/helper-compilation-targets": { + "version": "7.27.0", + "resolved": "https://registry.npmjs.org/@babel/helper-compilation-targets/-/helper-compilation-targets-7.27.0.tgz", + "integrity": "sha512-LVk7fbXml0H2xH34dFzKQ7TDZ2G4/rVTOrq9V+icbbadjbVxxeFeDsNHv2SrZeWoA+6ZiTyWYWtScEIW07EAcA==", "dev": true, + "license": "MIT", "dependencies": { - "parent-module": "^1.0.0", - "resolve-from": "^4.0.0" + "@babel/compat-data": "^7.26.8", + "@babel/helper-validator-option": "^7.25.9", + "browserslist": "^4.24.0", + "lru-cache": "^5.1.1", + "semver": "^6.3.1" }, "engines": { - "node": ">=6" - }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" + "node": ">=6.9.0" } }, - "node_modules/@eslint/eslintrc/node_modules/ms": { - "version": "2.1.2", - "resolved": "https://registry.npmjs.org/ms/-/ms-2.1.2.tgz", - "integrity": "sha512-sGkPx+VjMtmA6MX27oA4FBFELFCZZ4S4XqeGOXCv68tT+jb3vk/RyaKWP0PTKyWtmLSM0b+adUTEvbs1PEaH2w==", - "dev": true + "node_modules/@babel/helper-compilation-targets/node_modules/lru-cache": { + "version": "5.1.1", + "resolved": "https://registry.npmjs.org/lru-cache/-/lru-cache-5.1.1.tgz", + "integrity": "sha512-KpNARQA3Iwv+jTA0utUVVbrh+Jlrr1Fv0e56GGzAFOXN7dk/FviaDW8LHmK52DlcH4WP2n6gI8vN1aesBFgo9w==", + "dev": true, + "license": "ISC", + "dependencies": { + "yallist": "^3.0.2" + } }, - "node_modules/@eslint/eslintrc/node_modules/resolve-from": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/resolve-from/-/resolve-from-4.0.0.tgz", - "integrity": "sha512-pb/MYmXstAkysRFx8piNI1tGFNQIFA3vkE3Gq4EuA1dF6gHp/+vgZqsCGJapvy8N3Q+4o7FwvquPJcnZ7RYy4g==", + "node_modules/@babel/helper-compilation-targets/node_modules/semver": { + "version": "6.3.1", + "resolved": "https://registry.npmjs.org/semver/-/semver-6.3.1.tgz", + "integrity": "sha512-BR7VvDCVHO+q2xBEWskxS6DJE1qRnb7DxzUrogb71CWoSficBxYsiAGd+Kl0mmq/MprG9yArRkyrQxTO6XjMzA==", "dev": true, - "engines": { - "node": ">=4" + "license": "ISC", + "bin": { + "semver": "bin/semver.js" } }, - "node_modules/@jridgewell/gen-mapping": { - "version": "0.3.2", - "resolved": "https://registry.npmjs.org/@jridgewell/gen-mapping/-/gen-mapping-0.3.2.tgz", - "integrity": "sha512-mh65xKQAzI6iBcFzwv28KVWSmCkdRBWoOh+bYQGW3+6OZvbbN3TqMGo5hqYxQniRcH9F2VZIoJCm4pa3BPDK/A==", + "node_modules/@babel/helper-module-imports": { + "version": "7.25.9", + "resolved": "https://registry.npmjs.org/@babel/helper-module-imports/-/helper-module-imports-7.25.9.tgz", + "integrity": "sha512-tnUA4RsrmflIM6W6RFTLFSXITtl0wKjgpnLgXyowocVPrbYrLUXSBXDgTs8BlbmIzIdlBySRQjINYs2BAkiLtw==", "dev": true, + "license": "MIT", "dependencies": { - "@jridgewell/set-array": "^1.0.1", - "@jridgewell/sourcemap-codec": "^1.4.10", - "@jridgewell/trace-mapping": "^0.3.9" + "@babel/traverse": "^7.25.9", + "@babel/types": "^7.25.9" }, "engines": { - "node": ">=6.0.0" + "node": ">=6.9.0" } }, - "node_modules/@jridgewell/resolve-uri": { - "version": "3.1.0", - "resolved": "https://registry.npmjs.org/@jridgewell/resolve-uri/-/resolve-uri-3.1.0.tgz", - "integrity": "sha512-F2msla3tad+Mfht5cJq7LSXcdudKTWCVYUgw6pLFOOHSTtZlj6SWNYAp+AhuqLmWdBO2X5hPrLcu8cVP8fy28w==", + "node_modules/@babel/helper-module-transforms": { + "version": "7.26.0", + "resolved": "https://registry.npmjs.org/@babel/helper-module-transforms/-/helper-module-transforms-7.26.0.tgz", + "integrity": "sha512-xO+xu6B5K2czEnQye6BHA7DolFFmS3LB7stHZFaOLb1pAwO1HWLS8fXA+eh0A2yIvltPVmx3eNNDBJA2SLHXFw==", "dev": true, + "license": "MIT", + "dependencies": { + "@babel/helper-module-imports": "^7.25.9", + "@babel/helper-validator-identifier": "^7.25.9", + "@babel/traverse": "^7.25.9" + }, "engines": { - "node": ">=6.0.0" + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0" } }, - "node_modules/@jridgewell/set-array": { - "version": "1.1.2", - "resolved": "https://registry.npmjs.org/@jridgewell/set-array/-/set-array-1.1.2.tgz", - "integrity": "sha512-xnkseuNADM0gt2bs+BvhO0p78Mk762YnZdsuzFV018NoG1Sj1SCQvpSqa7XUaTam5vAGasABV9qXASMKnFMwMw==", + "node_modules/@babel/helper-plugin-utils": { + "version": "7.26.5", + "resolved": "https://registry.npmjs.org/@babel/helper-plugin-utils/-/helper-plugin-utils-7.26.5.tgz", + "integrity": "sha512-RS+jZcRdZdRFzMyr+wcsaqOmld1/EqTghfaBGQQd/WnRdzdlvSZ//kF7U8VQTxf1ynZ4cjUcYgjVGx13ewNPMg==", "dev": true, + "license": "MIT", "engines": { - "node": ">=6.0.0" + "node": ">=6.9.0" } }, - "node_modules/@jridgewell/source-map": { - "version": "0.3.2", - "resolved": "https://registry.npmjs.org/@jridgewell/source-map/-/source-map-0.3.2.tgz", - "integrity": "sha512-m7O9o2uR8k2ObDysZYzdfhb08VuEml5oWGiosa1VdaPZ/A6QyPkAJuwN0Q1lhULOf6B7MtQmHENS743hWtCrgw==", + "node_modules/@babel/helper-string-parser": { + "version": "7.25.9", + "resolved": "https://registry.npmjs.org/@babel/helper-string-parser/-/helper-string-parser-7.25.9.tgz", + "integrity": "sha512-4A/SCr/2KLd5jrtOMFzaKjVtAei3+2r/NChoBNoZ3EyP/+GlhoaEGoWOZUmFmoITP7zOJyHIMm+DYRd8o3PvHA==", "dev": true, - "dependencies": { - "@jridgewell/gen-mapping": "^0.3.0", - "@jridgewell/trace-mapping": "^0.3.9" + "license": "MIT", + "engines": { + "node": ">=6.9.0" } }, - "node_modules/@jridgewell/sourcemap-codec": { - "version": "1.4.14", - "resolved": "https://registry.npmjs.org/@jridgewell/sourcemap-codec/-/sourcemap-codec-1.4.14.tgz", - "integrity": "sha512-XPSJHWmi394fuUuzDnGz1wiKqWfo1yXecHQMRf2l6hztTO+nPru658AyDngaBe7isIxEkRsPR3FZh+s7iVa4Uw==", - "dev": true - }, - "node_modules/@jridgewell/trace-mapping": { - "version": "0.3.14", - "resolved": "https://registry.npmjs.org/@jridgewell/trace-mapping/-/trace-mapping-0.3.14.tgz", - "integrity": "sha512-bJWEfQ9lPTvm3SneWwRFVLzrh6nhjwqw7TUFFBEMzwvg7t7PCDenf2lDwqo4NQXzdpgBXyFgDWnQA+2vkruksQ==", + "node_modules/@babel/helper-validator-identifier": { + "version": "7.25.9", + "resolved": "https://registry.npmjs.org/@babel/helper-validator-identifier/-/helper-validator-identifier-7.25.9.tgz", + "integrity": "sha512-Ed61U6XJc3CVRfkERJWDz4dJwKe7iLmmJsbOGu9wSloNSFttHV0I8g6UAgb7qnK5ly5bGLPd4oXZlxCdANBOWQ==", "dev": true, - "dependencies": { - "@jridgewell/resolve-uri": "^3.0.3", - "@jridgewell/sourcemap-codec": "^1.4.10" + "license": "MIT", + "engines": { + "node": ">=6.9.0" } }, - "node_modules/@kwsites/file-exists": { - "version": "1.1.1", - "resolved": "https://registry.npmjs.org/@kwsites/file-exists/-/file-exists-1.1.1.tgz", - "integrity": "sha512-m9/5YGR18lIwxSFDwfE3oA7bWuq9kdau6ugN4H2rJeyhFQZcG9AgSHkQtSD15a8WvTgfz9aikZMrKPHvbpqFiw==", + "node_modules/@babel/helper-validator-option": { + "version": "7.25.9", + "resolved": "https://registry.npmjs.org/@babel/helper-validator-option/-/helper-validator-option-7.25.9.tgz", + "integrity": "sha512-e/zv1co8pp55dNdEcCynfj9X7nyUKUXoUEwfXqaZt0omVOmDe9oOTdKStH4GmAw6zxMFs50ZayuMfHDKlO7Tfw==", "dev": true, - "dependencies": { - "debug": "^4.1.1" + "license": "MIT", + "engines": { + "node": ">=6.9.0" } }, - "node_modules/@kwsites/file-exists/node_modules/debug": { - "version": "4.3.4", - "resolved": "https://registry.npmjs.org/debug/-/debug-4.3.4.tgz", - "integrity": "sha512-PRWFHuSU3eDtQJPvnNY7Jcket1j0t5OuOsFzPPzsekD52Zl8qUfFIPEiswXqIvHWGVHOgX+7G/vCNNhehwxfkQ==", + "node_modules/@babel/helpers": { + "version": "7.27.0", + "resolved": "https://registry.npmjs.org/@babel/helpers/-/helpers-7.27.0.tgz", + "integrity": "sha512-U5eyP/CTFPuNE3qk+WZMxFkp/4zUzdceQlfzf7DdGdhp+Fezd7HD+i8Y24ZuTMKX3wQBld449jijbGq6OdGNQg==", "dev": true, + "license": "MIT", "dependencies": { - "ms": "2.1.2" + "@babel/template": "^7.27.0", + "@babel/types": "^7.27.0" }, "engines": { - "node": ">=6.0" - }, - "peerDependenciesMeta": { - "supports-color": { - "optional": true - } + "node": ">=6.9.0" } }, - "node_modules/@kwsites/file-exists/node_modules/ms": { - "version": "2.1.2", - "resolved": "https://registry.npmjs.org/ms/-/ms-2.1.2.tgz", - "integrity": "sha512-sGkPx+VjMtmA6MX27oA4FBFELFCZZ4S4XqeGOXCv68tT+jb3vk/RyaKWP0PTKyWtmLSM0b+adUTEvbs1PEaH2w==", - "dev": true - }, - "node_modules/@kwsites/promise-deferred": { - "version": "1.1.1", - "resolved": "https://registry.npmjs.org/@kwsites/promise-deferred/-/promise-deferred-1.1.1.tgz", - "integrity": "sha512-GaHYm+c0O9MjZRu0ongGBRbinu8gVAMd2UZjji6jVmqKtZluZnptXGWhz1E8j8D2HJ3f/yMxKAUC0b+57wncIw==", - "dev": true - }, - "node_modules/@mrmlnc/readdir-enhanced": { - "version": "2.2.1", - "resolved": "https://registry.npmjs.org/@mrmlnc/readdir-enhanced/-/readdir-enhanced-2.2.1.tgz", - "integrity": "sha512-bPHp6Ji8b41szTOcaP63VlnbbO5Ny6dwAATtY6JTjh5N2OLrb5Qk/Th5cRkRQhkWCt+EJsYrNB0MiL+Gpn6e3g==", + "node_modules/@babel/parser": { + "version": "7.27.0", + "resolved": "https://registry.npmjs.org/@babel/parser/-/parser-7.27.0.tgz", + "integrity": "sha512-iaepho73/2Pz7w2eMS0Q5f83+0RKI7i4xmiYeBmDzfRVbQtTOG7Ts0S4HzJVsTMGI9keU8rNfuZr8DKfSt7Yyg==", "dev": true, + "license": "MIT", "dependencies": { - "call-me-maybe": "^1.0.1", - "glob-to-regexp": "^0.3.0" + "@babel/types": "^7.27.0" + }, + "bin": { + "parser": "bin/babel-parser.js" }, "engines": { - "node": ">=4" + "node": ">=6.0.0" } }, - "node_modules/@nodelib/fs.stat": { - "version": "1.1.3", - "resolved": "https://registry.npmjs.org/@nodelib/fs.stat/-/fs.stat-1.1.3.tgz", - "integrity": "sha512-shAmDyaQC4H92APFoIaVDHCx5bStIocgvbwQyxPRrbUY20V1EYTbSDchWbuwlMG3V17cprZhA6+78JfB+3DTPw==", + "node_modules/@babel/plugin-syntax-async-generators": { + "version": "7.8.4", + "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-async-generators/-/plugin-syntax-async-generators-7.8.4.tgz", + "integrity": "sha512-tycmZxkGfZaxhMRbXlPXuVFpdWlXpir2W4AMhSJgRKzk/eDlIXOhb2LHWoLpDF7TEHylV5zNhykX6KAgHJmTNw==", "dev": true, - "engines": { - "node": ">= 6" + "license": "MIT", + "dependencies": { + "@babel/helper-plugin-utils": "^7.8.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" } }, - "node_modules/@octokit/auth-token": { - "version": "2.5.0", - "resolved": "https://registry.npmjs.org/@octokit/auth-token/-/auth-token-2.5.0.tgz", - "integrity": "sha512-r5FVUJCOLl19AxiuZD2VRZ/ORjp/4IN98Of6YJoJOkY75CIBuYfmiNHGrDwXr+aLGG55igl9QrxX3hbiXlLb+g==", + "node_modules/@babel/plugin-syntax-bigint": { + "version": "7.8.3", + "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-bigint/-/plugin-syntax-bigint-7.8.3.tgz", + "integrity": "sha512-wnTnFlG+YxQm3vDxpGE57Pj0srRU4sHE/mDkt1qv2YJJSeUAec2ma4WLUnUPeKjyrfntVwe/N6dCXpU+zL3Npg==", "dev": true, + "license": "MIT", "dependencies": { - "@octokit/types": "^6.0.3" + "@babel/helper-plugin-utils": "^7.8.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" } }, - "node_modules/@octokit/auth-token/node_modules/@octokit/types": { - "version": "6.34.0", - "resolved": "https://registry.npmjs.org/@octokit/types/-/types-6.34.0.tgz", - "integrity": "sha512-s1zLBjWhdEI2zwaoSgyOFoKSl109CUcVBCc7biPJ3aAf6LGLU6szDvi31JPU7bxfla2lqfhjbbg/5DdFNxOwHw==", + "node_modules/@babel/plugin-syntax-class-properties": { + "version": "7.12.13", + "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-class-properties/-/plugin-syntax-class-properties-7.12.13.tgz", + "integrity": "sha512-fm4idjKla0YahUNgFNLCB0qySdsoPiZP3iQE3rky0mBUtMZ23yDJ9SJdg6dXTSDnulOVqiF3Hgr9nbXvXTQZYA==", "dev": true, + "license": "MIT", "dependencies": { - "@octokit/openapi-types": "^11.2.0" + "@babel/helper-plugin-utils": "^7.12.13" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" } }, - "node_modules/@octokit/core": { - "version": "3.6.0", - "resolved": "https://registry.npmjs.org/@octokit/core/-/core-3.6.0.tgz", - "integrity": "sha512-7RKRKuA4xTjMhY+eG3jthb3hlZCsOwg3rztWh75Xc+ShDWOfDDATWbeZpAHBNRpm4Tv9WgBMOy1zEJYXG6NJ7Q==", + "node_modules/@babel/plugin-syntax-class-static-block": { + "version": "7.14.5", + "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-class-static-block/-/plugin-syntax-class-static-block-7.14.5.tgz", + "integrity": "sha512-b+YyPmr6ldyNnM6sqYeMWE+bgJcJpO6yS4QD7ymxgH34GBPNDM/THBh8iunyvKIZztiwLH4CJZ0RxTk9emgpjw==", "dev": true, - "peer": true, + "license": "MIT", "dependencies": { - "@octokit/auth-token": "^2.4.4", - "@octokit/graphql": "^4.5.8", - "@octokit/request": "^5.6.3", - "@octokit/request-error": "^2.0.5", - "@octokit/types": "^6.0.3", - "before-after-hook": "^2.2.0", - "universal-user-agent": "^6.0.0" + "@babel/helper-plugin-utils": "^7.14.5" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" } }, - "node_modules/@octokit/core/node_modules/@octokit/request-error": { - "version": "2.1.0", - "resolved": "https://registry.npmjs.org/@octokit/request-error/-/request-error-2.1.0.tgz", - "integrity": "sha512-1VIvgXxs9WHSjicsRwq8PlR2LR2x6DwsJAaFgzdi0JfJoGSO8mYI/cHJQ+9FbN21aa+DrgNLnwObmyeSC8Rmpg==", + "node_modules/@babel/plugin-syntax-import-attributes": { + "version": "7.26.0", + "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-import-attributes/-/plugin-syntax-import-attributes-7.26.0.tgz", + "integrity": "sha512-e2dttdsJ1ZTpi3B9UYGLw41hifAubg19AtCu/2I/F1QNVclOBr1dYpTdmdyZ84Xiz43BS/tCUkMAZNLv12Pi+A==", "dev": true, - "peer": true, + "license": "MIT", "dependencies": { - "@octokit/types": "^6.0.3", - "deprecation": "^2.0.0", - "once": "^1.4.0" + "@babel/helper-plugin-utils": "^7.25.9" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" } }, - "node_modules/@octokit/core/node_modules/@octokit/types": { - "version": "6.34.0", - "resolved": "https://registry.npmjs.org/@octokit/types/-/types-6.34.0.tgz", - "integrity": "sha512-s1zLBjWhdEI2zwaoSgyOFoKSl109CUcVBCc7biPJ3aAf6LGLU6szDvi31JPU7bxfla2lqfhjbbg/5DdFNxOwHw==", + "node_modules/@babel/plugin-syntax-import-meta": { + "version": "7.10.4", + "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-import-meta/-/plugin-syntax-import-meta-7.10.4.tgz", + "integrity": "sha512-Yqfm+XDx0+Prh3VSeEQCPU81yC+JWZ2pDPFSS4ZdpfZhp4MkFMaDC1UqseovEKwSUpnIL7+vK+Clp7bfh0iD7g==", "dev": true, - "peer": true, + "license": "MIT", "dependencies": { - "@octokit/openapi-types": "^11.2.0" + "@babel/helper-plugin-utils": "^7.10.4" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" } }, - "node_modules/@octokit/core/node_modules/universal-user-agent": { - "version": "6.0.0", - "resolved": "https://registry.npmjs.org/universal-user-agent/-/universal-user-agent-6.0.0.tgz", - "integrity": "sha512-isyNax3wXoKaulPDZWHQqbmIx1k2tb9fb3GGDBRxCscfYV2Ch7WxPArBsFEG8s/safwXTT7H4QGhaIkTp9447w==", - "dev": true, - "peer": true - }, - "node_modules/@octokit/endpoint": { - "version": "6.0.8", - "resolved": "https://registry.npmjs.org/@octokit/endpoint/-/endpoint-6.0.8.tgz", - "integrity": "sha512-MuRrgv+bM4Q+e9uEvxAB/Kf+Sj0O2JAOBA131uo1o6lgdq1iS8ejKwtqHgdfY91V3rN9R/hdGKFiQYMzVzVBEQ==", + "node_modules/@babel/plugin-syntax-json-strings": { + "version": "7.8.3", + "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-json-strings/-/plugin-syntax-json-strings-7.8.3.tgz", + "integrity": "sha512-lY6kdGpWHvjoe2vk4WrAapEuBR69EMxZl+RoGRhrFGNYVK8mOPAW8VfbT/ZgrFbXlDNiiaxQnAtgVCZ6jv30EA==", "dev": true, + "license": "MIT", "dependencies": { - "@octokit/types": "^5.0.0", - "is-plain-object": "^5.0.0", - "universal-user-agent": "^6.0.0" + "@babel/helper-plugin-utils": "^7.8.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" } }, - "node_modules/@octokit/endpoint/node_modules/is-plain-object": { - "version": "5.0.0", - "resolved": "https://registry.npmjs.org/is-plain-object/-/is-plain-object-5.0.0.tgz", - "integrity": "sha512-VRSzKkbMm5jMDoKLbltAkFQ5Qr7VDiTFGXxYFXXowVj387GeGNOCsOH6Msy00SGZ3Fp84b1Naa1psqgcCIEP5Q==", + "node_modules/@babel/plugin-syntax-jsx": { + "version": "7.25.9", + "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-jsx/-/plugin-syntax-jsx-7.25.9.tgz", + "integrity": "sha512-ld6oezHQMZsZfp6pWtbjaNDF2tiiCYYDqQszHt5VV437lewP9aSi2Of99CK0D0XB21k7FLgnLcmQKyKzynfeAA==", "dev": true, + "license": "MIT", + "dependencies": { + "@babel/helper-plugin-utils": "^7.25.9" + }, "engines": { - "node": ">=0.10.0" + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" } }, - "node_modules/@octokit/endpoint/node_modules/universal-user-agent": { - "version": "6.0.0", - "resolved": "https://registry.npmjs.org/universal-user-agent/-/universal-user-agent-6.0.0.tgz", - "integrity": "sha512-isyNax3wXoKaulPDZWHQqbmIx1k2tb9fb3GGDBRxCscfYV2Ch7WxPArBsFEG8s/safwXTT7H4QGhaIkTp9447w==", - "dev": true - }, - "node_modules/@octokit/graphql": { - "version": "4.8.0", - "resolved": "https://registry.npmjs.org/@octokit/graphql/-/graphql-4.8.0.tgz", - "integrity": "sha512-0gv+qLSBLKF0z8TKaSKTsS39scVKF9dbMxJpj3U0vC7wjNWFuIpL/z76Qe2fiuCbDRcJSavkXsVtMS6/dtQQsg==", + "node_modules/@babel/plugin-syntax-logical-assignment-operators": { + "version": "7.10.4", + "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-logical-assignment-operators/-/plugin-syntax-logical-assignment-operators-7.10.4.tgz", + "integrity": "sha512-d8waShlpFDinQ5MtvGU9xDAOzKH47+FFoney2baFIoMr952hKOLp1HR7VszoZvOsV/4+RRszNY7D17ba0te0ig==", "dev": true, - "peer": true, + "license": "MIT", "dependencies": { - "@octokit/request": "^5.6.0", - "@octokit/types": "^6.0.3", - "universal-user-agent": "^6.0.0" + "@babel/helper-plugin-utils": "^7.10.4" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" } }, - "node_modules/@octokit/graphql/node_modules/@octokit/types": { - "version": "6.34.0", - "resolved": "https://registry.npmjs.org/@octokit/types/-/types-6.34.0.tgz", - "integrity": "sha512-s1zLBjWhdEI2zwaoSgyOFoKSl109CUcVBCc7biPJ3aAf6LGLU6szDvi31JPU7bxfla2lqfhjbbg/5DdFNxOwHw==", + "node_modules/@babel/plugin-syntax-nullish-coalescing-operator": { + "version": "7.8.3", + "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-nullish-coalescing-operator/-/plugin-syntax-nullish-coalescing-operator-7.8.3.tgz", + "integrity": "sha512-aSff4zPII1u2QD7y+F8oDsz19ew4IGEJg9SVW+bqwpwtfFleiQDMdzA/R+UlWDzfnHFCxxleFT0PMIrR36XLNQ==", "dev": true, - "peer": true, + "license": "MIT", "dependencies": { - "@octokit/openapi-types": "^11.2.0" + "@babel/helper-plugin-utils": "^7.8.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" } }, - "node_modules/@octokit/graphql/node_modules/universal-user-agent": { - "version": "6.0.0", - "resolved": "https://registry.npmjs.org/universal-user-agent/-/universal-user-agent-6.0.0.tgz", - "integrity": "sha512-isyNax3wXoKaulPDZWHQqbmIx1k2tb9fb3GGDBRxCscfYV2Ch7WxPArBsFEG8s/safwXTT7H4QGhaIkTp9447w==", - "dev": true, - "peer": true - }, - "node_modules/@octokit/openapi-types": { - "version": "11.2.0", - "resolved": "https://registry.npmjs.org/@octokit/openapi-types/-/openapi-types-11.2.0.tgz", - "integrity": "sha512-PBsVO+15KSlGmiI8QAzaqvsNlZlrDlyAJYcrXBCvVUxCp7VnXjkwPoFHgjEJXx3WF9BAwkA6nfCUA7i9sODzKA==", - "dev": true - }, - "node_modules/@octokit/plugin-paginate-rest": { - "version": "1.1.2", - "resolved": "https://registry.npmjs.org/@octokit/plugin-paginate-rest/-/plugin-paginate-rest-1.1.2.tgz", - "integrity": "sha512-jbsSoi5Q1pj63sC16XIUboklNw+8tL9VOnJsWycWYR78TKss5PVpIPb1TUUcMQ+bBh7cY579cVAWmf5qG+dw+Q==", + "node_modules/@babel/plugin-syntax-numeric-separator": { + "version": "7.10.4", + "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-numeric-separator/-/plugin-syntax-numeric-separator-7.10.4.tgz", + "integrity": "sha512-9H6YdfkcK/uOnY/K7/aA2xpzaAgkQn37yzWUMRK7OaPOqOpGS1+n0H5hxT9AUw9EsSjPW8SVyMJwYRtWs3X3ug==", "dev": true, + "license": "MIT", "dependencies": { - "@octokit/types": "^2.0.1" + "@babel/helper-plugin-utils": "^7.10.4" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" } }, - "node_modules/@octokit/plugin-paginate-rest/node_modules/@octokit/types": { - "version": "2.16.2", - "resolved": "https://registry.npmjs.org/@octokit/types/-/types-2.16.2.tgz", - "integrity": "sha512-O75k56TYvJ8WpAakWwYRN8Bgu60KrmX0z1KqFp1kNiFNkgW+JW+9EBKZ+S33PU6SLvbihqd+3drvPxKK68Ee8Q==", + "node_modules/@babel/plugin-syntax-object-rest-spread": { + "version": "7.8.3", + "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-object-rest-spread/-/plugin-syntax-object-rest-spread-7.8.3.tgz", + "integrity": "sha512-XoqMijGZb9y3y2XskN+P1wUGiVwWZ5JmoDRwx5+3GmEplNyVM2s2Dg8ILFQm8rWM48orGy5YpI5Bl8U1y7ydlA==", "dev": true, + "license": "MIT", "dependencies": { - "@types/node": ">= 8" - } - }, - "node_modules/@octokit/plugin-request-log": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/@octokit/plugin-request-log/-/plugin-request-log-1.0.2.tgz", - "integrity": "sha512-oTJSNAmBqyDR41uSMunLQKMX0jmEXbwD1fpz8FG27lScV3RhtGfBa1/BBLym+PxcC16IBlF7KH9vP1BUYxA+Eg==", - "dev": true, + "@babel/helper-plugin-utils": "^7.8.0" + }, "peerDependencies": { - "@octokit/core": ">=3" + "@babel/core": "^7.0.0-0" } }, - "node_modules/@octokit/plugin-rest-endpoint-methods": { - "version": "2.4.0", - "resolved": "https://registry.npmjs.org/@octokit/plugin-rest-endpoint-methods/-/plugin-rest-endpoint-methods-2.4.0.tgz", - "integrity": "sha512-EZi/AWhtkdfAYi01obpX0DF7U6b1VRr30QNQ5xSFPITMdLSfhcBqjamE3F+sKcxPbD7eZuMHu3Qkk2V+JGxBDQ==", + "node_modules/@babel/plugin-syntax-optional-catch-binding": { + "version": "7.8.3", + "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-optional-catch-binding/-/plugin-syntax-optional-catch-binding-7.8.3.tgz", + "integrity": "sha512-6VPD0Pc1lpTqw0aKoeRTMiB+kWhAoT24PA+ksWSBrFtl5SIRVpZlwN3NNPQjehA2E/91FV3RjLWoVTglWcSV3Q==", "dev": true, + "license": "MIT", "dependencies": { - "@octokit/types": "^2.0.1", - "deprecation": "^2.3.1" + "@babel/helper-plugin-utils": "^7.8.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" } }, - "node_modules/@octokit/plugin-rest-endpoint-methods/node_modules/@octokit/types": { - "version": "2.16.2", - "resolved": "https://registry.npmjs.org/@octokit/types/-/types-2.16.2.tgz", - "integrity": "sha512-O75k56TYvJ8WpAakWwYRN8Bgu60KrmX0z1KqFp1kNiFNkgW+JW+9EBKZ+S33PU6SLvbihqd+3drvPxKK68Ee8Q==", + "node_modules/@babel/plugin-syntax-optional-chaining": { + "version": "7.8.3", + "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-optional-chaining/-/plugin-syntax-optional-chaining-7.8.3.tgz", + "integrity": "sha512-KoK9ErH1MBlCPxV0VANkXW2/dw4vlbGDrFgz8bmUsBGYkFRcbRwMh6cIJubdPrkxRwuGdtCk0v/wPTKbQgBjkg==", "dev": true, + "license": "MIT", "dependencies": { - "@types/node": ">= 8" + "@babel/helper-plugin-utils": "^7.8.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" } }, - "node_modules/@octokit/request": { - "version": "5.6.3", - "resolved": "https://registry.npmjs.org/@octokit/request/-/request-5.6.3.tgz", - "integrity": "sha512-bFJl0I1KVc9jYTe9tdGGpAMPy32dLBXXo1dS/YwSCTL/2nd9XeHsY616RE3HPXDVk+a+dBuzyz5YdlXwcDTr2A==", + "node_modules/@babel/plugin-syntax-private-property-in-object": { + "version": "7.14.5", + "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-private-property-in-object/-/plugin-syntax-private-property-in-object-7.14.5.tgz", + "integrity": "sha512-0wVnp9dxJ72ZUJDV27ZfbSj6iHLoytYZmh3rFcxNnvsJF3ktkzLDZPy/mA17HGsaQT3/DQsWYX1f1QGWkCoVUg==", "dev": true, + "license": "MIT", "dependencies": { - "@octokit/endpoint": "^6.0.1", - "@octokit/request-error": "^2.1.0", - "@octokit/types": "^6.16.1", - "is-plain-object": "^5.0.0", - "node-fetch": "^2.6.7", - "universal-user-agent": "^6.0.0" + "@babel/helper-plugin-utils": "^7.14.5" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" } }, - "node_modules/@octokit/request-error": { - "version": "1.2.1", - "resolved": "https://registry.npmjs.org/@octokit/request-error/-/request-error-1.2.1.tgz", - "integrity": "sha512-+6yDyk1EES6WK+l3viRDElw96MvwfJxCt45GvmjDUKWjYIb3PJZQkq3i46TwGwoPD4h8NmTrENmtyA1FwbmhRA==", + "node_modules/@babel/plugin-syntax-top-level-await": { + "version": "7.14.5", + "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-top-level-await/-/plugin-syntax-top-level-await-7.14.5.tgz", + "integrity": "sha512-hx++upLv5U1rgYfwe1xBQUhRmU41NEvpUvrp8jkrSCdvGSnM5/qdRMtylJ6PG5OFkBaHkbTAKTnd3/YyESRHFw==", "dev": true, + "license": "MIT", "dependencies": { - "@octokit/types": "^2.0.0", - "deprecation": "^2.0.0", - "once": "^1.4.0" + "@babel/helper-plugin-utils": "^7.14.5" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" } }, - "node_modules/@octokit/request-error/node_modules/@octokit/types": { - "version": "2.16.2", - "resolved": "https://registry.npmjs.org/@octokit/types/-/types-2.16.2.tgz", - "integrity": "sha512-O75k56TYvJ8WpAakWwYRN8Bgu60KrmX0z1KqFp1kNiFNkgW+JW+9EBKZ+S33PU6SLvbihqd+3drvPxKK68Ee8Q==", + "node_modules/@babel/plugin-syntax-typescript": { + "version": "7.25.9", + "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-typescript/-/plugin-syntax-typescript-7.25.9.tgz", + "integrity": "sha512-hjMgRy5hb8uJJjUcdWunWVcoi9bGpJp8p5Ol1229PoN6aytsLwNMgmdftO23wnCLMfVmTwZDWMPNq/D1SY60JQ==", "dev": true, + "license": "MIT", "dependencies": { - "@types/node": ">= 8" + "@babel/helper-plugin-utils": "^7.25.9" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" } }, - "node_modules/@octokit/request/node_modules/@octokit/request-error": { - "version": "2.1.0", - "resolved": "https://registry.npmjs.org/@octokit/request-error/-/request-error-2.1.0.tgz", - "integrity": "sha512-1VIvgXxs9WHSjicsRwq8PlR2LR2x6DwsJAaFgzdi0JfJoGSO8mYI/cHJQ+9FbN21aa+DrgNLnwObmyeSC8Rmpg==", + "node_modules/@babel/template": { + "version": "7.27.0", + "resolved": "https://registry.npmjs.org/@babel/template/-/template-7.27.0.tgz", + "integrity": "sha512-2ncevenBqXI6qRMukPlXwHKHchC7RyMuu4xv5JBXRfOGVcTy1mXCD12qrp7Jsoxll1EV3+9sE4GugBVRjT2jFA==", "dev": true, + "license": "MIT", "dependencies": { - "@octokit/types": "^6.0.3", - "deprecation": "^2.0.0", - "once": "^1.4.0" + "@babel/code-frame": "^7.26.2", + "@babel/parser": "^7.27.0", + "@babel/types": "^7.27.0" + }, + "engines": { + "node": ">=6.9.0" } }, - "node_modules/@octokit/request/node_modules/@octokit/types": { - "version": "6.34.0", - "resolved": "https://registry.npmjs.org/@octokit/types/-/types-6.34.0.tgz", - "integrity": "sha512-s1zLBjWhdEI2zwaoSgyOFoKSl109CUcVBCc7biPJ3aAf6LGLU6szDvi31JPU7bxfla2lqfhjbbg/5DdFNxOwHw==", + "node_modules/@babel/traverse": { + "version": "7.27.0", + "resolved": "https://registry.npmjs.org/@babel/traverse/-/traverse-7.27.0.tgz", + "integrity": "sha512-19lYZFzYVQkkHkl4Cy4WrAVcqBkgvV2YM2TU3xG6DIwO7O3ecbDPfW3yM3bjAGcqcQHi+CCtjMR3dIEHxsd6bA==", "dev": true, + "license": "MIT", "dependencies": { - "@octokit/openapi-types": "^11.2.0" + "@babel/code-frame": "^7.26.2", + "@babel/generator": "^7.27.0", + "@babel/parser": "^7.27.0", + "@babel/template": "^7.27.0", + "@babel/types": "^7.27.0", + "debug": "^4.3.1", + "globals": "^11.1.0" + }, + "engines": { + "node": ">=6.9.0" } }, - "node_modules/@octokit/request/node_modules/is-plain-object": { - "version": "5.0.0", - "resolved": "https://registry.npmjs.org/is-plain-object/-/is-plain-object-5.0.0.tgz", - "integrity": "sha512-VRSzKkbMm5jMDoKLbltAkFQ5Qr7VDiTFGXxYFXXowVj387GeGNOCsOH6Msy00SGZ3Fp84b1Naa1psqgcCIEP5Q==", + "node_modules/@babel/traverse/node_modules/globals": { + "version": "11.12.0", + "resolved": "https://registry.npmjs.org/globals/-/globals-11.12.0.tgz", + "integrity": "sha512-WOBp/EEGUiIsJSp7wcv/y6MO+lV9UoncWqxuFfm8eBwzWNgyfBd6Gz+IeKQ9jCmyhoH99g15M3T+QaVHFjizVA==", "dev": true, + "license": "MIT", "engines": { - "node": ">=0.10.0" + "node": ">=4" } }, - "node_modules/@octokit/request/node_modules/node-fetch": { - "version": "2.6.7", - "resolved": "https://registry.npmjs.org/node-fetch/-/node-fetch-2.6.7.tgz", - "integrity": "sha512-ZjMPFEfVx5j+y2yF35Kzx5sF7kDzxuDj6ziH4FFbOp87zKDZNx8yExJIb05OGF4Nlt9IHFIMBkRl41VdvcNdbQ==", + "node_modules/@babel/types": { + "version": "7.27.0", + "resolved": "https://registry.npmjs.org/@babel/types/-/types-7.27.0.tgz", + "integrity": "sha512-H45s8fVLYjbhFH62dIJ3WtmJ6RSPt/3DRO0ZcT2SUiYiQyz3BLVb9ADEnLl91m74aQPS3AzzeajZHYOalWe3bg==", "dev": true, + "license": "MIT", "dependencies": { - "whatwg-url": "^5.0.0" + "@babel/helper-string-parser": "^7.25.9", + "@babel/helper-validator-identifier": "^7.25.9" }, "engines": { - "node": "4.x || >=6.0.0" - }, - "peerDependencies": { - "encoding": "^0.1.0" - }, - "peerDependenciesMeta": { - "encoding": { - "optional": true - } - } - }, - "node_modules/@octokit/request/node_modules/tr46": { - "version": "0.0.3", - "resolved": "https://registry.npmjs.org/tr46/-/tr46-0.0.3.tgz", - "integrity": "sha1-gYT9NH2snNwYWZLzpmIuFLnZq2o=", - "dev": true - }, - "node_modules/@octokit/request/node_modules/universal-user-agent": { - "version": "6.0.0", - "resolved": "https://registry.npmjs.org/universal-user-agent/-/universal-user-agent-6.0.0.tgz", - "integrity": "sha512-isyNax3wXoKaulPDZWHQqbmIx1k2tb9fb3GGDBRxCscfYV2Ch7WxPArBsFEG8s/safwXTT7H4QGhaIkTp9447w==", - "dev": true - }, - "node_modules/@octokit/request/node_modules/webidl-conversions": { - "version": "3.0.1", - "resolved": "https://registry.npmjs.org/webidl-conversions/-/webidl-conversions-3.0.1.tgz", - "integrity": "sha1-JFNCdeKnvGvnvIZhHMFq4KVlSHE=", - "dev": true - }, - "node_modules/@octokit/request/node_modules/whatwg-url": { - "version": "5.0.0", - "resolved": "https://registry.npmjs.org/whatwg-url/-/whatwg-url-5.0.0.tgz", - "integrity": "sha1-lmRU6HZUYuN2RNNib2dCzotwll0=", - "dev": true, - "dependencies": { - "tr46": "~0.0.3", - "webidl-conversions": "^3.0.0" - } - }, - "node_modules/@octokit/rest": { - "version": "16.43.2", - "resolved": "https://registry.npmjs.org/@octokit/rest/-/rest-16.43.2.tgz", - "integrity": "sha512-ngDBevLbBTFfrHZeiS7SAMAZ6ssuVmXuya+F/7RaVvlysgGa1JKJkKWY+jV6TCJYcW0OALfJ7nTIGXcBXzycfQ==", - "dev": true, - "dependencies": { - "@octokit/auth-token": "^2.4.0", - "@octokit/plugin-paginate-rest": "^1.1.1", - "@octokit/plugin-request-log": "^1.0.0", - "@octokit/plugin-rest-endpoint-methods": "2.4.0", - "@octokit/request": "^5.2.0", - "@octokit/request-error": "^1.0.2", - "atob-lite": "^2.0.0", - "before-after-hook": "^2.0.0", - "btoa-lite": "^1.0.0", - "deprecation": "^2.0.0", - "lodash.get": "^4.4.2", - "lodash.set": "^4.3.2", - "lodash.uniq": "^4.5.0", - "octokit-pagination-methods": "^1.1.0", - "once": "^1.4.0", - "universal-user-agent": "^4.0.0" + "node": ">=6.9.0" } }, - "node_modules/@octokit/types": { - "version": "5.5.0", - "resolved": "https://registry.npmjs.org/@octokit/types/-/types-5.5.0.tgz", - "integrity": "sha512-UZ1pErDue6bZNjYOotCNveTXArOMZQFG6hKJfOnGnulVCMcVVi7YIIuuR4WfBhjo7zgpmzn/BkPDnUXtNx+PcQ==", + "node_modules/@csstools/color-helpers": { + "version": "5.0.2", + "resolved": "https://registry.npmjs.org/@csstools/color-helpers/-/color-helpers-5.0.2.tgz", + "integrity": "sha512-JqWH1vsgdGcw2RR6VliXXdA0/59LttzlU8UlRT/iUUsEeWfYq8I+K0yhihEUTTHLRm1EXvpsCx3083EU15ecsA==", "dev": true, - "dependencies": { - "@types/node": ">= 8" + "funding": [ + { + "type": "github", + "url": "https://github.com/sponsors/csstools" + }, + { + "type": "opencollective", + "url": "https://opencollective.com/csstools" + } + ], + "license": "MIT-0", + "engines": { + "node": ">=18" } }, - "node_modules/@tootallnate/once": { - "version": "1.1.2", - "resolved": "https://registry.npmjs.org/@tootallnate/once/-/once-1.1.2.tgz", - "integrity": "sha512-RbzJvlNzmRq5c3O09UipeuXno4tA1FE6ikOjxZK0tuxVv3412l64l5t1W5pj4+rJq9vpkm/kwiR07aZXnsKPxw==", + "node_modules/@csstools/css-calc": { + "version": "2.1.3", + "resolved": "https://registry.npmjs.org/@csstools/css-calc/-/css-calc-2.1.3.tgz", + "integrity": "sha512-XBG3talrhid44BY1x3MHzUx/aTG8+x/Zi57M4aTKK9RFB4aLlF3TTSzfzn8nWVHWL3FgAXAxmupmDd6VWww+pw==", "dev": true, + "funding": [ + { + "type": "github", + "url": "https://github.com/sponsors/csstools" + }, + { + "type": "opencollective", + "url": "https://opencollective.com/csstools" + } + ], + "license": "MIT", "engines": { - "node": ">= 6" + "node": ">=18" + }, + "peerDependencies": { + "@csstools/css-parser-algorithms": "^3.0.4", + "@csstools/css-tokenizer": "^3.0.3" } }, - "node_modules/@types/events": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/@types/events/-/events-3.0.0.tgz", - "integrity": "sha512-EaObqwIvayI5a8dCzhFrjKzVwKLxjoG9T6Ppd5CEo07LRKfQ8Yokw54r5+Wq7FaBQ+yXRvQAYPrHwya1/UFt9g==", - "dev": true - }, - "node_modules/@types/glob": { - "version": "7.1.1", - "resolved": "https://registry.npmjs.org/@types/glob/-/glob-7.1.1.tgz", - "integrity": "sha512-1Bh06cbWJUHMC97acuD6UMG29nMt0Aqz1vF3guLfG+kHHJhy3AyohZFFxYk2f7Q1SQIrNwvncxAE0N/9s70F2w==", + "node_modules/@csstools/css-color-parser": { + "version": "3.0.9", + "resolved": "https://registry.npmjs.org/@csstools/css-color-parser/-/css-color-parser-3.0.9.tgz", + "integrity": "sha512-wILs5Zk7BU86UArYBJTPy/FMPPKVKHMj1ycCEyf3VUptol0JNRLFU/BZsJ4aiIHJEbSLiizzRrw8Pc1uAEDrXw==", "dev": true, + "funding": [ + { + "type": "github", + "url": "https://github.com/sponsors/csstools" + }, + { + "type": "opencollective", + "url": "https://opencollective.com/csstools" + } + ], + "license": "MIT", "dependencies": { - "@types/events": "*", - "@types/minimatch": "*", - "@types/node": "*" + "@csstools/color-helpers": "^5.0.2", + "@csstools/css-calc": "^2.1.3" + }, + "engines": { + "node": ">=18" + }, + "peerDependencies": { + "@csstools/css-parser-algorithms": "^3.0.4", + "@csstools/css-tokenizer": "^3.0.3" } }, - "node_modules/@types/linkify-it": { - "version": "3.0.2", - "resolved": "https://registry.npmjs.org/@types/linkify-it/-/linkify-it-3.0.2.tgz", - "integrity": "sha512-HZQYqbiFVWufzCwexrvh694SOim8z2d+xJl5UNamcvQFejLY/2YUtzXHYi3cHdI7PMlS8ejH2slRAOJQ32aNbA==", - "dev": true - }, - "node_modules/@types/markdown-it": { - "version": "12.2.3", - "resolved": "https://registry.npmjs.org/@types/markdown-it/-/markdown-it-12.2.3.tgz", - "integrity": "sha512-GKMHFfv3458yYy+v/N8gjufHO6MSZKCOXpZc5GXIWWy8uldwfmPn98vp81gZ5f9SVw8YYBctgfJ22a2d7AOMeQ==", + "node_modules/@csstools/css-parser-algorithms": { + "version": "3.0.4", + "resolved": "https://registry.npmjs.org/@csstools/css-parser-algorithms/-/css-parser-algorithms-3.0.4.tgz", + "integrity": "sha512-Up7rBoV77rv29d3uKHUIVubz1BTcgyUK72IvCQAbfbMv584xHcGKCKbWh7i8hPrRJ7qU4Y8IO3IY9m+iTB7P3A==", "dev": true, - "dependencies": { - "@types/linkify-it": "*", - "@types/mdurl": "*" + "funding": [ + { + "type": "github", + "url": "https://github.com/sponsors/csstools" + }, + { + "type": "opencollective", + "url": "https://opencollective.com/csstools" + } + ], + "license": "MIT", + "engines": { + "node": ">=18" + }, + "peerDependencies": { + "@csstools/css-tokenizer": "^3.0.3" } }, - "node_modules/@types/mdurl": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/@types/mdurl/-/mdurl-1.0.2.tgz", - "integrity": "sha512-eC4U9MlIcu2q0KQmXszyn5Akca/0jrQmwDRgpAMJai7qBWq4amIQhZyNau4VYGtCeALvW1/NtjzJJ567aZxfKA==", - "dev": true - }, - "node_modules/@types/minimatch": { + "node_modules/@csstools/css-tokenizer": { "version": "3.0.3", - "resolved": "https://registry.npmjs.org/@types/minimatch/-/minimatch-3.0.3.tgz", - "integrity": "sha512-tHq6qdbT9U1IRSGf14CL0pUlULksvY9OZ+5eEgl1N7t+OA3tGvNpxJCzuKQlsNgCVwbAs670L1vcVQi8j9HjnA==", - "dev": true - }, - "node_modules/@types/node": { - "version": "12.0.2", - "resolved": "https://registry.npmjs.org/@types/node/-/node-12.0.2.tgz", - "integrity": "sha512-5tabW/i+9mhrfEOUcLDu2xBPsHJ+X5Orqy9FKpale3SjDA17j5AEpYq5vfy3oAeAHGcvANRCO3NV3d2D6q3NiA==", - "dev": true - }, - "node_modules/@types/node-fetch": { - "version": "2.5.7", - "resolved": "https://registry.npmjs.org/@types/node-fetch/-/node-fetch-2.5.7.tgz", - "integrity": "sha512-o2WVNf5UhWRkxlf6eq+jMZDu7kjgpgJfl4xVNlvryc95O/6F2ld8ztKX+qu+Rjyet93WAWm5LjeX9H5FGkODvw==", + "resolved": "https://registry.npmjs.org/@csstools/css-tokenizer/-/css-tokenizer-3.0.3.tgz", + "integrity": "sha512-UJnjoFsmxfKUdNYdWgOB0mWUypuLvAfQPH1+pyvRJs6euowbFkFC6P13w1l8mJyi3vxYMxc9kld5jZEGRQs6bw==", "dev": true, - "dependencies": { - "@types/node": "*", - "form-data": "^3.0.0" + "funding": [ + { + "type": "github", + "url": "https://github.com/sponsors/csstools" + }, + { + "type": "opencollective", + "url": "https://opencollective.com/csstools" + } + ], + "license": "MIT", + "engines": { + "node": ">=18" } }, - "node_modules/@ungap/promise-all-settled": { - "version": "1.1.2", - "resolved": "https://registry.npmjs.org/@ungap/promise-all-settled/-/promise-all-settled-1.1.2.tgz", - "integrity": "sha512-sL/cEvJWAnClXw0wHk85/2L0G6Sj8UB0Ctc1TEMbKSsmpRosqhwj9gWgFRZSrBr2f9tiXISwNhCPmlfqUqyb9Q==", - "dev": true - }, - "node_modules/a-sync-waterfall": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/a-sync-waterfall/-/a-sync-waterfall-1.0.1.tgz", - "integrity": "sha512-RYTOHHdWipFUliRFMCS4X2Yn2X8M87V/OpSqWzKKOGhzqyUxzyVmhHDH9sAvG+ZuQf/TAOFsLCpMw09I1ufUnA==", - "dev": true - }, - "node_modules/abab": { - "version": "2.0.5", - "resolved": "https://registry.npmjs.org/abab/-/abab-2.0.5.tgz", - "integrity": "sha512-9IK9EadsbHo6jLWIpxpR6pL0sazTXV6+SQv25ZB+F7Bj9mJNaOc4nCRabwd5M/JwmUa8idz6Eci6eKfJryPs6Q==", - "dev": true - }, - "node_modules/abort-controller": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/abort-controller/-/abort-controller-3.0.0.tgz", - "integrity": "sha512-h8lQ8tacZYnR3vNQTgibj+tODHI5/+l06Au2Pcriv/Gmet0eaj4TwWH41sO9wnHDiQsEj19q0drzdWdeAHtweg==", + "node_modules/@es-joy/jsdoccomment": { + "version": "0.49.0", + "resolved": "https://registry.npmjs.org/@es-joy/jsdoccomment/-/jsdoccomment-0.49.0.tgz", + "integrity": "sha512-xjZTSFgECpb9Ohuk5yMX5RhUEbfeQcuOp8IF60e+wyzWEF0M5xeSgqsfLtvPEX8BIyOX9saZqzuGPmZ8oWc+5Q==", "dev": true, + "license": "MIT", "dependencies": { - "event-target-shim": "^5.0.0" + "comment-parser": "1.4.1", + "esquery": "^1.6.0", + "jsdoc-type-pratt-parser": "~4.1.0" }, "engines": { - "node": ">=6.5" + "node": ">=16" } }, - "node_modules/acorn": { - "version": "8.5.0", - "resolved": "https://registry.npmjs.org/acorn/-/acorn-8.5.0.tgz", - "integrity": "sha512-yXbYeFy+jUuYd3/CDcg2NkIYE991XYX/bje7LmjJigUciaeO1JR4XxXgCIV1/Zc/dRuFEyw1L0pbA+qynJkW5Q==", + "node_modules/@eslint-community/eslint-utils": { + "version": "4.6.1", + "resolved": "https://registry.npmjs.org/@eslint-community/eslint-utils/-/eslint-utils-4.6.1.tgz", + "integrity": "sha512-KTsJMmobmbrFLe3LDh0PC2FXpcSYJt/MLjlkh/9LEnmKYLSYmT/0EW9JWANjeoemiuZrmogti0tW5Ch+qNUYDw==", "dev": true, - "bin": { - "acorn": "bin/acorn" + "license": "MIT", + "dependencies": { + "eslint-visitor-keys": "^3.4.3" }, "engines": { - "node": ">=0.4.0" + "node": "^12.22.0 || ^14.17.0 || >=16.0.0" + }, + "funding": { + "url": "https://opencollective.com/eslint" + }, + "peerDependencies": { + "eslint": "^6.0.0 || ^7.0.0 || >=8.0.0" } }, - "node_modules/acorn-globals": { - "version": "6.0.0", - "resolved": "https://registry.npmjs.org/acorn-globals/-/acorn-globals-6.0.0.tgz", - "integrity": "sha512-ZQl7LOWaF5ePqqcX4hLuv/bLXYQNfNWw2c0/yX/TsPRKamzHcTGQnlCjHT3TsmkOUVEPS3crCxiPfdzE/Trlhg==", + "node_modules/@eslint-community/regexpp": { + "version": "4.12.1", + "resolved": "https://registry.npmjs.org/@eslint-community/regexpp/-/regexpp-4.12.1.tgz", + "integrity": "sha512-CCZCDJuduB9OUkFkY2IgppNZMi2lBQgD2qzwXkEia16cge2pijY/aXi96CJMquDMn3nJdlPV1A5KrJEXwfLNzQ==", "dev": true, - "dependencies": { - "acorn": "^7.1.1", - "acorn-walk": "^7.1.1" + "license": "MIT", + "engines": { + "node": "^12.0.0 || ^14.0.0 || >=16.0.0" } }, - "node_modules/acorn-globals/node_modules/acorn": { - "version": "7.4.1", - "resolved": "https://registry.npmjs.org/acorn/-/acorn-7.4.1.tgz", - "integrity": "sha512-nQyp0o1/mNdbTO1PO6kHkwSrmgZ0MT/jCCpNiwbUjGoRN4dlBhqJtoQuCnEOKzgTVwg0ZWiCoQy6SxMebQVh8A==", + "node_modules/@eslint/config-array": { + "version": "0.21.0", + "resolved": "https://registry.npmjs.org/@eslint/config-array/-/config-array-0.21.0.tgz", + "integrity": "sha512-ENIdc4iLu0d93HeYirvKmrzshzofPw6VkZRKQGe9Nv46ZnWUzcF1xV01dcvEg/1wXUR61OmmlSfyeyO7EvjLxQ==", "dev": true, - "bin": { - "acorn": "bin/acorn" + "license": "Apache-2.0", + "dependencies": { + "@eslint/object-schema": "^2.1.6", + "debug": "^4.3.1", + "minimatch": "^3.1.2" }, "engines": { - "node": ">=0.4.0" + "node": "^18.18.0 || ^20.9.0 || >=21.1.0" } }, - "node_modules/acorn-jsx": { - "version": "5.3.1", - "resolved": "https://registry.npmjs.org/acorn-jsx/-/acorn-jsx-5.3.1.tgz", - "integrity": "sha512-K0Ptm/47OKfQRpNQ2J/oIN/3QYiK6FwW+eJbILhsdxh2WTLdl+30o8aGdTbm5JbffpFFAg/g+zi1E+jvJha5ng==", + "node_modules/@eslint/config-array/node_modules/brace-expansion": { + "version": "1.1.12", + "resolved": "https://registry.npmjs.org/brace-expansion/-/brace-expansion-1.1.12.tgz", + "integrity": "sha512-9T9UjW3r0UW5c1Q7GTwllptXwhvYmEzFhzMfZ9H7FQWt+uZePjZPjBP/W1ZEyZ1twGWom5/56TF4lPcqjnDHcg==", "dev": true, - "peerDependencies": { - "acorn": "^6.0.0 || ^7.0.0 || ^8.0.0" + "license": "MIT", + "dependencies": { + "balanced-match": "^1.0.0", + "concat-map": "0.0.1" } }, - "node_modules/acorn-walk": { - "version": "7.2.0", - "resolved": "https://registry.npmjs.org/acorn-walk/-/acorn-walk-7.2.0.tgz", - "integrity": "sha512-OPdCF6GsMIP+Az+aWfAAOEt2/+iVDKE7oy6lJ098aoe59oAmK76qV6Gw60SbZ8jHuG2wH058GF4pLFbYamYrVA==", + "node_modules/@eslint/config-array/node_modules/minimatch": { + "version": "3.1.2", + "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-3.1.2.tgz", + "integrity": "sha512-J7p63hRiAjw1NDEww1W7i37+ByIrOWO5XQQAzZ3VOcL0PNybwpfmV/N05zFAzwQ9USyEcX6t3UO+K5aqBQOIHw==", "dev": true, + "license": "ISC", + "dependencies": { + "brace-expansion": "^1.1.7" + }, "engines": { - "node": ">=0.4.0" + "node": "*" } }, - "node_modules/agent-base": { - "version": "4.3.0", - "resolved": "https://registry.npmjs.org/agent-base/-/agent-base-4.3.0.tgz", - "integrity": "sha512-salcGninV0nPrwpGNn4VTXBb1SOuXQBiqbrNXoeizJsHrsL6ERFM2Ne3JUSBWRE6aeNJI2ROP/WEEIDUiDe3cg==", + "node_modules/@eslint/config-helpers": { + "version": "0.3.0", + "resolved": "https://registry.npmjs.org/@eslint/config-helpers/-/config-helpers-0.3.0.tgz", + "integrity": "sha512-ViuymvFmcJi04qdZeDc2whTHryouGcDlaxPqarTD0ZE10ISpxGUVZGZDx4w01upyIynL3iu6IXH2bS1NhclQMw==", "dev": true, - "dependencies": { - "es6-promisify": "^5.0.0" - }, + "license": "Apache-2.0", "engines": { - "node": ">= 4.0.0" + "node": "^18.18.0 || ^20.9.0 || >=21.1.0" } }, - "node_modules/ajv": { - "version": "6.12.6", - "resolved": "https://registry.npmjs.org/ajv/-/ajv-6.12.6.tgz", - "integrity": "sha512-j3fVLgvTo527anyYyJOGTYJbG+vnnQYvE0m5mmkc1TK+nxAppkCLMIL0aZ4dblVCNoGShhm+kzE4ZUykBoMg4g==", + "node_modules/@eslint/core": { + "version": "0.15.1", + "resolved": "https://registry.npmjs.org/@eslint/core/-/core-0.15.1.tgz", + "integrity": "sha512-bkOp+iumZCCbt1K1CmWf0R9pM5yKpDv+ZXtvSyQpudrI9kuFLp+bM2WOPXImuD/ceQuaa8f5pj93Y7zyECIGNA==", "dev": true, + "license": "Apache-2.0", "dependencies": { - "fast-deep-equal": "^3.1.1", - "fast-json-stable-stringify": "^2.0.0", - "json-schema-traverse": "^0.4.1", - "uri-js": "^4.2.2" + "@types/json-schema": "^7.0.15" }, - "funding": { - "type": "github", - "url": "https://github.com/sponsors/epoberezkin" + "engines": { + "node": "^18.18.0 || ^20.9.0 || >=21.1.0" } }, - "node_modules/ajv/node_modules/fast-deep-equal": { - "version": "3.1.3", - "resolved": "https://registry.npmjs.org/fast-deep-equal/-/fast-deep-equal-3.1.3.tgz", - "integrity": "sha512-f3qQ9oQy9j2AhBe/H9VC91wLmKBCCU/gDOnKNAYG5hswO7BLKj09Hc5HYNz9cGI++xlpDCIgDaitVs03ATR84Q==", - "dev": true - }, - "node_modules/ansi-colors": { - "version": "1.1.0", - "resolved": "https://registry.npmjs.org/ansi-colors/-/ansi-colors-1.1.0.tgz", - "integrity": "sha512-SFKX67auSNoVR38N3L+nvsPjOE0bybKTYbkf5tRvushrAPQ9V75huw0ZxBkKVeRU9kqH3d6HA4xTckbwZ4ixmA==", + "node_modules/@eslint/eslintrc": { + "version": "3.3.1", + "resolved": "https://registry.npmjs.org/@eslint/eslintrc/-/eslintrc-3.3.1.tgz", + "integrity": "sha512-gtF186CXhIl1p4pJNGZw8Yc6RlshoePRvE0X91oPGb3vZ8pM3qOS9W9NGPat9LziaBV7XrJWGylNQXkGcnM3IQ==", "dev": true, + "license": "MIT", "dependencies": { - "ansi-wrap": "^0.1.0" + "ajv": "^6.12.4", + "debug": "^4.3.2", + "espree": "^10.0.1", + "globals": "^14.0.0", + "ignore": "^5.2.0", + "import-fresh": "^3.2.1", + "js-yaml": "^4.1.0", + "minimatch": "^3.1.2", + "strip-json-comments": "^3.1.1" }, "engines": { - "node": ">=0.10.0" + "node": "^18.18.0 || ^20.9.0 || >=21.1.0" + }, + "funding": { + "url": "https://opencollective.com/eslint" } }, - "node_modules/ansi-gray": { - "version": "0.1.1", - "resolved": "https://registry.npmjs.org/ansi-gray/-/ansi-gray-0.1.1.tgz", - "integrity": "sha1-KWLPVOyXksSFEKPetSRDaGHvclE=", + "node_modules/@eslint/eslintrc/node_modules/brace-expansion": { + "version": "1.1.12", + "resolved": "https://registry.npmjs.org/brace-expansion/-/brace-expansion-1.1.12.tgz", + "integrity": "sha512-9T9UjW3r0UW5c1Q7GTwllptXwhvYmEzFhzMfZ9H7FQWt+uZePjZPjBP/W1ZEyZ1twGWom5/56TF4lPcqjnDHcg==", "dev": true, + "license": "MIT", "dependencies": { - "ansi-wrap": "0.1.0" - }, - "engines": { - "node": ">=0.10.0" + "balanced-match": "^1.0.0", + "concat-map": "0.0.1" } }, - "node_modules/ansi-regex": { - "version": "2.1.1", - "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-2.1.1.tgz", - "integrity": "sha1-w7M6te42DYbg5ijwRorn7yfWVN8=", + "node_modules/@eslint/eslintrc/node_modules/globals": { + "version": "14.0.0", + "resolved": "https://registry.npmjs.org/globals/-/globals-14.0.0.tgz", + "integrity": "sha512-oahGvuMGQlPw/ivIYBjVSrWAfWLBeku5tpPE2fOPLi+WHffIWbuh2tCjhyQhTBPMf5E9jDEH4FOmTYgYwbKwtQ==", "dev": true, + "license": "MIT", "engines": { - "node": ">=0.10.0" + "node": ">=18" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" } }, - "node_modules/ansi-styles": { - "version": "3.2.1", - "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-3.2.1.tgz", - "integrity": "sha512-VT0ZI6kZRdTh8YyJw3SMbYm/u+NqfsAxEpWO0Pf9sq8/e94WxxOpPKx9FR1FlyCtOVDNOQ+8ntlqFxiRc+r5qA==", + "node_modules/@eslint/eslintrc/node_modules/minimatch": { + "version": "3.1.2", + "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-3.1.2.tgz", + "integrity": "sha512-J7p63hRiAjw1NDEww1W7i37+ByIrOWO5XQQAzZ3VOcL0PNybwpfmV/N05zFAzwQ9USyEcX6t3UO+K5aqBQOIHw==", "dev": true, + "license": "ISC", "dependencies": { - "color-convert": "^1.9.0" + "brace-expansion": "^1.1.7" }, "engines": { - "node": ">=4" + "node": "*" } }, - "node_modules/ansi-wrap": { - "version": "0.1.0", - "resolved": "https://registry.npmjs.org/ansi-wrap/-/ansi-wrap-0.1.0.tgz", - "integrity": "sha1-qCJQ3bABXponyoLoLqYDu/pF768=", + "node_modules/@eslint/js": { + "version": "9.31.0", + "resolved": "https://registry.npmjs.org/@eslint/js/-/js-9.31.0.tgz", + "integrity": "sha512-LOm5OVt7D4qiKCqoiPbA7LWmI+tbw1VbTUowBcUMgQSuM6poJufkFkYDcQpo5KfgD39TnNySV26QjOh7VFpSyw==", "dev": true, + "license": "MIT", "engines": { - "node": ">=0.10.0" + "node": "^18.18.0 || ^20.9.0 || >=21.1.0" + }, + "funding": { + "url": "https://eslint.org/donate" } }, - "node_modules/anymatch": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/anymatch/-/anymatch-2.0.0.tgz", - "integrity": "sha512-5teOsQWABXHHBFP9y3skS5P3d/WfWXpv3FUpy+LorMrNYaT9pI4oLMQX7jzQ2KklNpGpWHzdCXTDT2Y3XGlZBw==", + "node_modules/@eslint/object-schema": { + "version": "2.1.6", + "resolved": "https://registry.npmjs.org/@eslint/object-schema/-/object-schema-2.1.6.tgz", + "integrity": "sha512-RBMg5FRL0I0gs51M/guSAj5/e14VQ4tpZnQNWwuDT66P14I43ItmPfIZRhO9fUVIPOAQXU47atlywZ/czoqFPA==", "dev": true, - "dependencies": { - "micromatch": "^3.1.4", - "normalize-path": "^2.1.1" + "license": "Apache-2.0", + "engines": { + "node": "^18.18.0 || ^20.9.0 || >=21.1.0" } }, - "node_modules/append-buffer": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/append-buffer/-/append-buffer-1.0.2.tgz", - "integrity": "sha1-2CIM9GYIFSXv6lBhTz3mUU36WPE=", + "node_modules/@eslint/plugin-kit": { + "version": "0.3.4", + "resolved": "https://registry.npmjs.org/@eslint/plugin-kit/-/plugin-kit-0.3.4.tgz", + "integrity": "sha512-Ul5l+lHEcw3L5+k8POx6r74mxEYKG5kOb6Xpy2gCRW6zweT6TEhAf8vhxGgjhqrd/VO/Dirhsb+1hNpD1ue9hw==", "dev": true, + "license": "Apache-2.0", "dependencies": { - "buffer-equal": "^1.0.0" + "@eslint/core": "^0.15.1", + "levn": "^0.4.1" }, "engines": { - "node": ">=0.10.0" + "node": "^18.18.0 || ^20.9.0 || >=21.1.0" } }, - "node_modules/archy": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/archy/-/archy-1.0.0.tgz", - "integrity": "sha1-+cjBN1fMHde8N5rHeyxipcKGjEA=", - "dev": true - }, - "node_modules/argparse": { - "version": "1.0.10", - "resolved": "https://registry.npmjs.org/argparse/-/argparse-1.0.10.tgz", - "integrity": "sha512-o5Roy6tNG4SL/FOkCAN6RzjiakZS25RLYFrcMttJqbdd8BWrnA+fGz57iN5Pb06pvBGvl5gQ0B48dJlslXvoTg==", + "node_modules/@gitbeaker/core": { + "version": "38.12.1", + "resolved": "https://registry.npmjs.org/@gitbeaker/core/-/core-38.12.1.tgz", + "integrity": "sha512-8XMVcBIdVAAoxn7JtqmZ2Ee8f+AZLcCPmqEmPFOXY2jPS84y/DERISg/+sbhhb18iRy+ZsZhpWgQ/r3CkYNJOQ==", "dev": true, + "license": "MIT", "dependencies": { - "sprintf-js": "~1.0.2" + "@gitbeaker/requester-utils": "^38.12.1", + "qs": "^6.11.1", + "xcase": "^2.0.1" + }, + "engines": { + "node": ">=18.0.0" } }, - "node_modules/arr-diff": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/arr-diff/-/arr-diff-4.0.0.tgz", - "integrity": "sha1-1kYQdP6/7HHn4VI1dhoyml3HxSA=", + "node_modules/@gitbeaker/requester-utils": { + "version": "38.12.1", + "resolved": "https://registry.npmjs.org/@gitbeaker/requester-utils/-/requester-utils-38.12.1.tgz", + "integrity": "sha512-Rc/DgngS0YPN+AY1s9UnexKSy4Lh0bkQVAq9p7PRbRpXb33SlTeCg8eg/8+A/mrMcHgYmP0XhH8lkizyA5tBUQ==", "dev": true, + "license": "MIT", + "dependencies": { + "qs": "^6.11.1", + "xcase": "^2.0.1" + }, "engines": { - "node": ">=0.10.0" + "node": ">=18.0.0" } }, - "node_modules/arr-filter": { - "version": "1.1.2", - "resolved": "https://registry.npmjs.org/arr-filter/-/arr-filter-1.1.2.tgz", - "integrity": "sha1-Q/3d0JHo7xGqTEXZzcGOLf8XEe4=", + "node_modules/@gitbeaker/rest": { + "version": "38.12.1", + "resolved": "https://registry.npmjs.org/@gitbeaker/rest/-/rest-38.12.1.tgz", + "integrity": "sha512-9KMSDtJ/sIov+5pcH+CAfiJXSiuYgN0KLKQFg0HHWR2DwcjGYkcbmhoZcWsaOWOqq4kihN1l7wX91UoRxxKKTQ==", "dev": true, + "license": "MIT", "dependencies": { - "make-iterator": "^1.0.0" + "@gitbeaker/core": "^38.12.1", + "@gitbeaker/requester-utils": "^38.12.1" }, "engines": { - "node": ">=0.10.0" + "node": ">=18.0.0" } }, - "node_modules/arr-flatten": { - "version": "1.1.0", - "resolved": "https://registry.npmjs.org/arr-flatten/-/arr-flatten-1.1.0.tgz", - "integrity": "sha512-L3hKV5R/p5o81R7O02IGnwpDmkp6E982XhtbuwSe3O4qOtMMMtodicASA1Cny2U+aCXcNpml+m4dPsvsJ3jatg==", + "node_modules/@humanfs/core": { + "version": "0.19.1", + "resolved": "https://registry.npmjs.org/@humanfs/core/-/core-0.19.1.tgz", + "integrity": "sha512-5DyQ4+1JEUzejeK1JGICcideyfUbGixgS9jNgex5nqkW+cY7WZhxBigmieN5Qnw9ZosSNVC9KQKyb+GUaGyKUA==", "dev": true, + "license": "Apache-2.0", "engines": { - "node": ">=0.10.0" + "node": ">=18.18.0" } }, - "node_modules/arr-map": { - "version": "2.0.2", - "resolved": "https://registry.npmjs.org/arr-map/-/arr-map-2.0.2.tgz", - "integrity": "sha1-Onc0X/wc814qkYJWAfnljy4kysQ=", + "node_modules/@humanfs/node": { + "version": "0.16.6", + "resolved": "https://registry.npmjs.org/@humanfs/node/-/node-0.16.6.tgz", + "integrity": "sha512-YuI2ZHQL78Q5HbhDiBA1X4LmYdXCKCMQIfw0pw7piHJwyREFebJUvrQN4cMssyES6x+vfUbx1CIpaQUKYdQZOw==", "dev": true, + "license": "Apache-2.0", "dependencies": { - "make-iterator": "^1.0.0" + "@humanfs/core": "^0.19.1", + "@humanwhocodes/retry": "^0.3.0" }, "engines": { - "node": ">=0.10.0" + "node": ">=18.18.0" } }, - "node_modules/arr-union": { - "version": "3.1.0", - "resolved": "https://registry.npmjs.org/arr-union/-/arr-union-3.1.0.tgz", - "integrity": "sha1-45sJrqne+Gao8gbiiK9jkZuuOcQ=", + "node_modules/@humanfs/node/node_modules/@humanwhocodes/retry": { + "version": "0.3.1", + "resolved": "https://registry.npmjs.org/@humanwhocodes/retry/-/retry-0.3.1.tgz", + "integrity": "sha512-JBxkERygn7Bv/GbN5Rv8Ul6LVknS+5Bp6RgDC/O8gEBU/yeH5Ui5C/OlWrTb6qct7LjjfT6Re2NxB0ln0yYybA==", "dev": true, + "license": "Apache-2.0", "engines": { - "node": ">=0.10.0" + "node": ">=18.18" + }, + "funding": { + "type": "github", + "url": "https://github.com/sponsors/nzakas" } }, - "node_modules/array-each": { + "node_modules/@humanwhocodes/module-importer": { "version": "1.0.1", - "resolved": "https://registry.npmjs.org/array-each/-/array-each-1.0.1.tgz", - "integrity": "sha1-p5SvDAWrF1KEbudTofIRoFugxE8=", + "resolved": "https://registry.npmjs.org/@humanwhocodes/module-importer/-/module-importer-1.0.1.tgz", + "integrity": "sha512-bxveV4V8v5Yb4ncFTT3rPSgZBOpCkjfK0y4oVVVJwIuDVBRMDXrPyXRL988i5ap9m9bnyEEjWfm5WkBmtffLfA==", "dev": true, + "license": "Apache-2.0", "engines": { - "node": ">=0.10.0" + "node": ">=12.22" + }, + "funding": { + "type": "github", + "url": "https://github.com/sponsors/nzakas" } }, - "node_modules/array-find-index": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/array-find-index/-/array-find-index-1.0.2.tgz", - "integrity": "sha1-3wEKoSh+Fku9pvlyOwqWoexBh6E=", + "node_modules/@humanwhocodes/retry": { + "version": "0.4.2", + "resolved": "https://registry.npmjs.org/@humanwhocodes/retry/-/retry-0.4.2.tgz", + "integrity": "sha512-xeO57FpIu4p1Ri3Jq/EXq4ClRm86dVF2z/+kvFnyqVYRavTZmaFaUBbWCOuuTh0o/g7DSsk6kc2vrS4Vl5oPOQ==", "dev": true, + "license": "Apache-2.0", "engines": { - "node": ">=0.10.0" + "node": ">=18.18" + }, + "funding": { + "type": "github", + "url": "https://github.com/sponsors/nzakas" } }, - "node_modules/array-initial": { - "version": "1.1.0", - "resolved": "https://registry.npmjs.org/array-initial/-/array-initial-1.1.0.tgz", - "integrity": "sha1-L6dLJnOTccOUe9enrcc74zSz15U=", + "node_modules/@ianvs/prettier-plugin-sort-imports": { + "version": "4.4.1", + "resolved": "https://registry.npmjs.org/@ianvs/prettier-plugin-sort-imports/-/prettier-plugin-sort-imports-4.4.1.tgz", + "integrity": "sha512-F0/Hrcfpy8WuxlQyAWJTEren/uxKhYonOGY4OyWmwRdeTvkh9mMSCxowZLjNkhwi/2ipqCgtXwwOk7tW0mWXkA==", "dev": true, + "license": "Apache-2.0", "dependencies": { - "array-slice": "^1.0.0", - "is-number": "^4.0.0" + "@babel/generator": "^7.26.2", + "@babel/parser": "^7.26.2", + "@babel/traverse": "^7.25.9", + "@babel/types": "^7.26.0", + "semver": "^7.5.2" }, - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/array-initial/node_modules/is-number": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/is-number/-/is-number-4.0.0.tgz", - "integrity": "sha512-rSklcAIlf1OmFdyAqbnWTLVelsQ58uvZ66S/ZyawjWqIviTWCjg2PzVGw8WUA+nNuPTqb4wgA+NszrJ+08LlgQ==", - "dev": true, - "engines": { - "node": ">=0.10.0" + "peerDependencies": { + "@vue/compiler-sfc": "2.7.x || 3.x", + "prettier": "2 || 3" + }, + "peerDependenciesMeta": { + "@vue/compiler-sfc": { + "optional": true + } } }, - "node_modules/array-last": { - "version": "1.3.0", - "resolved": "https://registry.npmjs.org/array-last/-/array-last-1.3.0.tgz", - "integrity": "sha512-eOCut5rXlI6aCOS7Z7kCplKRKyiFQ6dHFBem4PwlwKeNFk2/XxTrhRh5T9PyaEWGy/NHTZWbY+nsZlNFJu9rYg==", + "node_modules/@istanbuljs/load-nyc-config": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/@istanbuljs/load-nyc-config/-/load-nyc-config-1.1.0.tgz", + "integrity": "sha512-VjeHSlIzpv/NyD3N0YuHfXOPDIixcA1q2ZV98wsMqcYlPmv2n3Yb2lYP9XMElnaFVXg5A7YLTeLu6V84uQDjmQ==", "dev": true, + "license": "ISC", "dependencies": { - "is-number": "^4.0.0" + "camelcase": "^5.3.1", + "find-up": "^4.1.0", + "get-package-type": "^0.1.0", + "js-yaml": "^3.13.1", + "resolve-from": "^5.0.0" }, "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/array-last/node_modules/is-number": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/is-number/-/is-number-4.0.0.tgz", - "integrity": "sha512-rSklcAIlf1OmFdyAqbnWTLVelsQ58uvZ66S/ZyawjWqIviTWCjg2PzVGw8WUA+nNuPTqb4wgA+NszrJ+08LlgQ==", - "dev": true, - "engines": { - "node": ">=0.10.0" + "node": ">=8" } }, - "node_modules/array-slice": { - "version": "1.1.0", - "resolved": "https://registry.npmjs.org/array-slice/-/array-slice-1.1.0.tgz", - "integrity": "sha512-B1qMD3RBP7O8o0H2KbrXDyB0IccejMF15+87Lvlor12ONPRHP6gTjXMNkt/d3ZuOGbAe66hFmaCfECI24Ufp6w==", + "node_modules/@istanbuljs/load-nyc-config/node_modules/argparse": { + "version": "1.0.10", + "resolved": "https://registry.npmjs.org/argparse/-/argparse-1.0.10.tgz", + "integrity": "sha512-o5Roy6tNG4SL/FOkCAN6RzjiakZS25RLYFrcMttJqbdd8BWrnA+fGz57iN5Pb06pvBGvl5gQ0B48dJlslXvoTg==", "dev": true, - "engines": { - "node": ">=0.10.0" + "license": "MIT", + "dependencies": { + "sprintf-js": "~1.0.2" } }, - "node_modules/array-sort": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/array-sort/-/array-sort-1.0.0.tgz", - "integrity": "sha512-ihLeJkonmdiAsD7vpgN3CRcx2J2S0TiYW+IS/5zHBI7mKUq3ySvBdzzBfD236ubDBQFiiyG3SWCPc+msQ9KoYg==", + "node_modules/@istanbuljs/load-nyc-config/node_modules/find-up": { + "version": "4.1.0", + "resolved": "https://registry.npmjs.org/find-up/-/find-up-4.1.0.tgz", + "integrity": "sha512-PpOwAdQ/YlXQ2vj8a3h8IipDuYRi3wceVQQGYWxNINccq40Anw7BlsEXCMbt1Zt+OLA6Fq9suIpIWD0OsnISlw==", "dev": true, + "license": "MIT", "dependencies": { - "default-compare": "^1.0.0", - "get-value": "^2.0.6", - "kind-of": "^5.0.2" + "locate-path": "^5.0.0", + "path-exists": "^4.0.0" }, "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/array-sort/node_modules/kind-of": { - "version": "5.1.0", - "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-5.1.0.tgz", - "integrity": "sha512-NGEErnH6F2vUuXDh+OlbcKW7/wOcfdRHaZ7VWtqCztfHri/++YKmP51OdWeGPuqCOba6kk2OTe5d02VmTB80Pw==", - "dev": true, - "engines": { - "node": ">=0.10.0" + "node": ">=8" } }, - "node_modules/array-union": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/array-union/-/array-union-1.0.2.tgz", - "integrity": "sha1-mjRBDk9OPaI96jdb5b5w8kd47Dk=", + "node_modules/@istanbuljs/load-nyc-config/node_modules/js-yaml": { + "version": "3.14.1", + "resolved": "https://registry.npmjs.org/js-yaml/-/js-yaml-3.14.1.tgz", + "integrity": "sha512-okMH7OXXJ7YrN9Ok3/SXrnu4iX9yOk+25nqX4imS2npuvTYDmo/QEZoqwZkYaIDk3jVvBOTOIEgEhaLOynBS9g==", "dev": true, + "license": "MIT", "dependencies": { - "array-uniq": "^1.0.1" + "argparse": "^1.0.7", + "esprima": "^4.0.0" }, - "engines": { - "node": ">=0.10.0" + "bin": { + "js-yaml": "bin/js-yaml.js" } }, - "node_modules/array-uniq": { - "version": "1.0.3", - "resolved": "https://registry.npmjs.org/array-uniq/-/array-uniq-1.0.3.tgz", - "integrity": "sha1-r2rId6Jcx/dOBYiUdThY39sk/bY=", + "node_modules/@istanbuljs/load-nyc-config/node_modules/locate-path": { + "version": "5.0.0", + "resolved": "https://registry.npmjs.org/locate-path/-/locate-path-5.0.0.tgz", + "integrity": "sha512-t7hw9pI+WvuwNJXwk5zVHpyhIqzg2qTlklJOf0mVxGSbe3Fp2VieZcduNYjaLDoy6p9uGpQEGWG87WpMKlNq8g==", "dev": true, + "license": "MIT", + "dependencies": { + "p-locate": "^4.1.0" + }, "engines": { - "node": ">=0.10.0" + "node": ">=8" } }, - "node_modules/array-unique": { - "version": "0.3.2", - "resolved": "https://registry.npmjs.org/array-unique/-/array-unique-0.3.2.tgz", - "integrity": "sha1-qJS3XUvE9s1nnvMkSp/Y9Gri1Cg=", + "node_modules/@istanbuljs/load-nyc-config/node_modules/p-locate": { + "version": "4.1.0", + "resolved": "https://registry.npmjs.org/p-locate/-/p-locate-4.1.0.tgz", + "integrity": "sha512-R79ZZ/0wAxKGu3oYMlz8jy/kbhsNrS7SKZ7PxEHBgJ5+F2mtFW2fK2cOtBh1cHYkQsbzFV7I+EoRKe6Yt0oK7A==", "dev": true, + "license": "MIT", + "dependencies": { + "p-limit": "^2.2.0" + }, "engines": { - "node": ">=0.10.0" + "node": ">=8" } }, - "node_modules/arrify": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/arrify/-/arrify-1.0.1.tgz", - "integrity": "sha1-iYUI2iIm84DfkEcoRWhJwVAaSw0=", + "node_modules/@istanbuljs/load-nyc-config/node_modules/resolve-from": { + "version": "5.0.0", + "resolved": "https://registry.npmjs.org/resolve-from/-/resolve-from-5.0.0.tgz", + "integrity": "sha512-qYg9KP24dD5qka9J47d0aVky0N+b4fTU89LN9iDnjB5waksiC49rvMB0PrUJQGoTmH50XPiqOvAjDfaijGxYZw==", "dev": true, + "license": "MIT", "engines": { - "node": ">=0.10.0" + "node": ">=8" } }, - "node_modules/asap": { - "version": "2.0.6", - "resolved": "https://registry.npmjs.org/asap/-/asap-2.0.6.tgz", - "integrity": "sha1-5QNHYR1+aQlDIIu9r+vLwvuGbUY=", - "dev": true - }, - "node_modules/assertion-error": { - "version": "1.1.0", - "resolved": "https://registry.npmjs.org/assertion-error/-/assertion-error-1.1.0.tgz", - "integrity": "sha512-jgsaNduz+ndvGyFt3uSuWqvy4lCnIJiovtouQN5JZHOKCS2QuhEdbcQHFhVksz2N2U9hXJo8odG7ETyWlEeuDw==", + "node_modules/@istanbuljs/schema": { + "version": "0.1.3", + "resolved": "https://registry.npmjs.org/@istanbuljs/schema/-/schema-0.1.3.tgz", + "integrity": "sha512-ZXRY4jNvVgSVQ8DL3LTcakaAtXwTVUxE81hslsyD2AtoXW/wVob10HkOJ1X/pAlcI7D+2YoZKg5do8G/w6RYgA==", "dev": true, + "license": "MIT", "engines": { - "node": "*" + "node": ">=8" } }, - "node_modules/assign-symbols": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/assign-symbols/-/assign-symbols-1.0.0.tgz", - "integrity": "sha1-WWZ/QfrdTyDMvCu5a41Pf3jsA2c=", + "node_modules/@jest/console": { + "version": "29.7.0", + "resolved": "https://registry.npmjs.org/@jest/console/-/console-29.7.0.tgz", + "integrity": "sha512-5Ni4CU7XHQi32IJ398EEP4RrB8eV09sXP2ROqD4bksHrnTree52PsxvX8tpL8LvTZ3pFzXyPbNQReSN41CAhOg==", "dev": true, + "license": "MIT", + "dependencies": { + "@jest/types": "^29.6.3", + "@types/node": "*", + "chalk": "^4.0.0", + "jest-message-util": "^29.7.0", + "jest-util": "^29.7.0", + "slash": "^3.0.0" + }, "engines": { - "node": ">=0.10.0" + "node": "^14.15.0 || ^16.10.0 || >=18.0.0" } }, - "node_modules/astral-regex": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/astral-regex/-/astral-regex-2.0.0.tgz", - "integrity": "sha512-Z7tMw1ytTXt5jqMcOP+OQteU1VuNK9Y02uuJtKQ1Sv69jXQKKg5cibLwGJow8yzZP+eAc18EmLGPal0bp36rvQ==", + "node_modules/@jest/console/node_modules/ansi-styles": { + "version": "4.3.0", + "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-4.3.0.tgz", + "integrity": "sha512-zbB9rCJAT1rbjiVDb2hqKFHNYLxgtk8NURxZ3IZwD3F6NtxbXZQCnnSi1Lkx+IDohdPlFp222wVALIheZJQSEg==", "dev": true, + "license": "MIT", + "dependencies": { + "color-convert": "^2.0.1" + }, "engines": { "node": ">=8" + }, + "funding": { + "url": "https://github.com/chalk/ansi-styles?sponsor=1" } }, - "node_modules/async": { - "version": "2.6.4", - "resolved": "https://registry.npmjs.org/async/-/async-2.6.4.tgz", - "integrity": "sha512-mzo5dfJYwAn29PeiJ0zvwTo04zj8HDJj0Mn8TD7sno7q12prdbnasKJHhkm2c1LgrhlJ0teaea8860oxi51mGA==", + "node_modules/@jest/console/node_modules/chalk": { + "version": "4.1.2", + "resolved": "https://registry.npmjs.org/chalk/-/chalk-4.1.2.tgz", + "integrity": "sha512-oKnbhFyRIXpUuez8iBMmyEa4nbj4IOQyuhc/wy9kY7/WVPcwIO9VA668Pu8RkO7+0G76SLROeyw9CpQ061i4mA==", "dev": true, + "license": "MIT", "dependencies": { - "lodash": "^4.17.14" + "ansi-styles": "^4.1.0", + "supports-color": "^7.1.0" + }, + "engines": { + "node": ">=10" + }, + "funding": { + "url": "https://github.com/chalk/chalk?sponsor=1" } }, - "node_modules/async-done": { - "version": "1.3.2", - "resolved": "https://registry.npmjs.org/async-done/-/async-done-1.3.2.tgz", - "integrity": "sha512-uYkTP8dw2og1tu1nmza1n1CMW0qb8gWWlwqMmLb7MhBVs4BXrFziT6HXUd+/RlRA/i4H9AkofYloUbs1fwMqlw==", + "node_modules/@jest/console/node_modules/color-convert": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-2.0.1.tgz", + "integrity": "sha512-RRECPsj7iu/xb5oKYcsFHSppFNnsj/52OVTRKb4zP5onXwVF3zVmmToNcOfGC+CRDpfK/U584fMg38ZHCaElKQ==", "dev": true, + "license": "MIT", "dependencies": { - "end-of-stream": "^1.1.0", - "once": "^1.3.2", - "process-nextick-args": "^2.0.0", - "stream-exhaust": "^1.0.1" + "color-name": "~1.1.4" }, "engines": { - "node": ">= 0.10" + "node": ">=7.0.0" } }, - "node_modules/async-each": { - "version": "1.0.3", - "resolved": "https://registry.npmjs.org/async-each/-/async-each-1.0.3.tgz", - "integrity": "sha512-z/WhQ5FPySLdvREByI2vZiTWwCnF0moMJ1hK9YQwDTHKh6I7/uSckMetoRGb5UBZPC1z0jlw+n/XCgjeH7y1AQ==", - "dev": true + "node_modules/@jest/console/node_modules/color-name": { + "version": "1.1.4", + "resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.4.tgz", + "integrity": "sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA==", + "dev": true, + "license": "MIT" }, - "node_modules/async-retry": { - "version": "1.2.3", - "resolved": "https://registry.npmjs.org/async-retry/-/async-retry-1.2.3.tgz", - "integrity": "sha512-tfDb02Th6CE6pJUF2gjW5ZVjsgwlucVXOEQMvEX9JgSJMs9gAX+Nz3xRuJBKuUYjTSYORqvDBORdAQ3LU59g7Q==", + "node_modules/@jest/console/node_modules/has-flag": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-4.0.0.tgz", + "integrity": "sha512-EykJT/Q1KjTWctppgIAgfSO0tKVuZUjhgMr17kqTumMl6Afv3EISleU7qZUzoXDFTAHTDC4NOoG/ZxU3EvlMPQ==", "dev": true, - "dependencies": { - "retry": "0.12.0" + "license": "MIT", + "engines": { + "node": ">=8" } }, - "node_modules/async-settle": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/async-settle/-/async-settle-1.0.0.tgz", - "integrity": "sha1-HQqRS7Aldb7IqPOnTlCA9yssDGs=", + "node_modules/@jest/console/node_modules/supports-color": { + "version": "7.2.0", + "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-7.2.0.tgz", + "integrity": "sha512-qpCAvRl9stuOHveKsn7HncJRvv501qIacKzQlO/+Lwxc9+0q2wLyv4Dfvt80/DPn2pqOBsJdDiogXGR9+OvwRw==", "dev": true, + "license": "MIT", "dependencies": { - "async-done": "^1.2.2" + "has-flag": "^4.0.0" }, "engines": { - "node": ">= 0.10" + "node": ">=8" } }, - "node_modules/asynckit": { - "version": "0.4.0", - "resolved": "https://registry.npmjs.org/asynckit/-/asynckit-0.4.0.tgz", - "integrity": "sha1-x57Zf380y48robyXkLzDZkdLS3k=", - "dev": true - }, - "node_modules/atob": { - "version": "2.1.2", - "resolved": "https://registry.npmjs.org/atob/-/atob-2.1.2.tgz", - "integrity": "sha512-Wm6ukoaOGJi/73p/cl2GvLjTI5JM1k/O14isD73YML8StrH/7/lRFgmg8nICZgD3bZZvjwCGxtMOD3wWNAu8cg==", + "node_modules/@jest/expect-utils": { + "version": "29.7.0", + "resolved": "https://registry.npmjs.org/@jest/expect-utils/-/expect-utils-29.7.0.tgz", + "integrity": "sha512-GlsNBWiFQFCVi9QVSx7f5AgMeLxe9YCCs5PuP2O2LdjDAA8Jh9eX7lA1Jq/xdXw3Wb3hyvlFNfZIfcRetSzYcA==", "dev": true, - "bin": { - "atob": "bin/atob.js" + "license": "MIT", + "dependencies": { + "jest-get-type": "^29.6.3" }, "engines": { - "node": ">= 4.5.0" + "node": "^14.15.0 || ^16.10.0 || >=18.0.0" } }, - "node_modules/atob-lite": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/atob-lite/-/atob-lite-2.0.0.tgz", - "integrity": "sha1-D+9a1G8b16hQLGVyfwNn1e5D1pY=", - "dev": true - }, - "node_modules/bach": { - "version": "1.2.0", - "resolved": "https://registry.npmjs.org/bach/-/bach-1.2.0.tgz", - "integrity": "sha1-Szzpa/JxNPeaG0FKUcFONMO9mIA=", + "node_modules/@jest/schemas": { + "version": "29.6.3", + "resolved": "https://registry.npmjs.org/@jest/schemas/-/schemas-29.6.3.tgz", + "integrity": "sha512-mo5j5X+jIZmJQveBKeS/clAueipV7KgiX1vMgCxam1RNYiqE1w62n0/tJJnHtjW8ZHcQco5gY85jA3mi0L+nSA==", "dev": true, + "license": "MIT", "dependencies": { - "arr-filter": "^1.1.1", - "arr-flatten": "^1.0.1", - "arr-map": "^2.0.0", - "array-each": "^1.0.0", - "array-initial": "^1.0.0", - "array-last": "^1.1.1", - "async-done": "^1.2.2", - "async-settle": "^1.0.0", - "now-and-later": "^2.0.0" + "@sinclair/typebox": "^0.27.8" }, "engines": { - "node": ">= 0.10" + "node": "^14.15.0 || ^16.10.0 || >=18.0.0" } }, - "node_modules/balanced-match": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/balanced-match/-/balanced-match-1.0.0.tgz", - "integrity": "sha1-ibTRmasr7kneFk6gK4nORi1xt2c=", - "dev": true - }, - "node_modules/base": { - "version": "0.11.2", - "resolved": "https://registry.npmjs.org/base/-/base-0.11.2.tgz", - "integrity": "sha512-5T6P4xPgpp0YDFvSWwEZ4NoE3aM4QBQXDzmVbraCkFj8zHM+mba8SyqB5DbZWyR7mYHo6Y7BdQo3MoA4m0TeQg==", + "node_modules/@jest/test-result": { + "version": "29.7.0", + "resolved": "https://registry.npmjs.org/@jest/test-result/-/test-result-29.7.0.tgz", + "integrity": "sha512-Fdx+tv6x1zlkJPcWXmMDAG2HBnaR9XPSd5aDWQVsfrZmLVT3lU1cwyxLgRmXR9yrq4NBoEm9BMsfgFzTQAbJYA==", "dev": true, + "license": "MIT", "dependencies": { - "cache-base": "^1.0.1", - "class-utils": "^0.3.5", - "component-emitter": "^1.2.1", - "define-property": "^1.0.0", - "isobject": "^3.0.1", - "mixin-deep": "^1.2.0", - "pascalcase": "^0.1.1" + "@jest/console": "^29.7.0", + "@jest/types": "^29.6.3", + "@types/istanbul-lib-coverage": "^2.0.0", + "collect-v8-coverage": "^1.0.0" }, "engines": { - "node": ">=0.10.0" + "node": "^14.15.0 || ^16.10.0 || >=18.0.0" } }, - "node_modules/base/node_modules/define-property": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/define-property/-/define-property-1.0.0.tgz", - "integrity": "sha1-dp66rz9KY6rTr56NMEybvnm/sOY=", + "node_modules/@jest/transform": { + "version": "29.7.0", + "resolved": "https://registry.npmjs.org/@jest/transform/-/transform-29.7.0.tgz", + "integrity": "sha512-ok/BTPFzFKVMwO5eOHRrvnBVHdRy9IrsrW1GpMaQ9MCnilNLXQKmAX8s1YXDFaai9xJpac2ySzV0YeRRECr2Vw==", "dev": true, + "license": "MIT", "dependencies": { - "is-descriptor": "^1.0.0" + "@babel/core": "^7.11.6", + "@jest/types": "^29.6.3", + "@jridgewell/trace-mapping": "^0.3.18", + "babel-plugin-istanbul": "^6.1.1", + "chalk": "^4.0.0", + "convert-source-map": "^2.0.0", + "fast-json-stable-stringify": "^2.1.0", + "graceful-fs": "^4.2.9", + "jest-haste-map": "^29.7.0", + "jest-regex-util": "^29.6.3", + "jest-util": "^29.7.0", + "micromatch": "^4.0.4", + "pirates": "^4.0.4", + "slash": "^3.0.0", + "write-file-atomic": "^4.0.2" }, "engines": { - "node": ">=0.10.0" + "node": "^14.15.0 || ^16.10.0 || >=18.0.0" } }, - "node_modules/base/node_modules/is-accessor-descriptor": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/is-accessor-descriptor/-/is-accessor-descriptor-1.0.0.tgz", - "integrity": "sha512-m5hnHTkcVsPfqx3AKlyttIPb7J+XykHvJP2B9bZDjlhLIoEq4XoK64Vg7boZlVWYK6LUY94dYPEE7Lh0ZkZKcQ==", + "node_modules/@jest/transform/node_modules/ansi-styles": { + "version": "4.3.0", + "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-4.3.0.tgz", + "integrity": "sha512-zbB9rCJAT1rbjiVDb2hqKFHNYLxgtk8NURxZ3IZwD3F6NtxbXZQCnnSi1Lkx+IDohdPlFp222wVALIheZJQSEg==", "dev": true, + "license": "MIT", "dependencies": { - "kind-of": "^6.0.0" + "color-convert": "^2.0.1" }, "engines": { - "node": ">=0.10.0" + "node": ">=8" + }, + "funding": { + "url": "https://github.com/chalk/ansi-styles?sponsor=1" } }, - "node_modules/base/node_modules/is-data-descriptor": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/is-data-descriptor/-/is-data-descriptor-1.0.0.tgz", - "integrity": "sha512-jbRXy1FmtAoCjQkVmIVYwuuqDFUbaOeDjmed1tOGPrsMhtJA4rD9tkgA0F1qJ3gRFRXcHYVkdeaP50Q5rE/jLQ==", + "node_modules/@jest/transform/node_modules/chalk": { + "version": "4.1.2", + "resolved": "https://registry.npmjs.org/chalk/-/chalk-4.1.2.tgz", + "integrity": "sha512-oKnbhFyRIXpUuez8iBMmyEa4nbj4IOQyuhc/wy9kY7/WVPcwIO9VA668Pu8RkO7+0G76SLROeyw9CpQ061i4mA==", "dev": true, + "license": "MIT", "dependencies": { - "kind-of": "^6.0.0" + "ansi-styles": "^4.1.0", + "supports-color": "^7.1.0" }, "engines": { - "node": ">=0.10.0" + "node": ">=10" + }, + "funding": { + "url": "https://github.com/chalk/chalk?sponsor=1" } }, - "node_modules/base/node_modules/is-descriptor": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/is-descriptor/-/is-descriptor-1.0.2.tgz", - "integrity": "sha512-2eis5WqQGV7peooDyLmNEPUrps9+SXX5c9pL3xEB+4e9HnGuDa7mB7kHxHw4CbqS9k1T2hOH3miL8n8WtiYVtg==", + "node_modules/@jest/transform/node_modules/color-convert": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-2.0.1.tgz", + "integrity": "sha512-RRECPsj7iu/xb5oKYcsFHSppFNnsj/52OVTRKb4zP5onXwVF3zVmmToNcOfGC+CRDpfK/U584fMg38ZHCaElKQ==", "dev": true, + "license": "MIT", "dependencies": { - "is-accessor-descriptor": "^1.0.0", - "is-data-descriptor": "^1.0.0", - "kind-of": "^6.0.2" + "color-name": "~1.1.4" }, "engines": { - "node": ">=0.10.0" + "node": ">=7.0.0" } }, - "node_modules/basic-auth": { - "version": "1.1.0", - "resolved": "https://registry.npmjs.org/basic-auth/-/basic-auth-1.1.0.tgz", - "integrity": "sha1-RSIe5Cn37h5QNb4/UVM/HN/SmIQ=", + "node_modules/@jest/transform/node_modules/color-name": { + "version": "1.1.4", + "resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.4.tgz", + "integrity": "sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA==", + "dev": true, + "license": "MIT" + }, + "node_modules/@jest/transform/node_modules/has-flag": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-4.0.0.tgz", + "integrity": "sha512-EykJT/Q1KjTWctppgIAgfSO0tKVuZUjhgMr17kqTumMl6Afv3EISleU7qZUzoXDFTAHTDC4NOoG/ZxU3EvlMPQ==", "dev": true, + "license": "MIT", "engines": { - "node": ">= 0.6" + "node": ">=8" } }, - "node_modules/beeper": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/beeper/-/beeper-2.0.0.tgz", - "integrity": "sha512-+ShExQEewPvKdTUOtCAJmkUAgEyNF0QqgiAhPRE5xLvoFkIPt8xuHKaz1gMLzSMS73beHWs9gbRBngdH61nVWw==", + "node_modules/@jest/transform/node_modules/supports-color": { + "version": "7.2.0", + "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-7.2.0.tgz", + "integrity": "sha512-qpCAvRl9stuOHveKsn7HncJRvv501qIacKzQlO/+Lwxc9+0q2wLyv4Dfvt80/DPn2pqOBsJdDiogXGR9+OvwRw==", "dev": true, + "license": "MIT", "dependencies": { - "delay": "^4.1.0" + "has-flag": "^4.0.0" }, "engines": { "node": ">=8" } }, - "node_modules/before-after-hook": { - "version": "2.2.2", - "resolved": "https://registry.npmjs.org/before-after-hook/-/before-after-hook-2.2.2.tgz", - "integrity": "sha512-3pZEU3NT5BFUo/AD5ERPWOgQOCZITni6iavr5AUw5AUwQjMlI0kzu5btnyD39AF0gUEsDPwJT+oY1ORBJijPjQ==", - "dev": true - }, - "node_modules/benchmark": { - "version": "2.1.4", - "resolved": "https://registry.npmjs.org/benchmark/-/benchmark-2.1.4.tgz", - "integrity": "sha1-CfPeMckWQl1JjMLuVloOvzwqVik=", + "node_modules/@jest/types": { + "version": "29.6.3", + "resolved": "https://registry.npmjs.org/@jest/types/-/types-29.6.3.tgz", + "integrity": "sha512-u3UPsIilWKOM3F9CXtrG8LEJmNxwoCQC/XVj4IKYXvvpx7QIi/Kg1LI5uDmDpKlac62NUtX7eLjRh+jVZcLOzw==", "dev": true, + "license": "MIT", "dependencies": { - "lodash": "^4.17.4", - "platform": "^1.3.3" + "@jest/schemas": "^29.6.3", + "@types/istanbul-lib-coverage": "^2.0.0", + "@types/istanbul-reports": "^3.0.0", + "@types/node": "*", + "@types/yargs": "^17.0.8", + "chalk": "^4.0.0" + }, + "engines": { + "node": "^14.15.0 || ^16.10.0 || >=18.0.0" } }, - "node_modules/binary-extensions": { - "version": "1.13.1", - "resolved": "https://registry.npmjs.org/binary-extensions/-/binary-extensions-1.13.1.tgz", - "integrity": "sha512-Un7MIEDdUC5gNpcGDV97op1Ywk748MpHcFTHoYs6qnj1Z3j7I53VG3nwZhKzoBZmbdRNnb6WRdFlwl7tSDuZGw==", + "node_modules/@jest/types/node_modules/ansi-styles": { + "version": "4.3.0", + "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-4.3.0.tgz", + "integrity": "sha512-zbB9rCJAT1rbjiVDb2hqKFHNYLxgtk8NURxZ3IZwD3F6NtxbXZQCnnSi1Lkx+IDohdPlFp222wVALIheZJQSEg==", "dev": true, + "license": "MIT", + "dependencies": { + "color-convert": "^2.0.1" + }, "engines": { - "node": ">=0.10.0" + "node": ">=8" + }, + "funding": { + "url": "https://github.com/chalk/ansi-styles?sponsor=1" } }, - "node_modules/binaryextensions": { - "version": "2.1.2", - "resolved": "https://registry.npmjs.org/binaryextensions/-/binaryextensions-2.1.2.tgz", - "integrity": "sha512-xVNN69YGDghOqCCtA6FI7avYrr02mTJjOgB0/f1VPD3pJC8QEvjTKWc4epDx8AqxxA75NI0QpVM2gPJXUbE4Tg==", + "node_modules/@jest/types/node_modules/chalk": { + "version": "4.1.2", + "resolved": "https://registry.npmjs.org/chalk/-/chalk-4.1.2.tgz", + "integrity": "sha512-oKnbhFyRIXpUuez8iBMmyEa4nbj4IOQyuhc/wy9kY7/WVPcwIO9VA668Pu8RkO7+0G76SLROeyw9CpQ061i4mA==", "dev": true, + "license": "MIT", + "dependencies": { + "ansi-styles": "^4.1.0", + "supports-color": "^7.1.0" + }, "engines": { - "node": ">=0.8" + "node": ">=10" + }, + "funding": { + "url": "https://github.com/chalk/chalk?sponsor=1" } }, - "node_modules/bindings": { - "version": "1.5.0", - "resolved": "https://registry.npmjs.org/bindings/-/bindings-1.5.0.tgz", - "integrity": "sha512-p2q/t/mhvuOj/UeLlV6566GD/guowlr0hHxClI0W9m7MWYkL1F0hLo+0Aexs9HSPCtR1SXQ0TD3MMKrXZajbiQ==", + "node_modules/@jest/types/node_modules/color-convert": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-2.0.1.tgz", + "integrity": "sha512-RRECPsj7iu/xb5oKYcsFHSppFNnsj/52OVTRKb4zP5onXwVF3zVmmToNcOfGC+CRDpfK/U584fMg38ZHCaElKQ==", "dev": true, - "optional": true, + "license": "MIT", "dependencies": { - "file-uri-to-path": "1.0.0" + "color-name": "~1.1.4" + }, + "engines": { + "node": ">=7.0.0" } }, - "node_modules/bluebird": { - "version": "3.7.2", - "resolved": "https://registry.npmjs.org/bluebird/-/bluebird-3.7.2.tgz", - "integrity": "sha512-XpNj6GDQzdfW+r2Wnn7xiSAd7TM3jzkxGXBGTtWKuSXv1xUV+azxAm8jdWZN06QTQk+2N2XB9jRDkvbmQmcRtg==", - "dev": true + "node_modules/@jest/types/node_modules/color-name": { + "version": "1.1.4", + "resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.4.tgz", + "integrity": "sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA==", + "dev": true, + "license": "MIT" }, - "node_modules/brace-expansion": { - "version": "1.1.11", - "resolved": "https://registry.npmjs.org/brace-expansion/-/brace-expansion-1.1.11.tgz", - "integrity": "sha512-iCuPHDFgrHX7H2vEI/5xpz07zSHB00TpugqhmYtVmMO6518mCuRMoOYFldEBl0g187ufozdaHgWKcYFb61qGiA==", + "node_modules/@jest/types/node_modules/has-flag": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-4.0.0.tgz", + "integrity": "sha512-EykJT/Q1KjTWctppgIAgfSO0tKVuZUjhgMr17kqTumMl6Afv3EISleU7qZUzoXDFTAHTDC4NOoG/ZxU3EvlMPQ==", "dev": true, - "dependencies": { - "balanced-match": "^1.0.0", - "concat-map": "0.0.1" + "license": "MIT", + "engines": { + "node": ">=8" } }, - "node_modules/braces": { - "version": "2.3.2", - "resolved": "https://registry.npmjs.org/braces/-/braces-2.3.2.tgz", - "integrity": "sha512-aNdbnj9P8PjdXU4ybaWLK2IF3jc/EoDYbC7AazW6to3TRsfXxscC9UXOB5iDiEQrkyIbWp2SLQda4+QAa7nc3w==", + "node_modules/@jest/types/node_modules/supports-color": { + "version": "7.2.0", + "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-7.2.0.tgz", + "integrity": "sha512-qpCAvRl9stuOHveKsn7HncJRvv501qIacKzQlO/+Lwxc9+0q2wLyv4Dfvt80/DPn2pqOBsJdDiogXGR9+OvwRw==", "dev": true, + "license": "MIT", "dependencies": { - "arr-flatten": "^1.1.0", - "array-unique": "^0.3.2", - "extend-shallow": "^2.0.1", - "fill-range": "^4.0.0", - "isobject": "^3.0.1", - "repeat-element": "^1.1.2", - "snapdragon": "^0.8.1", - "snapdragon-node": "^2.0.1", - "split-string": "^3.0.2", - "to-regex": "^3.0.1" + "has-flag": "^4.0.0" }, "engines": { - "node": ">=0.10.0" + "node": ">=8" } }, - "node_modules/braces/node_modules/extend-shallow": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/extend-shallow/-/extend-shallow-2.0.1.tgz", - "integrity": "sha1-Ua99YUrZqfYQ6huvu5idaxxWiQ8=", + "node_modules/@jridgewell/gen-mapping": { + "version": "0.3.8", + "resolved": "https://registry.npmjs.org/@jridgewell/gen-mapping/-/gen-mapping-0.3.8.tgz", + "integrity": "sha512-imAbBGkb+ebQyxKgzv5Hu2nmROxoDOXHh80evxdoXNOrvAnVx7zimzc1Oo5h9RlfV4vPXaE2iM5pOFbvOCClWA==", "dev": true, + "license": "MIT", "dependencies": { - "is-extendable": "^0.1.0" + "@jridgewell/set-array": "^1.2.1", + "@jridgewell/sourcemap-codec": "^1.4.10", + "@jridgewell/trace-mapping": "^0.3.24" }, "engines": { - "node": ">=0.10.0" + "node": ">=6.0.0" } }, - "node_modules/browser-process-hrtime": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/browser-process-hrtime/-/browser-process-hrtime-1.0.0.tgz", - "integrity": "sha512-9o5UecI3GhkpM6DrXr69PblIuWxPKk9Y0jHBRhdocZ2y7YECBFCsHm79Pr3OyR2AvjhDkabFJaDJMYRazHgsow==", - "dev": true - }, - "node_modules/browser-stdout": { - "version": "1.3.1", - "resolved": "https://registry.npmjs.org/browser-stdout/-/browser-stdout-1.3.1.tgz", - "integrity": "sha512-qhAVI1+Av2X7qelOfAIYwXONood6XlZE/fXaBSmW/T5SzLAmCgzi+eiWE7fUvbHaeNBQH13UftjpXxsfLkMpgw==", - "dev": true - }, - "node_modules/btoa-lite": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/btoa-lite/-/btoa-lite-1.0.0.tgz", - "integrity": "sha1-M3dm2hWAEhD92VbCLpxokaudAzc=", - "dev": true - }, - "node_modules/buffer-equal": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/buffer-equal/-/buffer-equal-1.0.0.tgz", - "integrity": "sha1-WWFrSYME1Var1GaWayLu2j7KX74=", + "node_modules/@jridgewell/resolve-uri": { + "version": "3.1.2", + "resolved": "https://registry.npmjs.org/@jridgewell/resolve-uri/-/resolve-uri-3.1.2.tgz", + "integrity": "sha512-bRISgCIjP20/tbWSPWMEi54QVPRZExkuD9lJL+UIxUKtwVJA8wW1Trb1jMs1RFXo1CBTNZ/5hpC9QvmKWdopKw==", "dev": true, + "license": "MIT", "engines": { - "node": ">=0.4.0" + "node": ">=6.0.0" } }, - "node_modules/buffer-equal-constant-time": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/buffer-equal-constant-time/-/buffer-equal-constant-time-1.0.1.tgz", - "integrity": "sha1-+OcRMvf/5uAaXJaXpMbz5I1cyBk=", - "dev": true - }, - "node_modules/buffer-from": { - "version": "1.1.1", - "resolved": "https://registry.npmjs.org/buffer-from/-/buffer-from-1.1.1.tgz", - "integrity": "sha512-MQcXEUbCKtEo7bhqEs6560Hyd4XaovZlO/k9V3hjVUF/zwW7KBVdSK4gIt/bzwS9MbR5qob+F5jusZsb0YQK2A==", - "dev": true - }, - "node_modules/cache-base": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/cache-base/-/cache-base-1.0.1.tgz", - "integrity": "sha512-AKcdTnFSWATd5/GCPRxr2ChwIJ85CeyrEyjRHlKxQ56d4XJMGym0uAiKn0xbLOGOl3+yRpOTi484dVCEc5AUzQ==", + "node_modules/@jridgewell/set-array": { + "version": "1.2.1", + "resolved": "https://registry.npmjs.org/@jridgewell/set-array/-/set-array-1.2.1.tgz", + "integrity": "sha512-R8gLRTZeyp03ymzP/6Lil/28tGeGEzhx1q2k703KGWRAI1VdvPIXdG70VJc2pAMw3NA6JKL5hhFu1sJX0Mnn/A==", "dev": true, - "dependencies": { - "collection-visit": "^1.0.0", - "component-emitter": "^1.2.1", - "get-value": "^2.0.6", - "has-value": "^1.0.0", - "isobject": "^3.0.1", - "set-value": "^2.0.0", - "to-object-path": "^0.3.0", - "union-value": "^1.0.0", - "unset-value": "^1.0.0" - }, + "license": "MIT", "engines": { - "node": ">=0.10.0" + "node": ">=6.0.0" } }, - "node_modules/call-bind": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/call-bind/-/call-bind-1.0.2.tgz", - "integrity": "sha512-7O+FbCihrB5WGbFYesctwmTKae6rOiIzmz1icreWJ+0aA7LJfuqhEso2T9ncpcFtzMQtzXf2QGGueWJGTYsqrA==", + "node_modules/@jridgewell/source-map": { + "version": "0.3.6", + "resolved": "https://registry.npmjs.org/@jridgewell/source-map/-/source-map-0.3.6.tgz", + "integrity": "sha512-1ZJTZebgqllO79ue2bm3rIGud/bOe0pP5BjSRCRxxYkEZS8STV7zN84UBbiYu7jy+eCKSnVIUgoWWE/tt+shMQ==", "dev": true, + "license": "MIT", "dependencies": { - "function-bind": "^1.1.1", - "get-intrinsic": "^1.0.2" - }, - "funding": { - "url": "https://github.com/sponsors/ljharb" + "@jridgewell/gen-mapping": "^0.3.5", + "@jridgewell/trace-mapping": "^0.3.25" } }, - "node_modules/call-me-maybe": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/call-me-maybe/-/call-me-maybe-1.0.1.tgz", - "integrity": "sha1-JtII6onje1y95gJQoV8DHBak1ms=", - "dev": true + "node_modules/@jridgewell/sourcemap-codec": { + "version": "1.5.0", + "resolved": "https://registry.npmjs.org/@jridgewell/sourcemap-codec/-/sourcemap-codec-1.5.0.tgz", + "integrity": "sha512-gv3ZRaISU3fjPAgNsriBRqGWQL6quFx04YMPW/zD8XMLsU32mhCCbfbO6KZFLjvYpCZ8zyDEgqsgf+PwPaM7GQ==", + "dev": true, + "license": "MIT" }, - "node_modules/caller-callsite": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/caller-callsite/-/caller-callsite-2.0.0.tgz", - "integrity": "sha1-hH4PzgoiN1CpoCfFSzNzGtMVQTQ=", + "node_modules/@jridgewell/trace-mapping": { + "version": "0.3.25", + "resolved": "https://registry.npmjs.org/@jridgewell/trace-mapping/-/trace-mapping-0.3.25.tgz", + "integrity": "sha512-vNk6aEwybGtawWmy/PzwnGDOjCkLWSD2wqvjGGAgOAwCGWySYXfYoxt00IJkTF+8Lb57DwOb3Aa0o9CApepiYQ==", "dev": true, + "license": "MIT", "dependencies": { - "callsites": "^2.0.0" - }, - "engines": { - "node": ">=4" + "@jridgewell/resolve-uri": "^3.1.0", + "@jridgewell/sourcemap-codec": "^1.4.14" } }, - "node_modules/caller-path": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/caller-path/-/caller-path-2.0.0.tgz", - "integrity": "sha1-Ro+DBE42mrIBD6xfBs7uFbsssfQ=", + "node_modules/@kwsites/file-exists": { + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/@kwsites/file-exists/-/file-exists-1.1.1.tgz", + "integrity": "sha512-m9/5YGR18lIwxSFDwfE3oA7bWuq9kdau6ugN4H2rJeyhFQZcG9AgSHkQtSD15a8WvTgfz9aikZMrKPHvbpqFiw==", "dev": true, + "license": "MIT", "dependencies": { - "caller-callsite": "^2.0.0" - }, - "engines": { - "node": ">=4" + "debug": "^4.1.1" } }, - "node_modules/callsites": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/callsites/-/callsites-2.0.0.tgz", - "integrity": "sha1-BuuE8A7qQT2oav/vrL/7Ngk7PFA=", + "node_modules/@kwsites/promise-deferred": { + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/@kwsites/promise-deferred/-/promise-deferred-1.1.1.tgz", + "integrity": "sha512-GaHYm+c0O9MjZRu0ongGBRbinu8gVAMd2UZjji6jVmqKtZluZnptXGWhz1E8j8D2HJ3f/yMxKAUC0b+57wncIw==", + "dev": true, + "license": "MIT" + }, + "node_modules/@nodelib/fs.scandir": { + "version": "2.1.5", + "resolved": "https://registry.npmjs.org/@nodelib/fs.scandir/-/fs.scandir-2.1.5.tgz", + "integrity": "sha512-vq24Bq3ym5HEQm2NKCr3yXDwjc7vTsEThRDnkp2DK9p1uqLR+DHurm/NOTo0KG7HYHU7eppKZj3MyqYuMBf62g==", "dev": true, + "license": "MIT", + "dependencies": { + "@nodelib/fs.stat": "2.0.5", + "run-parallel": "^1.1.9" + }, "engines": { - "node": ">=4" + "node": ">= 8" } }, - "node_modules/camelcase": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/camelcase/-/camelcase-3.0.0.tgz", - "integrity": "sha1-MvxLn82vhF/N9+c7uXysImHwqwo=", + "node_modules/@nodelib/fs.stat": { + "version": "2.0.5", + "resolved": "https://registry.npmjs.org/@nodelib/fs.stat/-/fs.stat-2.0.5.tgz", + "integrity": "sha512-RkhPPp2zrqDAQA/2jNhnztcPAlv64XdhIp7a7454A5ovI7Bukxgt7MX7udwAu3zg1DcpPU0rz3VV1SeaqvY4+A==", "dev": true, + "license": "MIT", "engines": { - "node": ">=0.10.0" + "node": ">= 8" } }, - "node_modules/camelcase-keys": { - "version": "4.2.0", - "resolved": "https://registry.npmjs.org/camelcase-keys/-/camelcase-keys-4.2.0.tgz", - "integrity": "sha1-oqpfsa9oh1glnDLBQUJteJI7m3c=", + "node_modules/@nodelib/fs.walk": { + "version": "1.2.8", + "resolved": "https://registry.npmjs.org/@nodelib/fs.walk/-/fs.walk-1.2.8.tgz", + "integrity": "sha512-oGB+UxlgWcgQkgwo8GcEGwemoTFt3FIO9ababBmaGwXIoBKZ+GTy0pP185beGg7Llih/NSHSV2XAs1lnznocSg==", "dev": true, + "license": "MIT", "dependencies": { - "camelcase": "^4.1.0", - "map-obj": "^2.0.0", - "quick-lru": "^1.0.0" + "@nodelib/fs.scandir": "2.1.5", + "fastq": "^1.6.0" }, "engines": { - "node": ">=4" + "node": ">= 8" } }, - "node_modules/camelcase-keys/node_modules/camelcase": { - "version": "4.1.0", - "resolved": "https://registry.npmjs.org/camelcase/-/camelcase-4.1.0.tgz", - "integrity": "sha1-1UVjW+HjPFQmScaRc+Xeas+uNN0=", + "node_modules/@octokit/auth-token": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/@octokit/auth-token/-/auth-token-4.0.0.tgz", + "integrity": "sha512-tY/msAuJo6ARbK6SPIxZrPBms3xPbfwBrulZe0Wtr/DIY9lje2HeV1uoebShn6mx7SjCHif6EjMvoREj+gZ+SA==", "dev": true, + "license": "MIT", "engines": { - "node": ">=4" + "node": ">= 18" } }, - "node_modules/catharsis": { - "version": "0.9.0", - "resolved": "https://registry.npmjs.org/catharsis/-/catharsis-0.9.0.tgz", - "integrity": "sha512-prMTQVpcns/tzFgFVkVp6ak6RykZyWb3gu8ckUpd6YkTlacOd3DXGJjIpD4Q6zJirizvaiAjSSHlOsA+6sNh2A==", + "node_modules/@octokit/core": { + "version": "5.2.1", + "resolved": "https://registry.npmjs.org/@octokit/core/-/core-5.2.1.tgz", + "integrity": "sha512-dKYCMuPO1bmrpuogcjQ8z7ICCH3FP6WmxpwC03yjzGfZhj9fTJg6+bS1+UAplekbN2C+M61UNllGOOoAfGCrdQ==", "dev": true, + "license": "MIT", "dependencies": { - "lodash": "^4.17.15" + "@octokit/auth-token": "^4.0.0", + "@octokit/graphql": "^7.1.0", + "@octokit/request": "^8.4.1", + "@octokit/request-error": "^5.1.1", + "@octokit/types": "^13.0.0", + "before-after-hook": "^2.2.0", + "universal-user-agent": "^6.0.0" }, "engines": { - "node": ">= 10" + "node": ">= 18" } }, - "node_modules/chai": { - "version": "4.2.0", - "resolved": "https://registry.npmjs.org/chai/-/chai-4.2.0.tgz", - "integrity": "sha512-XQU3bhBukrOsQCuwZndwGcCVQHyZi53fQ6Ys1Fym7E4olpIqqZZhhoFJoaKVvV17lWQoXYwgWN2nF5crA8J2jw==", + "node_modules/@octokit/endpoint": { + "version": "9.0.6", + "resolved": "https://registry.npmjs.org/@octokit/endpoint/-/endpoint-9.0.6.tgz", + "integrity": "sha512-H1fNTMA57HbkFESSt3Y9+FBICv+0jFceJFPWDePYlR/iMGrwM5ph+Dd4XRQs+8X+PUFURLQgX9ChPfhJ/1uNQw==", "dev": true, + "license": "MIT", "dependencies": { - "assertion-error": "^1.1.0", - "check-error": "^1.0.2", - "deep-eql": "^3.0.1", - "get-func-name": "^2.0.0", - "pathval": "^1.1.0", - "type-detect": "^4.0.5" + "@octokit/types": "^13.1.0", + "universal-user-agent": "^6.0.0" }, "engines": { - "node": ">=4" + "node": ">= 18" } }, - "node_modules/chalk": { - "version": "2.4.2", - "resolved": "https://registry.npmjs.org/chalk/-/chalk-2.4.2.tgz", - "integrity": "sha512-Mti+f9lpJNcwF4tWV8/OrTTtF1gZi+f8FqlyAdouralcFWFQWF2+NgCHShjkCb+IFBLq9buZwE1xckQU4peSuQ==", + "node_modules/@octokit/graphql": { + "version": "7.1.1", + "resolved": "https://registry.npmjs.org/@octokit/graphql/-/graphql-7.1.1.tgz", + "integrity": "sha512-3mkDltSfcDUoa176nlGoA32RGjeWjl3K7F/BwHwRMJUW/IteSa4bnSV8p2ThNkcIcZU2umkZWxwETSSCJf2Q7g==", "dev": true, + "license": "MIT", "dependencies": { - "ansi-styles": "^3.2.1", - "escape-string-regexp": "^1.0.5", - "supports-color": "^5.3.0" + "@octokit/request": "^8.4.1", + "@octokit/types": "^13.0.0", + "universal-user-agent": "^6.0.0" }, "engines": { - "node": ">=4" + "node": ">= 18" } }, - "node_modules/chalk/node_modules/supports-color": { - "version": "5.5.0", - "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-5.5.0.tgz", - "integrity": "sha512-QjVjwdXIt408MIiAqCX4oUKsgU2EqAGzs2Ppkm4aQYbjm+ZEWEcW4SfFNTr4uMNZma0ey4f5lgLrkB0aX0QMow==", + "node_modules/@octokit/openapi-types": { + "version": "24.2.0", + "resolved": "https://registry.npmjs.org/@octokit/openapi-types/-/openapi-types-24.2.0.tgz", + "integrity": "sha512-9sIH3nSUttelJSXUrmGzl7QUBFul0/mB8HRYl3fOlgHbIWG+WnYDXU3v/2zMtAvuzZ/ed00Ei6on975FhBfzrg==", + "dev": true, + "license": "MIT" + }, + "node_modules/@octokit/plugin-paginate-rest": { + "version": "11.4.4-cjs.2", + "resolved": "https://registry.npmjs.org/@octokit/plugin-paginate-rest/-/plugin-paginate-rest-11.4.4-cjs.2.tgz", + "integrity": "sha512-2dK6z8fhs8lla5PaOTgqfCGBxgAv/le+EhPs27KklPhm1bKObpu6lXzwfUEQ16ajXzqNrKMujsFyo9K2eaoISw==", "dev": true, + "license": "MIT", "dependencies": { - "has-flag": "^3.0.0" + "@octokit/types": "^13.7.0" }, "engines": { - "node": ">=4" + "node": ">= 18" + }, + "peerDependencies": { + "@octokit/core": "5" } }, - "node_modules/check-error": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/check-error/-/check-error-1.0.2.tgz", - "integrity": "sha1-V00xLt2Iu13YkS6Sht1sCu1KrII=", + "node_modules/@octokit/plugin-request-log": { + "version": "4.0.1", + "resolved": "https://registry.npmjs.org/@octokit/plugin-request-log/-/plugin-request-log-4.0.1.tgz", + "integrity": "sha512-GihNqNpGHorUrO7Qa9JbAl0dbLnqJVrV8OXe2Zm5/Y4wFkZQDfTreBzVmiRfJVfE4mClXdihHnbpyyO9FSX4HA==", "dev": true, + "license": "MIT", "engines": { - "node": "*" + "node": ">= 18" + }, + "peerDependencies": { + "@octokit/core": "5" } }, - "node_modules/chokidar": { - "version": "2.1.8", - "resolved": "https://registry.npmjs.org/chokidar/-/chokidar-2.1.8.tgz", - "integrity": "sha512-ZmZUazfOzf0Nve7duiCKD23PFSCs4JPoYyccjUFF3aQkQadqBhfzhjkwBH2mNOG9cTBwhamM37EIsIkZw3nRgg==", - "deprecated": "Chokidar 2 does not receive security updates since 2019. Upgrade to chokidar 3 with 15x fewer dependencies", + "node_modules/@octokit/plugin-rest-endpoint-methods": { + "version": "13.3.2-cjs.1", + "resolved": "https://registry.npmjs.org/@octokit/plugin-rest-endpoint-methods/-/plugin-rest-endpoint-methods-13.3.2-cjs.1.tgz", + "integrity": "sha512-VUjIjOOvF2oELQmiFpWA1aOPdawpyaCUqcEBc/UOUnj3Xp6DJGrJ1+bjUIIDzdHjnFNO6q57ODMfdEZnoBkCwQ==", "dev": true, + "license": "MIT", "dependencies": { - "anymatch": "^2.0.0", - "async-each": "^1.0.1", - "braces": "^2.3.2", - "glob-parent": "^3.1.0", - "inherits": "^2.0.3", - "is-binary-path": "^1.0.0", - "is-glob": "^4.0.0", - "normalize-path": "^3.0.0", - "path-is-absolute": "^1.0.0", - "readdirp": "^2.2.1", - "upath": "^1.1.1" + "@octokit/types": "^13.8.0" }, - "optionalDependencies": { - "fsevents": "^1.2.7" - } - }, - "node_modules/chokidar/node_modules/normalize-path": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/normalize-path/-/normalize-path-3.0.0.tgz", - "integrity": "sha512-6eZs5Ls3WtCisHWp9S2GUy8dqkpGi4BVSz3GaqiE6ezub0512ESztXUwUB6C6IKbQkY2Pnb/mD4WYojCRwcwLA==", - "dev": true, "engines": { - "node": ">=0.10.0" + "node": ">= 18" + }, + "peerDependencies": { + "@octokit/core": "^5" } }, - "node_modules/class-utils": { - "version": "0.3.6", - "resolved": "https://registry.npmjs.org/class-utils/-/class-utils-0.3.6.tgz", - "integrity": "sha512-qOhPa/Fj7s6TY8H8esGu5QNpMMQxz79h+urzrNYN6mn+9BnxlDGf5QZ+XeCDsxSjPqsSR56XOZOJmpeurnLMeg==", + "node_modules/@octokit/request": { + "version": "8.4.1", + "resolved": "https://registry.npmjs.org/@octokit/request/-/request-8.4.1.tgz", + "integrity": "sha512-qnB2+SY3hkCmBxZsR/MPCybNmbJe4KAlfWErXq+rBKkQJlbjdJeS85VI9r8UqeLYLvnAenU8Q1okM/0MBsAGXw==", "dev": true, + "license": "MIT", "dependencies": { - "arr-union": "^3.1.0", - "define-property": "^0.2.5", - "isobject": "^3.0.0", - "static-extend": "^0.1.1" + "@octokit/endpoint": "^9.0.6", + "@octokit/request-error": "^5.1.1", + "@octokit/types": "^13.1.0", + "universal-user-agent": "^6.0.0" }, "engines": { - "node": ">=0.10.0" + "node": ">= 18" } }, - "node_modules/class-utils/node_modules/define-property": { - "version": "0.2.5", - "resolved": "https://registry.npmjs.org/define-property/-/define-property-0.2.5.tgz", - "integrity": "sha1-w1se+RjsPJkPmlvFe+BKrOxcgRY=", + "node_modules/@octokit/request-error": { + "version": "5.1.1", + "resolved": "https://registry.npmjs.org/@octokit/request-error/-/request-error-5.1.1.tgz", + "integrity": "sha512-v9iyEQJH6ZntoENr9/yXxjuezh4My67CBSu9r6Ve/05Iu5gNgnisNWOsoJHTP6k0Rr0+HQIpnH+kyammu90q/g==", "dev": true, + "license": "MIT", "dependencies": { - "is-descriptor": "^0.1.0" + "@octokit/types": "^13.1.0", + "deprecation": "^2.0.0", + "once": "^1.4.0" }, "engines": { - "node": ">=0.10.0" + "node": ">= 18" } }, - "node_modules/clean-css": { - "version": "4.2.3", - "resolved": "https://registry.npmjs.org/clean-css/-/clean-css-4.2.3.tgz", - "integrity": "sha512-VcMWDN54ZN/DS+g58HYL5/n4Zrqe8vHJpGA8KdgUXFU4fuP/aHNw8eld9SyEIyabIMJX/0RaY/fplOo5hYLSFA==", + "node_modules/@octokit/rest": { + "version": "20.1.2", + "resolved": "https://registry.npmjs.org/@octokit/rest/-/rest-20.1.2.tgz", + "integrity": "sha512-GmYiltypkHHtihFwPRxlaorG5R9VAHuk/vbszVoRTGXnAsY60wYLkh/E2XiFmdZmqrisw+9FaazS1i5SbdWYgA==", "dev": true, + "license": "MIT", "dependencies": { - "source-map": "~0.6.0" + "@octokit/core": "^5.0.2", + "@octokit/plugin-paginate-rest": "11.4.4-cjs.2", + "@octokit/plugin-request-log": "^4.0.0", + "@octokit/plugin-rest-endpoint-methods": "13.3.2-cjs.1" }, "engines": { - "node": ">= 4.0" + "node": ">= 18" } }, - "node_modules/clean-css/node_modules/source-map": { - "version": "0.6.1", - "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.6.1.tgz", - "integrity": "sha512-UjgapumWlbMhkBgzT7Ykc5YXUT46F0iKu8SGXq0bcwP5dz/h0Plj6enJqjz1Zbq2l5WaqYnrVbwWOWMyF3F47g==", + "node_modules/@octokit/types": { + "version": "13.10.0", + "resolved": "https://registry.npmjs.org/@octokit/types/-/types-13.10.0.tgz", + "integrity": "sha512-ifLaO34EbbPj0Xgro4G5lP5asESjwHracYJvVaPIyXMuiuXLlhic3S47cBdTb+jfODkTE5YtGCLt3Ay3+J97sA==", "dev": true, - "engines": { - "node": ">=0.10.0" + "license": "MIT", + "dependencies": { + "@octokit/openapi-types": "^24.2.0" } }, - "node_modules/cliui": { - "version": "3.2.0", - "resolved": "https://registry.npmjs.org/cliui/-/cliui-3.2.0.tgz", - "integrity": "sha1-EgYBU3qRbSmUD5NNo7SNWFo5IT0=", + "node_modules/@prettier/sync": { + "version": "0.5.5", + "resolved": "https://registry.npmjs.org/@prettier/sync/-/sync-0.5.5.tgz", + "integrity": "sha512-6BMtNr7aQhyNcGzmumkL0tgr1YQGfm9d7ZdmRpWqWuqpc9vZBind4xMe5NMiRECOhjuSiWHfBWLBnXkpeE90bw==", "dev": true, + "license": "MIT", "dependencies": { - "string-width": "^1.0.1", - "strip-ansi": "^3.0.1", - "wrap-ansi": "^2.0.0" + "make-synchronized": "^0.4.2" + }, + "funding": { + "url": "https://github.com/prettier/prettier-synchronized?sponsor=1" + }, + "peerDependencies": { + "prettier": "*" } }, - "node_modules/clone": { - "version": "2.1.2", - "resolved": "https://registry.npmjs.org/clone/-/clone-2.1.2.tgz", - "integrity": "sha1-G39Ln1kfHo+DZwQBYANFoCiHQ18=", + "node_modules/@rollup/plugin-commonjs": { + "version": "28.0.3", + "resolved": "https://registry.npmjs.org/@rollup/plugin-commonjs/-/plugin-commonjs-28.0.3.tgz", + "integrity": "sha512-pyltgilam1QPdn+Zd9gaCfOLcnjMEJ9gV+bTw6/r73INdvzf1ah9zLIJBm+kW7R6IUFIQ1YO+VqZtYxZNWFPEQ==", "dev": true, + "license": "MIT", + "dependencies": { + "@rollup/pluginutils": "^5.0.1", + "commondir": "^1.0.1", + "estree-walker": "^2.0.2", + "fdir": "^6.2.0", + "is-reference": "1.2.1", + "magic-string": "^0.30.3", + "picomatch": "^4.0.2" + }, "engines": { - "node": ">=0.8" + "node": ">=16.0.0 || 14 >= 14.17" + }, + "peerDependencies": { + "rollup": "^2.68.0||^3.0.0||^4.0.0" + }, + "peerDependenciesMeta": { + "rollup": { + "optional": true + } } }, - "node_modules/clone-buffer": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/clone-buffer/-/clone-buffer-1.0.0.tgz", - "integrity": "sha1-4+JbIHrE5wGvch4staFnksrD3Fg=", + "node_modules/@rollup/plugin-terser": { + "version": "0.4.4", + "resolved": "https://registry.npmjs.org/@rollup/plugin-terser/-/plugin-terser-0.4.4.tgz", + "integrity": "sha512-XHeJC5Bgvs8LfukDwWZp7yeqin6ns8RTl2B9avbejt6tZqsqvVoWI7ZTQrcNsfKEDWBTnTxM8nMDkO2IFFbd0A==", "dev": true, + "license": "MIT", + "dependencies": { + "serialize-javascript": "^6.0.1", + "smob": "^1.0.0", + "terser": "^5.17.4" + }, "engines": { - "node": ">= 0.10" + "node": ">=14.0.0" + }, + "peerDependencies": { + "rollup": "^2.0.0||^3.0.0||^4.0.0" + }, + "peerDependenciesMeta": { + "rollup": { + "optional": true + } } }, - "node_modules/clone-stats": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/clone-stats/-/clone-stats-1.0.0.tgz", - "integrity": "sha1-s3gt/4u1R04Yuba/D9/ngvh3doA=", - "dev": true - }, - "node_modules/cloneable-readable": { - "version": "1.1.2", - "resolved": "https://registry.npmjs.org/cloneable-readable/-/cloneable-readable-1.1.2.tgz", - "integrity": "sha512-Bq6+4t+lbM8vhTs/Bef5c5AdEMtapp/iFb6+s4/Hh9MVTt8OLKH7ZOOZSCT+Ys7hsHvqv0GuMPJ1lnQJVHvxpg==", + "node_modules/@rollup/pluginutils": { + "version": "5.1.4", + "resolved": "https://registry.npmjs.org/@rollup/pluginutils/-/pluginutils-5.1.4.tgz", + "integrity": "sha512-USm05zrsFxYLPdWWq+K3STlWiT/3ELn3RcV5hJMghpeAIhxfsUIg6mt12CBJBInWMV4VneoV7SfGv8xIwo2qNQ==", "dev": true, + "license": "MIT", "dependencies": { - "inherits": "^2.0.1", - "process-nextick-args": "^2.0.0", - "readable-stream": "^2.3.5" - } - }, - "node_modules/code-point-at": { - "version": "1.1.0", - "resolved": "https://registry.npmjs.org/code-point-at/-/code-point-at-1.1.0.tgz", - "integrity": "sha1-DQcLTQQ6W+ozovGkDi7bPZpMz3c=", - "dev": true, + "@types/estree": "^1.0.0", + "estree-walker": "^2.0.2", + "picomatch": "^4.0.2" + }, "engines": { - "node": ">=0.10.0" + "node": ">=14.0.0" + }, + "peerDependencies": { + "rollup": "^1.20.0||^2.0.0||^3.0.0||^4.0.0" + }, + "peerDependenciesMeta": { + "rollup": { + "optional": true + } } }, - "node_modules/collection-map": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/collection-map/-/collection-map-1.0.0.tgz", - "integrity": "sha1-rqDwb40mx4DCt1SUOFVEsiVa8Yw=", + "node_modules/@rollup/rollup-android-arm-eabi": { + "version": "4.40.0", + "resolved": "https://registry.npmjs.org/@rollup/rollup-android-arm-eabi/-/rollup-android-arm-eabi-4.40.0.tgz", + "integrity": "sha512-+Fbls/diZ0RDerhE8kyC6hjADCXA1K4yVNlH0EYfd2XjyH0UGgzaQ8MlT0pCXAThfxv3QUAczHaL+qSv1E4/Cg==", + "cpu": [ + "arm" + ], "dev": true, - "dependencies": { - "arr-map": "^2.0.2", - "for-own": "^1.0.0", - "make-iterator": "^1.0.0" - }, - "engines": { - "node": ">=0.10.0" - } + "license": "MIT", + "optional": true, + "os": [ + "android" + ] + }, + "node_modules/@rollup/rollup-android-arm64": { + "version": "4.40.0", + "resolved": "https://registry.npmjs.org/@rollup/rollup-android-arm64/-/rollup-android-arm64-4.40.0.tgz", + "integrity": "sha512-PPA6aEEsTPRz+/4xxAmaoWDqh67N7wFbgFUJGMnanCFs0TV99M0M8QhhaSCks+n6EbQoFvLQgYOGXxlMGQe/6w==", + "cpu": [ + "arm64" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "android" + ] + }, + "node_modules/@rollup/rollup-darwin-arm64": { + "version": "4.40.0", + "resolved": "https://registry.npmjs.org/@rollup/rollup-darwin-arm64/-/rollup-darwin-arm64-4.40.0.tgz", + "integrity": "sha512-GwYOcOakYHdfnjjKwqpTGgn5a6cUX7+Ra2HeNj/GdXvO2VJOOXCiYYlRFU4CubFM67EhbmzLOmACKEfvp3J1kQ==", + "cpu": [ + "arm64" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "darwin" + ] + }, + "node_modules/@rollup/rollup-darwin-x64": { + "version": "4.40.0", + "resolved": "https://registry.npmjs.org/@rollup/rollup-darwin-x64/-/rollup-darwin-x64-4.40.0.tgz", + "integrity": "sha512-CoLEGJ+2eheqD9KBSxmma6ld01czS52Iw0e2qMZNpPDlf7Z9mj8xmMemxEucinev4LgHalDPczMyxzbq+Q+EtA==", + "cpu": [ + "x64" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "darwin" + ] + }, + "node_modules/@rollup/rollup-freebsd-arm64": { + "version": "4.40.0", + "resolved": "https://registry.npmjs.org/@rollup/rollup-freebsd-arm64/-/rollup-freebsd-arm64-4.40.0.tgz", + "integrity": "sha512-r7yGiS4HN/kibvESzmrOB/PxKMhPTlz+FcGvoUIKYoTyGd5toHp48g1uZy1o1xQvybwwpqpe010JrcGG2s5nkg==", + "cpu": [ + "arm64" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "freebsd" + ] + }, + "node_modules/@rollup/rollup-freebsd-x64": { + "version": "4.40.0", + "resolved": "https://registry.npmjs.org/@rollup/rollup-freebsd-x64/-/rollup-freebsd-x64-4.40.0.tgz", + "integrity": "sha512-mVDxzlf0oLzV3oZOr0SMJ0lSDd3xC4CmnWJ8Val8isp9jRGl5Dq//LLDSPFrasS7pSm6m5xAcKaw3sHXhBjoRw==", + "cpu": [ + "x64" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "freebsd" + ] + }, + "node_modules/@rollup/rollup-linux-arm-gnueabihf": { + "version": "4.40.0", + "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-arm-gnueabihf/-/rollup-linux-arm-gnueabihf-4.40.0.tgz", + "integrity": "sha512-y/qUMOpJxBMy8xCXD++jeu8t7kzjlOCkoxxajL58G62PJGBZVl/Gwpm7JK9+YvlB701rcQTzjUZ1JgUoPTnoQA==", + "cpu": [ + "arm" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "linux" + ] + }, + "node_modules/@rollup/rollup-linux-arm-musleabihf": { + "version": "4.40.0", + "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-arm-musleabihf/-/rollup-linux-arm-musleabihf-4.40.0.tgz", + "integrity": "sha512-GoCsPibtVdJFPv/BOIvBKO/XmwZLwaNWdyD8TKlXuqp0veo2sHE+A/vpMQ5iSArRUz/uaoj4h5S6Pn0+PdhRjg==", + "cpu": [ + "arm" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "linux" + ] + }, + "node_modules/@rollup/rollup-linux-arm64-gnu": { + "version": "4.40.0", + "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-arm64-gnu/-/rollup-linux-arm64-gnu-4.40.0.tgz", + "integrity": "sha512-L5ZLphTjjAD9leJzSLI7rr8fNqJMlGDKlazW2tX4IUF9P7R5TMQPElpH82Q7eNIDQnQlAyiNVfRPfP2vM5Avvg==", + "cpu": [ + "arm64" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "linux" + ] + }, + "node_modules/@rollup/rollup-linux-arm64-musl": { + "version": "4.40.0", + "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-arm64-musl/-/rollup-linux-arm64-musl-4.40.0.tgz", + "integrity": "sha512-ATZvCRGCDtv1Y4gpDIXsS+wfFeFuLwVxyUBSLawjgXK2tRE6fnsQEkE4csQQYWlBlsFztRzCnBvWVfcae/1qxQ==", + "cpu": [ + "arm64" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "linux" + ] + }, + "node_modules/@rollup/rollup-linux-loongarch64-gnu": { + "version": "4.40.0", + "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-loongarch64-gnu/-/rollup-linux-loongarch64-gnu-4.40.0.tgz", + "integrity": "sha512-wG9e2XtIhd++QugU5MD9i7OnpaVb08ji3P1y/hNbxrQ3sYEelKJOq1UJ5dXczeo6Hj2rfDEL5GdtkMSVLa/AOg==", + "cpu": [ + "loong64" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "linux" + ] + }, + "node_modules/@rollup/rollup-linux-powerpc64le-gnu": { + "version": "4.40.0", + "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-powerpc64le-gnu/-/rollup-linux-powerpc64le-gnu-4.40.0.tgz", + "integrity": "sha512-vgXfWmj0f3jAUvC7TZSU/m/cOE558ILWDzS7jBhiCAFpY2WEBn5jqgbqvmzlMjtp8KlLcBlXVD2mkTSEQE6Ixw==", + "cpu": [ + "ppc64" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "linux" + ] + }, + "node_modules/@rollup/rollup-linux-riscv64-gnu": { + "version": "4.40.0", + "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-riscv64-gnu/-/rollup-linux-riscv64-gnu-4.40.0.tgz", + "integrity": "sha512-uJkYTugqtPZBS3Z136arevt/FsKTF/J9dEMTX/cwR7lsAW4bShzI2R0pJVw+hcBTWF4dxVckYh72Hk3/hWNKvA==", + "cpu": [ + "riscv64" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "linux" + ] + }, + "node_modules/@rollup/rollup-linux-riscv64-musl": { + "version": "4.40.0", + "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-riscv64-musl/-/rollup-linux-riscv64-musl-4.40.0.tgz", + "integrity": "sha512-rKmSj6EXQRnhSkE22+WvrqOqRtk733x3p5sWpZilhmjnkHkpeCgWsFFo0dGnUGeA+OZjRl3+VYq+HyCOEuwcxQ==", + "cpu": [ + "riscv64" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "linux" + ] + }, + "node_modules/@rollup/rollup-linux-s390x-gnu": { + "version": "4.40.0", + "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-s390x-gnu/-/rollup-linux-s390x-gnu-4.40.0.tgz", + "integrity": "sha512-SpnYlAfKPOoVsQqmTFJ0usx0z84bzGOS9anAC0AZ3rdSo3snecihbhFTlJZ8XMwzqAcodjFU4+/SM311dqE5Sw==", + "cpu": [ + "s390x" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "linux" + ] + }, + "node_modules/@rollup/rollup-linux-x64-gnu": { + "version": "4.40.0", + "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-x64-gnu/-/rollup-linux-x64-gnu-4.40.0.tgz", + "integrity": "sha512-RcDGMtqF9EFN8i2RYN2W+64CdHruJ5rPqrlYw+cgM3uOVPSsnAQps7cpjXe9be/yDp8UC7VLoCoKC8J3Kn2FkQ==", + "cpu": [ + "x64" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "linux" + ] + }, + "node_modules/@rollup/rollup-linux-x64-musl": { + "version": "4.40.0", + "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-x64-musl/-/rollup-linux-x64-musl-4.40.0.tgz", + "integrity": "sha512-HZvjpiUmSNx5zFgwtQAV1GaGazT2RWvqeDi0hV+AtC8unqqDSsaFjPxfsO6qPtKRRg25SisACWnJ37Yio8ttaw==", + "cpu": [ + "x64" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "linux" + ] + }, + "node_modules/@rollup/rollup-win32-arm64-msvc": { + "version": "4.40.0", + "resolved": "https://registry.npmjs.org/@rollup/rollup-win32-arm64-msvc/-/rollup-win32-arm64-msvc-4.40.0.tgz", + "integrity": "sha512-UtZQQI5k/b8d7d3i9AZmA/t+Q4tk3hOC0tMOMSq2GlMYOfxbesxG4mJSeDp0EHs30N9bsfwUvs3zF4v/RzOeTQ==", + "cpu": [ + "arm64" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "win32" + ] + }, + "node_modules/@rollup/rollup-win32-ia32-msvc": { + "version": "4.40.0", + "resolved": "https://registry.npmjs.org/@rollup/rollup-win32-ia32-msvc/-/rollup-win32-ia32-msvc-4.40.0.tgz", + "integrity": "sha512-+m03kvI2f5syIqHXCZLPVYplP8pQch9JHyXKZ3AGMKlg8dCyr2PKHjwRLiW53LTrN/Nc3EqHOKxUxzoSPdKddA==", + "cpu": [ + "ia32" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "win32" + ] + }, + "node_modules/@rollup/rollup-win32-x64-msvc": { + "version": "4.40.0", + "resolved": "https://registry.npmjs.org/@rollup/rollup-win32-x64-msvc/-/rollup-win32-x64-msvc-4.40.0.tgz", + "integrity": "sha512-lpPE1cLfP5oPzVjKMx10pgBmKELQnFJXHgvtHCtuJWOv8MxqdEIMNtgHgBFf7Ea2/7EuVwa9fodWUfXAlXZLZQ==", + "cpu": [ + "x64" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "win32" + ] }, - "node_modules/collection-visit": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/collection-visit/-/collection-visit-1.0.0.tgz", - "integrity": "sha1-S8A3PBZLwykbTTaMgpzxqApZ3KA=", + "node_modules/@sinclair/typebox": { + "version": "0.27.8", + "resolved": "https://registry.npmjs.org/@sinclair/typebox/-/typebox-0.27.8.tgz", + "integrity": "sha512-+Fj43pSMwJs4KRrH/938Uf+uAELIgVBmQzg/q1YG10djyfA3TnrU8N8XzqCh/okZdszqBQTZf96idMfE5lnwTA==", "dev": true, - "dependencies": { - "map-visit": "^1.0.0", - "object-visit": "^1.0.0" - }, + "license": "MIT" + }, + "node_modules/@tootallnate/once": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/@tootallnate/once/-/once-2.0.0.tgz", + "integrity": "sha512-XCuKFP5PS55gnMVu3dty8KPatLqUoy/ZYzDzAGCQ8JNFCkLXzmI7vNHCR+XpbZaMWQK/vQubr7PkYq8g470J/A==", + "dev": true, + "license": "MIT", "engines": { - "node": ">=0.10.0" + "node": ">= 10" } }, - "node_modules/color-convert": { - "version": "1.9.3", - "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-1.9.3.tgz", - "integrity": "sha512-QfAUtd+vFdAtFQcC8CCyYt1fYWxSqAiK2cSD6zDB8N3cpsEBAvRxp9zOGg6G/SHHJYAT88/az/IuDGALsNVbGg==", + "node_modules/@types/benchmark": { + "version": "2.1.5", + "resolved": "https://registry.npmjs.org/@types/benchmark/-/benchmark-2.1.5.tgz", + "integrity": "sha512-cKio2eFB3v7qmKcvIHLUMw/dIx/8bhWPuzpzRT4unCPRTD8VdA9Zb0afxpcxOqR4PixRS7yT42FqGS8BYL8g1w==", + "dev": true, + "license": "MIT" + }, + "node_modules/@types/chai": { + "version": "5.2.1", + "resolved": "https://registry.npmjs.org/@types/chai/-/chai-5.2.1.tgz", + "integrity": "sha512-iu1JLYmGmITRzUgNiLMZD3WCoFzpYtueuyAgHTXqgwSRAMIlFTnZqG6/xenkpUGRJEzSfklUTI4GNSzks/dc0w==", "dev": true, + "license": "MIT", "dependencies": { - "color-name": "1.1.3" + "@types/deep-eql": "*" } }, - "node_modules/color-name": { - "version": "1.1.3", - "resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.3.tgz", - "integrity": "sha1-p9BVi9icQveV3UIyj3QIMcpTvCU=", - "dev": true - }, - "node_modules/color-support": { - "version": "1.1.3", - "resolved": "https://registry.npmjs.org/color-support/-/color-support-1.1.3.tgz", - "integrity": "sha512-qiBjkpbMLO/HL68y+lh4q0/O1MZFj2RX6X/KmMa3+gJD3z+WwI1ZzDHysvqHGS3mP6mznPckpXmw1nI9cJjyRg==", + "node_modules/@types/clean-css": { + "version": "4.2.11", + "resolved": "https://registry.npmjs.org/@types/clean-css/-/clean-css-4.2.11.tgz", + "integrity": "sha512-Y8n81lQVTAfP2TOdtJJEsCoYl1AnOkqDqMvXb9/7pfgZZ7r8YrEyurrAvAoAjHOGXKRybay+5CsExqIH6liccw==", "dev": true, - "bin": { - "color-support": "bin.js" + "license": "MIT", + "dependencies": { + "@types/node": "*", + "source-map": "^0.6.0" } }, - "node_modules/colors": { - "version": "1.4.0", - "resolved": "https://registry.npmjs.org/colors/-/colors-1.4.0.tgz", - "integrity": "sha512-a+UqTh4kgZg/SlGvfbzDHpgRu7AAQOmmqRHJnxhRZICKFUT91brVhNNt58CMWU9PsBbv3PDCZUHbVxuDiH2mtA==", + "node_modules/@types/deep-eql": { + "version": "4.0.2", + "resolved": "https://registry.npmjs.org/@types/deep-eql/-/deep-eql-4.0.2.tgz", + "integrity": "sha512-c9h9dVVMigMPc4bwTvC5dxqtqJZwQPePsWjPlpSOnojbor6pGqdk541lfA7AqFQr5pB1BRdq0juY9db81BwyFw==", "dev": true, - "engines": { - "node": ">=0.1.90" - } + "license": "MIT" }, - "node_modules/combined-stream": { + "node_modules/@types/estree": { "version": "1.0.7", - "resolved": "https://registry.npmjs.org/combined-stream/-/combined-stream-1.0.7.tgz", - "integrity": "sha512-brWl9y6vOB1xYPZcpZde3N9zDByXTosAeMDo4p1wzo6UMOX4vumB+TP1RZ76sfE6Md68Q0NJSrE/gbezd4Ul+w==", + "resolved": "https://registry.npmjs.org/@types/estree/-/estree-1.0.7.tgz", + "integrity": "sha512-w28IoSUCJpidD/TGviZwwMJckNESJZXFu7NBZ5YJ4mEUnNraUn9Pm8HSZm/jDF1pDWYKspWE7oVphigUPRakIQ==", + "dev": true, + "license": "MIT" + }, + "node_modules/@types/graceful-fs": { + "version": "4.1.9", + "resolved": "https://registry.npmjs.org/@types/graceful-fs/-/graceful-fs-4.1.9.tgz", + "integrity": "sha512-olP3sd1qOEe5dXTSaFvQG+02VdRXcdytWLAZsAq1PecU8uqQAhkrnbli7DagjtXKW/Bl7YJbUsa8MPcuc8LHEQ==", "dev": true, + "license": "MIT", "dependencies": { - "delayed-stream": "~1.0.0" - }, - "engines": { - "node": ">= 0.8" + "@types/node": "*" } }, - "node_modules/commander": { - "version": "2.19.0", - "resolved": "https://registry.npmjs.org/commander/-/commander-2.19.0.tgz", - "integrity": "sha512-6tvAOO+D6OENvRAh524Dh9jcfKTYDQAqvqezbCW82xj5X0pSrcpxtvRKHLG0yBY6SD7PSDrJaj+0AiOcKVd1Xg==", - "dev": true + "node_modules/@types/istanbul-lib-coverage": { + "version": "2.0.6", + "resolved": "https://registry.npmjs.org/@types/istanbul-lib-coverage/-/istanbul-lib-coverage-2.0.6.tgz", + "integrity": "sha512-2QF/t/auWm0lsy8XtKVPG19v3sSOQlJe/YHZgfjb/KBBHOGSV+J2q/S671rcq9uTBrLAXmZpqJiaQbMT+zNU1w==", + "dev": true, + "license": "MIT" }, - "node_modules/comment-parser": { - "version": "1.1.2", - "resolved": "https://registry.npmjs.org/comment-parser/-/comment-parser-1.1.2.tgz", - "integrity": "sha512-AOdq0i8ghZudnYv8RUnHrhTgafUGs61Rdz9jemU5x2lnZwAWyOq7vySo626K59e1fVKH1xSRorJwPVRLSWOoAQ==", + "node_modules/@types/istanbul-lib-report": { + "version": "3.0.3", + "resolved": "https://registry.npmjs.org/@types/istanbul-lib-report/-/istanbul-lib-report-3.0.3.tgz", + "integrity": "sha512-NQn7AHQnk/RSLOxrBbGyJM/aVQ+pjj5HCgasFxc0K/KhoATfQ/47AyUl15I2yBUpihjmas+a+VJBOqecrFH+uA==", "dev": true, - "engines": { - "node": ">= 10.0.0" + "license": "MIT", + "dependencies": { + "@types/istanbul-lib-coverage": "*" } }, - "node_modules/component-emitter": { - "version": "1.3.0", - "resolved": "https://registry.npmjs.org/component-emitter/-/component-emitter-1.3.0.tgz", - "integrity": "sha512-Rd3se6QB+sO1TwqZjscQrurpEPIfO0/yYnSin6Q/rD3mOutHvUrCAhJub3r90uNb+SESBuE0QYoB90YdfatsRg==", - "dev": true - }, - "node_modules/concat-map": { - "version": "0.0.1", - "resolved": "https://registry.npmjs.org/concat-map/-/concat-map-0.0.1.tgz", - "integrity": "sha1-2Klr13/Wjfd5OnMDajug1UBdR3s=", - "dev": true - }, - "node_modules/concat-stream": { - "version": "1.6.2", - "resolved": "https://registry.npmjs.org/concat-stream/-/concat-stream-1.6.2.tgz", - "integrity": "sha512-27HBghJxjiZtIk3Ycvn/4kbJk/1uZuJFfuPEns6LaEvpvG1f0hTea8lilrouyo9mVc2GWdcEZ8OLoGmSADlrCw==", + "node_modules/@types/istanbul-reports": { + "version": "3.0.4", + "resolved": "https://registry.npmjs.org/@types/istanbul-reports/-/istanbul-reports-3.0.4.tgz", + "integrity": "sha512-pk2B1NWalF9toCRu6gjBzR69syFjP4Od8WRAX+0mmf9lAjCRicLOWc+ZrxZHx/0XRjotgkF9t6iaMJ+aXcOdZQ==", "dev": true, - "engines": [ - "node >= 0.8" - ], + "license": "MIT", "dependencies": { - "buffer-from": "^1.0.0", - "inherits": "^2.0.3", - "readable-stream": "^2.2.2", - "typedarray": "^0.0.6" + "@types/istanbul-lib-report": "*" } }, - "node_modules/concat-with-sourcemaps": { - "version": "1.1.0", - "resolved": "https://registry.npmjs.org/concat-with-sourcemaps/-/concat-with-sourcemaps-1.1.0.tgz", - "integrity": "sha512-4gEjHJFT9e+2W/77h/DS5SGUgwDaOwprX8L/gl5+3ixnzkVJJsZWDSelmN3Oilw3LNDZjZV0yqH1hLG3k6nghg==", + "node_modules/@types/jsdom": { + "version": "21.1.7", + "resolved": "https://registry.npmjs.org/@types/jsdom/-/jsdom-21.1.7.tgz", + "integrity": "sha512-yOriVnggzrnQ3a9OKOCxaVuSug3w3/SbOj5i7VwXWZEyUNl3bLF9V3MfxGbZKuwqJOQyRfqXyROBB1CoZLFWzA==", "dev": true, + "license": "MIT", "dependencies": { - "source-map": "^0.6.1" + "@types/node": "*", + "@types/tough-cookie": "*", + "parse5": "^7.0.0" } }, - "node_modules/concat-with-sourcemaps/node_modules/source-map": { - "version": "0.6.1", - "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.6.1.tgz", - "integrity": "sha512-UjgapumWlbMhkBgzT7Ykc5YXUT46F0iKu8SGXq0bcwP5dz/h0Plj6enJqjz1Zbq2l5WaqYnrVbwWOWMyF3F47g==", + "node_modules/@types/json-schema": { + "version": "7.0.15", + "resolved": "https://registry.npmjs.org/@types/json-schema/-/json-schema-7.0.15.tgz", + "integrity": "sha512-5+fP8P8MFNC+AyZCDxrB2pkZFPGzqQWUzpSeuuVLvm8VMcorNYavBqoFcxK8bQz4Qsbn4oUEEem4wDLfcysGHA==", "dev": true, - "engines": { - "node": ">=0.10.0" - } + "license": "MIT" }, - "node_modules/convert-source-map": { - "version": "1.7.0", - "resolved": "https://registry.npmjs.org/convert-source-map/-/convert-source-map-1.7.0.tgz", - "integrity": "sha512-4FJkXzKXEDB1snCFZlLP4gpC3JILicCpGbzG9f9G7tGqGCzETQ2hWPrcinA9oU4wtf2biUaEH5065UnMeR33oA==", + "node_modules/@types/minimist": { + "version": "1.2.5", + "resolved": "https://registry.npmjs.org/@types/minimist/-/minimist-1.2.5.tgz", + "integrity": "sha512-hov8bUuiLiyFPGyFPE1lwWhmzYbirOXQNNo40+y3zow8aFVTeyn3VWL0VFFfdNddA8S4Vf0Tc062rzyNr7Paag==", + "dev": true, + "license": "MIT" + }, + "node_modules/@types/mocha": { + "version": "10.0.10", + "resolved": "https://registry.npmjs.org/@types/mocha/-/mocha-10.0.10.tgz", + "integrity": "sha512-xPyYSz1cMPnJQhl0CLMH68j3gprKZaTjG3s5Vi+fDgx+uhG9NOXwbVt52eFS8ECyXhyKcjDLCBEqBExKuiZb7Q==", + "dev": true, + "license": "MIT" + }, + "node_modules/@types/node": { + "version": "22.15.2", + "resolved": "https://registry.npmjs.org/@types/node/-/node-22.15.2.tgz", + "integrity": "sha512-uKXqKN9beGoMdBfcaTY1ecwz6ctxuJAcUlwE55938g0ZJ8lRxwAZqRz2AJ4pzpt5dHdTPMB863UZ0ESiFUcP7A==", "dev": true, + "license": "MIT", "dependencies": { - "safe-buffer": "~5.1.1" + "undici-types": "~6.21.0" } }, - "node_modules/copy-descriptor": { - "version": "0.1.1", - "resolved": "https://registry.npmjs.org/copy-descriptor/-/copy-descriptor-0.1.1.tgz", - "integrity": "sha1-Z29us8OZl8LuGsOpJP1hJHSPV40=", + "node_modules/@types/normalize-package-data": { + "version": "2.4.4", + "resolved": "https://registry.npmjs.org/@types/normalize-package-data/-/normalize-package-data-2.4.4.tgz", + "integrity": "sha512-37i+OaWTh9qeK4LSHPsyRC7NahnGotNuZvjLSgcPzblpHB3rrCJxAOgI5gCdKm7coonsaX1Of0ILiTcnZjbfxA==", "dev": true, - "engines": { - "node": ">=0.10.0" - } + "license": "MIT" }, - "node_modules/copy-props": { - "version": "2.0.5", - "resolved": "https://registry.npmjs.org/copy-props/-/copy-props-2.0.5.tgz", - "integrity": "sha512-XBlx8HSqrT0ObQwmSzM7WE5k8FxTV75h1DX1Z3n6NhQ/UYYAvInWYmG06vFt7hQZArE2fuO62aihiWIVQwh1sw==", + "node_modules/@types/stack-utils": { + "version": "2.0.3", + "resolved": "https://registry.npmjs.org/@types/stack-utils/-/stack-utils-2.0.3.tgz", + "integrity": "sha512-9aEbYZ3TbYMznPdcdr3SmIrLXwC/AKZXQeCf9Pgao5CKb8CyHuEX5jzWPTkvregvhRJHcpRO6BFoGW9ycaOkYw==", + "dev": true, + "license": "MIT" + }, + "node_modules/@types/tough-cookie": { + "version": "4.0.5", + "resolved": "https://registry.npmjs.org/@types/tough-cookie/-/tough-cookie-4.0.5.tgz", + "integrity": "sha512-/Ad8+nIOV7Rl++6f1BdKxFSMgmoqEoYbHRpPcx3JEfv8VRsQe9Z4mCXeJBzxs7mbHY/XOZZuXlRNfhpVPbs6ZA==", "dev": true, + "license": "MIT" + }, + "node_modules/@types/yargs": { + "version": "17.0.33", + "resolved": "https://registry.npmjs.org/@types/yargs/-/yargs-17.0.33.tgz", + "integrity": "sha512-WpxBCKWPLr4xSsHgz511rFJAM+wS28w2zEO1QDNY5zM/S8ok70NNfztH0xwhqKyaK0OHCbN98LDAZuy1ctxDkA==", + "dev": true, + "license": "MIT", "dependencies": { - "each-props": "^1.3.2", - "is-plain-object": "^5.0.0" + "@types/yargs-parser": "*" } }, - "node_modules/copy-props/node_modules/is-plain-object": { - "version": "5.0.0", - "resolved": "https://registry.npmjs.org/is-plain-object/-/is-plain-object-5.0.0.tgz", - "integrity": "sha512-VRSzKkbMm5jMDoKLbltAkFQ5Qr7VDiTFGXxYFXXowVj387GeGNOCsOH6Msy00SGZ3Fp84b1Naa1psqgcCIEP5Q==", + "node_modules/@types/yargs-parser": { + "version": "21.0.3", + "resolved": "https://registry.npmjs.org/@types/yargs-parser/-/yargs-parser-21.0.3.tgz", + "integrity": "sha512-I4q9QU9MQv4oEOz4tAHJtNz1cwuLxn2F3xcc2iV5WdqLPpUnj30aUuxt1mAxYTG+oe8CZMV/+6rU4S4gRDzqtQ==", "dev": true, + "license": "MIT" + }, + "node_modules/@xmldom/xmldom": { + "version": "0.7.13", + "resolved": "https://registry.npmjs.org/@xmldom/xmldom/-/xmldom-0.7.13.tgz", + "integrity": "sha512-lm2GW5PkosIzccsaZIz7tp8cPADSIlIHWDFTR1N0SzfinhhYgeIQjFMz4rYzanCScr3DqQLeomUDArp6MWKm+g==", + "deprecated": "this version is no longer supported, please update to at least 0.8.*", + "dev": true, + "license": "MIT", "engines": { - "node": ">=0.10.0" + "node": ">=10.0.0" } }, - "node_modules/core-js": { - "version": "2.6.11", - "resolved": "https://registry.npmjs.org/core-js/-/core-js-2.6.11.tgz", - "integrity": "sha512-5wjnpaT/3dV+XB4borEsnAYQchn00XSgTAWKDkEqv+K8KevjbzmofK6hfJ9TZIlpj2N0xQpazy7PiRQiWHqzWg==", - "deprecated": "core-js@<3.4 is no longer maintained and not recommended for usage due to the number of issues. Because of the V8 engine whims, feature detection in old core-js versions could cause a slowdown up to 100x even if nothing is polyfilled. Please, upgrade your dependencies to the actual version of core-js.", + "node_modules/a-sync-waterfall": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/a-sync-waterfall/-/a-sync-waterfall-1.0.1.tgz", + "integrity": "sha512-RYTOHHdWipFUliRFMCS4X2Yn2X8M87V/OpSqWzKKOGhzqyUxzyVmhHDH9sAvG+ZuQf/TAOFsLCpMw09I1ufUnA==", "dev": true, - "hasInstallScript": true - }, - "node_modules/core-util-is": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/core-util-is/-/core-util-is-1.0.2.tgz", - "integrity": "sha1-tf1UIgqivFq1eqtxQMlAdUUDwac=", - "dev": true + "license": "MIT" }, - "node_modules/corser": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/corser/-/corser-2.0.1.tgz", - "integrity": "sha1-jtolLsqrWEDc2XXOuQ2TcMgZ/4c=", + "node_modules/acorn": { + "version": "8.15.0", + "resolved": "https://registry.npmjs.org/acorn/-/acorn-8.15.0.tgz", + "integrity": "sha512-NZyJarBfL7nWwIq+FDL6Zp/yHEhePMNnnJ0y3qfieCrmNvYct8uvtiV41UvlSe6apAfk0fY1FbWx+NwfmpvtTg==", "dev": true, + "license": "MIT", + "bin": { + "acorn": "bin/acorn" + }, "engines": { - "node": ">= 0.4.0" + "node": ">=0.4.0" } }, - "node_modules/cosmiconfig": { - "version": "5.2.1", - "resolved": "https://registry.npmjs.org/cosmiconfig/-/cosmiconfig-5.2.1.tgz", - "integrity": "sha512-H65gsXo1SKjf8zmrJ67eJk8aIRKV5ff2D4uKZIBZShbhGSpEmsQOPW/SKMKYhSTrqR7ufy6RP69rPogdaPh/kA==", + "node_modules/acorn-jsx": { + "version": "5.3.2", + "resolved": "https://registry.npmjs.org/acorn-jsx/-/acorn-jsx-5.3.2.tgz", + "integrity": "sha512-rq9s+JNhf0IChjtDXxllJ7g41oZk5SlXtp0LHwyA5cejwn7vKmKp4pPri6YEePv2PU65sAsegbXtIinmDFDXgQ==", "dev": true, - "dependencies": { - "import-fresh": "^2.0.0", - "is-directory": "^0.3.1", - "js-yaml": "^3.13.1", - "parse-json": "^4.0.0" - }, - "engines": { - "node": ">=4" + "license": "MIT", + "peerDependencies": { + "acorn": "^6.0.0 || ^7.0.0 || ^8.0.0" } }, - "node_modules/cosmiconfig/node_modules/parse-json": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/parse-json/-/parse-json-4.0.0.tgz", - "integrity": "sha1-vjX1Qlvh9/bHRxhPmKeIy5lHfuA=", + "node_modules/agent-base": { + "version": "6.0.2", + "resolved": "https://registry.npmjs.org/agent-base/-/agent-base-6.0.2.tgz", + "integrity": "sha512-RZNwNclF7+MS/8bDg70amg32dyeZGZxiDuQmZxKLAlQjr3jGyLx+4Kkk58UO7D2QdgFIQCovuSuZESne6RG6XQ==", "dev": true, + "license": "MIT", "dependencies": { - "error-ex": "^1.3.1", - "json-parse-better-errors": "^1.0.1" + "debug": "4" }, "engines": { - "node": ">=4" + "node": ">= 6.0.0" } }, - "node_modules/cross-spawn": { - "version": "6.0.5", - "resolved": "https://registry.npmjs.org/cross-spawn/-/cross-spawn-6.0.5.tgz", - "integrity": "sha512-eTVLrBSt7fjbDygz805pMnstIs2VTBNkRm0qxZd+M7A5XDdxVRWO5MxGBXZhjY4cqLYLdtrGqRf8mBPmzwSpWQ==", + "node_modules/ajv": { + "version": "6.12.6", + "resolved": "https://registry.npmjs.org/ajv/-/ajv-6.12.6.tgz", + "integrity": "sha512-j3fVLgvTo527anyYyJOGTYJbG+vnnQYvE0m5mmkc1TK+nxAppkCLMIL0aZ4dblVCNoGShhm+kzE4ZUykBoMg4g==", "dev": true, + "license": "MIT", "dependencies": { - "nice-try": "^1.0.4", - "path-key": "^2.0.1", - "semver": "^5.5.0", - "shebang-command": "^1.2.0", - "which": "^1.2.9" + "fast-deep-equal": "^3.1.1", + "fast-json-stable-stringify": "^2.0.0", + "json-schema-traverse": "^0.4.1", + "uri-js": "^4.2.2" }, - "engines": { - "node": ">=4.8" + "funding": { + "type": "github", + "url": "https://github.com/sponsors/epoberezkin" } }, - "node_modules/cssom": { - "version": "0.4.4", - "resolved": "https://registry.npmjs.org/cssom/-/cssom-0.4.4.tgz", - "integrity": "sha512-p3pvU7r1MyyqbTk+WbNJIgJjG2VmTIaB10rI93LzVPrmDJKkzKYMtxxyAvQXR/NS6otuzveI7+7BBq3SjBS2mw==", - "dev": true + "node_modules/ansi-colors": { + "version": "4.1.3", + "resolved": "https://registry.npmjs.org/ansi-colors/-/ansi-colors-4.1.3.tgz", + "integrity": "sha512-/6w/C21Pm1A7aZitlI5Ni/2J6FFQN8i1Cvz3kHABAAbw93v/NlvKdVOqz7CCWz/3iv/JplRSEEZ83XION15ovw==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=6" + } }, - "node_modules/cssstyle": { - "version": "2.3.0", - "resolved": "https://registry.npmjs.org/cssstyle/-/cssstyle-2.3.0.tgz", - "integrity": "sha512-AZL67abkUzIuvcHqk7c09cezpGNcxUxU4Ioi/05xHk4DQeTkWmGYftIE6ctU6AEt+Gn4n1lDStOtj7FKycP71A==", + "node_modules/ansi-regex": { + "version": "5.0.1", + "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-5.0.1.tgz", + "integrity": "sha512-quJQXlTSUGL2LH9SUXo8VwsY4soanhgo6LNSm84E1LBcE8s3O0wpdiRzyR9z/ZZJMlMWv37qOOb9pdJlMUEKFQ==", "dev": true, - "dependencies": { - "cssom": "~0.3.6" - }, + "license": "MIT", "engines": { "node": ">=8" } }, - "node_modules/cssstyle/node_modules/cssom": { - "version": "0.3.8", - "resolved": "https://registry.npmjs.org/cssom/-/cssom-0.3.8.tgz", - "integrity": "sha512-b0tGHbfegbhPJpxpiBPU2sCkigAqtM9O121le6bbOlgyV+NyGyCmVfJ6QW9eRjz8CpNfWEOYBIMIGRYkLwsIYg==", - "dev": true - }, - "node_modules/cubic2quad": { - "version": "1.1.1", - "resolved": "https://registry.npmjs.org/cubic2quad/-/cubic2quad-1.1.1.tgz", - "integrity": "sha1-abGcYaP1tB7PLx1fro+wNBWqixU=", - "dev": true - }, - "node_modules/currently-unhandled": { - "version": "0.4.1", - "resolved": "https://registry.npmjs.org/currently-unhandled/-/currently-unhandled-0.4.1.tgz", - "integrity": "sha1-mI3zP+qxke95mmE2nddsF635V+o=", + "node_modules/ansi-styles": { + "version": "3.2.1", + "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-3.2.1.tgz", + "integrity": "sha512-VT0ZI6kZRdTh8YyJw3SMbYm/u+NqfsAxEpWO0Pf9sq8/e94WxxOpPKx9FR1FlyCtOVDNOQ+8ntlqFxiRc+r5qA==", "dev": true, + "license": "MIT", "dependencies": { - "array-find-index": "^1.0.1" + "color-convert": "^1.9.0" }, "engines": { - "node": ">=0.10.0" + "node": ">=4" } }, - "node_modules/d": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/d/-/d-1.0.1.tgz", - "integrity": "sha512-m62ShEObQ39CfralilEQRjH6oAMtNCV1xJyEx5LpRYUVN+EviphDgUc/F3hnYbADmkiNs67Y+3ylmlG7Lnu+FA==", + "node_modules/anymatch": { + "version": "3.1.3", + "resolved": "https://registry.npmjs.org/anymatch/-/anymatch-3.1.3.tgz", + "integrity": "sha512-KMReFUr0B4t+D+OBkjR3KYqvocp2XaSzO55UcB6mgQMd3KbcE+mWTyvVV7D/zsdEbNnV6acZUutkiHQXvTr1Rw==", "dev": true, + "license": "ISC", "dependencies": { - "es5-ext": "^0.10.50", - "type": "^1.0.1" + "normalize-path": "^3.0.0", + "picomatch": "^2.0.4" + }, + "engines": { + "node": ">= 8" } }, - "node_modules/danger": { - "version": "10.9.0", - "resolved": "https://registry.npmjs.org/danger/-/danger-10.9.0.tgz", - "integrity": "sha512-eEWQAaIPfWSfzlQiFx+w9fWuP3jwq8VAV9W22EZRxfmCBnkdDa5aN0Akr7lzfCKudzy+4uEmIGUtxnYeFgTthQ==", + "node_modules/anymatch/node_modules/picomatch": { + "version": "2.3.1", + "resolved": "https://registry.npmjs.org/picomatch/-/picomatch-2.3.1.tgz", + "integrity": "sha512-JU3teHTNjmE2VCGFzuY8EXzCDVwEqB2a8fsIvwaStHhAWJEeVd1o1QD80CU6+ZdEXXSLbSsuLwJjkCBWqRQUVA==", "dev": true, - "dependencies": { - "@babel/polyfill": "^7.2.5", - "@octokit/rest": "^16.43.1", - "async-retry": "1.2.3", - "chalk": "^2.3.0", - "commander": "^2.18.0", - "debug": "^4.1.1", - "fast-json-patch": "^3.0.0-1", - "get-stdin": "^6.0.0", - "gitlab": "^10.0.1", - "http-proxy-agent": "^2.1.0", - "https-proxy-agent": "^2.2.1", - "hyperlinker": "^1.0.0", - "json5": "^2.1.0", - "jsonpointer": "^5.0.0", - "jsonwebtoken": "^8.4.0", - "lodash.find": "^4.6.0", - "lodash.includes": "^4.3.0", - "lodash.isobject": "^3.0.2", - "lodash.keys": "^4.0.8", - "lodash.mapvalues": "^4.6.0", - "lodash.memoize": "^4.1.2", - "memfs-or-file-map-to-github-branch": "^1.1.0", - "micromatch": "^4.0.4", - "node-cleanup": "^2.1.2", - "node-fetch": "^2.6.7", - "override-require": "^1.1.1", - "p-limit": "^2.1.0", - "parse-diff": "^0.7.0", - "parse-git-config": "^2.0.3", - "parse-github-url": "^1.0.2", - "parse-link-header": "^2.0.0", - "pinpoint": "^1.1.0", - "prettyjson": "^1.2.1", - "readline-sync": "^1.4.9", - "require-from-string": "^2.0.2", - "supports-hyperlinks": "^1.0.1" + "license": "MIT", + "engines": { + "node": ">=8.6" }, - "bin": { - "danger": "distribution/commands/danger.js", - "danger-ci": "distribution/commands/danger-ci.js", - "danger-init": "distribution/commands/danger-init.js", - "danger-js": "distribution/commands/danger.js", - "danger-local": "distribution/commands/danger-local.js", - "danger-pr": "distribution/commands/danger-pr.js", - "danger-process": "distribution/commands/danger-process.js", - "danger-reset-status": "distribution/commands/danger-reset-status.js", - "danger-runner": "distribution/commands/danger-runner.js" + "funding": { + "url": "https://github.com/sponsors/jonschlinkert" } }, - "node_modules/danger/node_modules/braces": { - "version": "3.0.2", - "resolved": "https://registry.npmjs.org/braces/-/braces-3.0.2.tgz", - "integrity": "sha512-b8um+L1RzM3WDSzvhm6gIz1yfTbBt6YTlcEKAvsmqCZZFw46z626lVj9j1yEPW33H5H+lBQpZMP1k8l+78Ha0A==", + "node_modules/are-docs-informative": { + "version": "0.0.2", + "resolved": "https://registry.npmjs.org/are-docs-informative/-/are-docs-informative-0.0.2.tgz", + "integrity": "sha512-ixiS0nLNNG5jNQzgZJNoUpBKdo9yTYZMGJ+QgT2jmjR7G7+QHRCc4v6LQ3NgE7EBJq+o0ams3waJwkrlBom8Ig==", "dev": true, - "dependencies": { - "fill-range": "^7.0.1" - }, + "license": "MIT", "engines": { - "node": ">=8" + "node": ">=14" } }, - "node_modules/danger/node_modules/debug": { - "version": "4.2.0", - "resolved": "https://registry.npmjs.org/debug/-/debug-4.2.0.tgz", - "integrity": "sha512-IX2ncY78vDTjZMFUdmsvIRFY2Cf4FnD0wRs+nQwJU8Lu99/tPFdb0VybiiMTPe3I6rQmwsqQqRBvxU+bZ/I8sg==", - "deprecated": "Debug versions >=3.2.0 <3.2.7 || >=4 <4.3.1 have a low-severity ReDos regression when used in a Node.js environment. It is recommended you upgrade to 3.2.7 or 4.3.1. (https://github.com/visionmedia/debug/issues/797)", + "node_modules/argparse": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/argparse/-/argparse-2.0.1.tgz", + "integrity": "sha512-8+9WqebbFzpX9OR+Wa6O29asIogeRMzcGtAINdpMHHyAg10f05aSFVBbcEqGf/PXw1EjAZ+q2/bEBg3DvurK3Q==", + "dev": true, + "license": "Python-2.0" + }, + "node_modules/array-buffer-byte-length": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/array-buffer-byte-length/-/array-buffer-byte-length-1.0.2.tgz", + "integrity": "sha512-LHE+8BuR7RYGDKvnrmcuSq3tDcKv9OFEXQt/HpbZhY7V6h0zlUXutnAD82GiFx9rdieCMjkvtcsPqBwgUl1Iiw==", "dev": true, + "license": "MIT", "dependencies": { - "ms": "2.1.2" + "call-bound": "^1.0.3", + "is-array-buffer": "^3.0.5" }, "engines": { - "node": ">=6.0" + "node": ">= 0.4" }, - "peerDependenciesMeta": { - "supports-color": { - "optional": true - } + "funding": { + "url": "https://github.com/sponsors/ljharb" } }, - "node_modules/danger/node_modules/fill-range": { - "version": "7.0.1", - "resolved": "https://registry.npmjs.org/fill-range/-/fill-range-7.0.1.tgz", - "integrity": "sha512-qOo9F+dMUmC2Lcb4BbVvnKJxTPjCm+RRpe4gDuGrzkL7mEVl/djYSu2OdQ2Pa302N4oqkSg9ir6jaLWJ2USVpQ==", + "node_modules/array-union": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/array-union/-/array-union-2.1.0.tgz", + "integrity": "sha512-HGyxoOTYUyCM6stUe6EJgnd4EoewAI7zMdfqO+kGjnlZmBDz/cR5pf8r/cR4Wq60sL/p0IkcjUEEPwS3GFrIyw==", "dev": true, - "dependencies": { - "to-regex-range": "^5.0.1" - }, + "license": "MIT", "engines": { "node": ">=8" } }, - "node_modules/danger/node_modules/is-number": { - "version": "7.0.0", - "resolved": "https://registry.npmjs.org/is-number/-/is-number-7.0.0.tgz", - "integrity": "sha512-41Cifkg6e8TylSpdtTpeLVMqvSBEVzTttHvERD741+pnZ8ANv0004MRL43QKPDlK9cGvNp6NZWZUBlbGXYxxng==", + "node_modules/arraybuffer.prototype.slice": { + "version": "1.0.4", + "resolved": "https://registry.npmjs.org/arraybuffer.prototype.slice/-/arraybuffer.prototype.slice-1.0.4.tgz", + "integrity": "sha512-BNoCY6SXXPQ7gF2opIP4GBE+Xw7U+pHMYKuzjgCN3GwiaIR09UUeKfheyIry77QtrCBlC0KK0q5/TER/tYh3PQ==", "dev": true, + "license": "MIT", + "dependencies": { + "array-buffer-byte-length": "^1.0.1", + "call-bind": "^1.0.8", + "define-properties": "^1.2.1", + "es-abstract": "^1.23.5", + "es-errors": "^1.3.0", + "get-intrinsic": "^1.2.6", + "is-array-buffer": "^3.0.4" + }, "engines": { - "node": ">=0.12.0" + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" } }, - "node_modules/danger/node_modules/micromatch": { - "version": "4.0.4", - "resolved": "https://registry.npmjs.org/micromatch/-/micromatch-4.0.4.tgz", - "integrity": "sha512-pRmzw/XUcwXGpD9aI9q/0XOwLNygjETJ8y0ao0wdqprrzDa4YnxLcz7fQRZr8voh8V10kGhABbNcHVk5wHgWwg==", + "node_modules/arrify": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/arrify/-/arrify-1.0.1.tgz", + "integrity": "sha512-3CYzex9M9FGQjCGMGyi6/31c8GJbgb0qGyrx5HWxPd0aCwh4cB2YjMb2Xf9UuoogrMrlO9cTqnB5rI5GHZTcUA==", "dev": true, - "dependencies": { - "braces": "^3.0.1", - "picomatch": "^2.2.3" - }, + "license": "MIT", "engines": { - "node": ">=8.6" + "node": ">=0.10.0" } }, - "node_modules/danger/node_modules/ms": { - "version": "2.1.2", - "resolved": "https://registry.npmjs.org/ms/-/ms-2.1.2.tgz", - "integrity": "sha512-sGkPx+VjMtmA6MX27oA4FBFELFCZZ4S4XqeGOXCv68tT+jb3vk/RyaKWP0PTKyWtmLSM0b+adUTEvbs1PEaH2w==", - "dev": true + "node_modules/asap": { + "version": "2.0.6", + "resolved": "https://registry.npmjs.org/asap/-/asap-2.0.6.tgz", + "integrity": "sha512-BSHWgDSAiKs50o2Re8ppvp3seVHXSRM44cdSsT9FfNEUUZLOGWVCsiWaRPWM1Znn+mqZ1OfVZ3z3DWEzSp7hRA==", + "dev": true, + "license": "MIT" }, - "node_modules/danger/node_modules/node-fetch": { - "version": "2.6.7", - "resolved": "https://registry.npmjs.org/node-fetch/-/node-fetch-2.6.7.tgz", - "integrity": "sha512-ZjMPFEfVx5j+y2yF35Kzx5sF7kDzxuDj6ziH4FFbOp87zKDZNx8yExJIb05OGF4Nlt9IHFIMBkRl41VdvcNdbQ==", + "node_modules/assertion-error": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/assertion-error/-/assertion-error-2.0.1.tgz", + "integrity": "sha512-Izi8RQcffqCeNVgFigKli1ssklIbpHnCYc6AknXGYoB6grJqyeby7jv12JUQgmTAnIDnbck1uxksT4dzN3PWBA==", "dev": true, - "dependencies": { - "whatwg-url": "^5.0.0" - }, + "license": "MIT", "engines": { - "node": "4.x || >=6.0.0" - }, - "peerDependencies": { - "encoding": "^0.1.0" - }, - "peerDependenciesMeta": { - "encoding": { - "optional": true - } + "node": ">=12" } }, - "node_modules/danger/node_modules/to-regex-range": { - "version": "5.0.1", - "resolved": "https://registry.npmjs.org/to-regex-range/-/to-regex-range-5.0.1.tgz", - "integrity": "sha512-65P7iz6X5yEr1cwcgvQxbbIw7Uk3gOy5dIdtZ4rDveLqhrdJP+Li/Hx6tyK0NEb+2GCyneCMJiGqrADCSNk8sQ==", + "node_modules/async-function": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/async-function/-/async-function-1.0.0.tgz", + "integrity": "sha512-hsU18Ae8CDTR6Kgu9DYf0EbCr/a5iGL0rytQDobUcdpYOKokk8LEjVphnXkDkgpi0wYVsqrXuP0bZxJaTqdgoA==", "dev": true, - "dependencies": { - "is-number": "^7.0.0" - }, + "license": "MIT", "engines": { - "node": ">=8.0" + "node": ">= 0.4" } }, - "node_modules/danger/node_modules/tr46": { - "version": "0.0.3", - "resolved": "https://registry.npmjs.org/tr46/-/tr46-0.0.3.tgz", - "integrity": "sha1-gYT9NH2snNwYWZLzpmIuFLnZq2o=", - "dev": true - }, - "node_modules/danger/node_modules/webidl-conversions": { - "version": "3.0.1", - "resolved": "https://registry.npmjs.org/webidl-conversions/-/webidl-conversions-3.0.1.tgz", - "integrity": "sha1-JFNCdeKnvGvnvIZhHMFq4KVlSHE=", - "dev": true - }, - "node_modules/danger/node_modules/whatwg-url": { - "version": "5.0.0", - "resolved": "https://registry.npmjs.org/whatwg-url/-/whatwg-url-5.0.0.tgz", - "integrity": "sha1-lmRU6HZUYuN2RNNib2dCzotwll0=", + "node_modules/async-retry": { + "version": "1.2.3", + "resolved": "https://registry.npmjs.org/async-retry/-/async-retry-1.2.3.tgz", + "integrity": "sha512-tfDb02Th6CE6pJUF2gjW5ZVjsgwlucVXOEQMvEX9JgSJMs9gAX+Nz3xRuJBKuUYjTSYORqvDBORdAQ3LU59g7Q==", "dev": true, + "license": "MIT", "dependencies": { - "tr46": "~0.0.3", - "webidl-conversions": "^3.0.0" + "retry": "0.12.0" } }, - "node_modules/data-uri-to-buffer": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/data-uri-to-buffer/-/data-uri-to-buffer-4.0.0.tgz", - "integrity": "sha512-Vr3mLBA8qWmcuschSLAOogKgQ/Jwxulv3RNE4FXnYWRGujzrRWQI4m12fQqRkwX06C0KanhLr4hK+GydchZsaA==", + "node_modules/asynckit": { + "version": "0.4.0", + "resolved": "https://registry.npmjs.org/asynckit/-/asynckit-0.4.0.tgz", + "integrity": "sha512-Oei9OH4tRh0YqU3GxhX79dM/mwVgvbZJaSNaRk+bshkj0S5cfHcgYakreBjrHwatXKbz+IoIdYLxrKim2MjW0Q==", "dev": true, - "engines": { - "node": ">= 12" - } + "license": "MIT" }, - "node_modules/data-urls": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/data-urls/-/data-urls-2.0.0.tgz", - "integrity": "sha512-X5eWTSXO/BJmpdIKCRuKUgSCgAN0OwliVK3yPKbwIWU1Tdw5BRajxlzMidvh+gwko9AfQ9zIj52pzF91Q3YAvQ==", + "node_modules/available-typed-arrays": { + "version": "1.0.7", + "resolved": "https://registry.npmjs.org/available-typed-arrays/-/available-typed-arrays-1.0.7.tgz", + "integrity": "sha512-wvUjBtSGN7+7SjNpq/9M2Tg350UZD3q62IFZLbRAR1bSMlCo1ZaeW+BJ+D090e4hIIZLBcTDWe4Mh4jvUDajzQ==", "dev": true, + "license": "MIT", "dependencies": { - "abab": "^2.0.3", - "whatwg-mimetype": "^2.3.0", - "whatwg-url": "^8.0.0" + "possible-typed-array-names": "^1.0.0" }, "engines": { - "node": ">=10" + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" } }, - "node_modules/data-urls/node_modules/tr46": { - "version": "2.1.0", - "resolved": "https://registry.npmjs.org/tr46/-/tr46-2.1.0.tgz", - "integrity": "sha512-15Ih7phfcdP5YxqiB+iDtLoaTz4Nd35+IiAv0kQ5FNKHzXgdWqPoTIqEDDJmXceQt4JZk6lVPT8lnDlPpGDppw==", + "node_modules/babel-plugin-istanbul": { + "version": "6.1.1", + "resolved": "https://registry.npmjs.org/babel-plugin-istanbul/-/babel-plugin-istanbul-6.1.1.tgz", + "integrity": "sha512-Y1IQok9821cC9onCx5otgFfRm7Lm+I+wwxOx738M/WLPZ9Q42m4IG5W0FNX8WLL2gYMZo3JkuXIH2DOpWM+qwA==", "dev": true, + "license": "BSD-3-Clause", "dependencies": { - "punycode": "^2.1.1" + "@babel/helper-plugin-utils": "^7.0.0", + "@istanbuljs/load-nyc-config": "^1.0.0", + "@istanbuljs/schema": "^0.1.2", + "istanbul-lib-instrument": "^5.0.4", + "test-exclude": "^6.0.0" }, "engines": { "node": ">=8" } }, - "node_modules/data-urls/node_modules/webidl-conversions": { - "version": "6.1.0", - "resolved": "https://registry.npmjs.org/webidl-conversions/-/webidl-conversions-6.1.0.tgz", - "integrity": "sha512-qBIvFLGiBpLjfwmYAaHPXsn+ho5xZnGvyGvsarywGNc8VyQJUMHJ8OBKGGrPER0okBeMDaan4mNBlgBROxuI8w==", - "dev": true, - "engines": { - "node": ">=10.4" - } - }, - "node_modules/data-urls/node_modules/whatwg-url": { - "version": "8.7.0", - "resolved": "https://registry.npmjs.org/whatwg-url/-/whatwg-url-8.7.0.tgz", - "integrity": "sha512-gAojqb/m9Q8a5IV96E3fHJM70AzCkgt4uXYX2O7EmuyOnLrViCQlsEBmF9UQIu3/aeAIp2U17rtbpZWNntQqdg==", + "node_modules/babel-preset-current-node-syntax": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/babel-preset-current-node-syntax/-/babel-preset-current-node-syntax-1.1.0.tgz", + "integrity": "sha512-ldYss8SbBlWva1bs28q78Ju5Zq1F+8BrqBZZ0VFhLBvhh6lCpC2o3gDJi/5DRLs9FgYZCnmPYIVFU4lRXCkyUw==", "dev": true, + "license": "MIT", "dependencies": { - "lodash": "^4.7.0", - "tr46": "^2.1.0", - "webidl-conversions": "^6.1.0" + "@babel/plugin-syntax-async-generators": "^7.8.4", + "@babel/plugin-syntax-bigint": "^7.8.3", + "@babel/plugin-syntax-class-properties": "^7.12.13", + "@babel/plugin-syntax-class-static-block": "^7.14.5", + "@babel/plugin-syntax-import-attributes": "^7.24.7", + "@babel/plugin-syntax-import-meta": "^7.10.4", + "@babel/plugin-syntax-json-strings": "^7.8.3", + "@babel/plugin-syntax-logical-assignment-operators": "^7.10.4", + "@babel/plugin-syntax-nullish-coalescing-operator": "^7.8.3", + "@babel/plugin-syntax-numeric-separator": "^7.10.4", + "@babel/plugin-syntax-object-rest-spread": "^7.8.3", + "@babel/plugin-syntax-optional-catch-binding": "^7.8.3", + "@babel/plugin-syntax-optional-chaining": "^7.8.3", + "@babel/plugin-syntax-private-property-in-object": "^7.14.5", + "@babel/plugin-syntax-top-level-await": "^7.14.5" }, - "engines": { - "node": ">=10" + "peerDependencies": { + "@babel/core": "^7.0.0" } }, - "node_modules/debug": { - "version": "2.6.9", - "resolved": "https://registry.npmjs.org/debug/-/debug-2.6.9.tgz", - "integrity": "sha512-bC7ElrdJaJnPbAP+1EotYvqZsb3ecl5wi6Bfi6BJTUcNowp6cvspg0jXznRTKDjm/E7AdgFBVeAPVMNcKGsHMA==", + "node_modules/balanced-match": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/balanced-match/-/balanced-match-1.0.2.tgz", + "integrity": "sha512-3oSeUO0TMV67hN1AmbXsK4yaqU7tjiHlbxRDZOpH0KW9+CeX4bRAaX0Anxt0tx2MrpRpWwQaPwIlISEJhYU5Pw==", + "dev": true, + "license": "MIT" + }, + "node_modules/before-after-hook": { + "version": "2.2.3", + "resolved": "https://registry.npmjs.org/before-after-hook/-/before-after-hook-2.2.3.tgz", + "integrity": "sha512-NzUnlZexiaH/46WDhANlyR2bXRopNg4F/zuSA3OpZnllCUgRaOF2znDioDWrmbNVsuZk6l9pMquQB38cfBZwkQ==", + "dev": true, + "license": "Apache-2.0" + }, + "node_modules/benchmark": { + "version": "2.1.4", + "resolved": "https://registry.npmjs.org/benchmark/-/benchmark-2.1.4.tgz", + "integrity": "sha512-l9MlfN4M1K/H2fbhfMy3B7vJd6AGKJVQn2h6Sg/Yx+KckoUA7ewS5Vv6TjSq18ooE1kS9hhAlQRH3AkXIh/aOQ==", "dev": true, + "license": "MIT", "dependencies": { - "ms": "2.0.0" + "lodash": "^4.17.4", + "platform": "^1.3.3" } }, - "node_modules/decamelize": { - "version": "1.2.0", - "resolved": "https://registry.npmjs.org/decamelize/-/decamelize-1.2.0.tgz", - "integrity": "sha1-9lNNFRSCabIDUue+4m9QH5oZEpA=", + "node_modules/binary-extensions": { + "version": "2.3.0", + "resolved": "https://registry.npmjs.org/binary-extensions/-/binary-extensions-2.3.0.tgz", + "integrity": "sha512-Ceh+7ox5qe7LJuLHoY0feh3pHuUDHAcRUeyL2VYghZwfpkNIy/+8Ocg0a3UuSoYzavmylwuLWQOf3hl0jjMMIw==", "dev": true, + "license": "MIT", "engines": { - "node": ">=0.10.0" + "node": ">=8" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" } }, - "node_modules/decamelize-keys": { - "version": "1.1.0", - "resolved": "https://registry.npmjs.org/decamelize-keys/-/decamelize-keys-1.1.0.tgz", - "integrity": "sha1-0XGoeTMlKAfrPLYdwcFEXQeN8tk=", + "node_modules/brace-expansion": { + "version": "2.0.2", + "resolved": "https://registry.npmjs.org/brace-expansion/-/brace-expansion-2.0.2.tgz", + "integrity": "sha512-Jt0vHyM+jmUBqojB7E1NIYadt0vI0Qxjxd2TErW94wDz+E2LAm5vKMXXwg6ZZBTHPuUlDgQHKXvjGBdfcF1ZDQ==", "dev": true, + "license": "MIT", "dependencies": { - "decamelize": "^1.1.0", - "map-obj": "^1.0.0" - }, - "engines": { - "node": ">=0.10.0" + "balanced-match": "^1.0.0" } }, - "node_modules/decamelize-keys/node_modules/map-obj": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/map-obj/-/map-obj-1.0.1.tgz", - "integrity": "sha1-2TPOuSBdgr3PSIb2dCvcK03qFG0=", + "node_modules/braces": { + "version": "3.0.3", + "resolved": "https://registry.npmjs.org/braces/-/braces-3.0.3.tgz", + "integrity": "sha512-yQbXgO/OSZVD2IsiLlro+7Hf6Q18EJrKSEsdoMzKePKXct3gvD8oLcOQdIzGupr5Fj+EDe8gO/lxc1BzfMpxvA==", "dev": true, + "license": "MIT", + "dependencies": { + "fill-range": "^7.1.1" + }, "engines": { - "node": ">=0.10.0" + "node": ">=8" } }, - "node_modules/decimal.js": { - "version": "10.3.1", - "resolved": "https://registry.npmjs.org/decimal.js/-/decimal.js-10.3.1.tgz", - "integrity": "sha512-V0pfhfr8suzyPGOx3nmq4aHqabehUZn6Ch9kyFpV79TGDTWFmHqUqXdabR7QHqxzrYolF4+tVmJhUG4OURg5dQ==", - "dev": true - }, - "node_modules/decode-uri-component": { - "version": "0.2.0", - "resolved": "https://registry.npmjs.org/decode-uri-component/-/decode-uri-component-0.2.0.tgz", - "integrity": "sha1-6zkTMzRYd1y4TNGh+uBiEGu4dUU=", + "node_modules/browser-stdout": { + "version": "1.3.1", + "resolved": "https://registry.npmjs.org/browser-stdout/-/browser-stdout-1.3.1.tgz", + "integrity": "sha512-qhAVI1+Av2X7qelOfAIYwXONood6XlZE/fXaBSmW/T5SzLAmCgzi+eiWE7fUvbHaeNBQH13UftjpXxsfLkMpgw==", "dev": true, - "engines": { - "node": ">=0.10" - } + "license": "ISC" }, - "node_modules/deep-eql": { - "version": "3.0.1", - "resolved": "https://registry.npmjs.org/deep-eql/-/deep-eql-3.0.1.tgz", - "integrity": "sha512-+QeIQyN5ZuO+3Uk5DYh6/1eKO0m0YmJFGNmFHGACpf1ClL1nmlV/p4gNgbl2pJGxgXb4faqo6UE+M5ACEMyVcw==", + "node_modules/browserslist": { + "version": "4.24.4", + "resolved": "https://registry.npmjs.org/browserslist/-/browserslist-4.24.4.tgz", + "integrity": "sha512-KDi1Ny1gSePi1vm0q4oxSF8b4DR44GF4BbmS2YdhPLOEqd8pDviZOGH/GsmRwoWJ2+5Lr085X7naowMwKHDG1A==", "dev": true, + "funding": [ + { + "type": "opencollective", + "url": "https://opencollective.com/browserslist" + }, + { + "type": "tidelift", + "url": "https://tidelift.com/funding/github/npm/browserslist" + }, + { + "type": "github", + "url": "https://github.com/sponsors/ai" + } + ], + "license": "MIT", "dependencies": { - "type-detect": "^4.0.0" + "caniuse-lite": "^1.0.30001688", + "electron-to-chromium": "^1.5.73", + "node-releases": "^2.0.19", + "update-browserslist-db": "^1.1.1" + }, + "bin": { + "browserslist": "cli.js" }, "engines": { - "node": ">=0.12" - } - }, - "node_modules/deep-is": { - "version": "0.1.3", - "resolved": "https://registry.npmjs.org/deep-is/-/deep-is-0.1.3.tgz", - "integrity": "sha1-s2nW+128E+7PUk+RsHD+7cNXzzQ=", - "dev": true - }, - "node_modules/deepmerge": { - "version": "3.3.0", - "resolved": "https://registry.npmjs.org/deepmerge/-/deepmerge-3.3.0.tgz", - "integrity": "sha512-GRQOafGHwMHpjPx9iCvTgpu9NojZ49q794EEL94JVEw6VaeA8XTUyBKvAkOOjBX9oJNiV6G3P+T+tihFjo2TqA==", - "dev": true, - "engines": { - "node": ">=0.10.0" + "node": "^6 || ^7 || ^8 || ^9 || ^10 || ^11 || ^12 || >=13.7" } }, - "node_modules/default-compare": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/default-compare/-/default-compare-1.0.0.tgz", - "integrity": "sha512-QWfXlM0EkAbqOCbD/6HjdwT19j7WCkMyiRhWilc4H9/5h/RzTF9gv5LYh1+CmDV5d1rki6KAWLtQale0xt20eQ==", + "node_modules/bser": { + "version": "2.1.1", + "resolved": "https://registry.npmjs.org/bser/-/bser-2.1.1.tgz", + "integrity": "sha512-gQxTNE/GAfIIrmHLUE3oJyp5FO6HRBfhjnw4/wMmA63ZGDJnWBmgY/lyQBpnDUkGmAhbSe39tx2d/iTOAfglwQ==", "dev": true, + "license": "Apache-2.0", "dependencies": { - "kind-of": "^5.0.2" - }, - "engines": { - "node": ">=0.10.0" + "node-int64": "^0.4.0" } }, - "node_modules/default-compare/node_modules/kind-of": { - "version": "5.1.0", - "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-5.1.0.tgz", - "integrity": "sha512-NGEErnH6F2vUuXDh+OlbcKW7/wOcfdRHaZ7VWtqCztfHri/++YKmP51OdWeGPuqCOba6kk2OTe5d02VmTB80Pw==", + "node_modules/buffer-equal-constant-time": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/buffer-equal-constant-time/-/buffer-equal-constant-time-1.0.1.tgz", + "integrity": "sha512-zRpUiDwd/xk6ADqPMATG8vc9VPrkck7T07OIx0gnjmJAnHnTVXNQG3vfvWNuiZIkwu9KrKdA1iJKfsfTVxE6NA==", "dev": true, - "engines": { - "node": ">=0.10.0" - } + "license": "BSD-3-Clause" }, - "node_modules/default-resolution": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/default-resolution/-/default-resolution-2.0.0.tgz", - "integrity": "sha1-vLgrqnKtebQmp2cy8aga1t8m1oQ=", + "node_modules/buffer-from": { + "version": "1.1.2", + "resolved": "https://registry.npmjs.org/buffer-from/-/buffer-from-1.1.2.tgz", + "integrity": "sha512-E+XQCRwSbaaiChtv6k6Dwgc+bx+Bs6vuKJHHl5kox/BaKbhiXzqQOwK4cO22yElGp2OCmjwVhT3HmxgyPGnJfQ==", "dev": true, - "engines": { - "node": ">= 0.10" - } + "license": "MIT" }, - "node_modules/define-properties": { - "version": "1.1.3", - "resolved": "https://registry.npmjs.org/define-properties/-/define-properties-1.1.3.tgz", - "integrity": "sha512-3MqfYKj2lLzdMSf8ZIZE/V+Zuy+BgD6f164e8K2w7dgnpKArBDerGYpM46IYYcjnkdPNMjPk9A6VFB8+3SKlXQ==", + "node_modules/call-bind": { + "version": "1.0.8", + "resolved": "https://registry.npmjs.org/call-bind/-/call-bind-1.0.8.tgz", + "integrity": "sha512-oKlSFMcMwpUg2ednkhQ454wfWiU/ul3CkJe/PEHcTKuiX6RpbehUiFMXu13HalGZxfUwCQzZG747YXBn1im9ww==", "dev": true, + "license": "MIT", "dependencies": { - "object-keys": "^1.0.12" + "call-bind-apply-helpers": "^1.0.0", + "es-define-property": "^1.0.0", + "get-intrinsic": "^1.2.4", + "set-function-length": "^1.2.2" }, "engines": { "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" } }, - "node_modules/define-property": { - "version": "2.0.2", - "resolved": "https://registry.npmjs.org/define-property/-/define-property-2.0.2.tgz", - "integrity": "sha512-jwK2UV4cnPpbcG7+VRARKTZPUWowwXA8bzH5NP6ud0oeAxyYPuGZUAC7hMugpCdz4BeSZl2Dl9k66CHJ/46ZYQ==", + "node_modules/call-bind-apply-helpers": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/call-bind-apply-helpers/-/call-bind-apply-helpers-1.0.2.tgz", + "integrity": "sha512-Sp1ablJ0ivDkSzjcaJdxEunN5/XvksFJ2sMBFfq6x0ryhQV/2b/KwFe21cMpmHtPOSij8K99/wSfoEuTObmuMQ==", "dev": true, + "license": "MIT", "dependencies": { - "is-descriptor": "^1.0.2", - "isobject": "^3.0.1" + "es-errors": "^1.3.0", + "function-bind": "^1.1.2" }, "engines": { - "node": ">=0.10.0" + "node": ">= 0.4" } }, - "node_modules/define-property/node_modules/is-accessor-descriptor": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/is-accessor-descriptor/-/is-accessor-descriptor-1.0.0.tgz", - "integrity": "sha512-m5hnHTkcVsPfqx3AKlyttIPb7J+XykHvJP2B9bZDjlhLIoEq4XoK64Vg7boZlVWYK6LUY94dYPEE7Lh0ZkZKcQ==", + "node_modules/call-bound": { + "version": "1.0.4", + "resolved": "https://registry.npmjs.org/call-bound/-/call-bound-1.0.4.tgz", + "integrity": "sha512-+ys997U96po4Kx/ABpBCqhA9EuxJaQWDQg7295H4hBphv3IZg0boBKuwYpt4YXp6MZ5AmZQnU/tyMTlRpaSejg==", "dev": true, + "license": "MIT", "dependencies": { - "kind-of": "^6.0.0" + "call-bind-apply-helpers": "^1.0.2", + "get-intrinsic": "^1.3.0" }, "engines": { - "node": ">=0.10.0" + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" } }, - "node_modules/define-property/node_modules/is-data-descriptor": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/is-data-descriptor/-/is-data-descriptor-1.0.0.tgz", - "integrity": "sha512-jbRXy1FmtAoCjQkVmIVYwuuqDFUbaOeDjmed1tOGPrsMhtJA4rD9tkgA0F1qJ3gRFRXcHYVkdeaP50Q5rE/jLQ==", + "node_modules/caller-callsite": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/caller-callsite/-/caller-callsite-2.0.0.tgz", + "integrity": "sha512-JuG3qI4QOftFsZyOn1qq87fq5grLIyk1JYd5lJmdA+fG7aQ9pA/i3JIJGcO3q0MrRcHlOt1U+ZeHW8Dq9axALQ==", "dev": true, + "license": "MIT", "dependencies": { - "kind-of": "^6.0.0" + "callsites": "^2.0.0" }, "engines": { - "node": ">=0.10.0" + "node": ">=4" } }, - "node_modules/define-property/node_modules/is-descriptor": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/is-descriptor/-/is-descriptor-1.0.2.tgz", - "integrity": "sha512-2eis5WqQGV7peooDyLmNEPUrps9+SXX5c9pL3xEB+4e9HnGuDa7mB7kHxHw4CbqS9k1T2hOH3miL8n8WtiYVtg==", + "node_modules/caller-callsite/node_modules/callsites": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/callsites/-/callsites-2.0.0.tgz", + "integrity": "sha512-ksWePWBloaWPxJYQ8TL0JHvtci6G5QTKwQ95RcWAa/lzoAKuAOflGdAK92hpHXjkwb8zLxoLNUoNYZgVsaJzvQ==", "dev": true, - "dependencies": { - "is-accessor-descriptor": "^1.0.0", - "is-data-descriptor": "^1.0.0", - "kind-of": "^6.0.2" - }, + "license": "MIT", "engines": { - "node": ">=0.10.0" + "node": ">=4" } }, - "node_modules/del": { - "version": "4.1.1", - "resolved": "https://registry.npmjs.org/del/-/del-4.1.1.tgz", - "integrity": "sha512-QwGuEUouP2kVwQenAsOof5Fv8K9t3D8Ca8NxcXKrIpEHjTXK5J2nXLdP+ALI1cgv8wj7KuwBhTwBkOZSJKM5XQ==", + "node_modules/caller-path": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/caller-path/-/caller-path-2.0.0.tgz", + "integrity": "sha512-MCL3sf6nCSXOwCTzvPKhN18TU7AHTvdtam8DAogxcrJ8Rjfbbg7Lgng64H9Iy+vUV6VGFClN/TyxBkAebLRR4A==", "dev": true, + "license": "MIT", "dependencies": { - "@types/glob": "^7.1.1", - "globby": "^6.1.0", - "is-path-cwd": "^2.0.0", - "is-path-in-cwd": "^2.0.0", - "p-map": "^2.0.0", - "pify": "^4.0.1", - "rimraf": "^2.6.3" + "caller-callsite": "^2.0.0" }, "engines": { - "node": ">=6" + "node": ">=4" } }, - "node_modules/del/node_modules/pify": { - "version": "4.0.1", - "resolved": "https://registry.npmjs.org/pify/-/pify-4.0.1.tgz", - "integrity": "sha512-uB80kBFb/tfd68bVleG9T5GGsGPjJrLAUpR5PZIrhBnIaRTQRjqdJSsIKkOP6OAIFbj7GOrcudc5pNjZ+geV2g==", + "node_modules/callsites": { + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/callsites/-/callsites-3.1.0.tgz", + "integrity": "sha512-P8BjAsXvZS+VIDUI11hHCQEv74YT67YUi5JJFNWIqL235sBmjX4+qx9Muvls5ivyNENctx46xQLQ3aTuE7ssaQ==", "dev": true, + "license": "MIT", "engines": { "node": ">=6" } }, - "node_modules/delay": { - "version": "4.3.0", - "resolved": "https://registry.npmjs.org/delay/-/delay-4.3.0.tgz", - "integrity": "sha512-Lwaf3zVFDMBop1yDuFZ19F9WyGcZcGacsbdlZtWjQmM50tOcMntm1njF/Nb/Vjij3KaSvCF+sEYGKrrjObu2NA==", + "node_modules/camelcase": { + "version": "5.3.1", + "resolved": "https://registry.npmjs.org/camelcase/-/camelcase-5.3.1.tgz", + "integrity": "sha512-L28STB170nwWS63UjtlEOE3dldQApaJXZkOI1uMFfzf3rRuPegHaHesyee+YxQ+W6SvRDQV6UrdOdRiR153wJg==", "dev": true, + "license": "MIT", "engines": { "node": ">=6" } }, - "node_modules/delayed-stream": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/delayed-stream/-/delayed-stream-1.0.0.tgz", - "integrity": "sha1-3zrhmayt+31ECqrgsp4icrJOxhk=", - "dev": true, - "engines": { - "node": ">=0.4.0" - } - }, - "node_modules/deprecation": { - "version": "2.3.1", - "resolved": "https://registry.npmjs.org/deprecation/-/deprecation-2.3.1.tgz", - "integrity": "sha512-xmHIy4F3scKVwMsQ4WnVaS8bHOx0DmVwRywosKhaILI0ywMDWPtBSku2HNxRvF7jtwDRsoEwYQSfbxj8b7RlJQ==", - "dev": true - }, - "node_modules/detect-file": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/detect-file/-/detect-file-1.0.0.tgz", - "integrity": "sha1-8NZtA2cqglyxtzvbP+YjEMjlUrc=", + "node_modules/camelcase-keys": { + "version": "6.2.2", + "resolved": "https://registry.npmjs.org/camelcase-keys/-/camelcase-keys-6.2.2.tgz", + "integrity": "sha512-YrwaA0vEKazPBkn0ipTiMpSajYDSe+KjQfrjhcBMxJt/znbvlHd8Pw/Vamaz5EB4Wfhs3SUR3Z9mwRu/P3s3Yg==", "dev": true, + "license": "MIT", + "dependencies": { + "camelcase": "^5.3.1", + "map-obj": "^4.0.0", + "quick-lru": "^4.0.1" + }, "engines": { - "node": ">=0.10.0" + "node": ">=8" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" } }, - "node_modules/diff": { - "version": "5.0.0", - "resolved": "https://registry.npmjs.org/diff/-/diff-5.0.0.tgz", - "integrity": "sha512-/VTCrvm5Z0JGty/BWHljh+BAiw3IK+2j87NGMu8Nwc/f48WoDAC395uomO9ZD117ZOBaHmkX1oyLvkVM/aIT3w==", + "node_modules/caniuse-lite": { + "version": "1.0.30001715", + "resolved": "https://registry.npmjs.org/caniuse-lite/-/caniuse-lite-1.0.30001715.tgz", + "integrity": "sha512-7ptkFGMm2OAOgvZpwgA4yjQ5SQbrNVGdRjzH0pBdy1Fasvcr+KAeECmbCAECzTuDuoX0FCY8KzUxjf9+9kfZEw==", "dev": true, - "engines": { - "node": ">=0.3.1" - } + "funding": [ + { + "type": "opencollective", + "url": "https://opencollective.com/browserslist" + }, + { + "type": "tidelift", + "url": "https://tidelift.com/funding/github/npm/caniuse-lite" + }, + { + "type": "github", + "url": "https://github.com/sponsors/ai" + } + ], + "license": "CC-BY-4.0" }, - "node_modules/dir-glob": { - "version": "2.2.2", - "resolved": "https://registry.npmjs.org/dir-glob/-/dir-glob-2.2.2.tgz", - "integrity": "sha512-f9LBi5QWzIW3I6e//uxZoLBlUt9kcp66qo0sSCxL6YZKc75R1c4MFCoe/LaZiBGmgujvQdxc5Bn3QhfyvK5Hsw==", + "node_modules/chai": { + "version": "5.2.0", + "resolved": "https://registry.npmjs.org/chai/-/chai-5.2.0.tgz", + "integrity": "sha512-mCuXncKXk5iCLhfhwTc0izo0gtEmpz5CtG2y8GiOINBlMVS6v8TMRc5TaLWKS6692m9+dVVfzgeVxR5UxWHTYw==", "dev": true, + "license": "MIT", "dependencies": { - "path-type": "^3.0.0" + "assertion-error": "^2.0.1", + "check-error": "^2.1.1", + "deep-eql": "^5.0.1", + "loupe": "^3.1.0", + "pathval": "^2.0.0" }, "engines": { - "node": ">=4" + "node": ">=12" } }, - "node_modules/dir-glob/node_modules/path-type": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/path-type/-/path-type-3.0.0.tgz", - "integrity": "sha512-T2ZUsdZFHgA3u4e5PfPbjd7HDDpxPnQb5jN0SrDsjNSuVXHJqtwTnWqG0B1jZrgmJ/7lj1EmVIByWt1gxGkWvg==", + "node_modules/chalk": { + "version": "2.4.2", + "resolved": "https://registry.npmjs.org/chalk/-/chalk-2.4.2.tgz", + "integrity": "sha512-Mti+f9lpJNcwF4tWV8/OrTTtF1gZi+f8FqlyAdouralcFWFQWF2+NgCHShjkCb+IFBLq9buZwE1xckQU4peSuQ==", "dev": true, + "license": "MIT", "dependencies": { - "pify": "^3.0.0" + "ansi-styles": "^3.2.1", + "escape-string-regexp": "^1.0.5", + "supports-color": "^5.3.0" }, "engines": { "node": ">=4" } }, - "node_modules/dir-glob/node_modules/pify": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/pify/-/pify-3.0.0.tgz", - "integrity": "sha1-5aSs0sEB/fPZpNB/DbxNtJ3SgXY=", + "node_modules/check-error": { + "version": "2.1.1", + "resolved": "https://registry.npmjs.org/check-error/-/check-error-2.1.1.tgz", + "integrity": "sha512-OAlb+T7V4Op9OwdkjmguYRqncdlx5JiofwOAUkmTF+jNdHwzTaTs4sRAGpzLF3oOz5xAyDGrPgeIDFQmDOTiJw==", "dev": true, + "license": "MIT", "engines": { - "node": ">=4" + "node": ">= 16" } }, - "node_modules/docdash": { - "version": "1.2.0", - "resolved": "https://registry.npmjs.org/docdash/-/docdash-1.2.0.tgz", - "integrity": "sha512-IYZbgYthPTspgqYeciRJNPhSwL51yer7HAwDXhF5p+H7mTDbPvY3PCk/QDjNxdPCpWkaJVFC4t7iCNB/t9E5Kw==", - "dev": true - }, - "node_modules/doctrine": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/doctrine/-/doctrine-3.0.0.tgz", - "integrity": "sha512-yS+Q5i3hBf7GBkd4KG8a7eBNNWNGLTaEwwYWUijIYM7zrlYDM0BFXHjjPWlWZ1Rg7UaddZeIDmi9jF3HmqiQ2w==", + "node_modules/chokidar": { + "version": "3.6.0", + "resolved": "https://registry.npmjs.org/chokidar/-/chokidar-3.6.0.tgz", + "integrity": "sha512-7VT13fmjotKpGipCW9JEQAusEPE+Ei8nl6/g4FBAmIm0GOOLMua9NDDo/DWp0ZAxCr3cPq5ZpBqmPAQgDda2Pw==", "dev": true, + "license": "MIT", "dependencies": { - "esutils": "^2.0.2" + "anymatch": "~3.1.2", + "braces": "~3.0.2", + "glob-parent": "~5.1.2", + "is-binary-path": "~2.1.0", + "is-glob": "~4.0.1", + "normalize-path": "~3.0.0", + "readdirp": "~3.6.0" }, "engines": { - "node": ">=6.0.0" - } - }, - "node_modules/dom-serializer": { - "version": "0.2.2", - "resolved": "https://registry.npmjs.org/dom-serializer/-/dom-serializer-0.2.2.tgz", - "integrity": "sha512-2/xPb3ORsQ42nHYiSunXkDjPLBaEj/xTwUO4B7XCZQTRk7EBtTOPaygh10YAAh2OI1Qrp6NWfpAhzswj0ydt9g==", - "dev": true, - "dependencies": { - "domelementtype": "^2.0.1", - "entities": "^2.0.0" + "node": ">= 8.10.0" + }, + "funding": { + "url": "https://paulmillr.com/funding/" + }, + "optionalDependencies": { + "fsevents": "~2.3.2" } }, - "node_modules/domelementtype": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/domelementtype/-/domelementtype-2.0.1.tgz", - "integrity": "sha512-5HOHUDsYZWV8FGWN0Njbr/Rn7f/eWSQi1v7+HsUVwXgn8nWWlL64zKDkS0n8ZmQ3mlWOMuXOnR+7Nx/5tMO5AQ==", - "dev": true - }, - "node_modules/domexception": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/domexception/-/domexception-2.0.1.tgz", - "integrity": "sha512-yxJ2mFy/sibVQlu5qHjOkf9J3K6zgmCxgJ94u2EdvDOV09H+32LtRswEcUsmUWN72pVLOEnTSRaIVVzVQgS0dg==", + "node_modules/chokidar/node_modules/glob-parent": { + "version": "5.1.2", + "resolved": "https://registry.npmjs.org/glob-parent/-/glob-parent-5.1.2.tgz", + "integrity": "sha512-AOIgSQCepiJYwP3ARnGx+5VnTu2HBYdzbGP45eLw1vr3zB3vZLeyed1sC9hnbcOc9/SrMyM5RPQrkGz4aS9Zow==", "dev": true, + "license": "ISC", "dependencies": { - "webidl-conversions": "^5.0.0" + "is-glob": "^4.0.1" }, "engines": { - "node": ">=8" + "node": ">= 6" } }, - "node_modules/domexception/node_modules/webidl-conversions": { - "version": "5.0.0", - "resolved": "https://registry.npmjs.org/webidl-conversions/-/webidl-conversions-5.0.0.tgz", - "integrity": "sha512-VlZwKPCkYKxQgeSbH5EyngOmRp7Ww7I9rQLERETtf5ofd9pGeswWiOtogpEO850jziPRarreGxn5QIiTqpb2wA==", + "node_modules/ci-info": { + "version": "3.9.0", + "resolved": "https://registry.npmjs.org/ci-info/-/ci-info-3.9.0.tgz", + "integrity": "sha512-NIxF55hv4nSqQswkAeiOi1r83xy8JldOFDTWiug55KBu9Jnblncd2U6ViHmYgHf01TPZS77NJBhBMKdWj9HQMQ==", "dev": true, + "funding": [ + { + "type": "github", + "url": "https://github.com/sponsors/sibiraj-s" + } + ], + "license": "MIT", "engines": { "node": ">=8" } }, - "node_modules/domhandler": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/domhandler/-/domhandler-3.0.0.tgz", - "integrity": "sha512-eKLdI5v9m67kbXQbJSNn1zjh0SDzvzWVWtX+qEI3eMjZw8daH9k8rlj1FZY9memPwjiskQFbe7vHVVJIAqoEhw==", + "node_modules/clean-css": { + "version": "5.3.3", + "resolved": "https://registry.npmjs.org/clean-css/-/clean-css-5.3.3.tgz", + "integrity": "sha512-D5J+kHaVb/wKSFcyyV75uCn8fiY4sV38XJoe4CUyGQ+mOU/fMVYUdH1hJC+CJQ5uY3EnW27SbJYS4X8BiLrAFg==", "dev": true, + "license": "MIT", "dependencies": { - "domelementtype": "^2.0.1" + "source-map": "~0.6.0" }, "engines": { - "node": ">= 4" + "node": ">= 10.0" } }, - "node_modules/domutils": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/domutils/-/domutils-2.0.0.tgz", - "integrity": "sha512-n5SelJ1axbO636c2yUtOGia/IcJtVtlhQbFiVDBZHKV5ReJO1ViX7sFEemtuyoAnBxk5meNSYgA8V4s0271efg==", + "node_modules/cliui": { + "version": "8.0.1", + "resolved": "https://registry.npmjs.org/cliui/-/cliui-8.0.1.tgz", + "integrity": "sha512-BSeNnyus75C4//NQ9gQt1/csTXyo/8Sb+afLAkzAptFuMsod9HFokGNudZpi/oQV73hnVK+sR+5PVRMd+Dr7YQ==", "dev": true, + "license": "ISC", "dependencies": { - "dom-serializer": "^0.2.1", - "domelementtype": "^2.0.1", - "domhandler": "^3.0.0" + "string-width": "^4.2.0", + "strip-ansi": "^6.0.1", + "wrap-ansi": "^7.0.0" + }, + "engines": { + "node": ">=12" } }, - "node_modules/duplexer": { - "version": "0.1.2", - "resolved": "https://registry.npmjs.org/duplexer/-/duplexer-0.1.2.tgz", - "integrity": "sha512-jtD6YG370ZCIi/9GTaJKQxWTZD045+4R4hTk/x1UyoqadyJ9x9CgSi1RlVDQF8U2sxLLSnFkCaMihqljHIWgMg==", - "dev": true + "node_modules/collect-v8-coverage": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/collect-v8-coverage/-/collect-v8-coverage-1.0.2.tgz", + "integrity": "sha512-lHl4d5/ONEbLlJvaJNtsF/Lz+WvB07u2ycqTYbdrq7UypDXailES4valYb2eWiJFxZlVmpGekfqoxQhzyFdT4Q==", + "dev": true, + "license": "MIT" }, - "node_modules/duplexify": { - "version": "3.7.1", - "resolved": "https://registry.npmjs.org/duplexify/-/duplexify-3.7.1.tgz", - "integrity": "sha512-07z8uv2wMyS51kKhD1KsdXJg5WQ6t93RneqRxUHnskXVtlYYkLqM0gqStQZ3pj073g687jPCHrqNfCzawLYh5g==", + "node_modules/color-convert": { + "version": "1.9.3", + "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-1.9.3.tgz", + "integrity": "sha512-QfAUtd+vFdAtFQcC8CCyYt1fYWxSqAiK2cSD6zDB8N3cpsEBAvRxp9zOGg6G/SHHJYAT88/az/IuDGALsNVbGg==", "dev": true, + "license": "MIT", "dependencies": { - "end-of-stream": "^1.0.0", - "inherits": "^2.0.1", - "readable-stream": "^2.0.0", - "stream-shift": "^1.0.0" + "color-name": "1.1.3" } }, - "node_modules/each-props": { - "version": "1.3.2", - "resolved": "https://registry.npmjs.org/each-props/-/each-props-1.3.2.tgz", - "integrity": "sha512-vV0Hem3zAGkJAyU7JSjixeU66rwdynTAa1vofCrSA5fEln+m67Az9CcnkVD776/fsN/UjIWmBDoNRS6t6G9RfA==", - "dev": true, - "dependencies": { - "is-plain-object": "^2.0.1", - "object.defaults": "^1.1.0" - } + "node_modules/color-name": { + "version": "1.1.3", + "resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.3.tgz", + "integrity": "sha512-72fSenhMw2HZMTVHeCA9KCmpEIbzWiQsjN+BHcBbS9vr1mtt+vJjPdksIBNUmKAW8TFUDPJK5SUU3QhE9NEXDw==", + "dev": true, + "license": "MIT" }, - "node_modules/ecdsa-sig-formatter": { - "version": "1.0.11", - "resolved": "https://registry.npmjs.org/ecdsa-sig-formatter/-/ecdsa-sig-formatter-1.0.11.tgz", - "integrity": "sha512-nagl3RYrbNv6kQkeJIpt6NJZy8twLB/2vtz6yN9Z4vRKHN4/QZJIEbqohALSgwKdnksuY3k5Addp5lg8sVoVcQ==", + "node_modules/colors": { + "version": "1.4.0", + "resolved": "https://registry.npmjs.org/colors/-/colors-1.4.0.tgz", + "integrity": "sha512-a+UqTh4kgZg/SlGvfbzDHpgRu7AAQOmmqRHJnxhRZICKFUT91brVhNNt58CMWU9PsBbv3PDCZUHbVxuDiH2mtA==", "dev": true, - "dependencies": { - "safe-buffer": "^5.0.1" + "license": "MIT", + "engines": { + "node": ">=0.1.90" } }, - "node_modules/ecstatic": { - "version": "3.3.2", - "resolved": "https://registry.npmjs.org/ecstatic/-/ecstatic-3.3.2.tgz", - "integrity": "sha512-fLf9l1hnwrHI2xn9mEDT7KIi22UDqA2jaCwyCbSUJh9a1V+LEUSL/JO/6TIz/QyuBURWUHrFL5Kg2TtO1bkkog==", - "deprecated": "This package is unmaintained and deprecated. See the GH Issue 259.", + "node_modules/combined-stream": { + "version": "1.0.8", + "resolved": "https://registry.npmjs.org/combined-stream/-/combined-stream-1.0.8.tgz", + "integrity": "sha512-FQN4MRfuJeHf7cBbBMJFXhKSDq+2kAArBlmRBvcvFE5BB1HZKXtSFASDhdlz9zOYwxh8lDdnvmMOe/+5cdoEdg==", "dev": true, + "license": "MIT", "dependencies": { - "he": "^1.1.1", - "mime": "^1.6.0", - "minimist": "^1.1.0", - "url-join": "^2.0.5" + "delayed-stream": "~1.0.0" }, - "bin": { - "ecstatic": "lib/ecstatic.js" - } - }, - "node_modules/editions": { - "version": "1.3.4", - "resolved": "https://registry.npmjs.org/editions/-/editions-1.3.4.tgz", - "integrity": "sha512-gzao+mxnYDzIysXKMQi/+M1mjy/rjestjg6OPoYTtI+3Izp23oiGZitsl9lPDPiTGXbcSIk1iJWhliSaglxnUg==", - "dev": true, "engines": { - "node": ">=0.8" + "node": ">= 0.8" } }, - "node_modules/emoji-regex": { - "version": "7.0.3", - "resolved": "https://registry.npmjs.org/emoji-regex/-/emoji-regex-7.0.3.tgz", - "integrity": "sha512-CwBLREIQ7LvYFB0WyRvwhq5N5qPhc6PMjD6bYggFlI5YyDgl+0vxq5VHbMOFqLg7hfWzmu8T5Z1QofhmTIhItA==", - "dev": true + "node_modules/commander": { + "version": "2.20.3", + "resolved": "https://registry.npmjs.org/commander/-/commander-2.20.3.tgz", + "integrity": "sha512-GpVkmM8vF2vQUkj2LvZmD35JxeJOLCwJ9cUkugyk2nuhbv3+mJvpLYYt+0+USMxE+oj+ey/lJEnhZw75x/OMcQ==", + "dev": true, + "license": "MIT" }, - "node_modules/end-of-stream": { + "node_modules/comment-parser": { "version": "1.4.1", - "resolved": "https://registry.npmjs.org/end-of-stream/-/end-of-stream-1.4.1.tgz", - "integrity": "sha512-1MkrZNvWTKCaigbn+W15elq2BB/L22nqrSY5DKlo3X6+vclJm8Bb5djXJBmEX6fS3+zCh/F4VBK5Z2KxJt4s2Q==", + "resolved": "https://registry.npmjs.org/comment-parser/-/comment-parser-1.4.1.tgz", + "integrity": "sha512-buhp5kePrmda3vhc5B9t7pUQXAb2Tnd0qgpkIhPhkHXxJpiPJ11H0ZEU0oBpJ2QztSbzG/ZxMj/CHsYJqRHmyg==", "dev": true, - "dependencies": { - "once": "^1.4.0" + "license": "MIT", + "engines": { + "node": ">= 12.0.0" } }, - "node_modules/enquirer": { - "version": "2.3.6", - "resolved": "https://registry.npmjs.org/enquirer/-/enquirer-2.3.6.tgz", - "integrity": "sha512-yjNnPr315/FjS4zIsUxYguYUPP2e1NK4d7E7ZOLiyYCcbFBiTMyID+2wvm2w6+pZ/odMA7cRkjhsPbltwBOrLg==", + "node_modules/commondir": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/commondir/-/commondir-1.0.1.tgz", + "integrity": "sha512-W9pAhw0ja1Edb5GVdIF1mjZw/ASI0AlShXM83UUGe2DVr5TdAPEA1OA8m/g8zWp9x6On7gqufY+FatDbC3MDQg==", "dev": true, - "dependencies": { - "ansi-colors": "^4.1.1" - }, - "engines": { - "node": ">=8.6" - } + "license": "MIT" }, - "node_modules/enquirer/node_modules/ansi-colors": { - "version": "4.1.1", - "resolved": "https://registry.npmjs.org/ansi-colors/-/ansi-colors-4.1.1.tgz", - "integrity": "sha512-JoX0apGbHaUJBNl6yF+p6JAFYZ666/hhCGKN5t9QFjbJQKUU/g8MNbFDbvfrgKXvI1QpZplPOnwIo99lX/AAmA==", + "node_modules/concat-map": { + "version": "0.0.1", + "resolved": "https://registry.npmjs.org/concat-map/-/concat-map-0.0.1.tgz", + "integrity": "sha512-/Srv4dswyQNBfohGpz9o6Yb3Gz3SrUDqBH5rTuhGR7ahtlbYKnVxw2bCFMRljaA7EXHaXZ8wsHdodFvbkhKmqg==", "dev": true, - "engines": { - "node": ">=6" - } + "license": "MIT" }, - "node_modules/entities": { - "version": "2.1.0", - "resolved": "https://registry.npmjs.org/entities/-/entities-2.1.0.tgz", - "integrity": "sha512-hCx1oky9PFrJ611mf0ifBLBRW8lUUVRlFolb5gWRfIELabBlbp9xZvrqZLZAs+NxFnbfQoeGd8wDkygjg7U85w==", + "node_modules/convert-source-map": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/convert-source-map/-/convert-source-map-2.0.0.tgz", + "integrity": "sha512-Kvp459HrV2FEJ1CAsi1Ku+MY3kasH19TFykTz2xWmMeq6bk2NU3XXvfJ+Q61m0xktWwt+1HSYf3JZsTms3aRJg==", + "dev": true, + "license": "MIT" + }, + "node_modules/core-js": { + "version": "3.41.0", + "resolved": "https://registry.npmjs.org/core-js/-/core-js-3.41.0.tgz", + "integrity": "sha512-SJ4/EHwS36QMJd6h/Rg+GyR4A5xE0FSI3eZ+iBVpfqf1x0eTSg1smWLHrA+2jQThZSh97fmSgFSU8B61nxosxA==", "dev": true, + "hasInstallScript": true, + "license": "MIT", "funding": { - "url": "https://github.com/fb55/entities?sponsor=1" + "type": "opencollective", + "url": "https://opencollective.com/core-js" } }, - "node_modules/error-ex": { - "version": "1.3.2", - "resolved": "https://registry.npmjs.org/error-ex/-/error-ex-1.3.2.tgz", - "integrity": "sha512-7dFHNmqeFSEt2ZBsCriorKnn3Z2pj+fd9kmI6QoWw4//DL+icEBfc0U7qJCisqrTsKTjw4fNFy2pW9OqStD84g==", + "node_modules/core-util-is": { + "version": "1.0.3", + "resolved": "https://registry.npmjs.org/core-util-is/-/core-util-is-1.0.3.tgz", + "integrity": "sha512-ZQBvi1DcpJ4GDqanjucZ2Hj3wEO5pZDS89BWbkcrvdxksJorwUDDZamX9ldFkp9aw2lmBDLgkObEA4DWNJ9FYQ==", "dev": true, + "license": "MIT" + }, + "node_modules/cosmiconfig": { + "version": "5.2.1", + "resolved": "https://registry.npmjs.org/cosmiconfig/-/cosmiconfig-5.2.1.tgz", + "integrity": "sha512-H65gsXo1SKjf8zmrJ67eJk8aIRKV5ff2D4uKZIBZShbhGSpEmsQOPW/SKMKYhSTrqR7ufy6RP69rPogdaPh/kA==", + "dev": true, + "license": "MIT", "dependencies": { - "is-arrayish": "^0.2.1" + "import-fresh": "^2.0.0", + "is-directory": "^0.3.1", + "js-yaml": "^3.13.1", + "parse-json": "^4.0.0" + }, + "engines": { + "node": ">=4" } }, - "node_modules/es5-ext": { - "version": "0.10.53", - "resolved": "https://registry.npmjs.org/es5-ext/-/es5-ext-0.10.53.tgz", - "integrity": "sha512-Xs2Stw6NiNHWypzRTY1MtaG/uJlwCk8kH81920ma8mvN8Xq1gsfhZvpkImLQArw8AHnv8MT2I45J3c0R8slE+Q==", + "node_modules/cosmiconfig/node_modules/argparse": { + "version": "1.0.10", + "resolved": "https://registry.npmjs.org/argparse/-/argparse-1.0.10.tgz", + "integrity": "sha512-o5Roy6tNG4SL/FOkCAN6RzjiakZS25RLYFrcMttJqbdd8BWrnA+fGz57iN5Pb06pvBGvl5gQ0B48dJlslXvoTg==", "dev": true, + "license": "MIT", "dependencies": { - "es6-iterator": "~2.0.3", - "es6-symbol": "~3.1.3", - "next-tick": "~1.0.0" + "sprintf-js": "~1.0.2" } }, - "node_modules/es6-iterator": { - "version": "2.0.3", - "resolved": "https://registry.npmjs.org/es6-iterator/-/es6-iterator-2.0.3.tgz", - "integrity": "sha1-p96IkUGgWpSwhUQDstCg+/qY87c=", + "node_modules/cosmiconfig/node_modules/import-fresh": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/import-fresh/-/import-fresh-2.0.0.tgz", + "integrity": "sha512-eZ5H8rcgYazHbKC3PG4ClHNykCSxtAhxSSEM+2mb+7evD2CKF5V7c0dNum7AdpDh0ZdICwZY9sRSn8f+KH96sg==", "dev": true, + "license": "MIT", "dependencies": { - "d": "1", - "es5-ext": "^0.10.35", - "es6-symbol": "^3.1.1" + "caller-path": "^2.0.0", + "resolve-from": "^3.0.0" + }, + "engines": { + "node": ">=4" } }, - "node_modules/es6-promise": { - "version": "4.2.8", - "resolved": "https://registry.npmjs.org/es6-promise/-/es6-promise-4.2.8.tgz", - "integrity": "sha512-HJDGx5daxeIvxdBxvG2cb9g4tEvwIk3i8+nhX0yGrYmZUzbkdg8QbDevheDB8gd0//uPj4c1EQua8Q+MViT0/w==", - "dev": true - }, - "node_modules/es6-promisify": { - "version": "5.0.0", - "resolved": "https://registry.npmjs.org/es6-promisify/-/es6-promisify-5.0.0.tgz", - "integrity": "sha1-UQnWLz5W6pZ8S2NQWu8IKRyKUgM=", + "node_modules/cosmiconfig/node_modules/js-yaml": { + "version": "3.14.1", + "resolved": "https://registry.npmjs.org/js-yaml/-/js-yaml-3.14.1.tgz", + "integrity": "sha512-okMH7OXXJ7YrN9Ok3/SXrnu4iX9yOk+25nqX4imS2npuvTYDmo/QEZoqwZkYaIDk3jVvBOTOIEgEhaLOynBS9g==", "dev": true, + "license": "MIT", "dependencies": { - "es6-promise": "^4.0.3" + "argparse": "^1.0.7", + "esprima": "^4.0.0" + }, + "bin": { + "js-yaml": "bin/js-yaml.js" } }, - "node_modules/es6-symbol": { - "version": "3.1.3", - "resolved": "https://registry.npmjs.org/es6-symbol/-/es6-symbol-3.1.3.tgz", - "integrity": "sha512-NJ6Yn3FuDinBaBRWl/q5X/s4koRHBrgKAu+yGI6JCBeiu3qrcbJhwT2GeR/EXVfylRk8dpQVJoLEFhK+Mu31NA==", + "node_modules/cosmiconfig/node_modules/resolve-from": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/resolve-from/-/resolve-from-3.0.0.tgz", + "integrity": "sha512-GnlH6vxLymXJNMBo7XP1fJIzBFbdYt49CuTwmB/6N53t+kMPRMFKz783LlQ4tv28XoQfMWinAJX6WCGf2IlaIw==", "dev": true, - "dependencies": { - "d": "^1.0.1", - "ext": "^1.1.2" + "license": "MIT", + "engines": { + "node": ">=4" } }, - "node_modules/es6-weak-map": { - "version": "2.0.3", - "resolved": "https://registry.npmjs.org/es6-weak-map/-/es6-weak-map-2.0.3.tgz", - "integrity": "sha512-p5um32HOTO1kP+w7PRnB+5lQ43Z6muuMuIMffvDN8ZB4GcnjLBV6zGStpbASIMk4DCAvEaamhe2zhyCb/QXXsA==", + "node_modules/cross-fetch": { + "version": "4.1.0", + "resolved": "https://registry.npmjs.org/cross-fetch/-/cross-fetch-4.1.0.tgz", + "integrity": "sha512-uKm5PU+MHTootlWEY+mZ4vvXoCn4fLQxT9dSc1sXVMSFkINTJVN8cAQROpwcKm8bJ/c7rgZVIBWzH5T78sNZZw==", "dev": true, + "license": "MIT", "dependencies": { - "d": "1", - "es5-ext": "^0.10.46", - "es6-iterator": "^2.0.3", - "es6-symbol": "^3.1.1" + "node-fetch": "^2.7.0" } }, - "node_modules/escalade": { - "version": "3.1.1", - "resolved": "https://registry.npmjs.org/escalade/-/escalade-3.1.1.tgz", - "integrity": "sha512-k0er2gUkLf8O0zKJiAhmkTnJlTvINGv7ygDNPbeIsX/TJjGJZHuh9B2UxbsaEkmlEo9MfhrSzmhIlhRlI2GXnw==", + "node_modules/cross-spawn": { + "version": "7.0.6", + "resolved": "https://registry.npmjs.org/cross-spawn/-/cross-spawn-7.0.6.tgz", + "integrity": "sha512-uV2QOWP2nWzsy2aMp8aRibhi9dlzF5Hgh5SHaB9OiTGEyDTiJJyx0uy51QXdyWbtAHNua4XJzUKca3OzKUd3vA==", "dev": true, + "license": "MIT", + "dependencies": { + "path-key": "^3.1.0", + "shebang-command": "^2.0.0", + "which": "^2.0.1" + }, "engines": { - "node": ">=6" + "node": ">= 8" } }, - "node_modules/escape-string-regexp": { - "version": "1.0.5", - "resolved": "https://registry.npmjs.org/escape-string-regexp/-/escape-string-regexp-1.0.5.tgz", - "integrity": "sha1-G2HAViGQqN/2rjuyzwIAyhMLhtQ=", + "node_modules/cssstyle": { + "version": "4.3.1", + "resolved": "https://registry.npmjs.org/cssstyle/-/cssstyle-4.3.1.tgz", + "integrity": "sha512-ZgW+Jgdd7i52AaLYCriF8Mxqft0gD/R9i9wi6RWBhs1pqdPEzPjym7rvRKi397WmQFf3SlyUsszhw+VVCbx79Q==", "dev": true, + "license": "MIT", + "dependencies": { + "@asamuzakjp/css-color": "^3.1.2", + "rrweb-cssom": "^0.8.0" + }, "engines": { - "node": ">=0.8.0" + "node": ">=18" } }, - "node_modules/escodegen": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/escodegen/-/escodegen-2.0.0.tgz", - "integrity": "sha512-mmHKys/C8BFUGI+MAWNcSYoORYLMdPzjrknd2Vc+bUsjN5bXcr8EhrNB+UTqfL1y3I9c4fw2ihgtMPQLBRiQxw==", + "node_modules/cssstyle/node_modules/rrweb-cssom": { + "version": "0.8.0", + "resolved": "https://registry.npmjs.org/rrweb-cssom/-/rrweb-cssom-0.8.0.tgz", + "integrity": "sha512-guoltQEx+9aMf2gDZ0s62EcV8lsXR+0w8915TC3ITdn2YueuNjdAYh/levpU9nFaoChh9RUS5ZdQMrKfVEN9tw==", + "dev": true, + "license": "MIT" + }, + "node_modules/cubic2quad": { + "version": "1.2.1", + "resolved": "https://registry.npmjs.org/cubic2quad/-/cubic2quad-1.2.1.tgz", + "integrity": "sha512-wT5Y7mO8abrV16gnssKdmIhIbA9wSkeMzhh27jAguKrV82i24wER0vL5TGhUJ9dbJNDcigoRZ0IAHFEEEI4THQ==", "dev": true, + "license": "MIT" + }, + "node_modules/danger": { + "version": "13.0.4", + "resolved": "https://registry.npmjs.org/danger/-/danger-13.0.4.tgz", + "integrity": "sha512-IAdQ5nSJyIs4zKj6AN35ixt2B0Ce3WZUm3IFe/CMnL/Op7wV7IGg4D348U0EKNaNPP58QgXbdSk9pM+IXP1QXg==", + "dev": true, + "license": "MIT", "dependencies": { - "esprima": "^4.0.1", - "estraverse": "^5.2.0", - "esutils": "^2.0.2", - "optionator": "^0.8.1" + "@gitbeaker/rest": "^38.0.0", + "@octokit/rest": "^20.1.2", + "async-retry": "1.2.3", + "chalk": "^2.3.0", + "commander": "^2.18.0", + "core-js": "^3.8.2", + "debug": "^4.1.1", + "fast-json-patch": "^3.0.0-1", + "get-stdin": "^6.0.0", + "http-proxy-agent": "^5.0.0", + "https-proxy-agent": "^5.0.1", + "hyperlinker": "^1.0.0", + "ini": "^5.0.0", + "json5": "^2.2.3", + "jsonpointer": "^5.0.0", + "jsonwebtoken": "^9.0.0", + "lodash.find": "^4.6.0", + "lodash.includes": "^4.3.0", + "lodash.isobject": "^3.0.2", + "lodash.keys": "^4.0.8", + "lodash.mapvalues": "^4.6.0", + "lodash.memoize": "^4.1.2", + "memfs-or-file-map-to-github-branch": "^1.3.0", + "micromatch": "^4.0.4", + "node-cleanup": "^2.1.2", + "node-fetch": "^2.6.7", + "override-require": "^1.1.1", + "p-limit": "^2.1.0", + "parse-diff": "^0.7.0", + "parse-github-url": "^1.0.2", + "parse-link-header": "^2.0.0", + "pinpoint": "^1.1.0", + "prettyjson": "^1.2.1", + "readline-sync": "^1.4.9", + "regenerator-runtime": "^0.13.9", + "require-from-string": "^2.0.2", + "supports-hyperlinks": "^1.0.1" }, "bin": { - "escodegen": "bin/escodegen.js", - "esgenerate": "bin/esgenerate.js" + "danger": "distribution/commands/danger.js", + "danger-ci": "distribution/commands/danger-ci.js", + "danger-init": "distribution/commands/danger-init.js", + "danger-js": "distribution/commands/danger.js", + "danger-local": "distribution/commands/danger-local.js", + "danger-pr": "distribution/commands/danger-pr.js", + "danger-process": "distribution/commands/danger-process.js", + "danger-reset-status": "distribution/commands/danger-reset-status.js", + "danger-runner": "distribution/commands/danger-runner.js" }, "engines": { - "node": ">=6.0" - }, - "optionalDependencies": { - "source-map": "~0.6.1" + "node": ">=18" } }, - "node_modules/escodegen/node_modules/estraverse": { - "version": "5.2.0", - "resolved": "https://registry.npmjs.org/estraverse/-/estraverse-5.2.0.tgz", - "integrity": "sha512-BxbNGGNm0RyRYvUdHpIwv9IWzeM9XClbOxwoATuFdOE7ZE6wHL+HQ5T8hoPM+zHvmKzzsEqhgy0GrQ5X13afiQ==", + "node_modules/data-urls": { + "version": "5.0.0", + "resolved": "https://registry.npmjs.org/data-urls/-/data-urls-5.0.0.tgz", + "integrity": "sha512-ZYP5VBHshaDAiVZxjbRVcFJpc+4xGgT0bK3vzy1HLN8jTO975HEbuYzZJcHoQEY5K1a0z8YayJkyVETa08eNTg==", "dev": true, + "license": "MIT", + "dependencies": { + "whatwg-mimetype": "^4.0.0", + "whatwg-url": "^14.0.0" + }, "engines": { - "node": ">=4.0" + "node": ">=18" } }, - "node_modules/escodegen/node_modules/source-map": { - "version": "0.6.1", - "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.6.1.tgz", - "integrity": "sha512-UjgapumWlbMhkBgzT7Ykc5YXUT46F0iKu8SGXq0bcwP5dz/h0Plj6enJqjz1Zbq2l5WaqYnrVbwWOWMyF3F47g==", + "node_modules/data-view-buffer": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/data-view-buffer/-/data-view-buffer-1.0.2.tgz", + "integrity": "sha512-EmKO5V3OLXh1rtK2wgXRansaK1/mtVdTUEiEI0W8RkvgT05kfxaH29PliLnpLP73yYO6142Q72QNa8Wx/A5CqQ==", "dev": true, - "optional": true, + "license": "MIT", + "dependencies": { + "call-bound": "^1.0.3", + "es-errors": "^1.3.0", + "is-data-view": "^1.0.2" + }, "engines": { - "node": ">=0.10.0" + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" } }, - "node_modules/eslint": { - "version": "7.22.0", - "resolved": "https://registry.npmjs.org/eslint/-/eslint-7.22.0.tgz", - "integrity": "sha512-3VawOtjSJUQiiqac8MQc+w457iGLfuNGLFn8JmF051tTKbh5/x/0vlcEj8OgDCaw7Ysa2Jn8paGshV7x2abKXg==", + "node_modules/data-view-byte-length": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/data-view-byte-length/-/data-view-byte-length-1.0.2.tgz", + "integrity": "sha512-tuhGbE6CfTM9+5ANGf+oQb72Ky/0+s3xKUpHvShfiz2RxMFgFPjsXuRLBVMtvMs15awe45SRb83D6wH4ew6wlQ==", "dev": true, + "license": "MIT", "dependencies": { - "@babel/code-frame": "7.12.11", - "@eslint/eslintrc": "^0.4.0", - "ajv": "^6.10.0", - "chalk": "^4.0.0", - "cross-spawn": "^7.0.2", - "debug": "^4.0.1", - "doctrine": "^3.0.0", - "enquirer": "^2.3.5", - "eslint-scope": "^5.1.1", - "eslint-utils": "^2.1.0", - "eslint-visitor-keys": "^2.0.0", - "espree": "^7.3.1", - "esquery": "^1.4.0", - "esutils": "^2.0.2", - "file-entry-cache": "^6.0.1", - "functional-red-black-tree": "^1.0.1", - "glob-parent": "^5.0.0", - "globals": "^13.6.0", - "ignore": "^4.0.6", - "import-fresh": "^3.0.0", - "imurmurhash": "^0.1.4", - "is-glob": "^4.0.0", - "js-yaml": "^3.13.1", - "json-stable-stringify-without-jsonify": "^1.0.1", - "levn": "^0.4.1", - "lodash": "^4.17.21", - "minimatch": "^3.0.4", - "natural-compare": "^1.4.0", - "optionator": "^0.9.1", - "progress": "^2.0.0", - "regexpp": "^3.1.0", - "semver": "^7.2.1", - "strip-ansi": "^6.0.0", - "strip-json-comments": "^3.1.0", - "table": "^6.0.4", - "text-table": "^0.2.0", - "v8-compile-cache": "^2.0.3" - }, - "bin": { - "eslint": "bin/eslint.js" + "call-bound": "^1.0.3", + "es-errors": "^1.3.0", + "is-data-view": "^1.0.2" }, "engines": { - "node": "^10.12.0 || >=12.0.0" + "node": ">= 0.4" }, "funding": { - "url": "https://opencollective.com/eslint" + "url": "https://github.com/sponsors/inspect-js" } }, - "node_modules/eslint-plugin-jsdoc": { - "version": "32.3.0", - "resolved": "https://registry.npmjs.org/eslint-plugin-jsdoc/-/eslint-plugin-jsdoc-32.3.0.tgz", - "integrity": "sha512-zyx7kajDK+tqS1bHuY5sapkad8P8KT0vdd/lE55j47VPG2MeenSYuIY/M/Pvmzq5g0+3JB+P3BJGUXmHxtuKPQ==", + "node_modules/data-view-byte-offset": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/data-view-byte-offset/-/data-view-byte-offset-1.0.1.tgz", + "integrity": "sha512-BS8PfmtDGnrgYdOonGZQdLZslWIeCGFP9tpan0hi1Co2Zr2NKADsvGYA8XxuG/4UWgJ6Cjtv+YJnB6MM69QGlQ==", "dev": true, + "license": "MIT", "dependencies": { - "comment-parser": "1.1.2", - "debug": "^4.3.1", - "jsdoctypeparser": "^9.0.0", - "lodash": "^4.17.20", - "regextras": "^0.7.1", - "semver": "^7.3.4", - "spdx-expression-parse": "^3.0.1" + "call-bound": "^1.0.2", + "es-errors": "^1.3.0", + "is-data-view": "^1.0.1" }, "engines": { - "node": ">=10" + "node": ">= 0.4" }, - "peerDependencies": { - "eslint": "^6.0.0 || ^7.0.0" + "funding": { + "url": "https://github.com/sponsors/ljharb" } }, - "node_modules/eslint-plugin-jsdoc/node_modules/debug": { - "version": "4.3.1", - "resolved": "https://registry.npmjs.org/debug/-/debug-4.3.1.tgz", - "integrity": "sha512-doEwdvm4PCeK4K3RQN2ZC2BYUBaxwLARCqZmMjtF8a51J2Rb0xpVloFRnCODwqjpwnAoao4pelN8l3RJdv3gRQ==", + "node_modules/debug": { + "version": "4.4.0", + "resolved": "https://registry.npmjs.org/debug/-/debug-4.4.0.tgz", + "integrity": "sha512-6WTZ/IxCY/T6BALoZHaE4ctp9xm+Z5kY/pzYaCHRFeyVhojxlrm+46y68HA6hr0TcwEssoxNiDEUJQjfPZ/RYA==", "dev": true, + "license": "MIT", "dependencies": { - "ms": "2.1.2" + "ms": "^2.1.3" }, "engines": { "node": ">=6.0" @@ -2935,901 +3397,1060 @@ } } }, - "node_modules/eslint-plugin-jsdoc/node_modules/ms": { - "version": "2.1.2", - "resolved": "https://registry.npmjs.org/ms/-/ms-2.1.2.tgz", - "integrity": "sha512-sGkPx+VjMtmA6MX27oA4FBFELFCZZ4S4XqeGOXCv68tT+jb3vk/RyaKWP0PTKyWtmLSM0b+adUTEvbs1PEaH2w==", - "dev": true - }, - "node_modules/eslint-plugin-jsdoc/node_modules/semver": { - "version": "7.3.5", - "resolved": "https://registry.npmjs.org/semver/-/semver-7.3.5.tgz", - "integrity": "sha512-PoeGJYh8HK4BTO/a9Tf6ZG3veo/A7ZVsYrSA6J8ny9nb3B1VrpkuN+z9OE5wfE5p6H4LchYZsegiQgbJD94ZFQ==", + "node_modules/decamelize": { + "version": "1.2.0", + "resolved": "https://registry.npmjs.org/decamelize/-/decamelize-1.2.0.tgz", + "integrity": "sha512-z2S+W9X73hAUUki+N+9Za2lBlun89zigOyGrsax+KUQ6wKW4ZoWpEYBkGhQjwAjjDCkWxhY0VKEhk8wzY7F5cA==", "dev": true, - "dependencies": { - "lru-cache": "^6.0.0" - }, - "bin": { - "semver": "bin/semver.js" - }, + "license": "MIT", "engines": { - "node": ">=10" + "node": ">=0.10.0" } }, - "node_modules/eslint-plugin-jsdoc/node_modules/spdx-expression-parse": { - "version": "3.0.1", - "resolved": "https://registry.npmjs.org/spdx-expression-parse/-/spdx-expression-parse-3.0.1.tgz", - "integrity": "sha512-cbqHunsQWnJNE6KhVSMsMeH5H/L9EpymbzqTQ3uLwNCLZ1Q481oWaofqH7nO6V07xlXwY6PhQdQ2IedWx/ZK4Q==", + "node_modules/decamelize-keys": { + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/decamelize-keys/-/decamelize-keys-1.1.1.tgz", + "integrity": "sha512-WiPxgEirIV0/eIOMcnFBA3/IJZAZqKnwAwWyvvdi4lsr1WCN22nhdf/3db3DoZcUjTV2SqfzIwNyp6y2xs3nmg==", "dev": true, + "license": "MIT", "dependencies": { - "spdx-exceptions": "^2.1.0", - "spdx-license-ids": "^3.0.0" + "decamelize": "^1.1.0", + "map-obj": "^1.0.0" + }, + "engines": { + "node": ">=0.10.0" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" } }, - "node_modules/eslint-plugin-regexp": { - "version": "1.6.0", - "resolved": "https://registry.npmjs.org/eslint-plugin-regexp/-/eslint-plugin-regexp-1.6.0.tgz", - "integrity": "sha512-xkaQOzyY4PUukRd8b6zTq+QTtg0dePlCP2dZiM+XGSmvlpDeYiPJHfRDpAfS/sP9YtK6q7DGes1smCyPTD3Lkg==", + "node_modules/decamelize-keys/node_modules/map-obj": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/map-obj/-/map-obj-1.0.1.tgz", + "integrity": "sha512-7N/q3lyZ+LVCp7PzuxrJr4KMbBE2hW7BT7YNia330OFxIf4d3r5zVpicP2650l7CPN6RM9zOJRl3NGpqSiw3Eg==", "dev": true, - "dependencies": { - "comment-parser": "^1.1.2", - "eslint-utils": "^3.0.0", - "grapheme-splitter": "^1.0.4", - "jsdoctypeparser": "^9.0.0", - "refa": "^0.9.0", - "regexp-ast-analysis": "^0.3.0", - "regexpp": "^3.2.0", - "scslre": "^0.1.6" - }, + "license": "MIT", "engines": { - "node": "^12 || >=14" - }, - "peerDependencies": { - "eslint": ">=6.0.0" + "node": ">=0.10.0" } }, - "node_modules/eslint-plugin-regexp/node_modules/eslint-utils": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/eslint-utils/-/eslint-utils-3.0.0.tgz", - "integrity": "sha512-uuQC43IGctw68pJA1RgbQS8/NP7rch6Cwd4j3ZBtgo4/8Flj4eGE7ZYSZRN3iq5pVUv6GPdW5Z1RFleo84uLDA==", + "node_modules/decimal.js": { + "version": "10.5.0", + "resolved": "https://registry.npmjs.org/decimal.js/-/decimal.js-10.5.0.tgz", + "integrity": "sha512-8vDa8Qxvr/+d94hSh5P3IJwI5t8/c0KsMp+g8bNw9cY2icONa5aPfvKeieW1WlG0WQYwwhJ7mjui2xtiePQSXw==", "dev": true, - "dependencies": { - "eslint-visitor-keys": "^2.0.0" - }, + "license": "MIT" + }, + "node_modules/deep-eql": { + "version": "5.0.2", + "resolved": "https://registry.npmjs.org/deep-eql/-/deep-eql-5.0.2.tgz", + "integrity": "sha512-h5k/5U50IJJFpzfL6nO9jaaumfjO/f2NjK/oYB2Djzm4p9L+3T9qWpZqZ2hAbLPuuYq9wrU08WQyBTL5GbPk5Q==", + "dev": true, + "license": "MIT", "engines": { - "node": "^10.0.0 || ^12.0.0 || >= 14.0.0" - }, - "funding": { - "url": "https://github.com/sponsors/mysticatea" - }, - "peerDependencies": { - "eslint": ">=5" + "node": ">=6" } }, - "node_modules/eslint-plugin-regexp/node_modules/regexp-ast-analysis": { - "version": "0.3.0", - "resolved": "https://registry.npmjs.org/regexp-ast-analysis/-/regexp-ast-analysis-0.3.0.tgz", - "integrity": "sha512-11PlbBSUxwWpdj6BdZUKfhDdV9g+cveqHB+BqBQDBD7ZermDBVgtyowUaXTvT0dO3tZYo2bDIr/GoED6X1aYSA==", + "node_modules/deep-is": { + "version": "0.1.4", + "resolved": "https://registry.npmjs.org/deep-is/-/deep-is-0.1.4.tgz", + "integrity": "sha512-oIPzksmTg4/MriiaYGO+okXDT7ztn/w3Eptv/+gSIdMdKsJo0u4CfYNFJPy+4SKMuCqGw2wxnA+URMg3t8a/bQ==", "dev": true, - "dependencies": { - "refa": "^0.9.0", - "regexpp": "^3.2.0" + "license": "MIT" + }, + "node_modules/deepmerge": { + "version": "4.3.1", + "resolved": "https://registry.npmjs.org/deepmerge/-/deepmerge-4.3.1.tgz", + "integrity": "sha512-3sUqbMEc77XqpdNO7FRyRog+eW3ph+GYCbj+rK+uYyRMuwsVy0rMiVtPn+QJlKFvWP/1PYpapqYn0Me2knFn+A==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=0.10.0" } }, - "node_modules/eslint-scope": { - "version": "5.1.1", - "resolved": "https://registry.npmjs.org/eslint-scope/-/eslint-scope-5.1.1.tgz", - "integrity": "sha512-2NxwbF/hZ0KpepYN0cNbo+FN6XoK7GaHlQhgx/hIZl6Va0bF45RQOOwhLIy8lQDbuCiadSLCBnH2CFYquit5bw==", + "node_modules/define-data-property": { + "version": "1.1.4", + "resolved": "https://registry.npmjs.org/define-data-property/-/define-data-property-1.1.4.tgz", + "integrity": "sha512-rBMvIzlpA8v6E+SJZoo++HAYqsLrkg7MSfIinMPFhmkorw7X+dOXVJQs+QT69zGkzMyfDnIMN2Wid1+NbL3T+A==", "dev": true, + "license": "MIT", "dependencies": { - "esrecurse": "^4.3.0", - "estraverse": "^4.1.1" + "es-define-property": "^1.0.0", + "es-errors": "^1.3.0", + "gopd": "^1.0.1" }, "engines": { - "node": ">=8.0.0" + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" } }, - "node_modules/eslint-utils": { - "version": "2.1.0", - "resolved": "https://registry.npmjs.org/eslint-utils/-/eslint-utils-2.1.0.tgz", - "integrity": "sha512-w94dQYoauyvlDc43XnGB8lU3Zt713vNChgt4EWwhXAP2XkBvndfxF0AgIqKOOasjPIPzj9JqgwkwbCYD0/V3Zg==", + "node_modules/define-properties": { + "version": "1.2.1", + "resolved": "https://registry.npmjs.org/define-properties/-/define-properties-1.2.1.tgz", + "integrity": "sha512-8QmQKqEASLd5nx0U1B1okLElbUuuttJ/AnYmRXbbbGDWh6uS208EjD4Xqq/I9wK7u0v6O08XhTWnt5XtEbR6Dg==", "dev": true, + "license": "MIT", "dependencies": { - "eslint-visitor-keys": "^1.1.0" + "define-data-property": "^1.0.1", + "has-property-descriptors": "^1.0.0", + "object-keys": "^1.1.1" }, "engines": { - "node": ">=6" + "node": ">= 0.4" }, "funding": { - "url": "https://github.com/sponsors/mysticatea" + "url": "https://github.com/sponsors/ljharb" } }, - "node_modules/eslint-utils/node_modules/eslint-visitor-keys": { - "version": "1.3.0", - "resolved": "https://registry.npmjs.org/eslint-visitor-keys/-/eslint-visitor-keys-1.3.0.tgz", - "integrity": "sha512-6J72N8UNa462wa/KFODt/PJ3IU60SDpC3QXC1Hjc1BXXpfL2C9R5+AU7jhe0F6GREqVMh4Juu+NY7xn+6dipUQ==", + "node_modules/delayed-stream": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/delayed-stream/-/delayed-stream-1.0.0.tgz", + "integrity": "sha512-ZySD7Nf91aLB0RxL4KGrKHBXl7Eds1DAmEdcoVawXnLD7SDhpNgtuII2aAkg7a7QS41jxPSZ17p4VdGnMHk3MQ==", "dev": true, + "license": "MIT", "engines": { - "node": ">=4" + "node": ">=0.4.0" } }, - "node_modules/eslint-visitor-keys": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/eslint-visitor-keys/-/eslint-visitor-keys-2.0.0.tgz", - "integrity": "sha512-QudtT6av5WXels9WjIM7qz1XD1cWGvX4gGXvp/zBn9nXG02D0utdU3Em2m/QjTnrsk6bBjmCygl3rmj118msQQ==", + "node_modules/deprecation": { + "version": "2.3.1", + "resolved": "https://registry.npmjs.org/deprecation/-/deprecation-2.3.1.tgz", + "integrity": "sha512-xmHIy4F3scKVwMsQ4WnVaS8bHOx0DmVwRywosKhaILI0ywMDWPtBSku2HNxRvF7jtwDRsoEwYQSfbxj8b7RlJQ==", + "dev": true, + "license": "ISC" + }, + "node_modules/diff": { + "version": "5.2.0", + "resolved": "https://registry.npmjs.org/diff/-/diff-5.2.0.tgz", + "integrity": "sha512-uIFDxqpRZGZ6ThOk84hEfqWoHx2devRFvpTZcTHur85vImfaxUbTW9Ryh4CpCuDnToOP1CEtXKIgytHBPVff5A==", "dev": true, + "license": "BSD-3-Clause", "engines": { - "node": ">=10" + "node": ">=0.3.1" } }, - "node_modules/eslint/node_modules/ansi-regex": { - "version": "5.0.1", - "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-5.0.1.tgz", - "integrity": "sha512-quJQXlTSUGL2LH9SUXo8VwsY4soanhgo6LNSm84E1LBcE8s3O0wpdiRzyR9z/ZZJMlMWv37qOOb9pdJlMUEKFQ==", + "node_modules/diff-sequences": { + "version": "29.6.3", + "resolved": "https://registry.npmjs.org/diff-sequences/-/diff-sequences-29.6.3.tgz", + "integrity": "sha512-EjePK1srD3P08o2j4f0ExnylqRs5B9tJjcp9t1krH2qRi8CCdsYfwe9JgSLurFBWwq4uOlipzfk5fHNvwFKr8Q==", "dev": true, + "license": "MIT", "engines": { - "node": ">=8" + "node": "^14.15.0 || ^16.10.0 || >=18.0.0" } }, - "node_modules/eslint/node_modules/ansi-styles": { - "version": "4.3.0", - "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-4.3.0.tgz", - "integrity": "sha512-zbB9rCJAT1rbjiVDb2hqKFHNYLxgtk8NURxZ3IZwD3F6NtxbXZQCnnSi1Lkx+IDohdPlFp222wVALIheZJQSEg==", + "node_modules/dir-glob": { + "version": "3.0.1", + "resolved": "https://registry.npmjs.org/dir-glob/-/dir-glob-3.0.1.tgz", + "integrity": "sha512-WkrWp9GR4KXfKGYzOLmTuGVi1UWFfws377n9cc55/tb6DuqyF6pcQ5AbiHEshaDpY9v6oaSr2XCDidGmMwdzIA==", "dev": true, + "license": "MIT", "dependencies": { - "color-convert": "^2.0.1" + "path-type": "^4.0.0" }, "engines": { "node": ">=8" - }, - "funding": { - "url": "https://github.com/chalk/ansi-styles?sponsor=1" } }, - "node_modules/eslint/node_modules/chalk": { - "version": "4.1.0", - "resolved": "https://registry.npmjs.org/chalk/-/chalk-4.1.0.tgz", - "integrity": "sha512-qwx12AxXe2Q5xQ43Ac//I6v5aXTipYrSESdOgzrN+9XjgEpyjpKuvSGaN4qE93f7TQTlerQQ8S+EQ0EyDoVL1A==", + "node_modules/dir-glob/node_modules/path-type": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/path-type/-/path-type-4.0.0.tgz", + "integrity": "sha512-gDKb8aZMDeD/tZWs9P6+q0J9Mwkdl6xMV8TjnGP3qJVJ06bdMgkbBlLU8IdfOsIsFz2BW1rNVT3XuNEl8zPAvw==", "dev": true, - "dependencies": { - "ansi-styles": "^4.1.0", - "supports-color": "^7.1.0" - }, + "license": "MIT", "engines": { - "node": ">=10" - }, - "funding": { - "url": "https://github.com/chalk/chalk?sponsor=1" + "node": ">=8" } }, - "node_modules/eslint/node_modules/color-convert": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-2.0.1.tgz", - "integrity": "sha512-RRECPsj7iu/xb5oKYcsFHSppFNnsj/52OVTRKb4zP5onXwVF3zVmmToNcOfGC+CRDpfK/U584fMg38ZHCaElKQ==", + "node_modules/dom-serializer": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/dom-serializer/-/dom-serializer-2.0.0.tgz", + "integrity": "sha512-wIkAryiqt/nV5EQKqQpo3SToSOV9J0DnbJqwK7Wv/Trc92zIAYZ4FlMu+JPFW1DfGFt81ZTCGgDEabffXeLyJg==", "dev": true, + "license": "MIT", "dependencies": { - "color-name": "~1.1.4" + "domelementtype": "^2.3.0", + "domhandler": "^5.0.2", + "entities": "^4.2.0" }, + "funding": { + "url": "https://github.com/cheeriojs/dom-serializer?sponsor=1" + } + }, + "node_modules/dom-serializer/node_modules/entities": { + "version": "4.5.0", + "resolved": "https://registry.npmjs.org/entities/-/entities-4.5.0.tgz", + "integrity": "sha512-V0hjH4dGPh9Ao5p0MoRY6BVqtwCjhz6vI5LT8AJ55H+4g9/4vbHx1I54fS0XuclLhDHArPQCiMjDxjaL8fPxhw==", + "dev": true, + "license": "BSD-2-Clause", "engines": { - "node": ">=7.0.0" + "node": ">=0.12" + }, + "funding": { + "url": "https://github.com/fb55/entities?sponsor=1" } }, - "node_modules/eslint/node_modules/color-name": { - "version": "1.1.4", - "resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.4.tgz", - "integrity": "sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA==", - "dev": true + "node_modules/domelementtype": { + "version": "2.3.0", + "resolved": "https://registry.npmjs.org/domelementtype/-/domelementtype-2.3.0.tgz", + "integrity": "sha512-OLETBj6w0OsagBwdXnPdN0cnMfF9opN69co+7ZrbfPGrdpPVNBUj02spi6B1N7wChLQiPn4CSH/zJvXw56gmHw==", + "dev": true, + "funding": [ + { + "type": "github", + "url": "https://github.com/sponsors/fb55" + } + ], + "license": "BSD-2-Clause" }, - "node_modules/eslint/node_modules/cross-spawn": { - "version": "7.0.3", - "resolved": "https://registry.npmjs.org/cross-spawn/-/cross-spawn-7.0.3.tgz", - "integrity": "sha512-iRDPJKUPVEND7dHPO8rkbOnPpyDygcDFtWjpeWNCgy8WP2rXcxXL8TskReQl6OrB2G7+UJrags1q15Fudc7G6w==", + "node_modules/domhandler": { + "version": "5.0.3", + "resolved": "https://registry.npmjs.org/domhandler/-/domhandler-5.0.3.tgz", + "integrity": "sha512-cgwlv/1iFQiFnU96XXgROh8xTeetsnJiDsTc7TYCLFd9+/WNkIqPTxiM/8pSd8VIrhXGTf1Ny1q1hquVqDJB5w==", "dev": true, + "license": "BSD-2-Clause", "dependencies": { - "path-key": "^3.1.0", - "shebang-command": "^2.0.0", - "which": "^2.0.1" + "domelementtype": "^2.3.0" }, "engines": { - "node": ">= 8" + "node": ">= 4" + }, + "funding": { + "url": "https://github.com/fb55/domhandler?sponsor=1" } }, - "node_modules/eslint/node_modules/debug": { - "version": "4.3.1", - "resolved": "https://registry.npmjs.org/debug/-/debug-4.3.1.tgz", - "integrity": "sha512-doEwdvm4PCeK4K3RQN2ZC2BYUBaxwLARCqZmMjtF8a51J2Rb0xpVloFRnCODwqjpwnAoao4pelN8l3RJdv3gRQ==", + "node_modules/domutils": { + "version": "3.2.2", + "resolved": "https://registry.npmjs.org/domutils/-/domutils-3.2.2.tgz", + "integrity": "sha512-6kZKyUajlDuqlHKVX1w7gyslj9MPIXzIFiz/rGu35uC1wMi+kMhQwGhl4lt9unC9Vb9INnY9Z3/ZA3+FhASLaw==", "dev": true, + "license": "BSD-2-Clause", "dependencies": { - "ms": "2.1.2" + "dom-serializer": "^2.0.0", + "domelementtype": "^2.3.0", + "domhandler": "^5.0.3" }, - "engines": { - "node": ">=6.0" - }, - "peerDependenciesMeta": { - "supports-color": { - "optional": true - } + "funding": { + "url": "https://github.com/fb55/domutils?sponsor=1" } }, - "node_modules/eslint/node_modules/glob-parent": { - "version": "5.1.2", - "resolved": "https://registry.npmjs.org/glob-parent/-/glob-parent-5.1.2.tgz", - "integrity": "sha512-AOIgSQCepiJYwP3ARnGx+5VnTu2HBYdzbGP45eLw1vr3zB3vZLeyed1sC9hnbcOc9/SrMyM5RPQrkGz4aS9Zow==", + "node_modules/dunder-proto": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/dunder-proto/-/dunder-proto-1.0.1.tgz", + "integrity": "sha512-KIN/nDJBQRcXw0MLVhZE9iQHmG68qAVIBg9CqmUYjmQIhgij9U5MFvrqkUL5FbtyyzZuOeOt0zdeRe4UY7ct+A==", "dev": true, + "license": "MIT", "dependencies": { - "is-glob": "^4.0.1" + "call-bind-apply-helpers": "^1.0.1", + "es-errors": "^1.3.0", + "gopd": "^1.2.0" }, "engines": { - "node": ">= 6" + "node": ">= 0.4" } }, - "node_modules/eslint/node_modules/has-flag": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-4.0.0.tgz", - "integrity": "sha512-EykJT/Q1KjTWctppgIAgfSO0tKVuZUjhgMr17kqTumMl6Afv3EISleU7qZUzoXDFTAHTDC4NOoG/ZxU3EvlMPQ==", + "node_modules/duplexer": { + "version": "0.1.2", + "resolved": "https://registry.npmjs.org/duplexer/-/duplexer-0.1.2.tgz", + "integrity": "sha512-jtD6YG370ZCIi/9GTaJKQxWTZD045+4R4hTk/x1UyoqadyJ9x9CgSi1RlVDQF8U2sxLLSnFkCaMihqljHIWgMg==", "dev": true, - "engines": { - "node": ">=8" - } + "license": "MIT" }, - "node_modules/eslint/node_modules/import-fresh": { - "version": "3.3.0", - "resolved": "https://registry.npmjs.org/import-fresh/-/import-fresh-3.3.0.tgz", - "integrity": "sha512-veYYhQa+D1QBKznvhUHxb8faxlrwUnxseDAbAp457E0wLNio2bOSKnjYDhMj+YiAq61xrMGhQk9iXVk5FzgQMw==", + "node_modules/ecdsa-sig-formatter": { + "version": "1.0.11", + "resolved": "https://registry.npmjs.org/ecdsa-sig-formatter/-/ecdsa-sig-formatter-1.0.11.tgz", + "integrity": "sha512-nagl3RYrbNv6kQkeJIpt6NJZy8twLB/2vtz6yN9Z4vRKHN4/QZJIEbqohALSgwKdnksuY3k5Addp5lg8sVoVcQ==", "dev": true, + "license": "Apache-2.0", "dependencies": { - "parent-module": "^1.0.0", - "resolve-from": "^4.0.0" - }, + "safe-buffer": "^5.0.1" + } + }, + "node_modules/electron-to-chromium": { + "version": "1.5.142", + "resolved": "https://registry.npmjs.org/electron-to-chromium/-/electron-to-chromium-1.5.142.tgz", + "integrity": "sha512-Ah2HgkTu/9RhTDNThBtzu2Wirdy4DC9b0sMT1pUhbkZQ5U/iwmE+PHZX1MpjD5IkJCc2wSghgGG/B04szAx07w==", + "dev": true, + "license": "ISC" + }, + "node_modules/emoji-regex": { + "version": "8.0.0", + "resolved": "https://registry.npmjs.org/emoji-regex/-/emoji-regex-8.0.0.tgz", + "integrity": "sha512-MSjYzcWNOA0ewAHpz0MxpYFvwg6yjy1NG3xteoqz644VCo/RPgnr1/GGt+ic3iJTzQ8Eu3TdM14SawnVUmGE6A==", + "dev": true, + "license": "MIT" + }, + "node_modules/entities": { + "version": "6.0.0", + "resolved": "https://registry.npmjs.org/entities/-/entities-6.0.0.tgz", + "integrity": "sha512-aKstq2TDOndCn4diEyp9Uq/Flu2i1GlLkc6XIDQSDMuaFE3OPW5OphLCyQ5SpSJZTb4reN+kTcYru5yIfXoRPw==", + "dev": true, + "license": "BSD-2-Clause", "engines": { - "node": ">=6" + "node": ">=0.12" }, "funding": { - "url": "https://github.com/sponsors/sindresorhus" + "url": "https://github.com/fb55/entities?sponsor=1" } }, - "node_modules/eslint/node_modules/levn": { - "version": "0.4.1", - "resolved": "https://registry.npmjs.org/levn/-/levn-0.4.1.tgz", - "integrity": "sha512-+bT2uH4E5LGE7h/n3evcS/sQlJXCpIp6ym8OWJ5eV6+67Dsql/LaaT7qJBAt2rzfoa/5QBGBhxDix1dMt2kQKQ==", + "node_modules/error-ex": { + "version": "1.3.2", + "resolved": "https://registry.npmjs.org/error-ex/-/error-ex-1.3.2.tgz", + "integrity": "sha512-7dFHNmqeFSEt2ZBsCriorKnn3Z2pj+fd9kmI6QoWw4//DL+icEBfc0U7qJCisqrTsKTjw4fNFy2pW9OqStD84g==", "dev": true, + "license": "MIT", "dependencies": { - "prelude-ls": "^1.2.1", - "type-check": "~0.4.0" - }, - "engines": { - "node": ">= 0.8.0" + "is-arrayish": "^0.2.1" } }, - "node_modules/eslint/node_modules/ms": { - "version": "2.1.2", - "resolved": "https://registry.npmjs.org/ms/-/ms-2.1.2.tgz", - "integrity": "sha512-sGkPx+VjMtmA6MX27oA4FBFELFCZZ4S4XqeGOXCv68tT+jb3vk/RyaKWP0PTKyWtmLSM0b+adUTEvbs1PEaH2w==", - "dev": true - }, - "node_modules/eslint/node_modules/optionator": { - "version": "0.9.1", - "resolved": "https://registry.npmjs.org/optionator/-/optionator-0.9.1.tgz", - "integrity": "sha512-74RlY5FCnhq4jRxVUPKDaRwrVNXMqsGsiW6AJw4XK8hmtm10wC0ypZBLw5IIp85NZMr91+qd1RvvENwg7jjRFw==", + "node_modules/es-abstract": { + "version": "1.23.9", + "resolved": "https://registry.npmjs.org/es-abstract/-/es-abstract-1.23.9.tgz", + "integrity": "sha512-py07lI0wjxAC/DcfK1S6G7iANonniZwTISvdPzk9hzeH0IZIshbuuFxLIU96OyF89Yb9hiqWn8M/bY83KY5vzA==", "dev": true, + "license": "MIT", "dependencies": { - "deep-is": "^0.1.3", - "fast-levenshtein": "^2.0.6", - "levn": "^0.4.1", - "prelude-ls": "^1.2.1", - "type-check": "^0.4.0", - "word-wrap": "^1.2.3" + "array-buffer-byte-length": "^1.0.2", + "arraybuffer.prototype.slice": "^1.0.4", + "available-typed-arrays": "^1.0.7", + "call-bind": "^1.0.8", + "call-bound": "^1.0.3", + "data-view-buffer": "^1.0.2", + "data-view-byte-length": "^1.0.2", + "data-view-byte-offset": "^1.0.1", + "es-define-property": "^1.0.1", + "es-errors": "^1.3.0", + "es-object-atoms": "^1.0.0", + "es-set-tostringtag": "^2.1.0", + "es-to-primitive": "^1.3.0", + "function.prototype.name": "^1.1.8", + "get-intrinsic": "^1.2.7", + "get-proto": "^1.0.0", + "get-symbol-description": "^1.1.0", + "globalthis": "^1.0.4", + "gopd": "^1.2.0", + "has-property-descriptors": "^1.0.2", + "has-proto": "^1.2.0", + "has-symbols": "^1.1.0", + "hasown": "^2.0.2", + "internal-slot": "^1.1.0", + "is-array-buffer": "^3.0.5", + "is-callable": "^1.2.7", + "is-data-view": "^1.0.2", + "is-regex": "^1.2.1", + "is-shared-array-buffer": "^1.0.4", + "is-string": "^1.1.1", + "is-typed-array": "^1.1.15", + "is-weakref": "^1.1.0", + "math-intrinsics": "^1.1.0", + "object-inspect": "^1.13.3", + "object-keys": "^1.1.1", + "object.assign": "^4.1.7", + "own-keys": "^1.0.1", + "regexp.prototype.flags": "^1.5.3", + "safe-array-concat": "^1.1.3", + "safe-push-apply": "^1.0.0", + "safe-regex-test": "^1.1.0", + "set-proto": "^1.0.0", + "string.prototype.trim": "^1.2.10", + "string.prototype.trimend": "^1.0.9", + "string.prototype.trimstart": "^1.0.8", + "typed-array-buffer": "^1.0.3", + "typed-array-byte-length": "^1.0.3", + "typed-array-byte-offset": "^1.0.4", + "typed-array-length": "^1.0.7", + "unbox-primitive": "^1.1.0", + "which-typed-array": "^1.1.18" }, "engines": { - "node": ">= 0.8.0" + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" } }, - "node_modules/eslint/node_modules/path-key": { - "version": "3.1.1", - "resolved": "https://registry.npmjs.org/path-key/-/path-key-3.1.1.tgz", - "integrity": "sha512-ojmeN0qd+y0jszEtoY48r0Peq5dwMEkIlCOu6Q5f41lfkswXuKtYrhgoTpLnyIcHm24Uhqx+5Tqm2InSwLhE6Q==", + "node_modules/es-define-property": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/es-define-property/-/es-define-property-1.0.1.tgz", + "integrity": "sha512-e3nRfgfUZ4rNGL232gUgX06QNyyez04KdjFrF+LTRoOXmrOgFKDg4BCdsjW8EnT69eqdYGmRpJwiPVYNrCaW3g==", "dev": true, + "license": "MIT", "engines": { - "node": ">=8" + "node": ">= 0.4" } }, - "node_modules/eslint/node_modules/prelude-ls": { - "version": "1.2.1", - "resolved": "https://registry.npmjs.org/prelude-ls/-/prelude-ls-1.2.1.tgz", - "integrity": "sha512-vkcDPrRZo1QZLbn5RLGPpg/WmIQ65qoWWhcGKf/b5eplkkarX0m9z8ppCat4mlOqUsWpyNuYgO3VRyrYHSzX5g==", + "node_modules/es-errors": { + "version": "1.3.0", + "resolved": "https://registry.npmjs.org/es-errors/-/es-errors-1.3.0.tgz", + "integrity": "sha512-Zf5H2Kxt2xjTvbJvP2ZWLEICxA6j+hAmMzIlypy4xcBg1vKVnx89Wy0GbS+kf5cwCVFFzdCFh2XSCFNULS6csw==", "dev": true, + "license": "MIT", "engines": { - "node": ">= 0.8.0" + "node": ">= 0.4" } }, - "node_modules/eslint/node_modules/resolve-from": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/resolve-from/-/resolve-from-4.0.0.tgz", - "integrity": "sha512-pb/MYmXstAkysRFx8piNI1tGFNQIFA3vkE3Gq4EuA1dF6gHp/+vgZqsCGJapvy8N3Q+4o7FwvquPJcnZ7RYy4g==", + "node_modules/es-object-atoms": { + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/es-object-atoms/-/es-object-atoms-1.1.1.tgz", + "integrity": "sha512-FGgH2h8zKNim9ljj7dankFPcICIK9Cp5bm+c2gQSYePhpaG5+esrLODihIorn+Pe6FGJzWhXQotPv73jTaldXA==", "dev": true, + "license": "MIT", + "dependencies": { + "es-errors": "^1.3.0" + }, "engines": { - "node": ">=4" + "node": ">= 0.4" } }, - "node_modules/eslint/node_modules/semver": { - "version": "7.3.5", - "resolved": "https://registry.npmjs.org/semver/-/semver-7.3.5.tgz", - "integrity": "sha512-PoeGJYh8HK4BTO/a9Tf6ZG3veo/A7ZVsYrSA6J8ny9nb3B1VrpkuN+z9OE5wfE5p6H4LchYZsegiQgbJD94ZFQ==", + "node_modules/es-set-tostringtag": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/es-set-tostringtag/-/es-set-tostringtag-2.1.0.tgz", + "integrity": "sha512-j6vWzfrGVfyXxge+O0x5sh6cvxAog0a/4Rdd2K36zCMV5eJ+/+tOAngRO8cODMNWbVRdVlmGZQL2YS3yR8bIUA==", "dev": true, + "license": "MIT", "dependencies": { - "lru-cache": "^6.0.0" - }, - "bin": { - "semver": "bin/semver.js" + "es-errors": "^1.3.0", + "get-intrinsic": "^1.2.6", + "has-tostringtag": "^1.0.2", + "hasown": "^2.0.2" }, "engines": { - "node": ">=10" + "node": ">= 0.4" } }, - "node_modules/eslint/node_modules/shebang-command": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/shebang-command/-/shebang-command-2.0.0.tgz", - "integrity": "sha512-kHxr2zZpYtdmrN1qDjrrX/Z1rR1kG8Dx+gkpK1G4eXmvXswmcE1hTWBWYUzlraYw1/yZp6YuDY77YtvbN0dmDA==", + "node_modules/es-to-primitive": { + "version": "1.3.0", + "resolved": "https://registry.npmjs.org/es-to-primitive/-/es-to-primitive-1.3.0.tgz", + "integrity": "sha512-w+5mJ3GuFL+NjVtJlvydShqE1eN3h3PbI7/5LAsYJP/2qtuMXjfL2LpHSRqo4b4eSF5K/DH1JXKUAHSB2UW50g==", "dev": true, + "license": "MIT", "dependencies": { - "shebang-regex": "^3.0.0" + "is-callable": "^1.2.7", + "is-date-object": "^1.0.5", + "is-symbol": "^1.0.4" }, "engines": { - "node": ">=8" + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" } }, - "node_modules/eslint/node_modules/shebang-regex": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/shebang-regex/-/shebang-regex-3.0.0.tgz", - "integrity": "sha512-7++dFhtcx3353uBaq8DDR4NuxBetBzC7ZQOhmTQInHEd6bSrXdiEyzCvG07Z44UYdLShWUyXt5M/yhz8ekcb1A==", + "node_modules/escalade": { + "version": "3.2.0", + "resolved": "https://registry.npmjs.org/escalade/-/escalade-3.2.0.tgz", + "integrity": "sha512-WUj2qlxaQtO4g6Pq5c29GTcWGDyd8itL8zTlipgECz3JesAiiOKotd8JU6otB3PACgG6xkJUyVhboMS+bje/jA==", "dev": true, + "license": "MIT", "engines": { - "node": ">=8" + "node": ">=6" } }, - "node_modules/eslint/node_modules/strip-ansi": { - "version": "6.0.0", - "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-6.0.0.tgz", - "integrity": "sha512-AuvKTrTfQNYNIctbR1K/YGTR1756GycPsg7b9bdV9Duqur4gv6aKqHXah67Z8ImS7WEz5QVcOtlfW2rZEugt6w==", + "node_modules/escape-string-regexp": { + "version": "1.0.5", + "resolved": "https://registry.npmjs.org/escape-string-regexp/-/escape-string-regexp-1.0.5.tgz", + "integrity": "sha512-vbRorB5FUQWvla16U8R/qgaFIya2qGzwDrNmCZuYKrbdSUMG6I1ZCGQRefkRVhuOkIGVne7BQ35DSfo1qvJqFg==", "dev": true, - "dependencies": { - "ansi-regex": "^5.0.0" - }, + "license": "MIT", "engines": { - "node": ">=8" + "node": ">=0.8.0" } }, - "node_modules/eslint/node_modules/supports-color": { - "version": "7.2.0", - "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-7.2.0.tgz", - "integrity": "sha512-qpCAvRl9stuOHveKsn7HncJRvv501qIacKzQlO/+Lwxc9+0q2wLyv4Dfvt80/DPn2pqOBsJdDiogXGR9+OvwRw==", + "node_modules/eslint": { + "version": "9.31.0", + "resolved": "https://registry.npmjs.org/eslint/-/eslint-9.31.0.tgz", + "integrity": "sha512-QldCVh/ztyKJJZLr4jXNUByx3gR+TDYZCRXEktiZoUR3PGy4qCmSbkxcIle8GEwGpb5JBZazlaJ/CxLidXdEbQ==", "dev": true, + "license": "MIT", "dependencies": { - "has-flag": "^4.0.0" + "@eslint-community/eslint-utils": "^4.2.0", + "@eslint-community/regexpp": "^4.12.1", + "@eslint/config-array": "^0.21.0", + "@eslint/config-helpers": "^0.3.0", + "@eslint/core": "^0.15.0", + "@eslint/eslintrc": "^3.3.1", + "@eslint/js": "9.31.0", + "@eslint/plugin-kit": "^0.3.1", + "@humanfs/node": "^0.16.6", + "@humanwhocodes/module-importer": "^1.0.1", + "@humanwhocodes/retry": "^0.4.2", + "@types/estree": "^1.0.6", + "@types/json-schema": "^7.0.15", + "ajv": "^6.12.4", + "chalk": "^4.0.0", + "cross-spawn": "^7.0.6", + "debug": "^4.3.2", + "escape-string-regexp": "^4.0.0", + "eslint-scope": "^8.4.0", + "eslint-visitor-keys": "^4.2.1", + "espree": "^10.4.0", + "esquery": "^1.5.0", + "esutils": "^2.0.2", + "fast-deep-equal": "^3.1.3", + "file-entry-cache": "^8.0.0", + "find-up": "^5.0.0", + "glob-parent": "^6.0.2", + "ignore": "^5.2.0", + "imurmurhash": "^0.1.4", + "is-glob": "^4.0.0", + "json-stable-stringify-without-jsonify": "^1.0.1", + "lodash.merge": "^4.6.2", + "minimatch": "^3.1.2", + "natural-compare": "^1.4.0", + "optionator": "^0.9.3" }, - "engines": { - "node": ">=8" - } - }, - "node_modules/eslint/node_modules/type-check": { - "version": "0.4.0", - "resolved": "https://registry.npmjs.org/type-check/-/type-check-0.4.0.tgz", - "integrity": "sha512-XleUoc9uwGXqjWwXaUTZAmzMcFZ5858QA2vvx1Ur5xIcixXIP+8LnFDgRplU30us6teqdlskFfu+ae4K79Ooew==", - "dev": true, - "dependencies": { - "prelude-ls": "^1.2.1" + "bin": { + "eslint": "bin/eslint.js" }, "engines": { - "node": ">= 0.8.0" + "node": "^18.18.0 || ^20.9.0 || >=21.1.0" + }, + "funding": { + "url": "https://eslint.org/donate" + }, + "peerDependencies": { + "jiti": "*" + }, + "peerDependenciesMeta": { + "jiti": { + "optional": true + } } }, - "node_modules/eslint/node_modules/which": { - "version": "2.0.2", - "resolved": "https://registry.npmjs.org/which/-/which-2.0.2.tgz", - "integrity": "sha512-BLI3Tl1TW3Pvl70l3yq3Y64i+awpwXqsGBYWkkqMtnbXgrMD+yj7rhW0kuEDxzJaYXGjEW5ogapKNMEKNMjibA==", + "node_modules/eslint-config-prettier": { + "version": "10.1.2", + "resolved": "https://registry.npmjs.org/eslint-config-prettier/-/eslint-config-prettier-10.1.2.tgz", + "integrity": "sha512-Epgp/EofAUeEpIdZkW60MHKvPyru1ruQJxPL+WIycnaPApuseK0Zpkrh/FwL9oIpQvIhJwV7ptOy0DWUjTlCiA==", "dev": true, - "dependencies": { - "isexe": "^2.0.0" - }, + "license": "MIT", "bin": { - "node-which": "bin/node-which" + "eslint-config-prettier": "bin/cli.js" }, - "engines": { - "node": ">= 8" + "peerDependencies": { + "eslint": ">=7.0.0" } }, - "node_modules/espree": { - "version": "7.3.1", - "resolved": "https://registry.npmjs.org/espree/-/espree-7.3.1.tgz", - "integrity": "sha512-v3JCNCE64umkFpmkFGqzVKsOT0tN1Zr+ueqLZfpV1Ob8e+CEgPWa+OxCoGH3tnhimMKIaBm4m/vaRpJ/krRz2g==", + "node_modules/eslint-plugin-eslint-comments": { + "version": "3.2.0", + "resolved": "https://registry.npmjs.org/eslint-plugin-eslint-comments/-/eslint-plugin-eslint-comments-3.2.0.tgz", + "integrity": "sha512-0jkOl0hfojIHHmEHgmNdqv4fmh7300NdpA9FFpF7zaoLvB/QeXOGNLIo86oAveJFrfB1p05kC8hpEMHM8DwWVQ==", "dev": true, + "license": "MIT", "dependencies": { - "acorn": "^7.4.0", - "acorn-jsx": "^5.3.1", - "eslint-visitor-keys": "^1.3.0" + "escape-string-regexp": "^1.0.5", + "ignore": "^5.0.5" }, "engines": { - "node": "^10.12.0 || >=12.0.0" + "node": ">=6.5.0" + }, + "funding": { + "url": "https://github.com/sponsors/mysticatea" + }, + "peerDependencies": { + "eslint": ">=4.19.1" } }, - "node_modules/espree/node_modules/acorn": { - "version": "7.4.1", - "resolved": "https://registry.npmjs.org/acorn/-/acorn-7.4.1.tgz", - "integrity": "sha512-nQyp0o1/mNdbTO1PO6kHkwSrmgZ0MT/jCCpNiwbUjGoRN4dlBhqJtoQuCnEOKzgTVwg0ZWiCoQy6SxMebQVh8A==", + "node_modules/eslint-plugin-jsdoc": { + "version": "50.6.11", + "resolved": "https://registry.npmjs.org/eslint-plugin-jsdoc/-/eslint-plugin-jsdoc-50.6.11.tgz", + "integrity": "sha512-k4+MnBCGR8cuIB5MZ++FGd4gbXxjob2rX1Nq0q3nWFF4xSGZENTgTLZSjb+u9B8SAnP6lpGV2FJrBjllV3pVSg==", "dev": true, - "bin": { - "acorn": "bin/acorn" + "license": "BSD-3-Clause", + "dependencies": { + "@es-joy/jsdoccomment": "~0.49.0", + "are-docs-informative": "^0.0.2", + "comment-parser": "1.4.1", + "debug": "^4.3.6", + "escape-string-regexp": "^4.0.0", + "espree": "^10.1.0", + "esquery": "^1.6.0", + "parse-imports-exports": "^0.2.4", + "semver": "^7.6.3", + "spdx-expression-parse": "^4.0.0" }, "engines": { - "node": ">=0.4.0" + "node": ">=18" + }, + "peerDependencies": { + "eslint": "^7.0.0 || ^8.0.0 || ^9.0.0" } }, - "node_modules/espree/node_modules/eslint-visitor-keys": { - "version": "1.3.0", - "resolved": "https://registry.npmjs.org/eslint-visitor-keys/-/eslint-visitor-keys-1.3.0.tgz", - "integrity": "sha512-6J72N8UNa462wa/KFODt/PJ3IU60SDpC3QXC1Hjc1BXXpfL2C9R5+AU7jhe0F6GREqVMh4Juu+NY7xn+6dipUQ==", + "node_modules/eslint-plugin-jsdoc/node_modules/escape-string-regexp": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/escape-string-regexp/-/escape-string-regexp-4.0.0.tgz", + "integrity": "sha512-TtpcNJ3XAzx3Gq8sWRzJaVajRs0uVxA2YAkdb1jm2YkPz4G6egUFAyA3n5vtEIZefPk5Wa4UXbKuS5fKkJWdgA==", "dev": true, + "license": "MIT", "engines": { - "node": ">=4" + "node": ">=10" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" } }, - "node_modules/esprima": { - "version": "4.0.1", - "resolved": "https://registry.npmjs.org/esprima/-/esprima-4.0.1.tgz", - "integrity": "sha512-eGuFFw7Upda+g4p+QHvnW0RyTX/SVeJBDM/gCtMARO0cLuT2HcEKnTPvhjV6aGeqrCB/sbNop0Kszm0jsaWU4A==", + "node_modules/eslint-plugin-regexp": { + "version": "2.7.0", + "resolved": "https://registry.npmjs.org/eslint-plugin-regexp/-/eslint-plugin-regexp-2.7.0.tgz", + "integrity": "sha512-U8oZI77SBtH8U3ulZ05iu0qEzIizyEDXd+BWHvyVxTOjGwcDcvy/kEpgFG4DYca2ByRLiVPFZ2GeH7j1pdvZTA==", "dev": true, - "bin": { - "esparse": "bin/esparse.js", - "esvalidate": "bin/esvalidate.js" + "license": "MIT", + "dependencies": { + "@eslint-community/eslint-utils": "^4.2.0", + "@eslint-community/regexpp": "^4.11.0", + "comment-parser": "^1.4.0", + "jsdoc-type-pratt-parser": "^4.0.0", + "refa": "^0.12.1", + "regexp-ast-analysis": "^0.7.1", + "scslre": "^0.3.0" }, "engines": { - "node": ">=4" + "node": "^18 || >=20" + }, + "peerDependencies": { + "eslint": ">=8.44.0" } }, - "node_modules/esquery": { - "version": "1.4.0", - "resolved": "https://registry.npmjs.org/esquery/-/esquery-1.4.0.tgz", - "integrity": "sha512-cCDispWt5vHHtwMY2YrAQ4ibFkAL8RbH5YGBnZBc90MolvvfkkQcJro/aZiAQUlQ3qgrYS6D6v8Gc5G5CQsc9w==", + "node_modules/eslint-plugin-regexp/node_modules/refa": { + "version": "0.12.1", + "resolved": "https://registry.npmjs.org/refa/-/refa-0.12.1.tgz", + "integrity": "sha512-J8rn6v4DBb2nnFqkqwy6/NnTYMcgLA+sLr0iIO41qpv0n+ngb7ksag2tMRl0inb1bbO/esUwzW1vbJi7K0sI0g==", "dev": true, + "license": "MIT", "dependencies": { - "estraverse": "^5.1.0" + "@eslint-community/regexpp": "^4.8.0" }, "engines": { - "node": ">=0.10" + "node": "^12.0.0 || ^14.0.0 || >=16.0.0" } }, - "node_modules/esquery/node_modules/estraverse": { - "version": "5.2.0", - "resolved": "https://registry.npmjs.org/estraverse/-/estraverse-5.2.0.tgz", - "integrity": "sha512-BxbNGGNm0RyRYvUdHpIwv9IWzeM9XClbOxwoATuFdOE7ZE6wHL+HQ5T8hoPM+zHvmKzzsEqhgy0GrQ5X13afiQ==", + "node_modules/eslint-plugin-regexp/node_modules/regexp-ast-analysis": { + "version": "0.7.1", + "resolved": "https://registry.npmjs.org/regexp-ast-analysis/-/regexp-ast-analysis-0.7.1.tgz", + "integrity": "sha512-sZuz1dYW/ZsfG17WSAG7eS85r5a0dDsvg+7BiiYR5o6lKCAtUrEwdmRmaGF6rwVj3LcmAeYkOWKEPlbPzN3Y3A==", "dev": true, + "license": "MIT", + "dependencies": { + "@eslint-community/regexpp": "^4.8.0", + "refa": "^0.12.1" + }, "engines": { - "node": ">=4.0" + "node": "^12.0.0 || ^14.0.0 || >=16.0.0" } }, - "node_modules/esrecurse": { - "version": "4.3.0", - "resolved": "https://registry.npmjs.org/esrecurse/-/esrecurse-4.3.0.tgz", - "integrity": "sha512-KmfKL3b6G+RXvP8N1vr3Tq1kL/oCFgn2NYXEtqP8/L3pKapUA4G8cFVaoF3SU323CD4XypR/ffioHmkti6/Tag==", + "node_modules/eslint-scope": { + "version": "8.4.0", + "resolved": "https://registry.npmjs.org/eslint-scope/-/eslint-scope-8.4.0.tgz", + "integrity": "sha512-sNXOfKCn74rt8RICKMvJS7XKV/Xk9kA7DyJr8mJik3S7Cwgy3qlkkmyS2uQB3jiJg6VNdZd/pDBJu0nvG2NlTg==", "dev": true, + "license": "BSD-2-Clause", "dependencies": { + "esrecurse": "^4.3.0", "estraverse": "^5.2.0" }, "engines": { - "node": ">=4.0" + "node": "^18.18.0 || ^20.9.0 || >=21.1.0" + }, + "funding": { + "url": "https://opencollective.com/eslint" } }, - "node_modules/esrecurse/node_modules/estraverse": { - "version": "5.2.0", - "resolved": "https://registry.npmjs.org/estraverse/-/estraverse-5.2.0.tgz", - "integrity": "sha512-BxbNGGNm0RyRYvUdHpIwv9IWzeM9XClbOxwoATuFdOE7ZE6wHL+HQ5T8hoPM+zHvmKzzsEqhgy0GrQ5X13afiQ==", + "node_modules/eslint-visitor-keys": { + "version": "3.4.3", + "resolved": "https://registry.npmjs.org/eslint-visitor-keys/-/eslint-visitor-keys-3.4.3.tgz", + "integrity": "sha512-wpc+LXeiyiisxPlEkUzU6svyS1frIO3Mgxj1fdy7Pm8Ygzguax2N3Fa/D/ag1WqbOprdI+uY6wMUl8/a2G+iag==", "dev": true, + "license": "Apache-2.0", "engines": { - "node": ">=4.0" + "node": "^12.22.0 || ^14.17.0 || >=16.0.0" + }, + "funding": { + "url": "https://opencollective.com/eslint" } }, - "node_modules/estraverse": { - "version": "4.2.0", - "resolved": "https://registry.npmjs.org/estraverse/-/estraverse-4.2.0.tgz", - "integrity": "sha1-De4/7TH81GlhjOc0IJn8GvoL2xM=", + "node_modules/eslint/node_modules/ansi-styles": { + "version": "4.3.0", + "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-4.3.0.tgz", + "integrity": "sha512-zbB9rCJAT1rbjiVDb2hqKFHNYLxgtk8NURxZ3IZwD3F6NtxbXZQCnnSi1Lkx+IDohdPlFp222wVALIheZJQSEg==", "dev": true, + "license": "MIT", + "dependencies": { + "color-convert": "^2.0.1" + }, "engines": { - "node": ">=0.10.0" + "node": ">=8" + }, + "funding": { + "url": "https://github.com/chalk/ansi-styles?sponsor=1" } }, - "node_modules/esutils": { - "version": "2.0.2", - "resolved": "https://registry.npmjs.org/esutils/-/esutils-2.0.2.tgz", - "integrity": "sha1-Cr9PHKpbyx96nYrMbepPqqBLrJs=", + "node_modules/eslint/node_modules/brace-expansion": { + "version": "1.1.12", + "resolved": "https://registry.npmjs.org/brace-expansion/-/brace-expansion-1.1.12.tgz", + "integrity": "sha512-9T9UjW3r0UW5c1Q7GTwllptXwhvYmEzFhzMfZ9H7FQWt+uZePjZPjBP/W1ZEyZ1twGWom5/56TF4lPcqjnDHcg==", "dev": true, - "engines": { - "node": ">=0.10.0" + "license": "MIT", + "dependencies": { + "balanced-match": "^1.0.0", + "concat-map": "0.0.1" } }, - "node_modules/event-target-shim": { - "version": "5.0.1", - "resolved": "https://registry.npmjs.org/event-target-shim/-/event-target-shim-5.0.1.tgz", - "integrity": "sha512-i/2XbnSz/uxRCU6+NdVJgKWDTM427+MqYbkQzD321DuCQJUqOuJKIA0IM2+W2xtYHdKOmZ4dR6fExsd4SXL+WQ==", + "node_modules/eslint/node_modules/chalk": { + "version": "4.1.2", + "resolved": "https://registry.npmjs.org/chalk/-/chalk-4.1.2.tgz", + "integrity": "sha512-oKnbhFyRIXpUuez8iBMmyEa4nbj4IOQyuhc/wy9kY7/WVPcwIO9VA668Pu8RkO7+0G76SLROeyw9CpQ061i4mA==", "dev": true, + "license": "MIT", + "dependencies": { + "ansi-styles": "^4.1.0", + "supports-color": "^7.1.0" + }, "engines": { - "node": ">=6" + "node": ">=10" + }, + "funding": { + "url": "https://github.com/chalk/chalk?sponsor=1" } }, - "node_modules/eventemitter3": { - "version": "4.0.7", - "resolved": "https://registry.npmjs.org/eventemitter3/-/eventemitter3-4.0.7.tgz", - "integrity": "sha512-8guHBZCwKnFhYdHr2ysuRWErTwhoN2X8XELRlrRwpmfeY2jjuUN4taQMsULKUVo1K4DvZl+0pgfyoysHxvmvEw==", - "dev": true - }, - "node_modules/execa": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/execa/-/execa-1.0.0.tgz", - "integrity": "sha512-adbxcyWV46qiHyvSp50TKt05tB4tK3HcmF7/nxfAdhnox83seTDbwnaqKO4sXRy7roHAIFqJP/Rw/AuEbX61LA==", + "node_modules/eslint/node_modules/color-convert": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-2.0.1.tgz", + "integrity": "sha512-RRECPsj7iu/xb5oKYcsFHSppFNnsj/52OVTRKb4zP5onXwVF3zVmmToNcOfGC+CRDpfK/U584fMg38ZHCaElKQ==", "dev": true, + "license": "MIT", "dependencies": { - "cross-spawn": "^6.0.0", - "get-stream": "^4.0.0", - "is-stream": "^1.1.0", - "npm-run-path": "^2.0.0", - "p-finally": "^1.0.0", - "signal-exit": "^3.0.0", - "strip-eof": "^1.0.0" + "color-name": "~1.1.4" }, "engines": { - "node": ">=6" + "node": ">=7.0.0" } }, - "node_modules/expand-brackets": { - "version": "2.1.4", - "resolved": "https://registry.npmjs.org/expand-brackets/-/expand-brackets-2.1.4.tgz", - "integrity": "sha1-t3c14xXOMPa27/D4OwQVGiJEliI=", + "node_modules/eslint/node_modules/color-name": { + "version": "1.1.4", + "resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.4.tgz", + "integrity": "sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA==", "dev": true, - "dependencies": { - "debug": "^2.3.3", - "define-property": "^0.2.5", - "extend-shallow": "^2.0.1", - "posix-character-classes": "^0.1.0", - "regex-not": "^1.0.0", - "snapdragon": "^0.8.1", - "to-regex": "^3.0.1" - }, + "license": "MIT" + }, + "node_modules/eslint/node_modules/escape-string-regexp": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/escape-string-regexp/-/escape-string-regexp-4.0.0.tgz", + "integrity": "sha512-TtpcNJ3XAzx3Gq8sWRzJaVajRs0uVxA2YAkdb1jm2YkPz4G6egUFAyA3n5vtEIZefPk5Wa4UXbKuS5fKkJWdgA==", + "dev": true, + "license": "MIT", "engines": { - "node": ">=0.10.0" + "node": ">=10" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" } }, - "node_modules/expand-brackets/node_modules/define-property": { - "version": "0.2.5", - "resolved": "https://registry.npmjs.org/define-property/-/define-property-0.2.5.tgz", - "integrity": "sha1-w1se+RjsPJkPmlvFe+BKrOxcgRY=", + "node_modules/eslint/node_modules/eslint-visitor-keys": { + "version": "4.2.1", + "resolved": "https://registry.npmjs.org/eslint-visitor-keys/-/eslint-visitor-keys-4.2.1.tgz", + "integrity": "sha512-Uhdk5sfqcee/9H/rCOJikYz67o0a2Tw2hGRPOG2Y1R2dg7brRe1uG0yaNQDHu+TO/uQPF/5eCapvYSmHUjt7JQ==", "dev": true, - "dependencies": { - "is-descriptor": "^0.1.0" - }, + "license": "Apache-2.0", "engines": { - "node": ">=0.10.0" + "node": "^18.18.0 || ^20.9.0 || >=21.1.0" + }, + "funding": { + "url": "https://opencollective.com/eslint" } }, - "node_modules/expand-brackets/node_modules/extend-shallow": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/extend-shallow/-/extend-shallow-2.0.1.tgz", - "integrity": "sha1-Ua99YUrZqfYQ6huvu5idaxxWiQ8=", + "node_modules/eslint/node_modules/has-flag": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-4.0.0.tgz", + "integrity": "sha512-EykJT/Q1KjTWctppgIAgfSO0tKVuZUjhgMr17kqTumMl6Afv3EISleU7qZUzoXDFTAHTDC4NOoG/ZxU3EvlMPQ==", "dev": true, - "dependencies": { - "is-extendable": "^0.1.0" - }, + "license": "MIT", "engines": { - "node": ">=0.10.0" + "node": ">=8" } }, - "node_modules/expand-tilde": { - "version": "2.0.2", - "resolved": "https://registry.npmjs.org/expand-tilde/-/expand-tilde-2.0.2.tgz", - "integrity": "sha1-l+gBqgUt8CRU3kawK/YhZCzchQI=", + "node_modules/eslint/node_modules/minimatch": { + "version": "3.1.2", + "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-3.1.2.tgz", + "integrity": "sha512-J7p63hRiAjw1NDEww1W7i37+ByIrOWO5XQQAzZ3VOcL0PNybwpfmV/N05zFAzwQ9USyEcX6t3UO+K5aqBQOIHw==", "dev": true, + "license": "ISC", "dependencies": { - "homedir-polyfill": "^1.0.1" + "brace-expansion": "^1.1.7" }, "engines": { - "node": ">=0.10.0" + "node": "*" } }, - "node_modules/ext": { - "version": "1.4.0", - "resolved": "https://registry.npmjs.org/ext/-/ext-1.4.0.tgz", - "integrity": "sha512-Key5NIsUxdqKg3vIsdw9dSuXpPCQ297y6wBjL30edxwPgt2E44WcWBZey/ZvUc6sERLTxKdyCu4gZFmUbk1Q7A==", - "dev": true, - "dependencies": { - "type": "^2.0.0" - } - }, - "node_modules/ext/node_modules/type": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/type/-/type-2.0.0.tgz", - "integrity": "sha512-KBt58xCHry4Cejnc2ISQAF7QY+ORngsWfxezO68+12hKV6lQY8P/psIkcbjeHWn7MqcgciWJyCCevFMJdIXpow==", - "dev": true - }, - "node_modules/extend": { - "version": "3.0.2", - "resolved": "https://registry.npmjs.org/extend/-/extend-3.0.2.tgz", - "integrity": "sha512-fjquC59cD7CyW6urNXK0FBufkZcoiGG80wTuPujX590cB5Ttln20E2UB4S/WARVqhXffZl2LNgS+gQdPIIim/g==", - "dev": true - }, - "node_modules/extend-shallow": { - "version": "3.0.2", - "resolved": "https://registry.npmjs.org/extend-shallow/-/extend-shallow-3.0.2.tgz", - "integrity": "sha1-Jqcarwc7OfshJxcnRhMcJwQCjbg=", + "node_modules/eslint/node_modules/supports-color": { + "version": "7.2.0", + "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-7.2.0.tgz", + "integrity": "sha512-qpCAvRl9stuOHveKsn7HncJRvv501qIacKzQlO/+Lwxc9+0q2wLyv4Dfvt80/DPn2pqOBsJdDiogXGR9+OvwRw==", "dev": true, + "license": "MIT", "dependencies": { - "assign-symbols": "^1.0.0", - "is-extendable": "^1.0.1" + "has-flag": "^4.0.0" }, "engines": { - "node": ">=0.10.0" + "node": ">=8" } }, - "node_modules/extend-shallow/node_modules/is-extendable": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/is-extendable/-/is-extendable-1.0.1.tgz", - "integrity": "sha512-arnXMxT1hhoKo9k1LZdmlNyJdDDfy2v0fXjFlmok4+i8ul/6WlbVge9bhM74OpNPQPMGUToDtz+KXa1PneJxOA==", + "node_modules/espree": { + "version": "10.4.0", + "resolved": "https://registry.npmjs.org/espree/-/espree-10.4.0.tgz", + "integrity": "sha512-j6PAQ2uUr79PZhBjP5C5fhl8e39FmRnOjsD5lGnWrFU8i2G776tBK7+nP8KuQUTTyAZUwfQqXAgrVH5MbH9CYQ==", "dev": true, + "license": "BSD-2-Clause", "dependencies": { - "is-plain-object": "^2.0.4" + "acorn": "^8.15.0", + "acorn-jsx": "^5.3.2", + "eslint-visitor-keys": "^4.2.1" }, "engines": { - "node": ">=0.10.0" + "node": "^18.18.0 || ^20.9.0 || >=21.1.0" + }, + "funding": { + "url": "https://opencollective.com/eslint" } }, - "node_modules/extglob": { - "version": "2.0.4", - "resolved": "https://registry.npmjs.org/extglob/-/extglob-2.0.4.tgz", - "integrity": "sha512-Nmb6QXkELsuBr24CJSkilo6UHHgbekK5UiZgfE6UHD3Eb27YC6oD+bhcT+tJ6cl8dmsgdQxnWlcry8ksBIBLpw==", + "node_modules/espree/node_modules/eslint-visitor-keys": { + "version": "4.2.1", + "resolved": "https://registry.npmjs.org/eslint-visitor-keys/-/eslint-visitor-keys-4.2.1.tgz", + "integrity": "sha512-Uhdk5sfqcee/9H/rCOJikYz67o0a2Tw2hGRPOG2Y1R2dg7brRe1uG0yaNQDHu+TO/uQPF/5eCapvYSmHUjt7JQ==", "dev": true, - "dependencies": { - "array-unique": "^0.3.2", - "define-property": "^1.0.0", - "expand-brackets": "^2.1.4", - "extend-shallow": "^2.0.1", - "fragment-cache": "^0.2.1", - "regex-not": "^1.0.0", - "snapdragon": "^0.8.1", - "to-regex": "^3.0.1" - }, + "license": "Apache-2.0", "engines": { - "node": ">=0.10.0" + "node": "^18.18.0 || ^20.9.0 || >=21.1.0" + }, + "funding": { + "url": "https://opencollective.com/eslint" } }, - "node_modules/extglob/node_modules/define-property": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/define-property/-/define-property-1.0.0.tgz", - "integrity": "sha1-dp66rz9KY6rTr56NMEybvnm/sOY=", + "node_modules/esprima": { + "version": "4.0.1", + "resolved": "https://registry.npmjs.org/esprima/-/esprima-4.0.1.tgz", + "integrity": "sha512-eGuFFw7Upda+g4p+QHvnW0RyTX/SVeJBDM/gCtMARO0cLuT2HcEKnTPvhjV6aGeqrCB/sbNop0Kszm0jsaWU4A==", "dev": true, - "dependencies": { - "is-descriptor": "^1.0.0" + "license": "BSD-2-Clause", + "bin": { + "esparse": "bin/esparse.js", + "esvalidate": "bin/esvalidate.js" }, "engines": { - "node": ">=0.10.0" + "node": ">=4" } }, - "node_modules/extglob/node_modules/extend-shallow": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/extend-shallow/-/extend-shallow-2.0.1.tgz", - "integrity": "sha1-Ua99YUrZqfYQ6huvu5idaxxWiQ8=", + "node_modules/esquery": { + "version": "1.6.0", + "resolved": "https://registry.npmjs.org/esquery/-/esquery-1.6.0.tgz", + "integrity": "sha512-ca9pw9fomFcKPvFLXhBKUK90ZvGibiGOvRJNbjljY7s7uq/5YO4BOzcYtJqExdx99rF6aAcnRxHmcUHcz6sQsg==", "dev": true, + "license": "BSD-3-Clause", "dependencies": { - "is-extendable": "^0.1.0" + "estraverse": "^5.1.0" }, "engines": { - "node": ">=0.10.0" + "node": ">=0.10" } }, - "node_modules/extglob/node_modules/is-accessor-descriptor": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/is-accessor-descriptor/-/is-accessor-descriptor-1.0.0.tgz", - "integrity": "sha512-m5hnHTkcVsPfqx3AKlyttIPb7J+XykHvJP2B9bZDjlhLIoEq4XoK64Vg7boZlVWYK6LUY94dYPEE7Lh0ZkZKcQ==", + "node_modules/esrecurse": { + "version": "4.3.0", + "resolved": "https://registry.npmjs.org/esrecurse/-/esrecurse-4.3.0.tgz", + "integrity": "sha512-KmfKL3b6G+RXvP8N1vr3Tq1kL/oCFgn2NYXEtqP8/L3pKapUA4G8cFVaoF3SU323CD4XypR/ffioHmkti6/Tag==", "dev": true, + "license": "BSD-2-Clause", "dependencies": { - "kind-of": "^6.0.0" + "estraverse": "^5.2.0" }, "engines": { - "node": ">=0.10.0" + "node": ">=4.0" } }, - "node_modules/extglob/node_modules/is-data-descriptor": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/is-data-descriptor/-/is-data-descriptor-1.0.0.tgz", - "integrity": "sha512-jbRXy1FmtAoCjQkVmIVYwuuqDFUbaOeDjmed1tOGPrsMhtJA4rD9tkgA0F1qJ3gRFRXcHYVkdeaP50Q5rE/jLQ==", + "node_modules/estraverse": { + "version": "5.3.0", + "resolved": "https://registry.npmjs.org/estraverse/-/estraverse-5.3.0.tgz", + "integrity": "sha512-MMdARuVEQziNTeJD8DgMqmhwR11BRQ/cBP+pLtYdSTnf3MIO8fFeiINEbX36ZdNlfU/7A9f3gUw49B3oQsvwBA==", "dev": true, - "dependencies": { - "kind-of": "^6.0.0" - }, + "license": "BSD-2-Clause", + "engines": { + "node": ">=4.0" + } + }, + "node_modules/estree-walker": { + "version": "2.0.2", + "resolved": "https://registry.npmjs.org/estree-walker/-/estree-walker-2.0.2.tgz", + "integrity": "sha512-Rfkk/Mp/DL7JVje3u18FxFujQlTNR2q6QfMSMB7AvCBx91NGj/ba3kCfza0f6dVDbw7YlRf/nDrn7pQrCCyQ/w==", + "dev": true, + "license": "MIT" + }, + "node_modules/esutils": { + "version": "2.0.3", + "resolved": "https://registry.npmjs.org/esutils/-/esutils-2.0.3.tgz", + "integrity": "sha512-kVscqXk4OCp68SZ0dkgEKVi6/8ij300KBWTJq32P/dYeWTSwK41WyTxalN1eRmA5Z9UU/LX9D7FWSmV9SAYx6g==", + "dev": true, + "license": "BSD-2-Clause", "engines": { "node": ">=0.10.0" } }, - "node_modules/extglob/node_modules/is-descriptor": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/is-descriptor/-/is-descriptor-1.0.2.tgz", - "integrity": "sha512-2eis5WqQGV7peooDyLmNEPUrps9+SXX5c9pL3xEB+4e9HnGuDa7mB7kHxHw4CbqS9k1T2hOH3miL8n8WtiYVtg==", + "node_modules/expect": { + "version": "29.7.0", + "resolved": "https://registry.npmjs.org/expect/-/expect-29.7.0.tgz", + "integrity": "sha512-2Zks0hf1VLFYI1kbh0I5jP3KHHyCHpkfyHBzsSXRFgl/Bg9mWYfMW8oD+PdMPlEwy5HNsR9JutYy6pMeOh61nw==", "dev": true, + "license": "MIT", "dependencies": { - "is-accessor-descriptor": "^1.0.0", - "is-data-descriptor": "^1.0.0", - "kind-of": "^6.0.2" + "@jest/expect-utils": "^29.7.0", + "jest-get-type": "^29.6.3", + "jest-matcher-utils": "^29.7.0", + "jest-message-util": "^29.7.0", + "jest-util": "^29.7.0" }, "engines": { - "node": ">=0.10.0" + "node": "^14.15.0 || ^16.10.0 || >=18.0.0" } }, - "node_modules/fancy-log": { - "version": "1.3.3", - "resolved": "https://registry.npmjs.org/fancy-log/-/fancy-log-1.3.3.tgz", - "integrity": "sha512-k9oEhlyc0FrVh25qYuSELjr8oxsCoc4/LEZfg2iJJrfEk/tZL9bCoJE47gqAvI2m/AUjluCS4+3I0eTx8n3AEw==", + "node_modules/fast-deep-equal": { + "version": "3.1.3", + "resolved": "https://registry.npmjs.org/fast-deep-equal/-/fast-deep-equal-3.1.3.tgz", + "integrity": "sha512-f3qQ9oQy9j2AhBe/H9VC91wLmKBCCU/gDOnKNAYG5hswO7BLKj09Hc5HYNz9cGI++xlpDCIgDaitVs03ATR84Q==", + "dev": true, + "license": "MIT" + }, + "node_modules/fast-glob": { + "version": "3.3.3", + "resolved": "https://registry.npmjs.org/fast-glob/-/fast-glob-3.3.3.tgz", + "integrity": "sha512-7MptL8U0cqcFdzIzwOTHoilX9x5BrNqye7Z/LuC7kCMRio1EMSyqRK3BEAUD7sXRq4iT4AzTVuZdhgQ2TCvYLg==", "dev": true, + "license": "MIT", "dependencies": { - "ansi-gray": "^0.1.1", - "color-support": "^1.1.3", - "parse-node-version": "^1.0.0", - "time-stamp": "^1.0.0" + "@nodelib/fs.stat": "^2.0.2", + "@nodelib/fs.walk": "^1.2.3", + "glob-parent": "^5.1.2", + "merge2": "^1.3.0", + "micromatch": "^4.0.8" }, "engines": { - "node": ">= 0.10" + "node": ">=8.6.0" } }, - "node_modules/fast-glob": { - "version": "2.2.7", - "resolved": "https://registry.npmjs.org/fast-glob/-/fast-glob-2.2.7.tgz", - "integrity": "sha512-g1KuQwHOZAmOZMuBtHdxDtju+T2RT8jgCC9aANsbpdiDDTSnjgfuVsIBNKbUeJI3oKMRExcfNDtJl4OhbffMsw==", + "node_modules/fast-glob/node_modules/glob-parent": { + "version": "5.1.2", + "resolved": "https://registry.npmjs.org/glob-parent/-/glob-parent-5.1.2.tgz", + "integrity": "sha512-AOIgSQCepiJYwP3ARnGx+5VnTu2HBYdzbGP45eLw1vr3zB3vZLeyed1sC9hnbcOc9/SrMyM5RPQrkGz4aS9Zow==", "dev": true, + "license": "ISC", "dependencies": { - "@mrmlnc/readdir-enhanced": "^2.2.1", - "@nodelib/fs.stat": "^1.1.2", - "glob-parent": "^3.1.0", - "is-glob": "^4.0.0", - "merge2": "^1.2.3", - "micromatch": "^3.1.10" + "is-glob": "^4.0.1" }, "engines": { - "node": ">=4.0.0" + "node": ">= 6" } }, "node_modules/fast-json-patch": { - "version": "3.0.0-1", - "resolved": "https://registry.npmjs.org/fast-json-patch/-/fast-json-patch-3.0.0-1.tgz", - "integrity": "sha512-6pdFb07cknxvPzCeLsFHStEy+MysPJPgZQ9LbQ/2O67unQF93SNqfdSqnPPl71YMHX+AD8gbl7iuoGFzHEdDuw==", - "dev": true + "version": "3.1.1", + "resolved": "https://registry.npmjs.org/fast-json-patch/-/fast-json-patch-3.1.1.tgz", + "integrity": "sha512-vf6IHUX2SBcA+5/+4883dsIjpBTqmfBjmYiWK1savxQmFk4JfBMLa7ynTYOs1Rolp/T1betJxHiGD3g1Mn8lUQ==", + "dev": true, + "license": "MIT" }, "node_modules/fast-json-stable-stringify": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/fast-json-stable-stringify/-/fast-json-stable-stringify-2.0.0.tgz", - "integrity": "sha1-1RQsDK7msRifh9OnYREGT4bIu/I=", - "dev": true + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/fast-json-stable-stringify/-/fast-json-stable-stringify-2.1.0.tgz", + "integrity": "sha512-lhd/wF+Lk98HZoTCtlVraHtfh5XYijIjalXck7saUtuanSDyLMxnHhSXEDJqHxD7msR8D0uCmqlkwjCV8xvwHw==", + "dev": true, + "license": "MIT" }, "node_modules/fast-levenshtein": { "version": "2.0.6", "resolved": "https://registry.npmjs.org/fast-levenshtein/-/fast-levenshtein-2.0.6.tgz", - "integrity": "sha1-PYpcZog6FqMMqGQ+hR8Zuqd5eRc=", - "dev": true - }, - "node_modules/fetch-blob": { - "version": "3.1.4", - "resolved": "https://registry.npmjs.org/fetch-blob/-/fetch-blob-3.1.4.tgz", - "integrity": "sha512-Eq5Xv5+VlSrYWEqKrusxY1C3Hm/hjeAsCGVG3ft7pZahlUAChpGZT/Ms1WmSLnEAisEXszjzu/s+ce6HZB2VHA==", + "integrity": "sha512-DCXu6Ifhqcks7TZKY3Hxp3y6qphY5SJZmrWMDrKcERSOXWQdMhU9Ig/PYrzyw/ul9jOIyh0N4M0tbC5hodg8dw==", "dev": true, - "funding": [ - { - "type": "github", - "url": "https://github.com/sponsors/jimmywarting" - }, - { - "type": "paypal", - "url": "https://paypal.me/jimmywarting" - } - ], - "dependencies": { - "node-domexception": "^1.0.0", - "web-streams-polyfill": "^3.0.3" - }, - "engines": { - "node": "^12.20 || >= 14.13" - } + "license": "MIT" }, - "node_modules/file-entry-cache": { - "version": "6.0.1", - "resolved": "https://registry.npmjs.org/file-entry-cache/-/file-entry-cache-6.0.1.tgz", - "integrity": "sha512-7Gps/XWymbLk2QLYK4NzpMOrYjMhdIxXuIvy2QBsLE6ljuodKvdkWs/cpyJJ3CVIVpH0Oi1Hvg1ovbMzLdFBBg==", + "node_modules/fastq": { + "version": "1.19.1", + "resolved": "https://registry.npmjs.org/fastq/-/fastq-1.19.1.tgz", + "integrity": "sha512-GwLTyxkCXjXbxqIhTsMI2Nui8huMPtnxg7krajPJAjnEG/iiOS7i+zCtWGZR9G0NBKbXKh6X9m9UIsYX/N6vvQ==", "dev": true, + "license": "ISC", "dependencies": { - "flat-cache": "^3.0.4" - }, - "engines": { - "node": "^10.12.0 || >=12.0.0" + "reusify": "^1.0.4" } }, - "node_modules/file-uri-to-path": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/file-uri-to-path/-/file-uri-to-path-1.0.0.tgz", - "integrity": "sha512-0Zt+s3L7Vf1biwWZ29aARiVYLx7iMGnEUl9x33fbB/j3jR81u/O2LbqK+Bm1CDSNDKVtJ/YjwY7TUd5SkeLQLw==", - "dev": true, - "optional": true - }, - "node_modules/fill-range": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/fill-range/-/fill-range-4.0.0.tgz", - "integrity": "sha1-1USBHUKPmOsGpj3EAtJAPDKMOPc=", + "node_modules/fb-watchman": { + "version": "2.0.2", + "resolved": "https://registry.npmjs.org/fb-watchman/-/fb-watchman-2.0.2.tgz", + "integrity": "sha512-p5161BqbuCaSnB8jIbzQHOlpgsPmK5rJVDfDKO91Axs5NC1uu3HRQm6wt9cd9/+GtQQIO53JdGXXoyDpTAsgYA==", "dev": true, + "license": "Apache-2.0", "dependencies": { - "extend-shallow": "^2.0.1", - "is-number": "^3.0.0", - "repeat-string": "^1.6.1", - "to-regex-range": "^2.1.0" - }, - "engines": { - "node": ">=0.10.0" + "bser": "2.1.1" } }, - "node_modules/fill-range/node_modules/extend-shallow": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/extend-shallow/-/extend-shallow-2.0.1.tgz", - "integrity": "sha1-Ua99YUrZqfYQ6huvu5idaxxWiQ8=", + "node_modules/fdir": { + "version": "6.4.4", + "resolved": "https://registry.npmjs.org/fdir/-/fdir-6.4.4.tgz", + "integrity": "sha512-1NZP+GK4GfuAv3PqKvxQRDMjdSRZjnkq7KfhlNrCNNlZ0ygQFpebfrnfnq/W7fpUnAv9aGWmY1zKx7FYL3gwhg==", "dev": true, - "dependencies": { - "is-extendable": "^0.1.0" + "license": "MIT", + "peerDependencies": { + "picomatch": "^3 || ^4" }, - "engines": { - "node": ">=0.10.0" + "peerDependenciesMeta": { + "picomatch": { + "optional": true + } } }, - "node_modules/find-up": { - "version": "1.1.2", - "resolved": "https://registry.npmjs.org/find-up/-/find-up-1.1.2.tgz", - "integrity": "sha1-ay6YIrGizgpgq2TWEOzK1TyyTQ8=", + "node_modules/file-entry-cache": { + "version": "8.0.0", + "resolved": "https://registry.npmjs.org/file-entry-cache/-/file-entry-cache-8.0.0.tgz", + "integrity": "sha512-XXTUwCvisa5oacNGRP9SfNtYBNAMi+RPwBFmblZEF7N7swHYQS6/Zfk7SRwx4D5j3CH211YNRco1DEMNVfZCnQ==", "dev": true, + "license": "MIT", "dependencies": { - "path-exists": "^2.0.0", - "pinkie-promise": "^2.0.0" + "flat-cache": "^4.0.0" }, "engines": { - "node": ">=0.10.0" + "node": ">=16.0.0" } }, - "node_modules/findup-sync": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/findup-sync/-/findup-sync-3.0.0.tgz", - "integrity": "sha512-YbffarhcicEhOrm4CtrwdKBdCuz576RLdhJDsIfvNtxUuhdRet1qZcsMjqbePtAseKdAnDyM/IyXbu7PRPRLYg==", + "node_modules/fill-range": { + "version": "7.1.1", + "resolved": "https://registry.npmjs.org/fill-range/-/fill-range-7.1.1.tgz", + "integrity": "sha512-YsGpe3WHLK8ZYi4tWDg2Jy3ebRz2rXowDxnld4bkQB00cc/1Zw9AWnC0i9ztDJitivtQvaI9KaLyKrc+hBW0yg==", "dev": true, + "license": "MIT", "dependencies": { - "detect-file": "^1.0.0", - "is-glob": "^4.0.0", - "micromatch": "^3.0.4", - "resolve-dir": "^1.0.1" + "to-regex-range": "^5.0.1" }, "engines": { - "node": ">= 0.10" + "node": ">=8" } }, - "node_modules/fined": { + "node_modules/find-package-json": { "version": "1.2.0", - "resolved": "https://registry.npmjs.org/fined/-/fined-1.2.0.tgz", - "integrity": "sha512-ZYDqPLGxDkDhDZBjZBb+oD1+j0rA4E0pXY50eplAAOPg2N/gUBSSk5IM1/QhPfyVo19lJ+CvXpqfvk+b2p/8Ng==", + "resolved": "https://registry.npmjs.org/find-package-json/-/find-package-json-1.2.0.tgz", + "integrity": "sha512-+SOGcLGYDJHtyqHd87ysBhmaeQ95oWspDKnMXBrnQ9Eq4OkLNqejgoaD8xVWu6GPa0B6roa6KinCMEMcVeqONw==", "dev": true, - "dependencies": { - "expand-tilde": "^2.0.2", - "is-plain-object": "^2.0.3", - "object.defaults": "^1.1.0", - "object.pick": "^1.2.0", - "parse-filepath": "^1.0.1" - }, - "engines": { - "node": ">= 0.10" - } + "license": "MIT" }, - "node_modules/flagged-respawn": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/flagged-respawn/-/flagged-respawn-1.0.1.tgz", - "integrity": "sha512-lNaHNVymajmk0OJMBn8fVUAU1BtDeKIqKoVhk4xAALB57aALg6b4W0MfJ/cUE0g9YBXy5XhSlPIpYIJ7HaY/3Q==", + "node_modules/find-up": { + "version": "5.0.0", + "resolved": "https://registry.npmjs.org/find-up/-/find-up-5.0.0.tgz", + "integrity": "sha512-78/PXT1wlLLDgTzDs7sjq9hzz0vXD+zn+7wypEe4fXQxCmdmqfGsEPQxmiCSQI3ajFV91bVSsvNtrJRiW6nGng==", "dev": true, + "license": "MIT", + "dependencies": { + "locate-path": "^6.0.0", + "path-exists": "^4.0.0" + }, "engines": { - "node": ">= 0.10" + "node": ">=10" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" } }, "node_modules/flat": { @@ -3837,258 +4458,173 @@ "resolved": "https://registry.npmjs.org/flat/-/flat-5.0.2.tgz", "integrity": "sha512-b6suED+5/3rTpUBdG1gupIl8MPFCAMA0QXwmljLhvCUKcUvdE4gWky9zpuGCcXHOsz4J9wPGNWq6OKpmIzz3hQ==", "dev": true, + "license": "BSD-3-Clause", "bin": { "flat": "cli.js" } }, "node_modules/flat-cache": { - "version": "3.0.4", - "resolved": "https://registry.npmjs.org/flat-cache/-/flat-cache-3.0.4.tgz", - "integrity": "sha512-dm9s5Pw7Jc0GvMYbshN6zchCA9RgQlzzEZX3vylR9IqFfS8XciblUXOKfW6SiuJ0e13eDYZoZV5wdrev7P3Nwg==", + "version": "4.0.1", + "resolved": "https://registry.npmjs.org/flat-cache/-/flat-cache-4.0.1.tgz", + "integrity": "sha512-f7ccFPK3SXFHpx15UIGyRJ/FJQctuKZ0zVuN3frBo4HnK3cay9VEW0R6yPYFHC0AgqhukPzKjq22t5DmAyqGyw==", "dev": true, + "license": "MIT", "dependencies": { - "flatted": "^3.1.0", - "rimraf": "^3.0.2" + "flatted": "^3.2.9", + "keyv": "^4.5.4" }, "engines": { - "node": "^10.12.0 || >=12.0.0" - } - }, - "node_modules/flat-cache/node_modules/rimraf": { - "version": "3.0.2", - "resolved": "https://registry.npmjs.org/rimraf/-/rimraf-3.0.2.tgz", - "integrity": "sha512-JZkJMZkAGFFPP2YqXZXPbMlMBgsxzE8ILs4lMIX/2o0L9UBw9O/Y3o6wFw/i9YLapcUJWwqbi3kdxIPdC62TIA==", - "dev": true, - "dependencies": { - "glob": "^7.1.3" - }, - "bin": { - "rimraf": "bin.js" - }, - "funding": { - "url": "https://github.com/sponsors/isaacs" + "node": ">=16" } }, "node_modules/flatted": { - "version": "3.1.1", - "resolved": "https://registry.npmjs.org/flatted/-/flatted-3.1.1.tgz", - "integrity": "sha512-zAoAQiudy+r5SvnSw3KJy5os/oRJYHzrzja/tBDqrZtNhUw8bt6y8OBzMWcjWr+8liV8Eb6yOhw8WZ7VFZ5ZzA==", - "dev": true - }, - "node_modules/flush-write-stream": { - "version": "1.1.1", - "resolved": "https://registry.npmjs.org/flush-write-stream/-/flush-write-stream-1.1.1.tgz", - "integrity": "sha512-3Z4XhFZ3992uIq0XOqb9AreonueSYphE6oYbpt5+3u06JWklbsPkNv3ZKkP9Bz/r+1MWCaMoSQ28P85+1Yc77w==", - "dev": true, - "dependencies": { - "inherits": "^2.0.3", - "readable-stream": "^2.3.6" - } - }, - "node_modules/follow-redirects": { - "version": "1.14.8", - "resolved": "https://registry.npmjs.org/follow-redirects/-/follow-redirects-1.14.8.tgz", - "integrity": "sha512-1x0S9UVJHsQprFcEC/qnNzBLcIxsjAV905f/UkQxbclCsoTWlacCNOpQa/anodLl2uaEKFhfWOvM2Qg77+15zA==", - "dev": true, - "funding": [ - { - "type": "individual", - "url": "https://github.com/sponsors/RubenVerborgh" - } - ], - "engines": { - "node": ">=4.0" - }, - "peerDependenciesMeta": { - "debug": { - "optional": true - } - } - }, - "node_modules/for-in": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/for-in/-/for-in-1.0.2.tgz", - "integrity": "sha1-gQaNKVqBQuwKxybG4iAMMPttXoA=", + "version": "3.3.3", + "resolved": "https://registry.npmjs.org/flatted/-/flatted-3.3.3.tgz", + "integrity": "sha512-GX+ysw4PBCz0PzosHDepZGANEuFCMLrnRTiEy9McGjmkCQYwRq4A/X786G/fjM/+OjsWSU1ZrY5qyARZmO/uwg==", "dev": true, - "engines": { - "node": ">=0.10.0" - } + "license": "ISC" }, - "node_modules/for-own": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/for-own/-/for-own-1.0.0.tgz", - "integrity": "sha1-xjMy9BXO3EsE2/5wz4NklMU8tEs=", + "node_modules/for-each": { + "version": "0.3.5", + "resolved": "https://registry.npmjs.org/for-each/-/for-each-0.3.5.tgz", + "integrity": "sha512-dKx12eRCVIzqCxFGplyFKJMPvLEWgmNtUrpTiJIR5u97zEhRG8ySrtboPHZXx7daLxQVrl643cTzbab2tkQjxg==", "dev": true, + "license": "MIT", "dependencies": { - "for-in": "^1.0.1" + "is-callable": "^1.2.7" }, "engines": { - "node": ">=0.10.0" + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" } }, "node_modules/form-data": { - "version": "3.0.1", - "resolved": "https://registry.npmjs.org/form-data/-/form-data-3.0.1.tgz", - "integrity": "sha512-RHkBKtLWUVwd7SqRIvCZMEvAMoGUp0XU+seQiZejj0COz3RI3hWP4sCv3gZWWLjJTd7rGwcsF5eKZGii0r/hbg==", + "version": "4.0.4", + "resolved": "https://registry.npmjs.org/form-data/-/form-data-4.0.4.tgz", + "integrity": "sha512-KrGhL9Q4zjj0kiUt5OO4Mr/A/jlI2jDYs5eHBpYHPcBEVSiipAvn2Ko2HnPe20rmcuuvMHNdZFp+4IlGTMF0Ow==", "dev": true, + "license": "MIT", "dependencies": { "asynckit": "^0.4.0", "combined-stream": "^1.0.8", + "es-set-tostringtag": "^2.1.0", + "hasown": "^2.0.2", "mime-types": "^2.1.12" }, "engines": { "node": ">= 6" } }, - "node_modules/form-data/node_modules/combined-stream": { - "version": "1.0.8", - "resolved": "https://registry.npmjs.org/combined-stream/-/combined-stream-1.0.8.tgz", - "integrity": "sha512-FQN4MRfuJeHf7cBbBMJFXhKSDq+2kAArBlmRBvcvFE5BB1HZKXtSFASDhdlz9zOYwxh8lDdnvmMOe/+5cdoEdg==", + "node_modules/fs.realpath": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/fs.realpath/-/fs.realpath-1.0.0.tgz", + "integrity": "sha512-OO0pH2lK6a0hZnAdau5ItzHPI6pUlvI7jMVnxUQRtw4owF2wk8lOSabtGDCTP4Ggrg2MbGnWO9X8K1t4+fGMDw==", "dev": true, - "dependencies": { - "delayed-stream": "~1.0.0" - }, + "license": "ISC" + }, + "node_modules/fsevents": { + "version": "2.3.3", + "resolved": "https://registry.npmjs.org/fsevents/-/fsevents-2.3.3.tgz", + "integrity": "sha512-5xoDfX+fL7faATnagmWPpbFtwh/R77WmMMqqHGS65C3vvB0YHrgF+B1YmZ3441tMj5n63k0212XNoJwzlhffQw==", + "dev": true, + "hasInstallScript": true, + "license": "MIT", + "optional": true, + "os": [ + "darwin" + ], "engines": { - "node": ">= 0.8" + "node": "^8.16.0 || ^10.6.0 || >=11.0.0" } }, - "node_modules/formdata-polyfill": { - "version": "4.0.10", - "resolved": "https://registry.npmjs.org/formdata-polyfill/-/formdata-polyfill-4.0.10.tgz", - "integrity": "sha512-buewHzMvYL29jdeQTVILecSaZKnt/RJWjoZCF5OW60Z67/GmSLBkOFM7qh1PI3zFNtJbaZL5eQu1vLfazOwj4g==", + "node_modules/function-bind": { + "version": "1.1.2", + "resolved": "https://registry.npmjs.org/function-bind/-/function-bind-1.1.2.tgz", + "integrity": "sha512-7XHNxH7qX9xG5mIwxkhumTox/MIRNcOgDrxWsMt2pAr23WHp6MrRlN7FBSFpCpr+oVO0F744iUgR82nJMfG2SA==", "dev": true, - "dependencies": { - "fetch-blob": "^3.1.2" - }, - "engines": { - "node": ">=12.20.0" + "license": "MIT", + "funding": { + "url": "https://github.com/sponsors/ljharb" } }, - "node_modules/fragment-cache": { - "version": "0.2.1", - "resolved": "https://registry.npmjs.org/fragment-cache/-/fragment-cache-0.2.1.tgz", - "integrity": "sha1-QpD60n8T6Jvn8zeZxrxaCr//DRk=", + "node_modules/function.prototype.name": { + "version": "1.1.8", + "resolved": "https://registry.npmjs.org/function.prototype.name/-/function.prototype.name-1.1.8.tgz", + "integrity": "sha512-e5iwyodOHhbMr/yNrc7fDYG4qlbIvI5gajyzPnb5TCwyhjApznQh1BMFou9b30SevY43gCJKXycoCBjMbsuW0Q==", "dev": true, + "license": "MIT", "dependencies": { - "map-cache": "^0.2.2" + "call-bind": "^1.0.8", + "call-bound": "^1.0.3", + "define-properties": "^1.2.1", + "functions-have-names": "^1.2.3", + "hasown": "^2.0.2", + "is-callable": "^1.2.7" }, "engines": { - "node": ">=0.10.0" + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" } }, - "node_modules/fs-exists-sync": { - "version": "0.1.0", - "resolved": "https://registry.npmjs.org/fs-exists-sync/-/fs-exists-sync-0.1.0.tgz", - "integrity": "sha1-mC1ok6+RjnLQjeyehnP/K1qNat0=", + "node_modules/functions-have-names": { + "version": "1.2.3", + "resolved": "https://registry.npmjs.org/functions-have-names/-/functions-have-names-1.2.3.tgz", + "integrity": "sha512-xckBUXyTIqT97tq2x2AMb+g163b5JFysYk0x4qxNFwbfQkmNZoiRHb6sPzI9/QV33WeuvVYBUIiD4NzNIyqaRQ==", "dev": true, - "engines": { - "node": ">=0.10.0" + "license": "MIT", + "funding": { + "url": "https://github.com/sponsors/ljharb" } }, - "node_modules/fs-extra": { - "version": "7.0.1", - "resolved": "https://registry.npmjs.org/fs-extra/-/fs-extra-7.0.1.tgz", - "integrity": "sha512-YJDaCJZEnBmcbw13fvdAM9AwNOJwOzrE4pqMqBq5nFiEqXUqHwlK4B+3pUw6JNvfSPtX05xFHtYy/1ni01eGCw==", + "node_modules/gensync": { + "version": "1.0.0-beta.2", + "resolved": "https://registry.npmjs.org/gensync/-/gensync-1.0.0-beta.2.tgz", + "integrity": "sha512-3hN7NaskYvMDLQY55gnW3NQ+mesEAepTqlg+VEbj7zzqEMBVNhzcGYYeqFo/TlYz6eQiFcp1HcsCZO+nGgS8zg==", "dev": true, - "dependencies": { - "graceful-fs": "^4.1.2", - "jsonfile": "^4.0.0", - "universalify": "^0.1.0" - }, - "engines": { - "node": ">=6 <7 || >=8" - } - }, - "node_modules/fs-mkdirp-stream": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/fs-mkdirp-stream/-/fs-mkdirp-stream-1.0.0.tgz", - "integrity": "sha1-C3gV/DIBxqaeFNuYzgmMFpNSWes=", - "dev": true, - "dependencies": { - "graceful-fs": "^4.1.11", - "through2": "^2.0.3" - }, - "engines": { - "node": ">= 0.10" - } - }, - "node_modules/fs.realpath": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/fs.realpath/-/fs.realpath-1.0.0.tgz", - "integrity": "sha1-FQStJSMVjKpA20onh8sBQRmU6k8=", - "dev": true - }, - "node_modules/fsevents": { - "version": "1.2.13", - "resolved": "https://registry.npmjs.org/fsevents/-/fsevents-1.2.13.tgz", - "integrity": "sha512-oWb1Z6mkHIskLzEJ/XWX0srkpkTQ7vaopMQkyaEIoq0fmtFVxOthb8cCxeT+p3ynTdkk/RZwbgG4brR5BeWECw==", - "deprecated": "fsevents 1 will break on node v14+ and could be using insecure binaries. Upgrade to fsevents 2.", - "dev": true, - "hasInstallScript": true, - "optional": true, - "os": [ - "darwin" - ], - "dependencies": { - "bindings": "^1.5.0", - "nan": "^2.12.1" - }, + "license": "MIT", "engines": { - "node": ">= 4.0" + "node": ">=6.9.0" } }, - "node_modules/function-bind": { - "version": "1.1.1", - "resolved": "https://registry.npmjs.org/function-bind/-/function-bind-1.1.1.tgz", - "integrity": "sha512-yIovAzMX49sF8Yl58fSCWJ5svSLuaibPxXQJFLmBObTuCr0Mf1KiPopGM9NiFjiYBCbfaa2Fh6breQ6ANVTI0A==", - "dev": true - }, - "node_modules/functional-red-black-tree": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/functional-red-black-tree/-/functional-red-black-tree-1.0.1.tgz", - "integrity": "sha1-GwqzvVU7Kg1jmdKcDj6gslIHgyc=", - "dev": true - }, "node_modules/geometry-interfaces": { "version": "1.1.4", "resolved": "https://registry.npmjs.org/geometry-interfaces/-/geometry-interfaces-1.1.4.tgz", "integrity": "sha512-qD6OdkT6NcES9l4Xx3auTpwraQruU7dARbQPVO71MKvkGYw5/z/oIiGymuFXrRaEQa5Y67EIojUpaLeGEa5hGA==", - "dev": true + "dev": true, + "license": "MIT" }, "node_modules/get-caller-file": { - "version": "1.0.3", - "resolved": "https://registry.npmjs.org/get-caller-file/-/get-caller-file-1.0.3.tgz", - "integrity": "sha512-3t6rVToeoZfYSGd8YoLFR2DJkiQrIiUrGcjvFX2mDw3bn6k2OtwHN0TNCLbBO+w8qTvimhDkv+LSscbJY1vE6w==", - "dev": true - }, - "node_modules/get-func-name": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/get-func-name/-/get-func-name-2.0.0.tgz", - "integrity": "sha1-6td0q+5y4gQJQzoGY2YCPdaIekE=", + "version": "2.0.5", + "resolved": "https://registry.npmjs.org/get-caller-file/-/get-caller-file-2.0.5.tgz", + "integrity": "sha512-DyFP3BM/3YHTQOCUL/w0OZHR0lpKeGrxotcHWcqNEdnltqFwXVfhEBQ94eIo34AfQpo0rGki4cyIiftY06h2Fg==", "dev": true, + "license": "ISC", "engines": { - "node": "*" + "node": "6.* || 8.* || >= 10.*" } }, "node_modules/get-intrinsic": { - "version": "1.1.1", - "resolved": "https://registry.npmjs.org/get-intrinsic/-/get-intrinsic-1.1.1.tgz", - "integrity": "sha512-kWZrnVM42QCiEA2Ig1bG8zjoIMOgxWwYCEeNdwY6Tv/cOSeGpcoX4pXHfKUxNKVoArnrEr2e9srnAxxGIraS9Q==", + "version": "1.3.0", + "resolved": "https://registry.npmjs.org/get-intrinsic/-/get-intrinsic-1.3.0.tgz", + "integrity": "sha512-9fSjSaos/fRIVIp+xSJlE6lfwhES7LNtKaCBIamHsjr2na1BiABJPo0mOjjz8GJDURarmCPGqaiVg5mfjb98CQ==", "dev": true, + "license": "MIT", "dependencies": { - "function-bind": "^1.1.1", - "has": "^1.0.3", - "has-symbols": "^1.0.1" + "call-bind-apply-helpers": "^1.0.2", + "es-define-property": "^1.0.1", + "es-errors": "^1.3.0", + "es-object-atoms": "^1.1.1", + "function-bind": "^1.1.2", + "get-proto": "^1.0.1", + "gopd": "^1.2.0", + "has-symbols": "^1.1.0", + "hasown": "^2.0.2", + "math-intrinsics": "^1.1.0" }, - "funding": { - "url": "https://github.com/sponsors/ljharb" - } - }, - "node_modules/get-intrinsic/node_modules/has-symbols": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/has-symbols/-/has-symbols-1.0.2.tgz", - "integrity": "sha512-chXa79rL/UC2KlX17jo3vRGz0azaWEx5tGqZg5pO3NUyEJVB17dMruQlzCCOfUvElghKcm5194+BCRvi2Rv/Gw==", - "dev": true, "engines": { "node": ">= 0.4" }, @@ -4096,1601 +4632,1711 @@ "url": "https://github.com/sponsors/ljharb" } }, - "node_modules/get-stdin": { - "version": "6.0.0", - "resolved": "https://registry.npmjs.org/get-stdin/-/get-stdin-6.0.0.tgz", - "integrity": "sha512-jp4tHawyV7+fkkSKyvjuLZswblUtz+SQKzSWnBbii16BuZksJlU1wuBYXY75r+duh/llF1ur6oNwi+2ZzjKZ7g==", + "node_modules/get-package-type": { + "version": "0.1.0", + "resolved": "https://registry.npmjs.org/get-package-type/-/get-package-type-0.1.0.tgz", + "integrity": "sha512-pjzuKtY64GYfWizNAJ0fr9VqttZkNiK2iS430LtIHzjBEr6bX8Am2zm4sW4Ro5wjWW5cAlRL1qAMTcXbjNAO2Q==", "dev": true, + "license": "MIT", "engines": { - "node": ">=4" + "node": ">=8.0.0" } }, - "node_modules/get-stream": { - "version": "4.1.0", - "resolved": "https://registry.npmjs.org/get-stream/-/get-stream-4.1.0.tgz", - "integrity": "sha512-GMat4EJ5161kIy2HevLlr4luNjBgvmj413KaQA7jt4V8B4RDsfpHk7WQ9GVqfYyyx8OS/L66Kox+rJRNklLK7w==", + "node_modules/get-proto": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/get-proto/-/get-proto-1.0.1.tgz", + "integrity": "sha512-sTSfBjoXBp89JvIKIefqw7U2CCebsc74kiY6awiGogKtoSGbgjYE/G/+l9sF3MWFPNc9IcoOC4ODfKHfxFmp0g==", "dev": true, + "license": "MIT", "dependencies": { - "pump": "^3.0.0" + "dunder-proto": "^1.0.1", + "es-object-atoms": "^1.0.0" }, "engines": { - "node": ">=6" + "node": ">= 0.4" } }, - "node_modules/get-value": { - "version": "2.0.6", - "resolved": "https://registry.npmjs.org/get-value/-/get-value-2.0.6.tgz", - "integrity": "sha1-3BXKHGcjh8p2vTesCjlbogQqLCg=", + "node_modules/get-stdin": { + "version": "6.0.0", + "resolved": "https://registry.npmjs.org/get-stdin/-/get-stdin-6.0.0.tgz", + "integrity": "sha512-jp4tHawyV7+fkkSKyvjuLZswblUtz+SQKzSWnBbii16BuZksJlU1wuBYXY75r+duh/llF1ur6oNwi+2ZzjKZ7g==", "dev": true, + "license": "MIT", "engines": { - "node": ">=0.10.0" + "node": ">=4" } }, - "node_modules/git-config-path": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/git-config-path/-/git-config-path-1.0.1.tgz", - "integrity": "sha1-bTP37WPbDQ4RgTFQO6s6ykfVRmQ=", + "node_modules/get-symbol-description": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/get-symbol-description/-/get-symbol-description-1.1.0.tgz", + "integrity": "sha512-w9UMqWwJxHNOvoNzSJ2oPF5wvYcvP7jUvYzhp67yEhTi17ZDBBC1z9pTdGuzjD+EFIqLSYRweZjqfiPzQ06Ebg==", "dev": true, + "license": "MIT", "dependencies": { - "extend-shallow": "^2.0.1", - "fs-exists-sync": "^0.1.0", - "homedir-polyfill": "^1.0.0" + "call-bound": "^1.0.3", + "es-errors": "^1.3.0", + "get-intrinsic": "^1.2.6" }, "engines": { - "node": ">=0.10.0" + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" } }, - "node_modules/git-config-path/node_modules/extend-shallow": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/extend-shallow/-/extend-shallow-2.0.1.tgz", - "integrity": "sha1-Ua99YUrZqfYQ6huvu5idaxxWiQ8=", + "node_modules/glob-parent": { + "version": "6.0.2", + "resolved": "https://registry.npmjs.org/glob-parent/-/glob-parent-6.0.2.tgz", + "integrity": "sha512-XxwI8EOhVQgWp6iDL+3b0r86f4d6AX6zSU55HfB4ydCEuXLXc5FcYeOu+nnGftS4TEju/11rt4KJPTMgbfmv4A==", "dev": true, + "license": "ISC", "dependencies": { - "is-extendable": "^0.1.0" + "is-glob": "^4.0.3" }, "engines": { - "node": ">=0.10.0" + "node": ">=10.13.0" } }, - "node_modules/gitlab": { - "version": "10.2.1", - "resolved": "https://registry.npmjs.org/gitlab/-/gitlab-10.2.1.tgz", - "integrity": "sha512-z+DxRF1C9uayVbocs9aJkJz+kGy14TSm1noB/rAIEBbXOkOYbjKxyuqJzt+0zeFpXFdgA0yq6DVVbvM7HIfGwg==", - "deprecated": "The gitlab package has found a new home in the @gitbeaker organization. For the latest gitlab node library, check out @gitbeaker/node. A full list of the features can be found here: https://github.com/jdalrymple/gitbeaker#readme", + "node_modules/globals": { + "version": "16.0.0", + "resolved": "https://registry.npmjs.org/globals/-/globals-16.0.0.tgz", + "integrity": "sha512-iInW14XItCXET01CQFqudPOWP2jYMl7T+QRQT+UNcR/iQncN/F0UNpgd76iFkBPgNQb4+X3LV9tLJYzwh+Gl3A==", "dev": true, - "dependencies": { - "form-data": "^2.5.0", - "humps": "^2.0.1", - "ky": "^0.12.0", - "ky-universal": "^0.3.0", - "li": "^1.3.0", - "query-string": "^6.8.2", - "universal-url": "^2.0.0" - }, + "license": "MIT", "engines": { - "node": ">=10.0.0" + "node": ">=18" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" } }, - "node_modules/gitlab/node_modules/form-data": { - "version": "2.5.1", - "resolved": "https://registry.npmjs.org/form-data/-/form-data-2.5.1.tgz", - "integrity": "sha512-m21N3WOmEEURgk6B9GLOE4RuWOFf28Lhh9qGYeNlGq4VDXUlJy2th2slBNU8Gp8EzloYZOibZJ7t5ecIrFSjVA==", + "node_modules/globalthis": { + "version": "1.0.4", + "resolved": "https://registry.npmjs.org/globalthis/-/globalthis-1.0.4.tgz", + "integrity": "sha512-DpLKbNU4WylpxJykQujfCcwYWiV/Jhm50Goo0wrVILAv5jOr9d+H+UR3PhSCD2rCCEIg0uc+G+muBTwD54JhDQ==", "dev": true, + "license": "MIT", "dependencies": { - "asynckit": "^0.4.0", - "combined-stream": "^1.0.6", - "mime-types": "^2.1.12" + "define-properties": "^1.2.1", + "gopd": "^1.0.1" }, "engines": { - "node": ">= 0.12" + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" } }, - "node_modules/glob": { - "version": "7.2.0", - "resolved": "https://registry.npmjs.org/glob/-/glob-7.2.0.tgz", - "integrity": "sha512-lmLf6gtyrPq8tTjSmrO94wBeQbFR3HbLHbuyD69wuyQkImp2hWqMGB47OX65FBkPffO641IP9jWa1z4ivqG26Q==", + "node_modules/globby": { + "version": "11.1.0", + "resolved": "https://registry.npmjs.org/globby/-/globby-11.1.0.tgz", + "integrity": "sha512-jhIXaOzy1sb8IyocaruWSn1TjmnBVs8Ayhcy83rmxNJ8q2uWKCAj3CnJY+KpGSXCueAPc0i05kVvVKtP1t9S3g==", "dev": true, + "license": "MIT", "dependencies": { - "fs.realpath": "^1.0.0", - "inflight": "^1.0.4", - "inherits": "2", - "minimatch": "^3.0.4", - "once": "^1.3.0", - "path-is-absolute": "^1.0.0" + "array-union": "^2.1.0", + "dir-glob": "^3.0.1", + "fast-glob": "^3.2.9", + "ignore": "^5.2.0", + "merge2": "^1.4.1", + "slash": "^3.0.0" }, "engines": { - "node": "*" + "node": ">=10" }, "funding": { - "url": "https://github.com/sponsors/isaacs" + "url": "https://github.com/sponsors/sindresorhus" } }, - "node_modules/glob-parent": { - "version": "3.1.0", - "resolved": "https://registry.npmjs.org/glob-parent/-/glob-parent-3.1.0.tgz", - "integrity": "sha1-nmr2KZ2NO9K9QEMIMr0RPfkGxa4=", + "node_modules/gopd": { + "version": "1.2.0", + "resolved": "https://registry.npmjs.org/gopd/-/gopd-1.2.0.tgz", + "integrity": "sha512-ZUKRh6/kUFoAiTAtTYPZJ3hw9wNxx+BIBOijnlG9PnrJsCcSjs1wyyD6vJpaYtgnzDrKYRSqf3OO6Rfa93xsRg==", "dev": true, - "dependencies": { - "is-glob": "^3.1.0", - "path-dirname": "^1.0.0" + "license": "MIT", + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" } }, - "node_modules/glob-parent/node_modules/is-glob": { - "version": "3.1.0", - "resolved": "https://registry.npmjs.org/is-glob/-/is-glob-3.1.0.tgz", - "integrity": "sha1-e6WuJCF4BKxwcHuWkiVnSGzD6Eo=", + "node_modules/graceful-fs": { + "version": "4.2.11", + "resolved": "https://registry.npmjs.org/graceful-fs/-/graceful-fs-4.2.11.tgz", + "integrity": "sha512-RbJ5/jmFcNNCcDV5o9eTnBLJ/HszWV0P73bc+Ff4nS/rJj+YaS6IGyiOL0VoBYX+l1Wrl3k63h/KrH+nhJ0XvQ==", "dev": true, - "dependencies": { - "is-extglob": "^2.1.0" - }, - "engines": { - "node": ">=0.10.0" - } + "license": "ISC" }, - "node_modules/glob-stream": { - "version": "6.1.0", - "resolved": "https://registry.npmjs.org/glob-stream/-/glob-stream-6.1.0.tgz", - "integrity": "sha1-cEXJlBOz65SIjYOrRtC0BMx73eQ=", + "node_modules/gzip-size": { + "version": "7.0.0", + "resolved": "https://registry.npmjs.org/gzip-size/-/gzip-size-7.0.0.tgz", + "integrity": "sha512-O1Ld7Dr+nqPnmGpdhzLmMTQ4vAsD+rHwMm1NLUmoUFFymBOMKxCCrtDxqdBRYXdeEPEi3SyoR4TizJLQrnKBNA==", "dev": true, + "license": "MIT", "dependencies": { - "extend": "^3.0.0", - "glob": "^7.1.1", - "glob-parent": "^3.1.0", - "is-negated-glob": "^1.0.0", - "ordered-read-streams": "^1.0.0", - "pumpify": "^1.3.5", - "readable-stream": "^2.1.5", - "remove-trailing-separator": "^1.0.1", - "to-absolute-glob": "^2.0.0", - "unique-stream": "^2.0.2" + "duplexer": "^0.1.2" }, "engines": { - "node": ">= 0.10" + "node": "^12.20.0 || ^14.13.1 || >=16.0.0" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" } }, - "node_modules/glob-to-regexp": { - "version": "0.3.0", - "resolved": "https://registry.npmjs.org/glob-to-regexp/-/glob-to-regexp-0.3.0.tgz", - "integrity": "sha1-jFoUlNIGbFcMw7/kSWF1rMTVAqs=", - "dev": true - }, - "node_modules/glob-watcher": { - "version": "5.0.5", - "resolved": "https://registry.npmjs.org/glob-watcher/-/glob-watcher-5.0.5.tgz", - "integrity": "sha512-zOZgGGEHPklZNjZQaZ9f41i7F2YwE+tS5ZHrDhbBCk3stwahn5vQxnFmBJZHoYdusR6R1bLSXeGUy/BhctwKzw==", + "node_modules/hard-rejection": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/hard-rejection/-/hard-rejection-2.1.0.tgz", + "integrity": "sha512-VIZB+ibDhx7ObhAe7OVtoEbuP4h/MuOTHJ+J8h/eBXotJYl0fBgR72xDFCKgIh22OJZIOVNxBMWuhAr10r8HdA==", "dev": true, - "dependencies": { - "anymatch": "^2.0.0", - "async-done": "^1.2.0", - "chokidar": "^2.0.0", - "is-negated-glob": "^1.0.0", - "just-debounce": "^1.0.0", - "normalize-path": "^3.0.0", - "object.defaults": "^1.1.0" - }, + "license": "MIT", "engines": { - "node": ">= 0.10" + "node": ">=6" } }, - "node_modules/glob-watcher/node_modules/normalize-path": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/normalize-path/-/normalize-path-3.0.0.tgz", - "integrity": "sha512-6eZs5Ls3WtCisHWp9S2GUy8dqkpGi4BVSz3GaqiE6ezub0512ESztXUwUB6C6IKbQkY2Pnb/mD4WYojCRwcwLA==", + "node_modules/has-bigints": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/has-bigints/-/has-bigints-1.1.0.tgz", + "integrity": "sha512-R3pbpkcIqv2Pm3dUwgjclDRVmWpTJW2DcMzcIhEXEx1oh/CEMObMm3KLmRJOdvhM7o4uQBnwr8pzRK2sJWIqfg==", "dev": true, + "license": "MIT", "engines": { - "node": ">=0.10.0" + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" } }, - "node_modules/global-modules": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/global-modules/-/global-modules-1.0.0.tgz", - "integrity": "sha512-sKzpEkf11GpOFuw0Zzjzmt4B4UZwjOcG757PPvrfhxcLFbq0wpsgpOqxpxtxFiCG4DtG93M6XRVbF2oGdev7bg==", + "node_modules/has-flag": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-3.0.0.tgz", + "integrity": "sha512-sKJf1+ceQBr4SMkvQnBDNDtf4TXpVhVGateu0t918bl30FnbE2m4vNLX+VWe/dpjlb+HugGYzW7uQXH98HPEYw==", "dev": true, - "dependencies": { - "global-prefix": "^1.0.1", - "is-windows": "^1.0.1", - "resolve-dir": "^1.0.0" - }, + "license": "MIT", "engines": { - "node": ">=0.10.0" + "node": ">=4" } }, - "node_modules/global-prefix": { + "node_modules/has-property-descriptors": { "version": "1.0.2", - "resolved": "https://registry.npmjs.org/global-prefix/-/global-prefix-1.0.2.tgz", - "integrity": "sha1-2/dDxsFJklk8ZVVoy2btMsASLr4=", + "resolved": "https://registry.npmjs.org/has-property-descriptors/-/has-property-descriptors-1.0.2.tgz", + "integrity": "sha512-55JNKuIW+vq4Ke1BjOTjM2YctQIvCT7GFzHwmfZPGo5wnrgkid0YQtnAleFSqumZm4az3n2BS+erby5ipJdgrg==", "dev": true, + "license": "MIT", "dependencies": { - "expand-tilde": "^2.0.2", - "homedir-polyfill": "^1.0.1", - "ini": "^1.3.4", - "is-windows": "^1.0.1", - "which": "^1.2.14" + "es-define-property": "^1.0.0" }, - "engines": { - "node": ">=0.10.0" + "funding": { + "url": "https://github.com/sponsors/ljharb" } }, - "node_modules/globals": { - "version": "13.7.0", - "resolved": "https://registry.npmjs.org/globals/-/globals-13.7.0.tgz", - "integrity": "sha512-Aipsz6ZKRxa/xQkZhNg0qIWXT6x6rD46f6x/PCnBomlttdIyAPak4YD9jTmKpZ72uROSMU87qJtcgpgHaVchiA==", + "node_modules/has-proto": { + "version": "1.2.0", + "resolved": "https://registry.npmjs.org/has-proto/-/has-proto-1.2.0.tgz", + "integrity": "sha512-KIL7eQPfHQRC8+XluaIw7BHUwwqL19bQn4hzNgdr+1wXoU0KKj6rufu47lhY7KbJR2C6T6+PfyN0Ea7wkSS+qQ==", "dev": true, + "license": "MIT", "dependencies": { - "type-fest": "^0.20.2" + "dunder-proto": "^1.0.0" }, "engines": { - "node": ">=8" + "node": ">= 0.4" }, "funding": { - "url": "https://github.com/sponsors/sindresorhus" + "url": "https://github.com/sponsors/ljharb" } }, - "node_modules/globals/node_modules/type-fest": { - "version": "0.20.2", - "resolved": "https://registry.npmjs.org/type-fest/-/type-fest-0.20.2.tgz", - "integrity": "sha512-Ne+eE4r0/iWnpAxD852z3A+N0Bt5RN//NjJwRd2VFHEmrywxf5vsZlh4R6lixl6B+wz/8d+maTSAkN1FIkI3LQ==", + "node_modules/has-symbols": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/has-symbols/-/has-symbols-1.1.0.tgz", + "integrity": "sha512-1cDNdwJ2Jaohmb3sg4OmKaMBwuC48sYni5HUw2DvsC8LjGTLK9h+eb1X6RyuOHe4hT0ULCW68iomhjUoKUqlPQ==", "dev": true, + "license": "MIT", "engines": { - "node": ">=10" + "node": ">= 0.4" }, "funding": { - "url": "https://github.com/sponsors/sindresorhus" + "url": "https://github.com/sponsors/ljharb" } }, - "node_modules/globby": { - "version": "6.1.0", - "resolved": "https://registry.npmjs.org/globby/-/globby-6.1.0.tgz", - "integrity": "sha1-9abXDoOV4hyFj7BInWTfAkJNUGw=", + "node_modules/has-tostringtag": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/has-tostringtag/-/has-tostringtag-1.0.2.tgz", + "integrity": "sha512-NqADB8VjPFLM2V0VvHUewwwsw0ZWBaIdgo+ieHtK3hasLz4qeCRjYcqfB6AQrBggRKppKF8L52/VqdVsO47Dlw==", "dev": true, + "license": "MIT", "dependencies": { - "array-union": "^1.0.1", - "glob": "^7.0.3", - "object-assign": "^4.0.1", - "pify": "^2.0.0", - "pinkie-promise": "^2.0.0" + "has-symbols": "^1.0.3" }, "engines": { - "node": ">=0.10.0" + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" } }, - "node_modules/glogg": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/glogg/-/glogg-1.0.2.tgz", - "integrity": "sha512-5mwUoSuBk44Y4EshyiqcH95ZntbDdTQqA3QYSrxmzj28Ai0vXBGMH1ApSANH14j2sIRtqCEyg6PfsuP7ElOEDA==", + "node_modules/hasown": { + "version": "2.0.2", + "resolved": "https://registry.npmjs.org/hasown/-/hasown-2.0.2.tgz", + "integrity": "sha512-0hJU9SCPvmMzIBdZFqNPXWa6dqh7WdH0cII9y+CyS8rG3nL48Bclra9HmKhVVUHyPWNH5Y7xDwAB7bfgSjkUMQ==", "dev": true, + "license": "MIT", "dependencies": { - "sparkles": "^1.0.0" + "function-bind": "^1.1.2" }, "engines": { - "node": ">= 0.10" + "node": ">= 0.4" } }, - "node_modules/graceful-fs": { - "version": "4.2.3", - "resolved": "https://registry.npmjs.org/graceful-fs/-/graceful-fs-4.2.3.tgz", - "integrity": "sha512-a30VEBm4PEdx1dRB7MFK7BejejvCvBronbLjht+sHuGYj8PHs7M/5Z+rt5lw551vZ7yfTCj4Vuyy3mSJytDWRQ==", - "dev": true - }, - "node_modules/grapheme-splitter": { - "version": "1.0.4", - "resolved": "https://registry.npmjs.org/grapheme-splitter/-/grapheme-splitter-1.0.4.tgz", - "integrity": "sha512-bzh50DW9kTPM00T8y4o8vQg89Di9oLJVLW/KaOGIXJWP/iqCN6WKYkbNOF04vFLJhwcpYUh9ydh/+5vpOqV4YQ==", - "dev": true - }, - "node_modules/growl": { - "version": "1.10.5", - "resolved": "https://registry.npmjs.org/growl/-/growl-1.10.5.tgz", - "integrity": "sha512-qBr4OuELkhPenW6goKVXiv47US3clb3/IbuWF9KNKEijAy9oeHxU9IgzjvJhHkUzhaj7rOUD7+YGWqUjLp5oSA==", + "node_modules/he": { + "version": "1.2.0", + "resolved": "https://registry.npmjs.org/he/-/he-1.2.0.tgz", + "integrity": "sha512-F/1DnUGPopORZi0ni+CvrCgHQ5FyEAHRLSApuYWMmrbSwoN2Mn/7k+Gl38gJnR7yyDZk6WLXwiGod1JOWNDKGw==", "dev": true, - "engines": { - "node": ">=4.x" + "license": "MIT", + "bin": { + "he": "bin/he" } }, - "node_modules/gulp": { - "version": "4.0.2", - "resolved": "https://registry.npmjs.org/gulp/-/gulp-4.0.2.tgz", - "integrity": "sha512-dvEs27SCZt2ibF29xYgmnwwCYZxdxhQ/+LFWlbAW8y7jt68L/65402Lz3+CKy0Ov4rOs+NERmDq7YlZaDqUIfA==", + "node_modules/hosted-git-info": { + "version": "2.8.9", + "resolved": "https://registry.npmjs.org/hosted-git-info/-/hosted-git-info-2.8.9.tgz", + "integrity": "sha512-mxIDAb9Lsm6DoOJ7xH+5+X4y1LU/4Hi50L9C5sIswK3JzULS4bwk1FvjdBgvYR4bzT4tuUQiC15FE2f5HbLvYw==", "dev": true, + "license": "ISC" + }, + "node_modules/html-encoding-sniffer": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/html-encoding-sniffer/-/html-encoding-sniffer-4.0.0.tgz", + "integrity": "sha512-Y22oTqIU4uuPgEemfz7NDJz6OeKf12Lsu+QC+s3BVpda64lTiMYCyGwg5ki4vFxkMwQdeZDl2adZoqUgdFuTgQ==", + "dev": true, + "license": "MIT", "dependencies": { - "glob-watcher": "^5.0.3", - "gulp-cli": "^2.2.0", - "undertaker": "^1.2.1", - "vinyl-fs": "^3.0.0" - }, - "bin": { - "gulp": "bin/gulp.js" + "whatwg-encoding": "^3.1.1" }, "engines": { - "node": ">= 0.10" + "node": ">=18" } }, - "node_modules/gulp-clean-css": { - "version": "4.3.0", - "resolved": "https://registry.npmjs.org/gulp-clean-css/-/gulp-clean-css-4.3.0.tgz", - "integrity": "sha512-mGyeT3qqFXTy61j0zOIciS4MkYziF2U594t2Vs9rUnpkEHqfu6aDITMp8xOvZcvdX61Uz3y1mVERRYmjzQF5fg==", + "node_modules/htmlparser2": { + "version": "10.0.0", + "resolved": "https://registry.npmjs.org/htmlparser2/-/htmlparser2-10.0.0.tgz", + "integrity": "sha512-TwAZM+zE5Tq3lrEHvOlvwgj1XLWQCtaaibSN11Q+gGBAS7Y1uZSWwXXRe4iF6OXnaq1riyQAPFOBtYc77Mxq0g==", "dev": true, + "funding": [ + "https://github.com/fb55/htmlparser2?sponsor=1", + { + "type": "github", + "url": "https://github.com/sponsors/fb55" + } + ], + "license": "MIT", "dependencies": { - "clean-css": "4.2.3", - "plugin-error": "1.0.1", - "through2": "3.0.1", - "vinyl-sourcemaps-apply": "0.2.1" + "domelementtype": "^2.3.0", + "domhandler": "^5.0.3", + "domutils": "^3.2.1", + "entities": "^6.0.0" } }, - "node_modules/gulp-clean-css/node_modules/through2": { - "version": "3.0.1", - "resolved": "https://registry.npmjs.org/through2/-/through2-3.0.1.tgz", - "integrity": "sha512-M96dvTalPT3YbYLaKaCuwu+j06D/8Jfib0o/PxbVt6Amhv3dUAtW6rTV1jPgJSBG83I/e04Y6xkVdVhSRhi0ww==", + "node_modules/http-proxy-agent": { + "version": "5.0.0", + "resolved": "https://registry.npmjs.org/http-proxy-agent/-/http-proxy-agent-5.0.0.tgz", + "integrity": "sha512-n2hY8YdoRE1i7r6M0w9DIw5GgZN0G25P8zLCRQ8rjXtTU3vsNFBI/vWK/UIeE6g5MUUz6avwAPXmL6Fy9D/90w==", "dev": true, + "license": "MIT", "dependencies": { - "readable-stream": "2 || 3" + "@tootallnate/once": "2", + "agent-base": "6", + "debug": "4" + }, + "engines": { + "node": ">= 6" } }, - "node_modules/gulp-concat": { - "version": "2.6.1", - "resolved": "https://registry.npmjs.org/gulp-concat/-/gulp-concat-2.6.1.tgz", - "integrity": "sha1-Yz0WyV2IUEYorQJmVmPO5aR5M1M=", + "node_modules/https-proxy-agent": { + "version": "5.0.1", + "resolved": "https://registry.npmjs.org/https-proxy-agent/-/https-proxy-agent-5.0.1.tgz", + "integrity": "sha512-dFcAjpTQFgoLMzC2VwU+C/CbS7uRL0lWmxDITmqm7C+7F0Odmj6s9l6alZc6AELXhrnggM2CeWSXHGOdX2YtwA==", "dev": true, + "license": "MIT", "dependencies": { - "concat-with-sourcemaps": "^1.0.0", - "through2": "^2.0.0", - "vinyl": "^2.0.0" + "agent-base": "6", + "debug": "4" }, "engines": { - "node": ">= 0.10" + "node": ">= 6" } }, - "node_modules/gulp-header": { - "version": "2.0.7", - "resolved": "https://registry.npmjs.org/gulp-header/-/gulp-header-2.0.7.tgz", - "integrity": "sha512-qppGkYGQZnt/mRJiiR5wYZIUwNUn47Xpg4+6tHYDVeAW5IDLbHBQwbw7axfMLWGE+gKQpB+yXLeslHMw1/Haog==", + "node_modules/hyperlinker": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/hyperlinker/-/hyperlinker-1.0.0.tgz", + "integrity": "sha512-Ty8UblRWFEcfSuIaajM34LdPXIhbs1ajEX/BBPv24J+enSVaEVY63xQ6lTO9VRYS5LAoghIG0IDJ+p+IPzKUQQ==", "dev": true, - "dependencies": { - "concat-with-sourcemaps": "^1.1.0", - "lodash.template": "^4.4.0", - "map-stream": "0.0.7", - "through2": "^2.0.0" + "license": "MIT", + "engines": { + "node": ">=4" } }, - "node_modules/gulp-jsdoc3": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/gulp-jsdoc3/-/gulp-jsdoc3-3.0.0.tgz", - "integrity": "sha512-rE2jAwCPA8XFi9g4V3Z3LPhZNjxuMTIYQVMjdqZAQpRfJITLVaUK3xfmiiNTMc7j+fT7pL8Q5yj7ZPRdwCJWNg==", + "node_modules/iconv-lite": { + "version": "0.6.3", + "resolved": "https://registry.npmjs.org/iconv-lite/-/iconv-lite-0.6.3.tgz", + "integrity": "sha512-4fCk79wshMdzMp2rH06qWrJE4iolqLhCUH+OiuIgU++RB0+94NlDL81atO7GX55uUKueo0txHNtvEyI6D7WdMw==", "dev": true, + "license": "MIT", "dependencies": { - "ansi-colors": "^4.1.1", - "beeper": "^2.0.0", - "debug": "^4.1.1", - "fancy-log": "^1.3.3", - "ink-docstrap": "^1.3.2", - "jsdoc": "^3.6.3", - "map-stream": "0.0.7", - "tmp": "0.1.0" + "safer-buffer": ">= 2.1.2 < 3.0.0" + }, + "engines": { + "node": ">=0.10.0" } }, - "node_modules/gulp-jsdoc3/node_modules/ansi-colors": { - "version": "4.1.1", - "resolved": "https://registry.npmjs.org/ansi-colors/-/ansi-colors-4.1.1.tgz", - "integrity": "sha512-JoX0apGbHaUJBNl6yF+p6JAFYZ666/hhCGKN5t9QFjbJQKUU/g8MNbFDbvfrgKXvI1QpZplPOnwIo99lX/AAmA==", + "node_modules/ignore": { + "version": "5.3.2", + "resolved": "https://registry.npmjs.org/ignore/-/ignore-5.3.2.tgz", + "integrity": "sha512-hsBTNUqQTDwkWtcdYI2i06Y/nUBEsNEDJKjWdigLvegy8kDuJAS8uRlpkkcQpyEXL0Z/pjDy5HBmMjRCJ2gq+g==", "dev": true, + "license": "MIT", "engines": { - "node": ">=6" + "node": ">= 4" } }, - "node_modules/gulp-jsdoc3/node_modules/debug": { - "version": "4.1.1", - "resolved": "https://registry.npmjs.org/debug/-/debug-4.1.1.tgz", - "integrity": "sha512-pYAIzeRo8J6KPEaJ0VWOh5Pzkbw/RetuzehGM7QRRX5he4fPHx2rdKMB256ehJCkX+XRQm16eZLqLNS8RSZXZw==", - "deprecated": "Debug versions >=3.2.0 <3.2.7 || >=4 <4.3.1 have a low-severity ReDos regression when used in a Node.js environment. It is recommended you upgrade to 3.2.7 or 4.3.1. (https://github.com/visionmedia/debug/issues/797)", + "node_modules/import-fresh": { + "version": "3.3.1", + "resolved": "https://registry.npmjs.org/import-fresh/-/import-fresh-3.3.1.tgz", + "integrity": "sha512-TR3KfrTZTYLPB6jUjfx6MF9WcWrHL9su5TObK4ZkYgBdWKPOFoSoQIdEuTuR82pmtxH2spWG9h6etwfr1pLBqQ==", "dev": true, + "license": "MIT", "dependencies": { - "ms": "^2.1.1" + "parent-module": "^1.0.0", + "resolve-from": "^4.0.0" + }, + "engines": { + "node": ">=6" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" } }, - "node_modules/gulp-jsdoc3/node_modules/ms": { - "version": "2.1.2", - "resolved": "https://registry.npmjs.org/ms/-/ms-2.1.2.tgz", - "integrity": "sha512-sGkPx+VjMtmA6MX27oA4FBFELFCZZ4S4XqeGOXCv68tT+jb3vk/RyaKWP0PTKyWtmLSM0b+adUTEvbs1PEaH2w==", - "dev": true - }, - "node_modules/gulp-rename": { - "version": "1.4.0", - "resolved": "https://registry.npmjs.org/gulp-rename/-/gulp-rename-1.4.0.tgz", - "integrity": "sha512-swzbIGb/arEoFK89tPY58vg3Ok1bw+d35PfUNwWqdo7KM4jkmuGA78JiDNqR+JeZFaeeHnRg9N7aihX3YPmsyg==", + "node_modules/imurmurhash": { + "version": "0.1.4", + "resolved": "https://registry.npmjs.org/imurmurhash/-/imurmurhash-0.1.4.tgz", + "integrity": "sha512-JmXMZ6wuvDmLiHEml9ykzqO6lwFbof0GG4IkcGaENdCRDDmMVnny7s5HsIgHCbaq0w2MyPhDqkhTUgS2LU2PHA==", "dev": true, + "license": "MIT", "engines": { - "node": ">=4" + "node": ">=0.8.19" } }, - "node_modules/gulp-replace": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/gulp-replace/-/gulp-replace-1.0.0.tgz", - "integrity": "sha512-lgdmrFSI1SdhNMXZQbrC75MOl1UjYWlOWNbNRnz+F/KHmgxt3l6XstBoAYIdadwETFyG/6i+vWUSCawdC3pqOw==", + "node_modules/indent-string": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/indent-string/-/indent-string-4.0.0.tgz", + "integrity": "sha512-EdDDZu4A2OyIK7Lr/2zG+w5jmbuk1DVBnEwREQvBzspBJkCEbRa8GxU1lghYcaGJCnRWibjDXlq779X1/y5xwg==", "dev": true, - "dependencies": { - "istextorbinary": "2.2.1", - "readable-stream": "^2.0.1", - "replacestream": "^4.0.0" - }, + "license": "MIT", "engines": { - "node": ">=0.10" + "node": ">=8" } }, - "node_modules/gulp-terser": { - "version": "2.1.0", - "resolved": "https://registry.npmjs.org/gulp-terser/-/gulp-terser-2.1.0.tgz", - "integrity": "sha512-lQ3+JUdHDVISAlUIUSZ/G9Dz/rBQHxOiYDQ70IVWFQeh4b33TC1MCIU+K18w07PS3rq/CVc34aQO4SUbdaNMPQ==", + "node_modules/inflight": { + "version": "1.0.6", + "resolved": "https://registry.npmjs.org/inflight/-/inflight-1.0.6.tgz", + "integrity": "sha512-k92I/b08q4wvFscXCLvqfsHCrjrF7yiXsQuIVvVE7N82W3+aqpzuUdBbfhWcy/FZR3/4IgflMgKLOsvPDrGCJA==", + "deprecated": "This module is not supported, and leaks memory. Do not use it. Check out lru-cache if you want a good and tested way to coalesce async requests by a key value, which is much more comprehensive and powerful.", "dev": true, + "license": "ISC", "dependencies": { - "plugin-error": "^1.0.1", - "terser": "^5.9.0", - "through2": "^4.0.2", - "vinyl-sourcemaps-apply": "^0.2.1" - }, + "once": "^1.3.0", + "wrappy": "1" + } + }, + "node_modules/inherits": { + "version": "2.0.4", + "resolved": "https://registry.npmjs.org/inherits/-/inherits-2.0.4.tgz", + "integrity": "sha512-k/vGaX4/Yla3WzyMCvTQOXYeIHvqOKtnqBduzTHpzpQZzAskKMhZ2K+EnBiSM9zGSoIFeMpXKxa4dYeZIQqewQ==", + "dev": true, + "license": "ISC" + }, + "node_modules/ini": { + "version": "5.0.0", + "resolved": "https://registry.npmjs.org/ini/-/ini-5.0.0.tgz", + "integrity": "sha512-+N0ngpO3e7cRUWOJAS7qw0IZIVc6XPrW4MlFBdD066F2L4k1L6ker3hLqSq7iXxU5tgS4WGkIUElWn5vogAEnw==", + "dev": true, + "license": "ISC", "engines": { - "node": ">=10" + "node": "^18.17.0 || >=20.5.0" } }, - "node_modules/gulp-terser/node_modules/readable-stream": { - "version": "3.6.0", - "resolved": "https://registry.npmjs.org/readable-stream/-/readable-stream-3.6.0.tgz", - "integrity": "sha512-BViHy7LKeTz4oNnkcLJ+lVSL6vpiFeX6/d3oSH8zCW7UxP2onchk+vTGB143xuFjHS3deTgkKoXXymXqymiIdA==", + "node_modules/internal-slot": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/internal-slot/-/internal-slot-1.1.0.tgz", + "integrity": "sha512-4gd7VpWNQNB4UKKCFFVcp1AVv+FMOgs9NKzjHKusc8jTMhd5eL1NqQqOpE0KzMds804/yHlglp3uxgluOqAPLw==", "dev": true, + "license": "MIT", "dependencies": { - "inherits": "^2.0.3", - "string_decoder": "^1.1.1", - "util-deprecate": "^1.0.1" + "es-errors": "^1.3.0", + "hasown": "^2.0.2", + "side-channel": "^1.1.0" }, "engines": { - "node": ">= 6" + "node": ">= 0.4" } }, - "node_modules/gulp-terser/node_modules/through2": { - "version": "4.0.2", - "resolved": "https://registry.npmjs.org/through2/-/through2-4.0.2.tgz", - "integrity": "sha512-iOqSav00cVxEEICeD7TjLB1sueEL+81Wpzp2bY17uZjZN0pWZPuo4suZ/61VujxmqSGFfgOcNuTZ85QJwNZQpw==", + "node_modules/is-array-buffer": { + "version": "3.0.5", + "resolved": "https://registry.npmjs.org/is-array-buffer/-/is-array-buffer-3.0.5.tgz", + "integrity": "sha512-DDfANUiiG2wC1qawP66qlTugJeL5HyzMpfr8lLK+jMQirGzNod0B12cFB/9q838Ru27sBwfw78/rdoU7RERz6A==", "dev": true, + "license": "MIT", "dependencies": { - "readable-stream": "3" - } - }, - "node_modules/gulp/node_modules/gulp-cli": { - "version": "2.2.0", - "resolved": "https://registry.npmjs.org/gulp-cli/-/gulp-cli-2.2.0.tgz", - "integrity": "sha512-rGs3bVYHdyJpLqR0TUBnlcZ1O5O++Zs4bA0ajm+zr3WFCfiSLjGwoCBqFs18wzN+ZxahT9DkOK5nDf26iDsWjA==", - "dev": true, - "dependencies": { - "ansi-colors": "^1.0.1", - "archy": "^1.0.0", - "array-sort": "^1.0.0", - "color-support": "^1.1.3", - "concat-stream": "^1.6.0", - "copy-props": "^2.0.1", - "fancy-log": "^1.3.2", - "gulplog": "^1.0.0", - "interpret": "^1.1.0", - "isobject": "^3.0.1", - "liftoff": "^3.1.0", - "matchdep": "^2.0.0", - "mute-stdout": "^1.0.0", - "pretty-hrtime": "^1.0.0", - "replace-homedir": "^1.0.0", - "semver-greatest-satisfied-range": "^1.1.0", - "v8flags": "^3.0.1", - "yargs": "^7.1.0" - }, - "bin": { - "gulp": "bin/gulp.js" + "call-bind": "^1.0.8", + "call-bound": "^1.0.3", + "get-intrinsic": "^1.2.6" }, "engines": { - "node": ">= 0.10" + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" } }, - "node_modules/gulp/node_modules/yargs": { - "version": "7.1.0", - "resolved": "https://registry.npmjs.org/yargs/-/yargs-7.1.0.tgz", - "integrity": "sha1-a6MY6xaWFyf10oT46gA+jWFU0Mg=", + "node_modules/is-arrayish": { + "version": "0.2.1", + "resolved": "https://registry.npmjs.org/is-arrayish/-/is-arrayish-0.2.1.tgz", + "integrity": "sha512-zz06S8t0ozoDXMG+ube26zeCTNXcKIPJZJi8hBrF4idCLms4CG9QtK7qBl1boi5ODzFpjswb5JPmHCbMpjaYzg==", "dev": true, - "dependencies": { - "camelcase": "^3.0.0", - "cliui": "^3.2.0", - "decamelize": "^1.1.1", - "get-caller-file": "^1.0.1", - "os-locale": "^1.4.0", - "read-pkg-up": "^1.0.1", - "require-directory": "^2.1.1", - "require-main-filename": "^1.0.1", - "set-blocking": "^2.0.0", - "string-width": "^1.0.2", - "which-module": "^1.0.0", - "y18n": "^3.2.1", - "yargs-parser": "^5.0.0" - } + "license": "MIT" }, - "node_modules/gulplog": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/gulplog/-/gulplog-1.0.0.tgz", - "integrity": "sha1-4oxNRdBey77YGDY86PnFkmIp/+U=", + "node_modules/is-async-function": { + "version": "2.1.1", + "resolved": "https://registry.npmjs.org/is-async-function/-/is-async-function-2.1.1.tgz", + "integrity": "sha512-9dgM/cZBnNvjzaMYHVoxxfPj2QXt22Ev7SuuPrs+xav0ukGB0S6d4ydZdEiM48kLx5kDV+QBPrpVnFyefL8kkQ==", "dev": true, + "license": "MIT", "dependencies": { - "glogg": "^1.0.0" + "async-function": "^1.0.0", + "call-bound": "^1.0.3", + "get-proto": "^1.0.1", + "has-tostringtag": "^1.0.2", + "safe-regex-test": "^1.1.0" }, "engines": { - "node": ">= 0.10" + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" } }, - "node_modules/gzip-size": { - "version": "5.1.1", - "resolved": "https://registry.npmjs.org/gzip-size/-/gzip-size-5.1.1.tgz", - "integrity": "sha512-FNHi6mmoHvs1mxZAds4PpdCS6QG8B4C1krxJsMutgxl5t3+GlRTzzI3NEkifXx2pVsOvJdOGSmIgDhQ55FwdPA==", + "node_modules/is-bigint": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/is-bigint/-/is-bigint-1.1.0.tgz", + "integrity": "sha512-n4ZT37wG78iz03xPRKJrHTdZbe3IicyucEtdRsV5yglwc3GyUfbAfpSeD0FJ41NbUNSt5wbhqfp1fS+BgnvDFQ==", "dev": true, + "license": "MIT", "dependencies": { - "duplexer": "^0.1.1", - "pify": "^4.0.1" + "has-bigints": "^1.0.2" }, "engines": { - "node": ">=6" + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" } }, - "node_modules/gzip-size/node_modules/pify": { - "version": "4.0.1", - "resolved": "https://registry.npmjs.org/pify/-/pify-4.0.1.tgz", - "integrity": "sha512-uB80kBFb/tfd68bVleG9T5GGsGPjJrLAUpR5PZIrhBnIaRTQRjqdJSsIKkOP6OAIFbj7GOrcudc5pNjZ+geV2g==", + "node_modules/is-binary-path": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/is-binary-path/-/is-binary-path-2.1.0.tgz", + "integrity": "sha512-ZMERYes6pDydyuGidse7OsHxtbI7WVeUEozgR/g7rd0xUimYNlvZRE/K2MgZTjWy725IfelLeVcEM97mmtRGXw==", "dev": true, + "license": "MIT", + "dependencies": { + "binary-extensions": "^2.0.0" + }, "engines": { - "node": ">=6" + "node": ">=8" } }, - "node_modules/has": { - "version": "1.0.3", - "resolved": "https://registry.npmjs.org/has/-/has-1.0.3.tgz", - "integrity": "sha512-f2dvO0VU6Oej7RkWJGrehjbzMAjFp5/VKPp5tTpWIV4JHHZK1/BxbFRtf/siA2SWTe09caDmVtYYzWEIbBS4zw==", + "node_modules/is-boolean-object": { + "version": "1.2.2", + "resolved": "https://registry.npmjs.org/is-boolean-object/-/is-boolean-object-1.2.2.tgz", + "integrity": "sha512-wa56o2/ElJMYqjCjGkXri7it5FbebW5usLw/nPmCMs5DeZ7eziSYZhSmPRn0txqeW4LnAmQQU7FgqLpsEFKM4A==", "dev": true, + "license": "MIT", "dependencies": { - "function-bind": "^1.1.1" + "call-bound": "^1.0.3", + "has-tostringtag": "^1.0.2" }, "engines": { - "node": ">= 0.4.0" - } - }, - "node_modules/has-bigints": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/has-bigints/-/has-bigints-1.0.1.tgz", - "integrity": "sha512-LSBS2LjbNBTf6287JEbEzvJgftkF5qFkmCo9hDRpAzKhUOlJ+hx8dd4USs00SgsUNwc4617J9ki5YtEClM2ffA==", - "dev": true, + "node": ">= 0.4" + }, "funding": { "url": "https://github.com/sponsors/ljharb" } }, - "node_modules/has-flag": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-3.0.0.tgz", - "integrity": "sha1-tdRU3CGZriJWmfNGfloH87lVuv0=", - "dev": true, - "engines": { - "node": ">=4" - } - }, - "node_modules/has-symbols": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/has-symbols/-/has-symbols-1.0.0.tgz", - "integrity": "sha1-uhqPGvKg/DllD1yFA2dwQSIGO0Q=", + "node_modules/is-callable": { + "version": "1.2.7", + "resolved": "https://registry.npmjs.org/is-callable/-/is-callable-1.2.7.tgz", + "integrity": "sha512-1BC0BVFhS/p0qtw6enp8e+8OD0UrK0oFLztSjNzhcKA3WDuJxxAPXzPuPtKkjEY9UUoEWlX/8fgKeu2S8i9JTA==", "dev": true, + "license": "MIT", "engines": { "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" } }, - "node_modules/has-value": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/has-value/-/has-value-1.0.0.tgz", - "integrity": "sha1-GLKB2lhbHFxR3vJMkw7SmgvmsXc=", + "node_modules/is-core-module": { + "version": "2.16.1", + "resolved": "https://registry.npmjs.org/is-core-module/-/is-core-module-2.16.1.tgz", + "integrity": "sha512-UfoeMA6fIJ8wTYFEUjelnaGI67v6+N7qXJEvQuIGa99l4xsCruSYOVSQ0uPANn4dAzm8lkYPaKLrrijLq7x23w==", "dev": true, + "license": "MIT", "dependencies": { - "get-value": "^2.0.6", - "has-values": "^1.0.0", - "isobject": "^3.0.0" + "hasown": "^2.0.2" }, "engines": { - "node": ">=0.10.0" + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" } }, - "node_modules/has-values": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/has-values/-/has-values-1.0.0.tgz", - "integrity": "sha1-lbC2P+whRmGab+V/51Yo1aOe/k8=", + "node_modules/is-data-view": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/is-data-view/-/is-data-view-1.0.2.tgz", + "integrity": "sha512-RKtWF8pGmS87i2D6gqQu/l7EYRlVdfzemCJN/P3UOs//x1QE7mfhvzHIApBTRf7axvT6DMGwSwBXYCT0nfB9xw==", "dev": true, + "license": "MIT", "dependencies": { - "is-number": "^3.0.0", - "kind-of": "^4.0.0" + "call-bound": "^1.0.2", + "get-intrinsic": "^1.2.6", + "is-typed-array": "^1.1.13" }, "engines": { - "node": ">=0.10.0" + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" } }, - "node_modules/has-values/node_modules/kind-of": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-4.0.0.tgz", - "integrity": "sha1-IIE989cSkosgc3hpGkUGb65y3Vc=", + "node_modules/is-date-object": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/is-date-object/-/is-date-object-1.1.0.tgz", + "integrity": "sha512-PwwhEakHVKTdRNVOw+/Gyh0+MzlCl4R6qKvkhuvLtPMggI1WAHt9sOwZxQLSGpUaDnrdyDsomoRgNnCfKNSXXg==", "dev": true, + "license": "MIT", "dependencies": { - "is-buffer": "^1.1.5" + "call-bound": "^1.0.2", + "has-tostringtag": "^1.0.2" }, "engines": { - "node": ">=0.10.0" + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" } }, - "node_modules/hasurl": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/hasurl/-/hasurl-1.0.0.tgz", - "integrity": "sha512-43ypUd3DbwyCT01UYpA99AEZxZ4aKtRxWGBHEIbjcOsUghd9YUON0C+JF6isNjaiwC/UF5neaUudy6JS9jZPZQ==", + "node_modules/is-directory": { + "version": "0.3.1", + "resolved": "https://registry.npmjs.org/is-directory/-/is-directory-0.3.1.tgz", + "integrity": "sha512-yVChGzahRFvbkscn2MlwGismPO12i9+znNruC5gVEntG3qu0xQMzsGg/JFbrsqDOHtHFPci+V5aP5T9I+yeKqw==", "dev": true, + "license": "MIT", "engines": { - "node": ">= 4" - } - }, - "node_modules/he": { - "version": "1.2.0", - "resolved": "https://registry.npmjs.org/he/-/he-1.2.0.tgz", - "integrity": "sha512-F/1DnUGPopORZi0ni+CvrCgHQ5FyEAHRLSApuYWMmrbSwoN2Mn/7k+Gl38gJnR7yyDZk6WLXwiGod1JOWNDKGw==", - "dev": true, - "bin": { - "he": "bin/he" + "node": ">=0.10.0" } }, - "node_modules/homedir-polyfill": { - "version": "1.0.3", - "resolved": "https://registry.npmjs.org/homedir-polyfill/-/homedir-polyfill-1.0.3.tgz", - "integrity": "sha512-eSmmWE5bZTK2Nou4g0AI3zZ9rswp7GRKoKXS1BLUkvPviOqs4YTN1djQIqrXy9k5gEtdLPy86JjRwsNM9tnDcA==", + "node_modules/is-extglob": { + "version": "2.1.1", + "resolved": "https://registry.npmjs.org/is-extglob/-/is-extglob-2.1.1.tgz", + "integrity": "sha512-SbKbANkN603Vi4jEZv49LeVJMn4yGwsbzZworEoyEiutsN3nJYdbO36zfhGJ6QEDpOZIFkDtnq5JRxmvl3jsoQ==", "dev": true, - "dependencies": { - "parse-passwd": "^1.0.0" - }, + "license": "MIT", "engines": { "node": ">=0.10.0" } }, - "node_modules/hosted-git-info": { - "version": "2.8.9", - "resolved": "https://registry.npmjs.org/hosted-git-info/-/hosted-git-info-2.8.9.tgz", - "integrity": "sha512-mxIDAb9Lsm6DoOJ7xH+5+X4y1LU/4Hi50L9C5sIswK3JzULS4bwk1FvjdBgvYR4bzT4tuUQiC15FE2f5HbLvYw==", - "dev": true - }, - "node_modules/html-encoding-sniffer": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/html-encoding-sniffer/-/html-encoding-sniffer-2.0.1.tgz", - "integrity": "sha512-D5JbOMBIR/TVZkubHT+OyT2705QvogUW4IBn6nHd756OwieSF9aDYFj4dv6HHEVGYbHaLETa3WggZYWWMyy3ZQ==", + "node_modules/is-finalizationregistry": { + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/is-finalizationregistry/-/is-finalizationregistry-1.1.1.tgz", + "integrity": "sha512-1pC6N8qWJbWoPtEjgcL2xyhQOP491EQjeUo3qTKcmV8YSDDJrOepfG8pcC7h/QgnQHYSv0mJ3Z/ZWxmatVrysg==", "dev": true, + "license": "MIT", "dependencies": { - "whatwg-encoding": "^1.0.5" + "call-bound": "^1.0.3" }, "engines": { - "node": ">=10" + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" } }, - "node_modules/htmlparser2": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/htmlparser2/-/htmlparser2-4.0.0.tgz", - "integrity": "sha512-cChwXn5Vam57fyXajDtPXL1wTYc8JtLbr2TN76FYu05itVVVealxLowe2B3IEznJG4p9HAYn/0tJaRlGuEglFQ==", + "node_modules/is-fullwidth-code-point": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/is-fullwidth-code-point/-/is-fullwidth-code-point-3.0.0.tgz", + "integrity": "sha512-zymm5+u+sCsSWyD9qNaejV3DFvhCKclKdizYaJUuHA83RLjb7nSuGnddCHGv0hk+KY7BMAlsWeK4Ueg6EV6XQg==", "dev": true, - "dependencies": { - "domelementtype": "^2.0.1", - "domhandler": "^3.0.0", - "domutils": "^2.0.0", - "entities": "^2.0.0" + "license": "MIT", + "engines": { + "node": ">=8" } }, - "node_modules/http-proxy": { - "version": "1.18.1", - "resolved": "https://registry.npmjs.org/http-proxy/-/http-proxy-1.18.1.tgz", - "integrity": "sha512-7mz/721AbnJwIVbnaSv1Cz3Am0ZLT/UBwkC92VlxhXv/k/BBQfM2fXElQNC27BVGr0uwUpplYPQM9LnaBMR5NQ==", + "node_modules/is-generator-function": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/is-generator-function/-/is-generator-function-1.1.0.tgz", + "integrity": "sha512-nPUB5km40q9e8UfN/Zc24eLlzdSf9OfKByBw9CIdw4H1giPMeA0OIJvbchsCu4npfI2QcMVBsGEBHKZ7wLTWmQ==", "dev": true, + "license": "MIT", "dependencies": { - "eventemitter3": "^4.0.0", - "follow-redirects": "^1.0.0", - "requires-port": "^1.0.0" + "call-bound": "^1.0.3", + "get-proto": "^1.0.0", + "has-tostringtag": "^1.0.2", + "safe-regex-test": "^1.1.0" }, "engines": { - "node": ">=8.0.0" + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" } }, - "node_modules/http-proxy-agent": { - "version": "2.1.0", - "resolved": "https://registry.npmjs.org/http-proxy-agent/-/http-proxy-agent-2.1.0.tgz", - "integrity": "sha512-qwHbBLV7WviBl0rQsOzH6o5lwyOIvwp/BdFnvVxXORldu5TmjFfjzBcWUWS5kWAZhmv+JtiDhSuQCp4sBfbIgg==", + "node_modules/is-glob": { + "version": "4.0.3", + "resolved": "https://registry.npmjs.org/is-glob/-/is-glob-4.0.3.tgz", + "integrity": "sha512-xelSayHH36ZgE7ZWhli7pW34hNbNl8Ojv5KVmkJD4hBdD3th8Tfk9vYasLM+mXWOZhFkgZfxhLSnrwRr4elSSg==", "dev": true, + "license": "MIT", "dependencies": { - "agent-base": "4", - "debug": "3.1.0" + "is-extglob": "^2.1.1" }, "engines": { - "node": ">= 4.5.0" + "node": ">=0.10.0" } }, - "node_modules/http-proxy-agent/node_modules/debug": { - "version": "3.1.0", - "resolved": "https://registry.npmjs.org/debug/-/debug-3.1.0.tgz", - "integrity": "sha512-OX8XqP7/1a9cqkxYw2yXss15f26NKWBpDXQd0/uK/KPqdQhxbPa994hnzjcE2VqQpDslf55723cKPUOGSmMY3g==", + "node_modules/is-map": { + "version": "2.0.3", + "resolved": "https://registry.npmjs.org/is-map/-/is-map-2.0.3.tgz", + "integrity": "sha512-1Qed0/Hr2m+YqxnM09CjA2d/i6YZNfF6R2oRAOj36eUdS6qIV/huPJNSEpKbupewFs+ZsJlxsjjPbc0/afW6Lw==", "dev": true, - "dependencies": { - "ms": "2.0.0" + "license": "MIT", + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" } }, - "node_modules/http-server": { - "version": "0.12.3", - "resolved": "https://registry.npmjs.org/http-server/-/http-server-0.12.3.tgz", - "integrity": "sha512-be0dKG6pni92bRjq0kvExtj/NrrAd28/8fCXkaI/4piTwQMSDSLMhWyW0NI1V+DBI3aa1HMlQu46/HjVLfmugA==", + "node_modules/is-number": { + "version": "7.0.0", + "resolved": "https://registry.npmjs.org/is-number/-/is-number-7.0.0.tgz", + "integrity": "sha512-41Cifkg6e8TylSpdtTpeLVMqvSBEVzTttHvERD741+pnZ8ANv0004MRL43QKPDlK9cGvNp6NZWZUBlbGXYxxng==", "dev": true, - "dependencies": { - "basic-auth": "^1.0.3", - "colors": "^1.4.0", - "corser": "^2.0.1", - "ecstatic": "^3.3.2", - "http-proxy": "^1.18.0", - "minimist": "^1.2.5", - "opener": "^1.5.1", - "portfinder": "^1.0.25", - "secure-compare": "3.0.1", - "union": "~0.5.0" - }, - "bin": { - "hs": "bin/http-server", - "http-server": "bin/http-server" - }, + "license": "MIT", "engines": { - "node": ">=6" + "node": ">=0.12.0" } }, - "node_modules/https-proxy-agent": { - "version": "2.2.4", - "resolved": "https://registry.npmjs.org/https-proxy-agent/-/https-proxy-agent-2.2.4.tgz", - "integrity": "sha512-OmvfoQ53WLjtA9HeYP9RNrWMJzzAz1JGaSFr1nijg0PVR1JaD/xbJq1mdEIIlxGpXp9eSe/O2LgU9DJmTPd0Eg==", + "node_modules/is-number-object": { + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/is-number-object/-/is-number-object-1.1.1.tgz", + "integrity": "sha512-lZhclumE1G6VYD8VHe35wFaIif+CTy5SJIi5+3y4psDgWu4wPDoBhF8NxUOinEc7pHgiTsT6MaBb92rKhhD+Xw==", "dev": true, + "license": "MIT", "dependencies": { - "agent-base": "^4.3.0", - "debug": "^3.1.0" + "call-bound": "^1.0.3", + "has-tostringtag": "^1.0.2" }, "engines": { - "node": ">= 4.5.0" + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" } }, - "node_modules/https-proxy-agent/node_modules/debug": { - "version": "3.2.6", - "resolved": "https://registry.npmjs.org/debug/-/debug-3.2.6.tgz", - "integrity": "sha512-mel+jf7nrtEl5Pn1Qx46zARXKDpBbvzezse7p7LqINmdoIk8PYP5SySaxEmYv6TZ0JyEKA1hsCId6DIhgITtWQ==", - "deprecated": "Debug versions >=3.2.0 <3.2.7 || >=4 <4.3.1 have a low-severity ReDos regression when used in a Node.js environment. It is recommended you upgrade to 3.2.7 or 4.3.1. (https://github.com/visionmedia/debug/issues/797)", - "dev": true, - "dependencies": { - "ms": "^2.1.1" - } - }, - "node_modules/https-proxy-agent/node_modules/ms": { - "version": "2.1.2", - "resolved": "https://registry.npmjs.org/ms/-/ms-2.1.2.tgz", - "integrity": "sha512-sGkPx+VjMtmA6MX27oA4FBFELFCZZ4S4XqeGOXCv68tT+jb3vk/RyaKWP0PTKyWtmLSM0b+adUTEvbs1PEaH2w==", - "dev": true - }, - "node_modules/humps": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/humps/-/humps-2.0.1.tgz", - "integrity": "sha1-3QLqYIG9BWjcXQcxhEY5V7qe+ao=", - "dev": true - }, - "node_modules/hyperlinker": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/hyperlinker/-/hyperlinker-1.0.0.tgz", - "integrity": "sha512-Ty8UblRWFEcfSuIaajM34LdPXIhbs1ajEX/BBPv24J+enSVaEVY63xQ6lTO9VRYS5LAoghIG0IDJ+p+IPzKUQQ==", + "node_modules/is-plain-obj": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/is-plain-obj/-/is-plain-obj-1.1.0.tgz", + "integrity": "sha512-yvkRyxmFKEOQ4pNXCmJG5AEQNlXJS5LaONXo5/cLdTZdWvsZ1ioJEonLGAosKlMWE8lwUy/bJzMjcw8az73+Fg==", "dev": true, + "license": "MIT", "engines": { - "node": ">=4" + "node": ">=0.10.0" } }, - "node_modules/iconv-lite": { - "version": "0.4.24", - "resolved": "https://registry.npmjs.org/iconv-lite/-/iconv-lite-0.4.24.tgz", - "integrity": "sha512-v3MXnZAcvnywkTUEZomIActle7RXXeedOR31wwl7VlyoXO4Qi9arvSenNQWne1TcRwhCL1HwLI21bEqdpj8/rA==", + "node_modules/is-potential-custom-element-name": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/is-potential-custom-element-name/-/is-potential-custom-element-name-1.0.1.tgz", + "integrity": "sha512-bCYeRA2rVibKZd+s2625gGnGF/t7DSqDs4dP7CrLA1m7jKWz6pps0LpYLJN8Q64HtmPKJ1hrN3nzPNKFEKOUiQ==", "dev": true, - "dependencies": { - "safer-buffer": ">= 2.1.2 < 3" - }, - "engines": { - "node": ">=0.10.0" - } + "license": "MIT" }, - "node_modules/ignore": { - "version": "4.0.6", - "resolved": "https://registry.npmjs.org/ignore/-/ignore-4.0.6.tgz", - "integrity": "sha512-cyFDKrqc/YdcWFniJhzI42+AzS+gNwmUzOSFcRCQYwySuBBBy/KjuxWLZ/FHEH6Moq1NizMOBWyTcv8O4OZIMg==", + "node_modules/is-reference": { + "version": "1.2.1", + "resolved": "https://registry.npmjs.org/is-reference/-/is-reference-1.2.1.tgz", + "integrity": "sha512-U82MsXXiFIrjCK4otLT+o2NA2Cd2g5MLoOVXUZjIOhLurrRxpEXzI8O0KZHr3IjLvlAH1kTPYSuqer5T9ZVBKQ==", "dev": true, - "engines": { - "node": ">= 4" + "license": "MIT", + "dependencies": { + "@types/estree": "*" } }, - "node_modules/import-fresh": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/import-fresh/-/import-fresh-2.0.0.tgz", - "integrity": "sha1-2BNVwVYS04bGH53dOSLUMEgipUY=", + "node_modules/is-regex": { + "version": "1.2.1", + "resolved": "https://registry.npmjs.org/is-regex/-/is-regex-1.2.1.tgz", + "integrity": "sha512-MjYsKHO5O7mCsmRGxWcLWheFqN9DJ/2TmngvjKXihe6efViPqc274+Fx/4fYj/r03+ESvBdTXK0V6tA3rgez1g==", "dev": true, + "license": "MIT", "dependencies": { - "caller-path": "^2.0.0", - "resolve-from": "^3.0.0" + "call-bound": "^1.0.2", + "gopd": "^1.2.0", + "has-tostringtag": "^1.0.2", + "hasown": "^2.0.2" }, "engines": { - "node": ">=4" + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" } }, - "node_modules/import-fresh/node_modules/resolve-from": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/resolve-from/-/resolve-from-3.0.0.tgz", - "integrity": "sha1-six699nWiBvItuZTM17rywoYh0g=", + "node_modules/is-set": { + "version": "2.0.3", + "resolved": "https://registry.npmjs.org/is-set/-/is-set-2.0.3.tgz", + "integrity": "sha512-iPAjerrse27/ygGLxw+EBR9agv9Y6uLeYVJMu+QNCoouJ1/1ri0mGrcWpfCqFZuzzx3WjtwxG098X+n4OuRkPg==", "dev": true, + "license": "MIT", "engines": { - "node": ">=4" + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" } }, - "node_modules/imurmurhash": { - "version": "0.1.4", - "resolved": "https://registry.npmjs.org/imurmurhash/-/imurmurhash-0.1.4.tgz", - "integrity": "sha1-khi5srkoojixPcT7a21XbyMUU+o=", + "node_modules/is-shared-array-buffer": { + "version": "1.0.4", + "resolved": "https://registry.npmjs.org/is-shared-array-buffer/-/is-shared-array-buffer-1.0.4.tgz", + "integrity": "sha512-ISWac8drv4ZGfwKl5slpHG9OwPNty4jOWPRIhBpxOoD+hqITiwuipOQ2bNthAzwA3B4fIjO4Nln74N0S9byq8A==", "dev": true, + "license": "MIT", + "dependencies": { + "call-bound": "^1.0.3" + }, "engines": { - "node": ">=0.8.19" + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" } }, - "node_modules/indent-string": { - "version": "3.2.0", - "resolved": "https://registry.npmjs.org/indent-string/-/indent-string-3.2.0.tgz", - "integrity": "sha1-Sl/W0nzDMvN+VBmlBNu4NxBckok=", + "node_modules/is-string": { + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/is-string/-/is-string-1.1.1.tgz", + "integrity": "sha512-BtEeSsoaQjlSPBemMQIrY1MY0uM6vnS1g5fmufYOtnxLGUZM2178PKbhsk7Ffv58IX+ZtcvoGwccYsh0PglkAA==", "dev": true, + "license": "MIT", + "dependencies": { + "call-bound": "^1.0.3", + "has-tostringtag": "^1.0.2" + }, "engines": { - "node": ">=4" + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" } }, - "node_modules/inflight": { - "version": "1.0.6", - "resolved": "https://registry.npmjs.org/inflight/-/inflight-1.0.6.tgz", - "integrity": "sha1-Sb1jMdfQLQwJvJEKEHW6gWW1bfk=", + "node_modules/is-symbol": { + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/is-symbol/-/is-symbol-1.1.1.tgz", + "integrity": "sha512-9gGx6GTtCQM73BgmHQXfDmLtfjjTUDSyoxTCbp5WtoixAhfgsDirWIcVQ/IHpvI5Vgd5i/J5F7B9cN/WlVbC/w==", "dev": true, + "license": "MIT", "dependencies": { - "once": "^1.3.0", - "wrappy": "1" + "call-bound": "^1.0.2", + "has-symbols": "^1.1.0", + "safe-regex-test": "^1.1.0" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" } }, - "node_modules/inherits": { - "version": "2.0.3", - "resolved": "https://registry.npmjs.org/inherits/-/inherits-2.0.3.tgz", - "integrity": "sha1-Yzwsg+PaQqUC9SRmAiSA9CCCYd4=", - "dev": true - }, - "node_modules/ini": { - "version": "1.3.7", - "resolved": "https://registry.npmjs.org/ini/-/ini-1.3.7.tgz", - "integrity": "sha512-iKpRpXP+CrP2jyrxvg1kMUpXDyRUFDWurxbnVT1vQPx+Wz9uCYsMIqYuSBLV+PAaZG/d7kRLKRFc9oDMsH+mFQ==", - "dev": true - }, - "node_modules/ink-docstrap": { - "version": "1.3.2", - "resolved": "https://registry.npmjs.org/ink-docstrap/-/ink-docstrap-1.3.2.tgz", - "integrity": "sha512-STx5orGQU1gfrkoI/fMU7lX6CSP7LBGO10gXNgOZhwKhUqbtNjCkYSewJtNnLmWP1tAGN6oyEpG1HFPw5vpa5Q==", + "node_modules/is-typed-array": { + "version": "1.1.15", + "resolved": "https://registry.npmjs.org/is-typed-array/-/is-typed-array-1.1.15.tgz", + "integrity": "sha512-p3EcsicXjit7SaskXHs1hA91QxgTw46Fv6EFKKGS5DRFLD8yKnohjF3hxoju94b/OcMZoQukzpPpBE9uLVKzgQ==", "dev": true, + "license": "MIT", "dependencies": { - "moment": "^2.14.1", - "sanitize-html": "^1.13.0" + "which-typed-array": "^1.1.16" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" } }, - "node_modules/interpret": { - "version": "1.2.0", - "resolved": "https://registry.npmjs.org/interpret/-/interpret-1.2.0.tgz", - "integrity": "sha512-mT34yGKMNceBQUoVn7iCDKDntA7SC6gycMAWzGx1z/CMCTV7b2AAtXlo3nRyHZ1FelRkQbQjprHSYGwzLtkVbw==", + "node_modules/is-unicode-supported": { + "version": "0.1.0", + "resolved": "https://registry.npmjs.org/is-unicode-supported/-/is-unicode-supported-0.1.0.tgz", + "integrity": "sha512-knxG2q4UC3u8stRGyAVJCOdxFmv5DZiRcdlIaAQXAbSfJya+OhopNotLQrstBhququ4ZpuKbDc/8S6mgXgPFPw==", "dev": true, + "license": "MIT", "engines": { - "node": ">= 0.10" + "node": ">=10" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" } }, - "node_modules/invert-kv": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/invert-kv/-/invert-kv-1.0.0.tgz", - "integrity": "sha1-EEqOSqym09jNFXqO+L+rLXo//bY=", + "node_modules/is-weakmap": { + "version": "2.0.2", + "resolved": "https://registry.npmjs.org/is-weakmap/-/is-weakmap-2.0.2.tgz", + "integrity": "sha512-K5pXYOm9wqY1RgjpL3YTkF39tni1XajUIkawTLUo9EZEVUFga5gSQJF8nNS7ZwJQ02y+1YCNYcMh+HIf1ZqE+w==", "dev": true, + "license": "MIT", "engines": { - "node": ">=0.10.0" + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" } }, - "node_modules/is-absolute": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/is-absolute/-/is-absolute-1.0.0.tgz", - "integrity": "sha512-dOWoqflvcydARa360Gvv18DZ/gRuHKi2NU/wU5X1ZFzdYfH29nkiNZsF3mp4OJ3H4yo9Mx8A/uAGNzpzPN3yBA==", + "node_modules/is-weakref": { + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/is-weakref/-/is-weakref-1.1.1.tgz", + "integrity": "sha512-6i9mGWSlqzNMEqpCp93KwRS1uUOodk2OJ6b+sq7ZPDSy2WuI5NFIxp/254TytR8ftefexkWn5xNiHUNpPOfSew==", "dev": true, + "license": "MIT", "dependencies": { - "is-relative": "^1.0.0", - "is-windows": "^1.0.1" + "call-bound": "^1.0.3" }, "engines": { - "node": ">=0.10.0" + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" } }, - "node_modules/is-accessor-descriptor": { - "version": "0.1.6", - "resolved": "https://registry.npmjs.org/is-accessor-descriptor/-/is-accessor-descriptor-0.1.6.tgz", - "integrity": "sha1-qeEss66Nh2cn7u84Q/igiXtcmNY=", + "node_modules/is-weakset": { + "version": "2.0.4", + "resolved": "https://registry.npmjs.org/is-weakset/-/is-weakset-2.0.4.tgz", + "integrity": "sha512-mfcwb6IzQyOKTs84CQMrOwW4gQcaTOAWJ0zzJCl2WSPDrWk/OzDaImWFH3djXhb24g4eudZfLRozAvPGw4d9hQ==", "dev": true, + "license": "MIT", "dependencies": { - "kind-of": "^3.0.2" + "call-bound": "^1.0.3", + "get-intrinsic": "^1.2.6" }, "engines": { - "node": ">=0.10.0" + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" } }, - "node_modules/is-accessor-descriptor/node_modules/kind-of": { + "node_modules/isarray": { + "version": "2.0.5", + "resolved": "https://registry.npmjs.org/isarray/-/isarray-2.0.5.tgz", + "integrity": "sha512-xHjhDr3cNBK0BzdUJSPXZntQUx/mwMS5Rw4A7lPJ90XGAO6ISP/ePDNuo0vhqOZU+UD5JoodwCAAoZQd3FeAKw==", + "dev": true, + "license": "MIT" + }, + "node_modules/isexe": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/isexe/-/isexe-2.0.0.tgz", + "integrity": "sha512-RHxMLp9lnKHGHRng9QFhRCMbYAcVpn69smSGcq3f36xjgVVWThj4qqLbTLlq7Ssj8B+fIQ1EuCEGI2lKsyQeIw==", + "dev": true, + "license": "ISC" + }, + "node_modules/istanbul-lib-coverage": { "version": "3.2.2", - "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-3.2.2.tgz", - "integrity": "sha1-MeohpzS6ubuw8yRm2JOupR5KPGQ=", + "resolved": "https://registry.npmjs.org/istanbul-lib-coverage/-/istanbul-lib-coverage-3.2.2.tgz", + "integrity": "sha512-O8dpsF+r0WV/8MNRKfnmrtCWhuKjxrq2w+jpzBL5UZKTi2LeVWnWOmWRxFlesJONmc+wLAGvKQZEOanko0LFTg==", + "dev": true, + "license": "BSD-3-Clause", + "engines": { + "node": ">=8" + } + }, + "node_modules/istanbul-lib-instrument": { + "version": "5.2.1", + "resolved": "https://registry.npmjs.org/istanbul-lib-instrument/-/istanbul-lib-instrument-5.2.1.tgz", + "integrity": "sha512-pzqtp31nLv/XFOzXGuvhCb8qhjmTVo5vjVk19XE4CRlSWz0KoeJ3bw9XsA7nOp9YBf4qHjwBxkDzKcME/J29Yg==", "dev": true, + "license": "BSD-3-Clause", "dependencies": { - "is-buffer": "^1.1.5" + "@babel/core": "^7.12.3", + "@babel/parser": "^7.14.7", + "@istanbuljs/schema": "^0.1.2", + "istanbul-lib-coverage": "^3.2.0", + "semver": "^6.3.0" }, "engines": { - "node": ">=0.10.0" + "node": ">=8" } }, - "node_modules/is-arrayish": { - "version": "0.2.1", - "resolved": "https://registry.npmjs.org/is-arrayish/-/is-arrayish-0.2.1.tgz", - "integrity": "sha1-d8mYQFJ6qOyxqLppe4BkWnqSap0=", - "dev": true - }, - "node_modules/is-bigint": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/is-bigint/-/is-bigint-1.0.2.tgz", - "integrity": "sha512-0JV5+SOCQkIdzjBK9buARcV804Ddu7A0Qet6sHi3FimE9ne6m4BGQZfRn+NZiXbBk4F4XmHfDZIipLj9pX8dSA==", + "node_modules/istanbul-lib-instrument/node_modules/semver": { + "version": "6.3.1", + "resolved": "https://registry.npmjs.org/semver/-/semver-6.3.1.tgz", + "integrity": "sha512-BR7VvDCVHO+q2xBEWskxS6DJE1qRnb7DxzUrogb71CWoSficBxYsiAGd+Kl0mmq/MprG9yArRkyrQxTO6XjMzA==", "dev": true, - "funding": { - "url": "https://github.com/sponsors/ljharb" + "license": "ISC", + "bin": { + "semver": "bin/semver.js" } }, - "node_modules/is-binary-path": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/is-binary-path/-/is-binary-path-1.0.1.tgz", - "integrity": "sha1-dfFmQrSA8YenEcgUFh/TpKdlWJg=", + "node_modules/jest-diff": { + "version": "29.7.0", + "resolved": "https://registry.npmjs.org/jest-diff/-/jest-diff-29.7.0.tgz", + "integrity": "sha512-LMIgiIrhigmPrs03JHpxUh2yISK3vLFPkAodPeo0+BuF7wA2FoQbkEg1u8gBYBThncu7e1oEDUfIXVuTqLRUjw==", "dev": true, + "license": "MIT", "dependencies": { - "binary-extensions": "^1.0.0" + "chalk": "^4.0.0", + "diff-sequences": "^29.6.3", + "jest-get-type": "^29.6.3", + "pretty-format": "^29.7.0" }, "engines": { - "node": ">=0.10.0" + "node": "^14.15.0 || ^16.10.0 || >=18.0.0" } }, - "node_modules/is-boolean-object": { - "version": "1.1.1", - "resolved": "https://registry.npmjs.org/is-boolean-object/-/is-boolean-object-1.1.1.tgz", - "integrity": "sha512-bXdQWkECBUIAcCkeH1unwJLIpZYaa5VvuygSyS/c2lf719mTKZDU5UdDRlpd01UjADgmW8RfqaP+mRaVPdr/Ng==", + "node_modules/jest-diff/node_modules/ansi-styles": { + "version": "4.3.0", + "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-4.3.0.tgz", + "integrity": "sha512-zbB9rCJAT1rbjiVDb2hqKFHNYLxgtk8NURxZ3IZwD3F6NtxbXZQCnnSi1Lkx+IDohdPlFp222wVALIheZJQSEg==", "dev": true, + "license": "MIT", "dependencies": { - "call-bind": "^1.0.2" + "color-convert": "^2.0.1" }, "engines": { - "node": ">= 0.4" + "node": ">=8" }, "funding": { - "url": "https://github.com/sponsors/ljharb" + "url": "https://github.com/chalk/ansi-styles?sponsor=1" } }, - "node_modules/is-buffer": { - "version": "1.1.6", - "resolved": "https://registry.npmjs.org/is-buffer/-/is-buffer-1.1.6.tgz", - "integrity": "sha512-NcdALwpXkTm5Zvvbk7owOUSvVvBKDgKP5/ewfXEznmQFfs4ZRmanOeKBTjRVjka3QFoN6XJ+9F3USqfHqTaU5w==", - "dev": true - }, - "node_modules/is-data-descriptor": { - "version": "0.1.4", - "resolved": "https://registry.npmjs.org/is-data-descriptor/-/is-data-descriptor-0.1.4.tgz", - "integrity": "sha1-C17mSDiOLIYCgueT8YVv7D8wG1Y=", + "node_modules/jest-diff/node_modules/chalk": { + "version": "4.1.2", + "resolved": "https://registry.npmjs.org/chalk/-/chalk-4.1.2.tgz", + "integrity": "sha512-oKnbhFyRIXpUuez8iBMmyEa4nbj4IOQyuhc/wy9kY7/WVPcwIO9VA668Pu8RkO7+0G76SLROeyw9CpQ061i4mA==", "dev": true, + "license": "MIT", "dependencies": { - "kind-of": "^3.0.2" + "ansi-styles": "^4.1.0", + "supports-color": "^7.1.0" }, "engines": { - "node": ">=0.10.0" + "node": ">=10" + }, + "funding": { + "url": "https://github.com/chalk/chalk?sponsor=1" } }, - "node_modules/is-data-descriptor/node_modules/kind-of": { - "version": "3.2.2", - "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-3.2.2.tgz", - "integrity": "sha1-MeohpzS6ubuw8yRm2JOupR5KPGQ=", + "node_modules/jest-diff/node_modules/color-convert": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-2.0.1.tgz", + "integrity": "sha512-RRECPsj7iu/xb5oKYcsFHSppFNnsj/52OVTRKb4zP5onXwVF3zVmmToNcOfGC+CRDpfK/U584fMg38ZHCaElKQ==", "dev": true, + "license": "MIT", "dependencies": { - "is-buffer": "^1.1.5" + "color-name": "~1.1.4" }, "engines": { - "node": ">=0.10.0" + "node": ">=7.0.0" } }, - "node_modules/is-date-object": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/is-date-object/-/is-date-object-1.0.1.tgz", - "integrity": "sha1-mqIOtq7rv/d/vTPnTKAbM1gdOhY=", + "node_modules/jest-diff/node_modules/color-name": { + "version": "1.1.4", + "resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.4.tgz", + "integrity": "sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA==", "dev": true, - "engines": { - "node": ">= 0.4" - } + "license": "MIT" }, - "node_modules/is-descriptor": { - "version": "0.1.6", - "resolved": "https://registry.npmjs.org/is-descriptor/-/is-descriptor-0.1.6.tgz", - "integrity": "sha512-avDYr0SB3DwO9zsMov0gKCESFYqCnE4hq/4z3TdUlukEy5t9C0YRq7HLrsN52NAcqXKaepeCD0n+B0arnVG3Hg==", + "node_modules/jest-diff/node_modules/has-flag": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-4.0.0.tgz", + "integrity": "sha512-EykJT/Q1KjTWctppgIAgfSO0tKVuZUjhgMr17kqTumMl6Afv3EISleU7qZUzoXDFTAHTDC4NOoG/ZxU3EvlMPQ==", "dev": true, - "dependencies": { - "is-accessor-descriptor": "^0.1.6", - "is-data-descriptor": "^0.1.4", - "kind-of": "^5.0.0" - }, + "license": "MIT", "engines": { - "node": ">=0.10.0" + "node": ">=8" } }, - "node_modules/is-descriptor/node_modules/kind-of": { - "version": "5.1.0", - "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-5.1.0.tgz", - "integrity": "sha512-NGEErnH6F2vUuXDh+OlbcKW7/wOcfdRHaZ7VWtqCztfHri/++YKmP51OdWeGPuqCOba6kk2OTe5d02VmTB80Pw==", + "node_modules/jest-diff/node_modules/supports-color": { + "version": "7.2.0", + "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-7.2.0.tgz", + "integrity": "sha512-qpCAvRl9stuOHveKsn7HncJRvv501qIacKzQlO/+Lwxc9+0q2wLyv4Dfvt80/DPn2pqOBsJdDiogXGR9+OvwRw==", "dev": true, + "license": "MIT", + "dependencies": { + "has-flag": "^4.0.0" + }, "engines": { - "node": ">=0.10.0" + "node": ">=8" } }, - "node_modules/is-directory": { - "version": "0.3.1", - "resolved": "https://registry.npmjs.org/is-directory/-/is-directory-0.3.1.tgz", - "integrity": "sha1-YTObbyR1/Hcv2cnYP1yFddwVSuE=", + "node_modules/jest-get-type": { + "version": "29.6.3", + "resolved": "https://registry.npmjs.org/jest-get-type/-/jest-get-type-29.6.3.tgz", + "integrity": "sha512-zrteXnqYxfQh7l5FHyL38jL39di8H8rHoecLH3JNxH3BwOrBsNeabdap5e0I23lD4HHI8W5VFBZqG4Eaq5LNcw==", "dev": true, + "license": "MIT", "engines": { - "node": ">=0.10.0" + "node": "^14.15.0 || ^16.10.0 || >=18.0.0" } }, - "node_modules/is-extendable": { - "version": "0.1.1", - "resolved": "https://registry.npmjs.org/is-extendable/-/is-extendable-0.1.1.tgz", - "integrity": "sha1-YrEQ4omkcUGOPsNqYX1HLjAd/Ik=", + "node_modules/jest-haste-map": { + "version": "29.7.0", + "resolved": "https://registry.npmjs.org/jest-haste-map/-/jest-haste-map-29.7.0.tgz", + "integrity": "sha512-fP8u2pyfqx0K1rGn1R9pyE0/KTn+G7PxktWidOBTqFPLYX0b9ksaMFkhK5vrS3DVun09pckLdlx90QthlW7AmA==", "dev": true, + "license": "MIT", + "dependencies": { + "@jest/types": "^29.6.3", + "@types/graceful-fs": "^4.1.3", + "@types/node": "*", + "anymatch": "^3.0.3", + "fb-watchman": "^2.0.0", + "graceful-fs": "^4.2.9", + "jest-regex-util": "^29.6.3", + "jest-util": "^29.7.0", + "jest-worker": "^29.7.0", + "micromatch": "^4.0.4", + "walker": "^1.0.8" + }, "engines": { - "node": ">=0.10.0" + "node": "^14.15.0 || ^16.10.0 || >=18.0.0" + }, + "optionalDependencies": { + "fsevents": "^2.3.2" } }, - "node_modules/is-extglob": { - "version": "2.1.1", - "resolved": "https://registry.npmjs.org/is-extglob/-/is-extglob-2.1.1.tgz", - "integrity": "sha1-qIwCU1eR8C7TfHahueqXc8gz+MI=", + "node_modules/jest-matcher-utils": { + "version": "29.7.0", + "resolved": "https://registry.npmjs.org/jest-matcher-utils/-/jest-matcher-utils-29.7.0.tgz", + "integrity": "sha512-sBkD+Xi9DtcChsI3L3u0+N0opgPYnCRPtGcQYrgXmR+hmt/fYfWAL0xRXYU8eWOdfuLgBe0YCW3AFtnRLagq/g==", "dev": true, + "license": "MIT", + "dependencies": { + "chalk": "^4.0.0", + "jest-diff": "^29.7.0", + "jest-get-type": "^29.6.3", + "pretty-format": "^29.7.0" + }, "engines": { - "node": ">=0.10.0" + "node": "^14.15.0 || ^16.10.0 || >=18.0.0" } }, - "node_modules/is-fullwidth-code-point": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/is-fullwidth-code-point/-/is-fullwidth-code-point-1.0.0.tgz", - "integrity": "sha1-754xOG8DGn8NZDr4L95QxFfvAMs=", + "node_modules/jest-matcher-utils/node_modules/ansi-styles": { + "version": "4.3.0", + "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-4.3.0.tgz", + "integrity": "sha512-zbB9rCJAT1rbjiVDb2hqKFHNYLxgtk8NURxZ3IZwD3F6NtxbXZQCnnSi1Lkx+IDohdPlFp222wVALIheZJQSEg==", "dev": true, + "license": "MIT", "dependencies": { - "number-is-nan": "^1.0.0" + "color-convert": "^2.0.1" }, "engines": { - "node": ">=0.10.0" + "node": ">=8" + }, + "funding": { + "url": "https://github.com/chalk/ansi-styles?sponsor=1" } }, - "node_modules/is-glob": { - "version": "4.0.1", - "resolved": "https://registry.npmjs.org/is-glob/-/is-glob-4.0.1.tgz", - "integrity": "sha512-5G0tKtBTFImOqDnLB2hG6Bp2qcKEFduo4tZu9MT/H6NQv/ghhy30o55ufafxJ/LdH79LLs2Kfrn85TLKyA7BUg==", + "node_modules/jest-matcher-utils/node_modules/chalk": { + "version": "4.1.2", + "resolved": "https://registry.npmjs.org/chalk/-/chalk-4.1.2.tgz", + "integrity": "sha512-oKnbhFyRIXpUuez8iBMmyEa4nbj4IOQyuhc/wy9kY7/WVPcwIO9VA668Pu8RkO7+0G76SLROeyw9CpQ061i4mA==", "dev": true, + "license": "MIT", "dependencies": { - "is-extglob": "^2.1.1" + "ansi-styles": "^4.1.0", + "supports-color": "^7.1.0" }, "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/is-negated-glob": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/is-negated-glob/-/is-negated-glob-1.0.0.tgz", - "integrity": "sha1-aRC8pdqMleeEtXUbl2z1oQ/uNtI=", - "dev": true, - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/is-negative-zero": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/is-negative-zero/-/is-negative-zero-2.0.1.tgz", - "integrity": "sha512-2z6JzQvZRa9A2Y7xC6dQQm4FSTSTNWjKIYYTt4246eMTJmIo0Q+ZyOsU66X8lxK1AbB92dFeglPLrhwpeRKO6w==", - "dev": true, - "engines": { - "node": ">= 0.4" + "node": ">=10" }, "funding": { - "url": "https://github.com/sponsors/ljharb" + "url": "https://github.com/chalk/chalk?sponsor=1" } }, - "node_modules/is-number": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/is-number/-/is-number-3.0.0.tgz", - "integrity": "sha1-JP1iAaR4LPUFYcgQJ2r8fRLXEZU=", + "node_modules/jest-matcher-utils/node_modules/color-convert": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-2.0.1.tgz", + "integrity": "sha512-RRECPsj7iu/xb5oKYcsFHSppFNnsj/52OVTRKb4zP5onXwVF3zVmmToNcOfGC+CRDpfK/U584fMg38ZHCaElKQ==", "dev": true, + "license": "MIT", "dependencies": { - "kind-of": "^3.0.2" + "color-name": "~1.1.4" }, "engines": { - "node": ">=0.10.0" + "node": ">=7.0.0" } }, - "node_modules/is-number-object": { - "version": "1.0.5", - "resolved": "https://registry.npmjs.org/is-number-object/-/is-number-object-1.0.5.tgz", - "integrity": "sha512-RU0lI/n95pMoUKu9v1BZP5MBcZuNSVJkMkAG2dJqC4z2GlkGUNeH68SuHuBKBD/XFe+LHZ+f9BKkLET60Niedw==", + "node_modules/jest-matcher-utils/node_modules/color-name": { + "version": "1.1.4", + "resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.4.tgz", + "integrity": "sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA==", "dev": true, - "engines": { - "node": ">= 0.4" - }, - "funding": { - "url": "https://github.com/sponsors/ljharb" - } + "license": "MIT" }, - "node_modules/is-number/node_modules/kind-of": { - "version": "3.2.2", - "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-3.2.2.tgz", - "integrity": "sha1-MeohpzS6ubuw8yRm2JOupR5KPGQ=", + "node_modules/jest-matcher-utils/node_modules/has-flag": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-4.0.0.tgz", + "integrity": "sha512-EykJT/Q1KjTWctppgIAgfSO0tKVuZUjhgMr17kqTumMl6Afv3EISleU7qZUzoXDFTAHTDC4NOoG/ZxU3EvlMPQ==", "dev": true, - "dependencies": { - "is-buffer": "^1.1.5" - }, + "license": "MIT", "engines": { - "node": ">=0.10.0" + "node": ">=8" } }, - "node_modules/is-path-cwd": { - "version": "2.1.0", - "resolved": "https://registry.npmjs.org/is-path-cwd/-/is-path-cwd-2.1.0.tgz", - "integrity": "sha512-Sc5j3/YnM8tDeyCsVeKlm/0p95075DyLmDEIkSgQ7mXkrOX+uTCtmQFm0CYzVyJwcCCmO3k8qfJt17SxQwB5Zw==", + "node_modules/jest-matcher-utils/node_modules/supports-color": { + "version": "7.2.0", + "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-7.2.0.tgz", + "integrity": "sha512-qpCAvRl9stuOHveKsn7HncJRvv501qIacKzQlO/+Lwxc9+0q2wLyv4Dfvt80/DPn2pqOBsJdDiogXGR9+OvwRw==", "dev": true, + "license": "MIT", + "dependencies": { + "has-flag": "^4.0.0" + }, "engines": { - "node": ">=6" + "node": ">=8" } }, - "node_modules/is-path-in-cwd": { - "version": "2.1.0", - "resolved": "https://registry.npmjs.org/is-path-in-cwd/-/is-path-in-cwd-2.1.0.tgz", - "integrity": "sha512-rNocXHgipO+rvnP6dk3zI20RpOtrAM/kzbB258Uw5BWr3TpXi861yzjo16Dn4hUox07iw5AyeMLHWsujkjzvRQ==", + "node_modules/jest-message-util": { + "version": "29.7.0", + "resolved": "https://registry.npmjs.org/jest-message-util/-/jest-message-util-29.7.0.tgz", + "integrity": "sha512-GBEV4GRADeP+qtB2+6u61stea8mGcOT4mCtrYISZwfu9/ISHFJ/5zOMXYbpBE9RsS5+Gb63DW4FgmnKJ79Kf6w==", "dev": true, + "license": "MIT", "dependencies": { - "is-path-inside": "^2.1.0" + "@babel/code-frame": "^7.12.13", + "@jest/types": "^29.6.3", + "@types/stack-utils": "^2.0.0", + "chalk": "^4.0.0", + "graceful-fs": "^4.2.9", + "micromatch": "^4.0.4", + "pretty-format": "^29.7.0", + "slash": "^3.0.0", + "stack-utils": "^2.0.3" }, "engines": { - "node": ">=6" + "node": "^14.15.0 || ^16.10.0 || >=18.0.0" } }, - "node_modules/is-path-inside": { - "version": "2.1.0", - "resolved": "https://registry.npmjs.org/is-path-inside/-/is-path-inside-2.1.0.tgz", - "integrity": "sha512-wiyhTzfDWsvwAW53OBWF5zuvaOGlZ6PwYxAbPVDhpm+gM09xKQGjBq/8uYN12aDvMxnAnq3dxTyoSoRNmg5YFg==", + "node_modules/jest-message-util/node_modules/ansi-styles": { + "version": "4.3.0", + "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-4.3.0.tgz", + "integrity": "sha512-zbB9rCJAT1rbjiVDb2hqKFHNYLxgtk8NURxZ3IZwD3F6NtxbXZQCnnSi1Lkx+IDohdPlFp222wVALIheZJQSEg==", "dev": true, + "license": "MIT", "dependencies": { - "path-is-inside": "^1.0.2" + "color-convert": "^2.0.1" }, "engines": { - "node": ">=6" + "node": ">=8" + }, + "funding": { + "url": "https://github.com/chalk/ansi-styles?sponsor=1" } }, - "node_modules/is-plain-obj": { - "version": "1.1.0", - "resolved": "https://registry.npmjs.org/is-plain-obj/-/is-plain-obj-1.1.0.tgz", - "integrity": "sha1-caUMhCnfync8kqOQpKA7OfzVHT4=", + "node_modules/jest-message-util/node_modules/chalk": { + "version": "4.1.2", + "resolved": "https://registry.npmjs.org/chalk/-/chalk-4.1.2.tgz", + "integrity": "sha512-oKnbhFyRIXpUuez8iBMmyEa4nbj4IOQyuhc/wy9kY7/WVPcwIO9VA668Pu8RkO7+0G76SLROeyw9CpQ061i4mA==", "dev": true, + "license": "MIT", + "dependencies": { + "ansi-styles": "^4.1.0", + "supports-color": "^7.1.0" + }, "engines": { - "node": ">=0.10.0" + "node": ">=10" + }, + "funding": { + "url": "https://github.com/chalk/chalk?sponsor=1" } }, - "node_modules/is-plain-object": { - "version": "2.0.4", - "resolved": "https://registry.npmjs.org/is-plain-object/-/is-plain-object-2.0.4.tgz", - "integrity": "sha512-h5PpgXkWitc38BBMYawTYMWJHFZJVnBquFE57xFpjB8pJFiF6gZ+bU+WyI/yqXiFR5mdLsgYNaPe8uao6Uv9Og==", + "node_modules/jest-message-util/node_modules/color-convert": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-2.0.1.tgz", + "integrity": "sha512-RRECPsj7iu/xb5oKYcsFHSppFNnsj/52OVTRKb4zP5onXwVF3zVmmToNcOfGC+CRDpfK/U584fMg38ZHCaElKQ==", "dev": true, + "license": "MIT", "dependencies": { - "isobject": "^3.0.1" + "color-name": "~1.1.4" }, "engines": { - "node": ">=0.10.0" + "node": ">=7.0.0" } }, - "node_modules/is-potential-custom-element-name": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/is-potential-custom-element-name/-/is-potential-custom-element-name-1.0.1.tgz", - "integrity": "sha512-bCYeRA2rVibKZd+s2625gGnGF/t7DSqDs4dP7CrLA1m7jKWz6pps0LpYLJN8Q64HtmPKJ1hrN3nzPNKFEKOUiQ==", - "dev": true + "node_modules/jest-message-util/node_modules/color-name": { + "version": "1.1.4", + "resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.4.tgz", + "integrity": "sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA==", + "dev": true, + "license": "MIT" }, - "node_modules/is-relative": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/is-relative/-/is-relative-1.0.0.tgz", - "integrity": "sha512-Kw/ReK0iqwKeu0MITLFuj0jbPAmEiOsIwyIXvvbfa6QfmN9pkD1M+8pdk7Rl/dTKbH34/XBFMbgD4iMJhLQbGA==", + "node_modules/jest-message-util/node_modules/has-flag": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-4.0.0.tgz", + "integrity": "sha512-EykJT/Q1KjTWctppgIAgfSO0tKVuZUjhgMr17kqTumMl6Afv3EISleU7qZUzoXDFTAHTDC4NOoG/ZxU3EvlMPQ==", "dev": true, - "dependencies": { - "is-unc-path": "^1.0.0" - }, + "license": "MIT", "engines": { - "node": ">=0.10.0" + "node": ">=8" } }, - "node_modules/is-stream": { - "version": "1.1.0", - "resolved": "https://registry.npmjs.org/is-stream/-/is-stream-1.1.0.tgz", - "integrity": "sha1-EtSj3U5o4Lec6428hBc66A2RykQ=", + "node_modules/jest-message-util/node_modules/supports-color": { + "version": "7.2.0", + "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-7.2.0.tgz", + "integrity": "sha512-qpCAvRl9stuOHveKsn7HncJRvv501qIacKzQlO/+Lwxc9+0q2wLyv4Dfvt80/DPn2pqOBsJdDiogXGR9+OvwRw==", "dev": true, + "license": "MIT", + "dependencies": { + "has-flag": "^4.0.0" + }, "engines": { - "node": ">=0.10.0" + "node": ">=8" } }, - "node_modules/is-string": { - "version": "1.0.6", - "resolved": "https://registry.npmjs.org/is-string/-/is-string-1.0.6.tgz", - "integrity": "sha512-2gdzbKUuqtQ3lYNrUTQYoClPhm7oQu4UdpSZMp1/DGgkHBT8E2Z1l0yMdb6D4zNAxwDiMv8MdulKROJGNl0Q0w==", + "node_modules/jest-regex-util": { + "version": "29.6.3", + "resolved": "https://registry.npmjs.org/jest-regex-util/-/jest-regex-util-29.6.3.tgz", + "integrity": "sha512-KJJBsRCyyLNWCNBOvZyRDnAIfUiRJ8v+hOBQYGn8gDyF3UegwiP4gwRR3/SDa42g1YbVycTidUF3rKjyLFDWbg==", "dev": true, + "license": "MIT", "engines": { - "node": ">= 0.4" - }, - "funding": { - "url": "https://github.com/sponsors/ljharb" + "node": "^14.15.0 || ^16.10.0 || >=18.0.0" } }, - "node_modules/is-symbol": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/is-symbol/-/is-symbol-1.0.2.tgz", - "integrity": "sha512-HS8bZ9ox60yCJLH9snBpIwv9pYUAkcuLhSA1oero1UB5y9aiQpRA8y2ex945AOtCZL1lJDeIk3G5LthswI46Lw==", + "node_modules/jest-snapshot": { + "version": "29.7.0", + "resolved": "https://registry.npmjs.org/jest-snapshot/-/jest-snapshot-29.7.0.tgz", + "integrity": "sha512-Rm0BMWtxBcioHr1/OX5YCP8Uov4riHvKPknOGs804Zg9JGZgmIBkbtlxJC/7Z4msKYVbIJtfU+tKb8xlYNfdkw==", "dev": true, + "license": "MIT", "dependencies": { - "has-symbols": "^1.0.0" + "@babel/core": "^7.11.6", + "@babel/generator": "^7.7.2", + "@babel/plugin-syntax-jsx": "^7.7.2", + "@babel/plugin-syntax-typescript": "^7.7.2", + "@babel/types": "^7.3.3", + "@jest/expect-utils": "^29.7.0", + "@jest/transform": "^29.7.0", + "@jest/types": "^29.6.3", + "babel-preset-current-node-syntax": "^1.0.0", + "chalk": "^4.0.0", + "expect": "^29.7.0", + "graceful-fs": "^4.2.9", + "jest-diff": "^29.7.0", + "jest-get-type": "^29.6.3", + "jest-matcher-utils": "^29.7.0", + "jest-message-util": "^29.7.0", + "jest-util": "^29.7.0", + "natural-compare": "^1.4.0", + "pretty-format": "^29.7.0", + "semver": "^7.5.3" }, "engines": { - "node": ">= 0.4" + "node": "^14.15.0 || ^16.10.0 || >=18.0.0" } }, - "node_modules/is-unc-path": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/is-unc-path/-/is-unc-path-1.0.0.tgz", - "integrity": "sha512-mrGpVd0fs7WWLfVsStvgF6iEJnbjDFZh9/emhRDcGWTduTfNHd9CHeUwH3gYIjdbwo4On6hunkztwOaAw0yllQ==", + "node_modules/jest-snapshot/node_modules/ansi-styles": { + "version": "4.3.0", + "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-4.3.0.tgz", + "integrity": "sha512-zbB9rCJAT1rbjiVDb2hqKFHNYLxgtk8NURxZ3IZwD3F6NtxbXZQCnnSi1Lkx+IDohdPlFp222wVALIheZJQSEg==", "dev": true, + "license": "MIT", "dependencies": { - "unc-path-regex": "^0.1.2" + "color-convert": "^2.0.1" }, "engines": { - "node": ">=0.10.0" + "node": ">=8" + }, + "funding": { + "url": "https://github.com/chalk/ansi-styles?sponsor=1" } }, - "node_modules/is-unicode-supported": { - "version": "0.1.0", - "resolved": "https://registry.npmjs.org/is-unicode-supported/-/is-unicode-supported-0.1.0.tgz", - "integrity": "sha512-knxG2q4UC3u8stRGyAVJCOdxFmv5DZiRcdlIaAQXAbSfJya+OhopNotLQrstBhququ4ZpuKbDc/8S6mgXgPFPw==", + "node_modules/jest-snapshot/node_modules/chalk": { + "version": "4.1.2", + "resolved": "https://registry.npmjs.org/chalk/-/chalk-4.1.2.tgz", + "integrity": "sha512-oKnbhFyRIXpUuez8iBMmyEa4nbj4IOQyuhc/wy9kY7/WVPcwIO9VA668Pu8RkO7+0G76SLROeyw9CpQ061i4mA==", "dev": true, + "license": "MIT", + "dependencies": { + "ansi-styles": "^4.1.0", + "supports-color": "^7.1.0" + }, "engines": { "node": ">=10" }, "funding": { - "url": "https://github.com/sponsors/sindresorhus" + "url": "https://github.com/chalk/chalk?sponsor=1" } }, - "node_modules/is-utf8": { - "version": "0.2.1", - "resolved": "https://registry.npmjs.org/is-utf8/-/is-utf8-0.2.1.tgz", - "integrity": "sha1-Sw2hRCEE0bM2NA6AeX6GXPOffXI=", - "dev": true - }, - "node_modules/is-valid-glob": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/is-valid-glob/-/is-valid-glob-1.0.0.tgz", - "integrity": "sha1-Kb8+/3Ab4tTTFdusw5vDn+j2Aao=", + "node_modules/jest-snapshot/node_modules/color-convert": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-2.0.1.tgz", + "integrity": "sha512-RRECPsj7iu/xb5oKYcsFHSppFNnsj/52OVTRKb4zP5onXwVF3zVmmToNcOfGC+CRDpfK/U584fMg38ZHCaElKQ==", "dev": true, + "license": "MIT", + "dependencies": { + "color-name": "~1.1.4" + }, "engines": { - "node": ">=0.10.0" + "node": ">=7.0.0" } }, - "node_modules/is-windows": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/is-windows/-/is-windows-1.0.2.tgz", - "integrity": "sha512-eXK1UInq2bPmjyX6e3VHIzMLobc4J94i4AWn+Hpq3OU5KkrRC96OAcR3PRJ/pGu6m8TRnBHP9dkXQVsT/COVIA==", + "node_modules/jest-snapshot/node_modules/color-name": { + "version": "1.1.4", + "resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.4.tgz", + "integrity": "sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA==", "dev": true, - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/isarray": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/isarray/-/isarray-1.0.0.tgz", - "integrity": "sha1-u5NdSFgsuhaMBoNJV6VKPgcSTxE=", - "dev": true - }, - "node_modules/isexe": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/isexe/-/isexe-2.0.0.tgz", - "integrity": "sha1-6PvzdNxVb/iUehDcsFctYz8s+hA=", - "dev": true + "license": "MIT" }, - "node_modules/isobject": { - "version": "3.0.1", - "resolved": "https://registry.npmjs.org/isobject/-/isobject-3.0.1.tgz", - "integrity": "sha1-TkMekrEalzFjaqH5yNHMvP2reN8=", + "node_modules/jest-snapshot/node_modules/has-flag": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-4.0.0.tgz", + "integrity": "sha512-EykJT/Q1KjTWctppgIAgfSO0tKVuZUjhgMr17kqTumMl6Afv3EISleU7qZUzoXDFTAHTDC4NOoG/ZxU3EvlMPQ==", "dev": true, + "license": "MIT", "engines": { - "node": ">=0.10.0" + "node": ">=8" } }, - "node_modules/istextorbinary": { - "version": "2.2.1", - "resolved": "https://registry.npmjs.org/istextorbinary/-/istextorbinary-2.2.1.tgz", - "integrity": "sha512-TS+hoFl8Z5FAFMK38nhBkdLt44CclNRgDHWeMgsV8ko3nDlr/9UI2Sf839sW7enijf8oKsZYXRvM8g0it9Zmcw==", + "node_modules/jest-snapshot/node_modules/supports-color": { + "version": "7.2.0", + "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-7.2.0.tgz", + "integrity": "sha512-qpCAvRl9stuOHveKsn7HncJRvv501qIacKzQlO/+Lwxc9+0q2wLyv4Dfvt80/DPn2pqOBsJdDiogXGR9+OvwRw==", "dev": true, + "license": "MIT", "dependencies": { - "binaryextensions": "2", - "editions": "^1.3.3", - "textextensions": "2" + "has-flag": "^4.0.0" }, "engines": { - "node": ">=0.12" + "node": ">=8" } }, - "node_modules/js-tokens": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/js-tokens/-/js-tokens-4.0.0.tgz", - "integrity": "sha512-RdJUflcE3cUzKiMqQgsCu06FPu9UdIJO0beYbPhHN4k6apgJtifcoCtT9bcxOpYBtpD2kCM6Sbzg4CausW/PKQ==", - "dev": true - }, - "node_modules/js-yaml": { - "version": "3.13.1", - "resolved": "https://registry.npmjs.org/js-yaml/-/js-yaml-3.13.1.tgz", - "integrity": "sha512-YfbcO7jXDdyj0DGxYVSlSeQNHbD7XPWvrVWeVUujrQEoZzWJIRrCPoyk6kL6IAjAG2IolMK4T0hNUe0HOUs5Jw==", + "node_modules/jest-util": { + "version": "29.7.0", + "resolved": "https://registry.npmjs.org/jest-util/-/jest-util-29.7.0.tgz", + "integrity": "sha512-z6EbKajIpqGKU56y5KBUgy1dt1ihhQJgWzUlZHArA/+X2ad7Cb5iF+AK1EWVL/Bo7Rz9uurpqw6SiBCefUbCGA==", "dev": true, + "license": "MIT", "dependencies": { - "argparse": "^1.0.7", - "esprima": "^4.0.0" + "@jest/types": "^29.6.3", + "@types/node": "*", + "chalk": "^4.0.0", + "ci-info": "^3.2.0", + "graceful-fs": "^4.2.9", + "picomatch": "^2.2.3" }, - "bin": { - "js-yaml": "bin/js-yaml.js" + "engines": { + "node": "^14.15.0 || ^16.10.0 || >=18.0.0" } }, - "node_modules/js2xmlparser": { - "version": "4.0.2", - "resolved": "https://registry.npmjs.org/js2xmlparser/-/js2xmlparser-4.0.2.tgz", - "integrity": "sha512-6n4D8gLlLf1n5mNLQPRfViYzu9RATblzPEtm1SthMX1Pjao0r9YI9nw7ZIfRxQMERS87mcswrg+r/OYrPRX6jA==", + "node_modules/jest-util/node_modules/ansi-styles": { + "version": "4.3.0", + "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-4.3.0.tgz", + "integrity": "sha512-zbB9rCJAT1rbjiVDb2hqKFHNYLxgtk8NURxZ3IZwD3F6NtxbXZQCnnSi1Lkx+IDohdPlFp222wVALIheZJQSEg==", "dev": true, + "license": "MIT", "dependencies": { - "xmlcreate": "^2.0.4" + "color-convert": "^2.0.1" + }, + "engines": { + "node": ">=8" + }, + "funding": { + "url": "https://github.com/chalk/ansi-styles?sponsor=1" } }, - "node_modules/jsdoc": { - "version": "3.6.10", - "resolved": "https://registry.npmjs.org/jsdoc/-/jsdoc-3.6.10.tgz", - "integrity": "sha512-IdQ8ppSo5LKZ9o3M+LKIIK8i00DIe5msDvG3G81Km+1dhy0XrOWD0Ji8H61ElgyEj/O9KRLokgKbAM9XX9CJAg==", + "node_modules/jest-util/node_modules/chalk": { + "version": "4.1.2", + "resolved": "https://registry.npmjs.org/chalk/-/chalk-4.1.2.tgz", + "integrity": "sha512-oKnbhFyRIXpUuez8iBMmyEa4nbj4IOQyuhc/wy9kY7/WVPcwIO9VA668Pu8RkO7+0G76SLROeyw9CpQ061i4mA==", "dev": true, + "license": "MIT", "dependencies": { - "@babel/parser": "^7.9.4", - "@types/markdown-it": "^12.2.3", - "bluebird": "^3.7.2", - "catharsis": "^0.9.0", - "escape-string-regexp": "^2.0.0", - "js2xmlparser": "^4.0.2", - "klaw": "^4.0.1", - "markdown-it": "^12.3.2", - "markdown-it-anchor": "^8.4.1", - "marked": "^4.0.10", - "mkdirp": "^1.0.4", - "requizzle": "^0.2.3", - "strip-json-comments": "^3.1.0", - "taffydb": "2.6.2", - "underscore": "~1.13.2" - }, - "bin": { - "jsdoc": "jsdoc.js" + "ansi-styles": "^4.1.0", + "supports-color": "^7.1.0" }, "engines": { - "node": ">=8.15.0" + "node": ">=10" + }, + "funding": { + "url": "https://github.com/chalk/chalk?sponsor=1" } }, - "node_modules/jsdoc/node_modules/escape-string-regexp": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/escape-string-regexp/-/escape-string-regexp-2.0.0.tgz", - "integrity": "sha512-UpzcLCXolUWcNu5HtVMHYdXJjArjsF9C0aNnquZYY4uW/Vu0miy5YoWvbV345HauVvcAUnpRuhMMcqTcGOY2+w==", + "node_modules/jest-util/node_modules/color-convert": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-2.0.1.tgz", + "integrity": "sha512-RRECPsj7iu/xb5oKYcsFHSppFNnsj/52OVTRKb4zP5onXwVF3zVmmToNcOfGC+CRDpfK/U584fMg38ZHCaElKQ==", + "dev": true, + "license": "MIT", + "dependencies": { + "color-name": "~1.1.4" + }, + "engines": { + "node": ">=7.0.0" + } + }, + "node_modules/jest-util/node_modules/color-name": { + "version": "1.1.4", + "resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.4.tgz", + "integrity": "sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA==", + "dev": true, + "license": "MIT" + }, + "node_modules/jest-util/node_modules/has-flag": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-4.0.0.tgz", + "integrity": "sha512-EykJT/Q1KjTWctppgIAgfSO0tKVuZUjhgMr17kqTumMl6Afv3EISleU7qZUzoXDFTAHTDC4NOoG/ZxU3EvlMPQ==", "dev": true, + "license": "MIT", "engines": { "node": ">=8" } }, - "node_modules/jsdoc/node_modules/mkdirp": { - "version": "1.0.4", - "resolved": "https://registry.npmjs.org/mkdirp/-/mkdirp-1.0.4.tgz", - "integrity": "sha512-vVqVZQyf3WLx2Shd0qJ9xuvqgAyKPLAiqITEtqW0oIUjzo3PePDd6fW9iFz30ef7Ysp/oiWqbhszeGWW2T6Gzw==", + "node_modules/jest-util/node_modules/picomatch": { + "version": "2.3.1", + "resolved": "https://registry.npmjs.org/picomatch/-/picomatch-2.3.1.tgz", + "integrity": "sha512-JU3teHTNjmE2VCGFzuY8EXzCDVwEqB2a8fsIvwaStHhAWJEeVd1o1QD80CU6+ZdEXXSLbSsuLwJjkCBWqRQUVA==", "dev": true, - "bin": { - "mkdirp": "bin/cmd.js" + "license": "MIT", + "engines": { + "node": ">=8.6" + }, + "funding": { + "url": "https://github.com/sponsors/jonschlinkert" + } + }, + "node_modules/jest-util/node_modules/supports-color": { + "version": "7.2.0", + "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-7.2.0.tgz", + "integrity": "sha512-qpCAvRl9stuOHveKsn7HncJRvv501qIacKzQlO/+Lwxc9+0q2wLyv4Dfvt80/DPn2pqOBsJdDiogXGR9+OvwRw==", + "dev": true, + "license": "MIT", + "dependencies": { + "has-flag": "^4.0.0" }, "engines": { - "node": ">=10" + "node": ">=8" } }, - "node_modules/jsdoctypeparser": { - "version": "9.0.0", - "resolved": "https://registry.npmjs.org/jsdoctypeparser/-/jsdoctypeparser-9.0.0.tgz", - "integrity": "sha512-jrTA2jJIL6/DAEILBEh2/w9QxCuwmvNXIry39Ay/HVfhE3o2yVV0U44blYkqdHA/OKloJEqvJy0xU+GSdE2SIw==", + "node_modules/jest-worker": { + "version": "29.7.0", + "resolved": "https://registry.npmjs.org/jest-worker/-/jest-worker-29.7.0.tgz", + "integrity": "sha512-eIz2msL/EzL9UFTFFx7jBTkeZfku0yUAyZZZmJ93H2TYEiroIx2PQjEXcwYtYl8zXCxb+PAmA2hLIt/6ZEkPHw==", "dev": true, - "bin": { - "jsdoctypeparser": "bin/jsdoctypeparser" + "license": "MIT", + "dependencies": { + "@types/node": "*", + "jest-util": "^29.7.0", + "merge-stream": "^2.0.0", + "supports-color": "^8.0.0" }, "engines": { - "node": ">=10" + "node": "^14.15.0 || ^16.10.0 || >=18.0.0" } }, - "node_modules/jsdom": { - "version": "16.7.0", - "resolved": "https://registry.npmjs.org/jsdom/-/jsdom-16.7.0.tgz", - "integrity": "sha512-u9Smc2G1USStM+s/x1ru5Sxrl6mPYCbByG1U/hUmqaVsm4tbNyS7CicOSRyuGQYZhTu0h84qkZZQ/I+dzizSVw==", - "dev": true, - "dependencies": { - "abab": "^2.0.5", - "acorn": "^8.2.4", - "acorn-globals": "^6.0.0", - "cssom": "^0.4.4", - "cssstyle": "^2.3.0", - "data-urls": "^2.0.0", - "decimal.js": "^10.2.1", - "domexception": "^2.0.1", - "escodegen": "^2.0.0", - "form-data": "^3.0.0", - "html-encoding-sniffer": "^2.0.1", - "http-proxy-agent": "^4.0.1", - "https-proxy-agent": "^5.0.0", - "is-potential-custom-element-name": "^1.0.1", - "nwsapi": "^2.2.0", - "parse5": "6.0.1", - "saxes": "^5.0.1", - "symbol-tree": "^3.2.4", - "tough-cookie": "^4.0.0", - "w3c-hr-time": "^1.0.2", - "w3c-xmlserializer": "^2.0.0", - "webidl-conversions": "^6.1.0", - "whatwg-encoding": "^1.0.5", - "whatwg-mimetype": "^2.3.0", - "whatwg-url": "^8.5.0", - "ws": "^7.4.6", - "xml-name-validator": "^3.0.0" + "node_modules/jest-worker/node_modules/has-flag": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-4.0.0.tgz", + "integrity": "sha512-EykJT/Q1KjTWctppgIAgfSO0tKVuZUjhgMr17kqTumMl6Afv3EISleU7qZUzoXDFTAHTDC4NOoG/ZxU3EvlMPQ==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=8" + } + }, + "node_modules/jest-worker/node_modules/supports-color": { + "version": "8.1.1", + "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-8.1.1.tgz", + "integrity": "sha512-MpUEN2OodtUzxvKQl72cUF7RQ5EiHsGvSsVG0ia9c5RbWGL2CI4C7EpPS8UTBIplnlzZiNuV56w+FuNxy3ty2Q==", + "dev": true, + "license": "MIT", + "dependencies": { + "has-flag": "^4.0.0" }, "engines": { "node": ">=10" }, - "peerDependencies": { - "canvas": "^2.5.0" - }, - "peerDependenciesMeta": { - "canvas": { - "optional": true - } + "funding": { + "url": "https://github.com/chalk/supports-color?sponsor=1" } }, - "node_modules/jsdom/node_modules/agent-base": { - "version": "6.0.2", - "resolved": "https://registry.npmjs.org/agent-base/-/agent-base-6.0.2.tgz", - "integrity": "sha512-RZNwNclF7+MS/8bDg70amg32dyeZGZxiDuQmZxKLAlQjr3jGyLx+4Kkk58UO7D2QdgFIQCovuSuZESne6RG6XQ==", + "node_modules/js-tokens": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/js-tokens/-/js-tokens-4.0.0.tgz", + "integrity": "sha512-RdJUflcE3cUzKiMqQgsCu06FPu9UdIJO0beYbPhHN4k6apgJtifcoCtT9bcxOpYBtpD2kCM6Sbzg4CausW/PKQ==", + "dev": true, + "license": "MIT" + }, + "node_modules/js-yaml": { + "version": "4.1.0", + "resolved": "https://registry.npmjs.org/js-yaml/-/js-yaml-4.1.0.tgz", + "integrity": "sha512-wpxZs9NoxZaJESJGIZTyDEaYpl0FKSA+FB9aJiyemKhMwkxQg63h4T1KJgUGHpTqPDNRcmmYLugrRjJlBtWvRA==", "dev": true, + "license": "MIT", "dependencies": { - "debug": "4" + "argparse": "^2.0.1" }, + "bin": { + "js-yaml": "bin/js-yaml.js" + } + }, + "node_modules/jsdoc-type-pratt-parser": { + "version": "4.1.0", + "resolved": "https://registry.npmjs.org/jsdoc-type-pratt-parser/-/jsdoc-type-pratt-parser-4.1.0.tgz", + "integrity": "sha512-Hicd6JK5Njt2QB6XYFS7ok9e37O8AYk3jTcppG4YVQnYjOemymvTcmc7OWsmq/Qqj5TdRFO5/x/tIPmBeRtGHg==", + "dev": true, + "license": "MIT", "engines": { - "node": ">= 6.0.0" + "node": ">=12.0.0" } }, - "node_modules/jsdom/node_modules/debug": { - "version": "4.3.2", - "resolved": "https://registry.npmjs.org/debug/-/debug-4.3.2.tgz", - "integrity": "sha512-mOp8wKcvj7XxC78zLgw/ZA+6TSgkoE2C/ienthhRD298T7UNwAg9diBpLRxC0mOezLl4B0xV7M0cCO6P/O0Xhw==", + "node_modules/jsdom": { + "version": "24.1.3", + "resolved": "https://registry.npmjs.org/jsdom/-/jsdom-24.1.3.tgz", + "integrity": "sha512-MyL55p3Ut3cXbeBEG7Hcv0mVM8pp8PBNWxRqchZnSfAiES1v1mRnMeFfaHWIPULpwsYfvO+ZmMZz5tGCnjzDUQ==", "dev": true, + "license": "MIT", "dependencies": { - "ms": "2.1.2" + "cssstyle": "^4.0.1", + "data-urls": "^5.0.0", + "decimal.js": "^10.4.3", + "form-data": "^4.0.0", + "html-encoding-sniffer": "^4.0.0", + "http-proxy-agent": "^7.0.2", + "https-proxy-agent": "^7.0.5", + "is-potential-custom-element-name": "^1.0.1", + "nwsapi": "^2.2.12", + "parse5": "^7.1.2", + "rrweb-cssom": "^0.7.1", + "saxes": "^6.0.0", + "symbol-tree": "^3.2.4", + "tough-cookie": "^4.1.4", + "w3c-xmlserializer": "^5.0.0", + "webidl-conversions": "^7.0.0", + "whatwg-encoding": "^3.1.1", + "whatwg-mimetype": "^4.0.0", + "whatwg-url": "^14.0.0", + "ws": "^8.18.0", + "xml-name-validator": "^5.0.0" }, "engines": { - "node": ">=6.0" + "node": ">=18" + }, + "peerDependencies": { + "canvas": "^2.11.2" }, "peerDependenciesMeta": { - "supports-color": { + "canvas": { "optional": true } } }, - "node_modules/jsdom/node_modules/http-proxy-agent": { - "version": "4.0.1", - "resolved": "https://registry.npmjs.org/http-proxy-agent/-/http-proxy-agent-4.0.1.tgz", - "integrity": "sha512-k0zdNgqWTGA6aeIRVpvfVob4fL52dTfaehylg0Y4UvSySvOq/Y+BOyPrgpUrA7HylqvU8vIZGsRuXmspskV0Tg==", + "node_modules/jsdom/node_modules/agent-base": { + "version": "7.1.3", + "resolved": "https://registry.npmjs.org/agent-base/-/agent-base-7.1.3.tgz", + "integrity": "sha512-jRR5wdylq8CkOe6hei19GGZnxM6rBGwFl3Bg0YItGDimvjGtAvdZk4Pu6Cl4u4Igsws4a1fd1Vq3ezrhn4KmFw==", "dev": true, - "dependencies": { - "@tootallnate/once": "1", - "agent-base": "6", - "debug": "4" - }, + "license": "MIT", "engines": { - "node": ">= 6" + "node": ">= 14" } }, - "node_modules/jsdom/node_modules/https-proxy-agent": { - "version": "5.0.0", - "resolved": "https://registry.npmjs.org/https-proxy-agent/-/https-proxy-agent-5.0.0.tgz", - "integrity": "sha512-EkYm5BcKUGiduxzSt3Eppko+PiNWNEpa4ySk9vTC6wDsQJW9rHSa+UhGNJoRYp7bz6Ht1eaRIa6QaJqO5rCFbA==", + "node_modules/jsdom/node_modules/http-proxy-agent": { + "version": "7.0.2", + "resolved": "https://registry.npmjs.org/http-proxy-agent/-/http-proxy-agent-7.0.2.tgz", + "integrity": "sha512-T1gkAiYYDWYx3V5Bmyu7HcfcvL7mUrTWiM6yOfa3PIphViJ/gFPbvidQ+veqSOHci/PxBcDabeUNCzpOODJZig==", "dev": true, + "license": "MIT", "dependencies": { - "agent-base": "6", - "debug": "4" + "agent-base": "^7.1.0", + "debug": "^4.3.4" }, "engines": { - "node": ">= 6" + "node": ">= 14" } }, - "node_modules/jsdom/node_modules/ms": { - "version": "2.1.2", - "resolved": "https://registry.npmjs.org/ms/-/ms-2.1.2.tgz", - "integrity": "sha512-sGkPx+VjMtmA6MX27oA4FBFELFCZZ4S4XqeGOXCv68tT+jb3vk/RyaKWP0PTKyWtmLSM0b+adUTEvbs1PEaH2w==", - "dev": true - }, - "node_modules/jsdom/node_modules/tr46": { - "version": "2.1.0", - "resolved": "https://registry.npmjs.org/tr46/-/tr46-2.1.0.tgz", - "integrity": "sha512-15Ih7phfcdP5YxqiB+iDtLoaTz4Nd35+IiAv0kQ5FNKHzXgdWqPoTIqEDDJmXceQt4JZk6lVPT8lnDlPpGDppw==", + "node_modules/jsdom/node_modules/https-proxy-agent": { + "version": "7.0.6", + "resolved": "https://registry.npmjs.org/https-proxy-agent/-/https-proxy-agent-7.0.6.tgz", + "integrity": "sha512-vK9P5/iUfdl95AI+JVyUuIcVtd4ofvtrOr3HNtM2yxC9bnMbEdp3x01OhQNnjb8IJYi38VlTE3mBXwcfvywuSw==", "dev": true, + "license": "MIT", "dependencies": { - "punycode": "^2.1.1" + "agent-base": "^7.1.2", + "debug": "4" }, "engines": { - "node": ">=8" + "node": ">= 14" } }, - "node_modules/jsdom/node_modules/webidl-conversions": { - "version": "6.1.0", - "resolved": "https://registry.npmjs.org/webidl-conversions/-/webidl-conversions-6.1.0.tgz", - "integrity": "sha512-qBIvFLGiBpLjfwmYAaHPXsn+ho5xZnGvyGvsarywGNc8VyQJUMHJ8OBKGGrPER0okBeMDaan4mNBlgBROxuI8w==", + "node_modules/jsesc": { + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/jsesc/-/jsesc-3.1.0.tgz", + "integrity": "sha512-/sM3dO2FOzXjKQhJuo0Q173wf2KOo8t4I8vHy6lF9poUp7bKT0/NHE8fPX23PwfhnykfqnC2xRxOnVw5XuGIaA==", "dev": true, + "license": "MIT", + "bin": { + "jsesc": "bin/jsesc" + }, "engines": { - "node": ">=10.4" + "node": ">=6" } }, - "node_modules/jsdom/node_modules/whatwg-url": { - "version": "8.7.0", - "resolved": "https://registry.npmjs.org/whatwg-url/-/whatwg-url-8.7.0.tgz", - "integrity": "sha512-gAojqb/m9Q8a5IV96E3fHJM70AzCkgt4uXYX2O7EmuyOnLrViCQlsEBmF9UQIu3/aeAIp2U17rtbpZWNntQqdg==", + "node_modules/json-buffer": { + "version": "3.0.1", + "resolved": "https://registry.npmjs.org/json-buffer/-/json-buffer-3.0.1.tgz", + "integrity": "sha512-4bV5BfR2mqfQTJm+V5tPPdf+ZpuhiIvTuAB5g8kcrXOZpTT/QwwVRWBywX1ozr6lEuPdbHxwaJlm9G6mI2sfSQ==", "dev": true, - "dependencies": { - "lodash": "^4.7.0", - "tr46": "^2.1.0", - "webidl-conversions": "^6.1.0" - }, - "engines": { - "node": ">=10" - } + "license": "MIT" }, "node_modules/json-parse-better-errors": { "version": "1.0.2", "resolved": "https://registry.npmjs.org/json-parse-better-errors/-/json-parse-better-errors-1.0.2.tgz", "integrity": "sha512-mrqyZKfX5EhL7hvqcV6WG1yYjnjeuYDzDhhcAAUrq8Po85NBQBJP+ZDUT75qZQ98IkUoBqdkExkukOU7Ts2wrw==", - "dev": true + "dev": true, + "license": "MIT" + }, + "node_modules/json-parse-even-better-errors": { + "version": "2.3.1", + "resolved": "https://registry.npmjs.org/json-parse-even-better-errors/-/json-parse-even-better-errors-2.3.1.tgz", + "integrity": "sha512-xyFwyhro/JEof6Ghe2iz2NcXoj2sloNsWr/XsERDK/oiPCfaNhl5ONfp+jQdAZRQQ0IJWNzH9zIZF7li91kh2w==", + "dev": true, + "license": "MIT" }, "node_modules/json-schema-traverse": { "version": "0.4.1", "resolved": "https://registry.npmjs.org/json-schema-traverse/-/json-schema-traverse-0.4.1.tgz", "integrity": "sha512-xbbCH5dCYU5T8LcEhhuh7HJ88HXuW3qsI3Y0zOZFKfZEHcpWiHU/Jxzk629Brsab/mMiHQti9wMP+845RPe3Vg==", - "dev": true + "dev": true, + "license": "MIT" }, "node_modules/json-stable-stringify-without-jsonify": { "version": "1.0.1", "resolved": "https://registry.npmjs.org/json-stable-stringify-without-jsonify/-/json-stable-stringify-without-jsonify-1.0.1.tgz", - "integrity": "sha1-nbe1lJatPzz+8wp1FC0tkwrXJlE=", - "dev": true + "integrity": "sha512-Bdboy+l7tA3OGW6FjyFHWkP5LuByj1Tk33Ljyq0axyzdk9//JSi2u3fP1QSmd1KNwq6VOKYGlAu87CisVir6Pw==", + "dev": true, + "license": "MIT" }, "node_modules/json5": { - "version": "2.1.3", - "resolved": "https://registry.npmjs.org/json5/-/json5-2.1.3.tgz", - "integrity": "sha512-KXPvOm8K9IJKFM0bmdn8QXh7udDh1g/giieX0NLCaMnb4hEiVFqnop2ImTXCc5e0/oHz3LTqmHGtExn5hfMkOA==", + "version": "2.2.3", + "resolved": "https://registry.npmjs.org/json5/-/json5-2.2.3.tgz", + "integrity": "sha512-XmOWe7eyHYH14cLdVPoyg+GOH3rYX++KpzrylJwSW98t3Nk+U8XOl8FWKOgwtzdb8lXGf6zYwDUzeHMWfxasyg==", "dev": true, - "dependencies": { - "minimist": "^1.2.5" - }, + "license": "MIT", "bin": { "json5": "lib/cli.js" }, @@ -5698,29 +6344,22 @@ "node": ">=6" } }, - "node_modules/jsonfile": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/jsonfile/-/jsonfile-4.0.0.tgz", - "integrity": "sha1-h3Gq4HmbZAdrdmQPygWPnBDjPss=", - "dev": true, - "optionalDependencies": { - "graceful-fs": "^4.1.6" - } - }, "node_modules/jsonpointer": { - "version": "5.0.0", - "resolved": "https://registry.npmjs.org/jsonpointer/-/jsonpointer-5.0.0.tgz", - "integrity": "sha512-PNYZIdMjVIvVgDSYKTT63Y+KZ6IZvGRNNWcxwD+GNnUz1MKPfv30J8ueCjdwcN0nDx2SlshgyB7Oy0epAzVRRg==", + "version": "5.0.1", + "resolved": "https://registry.npmjs.org/jsonpointer/-/jsonpointer-5.0.1.tgz", + "integrity": "sha512-p/nXbhSEcu3pZRdkW1OfJhpsVtW1gd4Wa1fnQc9YLiTfAjn0312eMKimbdIQzuZl9aa9xUGaRlP9T/CJE/ditQ==", "dev": true, + "license": "MIT", "engines": { "node": ">=0.10.0" } }, "node_modules/jsonwebtoken": { - "version": "8.5.1", - "resolved": "https://registry.npmjs.org/jsonwebtoken/-/jsonwebtoken-8.5.1.tgz", - "integrity": "sha512-XjwVfRS6jTMsqYs0EsuJ4LGxXV14zQybNd4L2r0UvbVnSF9Af8x7p5MzbJ90Ioz/9TI41/hTCvznF/loiSzn8w==", + "version": "9.0.2", + "resolved": "https://registry.npmjs.org/jsonwebtoken/-/jsonwebtoken-9.0.2.tgz", + "integrity": "sha512-PRp66vJ865SSqOlgqS8hujT5U4AOgMfhrwYIuIhfKaoSCZcirrmASQr8CX7cUg+RMih+hgznrjp99o+W4pJLHQ==", "dev": true, + "license": "MIT", "dependencies": { "jws": "^3.2.2", "lodash.includes": "^4.3.0", @@ -5731,30 +6370,19 @@ "lodash.isstring": "^4.0.1", "lodash.once": "^4.0.0", "ms": "^2.1.1", - "semver": "^5.6.0" + "semver": "^7.5.4" }, "engines": { - "node": ">=4", - "npm": ">=1.4.28" + "node": ">=12", + "npm": ">=6" } }, - "node_modules/jsonwebtoken/node_modules/ms": { - "version": "2.1.2", - "resolved": "https://registry.npmjs.org/ms/-/ms-2.1.2.tgz", - "integrity": "sha512-sGkPx+VjMtmA6MX27oA4FBFELFCZZ4S4XqeGOXCv68tT+jb3vk/RyaKWP0PTKyWtmLSM0b+adUTEvbs1PEaH2w==", - "dev": true - }, - "node_modules/just-debounce": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/just-debounce/-/just-debounce-1.0.0.tgz", - "integrity": "sha1-h/zPrv/AtozRnVX2cilD+SnqNeo=", - "dev": true - }, "node_modules/jwa": { "version": "1.4.1", "resolved": "https://registry.npmjs.org/jwa/-/jwa-1.4.1.tgz", "integrity": "sha512-qiLX/xhEEFKUAJ6FiBMbes3w9ATzyk5W7Hvzpa/SLYdxNtng+gcurvrI7TbACjIXlsJyr05/S1oUhZrc63evQA==", "dev": true, + "license": "MIT", "dependencies": { "buffer-equal-constant-time": "1.0.1", "ecdsa-sig-formatter": "1.0.11", @@ -5766,362 +6394,189 @@ "resolved": "https://registry.npmjs.org/jws/-/jws-3.2.2.tgz", "integrity": "sha512-YHlZCB6lMTllWDtSPHz/ZXTsi8S00usEV6v1tjq8tOUZzw7DpSDWVXjXDre6ed1w/pd495ODpHZYSdkRTsa0HA==", "dev": true, + "license": "MIT", "dependencies": { "jwa": "^1.4.1", "safe-buffer": "^5.0.1" } }, + "node_modules/keyv": { + "version": "4.5.4", + "resolved": "https://registry.npmjs.org/keyv/-/keyv-4.5.4.tgz", + "integrity": "sha512-oxVHkHR/EJf2CNXnWxRLW6mg7JyCCUcG0DtEGmL2ctUo1PNTin1PUil+r/+4r5MpVgC/fn1kjsx7mjSujKqIpw==", + "dev": true, + "license": "MIT", + "dependencies": { + "json-buffer": "3.0.1" + } + }, "node_modules/kind-of": { "version": "6.0.3", "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-6.0.3.tgz", "integrity": "sha512-dcS1ul+9tmeD95T+x28/ehLgd9mENa3LsvDTtzm3vyBEO7RPptvAD+t44WVXaUjTBRcrpFeFlC8WCruUR456hw==", "dev": true, + "license": "MIT", "engines": { "node": ">=0.10.0" } }, - "node_modules/klaw": { - "version": "4.0.1", - "resolved": "https://registry.npmjs.org/klaw/-/klaw-4.0.1.tgz", - "integrity": "sha512-pgsE40/SvC7st04AHiISNewaIMUbY5V/K8b21ekiPiFoYs/EYSdsGa+FJArB1d441uq4Q8zZyIxvAzkGNlBdRw==", + "node_modules/levn": { + "version": "0.4.1", + "resolved": "https://registry.npmjs.org/levn/-/levn-0.4.1.tgz", + "integrity": "sha512-+bT2uH4E5LGE7h/n3evcS/sQlJXCpIp6ym8OWJ5eV6+67Dsql/LaaT7qJBAt2rzfoa/5QBGBhxDix1dMt2kQKQ==", "dev": true, + "license": "MIT", + "dependencies": { + "prelude-ls": "^1.2.1", + "type-check": "~0.4.0" + }, "engines": { - "node": ">=14.14.0" + "node": ">= 0.8.0" } }, - "node_modules/ky": { - "version": "0.12.0", - "resolved": "https://registry.npmjs.org/ky/-/ky-0.12.0.tgz", - "integrity": "sha512-t9b7v3V2fGwAcQnnDDQwKQGF55eWrf4pwi1RN08Fy8b/9GEwV7Ea0xQiaSW6ZbeghBHIwl8kgnla4vVo9seepQ==", + "node_modules/lines-and-columns": { + "version": "1.2.4", + "resolved": "https://registry.npmjs.org/lines-and-columns/-/lines-and-columns-1.2.4.tgz", + "integrity": "sha512-7ylylesZQ/PV29jhEDl3Ufjo6ZX7gCqJr5F7PKrqc93v7fzSymt1BpwEU8nAUXs8qzzvqhbjhK5QZg6Mt/HkBg==", "dev": true, - "engines": { - "node": ">=8" - } + "license": "MIT" }, - "node_modules/ky-universal": { - "version": "0.3.0", - "resolved": "https://registry.npmjs.org/ky-universal/-/ky-universal-0.3.0.tgz", - "integrity": "sha512-CM4Bgb2zZZpsprcjI6DNYTaH3oGHXL2u7BU4DK+lfCuC4snkt9/WRpMYeKbBbXscvKkeqBwzzjFX2WwmKY5K/A==", + "node_modules/load-json-file": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/load-json-file/-/load-json-file-4.0.0.tgz", + "integrity": "sha512-Kx8hMakjX03tiGTLAIdJ+lL0htKnXjEZN6hk/tozf/WOuYGdZBJrZ+rCJRbVCugsjB3jMLn9746NsQIf5VjBMw==", "dev": true, + "license": "MIT", "dependencies": { - "abort-controller": "^3.0.0", - "node-fetch": "^2.6.0" + "graceful-fs": "^4.1.2", + "parse-json": "^4.0.0", + "pify": "^3.0.0", + "strip-bom": "^3.0.0" }, "engines": { - "node": ">=8" - }, - "peerDependencies": { - "ky": ">=0.12.0" + "node": ">=4" } }, - "node_modules/ky-universal/node_modules/node-fetch": { - "version": "2.6.7", - "resolved": "https://registry.npmjs.org/node-fetch/-/node-fetch-2.6.7.tgz", - "integrity": "sha512-ZjMPFEfVx5j+y2yF35Kzx5sF7kDzxuDj6ziH4FFbOp87zKDZNx8yExJIb05OGF4Nlt9IHFIMBkRl41VdvcNdbQ==", + "node_modules/locate-path": { + "version": "6.0.0", + "resolved": "https://registry.npmjs.org/locate-path/-/locate-path-6.0.0.tgz", + "integrity": "sha512-iPZK6eYjbxRu3uB4/WZ3EsEIMJFMqAoopl3R+zuq0UjcAm/MO6KCweDgPfP3elTztoKP3KtnVHxTn2NHBSDVUw==", "dev": true, + "license": "MIT", "dependencies": { - "whatwg-url": "^5.0.0" + "p-locate": "^5.0.0" }, "engines": { - "node": "4.x || >=6.0.0" - }, - "peerDependencies": { - "encoding": "^0.1.0" + "node": ">=10" }, - "peerDependenciesMeta": { - "encoding": { - "optional": true - } + "funding": { + "url": "https://github.com/sponsors/sindresorhus" } }, - "node_modules/ky-universal/node_modules/tr46": { - "version": "0.0.3", - "resolved": "https://registry.npmjs.org/tr46/-/tr46-0.0.3.tgz", - "integrity": "sha1-gYT9NH2snNwYWZLzpmIuFLnZq2o=", - "dev": true - }, - "node_modules/ky-universal/node_modules/webidl-conversions": { - "version": "3.0.1", - "resolved": "https://registry.npmjs.org/webidl-conversions/-/webidl-conversions-3.0.1.tgz", - "integrity": "sha1-JFNCdeKnvGvnvIZhHMFq4KVlSHE=", - "dev": true - }, - "node_modules/ky-universal/node_modules/whatwg-url": { - "version": "5.0.0", - "resolved": "https://registry.npmjs.org/whatwg-url/-/whatwg-url-5.0.0.tgz", - "integrity": "sha1-lmRU6HZUYuN2RNNib2dCzotwll0=", + "node_modules/lodash": { + "version": "4.17.21", + "resolved": "https://registry.npmjs.org/lodash/-/lodash-4.17.21.tgz", + "integrity": "sha512-v2kDEe57lecTulaDIuNTPy3Ry4gLGJ6Z1O3vE1krgXZNrsQ+LFTGHVxVjcXPs17LhbZVGedAJv8XZ1tvj5FvSg==", "dev": true, - "dependencies": { - "tr46": "~0.0.3", - "webidl-conversions": "^3.0.0" - } + "license": "MIT" }, - "node_modules/last-run": { - "version": "1.1.1", - "resolved": "https://registry.npmjs.org/last-run/-/last-run-1.1.1.tgz", - "integrity": "sha1-RblpQsF7HHnHchmCWbqUO+v4yls=", + "node_modules/lodash.find": { + "version": "4.6.0", + "resolved": "https://registry.npmjs.org/lodash.find/-/lodash.find-4.6.0.tgz", + "integrity": "sha512-yaRZoAV3Xq28F1iafWN1+a0rflOej93l1DQUejs3SZ41h2O9UJBoS9aueGjPDgAl4B6tPC0NuuchLKaDQQ3Isg==", "dev": true, - "dependencies": { - "default-resolution": "^2.0.0", - "es6-weak-map": "^2.0.1" - }, - "engines": { - "node": ">= 0.10" - } + "license": "MIT" }, - "node_modules/lazystream": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/lazystream/-/lazystream-1.0.0.tgz", - "integrity": "sha1-9plf4PggOS9hOWvolGJAe7dxaOQ=", + "node_modules/lodash.includes": { + "version": "4.3.0", + "resolved": "https://registry.npmjs.org/lodash.includes/-/lodash.includes-4.3.0.tgz", + "integrity": "sha512-W3Bx6mdkRTGtlJISOvVD/lbqjTlPPUDTMnlXZFnVwi9NKJ6tiAk6LVdlhZMm17VZisqhKcgzpO5Wz91PCt5b0w==", "dev": true, - "dependencies": { - "readable-stream": "^2.0.5" - }, - "engines": { - "node": ">= 0.6.3" - } - }, - "node_modules/lcid": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/lcid/-/lcid-1.0.0.tgz", - "integrity": "sha1-MIrMr6C8SDo4Z7S28rlQYlHRuDU=", - "dev": true, - "dependencies": { - "invert-kv": "^1.0.0" - }, - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/lead": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/lead/-/lead-1.0.0.tgz", - "integrity": "sha1-bxT5mje+Op3XhPVJVpDlkDRm7kI=", - "dev": true, - "dependencies": { - "flush-write-stream": "^1.0.2" - }, - "engines": { - "node": ">= 0.10" - } - }, - "node_modules/levn": { - "version": "0.3.0", - "resolved": "https://registry.npmjs.org/levn/-/levn-0.3.0.tgz", - "integrity": "sha1-OwmSTt+fCDwEkP3UwLxEIeBHZO4=", - "dev": true, - "dependencies": { - "prelude-ls": "~1.1.2", - "type-check": "~0.3.2" - }, - "engines": { - "node": ">= 0.8.0" - } - }, - "node_modules/li": { - "version": "1.3.0", - "resolved": "https://registry.npmjs.org/li/-/li-1.3.0.tgz", - "integrity": "sha1-IsWbyu+qmo7zWc91l4TkvxBq6hs=", - "dev": true - }, - "node_modules/liftoff": { - "version": "3.1.0", - "resolved": "https://registry.npmjs.org/liftoff/-/liftoff-3.1.0.tgz", - "integrity": "sha512-DlIPlJUkCV0Ips2zf2pJP0unEoT1kwYhiiPUGF3s/jtxTCjziNLoiVVh+jqWOWeFi6mmwQ5fNxvAUyPad4Dfog==", - "dev": true, - "dependencies": { - "extend": "^3.0.0", - "findup-sync": "^3.0.0", - "fined": "^1.0.1", - "flagged-respawn": "^1.0.0", - "is-plain-object": "^2.0.4", - "object.map": "^1.0.0", - "rechoir": "^0.6.2", - "resolve": "^1.1.7" - }, - "engines": { - "node": ">= 0.8" - } - }, - "node_modules/linkify-it": { - "version": "3.0.3", - "resolved": "https://registry.npmjs.org/linkify-it/-/linkify-it-3.0.3.tgz", - "integrity": "sha512-ynTsyrFSdE5oZ/O9GEf00kPngmOfVwazR5GKDq6EYfhlpFug3J2zybX56a2PRRpc9P+FuSoGNAwjlbDs9jJBPQ==", - "dev": true, - "dependencies": { - "uc.micro": "^1.0.1" - } - }, - "node_modules/load-json-file": { - "version": "1.1.0", - "resolved": "https://registry.npmjs.org/load-json-file/-/load-json-file-1.1.0.tgz", - "integrity": "sha1-lWkFcI1YtLq0wiYbBPWfMcmTdMA=", - "dev": true, - "dependencies": { - "graceful-fs": "^4.1.2", - "parse-json": "^2.2.0", - "pify": "^2.0.0", - "pinkie-promise": "^2.0.0", - "strip-bom": "^2.0.0" - }, - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/locate-path": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/locate-path/-/locate-path-3.0.0.tgz", - "integrity": "sha512-7AO748wWnIhNqAuaty2ZWHkQHRSNfPVIsPIfwEOWO22AmaoVrWavlOcMR5nzTLNYvp36X220/maaRsrec1G65A==", - "dev": true, - "dependencies": { - "p-locate": "^3.0.0", - "path-exists": "^3.0.0" - }, - "engines": { - "node": ">=6" - } - }, - "node_modules/locate-path/node_modules/path-exists": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/path-exists/-/path-exists-3.0.0.tgz", - "integrity": "sha1-zg6+ql94yxiSXqfYENe1mwEP1RU=", - "dev": true, - "engines": { - "node": ">=4" - } - }, - "node_modules/lodash": { - "version": "4.17.21", - "resolved": "https://registry.npmjs.org/lodash/-/lodash-4.17.21.tgz", - "integrity": "sha512-v2kDEe57lecTulaDIuNTPy3Ry4gLGJ6Z1O3vE1krgXZNrsQ+LFTGHVxVjcXPs17LhbZVGedAJv8XZ1tvj5FvSg==", - "dev": true - }, - "node_modules/lodash._reinterpolate": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/lodash._reinterpolate/-/lodash._reinterpolate-3.0.0.tgz", - "integrity": "sha1-DM8tiRZq8Ds2Y8eWU4t1rG4RTZ0=", - "dev": true - }, - "node_modules/lodash.find": { - "version": "4.6.0", - "resolved": "https://registry.npmjs.org/lodash.find/-/lodash.find-4.6.0.tgz", - "integrity": "sha1-ywcE1Hq3F4n/oN6Ll92Sb7iLE7E=", - "dev": true - }, - "node_modules/lodash.get": { - "version": "4.4.2", - "resolved": "https://registry.npmjs.org/lodash.get/-/lodash.get-4.4.2.tgz", - "integrity": "sha1-LRd/ZS+jHpObRDjVNBSZ36OCXpk=", - "dev": true - }, - "node_modules/lodash.includes": { - "version": "4.3.0", - "resolved": "https://registry.npmjs.org/lodash.includes/-/lodash.includes-4.3.0.tgz", - "integrity": "sha1-YLuYqHy5I8aMoeUTJUgzFISfVT8=", - "dev": true + "license": "MIT" }, "node_modules/lodash.isboolean": { "version": "3.0.3", "resolved": "https://registry.npmjs.org/lodash.isboolean/-/lodash.isboolean-3.0.3.tgz", - "integrity": "sha1-bC4XHbKiV82WgC/UOwGyDV9YcPY=", - "dev": true + "integrity": "sha512-Bz5mupy2SVbPHURB98VAcw+aHh4vRV5IPNhILUCsOzRmsTmSQ17jIuqopAentWoehktxGd9e/hbIXq980/1QJg==", + "dev": true, + "license": "MIT" }, "node_modules/lodash.isinteger": { "version": "4.0.4", "resolved": "https://registry.npmjs.org/lodash.isinteger/-/lodash.isinteger-4.0.4.tgz", - "integrity": "sha1-YZwK89A/iwTDH1iChAt3sRzWg0M=", - "dev": true + "integrity": "sha512-DBwtEWN2caHQ9/imiNeEA5ys1JoRtRfY3d7V9wkqtbycnAmTvRRmbHKDV4a0EYc678/dia0jrte4tjYwVBaZUA==", + "dev": true, + "license": "MIT" }, "node_modules/lodash.isnumber": { "version": "3.0.3", "resolved": "https://registry.npmjs.org/lodash.isnumber/-/lodash.isnumber-3.0.3.tgz", - "integrity": "sha1-POdoEMWSjQM1IwGsKHMX8RwLH/w=", - "dev": true + "integrity": "sha512-QYqzpfwO3/CWf3XP+Z+tkQsfaLL/EnUlXWVkIk5FUPc4sBdTehEqZONuyRt2P67PXAk+NXmTBcc97zw9t1FQrw==", + "dev": true, + "license": "MIT" }, "node_modules/lodash.isobject": { "version": "3.0.2", "resolved": "https://registry.npmjs.org/lodash.isobject/-/lodash.isobject-3.0.2.tgz", - "integrity": "sha1-PI+41bW/S/kK4G4U8qUwpO2TXh0=", - "dev": true + "integrity": "sha512-3/Qptq2vr7WeJbB4KHUSKlq8Pl7ASXi3UG6CMbBm8WRtXi8+GHm7mKaU3urfpSEzWe2wCIChs6/sdocUsTKJiA==", + "dev": true, + "license": "MIT" }, "node_modules/lodash.isplainobject": { "version": "4.0.6", "resolved": "https://registry.npmjs.org/lodash.isplainobject/-/lodash.isplainobject-4.0.6.tgz", - "integrity": "sha1-fFJqUtibRcRcxpC4gWO+BJf1UMs=", - "dev": true + "integrity": "sha512-oSXzaWypCMHkPC3NvBEaPHf0KsA5mvPrOPgQWDsbg8n7orZ290M0BmC/jgRZ4vcJ6DTAhjrsSYgdsW/F+MFOBA==", + "dev": true, + "license": "MIT" }, "node_modules/lodash.isstring": { "version": "4.0.1", "resolved": "https://registry.npmjs.org/lodash.isstring/-/lodash.isstring-4.0.1.tgz", - "integrity": "sha1-1SfftUVuynzJu5XV2ur4i6VKVFE=", - "dev": true + "integrity": "sha512-0wJxfxH1wgO3GrbuP+dTTk7op+6L41QCXbGINEmD+ny/G/eCqGzxyCsh7159S+mgDDcoarnBw6PC1PS5+wUGgw==", + "dev": true, + "license": "MIT" }, "node_modules/lodash.keys": { "version": "4.2.0", "resolved": "https://registry.npmjs.org/lodash.keys/-/lodash.keys-4.2.0.tgz", - "integrity": "sha1-oIYCrBLk+4P5H8H7ejYKTZujUgU=", - "dev": true + "integrity": "sha512-J79MkJcp7Df5mizHiVNpjoHXLi4HLjh9VLS/M7lQSGoQ+0oQ+lWEigREkqKyizPB1IawvQLLKY8mzEcm1tkyxQ==", + "dev": true, + "license": "MIT" }, "node_modules/lodash.mapvalues": { "version": "4.6.0", "resolved": "https://registry.npmjs.org/lodash.mapvalues/-/lodash.mapvalues-4.6.0.tgz", - "integrity": "sha1-G6+lAF3p3W9PJmaMMMo3IwzJaJw=", - "dev": true + "integrity": "sha512-JPFqXFeZQ7BfS00H58kClY7SPVeHertPE0lNuCyZ26/XlN8TvakYD7b9bGyNmXbT/D3BbtPAAmq90gPWqLkxlQ==", + "dev": true, + "license": "MIT" }, "node_modules/lodash.memoize": { "version": "4.1.2", "resolved": "https://registry.npmjs.org/lodash.memoize/-/lodash.memoize-4.1.2.tgz", - "integrity": "sha1-vMbEmkKihA7Zl/Mj6tpezRguC/4=", - "dev": true + "integrity": "sha512-t7j+NzmgnQzTAYXcsHYLgimltOV1MXHtlOWf6GjL9Kj8GK5FInw5JotxvbOs+IvV1/Dzo04/fCGfLVs7aXb4Ag==", + "dev": true, + "license": "MIT" + }, + "node_modules/lodash.merge": { + "version": "4.6.2", + "resolved": "https://registry.npmjs.org/lodash.merge/-/lodash.merge-4.6.2.tgz", + "integrity": "sha512-0KpjqXRVvrYyCsX1swR/XTK0va6VQkQM6MNo7PqW77ByjAhoARA8EfrP1N4+KlKj8YS0ZUCtRT/YUuhyYDujIQ==", + "dev": true, + "license": "MIT" }, "node_modules/lodash.once": { "version": "4.1.1", "resolved": "https://registry.npmjs.org/lodash.once/-/lodash.once-4.1.1.tgz", - "integrity": "sha1-DdOXEhPHxW34gJd9UEyI+0cal6w=", - "dev": true - }, - "node_modules/lodash.set": { - "version": "4.3.2", - "resolved": "https://registry.npmjs.org/lodash.set/-/lodash.set-4.3.2.tgz", - "integrity": "sha1-2HV7HagH3eJIFrDWqEvqGnYjCyM=", - "dev": true - }, - "node_modules/lodash.sortby": { - "version": "4.7.0", - "resolved": "https://registry.npmjs.org/lodash.sortby/-/lodash.sortby-4.7.0.tgz", - "integrity": "sha1-7dFMgk4sycHgsKG0K7UhBRakJDg=", - "dev": true - }, - "node_modules/lodash.template": { - "version": "4.5.0", - "resolved": "https://registry.npmjs.org/lodash.template/-/lodash.template-4.5.0.tgz", - "integrity": "sha512-84vYFxIkmidUiFxidA/KjjH9pAycqW+h980j7Fuz5qxRtO9pgB7MDFTdys1N7A5mcucRiDyEq4fusljItR1T/A==", - "dev": true, - "dependencies": { - "lodash._reinterpolate": "^3.0.0", - "lodash.templatesettings": "^4.0.0" - } - }, - "node_modules/lodash.templatesettings": { - "version": "4.1.0", - "resolved": "https://registry.npmjs.org/lodash.templatesettings/-/lodash.templatesettings-4.1.0.tgz", - "integrity": "sha1-K01OlbpEDZFf8IvImeRVNmZxMxY=", + "integrity": "sha512-Sb487aTOCr9drQVL8pIxOzVhafOjZN9UU54hiN8PU3uAiSV7lx1yYNpbNmex2PK6dSJoNTSJUUswT651yww3Mg==", "dev": true, - "dependencies": { - "lodash._reinterpolate": "~3.0.0" - } - }, - "node_modules/lodash.uniq": { - "version": "4.5.0", - "resolved": "https://registry.npmjs.org/lodash.uniq/-/lodash.uniq-4.5.0.tgz", - "integrity": "sha1-0CJTc662Uq3BvILklFM5qEJ1R3M=", - "dev": true + "license": "MIT" }, "node_modules/log-symbols": { "version": "4.1.0", "resolved": "https://registry.npmjs.org/log-symbols/-/log-symbols-4.1.0.tgz", "integrity": "sha512-8XPvpAA8uyhfteu8pIvQxpJZ7SYYdpUivZpGy6sFsBuKRY/7rQGavedeB8aK+Zkyq6upMFVL/9AW6vOYzfRyLg==", "dev": true, + "license": "MIT", "dependencies": { "chalk": "^4.1.0", "is-unicode-supported": "^0.1.0" @@ -6138,6 +6593,7 @@ "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-4.3.0.tgz", "integrity": "sha512-zbB9rCJAT1rbjiVDb2hqKFHNYLxgtk8NURxZ3IZwD3F6NtxbXZQCnnSi1Lkx+IDohdPlFp222wVALIheZJQSEg==", "dev": true, + "license": "MIT", "dependencies": { "color-convert": "^2.0.1" }, @@ -6153,6 +6609,7 @@ "resolved": "https://registry.npmjs.org/chalk/-/chalk-4.1.2.tgz", "integrity": "sha512-oKnbhFyRIXpUuez8iBMmyEa4nbj4IOQyuhc/wy9kY7/WVPcwIO9VA668Pu8RkO7+0G76SLROeyw9CpQ061i4mA==", "dev": true, + "license": "MIT", "dependencies": { "ansi-styles": "^4.1.0", "supports-color": "^7.1.0" @@ -6169,6 +6626,7 @@ "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-2.0.1.tgz", "integrity": "sha512-RRECPsj7iu/xb5oKYcsFHSppFNnsj/52OVTRKb4zP5onXwVF3zVmmToNcOfGC+CRDpfK/U584fMg38ZHCaElKQ==", "dev": true, + "license": "MIT", "dependencies": { "color-name": "~1.1.4" }, @@ -6180,13 +6638,15 @@ "version": "1.1.4", "resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.4.tgz", "integrity": "sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA==", - "dev": true + "dev": true, + "license": "MIT" }, "node_modules/log-symbols/node_modules/has-flag": { "version": "4.0.0", "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-4.0.0.tgz", "integrity": "sha512-EykJT/Q1KjTWctppgIAgfSO0tKVuZUjhgMr17kqTumMl6Afv3EISleU7qZUzoXDFTAHTDC4NOoG/ZxU3EvlMPQ==", "dev": true, + "license": "MIT", "engines": { "node": ">=8" } @@ -6196,6 +6656,7 @@ "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-7.2.0.tgz", "integrity": "sha512-qpCAvRl9stuOHveKsn7HncJRvv501qIacKzQlO/+Lwxc9+0q2wLyv4Dfvt80/DPn2pqOBsJdDiogXGR9+OvwRw==", "dev": true, + "license": "MIT", "dependencies": { "has-flag": "^4.0.0" }, @@ -6203,13816 +6664,3664 @@ "node": ">=8" } }, - "node_modules/loud-rejection": { - "version": "1.6.0", - "resolved": "https://registry.npmjs.org/loud-rejection/-/loud-rejection-1.6.0.tgz", - "integrity": "sha1-W0b4AUft7leIcPCG0Eghz5mOVR8=", + "node_modules/loupe": { + "version": "3.1.3", + "resolved": "https://registry.npmjs.org/loupe/-/loupe-3.1.3.tgz", + "integrity": "sha512-kkIp7XSkP78ZxJEsSxW3712C6teJVoeHHwgo9zJ380de7IYyJ2ISlxojcH2pC5OFLewESmnRi/+XCDIEEVyoug==", "dev": true, - "dependencies": { - "currently-unhandled": "^0.4.1", - "signal-exit": "^3.0.0" - }, - "engines": { - "node": ">=0.10.0" - } + "license": "MIT" }, "node_modules/lru-cache": { - "version": "6.0.0", - "resolved": "https://registry.npmjs.org/lru-cache/-/lru-cache-6.0.0.tgz", - "integrity": "sha512-Jo6dJ04CmSjuznwJSS3pUeWmd/H0ffTlkXXgwZi+eq1UCmqQwCh+eLsYOYCwY991i2Fah4h1BEMCx4qThGbsiA==", + "version": "10.4.3", + "resolved": "https://registry.npmjs.org/lru-cache/-/lru-cache-10.4.3.tgz", + "integrity": "sha512-JNAzZcXrCt42VGLuYz0zfAzDfAvJWW6AfYlDBQyDV5DClI2m5sAmK+OIO7s59XfsRsWHp02jAJrRadPRGTt6SQ==", + "dev": true, + "license": "ISC" + }, + "node_modules/magic-string": { + "version": "0.30.17", + "resolved": "https://registry.npmjs.org/magic-string/-/magic-string-0.30.17.tgz", + "integrity": "sha512-sNPKHvyjVf7gyjwS4xGTaW/mCnF8wnjtifKBEhxfZ7E/S8tQ0rssrwGNn6q8JH/ohItJfSQp9mBtQYuTlH5QnA==", "dev": true, + "license": "MIT", "dependencies": { - "yallist": "^4.0.0" - }, - "engines": { - "node": ">=10" + "@jridgewell/sourcemap-codec": "^1.5.0" } }, - "node_modules/macos-release": { - "version": "2.4.1", - "resolved": "https://registry.npmjs.org/macos-release/-/macos-release-2.4.1.tgz", - "integrity": "sha512-H/QHeBIN1fIGJX517pvK8IEK53yQOW7YcEI55oYtgjDdoCQQz7eJS94qt5kNrscReEyuD/JcdFCm2XBEcGOITg==", + "node_modules/make-synchronized": { + "version": "0.4.2", + "resolved": "https://registry.npmjs.org/make-synchronized/-/make-synchronized-0.4.2.tgz", + "integrity": "sha512-EwEJSg8gSGLicKXp/VzNi1tvzhdmNBxOzslkkJSoNUCQFZKH/NIUIp7xlfN+noaHrz4BJDN73gne8IHnjl/F/A==", "dev": true, - "engines": { - "node": ">=6" - }, + "license": "MIT", "funding": { - "url": "https://github.com/sponsors/sindresorhus" + "url": "https://github.com/fisker/make-synchronized?sponsor=1" } }, - "node_modules/make-iterator": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/make-iterator/-/make-iterator-1.0.1.tgz", - "integrity": "sha512-pxiuXh0iVEq7VM7KMIhs5gxsfxCux2URptUQaXo4iZZJxBAzTPOLE2BumO5dbfVYq/hBJFBR/a1mFDmOx5AGmw==", + "node_modules/makeerror": { + "version": "1.0.12", + "resolved": "https://registry.npmjs.org/makeerror/-/makeerror-1.0.12.tgz", + "integrity": "sha512-JmqCvUhmt43madlpFzG4BQzG2Z3m6tvQDNKdClZnO3VbIudJYmxsT0FNJMeiB2+JTSlTQTSbU8QdesVmwJcmLg==", "dev": true, + "license": "BSD-3-Clause", "dependencies": { - "kind-of": "^6.0.2" - }, - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/map-cache": { - "version": "0.2.2", - "resolved": "https://registry.npmjs.org/map-cache/-/map-cache-0.2.2.tgz", - "integrity": "sha1-wyq9C9ZSXZsFFkW7TyasXcmKDb8=", - "dev": true, - "engines": { - "node": ">=0.10.0" + "tmpl": "1.0.5" } }, "node_modules/map-obj": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/map-obj/-/map-obj-2.0.0.tgz", - "integrity": "sha1-plzSkIepJZi4eRJXpSPgISIqwfk=", + "version": "4.3.0", + "resolved": "https://registry.npmjs.org/map-obj/-/map-obj-4.3.0.tgz", + "integrity": "sha512-hdN1wVrZbb29eBGiGjJbeP8JbKjq1urkHJ/LIP/NY48MZ1QVXUsQBV1G1zvYFHn1XE06cwjBsOI2K3Ulnj1YXQ==", "dev": true, + "license": "MIT", "engines": { - "node": ">=4" + "node": ">=8" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" } }, - "node_modules/map-stream": { - "version": "0.0.7", - "resolved": "https://registry.npmjs.org/map-stream/-/map-stream-0.0.7.tgz", - "integrity": "sha1-ih8HiW2CsQkmvTdEokIACfiJdKg=", - "dev": true - }, - "node_modules/map-visit": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/map-visit/-/map-visit-1.0.0.tgz", - "integrity": "sha1-7Nyo8TFE5mDxtb1B8S80edmN+48=", + "node_modules/math-intrinsics": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/math-intrinsics/-/math-intrinsics-1.1.0.tgz", + "integrity": "sha512-/IXtbwEk5HTPyEwyKX6hGkYXxM9nbj64B+ilVJnC/R6B0pH5G4V3b0pVbL7DBj4tkhBAppbQUlf6F6Xl9LHu1g==", "dev": true, - "dependencies": { - "object-visit": "^1.0.0" - }, + "license": "MIT", "engines": { - "node": ">=0.10.0" + "node": ">= 0.4" } }, - "node_modules/markdown-it": { - "version": "12.3.2", - "resolved": "https://registry.npmjs.org/markdown-it/-/markdown-it-12.3.2.tgz", - "integrity": "sha512-TchMembfxfNVpHkbtriWltGWc+m3xszaRD0CZup7GFFhzIgQqxIfn3eGj1yZpfuflzPvfkt611B2Q/Bsk1YnGg==", + "node_modules/memfs-or-file-map-to-github-branch": { + "version": "1.3.0", + "resolved": "https://registry.npmjs.org/memfs-or-file-map-to-github-branch/-/memfs-or-file-map-to-github-branch-1.3.0.tgz", + "integrity": "sha512-AzgIEodmt51dgwB3TmihTf1Fh2SmszdZskC6trFHy4v71R5shLmdjJSYI7ocVfFa7C/TE6ncb0OZ9eBg2rmkBQ==", "dev": true, + "license": "MIT", "dependencies": { - "argparse": "^2.0.1", - "entities": "~2.1.0", - "linkify-it": "^3.0.1", - "mdurl": "^1.0.1", - "uc.micro": "^1.0.5" - }, - "bin": { - "markdown-it": "bin/markdown-it.js" + "@octokit/rest": "*" } }, - "node_modules/markdown-it-anchor": { - "version": "8.4.1", - "resolved": "https://registry.npmjs.org/markdown-it-anchor/-/markdown-it-anchor-8.4.1.tgz", - "integrity": "sha512-sLODeRetZ/61KkKLJElaU3NuU2z7MhXf12Ml1WJMSdwpngeofneCRF+JBbat8HiSqhniOMuTemXMrsI7hA6XyA==", + "node_modules/memorystream": { + "version": "0.3.1", + "resolved": "https://registry.npmjs.org/memorystream/-/memorystream-0.3.1.tgz", + "integrity": "sha512-S3UwM3yj5mtUSEfP41UZmt/0SCoVYUcU1rkXv+BQ5Ig8ndL4sPoJNBUJERafdPb5jjHJGuMgytgKvKIf58XNBw==", "dev": true, - "peerDependencies": { - "@types/markdown-it": "*", - "markdown-it": "*" + "engines": { + "node": ">= 0.10.0" } }, - "node_modules/markdown-it/node_modules/argparse": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/argparse/-/argparse-2.0.1.tgz", - "integrity": "sha512-8+9WqebbFzpX9OR+Wa6O29asIogeRMzcGtAINdpMHHyAg10f05aSFVBbcEqGf/PXw1EjAZ+q2/bEBg3DvurK3Q==", - "dev": true - }, - "node_modules/marked": { - "version": "4.0.12", - "resolved": "https://registry.npmjs.org/marked/-/marked-4.0.12.tgz", - "integrity": "sha512-hgibXWrEDNBWgGiK18j/4lkS6ihTe9sxtV4Q1OQppb/0zzyPSzoFANBa5MfsG/zgsWklmNnhm0XACZOH/0HBiQ==", + "node_modules/meow": { + "version": "9.0.0", + "resolved": "https://registry.npmjs.org/meow/-/meow-9.0.0.tgz", + "integrity": "sha512-+obSblOQmRhcyBt62furQqRAQpNyWXo8BuQ5bN7dG8wmwQ+vwHKp/rCFD4CrTP8CsDQD1sjoZ94K417XEUk8IQ==", "dev": true, - "bin": { - "marked": "bin/marked.js" + "license": "MIT", + "dependencies": { + "@types/minimist": "^1.2.0", + "camelcase-keys": "^6.2.2", + "decamelize": "^1.2.0", + "decamelize-keys": "^1.1.0", + "hard-rejection": "^2.1.0", + "minimist-options": "4.1.0", + "normalize-package-data": "^3.0.0", + "read-pkg-up": "^7.0.1", + "redent": "^3.0.0", + "trim-newlines": "^3.0.0", + "type-fest": "^0.18.0", + "yargs-parser": "^20.2.3" }, "engines": { - "node": ">= 12" + "node": ">=10" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" } }, - "node_modules/matchdep": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/matchdep/-/matchdep-2.0.0.tgz", - "integrity": "sha1-xvNINKDY28OzfCfui7yyfHd1WC4=", + "node_modules/meow/node_modules/hosted-git-info": { + "version": "4.1.0", + "resolved": "https://registry.npmjs.org/hosted-git-info/-/hosted-git-info-4.1.0.tgz", + "integrity": "sha512-kyCuEOWjJqZuDbRHzL8V93NzQhwIB71oFWSyzVo+KPZI+pnQPPxucdkrOZvkLRnrf5URsQM+IJ09Dw29cRALIA==", "dev": true, + "license": "ISC", "dependencies": { - "findup-sync": "^2.0.0", - "micromatch": "^3.0.4", - "resolve": "^1.4.0", - "stack-trace": "0.0.10" + "lru-cache": "^6.0.0" }, "engines": { - "node": ">= 0.10.0" + "node": ">=10" } }, - "node_modules/matchdep/node_modules/findup-sync": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/findup-sync/-/findup-sync-2.0.0.tgz", - "integrity": "sha1-kyaxSIwi0aYIhlCoaQGy2akKLLw=", + "node_modules/meow/node_modules/lru-cache": { + "version": "6.0.0", + "resolved": "https://registry.npmjs.org/lru-cache/-/lru-cache-6.0.0.tgz", + "integrity": "sha512-Jo6dJ04CmSjuznwJSS3pUeWmd/H0ffTlkXXgwZi+eq1UCmqQwCh+eLsYOYCwY991i2Fah4h1BEMCx4qThGbsiA==", "dev": true, + "license": "ISC", "dependencies": { - "detect-file": "^1.0.0", - "is-glob": "^3.1.0", - "micromatch": "^3.0.4", - "resolve-dir": "^1.0.1" + "yallist": "^4.0.0" }, "engines": { - "node": ">= 0.10" + "node": ">=10" } }, - "node_modules/matchdep/node_modules/is-glob": { - "version": "3.1.0", - "resolved": "https://registry.npmjs.org/is-glob/-/is-glob-3.1.0.tgz", - "integrity": "sha1-e6WuJCF4BKxwcHuWkiVnSGzD6Eo=", + "node_modules/meow/node_modules/normalize-package-data": { + "version": "3.0.3", + "resolved": "https://registry.npmjs.org/normalize-package-data/-/normalize-package-data-3.0.3.tgz", + "integrity": "sha512-p2W1sgqij3zMMyRC067Dg16bfzVH+w7hyegmpIvZ4JNjqtGOVAIvLmjBx3yP7YTe9vKJgkoNOPjwQGogDoMXFA==", "dev": true, + "license": "BSD-2-Clause", "dependencies": { - "is-extglob": "^2.1.0" + "hosted-git-info": "^4.0.1", + "is-core-module": "^2.5.0", + "semver": "^7.3.4", + "validate-npm-package-license": "^3.0.1" }, "engines": { - "node": ">=0.10.0" + "node": ">=10" } }, - "node_modules/mdurl": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/mdurl/-/mdurl-1.0.1.tgz", - "integrity": "sha1-/oWy7HWlkDfyrf7BAP1sYBdhFS4=", - "dev": true + "node_modules/meow/node_modules/yallist": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/yallist/-/yallist-4.0.0.tgz", + "integrity": "sha512-3wdGidZyq5PB084XLES5TpOSRA3wjXAlIWMhum2kRcv/41Sn2emQ0dycQW4uZXLejwKvg6EsvbdlVL+FYEct7A==", + "dev": true, + "license": "ISC" }, - "node_modules/memfs-or-file-map-to-github-branch": { - "version": "1.2.0", - "resolved": "https://registry.npmjs.org/memfs-or-file-map-to-github-branch/-/memfs-or-file-map-to-github-branch-1.2.0.tgz", - "integrity": "sha512-PloI9AkRXrLQuBU1s7eYQpl+4hkL0U0h23lddMaJ3ZGUufn8pdNRxd1kCfBqL5gISCFQs78ttXS15e4/f5vcTA==", + "node_modules/merge-stream": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/merge-stream/-/merge-stream-2.0.0.tgz", + "integrity": "sha512-abv/qOcuPfk3URPfDzmZU1LKmuw8kT+0nIHvKrKgFrwifol/doWcdA4ZqsWQ8ENrFKkd67Mfpo/LovbIUsbt3w==", "dev": true, - "dependencies": { - "@octokit/rest": "^16.43.1" - } + "license": "MIT" }, - "node_modules/memorystream": { - "version": "0.3.1", - "resolved": "https://registry.npmjs.org/memorystream/-/memorystream-0.3.1.tgz", - "integrity": "sha1-htcJCzDORV1j+64S3aUaR93K+bI=", + "node_modules/merge2": { + "version": "1.4.1", + "resolved": "https://registry.npmjs.org/merge2/-/merge2-1.4.1.tgz", + "integrity": "sha512-8q7VEgMJW4J8tcfVPy8g09NcQwZdbwFEqhe/WZkoIzjn/3TGDwtOCYtXGxA3O8tPzpczCCDgv+P2P5y00ZJOOg==", "dev": true, + "license": "MIT", "engines": { - "node": ">= 0.10.0" + "node": ">= 8" } }, - "node_modules/meow": { - "version": "5.0.0", - "resolved": "https://registry.npmjs.org/meow/-/meow-5.0.0.tgz", - "integrity": "sha512-CbTqYU17ABaLefO8vCU153ZZlprKYWDljcndKKDCFcYQITzWCXZAVk4QMFZPgvzrnUQ3uItnIE/LoUOwrT15Ig==", + "node_modules/microbuffer": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/microbuffer/-/microbuffer-1.0.0.tgz", + "integrity": "sha512-O/SUXauVN4x6RaEJFqSPcXNtLFL+QzJHKZlyDVYFwcDDRVca3Fa/37QXXC+4zAGGa4YhHrHxKXuuHvLDIQECtA==", "dev": true, + "license": "MIT" + }, + "node_modules/micromatch": { + "version": "4.0.8", + "resolved": "https://registry.npmjs.org/micromatch/-/micromatch-4.0.8.tgz", + "integrity": "sha512-PXwfBhYu0hBCPw8Dn0E+WDYb7af3dSLVWKi3HGv84IdF4TyFoC0ysxFd0Goxw7nSv4T/PzEJQxsYsEiFCKo2BA==", + "dev": true, + "license": "MIT", "dependencies": { - "camelcase-keys": "^4.0.0", - "decamelize-keys": "^1.0.0", - "loud-rejection": "^1.0.0", - "minimist-options": "^3.0.1", - "normalize-package-data": "^2.3.4", - "read-pkg-up": "^3.0.0", - "redent": "^2.0.0", - "trim-newlines": "^2.0.0", - "yargs-parser": "^10.0.0" + "braces": "^3.0.3", + "picomatch": "^2.3.1" }, "engines": { - "node": ">=6" + "node": ">=8.6" } }, - "node_modules/meow/node_modules/camelcase": { - "version": "4.1.0", - "resolved": "https://registry.npmjs.org/camelcase/-/camelcase-4.1.0.tgz", - "integrity": "sha1-1UVjW+HjPFQmScaRc+Xeas+uNN0=", + "node_modules/micromatch/node_modules/picomatch": { + "version": "2.3.1", + "resolved": "https://registry.npmjs.org/picomatch/-/picomatch-2.3.1.tgz", + "integrity": "sha512-JU3teHTNjmE2VCGFzuY8EXzCDVwEqB2a8fsIvwaStHhAWJEeVd1o1QD80CU6+ZdEXXSLbSsuLwJjkCBWqRQUVA==", "dev": true, + "license": "MIT", "engines": { - "node": ">=4" + "node": ">=8.6" + }, + "funding": { + "url": "https://github.com/sponsors/jonschlinkert" } }, - "node_modules/meow/node_modules/find-up": { - "version": "2.1.0", - "resolved": "https://registry.npmjs.org/find-up/-/find-up-2.1.0.tgz", - "integrity": "sha1-RdG35QbHF93UgndaK3eSCjwMV6c=", + "node_modules/mime-db": { + "version": "1.52.0", + "resolved": "https://registry.npmjs.org/mime-db/-/mime-db-1.52.0.tgz", + "integrity": "sha512-sPU4uV7dYlvtWJxwwxHD0PuihVNiE7TyAbQ5SWxDCB9mUYvOgroQOwYQQOKPJ8CIbE+1ETVlOoK1UC2nU3gYvg==", "dev": true, - "dependencies": { - "locate-path": "^2.0.0" - }, + "license": "MIT", "engines": { - "node": ">=4" + "node": ">= 0.6" } }, - "node_modules/meow/node_modules/load-json-file": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/load-json-file/-/load-json-file-4.0.0.tgz", - "integrity": "sha1-L19Fq5HjMhYjT9U62rZo607AmTs=", + "node_modules/mime-types": { + "version": "2.1.35", + "resolved": "https://registry.npmjs.org/mime-types/-/mime-types-2.1.35.tgz", + "integrity": "sha512-ZDY+bPm5zTTF+YpCrAU9nK0UgICYPT0QtT1NZWFv4s++TNkcgVaT0g6+4R2uI4MjQjzysHB1zxuWL50hzaeXiw==", "dev": true, + "license": "MIT", "dependencies": { - "graceful-fs": "^4.1.2", - "parse-json": "^4.0.0", - "pify": "^3.0.0", - "strip-bom": "^3.0.0" + "mime-db": "1.52.0" }, "engines": { - "node": ">=4" + "node": ">= 0.6" } }, - "node_modules/meow/node_modules/locate-path": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/locate-path/-/locate-path-2.0.0.tgz", - "integrity": "sha1-K1aLJl7slExtnA3pw9u7ygNUzY4=", + "node_modules/min-indent": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/min-indent/-/min-indent-1.0.1.tgz", + "integrity": "sha512-I9jwMn07Sy/IwOj3zVkVik2JTvgpaykDZEigL6Rx6N9LbMywwUSMtxET+7lVoDLLd3O3IXwJwvuuns8UB/HeAg==", "dev": true, - "dependencies": { - "p-locate": "^2.0.0", - "path-exists": "^3.0.0" - }, + "license": "MIT", "engines": { "node": ">=4" } }, - "node_modules/meow/node_modules/p-limit": { - "version": "1.3.0", - "resolved": "https://registry.npmjs.org/p-limit/-/p-limit-1.3.0.tgz", - "integrity": "sha512-vvcXsLAJ9Dr5rQOPk7toZQZJApBl2K4J6dANSsEuh6QI41JYcsS/qhTGa9ErIUUgK3WNQoJYvylxvjqmiqEA9Q==", + "node_modules/minimist": { + "version": "1.2.8", + "resolved": "https://registry.npmjs.org/minimist/-/minimist-1.2.8.tgz", + "integrity": "sha512-2yyAR8qBkN3YuheJanUpWC5U3bb5osDywNB8RzDVlDwDHbocAJveqqj1u8+SVD7jkWT4yvsHCpWqqWqAxb0zCA==", + "dev": true, + "license": "MIT", + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/minimist-options": { + "version": "4.1.0", + "resolved": "https://registry.npmjs.org/minimist-options/-/minimist-options-4.1.0.tgz", + "integrity": "sha512-Q4r8ghd80yhO/0j1O3B2BjweX3fiHg9cdOwjJd2J76Q135c+NDxGCqdYKQ1SKBuFfgWbAUzBfvYjPUEeNgqN1A==", "dev": true, + "license": "MIT", "dependencies": { - "p-try": "^1.0.0" + "arrify": "^1.0.1", + "is-plain-obj": "^1.1.0", + "kind-of": "^6.0.3" }, "engines": { - "node": ">=4" + "node": ">= 6" } }, - "node_modules/meow/node_modules/p-locate": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/p-locate/-/p-locate-2.0.0.tgz", - "integrity": "sha1-IKAQOyIqcMj9OcwuWAaA893l7EM=", + "node_modules/mocha": { + "version": "10.8.2", + "resolved": "https://registry.npmjs.org/mocha/-/mocha-10.8.2.tgz", + "integrity": "sha512-VZlYo/WE8t1tstuRmqgeyBgCbJc/lEdopaa+axcKzTBJ+UIdlAB9XnmvTCAH4pwR4ElNInaedhEBmZD8iCSVEg==", "dev": true, + "license": "MIT", "dependencies": { - "p-limit": "^1.1.0" + "ansi-colors": "^4.1.3", + "browser-stdout": "^1.3.1", + "chokidar": "^3.5.3", + "debug": "^4.3.5", + "diff": "^5.2.0", + "escape-string-regexp": "^4.0.0", + "find-up": "^5.0.0", + "glob": "^8.1.0", + "he": "^1.2.0", + "js-yaml": "^4.1.0", + "log-symbols": "^4.1.0", + "minimatch": "^5.1.6", + "ms": "^2.1.3", + "serialize-javascript": "^6.0.2", + "strip-json-comments": "^3.1.1", + "supports-color": "^8.1.1", + "workerpool": "^6.5.1", + "yargs": "^16.2.0", + "yargs-parser": "^20.2.9", + "yargs-unparser": "^2.0.0" + }, + "bin": { + "_mocha": "bin/_mocha", + "mocha": "bin/mocha.js" }, "engines": { - "node": ">=4" + "node": ">= 14.0.0" } }, - "node_modules/meow/node_modules/p-try": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/p-try/-/p-try-1.0.0.tgz", - "integrity": "sha1-y8ec26+P1CKOE/Yh8rGiN8GyB7M=", + "node_modules/mocha-chai-jest-snapshot": { + "version": "1.1.6", + "resolved": "https://registry.npmjs.org/mocha-chai-jest-snapshot/-/mocha-chai-jest-snapshot-1.1.6.tgz", + "integrity": "sha512-DSPZ5PtY1Rome58XSeS2/mggDJ60BIXDMlh58wsdkGfm1VvqTjjpFkjmR3g1iCtFAtPDXDmR9mYck1MygUEArA==", "dev": true, - "engines": { - "node": ">=4" + "license": "MIT", + "workspaces": [ + "test/chai-v5" + ], + "dependencies": { + "@jest/test-result": "^29.7.0", + "chalk": "^4.1.2", + "find-package-json": "^1.2.0", + "jest-snapshot": "^29.7.0", + "jest-util": "^29.7.0", + "slash": "^3.0.0", + "yargs": "^17.7.2" } }, - "node_modules/meow/node_modules/parse-json": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/parse-json/-/parse-json-4.0.0.tgz", - "integrity": "sha1-vjX1Qlvh9/bHRxhPmKeIy5lHfuA=", + "node_modules/mocha-chai-jest-snapshot/node_modules/ansi-styles": { + "version": "4.3.0", + "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-4.3.0.tgz", + "integrity": "sha512-zbB9rCJAT1rbjiVDb2hqKFHNYLxgtk8NURxZ3IZwD3F6NtxbXZQCnnSi1Lkx+IDohdPlFp222wVALIheZJQSEg==", "dev": true, + "license": "MIT", "dependencies": { - "error-ex": "^1.3.1", - "json-parse-better-errors": "^1.0.1" + "color-convert": "^2.0.1" }, "engines": { - "node": ">=4" + "node": ">=8" + }, + "funding": { + "url": "https://github.com/chalk/ansi-styles?sponsor=1" } }, - "node_modules/meow/node_modules/path-exists": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/path-exists/-/path-exists-3.0.0.tgz", - "integrity": "sha1-zg6+ql94yxiSXqfYENe1mwEP1RU=", + "node_modules/mocha-chai-jest-snapshot/node_modules/chalk": { + "version": "4.1.2", + "resolved": "https://registry.npmjs.org/chalk/-/chalk-4.1.2.tgz", + "integrity": "sha512-oKnbhFyRIXpUuez8iBMmyEa4nbj4IOQyuhc/wy9kY7/WVPcwIO9VA668Pu8RkO7+0G76SLROeyw9CpQ061i4mA==", "dev": true, + "license": "MIT", + "dependencies": { + "ansi-styles": "^4.1.0", + "supports-color": "^7.1.0" + }, "engines": { - "node": ">=4" + "node": ">=10" + }, + "funding": { + "url": "https://github.com/chalk/chalk?sponsor=1" } }, - "node_modules/meow/node_modules/path-type": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/path-type/-/path-type-3.0.0.tgz", - "integrity": "sha512-T2ZUsdZFHgA3u4e5PfPbjd7HDDpxPnQb5jN0SrDsjNSuVXHJqtwTnWqG0B1jZrgmJ/7lj1EmVIByWt1gxGkWvg==", + "node_modules/mocha-chai-jest-snapshot/node_modules/color-convert": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-2.0.1.tgz", + "integrity": "sha512-RRECPsj7iu/xb5oKYcsFHSppFNnsj/52OVTRKb4zP5onXwVF3zVmmToNcOfGC+CRDpfK/U584fMg38ZHCaElKQ==", "dev": true, + "license": "MIT", "dependencies": { - "pify": "^3.0.0" + "color-name": "~1.1.4" }, "engines": { - "node": ">=4" + "node": ">=7.0.0" } }, - "node_modules/meow/node_modules/pify": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/pify/-/pify-3.0.0.tgz", - "integrity": "sha1-5aSs0sEB/fPZpNB/DbxNtJ3SgXY=", + "node_modules/mocha-chai-jest-snapshot/node_modules/color-name": { + "version": "1.1.4", + "resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.4.tgz", + "integrity": "sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA==", "dev": true, - "engines": { - "node": ">=4" - } + "license": "MIT" }, - "node_modules/meow/node_modules/read-pkg": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/read-pkg/-/read-pkg-3.0.0.tgz", - "integrity": "sha1-nLxoaXj+5l0WwA4rGcI3/Pbjg4k=", + "node_modules/mocha-chai-jest-snapshot/node_modules/has-flag": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-4.0.0.tgz", + "integrity": "sha512-EykJT/Q1KjTWctppgIAgfSO0tKVuZUjhgMr17kqTumMl6Afv3EISleU7qZUzoXDFTAHTDC4NOoG/ZxU3EvlMPQ==", "dev": true, - "dependencies": { - "load-json-file": "^4.0.0", - "normalize-package-data": "^2.3.2", - "path-type": "^3.0.0" - }, + "license": "MIT", "engines": { - "node": ">=4" + "node": ">=8" } }, - "node_modules/meow/node_modules/read-pkg-up": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/read-pkg-up/-/read-pkg-up-3.0.0.tgz", - "integrity": "sha1-PtSWaF26D4/hGNBpHcUfSh/5bwc=", + "node_modules/mocha-chai-jest-snapshot/node_modules/supports-color": { + "version": "7.2.0", + "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-7.2.0.tgz", + "integrity": "sha512-qpCAvRl9stuOHveKsn7HncJRvv501qIacKzQlO/+Lwxc9+0q2wLyv4Dfvt80/DPn2pqOBsJdDiogXGR9+OvwRw==", "dev": true, + "license": "MIT", "dependencies": { - "find-up": "^2.0.0", - "read-pkg": "^3.0.0" + "has-flag": "^4.0.0" }, "engines": { - "node": ">=4" - } - }, - "node_modules/meow/node_modules/strip-bom": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/strip-bom/-/strip-bom-3.0.0.tgz", - "integrity": "sha1-IzTBjpx1n3vdVv3vfprj1YjmjtM=", - "dev": true, - "engines": { - "node": ">=4" + "node": ">=8" } }, - "node_modules/meow/node_modules/yargs-parser": { - "version": "10.1.0", - "resolved": "https://registry.npmjs.org/yargs-parser/-/yargs-parser-10.1.0.tgz", - "integrity": "sha512-VCIyR1wJoEBZUqk5PA+oOBF6ypbwh5aNB3I50guxAL/quggdfs4TtNHQrSazFA3fYZ+tEqfs0zIGlv0c/rgjbQ==", + "node_modules/mocha/node_modules/cliui": { + "version": "7.0.4", + "resolved": "https://registry.npmjs.org/cliui/-/cliui-7.0.4.tgz", + "integrity": "sha512-OcRE68cOsVMXp1Yvonl/fzkQOyjLSu/8bhPDfQt0e0/Eb283TKP20Fs2MqoPsr9SwA595rRCA+QMzYc9nBP+JQ==", "dev": true, + "license": "ISC", "dependencies": { - "camelcase": "^4.1.0" + "string-width": "^4.2.0", + "strip-ansi": "^6.0.0", + "wrap-ansi": "^7.0.0" } }, - "node_modules/merge2": { - "version": "1.4.1", - "resolved": "https://registry.npmjs.org/merge2/-/merge2-1.4.1.tgz", - "integrity": "sha512-8q7VEgMJW4J8tcfVPy8g09NcQwZdbwFEqhe/WZkoIzjn/3TGDwtOCYtXGxA3O8tPzpczCCDgv+P2P5y00ZJOOg==", + "node_modules/mocha/node_modules/escape-string-regexp": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/escape-string-regexp/-/escape-string-regexp-4.0.0.tgz", + "integrity": "sha512-TtpcNJ3XAzx3Gq8sWRzJaVajRs0uVxA2YAkdb1jm2YkPz4G6egUFAyA3n5vtEIZefPk5Wa4UXbKuS5fKkJWdgA==", "dev": true, + "license": "MIT", "engines": { - "node": ">= 8" - } - }, - "node_modules/microbuffer": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/microbuffer/-/microbuffer-1.0.0.tgz", - "integrity": "sha1-izgy7UDIfVH0e7I0kTppinVtGdI=", - "dev": true - }, - "node_modules/micromatch": { - "version": "3.1.10", - "resolved": "https://registry.npmjs.org/micromatch/-/micromatch-3.1.10.tgz", - "integrity": "sha512-MWikgl9n9M3w+bpsY3He8L+w9eF9338xRl8IAO5viDizwSzziFEyUzo2xrrloB64ADbTf8uA8vRqqttDTOmccg==", - "dev": true, - "dependencies": { - "arr-diff": "^4.0.0", - "array-unique": "^0.3.2", - "braces": "^2.3.1", - "define-property": "^2.0.2", - "extend-shallow": "^3.0.2", - "extglob": "^2.0.4", - "fragment-cache": "^0.2.1", - "kind-of": "^6.0.2", - "nanomatch": "^1.2.9", - "object.pick": "^1.3.0", - "regex-not": "^1.0.0", - "snapdragon": "^0.8.1", - "to-regex": "^3.0.2" + "node": ">=10" }, - "engines": { - "node": ">=0.10.0" + "funding": { + "url": "https://github.com/sponsors/sindresorhus" } }, - "node_modules/mime": { - "version": "1.6.0", - "resolved": "https://registry.npmjs.org/mime/-/mime-1.6.0.tgz", - "integrity": "sha512-x0Vn8spI+wuJ1O6S7gnbaQg8Pxh4NNHb7KSINmEWKiPE4RKOplvijn+NkmYmmRgP68mc70j2EbeTFRsrswaQeg==", + "node_modules/mocha/node_modules/glob": { + "version": "8.1.0", + "resolved": "https://registry.npmjs.org/glob/-/glob-8.1.0.tgz", + "integrity": "sha512-r8hpEjiQEYlF2QU0df3dS+nxxSIreXQS1qRhMJM0Q5NDdR386C7jb7Hwwod8Fgiuex+k0GFjgft18yvxm5XoCQ==", + "deprecated": "Glob versions prior to v9 are no longer supported", "dev": true, - "bin": { - "mime": "cli.js" + "license": "ISC", + "dependencies": { + "fs.realpath": "^1.0.0", + "inflight": "^1.0.4", + "inherits": "2", + "minimatch": "^5.0.1", + "once": "^1.3.0" }, "engines": { - "node": ">=4" + "node": ">=12" + }, + "funding": { + "url": "https://github.com/sponsors/isaacs" } }, - "node_modules/mime-db": { - "version": "1.38.0", - "resolved": "https://registry.npmjs.org/mime-db/-/mime-db-1.38.0.tgz", - "integrity": "sha512-bqVioMFFzc2awcdJZIzR3HjZFX20QhilVS7hytkKrv7xFAn8bM1gzc/FOX2awLISvWe0PV8ptFKcon+wZ5qYkg==", + "node_modules/mocha/node_modules/has-flag": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-4.0.0.tgz", + "integrity": "sha512-EykJT/Q1KjTWctppgIAgfSO0tKVuZUjhgMr17kqTumMl6Afv3EISleU7qZUzoXDFTAHTDC4NOoG/ZxU3EvlMPQ==", "dev": true, + "license": "MIT", "engines": { - "node": ">= 0.6" + "node": ">=8" } }, - "node_modules/mime-types": { - "version": "2.1.22", - "resolved": "https://registry.npmjs.org/mime-types/-/mime-types-2.1.22.tgz", - "integrity": "sha512-aGl6TZGnhm/li6F7yx82bJiBZwgiEa4Hf6CNr8YO+r5UHr53tSTYZb102zyU50DOWWKeOv0uQLRL0/9EiKWCog==", + "node_modules/mocha/node_modules/minimatch": { + "version": "5.1.6", + "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-5.1.6.tgz", + "integrity": "sha512-lKwV/1brpG6mBUFHtb7NUmtABCb2WZZmm2wNiOA5hAb8VdCS4B3dtMWyvcoViccwAW/COERjXLt0zP1zXUN26g==", "dev": true, + "license": "ISC", "dependencies": { - "mime-db": "~1.38.0" + "brace-expansion": "^2.0.1" }, "engines": { - "node": ">= 0.6" + "node": ">=10" } }, - "node_modules/minimatch": { - "version": "3.0.4", - "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-3.0.4.tgz", - "integrity": "sha512-yJHVQEhyqPLUTgt9B83PXu6W3rx4MvvHvSUvToogpwoGDOUQ+yDrR0HRot+yOCdCO7u4hX3pWft6kWBBcqh0UA==", + "node_modules/mocha/node_modules/supports-color": { + "version": "8.1.1", + "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-8.1.1.tgz", + "integrity": "sha512-MpUEN2OodtUzxvKQl72cUF7RQ5EiHsGvSsVG0ia9c5RbWGL2CI4C7EpPS8UTBIplnlzZiNuV56w+FuNxy3ty2Q==", "dev": true, + "license": "MIT", "dependencies": { - "brace-expansion": "^1.1.7" + "has-flag": "^4.0.0" }, "engines": { - "node": "*" + "node": ">=10" + }, + "funding": { + "url": "https://github.com/chalk/supports-color?sponsor=1" } }, - "node_modules/minimist": { - "version": "1.2.6", - "resolved": "https://registry.npmjs.org/minimist/-/minimist-1.2.6.tgz", - "integrity": "sha512-Jsjnk4bw3YJqYzbdyBiNsPWHPfO++UGG749Cxs6peCu5Xg4nrena6OVxOYxrQTqww0Jmwt+Ref8rggumkTLz9Q==", - "dev": true - }, - "node_modules/minimist-options": { - "version": "3.0.2", - "resolved": "https://registry.npmjs.org/minimist-options/-/minimist-options-3.0.2.tgz", - "integrity": "sha512-FyBrT/d0d4+uiZRbqznPXqw3IpZZG3gl3wKWiX784FycUKVwBt0uLBFkQrtE4tZOrgo78nZp2jnKz3L65T5LdQ==", + "node_modules/mocha/node_modules/yargs": { + "version": "16.2.0", + "resolved": "https://registry.npmjs.org/yargs/-/yargs-16.2.0.tgz", + "integrity": "sha512-D1mvvtDG0L5ft/jGWkLpG1+m0eQxOfaBvTNELraWj22wSVUMWxZUvYgJYcKh6jGGIkJFhH4IZPQhR4TKpc8mBw==", "dev": true, + "license": "MIT", "dependencies": { - "arrify": "^1.0.1", - "is-plain-obj": "^1.1.0" + "cliui": "^7.0.2", + "escalade": "^3.1.1", + "get-caller-file": "^2.0.5", + "require-directory": "^2.1.1", + "string-width": "^4.2.0", + "y18n": "^5.0.5", + "yargs-parser": "^20.2.2" }, "engines": { - "node": ">= 4" + "node": ">=10" } }, - "node_modules/mixin-deep": { - "version": "1.3.2", - "resolved": "https://registry.npmjs.org/mixin-deep/-/mixin-deep-1.3.2.tgz", - "integrity": "sha512-WRoDn//mXBiJ1H40rqa3vH0toePwSsGb45iInWlTySa+Uu4k3tYUSxa2v1KqAiLtvlrSzaExqS1gtk96A9zvEA==", + "node_modules/ms": { + "version": "2.1.3", + "resolved": "https://registry.npmjs.org/ms/-/ms-2.1.3.tgz", + "integrity": "sha512-6FlzubTLZG3J2a/NVCAleEhjzq5oxgHyaCU9yYXvcLsvoVaHJq/s5xXI6/XXP6tz7R9xAOtHnSO/tXtF3WRTlA==", "dev": true, - "dependencies": { - "for-in": "^1.0.2", - "is-extendable": "^1.0.1" - }, - "engines": { - "node": ">=0.10.0" - } + "license": "MIT" }, - "node_modules/mixin-deep/node_modules/is-extendable": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/is-extendable/-/is-extendable-1.0.1.tgz", - "integrity": "sha512-arnXMxT1hhoKo9k1LZdmlNyJdDDfy2v0fXjFlmok4+i8ul/6WlbVge9bhM74OpNPQPMGUToDtz+KXa1PneJxOA==", + "node_modules/natural-compare": { + "version": "1.4.0", + "resolved": "https://registry.npmjs.org/natural-compare/-/natural-compare-1.4.0.tgz", + "integrity": "sha512-OWND8ei3VtNC9h7V60qff3SVobHr996CTwgxubgyQYEpg290h9J0buyECNNJexkFm5sOajh5G116RYA1c8ZMSw==", "dev": true, - "dependencies": { - "is-plain-object": "^2.0.4" - }, - "engines": { - "node": ">=0.10.0" - } + "license": "MIT" }, - "node_modules/mocha": { - "version": "9.2.2", - "resolved": "https://registry.npmjs.org/mocha/-/mocha-9.2.2.tgz", - "integrity": "sha512-L6XC3EdwT6YrIk0yXpavvLkn8h+EU+Y5UcCHKECyMbdUIxyMuZj4bX4U9e1nvnvUUvQVsV2VHQr5zLdcUkhW/g==", - "dev": true, - "dependencies": { - "@ungap/promise-all-settled": "1.1.2", - "ansi-colors": "4.1.1", - "browser-stdout": "1.3.1", - "chokidar": "3.5.3", - "debug": "4.3.3", - "diff": "5.0.0", - "escape-string-regexp": "4.0.0", - "find-up": "5.0.0", - "glob": "7.2.0", - "growl": "1.10.5", - "he": "1.2.0", - "js-yaml": "4.1.0", - "log-symbols": "4.1.0", - "minimatch": "4.2.1", - "ms": "2.1.3", - "nanoid": "3.3.1", - "serialize-javascript": "6.0.0", - "strip-json-comments": "3.1.1", - "supports-color": "8.1.1", - "which": "2.0.2", - "workerpool": "6.2.0", - "yargs": "16.2.0", - "yargs-parser": "20.2.4", - "yargs-unparser": "2.0.0" - }, - "bin": { - "_mocha": "bin/_mocha", - "mocha": "bin/mocha" - }, - "engines": { - "node": ">= 12.0.0" - }, - "funding": { - "type": "opencollective", - "url": "https://opencollective.com/mochajs" + "node_modules/neatequal": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/neatequal/-/neatequal-1.0.0.tgz", + "integrity": "sha512-sVt5awO4a4w24QmAthdrCPiVRW3naB8FGLdyadin01BH+6BzNPEBwGrpwCczQvPlULS6uXTItTe1PJ5P0kYm7A==", + "dev": true, + "license": "MIT", + "dependencies": { + "varstream": "^0.3.2" } }, - "node_modules/mocha/node_modules/ansi-colors": { - "version": "4.1.1", - "resolved": "https://registry.npmjs.org/ansi-colors/-/ansi-colors-4.1.1.tgz", - "integrity": "sha512-JoX0apGbHaUJBNl6yF+p6JAFYZ666/hhCGKN5t9QFjbJQKUU/g8MNbFDbvfrgKXvI1QpZplPOnwIo99lX/AAmA==", + "node_modules/nice-try": { + "version": "1.0.5", + "resolved": "https://registry.npmjs.org/nice-try/-/nice-try-1.0.5.tgz", + "integrity": "sha512-1nh45deeb5olNY7eX82BkPO7SSxR5SSYJiPTrTdFUVYwAl8CKMA5N9PjTYkHiRjisVcxcQ1HXdLhx2qxxJzLNQ==", "dev": true, - "engines": { - "node": ">=6" - } + "license": "MIT" }, - "node_modules/mocha/node_modules/ansi-regex": { - "version": "5.0.1", - "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-5.0.1.tgz", - "integrity": "sha512-quJQXlTSUGL2LH9SUXo8VwsY4soanhgo6LNSm84E1LBcE8s3O0wpdiRzyR9z/ZZJMlMWv37qOOb9pdJlMUEKFQ==", + "node_modules/node-cleanup": { + "version": "2.1.2", + "resolved": "https://registry.npmjs.org/node-cleanup/-/node-cleanup-2.1.2.tgz", + "integrity": "sha512-qN8v/s2PAJwGUtr1/hYTpNKlD6Y9rc4p8KSmJXyGdYGZsDGKXrGThikLFP9OCHFeLeEpQzPwiAtdIvBLqm//Hw==", "dev": true, - "engines": { - "node": ">=8" - } + "license": "MIT" }, - "node_modules/mocha/node_modules/ansi-styles": { - "version": "4.3.0", - "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-4.3.0.tgz", - "integrity": "sha512-zbB9rCJAT1rbjiVDb2hqKFHNYLxgtk8NURxZ3IZwD3F6NtxbXZQCnnSi1Lkx+IDohdPlFp222wVALIheZJQSEg==", + "node_modules/node-fetch": { + "version": "2.7.0", + "resolved": "https://registry.npmjs.org/node-fetch/-/node-fetch-2.7.0.tgz", + "integrity": "sha512-c4FRfUm/dbcWZ7U+1Wq0AwCyFL+3nt2bEw05wfxSz+DWpWsitgmSgYmy2dQdWyKC1694ELPqMs/YzUSNozLt8A==", "dev": true, + "license": "MIT", "dependencies": { - "color-convert": "^2.0.1" + "whatwg-url": "^5.0.0" }, "engines": { - "node": ">=8" + "node": "4.x || >=6.0.0" }, - "funding": { - "url": "https://github.com/chalk/ansi-styles?sponsor=1" - } - }, - "node_modules/mocha/node_modules/anymatch": { - "version": "3.1.2", - "resolved": "https://registry.npmjs.org/anymatch/-/anymatch-3.1.2.tgz", - "integrity": "sha512-P43ePfOAIupkguHUycrc4qJ9kz8ZiuOUijaETwX7THt0Y/GNK7v0aa8rY816xWjZ7rJdA5XdMcpVFTKMq+RvWg==", - "dev": true, - "dependencies": { - "normalize-path": "^3.0.0", - "picomatch": "^2.0.4" + "peerDependencies": { + "encoding": "^0.1.0" }, - "engines": { - "node": ">= 8" + "peerDependenciesMeta": { + "encoding": { + "optional": true + } } }, - "node_modules/mocha/node_modules/argparse": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/argparse/-/argparse-2.0.1.tgz", - "integrity": "sha512-8+9WqebbFzpX9OR+Wa6O29asIogeRMzcGtAINdpMHHyAg10f05aSFVBbcEqGf/PXw1EjAZ+q2/bEBg3DvurK3Q==", - "dev": true + "node_modules/node-fetch/node_modules/tr46": { + "version": "0.0.3", + "resolved": "https://registry.npmjs.org/tr46/-/tr46-0.0.3.tgz", + "integrity": "sha512-N3WMsuqV66lT30CrXNbEjx4GEwlow3v6rr4mCcv6prnfwhS01rkgyFdjPNBYd9br7LpXV1+Emh01fHnq2Gdgrw==", + "dev": true, + "license": "MIT" }, - "node_modules/mocha/node_modules/binary-extensions": { - "version": "2.2.0", - "resolved": "https://registry.npmjs.org/binary-extensions/-/binary-extensions-2.2.0.tgz", - "integrity": "sha512-jDctJ/IVQbZoJykoeHbhXpOlNBqGNcwXJKJog42E5HDPUwQTSdjCHdihjj0DlnheQ7blbT6dHOafNAiS8ooQKA==", + "node_modules/node-fetch/node_modules/webidl-conversions": { + "version": "3.0.1", + "resolved": "https://registry.npmjs.org/webidl-conversions/-/webidl-conversions-3.0.1.tgz", + "integrity": "sha512-2JAn3z8AR6rjK8Sm8orRC0h/bcl/DqL7tRPdGZ4I1CjdF+EaMLmYxBHyXuKL849eucPFhvBoxMsflfOb8kxaeQ==", "dev": true, - "engines": { - "node": ">=8" - } + "license": "BSD-2-Clause" }, - "node_modules/mocha/node_modules/braces": { - "version": "3.0.2", - "resolved": "https://registry.npmjs.org/braces/-/braces-3.0.2.tgz", - "integrity": "sha512-b8um+L1RzM3WDSzvhm6gIz1yfTbBt6YTlcEKAvsmqCZZFw46z626lVj9j1yEPW33H5H+lBQpZMP1k8l+78Ha0A==", + "node_modules/node-fetch/node_modules/whatwg-url": { + "version": "5.0.0", + "resolved": "https://registry.npmjs.org/whatwg-url/-/whatwg-url-5.0.0.tgz", + "integrity": "sha512-saE57nupxk6v3HY35+jzBwYa0rKSy0XR8JSxZPwgLr7ys0IBzhGviA1/TUGJLmSVqs8pb9AnvICXEuOHLprYTw==", "dev": true, + "license": "MIT", "dependencies": { - "fill-range": "^7.0.1" - }, - "engines": { - "node": ">=8" + "tr46": "~0.0.3", + "webidl-conversions": "^3.0.0" } }, - "node_modules/mocha/node_modules/chokidar": { - "version": "3.5.3", - "resolved": "https://registry.npmjs.org/chokidar/-/chokidar-3.5.3.tgz", - "integrity": "sha512-Dr3sfKRP6oTcjf2JmUmFJfeVMvXBdegxB0iVQ5eb2V10uFJUCAS8OByZdVAyVb8xXNz3GjjTgj9kLWsZTqE6kw==", + "node_modules/node-int64": { + "version": "0.4.0", + "resolved": "https://registry.npmjs.org/node-int64/-/node-int64-0.4.0.tgz", + "integrity": "sha512-O5lz91xSOeoXP6DulyHfllpq+Eg00MWitZIbtPfoSEvqIHdl5gfcY6hYzDWnj0qD5tz52PI08u9qUvSVeUBeHw==", "dev": true, - "funding": [ - { - "type": "individual", - "url": "https://paulmillr.com/funding/" - } - ], + "license": "MIT" + }, + "node_modules/node-releases": { + "version": "2.0.19", + "resolved": "https://registry.npmjs.org/node-releases/-/node-releases-2.0.19.tgz", + "integrity": "sha512-xxOWJsBKtzAq7DY0J+DTzuz58K8e7sJbdgwkbMWQe8UYB6ekmsQ45q0M/tJDsGaZmbC+l7n57UV8Hl5tHxO9uw==", + "dev": true, + "license": "MIT" + }, + "node_modules/normalize-package-data": { + "version": "2.5.0", + "resolved": "https://registry.npmjs.org/normalize-package-data/-/normalize-package-data-2.5.0.tgz", + "integrity": "sha512-/5CMN3T0R4XTj4DcGaexo+roZSdSFW/0AOOTROrjxzCG1wrWXEsGbRKevjlIL+ZDE4sZlJr5ED4YW0yqmkK+eA==", + "dev": true, + "license": "BSD-2-Clause", "dependencies": { - "anymatch": "~3.1.2", - "braces": "~3.0.2", - "glob-parent": "~5.1.2", - "is-binary-path": "~2.1.0", - "is-glob": "~4.0.1", - "normalize-path": "~3.0.0", - "readdirp": "~3.6.0" - }, - "engines": { - "node": ">= 8.10.0" - }, - "optionalDependencies": { - "fsevents": "~2.3.2" + "hosted-git-info": "^2.1.4", + "resolve": "^1.10.0", + "semver": "2 || 3 || 4 || 5", + "validate-npm-package-license": "^3.0.1" } }, - "node_modules/mocha/node_modules/cliui": { - "version": "7.0.4", - "resolved": "https://registry.npmjs.org/cliui/-/cliui-7.0.4.tgz", - "integrity": "sha512-OcRE68cOsVMXp1Yvonl/fzkQOyjLSu/8bhPDfQt0e0/Eb283TKP20Fs2MqoPsr9SwA595rRCA+QMzYc9nBP+JQ==", + "node_modules/normalize-package-data/node_modules/semver": { + "version": "5.7.2", + "resolved": "https://registry.npmjs.org/semver/-/semver-5.7.2.tgz", + "integrity": "sha512-cBznnQ9KjJqU67B52RMC65CMarK2600WFnbkcaiwWq3xy/5haFJlshgnpjovMVJ+Hff49d8GEn0b87C5pDQ10g==", "dev": true, - "dependencies": { - "string-width": "^4.2.0", - "strip-ansi": "^6.0.0", - "wrap-ansi": "^7.0.0" + "license": "ISC", + "bin": { + "semver": "bin/semver" } }, - "node_modules/mocha/node_modules/color-convert": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-2.0.1.tgz", - "integrity": "sha512-RRECPsj7iu/xb5oKYcsFHSppFNnsj/52OVTRKb4zP5onXwVF3zVmmToNcOfGC+CRDpfK/U584fMg38ZHCaElKQ==", + "node_modules/normalize-path": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/normalize-path/-/normalize-path-3.0.0.tgz", + "integrity": "sha512-6eZs5Ls3WtCisHWp9S2GUy8dqkpGi4BVSz3GaqiE6ezub0512ESztXUwUB6C6IKbQkY2Pnb/mD4WYojCRwcwLA==", "dev": true, - "dependencies": { - "color-name": "~1.1.4" - }, + "license": "MIT", "engines": { - "node": ">=7.0.0" + "node": ">=0.10.0" } }, - "node_modules/mocha/node_modules/color-name": { - "version": "1.1.4", - "resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.4.tgz", - "integrity": "sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA==", - "dev": true - }, - "node_modules/mocha/node_modules/debug": { - "version": "4.3.3", - "resolved": "https://registry.npmjs.org/debug/-/debug-4.3.3.tgz", - "integrity": "sha512-/zxw5+vh1Tfv+4Qn7a5nsbcJKPaSvCDhojn6FEl9vupwK2VCSDtEiEtqr8DFtzYFOdz63LBkxec7DYuc2jon6Q==", + "node_modules/npm-run-all": { + "version": "4.1.5", + "resolved": "https://registry.npmjs.org/npm-run-all/-/npm-run-all-4.1.5.tgz", + "integrity": "sha512-Oo82gJDAVcaMdi3nuoKFavkIHBRVqQ1qvMb+9LHk/cF4P6B2m8aP04hGf7oL6wZ9BuGwX1onlLhpuoofSyoQDQ==", "dev": true, + "license": "MIT", "dependencies": { - "ms": "2.1.2" + "ansi-styles": "^3.2.1", + "chalk": "^2.4.1", + "cross-spawn": "^6.0.5", + "memorystream": "^0.3.1", + "minimatch": "^3.0.4", + "pidtree": "^0.3.0", + "read-pkg": "^3.0.0", + "shell-quote": "^1.6.1", + "string.prototype.padend": "^3.0.0" }, - "engines": { - "node": ">=6.0" + "bin": { + "npm-run-all": "bin/npm-run-all/index.js", + "run-p": "bin/run-p/index.js", + "run-s": "bin/run-s/index.js" }, - "peerDependenciesMeta": { - "supports-color": { - "optional": true - } - } - }, - "node_modules/mocha/node_modules/debug/node_modules/ms": { - "version": "2.1.2", - "resolved": "https://registry.npmjs.org/ms/-/ms-2.1.2.tgz", - "integrity": "sha512-sGkPx+VjMtmA6MX27oA4FBFELFCZZ4S4XqeGOXCv68tT+jb3vk/RyaKWP0PTKyWtmLSM0b+adUTEvbs1PEaH2w==", - "dev": true - }, - "node_modules/mocha/node_modules/emoji-regex": { - "version": "8.0.0", - "resolved": "https://registry.npmjs.org/emoji-regex/-/emoji-regex-8.0.0.tgz", - "integrity": "sha512-MSjYzcWNOA0ewAHpz0MxpYFvwg6yjy1NG3xteoqz644VCo/RPgnr1/GGt+ic3iJTzQ8Eu3TdM14SawnVUmGE6A==", - "dev": true - }, - "node_modules/mocha/node_modules/escape-string-regexp": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/escape-string-regexp/-/escape-string-regexp-4.0.0.tgz", - "integrity": "sha512-TtpcNJ3XAzx3Gq8sWRzJaVajRs0uVxA2YAkdb1jm2YkPz4G6egUFAyA3n5vtEIZefPk5Wa4UXbKuS5fKkJWdgA==", - "dev": true, "engines": { - "node": ">=10" - }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" + "node": ">= 4" } }, - "node_modules/mocha/node_modules/fill-range": { - "version": "7.0.1", - "resolved": "https://registry.npmjs.org/fill-range/-/fill-range-7.0.1.tgz", - "integrity": "sha512-qOo9F+dMUmC2Lcb4BbVvnKJxTPjCm+RRpe4gDuGrzkL7mEVl/djYSu2OdQ2Pa302N4oqkSg9ir6jaLWJ2USVpQ==", + "node_modules/npm-run-all/node_modules/brace-expansion": { + "version": "1.1.12", + "resolved": "https://registry.npmjs.org/brace-expansion/-/brace-expansion-1.1.12.tgz", + "integrity": "sha512-9T9UjW3r0UW5c1Q7GTwllptXwhvYmEzFhzMfZ9H7FQWt+uZePjZPjBP/W1ZEyZ1twGWom5/56TF4lPcqjnDHcg==", "dev": true, + "license": "MIT", "dependencies": { - "to-regex-range": "^5.0.1" - }, - "engines": { - "node": ">=8" + "balanced-match": "^1.0.0", + "concat-map": "0.0.1" } }, - "node_modules/mocha/node_modules/find-up": { - "version": "5.0.0", - "resolved": "https://registry.npmjs.org/find-up/-/find-up-5.0.0.tgz", - "integrity": "sha512-78/PXT1wlLLDgTzDs7sjq9hzz0vXD+zn+7wypEe4fXQxCmdmqfGsEPQxmiCSQI3ajFV91bVSsvNtrJRiW6nGng==", + "node_modules/npm-run-all/node_modules/cross-spawn": { + "version": "6.0.6", + "resolved": "https://registry.npmjs.org/cross-spawn/-/cross-spawn-6.0.6.tgz", + "integrity": "sha512-VqCUuhcd1iB+dsv8gxPttb5iZh/D0iubSP21g36KXdEuf6I5JiioesUVjpCdHV9MZRUfVFlvwtIUyPfxo5trtw==", "dev": true, + "license": "MIT", "dependencies": { - "locate-path": "^6.0.0", - "path-exists": "^4.0.0" + "nice-try": "^1.0.4", + "path-key": "^2.0.1", + "semver": "^5.5.0", + "shebang-command": "^1.2.0", + "which": "^1.2.9" }, "engines": { - "node": ">=10" - }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" + "node": ">=4.8" } }, - "node_modules/mocha/node_modules/fsevents": { - "version": "2.3.2", - "resolved": "https://registry.npmjs.org/fsevents/-/fsevents-2.3.2.tgz", - "integrity": "sha512-xiqMQR4xAeHTuB9uWm+fFRcIOgKBMiOBP+eXiyT7jsgVCq1bkVygt00oASowB7EdtpOHaaPgKt812P9ab+DDKA==", + "node_modules/npm-run-all/node_modules/minimatch": { + "version": "3.1.2", + "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-3.1.2.tgz", + "integrity": "sha512-J7p63hRiAjw1NDEww1W7i37+ByIrOWO5XQQAzZ3VOcL0PNybwpfmV/N05zFAzwQ9USyEcX6t3UO+K5aqBQOIHw==", "dev": true, - "hasInstallScript": true, - "optional": true, - "os": [ - "darwin" - ], + "license": "ISC", + "dependencies": { + "brace-expansion": "^1.1.7" + }, "engines": { - "node": "^8.16.0 || ^10.6.0 || >=11.0.0" + "node": "*" } }, - "node_modules/mocha/node_modules/get-caller-file": { - "version": "2.0.5", - "resolved": "https://registry.npmjs.org/get-caller-file/-/get-caller-file-2.0.5.tgz", - "integrity": "sha512-DyFP3BM/3YHTQOCUL/w0OZHR0lpKeGrxotcHWcqNEdnltqFwXVfhEBQ94eIo34AfQpo0rGki4cyIiftY06h2Fg==", + "node_modules/npm-run-all/node_modules/path-key": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/path-key/-/path-key-2.0.1.tgz", + "integrity": "sha512-fEHGKCSmUSDPv4uoj8AlD+joPlq3peND+HRYyxFz4KPw4z926S/b8rIuFs2FYJg3BwsxJf6A9/3eIdLaYC+9Dw==", "dev": true, + "license": "MIT", "engines": { - "node": "6.* || 8.* || >= 10.*" + "node": ">=4" } }, - "node_modules/mocha/node_modules/glob-parent": { - "version": "5.1.2", - "resolved": "https://registry.npmjs.org/glob-parent/-/glob-parent-5.1.2.tgz", - "integrity": "sha512-AOIgSQCepiJYwP3ARnGx+5VnTu2HBYdzbGP45eLw1vr3zB3vZLeyed1sC9hnbcOc9/SrMyM5RPQrkGz4aS9Zow==", + "node_modules/npm-run-all/node_modules/semver": { + "version": "5.7.2", + "resolved": "https://registry.npmjs.org/semver/-/semver-5.7.2.tgz", + "integrity": "sha512-cBznnQ9KjJqU67B52RMC65CMarK2600WFnbkcaiwWq3xy/5haFJlshgnpjovMVJ+Hff49d8GEn0b87C5pDQ10g==", "dev": true, - "dependencies": { - "is-glob": "^4.0.1" - }, - "engines": { - "node": ">= 6" + "license": "ISC", + "bin": { + "semver": "bin/semver" } }, - "node_modules/mocha/node_modules/is-binary-path": { - "version": "2.1.0", - "resolved": "https://registry.npmjs.org/is-binary-path/-/is-binary-path-2.1.0.tgz", - "integrity": "sha512-ZMERYes6pDydyuGidse7OsHxtbI7WVeUEozgR/g7rd0xUimYNlvZRE/K2MgZTjWy725IfelLeVcEM97mmtRGXw==", + "node_modules/npm-run-all/node_modules/shebang-command": { + "version": "1.2.0", + "resolved": "https://registry.npmjs.org/shebang-command/-/shebang-command-1.2.0.tgz", + "integrity": "sha512-EV3L1+UQWGor21OmnvojK36mhg+TyIKDh3iFBKBohr5xeXIhNBcx8oWdgkTEEQ+BEFFYdLRuqMfd5L84N1V5Vg==", "dev": true, + "license": "MIT", "dependencies": { - "binary-extensions": "^2.0.0" + "shebang-regex": "^1.0.0" }, "engines": { - "node": ">=8" - } - }, - "node_modules/mocha/node_modules/is-fullwidth-code-point": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/is-fullwidth-code-point/-/is-fullwidth-code-point-3.0.0.tgz", - "integrity": "sha512-zymm5+u+sCsSWyD9qNaejV3DFvhCKclKdizYaJUuHA83RLjb7nSuGnddCHGv0hk+KY7BMAlsWeK4Ueg6EV6XQg==", - "dev": true, - "engines": { - "node": ">=8" + "node": ">=0.10.0" } }, - "node_modules/mocha/node_modules/is-number": { - "version": "7.0.0", - "resolved": "https://registry.npmjs.org/is-number/-/is-number-7.0.0.tgz", - "integrity": "sha512-41Cifkg6e8TylSpdtTpeLVMqvSBEVzTttHvERD741+pnZ8ANv0004MRL43QKPDlK9cGvNp6NZWZUBlbGXYxxng==", + "node_modules/npm-run-all/node_modules/shebang-regex": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/shebang-regex/-/shebang-regex-1.0.0.tgz", + "integrity": "sha512-wpoSFAxys6b2a2wHZ1XpDSgD7N9iVjg29Ph9uV/uaP9Ex/KXlkTZTeddxDPSYQpgvzKLGJke2UU0AzoGCjNIvQ==", "dev": true, + "license": "MIT", "engines": { - "node": ">=0.12.0" + "node": ">=0.10.0" } }, - "node_modules/mocha/node_modules/js-yaml": { - "version": "4.1.0", - "resolved": "https://registry.npmjs.org/js-yaml/-/js-yaml-4.1.0.tgz", - "integrity": "sha512-wpxZs9NoxZaJESJGIZTyDEaYpl0FKSA+FB9aJiyemKhMwkxQg63h4T1KJgUGHpTqPDNRcmmYLugrRjJlBtWvRA==", + "node_modules/npm-run-all/node_modules/which": { + "version": "1.3.1", + "resolved": "https://registry.npmjs.org/which/-/which-1.3.1.tgz", + "integrity": "sha512-HxJdYWq1MTIQbJ3nw0cqssHoTNU267KlrDuGZ1WYlxDStUtKUhOaJmh112/TZmHxxUfuJqPXSOm7tDyas0OSIQ==", "dev": true, + "license": "ISC", "dependencies": { - "argparse": "^2.0.1" + "isexe": "^2.0.0" }, "bin": { - "js-yaml": "bin/js-yaml.js" + "which": "bin/which" } }, - "node_modules/mocha/node_modules/locate-path": { - "version": "6.0.0", - "resolved": "https://registry.npmjs.org/locate-path/-/locate-path-6.0.0.tgz", - "integrity": "sha512-iPZK6eYjbxRu3uB4/WZ3EsEIMJFMqAoopl3R+zuq0UjcAm/MO6KCweDgPfP3elTztoKP3KtnVHxTn2NHBSDVUw==", + "node_modules/nunjucks": { + "version": "3.2.4", + "resolved": "https://registry.npmjs.org/nunjucks/-/nunjucks-3.2.4.tgz", + "integrity": "sha512-26XRV6BhkgK0VOxfbU5cQI+ICFUtMLixv1noZn1tGU38kQH5A5nmmbk/O45xdyBhD1esk47nKrY0mvQpZIhRjQ==", "dev": true, + "license": "BSD-2-Clause", "dependencies": { - "p-locate": "^5.0.0" + "a-sync-waterfall": "^1.0.0", + "asap": "^2.0.3", + "commander": "^5.1.0" + }, + "bin": { + "nunjucks-precompile": "bin/precompile" }, "engines": { - "node": ">=10" + "node": ">= 6.9.0" }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" - } - }, - "node_modules/mocha/node_modules/minimatch": { - "version": "4.2.1", - "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-4.2.1.tgz", - "integrity": "sha512-9Uq1ChtSZO+Mxa/CL1eGizn2vRn3MlLgzhT0Iz8zaY8NdvxvB0d5QdPFmCKf7JKA9Lerx5vRrnwO03jsSfGG9g==", - "dev": true, - "dependencies": { - "brace-expansion": "^1.1.7" + "peerDependencies": { + "chokidar": "^3.3.0" }, - "engines": { - "node": ">=10" + "peerDependenciesMeta": { + "chokidar": { + "optional": true + } } }, - "node_modules/mocha/node_modules/ms": { - "version": "2.1.3", - "resolved": "https://registry.npmjs.org/ms/-/ms-2.1.3.tgz", - "integrity": "sha512-6FlzubTLZG3J2a/NVCAleEhjzq5oxgHyaCU9yYXvcLsvoVaHJq/s5xXI6/XXP6tz7R9xAOtHnSO/tXtF3WRTlA==", - "dev": true - }, - "node_modules/mocha/node_modules/normalize-path": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/normalize-path/-/normalize-path-3.0.0.tgz", - "integrity": "sha512-6eZs5Ls3WtCisHWp9S2GUy8dqkpGi4BVSz3GaqiE6ezub0512ESztXUwUB6C6IKbQkY2Pnb/mD4WYojCRwcwLA==", + "node_modules/nunjucks/node_modules/commander": { + "version": "5.1.0", + "resolved": "https://registry.npmjs.org/commander/-/commander-5.1.0.tgz", + "integrity": "sha512-P0CysNDQ7rtVw4QIQtm+MRxV66vKFSvlsQvGYXZWR3qFU0jlMKHZZZgw8e+8DSah4UDKMqnknRDQz+xuQXQ/Zg==", "dev": true, + "license": "MIT", "engines": { - "node": ">=0.10.0" + "node": ">= 6" } }, - "node_modules/mocha/node_modules/p-limit": { - "version": "3.1.0", - "resolved": "https://registry.npmjs.org/p-limit/-/p-limit-3.1.0.tgz", - "integrity": "sha512-TYOanM3wGwNGsZN2cVTYPArw454xnXj5qmWF1bEoAc4+cU/ol7GVh7odevjp1FNHduHc3KZMcFduxU5Xc6uJRQ==", + "node_modules/nwsapi": { + "version": "2.2.20", + "resolved": "https://registry.npmjs.org/nwsapi/-/nwsapi-2.2.20.tgz", + "integrity": "sha512-/ieB+mDe4MrrKMT8z+mQL8klXydZWGR5Dowt4RAGKbJ3kIGEx3X4ljUo+6V73IXtUPWgfOlU5B9MlGxFO5T+cA==", "dev": true, - "dependencies": { - "yocto-queue": "^0.1.0" - }, - "engines": { - "node": ">=10" - }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" - } + "license": "MIT" }, - "node_modules/mocha/node_modules/p-locate": { - "version": "5.0.0", - "resolved": "https://registry.npmjs.org/p-locate/-/p-locate-5.0.0.tgz", - "integrity": "sha512-LaNjtRWUBY++zB5nE/NwcaoMylSPk+S+ZHNB1TzdbMJMny6dynpAGt7X/tl/QYq3TIeE6nxHppbo2LGymrG5Pw==", + "node_modules/object-inspect": { + "version": "1.13.4", + "resolved": "https://registry.npmjs.org/object-inspect/-/object-inspect-1.13.4.tgz", + "integrity": "sha512-W67iLl4J2EXEGTbfeHCffrjDfitvLANg0UlX3wFUUSTx92KXRFegMHUVgSqE+wvhAbi4WqjGg9czysTV2Epbew==", "dev": true, - "dependencies": { - "p-limit": "^3.0.2" - }, + "license": "MIT", "engines": { - "node": ">=10" + "node": ">= 0.4" }, "funding": { - "url": "https://github.com/sponsors/sindresorhus" + "url": "https://github.com/sponsors/ljharb" } }, - "node_modules/mocha/node_modules/path-exists": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/path-exists/-/path-exists-4.0.0.tgz", - "integrity": "sha512-ak9Qy5Q7jYb2Wwcey5Fpvg2KoAc/ZIhLSLOSBmRmygPsGwkVVt0fZa0qrtMz+m6tJTAHfZQ8FnmB4MG4LWy7/w==", + "node_modules/object-keys": { + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/object-keys/-/object-keys-1.1.1.tgz", + "integrity": "sha512-NuAESUOUMrlIXOfHKzD6bpPu3tYt3xvjNdRIQ+FeT0lNb4K8WR70CaDxhuNguS2XG+GjkyMwOzsN5ZktImfhLA==", "dev": true, + "license": "MIT", "engines": { - "node": ">=8" + "node": ">= 0.4" } }, - "node_modules/mocha/node_modules/readdirp": { - "version": "3.6.0", - "resolved": "https://registry.npmjs.org/readdirp/-/readdirp-3.6.0.tgz", - "integrity": "sha512-hOS089on8RduqdbhvQ5Z37A0ESjsqz6qnRcffsMU3495FuTdqSm+7bhJ29JvIOsBDEEnan5DPu9t3To9VRlMzA==", + "node_modules/object.assign": { + "version": "4.1.7", + "resolved": "https://registry.npmjs.org/object.assign/-/object.assign-4.1.7.tgz", + "integrity": "sha512-nK28WOo+QIjBkDduTINE4JkF/UJJKyf2EJxvJKfblDpyg0Q+pkOHNTL0Qwy6NP6FhE/EnzV73BxxqcJaXY9anw==", "dev": true, + "license": "MIT", "dependencies": { - "picomatch": "^2.2.1" + "call-bind": "^1.0.8", + "call-bound": "^1.0.3", + "define-properties": "^1.2.1", + "es-object-atoms": "^1.0.0", + "has-symbols": "^1.1.0", + "object-keys": "^1.1.1" }, "engines": { - "node": ">=8.10.0" + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" } }, - "node_modules/mocha/node_modules/string-width": { - "version": "4.2.3", - "resolved": "https://registry.npmjs.org/string-width/-/string-width-4.2.3.tgz", - "integrity": "sha512-wKyQRQpjJ0sIp62ErSZdGsjMJWsap5oRNihHhu6G7JVO/9jIB6UyevL+tXuOqrng8j/cxKTWyWUwvSTriiZz/g==", + "node_modules/once": { + "version": "1.4.0", + "resolved": "https://registry.npmjs.org/once/-/once-1.4.0.tgz", + "integrity": "sha512-lNaJgI+2Q5URQBkccEKHTQOPaXdUxnZZElQTZY0MFUAuaEqe1E+Nyvgdz/aIyNi6Z9MzO5dv1H8n58/GELp3+w==", "dev": true, + "license": "ISC", "dependencies": { - "emoji-regex": "^8.0.0", - "is-fullwidth-code-point": "^3.0.0", - "strip-ansi": "^6.0.1" - }, - "engines": { - "node": ">=8" + "wrappy": "1" } }, - "node_modules/mocha/node_modules/strip-ansi": { - "version": "6.0.1", - "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-6.0.1.tgz", - "integrity": "sha512-Y38VPSHcqkFrCpFnQ9vuSXmquuv5oXOKpGeT6aGrr3o3Gc9AlVa6JBfUSOCnbxGGZF+/0ooI7KrPuUSztUdU5A==", + "node_modules/optionator": { + "version": "0.9.4", + "resolved": "https://registry.npmjs.org/optionator/-/optionator-0.9.4.tgz", + "integrity": "sha512-6IpQ7mKUxRcZNLIObR0hz7lxsapSSIYNZJwXPGeF0mTVqGKFIXj1DQcMoT22S3ROcLyY/rz0PWaWZ9ayWmad9g==", "dev": true, + "license": "MIT", "dependencies": { - "ansi-regex": "^5.0.1" + "deep-is": "^0.1.3", + "fast-levenshtein": "^2.0.6", + "levn": "^0.4.1", + "prelude-ls": "^1.2.1", + "type-check": "^0.4.0", + "word-wrap": "^1.2.5" }, "engines": { - "node": ">=8" + "node": ">= 0.8.0" } }, - "node_modules/mocha/node_modules/to-regex-range": { - "version": "5.0.1", - "resolved": "https://registry.npmjs.org/to-regex-range/-/to-regex-range-5.0.1.tgz", - "integrity": "sha512-65P7iz6X5yEr1cwcgvQxbbIw7Uk3gOy5dIdtZ4rDveLqhrdJP+Li/Hx6tyK0NEb+2GCyneCMJiGqrADCSNk8sQ==", + "node_modules/override-require": { + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/override-require/-/override-require-1.1.1.tgz", + "integrity": "sha512-eoJ9YWxFcXbrn2U8FKT6RV+/Kj7fiGAB1VvHzbYKt8xM5ZuKZgCGvnHzDxmreEjcBH28ejg5MiOH4iyY1mQnkg==", "dev": true, - "dependencies": { - "is-number": "^7.0.0" - }, - "engines": { - "node": ">=8.0" - } + "license": "BSD-3-Clause" }, - "node_modules/mocha/node_modules/which": { - "version": "2.0.2", - "resolved": "https://registry.npmjs.org/which/-/which-2.0.2.tgz", - "integrity": "sha512-BLI3Tl1TW3Pvl70l3yq3Y64i+awpwXqsGBYWkkqMtnbXgrMD+yj7rhW0kuEDxzJaYXGjEW5ogapKNMEKNMjibA==", + "node_modules/own-keys": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/own-keys/-/own-keys-1.0.1.tgz", + "integrity": "sha512-qFOyK5PjiWZd+QQIh+1jhdb9LpxTF0qs7Pm8o5QHYZ0M3vKqSqzsZaEB6oWlxZ+q2sJBMI/Ktgd2N5ZwQoRHfg==", "dev": true, + "license": "MIT", "dependencies": { - "isexe": "^2.0.0" - }, - "bin": { - "node-which": "bin/node-which" + "get-intrinsic": "^1.2.6", + "object-keys": "^1.1.1", + "safe-push-apply": "^1.0.0" }, "engines": { - "node": ">= 8" + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" } }, - "node_modules/mocha/node_modules/wrap-ansi": { - "version": "7.0.0", - "resolved": "https://registry.npmjs.org/wrap-ansi/-/wrap-ansi-7.0.0.tgz", - "integrity": "sha512-YVGIj2kamLSTxw6NsZjoBxfSwsn0ycdesmc4p+Q21c5zPuZ1pl+NfxVdxPtdHvmNVOQ6XSYG4AUtyt/Fi7D16Q==", + "node_modules/p-limit": { + "version": "2.3.0", + "resolved": "https://registry.npmjs.org/p-limit/-/p-limit-2.3.0.tgz", + "integrity": "sha512-//88mFWSJx8lxCzwdAABTJL2MyWB12+eIY7MDL2SqLmAkeKU9qxRvWuSyTjm3FUmpBEMuFfckAIqEaVGUDxb6w==", "dev": true, + "license": "MIT", "dependencies": { - "ansi-styles": "^4.0.0", - "string-width": "^4.1.0", - "strip-ansi": "^6.0.0" + "p-try": "^2.0.0" }, "engines": { - "node": ">=10" + "node": ">=6" }, "funding": { - "url": "https://github.com/chalk/wrap-ansi?sponsor=1" + "url": "https://github.com/sponsors/sindresorhus" } }, - "node_modules/mocha/node_modules/y18n": { - "version": "5.0.8", - "resolved": "https://registry.npmjs.org/y18n/-/y18n-5.0.8.tgz", - "integrity": "sha512-0pfFzegeDWJHJIAmTLRP2DwHjdF5s7jo9tuztdQxAhINCdvS+3nGINqPd00AphqJR/0LhANUS6/+7SCb98YOfA==", + "node_modules/p-locate": { + "version": "5.0.0", + "resolved": "https://registry.npmjs.org/p-locate/-/p-locate-5.0.0.tgz", + "integrity": "sha512-LaNjtRWUBY++zB5nE/NwcaoMylSPk+S+ZHNB1TzdbMJMny6dynpAGt7X/tl/QYq3TIeE6nxHppbo2LGymrG5Pw==", "dev": true, + "license": "MIT", + "dependencies": { + "p-limit": "^3.0.2" + }, "engines": { "node": ">=10" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" } }, - "node_modules/mocha/node_modules/yargs": { - "version": "16.2.0", - "resolved": "https://registry.npmjs.org/yargs/-/yargs-16.2.0.tgz", - "integrity": "sha512-D1mvvtDG0L5ft/jGWkLpG1+m0eQxOfaBvTNELraWj22wSVUMWxZUvYgJYcKh6jGGIkJFhH4IZPQhR4TKpc8mBw==", + "node_modules/p-locate/node_modules/p-limit": { + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/p-limit/-/p-limit-3.1.0.tgz", + "integrity": "sha512-TYOanM3wGwNGsZN2cVTYPArw454xnXj5qmWF1bEoAc4+cU/ol7GVh7odevjp1FNHduHc3KZMcFduxU5Xc6uJRQ==", "dev": true, + "license": "MIT", "dependencies": { - "cliui": "^7.0.2", - "escalade": "^3.1.1", - "get-caller-file": "^2.0.5", - "require-directory": "^2.1.1", - "string-width": "^4.2.0", - "y18n": "^5.0.5", - "yargs-parser": "^20.2.2" + "yocto-queue": "^0.1.0" }, "engines": { "node": ">=10" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" } }, - "node_modules/mocha/node_modules/yargs-parser": { - "version": "20.2.4", - "resolved": "https://registry.npmjs.org/yargs-parser/-/yargs-parser-20.2.4.tgz", - "integrity": "sha512-WOkpgNhPTlE73h4VFAFsOnomJVaovO8VqLDzy5saChRBFQFBoMYirowyW+Q9HB4HFF4Z7VZTiG3iSzJJA29yRA==", + "node_modules/p-try": { + "version": "2.2.0", + "resolved": "https://registry.npmjs.org/p-try/-/p-try-2.2.0.tgz", + "integrity": "sha512-R4nPAVTAU0B9D35/Gk3uJf/7XYbQcyohSKdvAxIRSNghFl4e71hVoGnBNQz9cWaXxO2I10KTC+3jMdvvoKw6dQ==", "dev": true, + "license": "MIT", "engines": { - "node": ">=10" + "node": ">=6" } }, - "node_modules/moment": { - "version": "2.29.4", - "resolved": "https://registry.npmjs.org/moment/-/moment-2.29.4.tgz", - "integrity": "sha512-5LC9SOxjSc2HF6vO2CyuTDNivEdoz2IvyJJGj6X8DJ0eFyfszE0QiEd+iXmBvUP3WHxSjFH/vIsA0EN00cgr8w==", + "node_modules/pako": { + "version": "1.0.11", + "resolved": "https://registry.npmjs.org/pako/-/pako-1.0.11.tgz", + "integrity": "sha512-4hLB8Py4zZce5s4yd9XzopqwVv/yGNhV1Bl8NTmCq1763HeK2+EwVTv+leGeL13Dnh2wfbqowVPXCIO0z4taYw==", "dev": true, - "engines": { - "node": "*" - } + "license": "(MIT AND Zlib)" }, - "node_modules/ms": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/ms/-/ms-2.0.0.tgz", - "integrity": "sha1-VgiurfwAvmwpAd9fmGF4jeDVl8g=", - "dev": true - }, - "node_modules/mute-stdout": { + "node_modules/parent-module": { "version": "1.0.1", - "resolved": "https://registry.npmjs.org/mute-stdout/-/mute-stdout-1.0.1.tgz", - "integrity": "sha512-kDcwXR4PS7caBpuRYYBUz9iVixUk3anO3f5OYFiIPwK/20vCzKCHyKoulbiDY1S53zD2bxUpxN/IJ+TnXjfvxg==", + "resolved": "https://registry.npmjs.org/parent-module/-/parent-module-1.0.1.tgz", + "integrity": "sha512-GQ2EWRpQV8/o+Aw8YqtfZZPfNRWZYkbidE9k5rpl/hC3vtHHBfGm2Ifi6qWV+coDGkrUKZAxE3Lot5kcsRlh+g==", "dev": true, + "license": "MIT", + "dependencies": { + "callsites": "^3.0.0" + }, "engines": { - "node": ">= 0.10" + "node": ">=6" } }, - "node_modules/nan": { - "version": "2.14.2", - "resolved": "https://registry.npmjs.org/nan/-/nan-2.14.2.tgz", - "integrity": "sha512-M2ufzIiINKCuDfBSAUr1vWQ+vuVcA9kqx8JJUsbQi6yf1uGRyb7HfpdfUr5qLXf3B/t8dPvcjhKMmlfnP47EzQ==", + "node_modules/parse-diff": { + "version": "0.7.1", + "resolved": "https://registry.npmjs.org/parse-diff/-/parse-diff-0.7.1.tgz", + "integrity": "sha512-1j3l8IKcy4yRK2W4o9EYvJLSzpAVwz4DXqCewYyx2vEwk2gcf3DBPqc8Fj4XV3K33OYJ08A8fWwyu/ykD/HUSg==", "dev": true, - "optional": true + "license": "MIT" }, - "node_modules/nanoid": { - "version": "3.3.1", - "resolved": "https://registry.npmjs.org/nanoid/-/nanoid-3.3.1.tgz", - "integrity": "sha512-n6Vs/3KGyxPQd6uO0eH4Bv0ojGSUvuLlIHtC3Y0kEO23YRge8H9x1GCzLn28YX0H66pMkxuaeESFq4tKISKwdw==", + "node_modules/parse-github-url": { + "version": "1.0.3", + "resolved": "https://registry.npmjs.org/parse-github-url/-/parse-github-url-1.0.3.tgz", + "integrity": "sha512-tfalY5/4SqGaV/GIGzWyHnFjlpTPTNpENR9Ea2lLldSJ8EWXMsvacWucqY3m3I4YPtas15IxTLQVQ5NSYXPrww==", "dev": true, + "license": "MIT", "bin": { - "nanoid": "bin/nanoid.cjs" + "parse-github-url": "cli.js" }, "engines": { - "node": "^10 || ^12 || ^13.7 || ^14 || >=15.0.1" + "node": ">= 0.10" + } + }, + "node_modules/parse-imports-exports": { + "version": "0.2.4", + "resolved": "https://registry.npmjs.org/parse-imports-exports/-/parse-imports-exports-0.2.4.tgz", + "integrity": "sha512-4s6vd6dx1AotCx/RCI2m7t7GCh5bDRUtGNvRfHSP2wbBQdMi67pPe7mtzmgwcaQ8VKK/6IB7Glfyu3qdZJPybQ==", + "dev": true, + "license": "MIT", + "dependencies": { + "parse-statements": "1.0.11" } }, - "node_modules/nanomatch": { - "version": "1.2.13", - "resolved": "https://registry.npmjs.org/nanomatch/-/nanomatch-1.2.13.tgz", - "integrity": "sha512-fpoe2T0RbHwBTBUOftAfBPaDEi06ufaUai0mE6Yn1kacc3SnTErfb/h+X94VXzI64rKFHYImXSvdwGGCmwOqCA==", + "node_modules/parse-json": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/parse-json/-/parse-json-4.0.0.tgz", + "integrity": "sha512-aOIos8bujGN93/8Ox/jPLh7RwVnPEysynVFE+fQZyg6jKELEHwzgKdLRFHUgXJL6kylijVSBC4BvN9OmsB48Rw==", "dev": true, + "license": "MIT", "dependencies": { - "arr-diff": "^4.0.0", - "array-unique": "^0.3.2", - "define-property": "^2.0.2", - "extend-shallow": "^3.0.2", - "fragment-cache": "^0.2.1", - "is-windows": "^1.0.2", - "kind-of": "^6.0.2", - "object.pick": "^1.3.0", - "regex-not": "^1.0.0", - "snapdragon": "^0.8.1", - "to-regex": "^3.0.1" + "error-ex": "^1.3.1", + "json-parse-better-errors": "^1.0.1" }, "engines": { - "node": ">=0.10.0" + "node": ">=4" } }, - "node_modules/natural-compare": { - "version": "1.4.0", - "resolved": "https://registry.npmjs.org/natural-compare/-/natural-compare-1.4.0.tgz", - "integrity": "sha1-Sr6/7tdUHywnrPspvbvRXI1bpPc=", - "dev": true - }, - "node_modules/neatequal": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/neatequal/-/neatequal-1.0.0.tgz", - "integrity": "sha1-LuEhG8n6bkxVcV/SELsFYC6xrjs=", + "node_modules/parse-link-header": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/parse-link-header/-/parse-link-header-2.0.0.tgz", + "integrity": "sha512-xjU87V0VyHZybn2RrCX5TIFGxTVZE6zqqZWMPlIKiSKuWh/X5WZdt+w1Ki1nXB+8L/KtL+nZ4iq+sfI6MrhhMw==", "dev": true, + "license": "MIT", "dependencies": { - "varstream": "^0.3.2" + "xtend": "~4.0.1" } }, - "node_modules/next-tick": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/next-tick/-/next-tick-1.0.0.tgz", - "integrity": "sha1-yobR/ogoFpsBICCOPchCS524NCw=", - "dev": true - }, - "node_modules/nice-try": { - "version": "1.0.5", - "resolved": "https://registry.npmjs.org/nice-try/-/nice-try-1.0.5.tgz", - "integrity": "sha512-1nh45deeb5olNY7eX82BkPO7SSxR5SSYJiPTrTdFUVYwAl8CKMA5N9PjTYkHiRjisVcxcQ1HXdLhx2qxxJzLNQ==", - "dev": true - }, - "node_modules/node-cleanup": { - "version": "2.1.2", - "resolved": "https://registry.npmjs.org/node-cleanup/-/node-cleanup-2.1.2.tgz", - "integrity": "sha1-esGavSl+Caf3KnFUXZUbUX5N3iw=", - "dev": true - }, - "node_modules/node-domexception": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/node-domexception/-/node-domexception-1.0.0.tgz", - "integrity": "sha512-/jKZoMpw0F8GRwl4/eLROPA3cfcXtLApP0QzLmUT/HuPCZWyB7IY9ZrMeKw2O/nFIqPQB3PVM9aYm0F312AXDQ==", + "node_modules/parse-statements": { + "version": "1.0.11", + "resolved": "https://registry.npmjs.org/parse-statements/-/parse-statements-1.0.11.tgz", + "integrity": "sha512-HlsyYdMBnbPQ9Jr/VgJ1YF4scnldvJpJxCVx6KgqPL4dxppsWrJHCIIxQXMJrqGnsRkNPATbeMJ8Yxu7JMsYcA==", "dev": true, - "funding": [ - { - "type": "github", - "url": "https://github.com/sponsors/jimmywarting" - }, - { - "type": "github", - "url": "https://paypal.me/jimmywarting" - } - ], - "engines": { - "node": ">=10.5.0" - } + "license": "MIT" }, - "node_modules/node-fetch": { - "version": "3.1.1", - "resolved": "https://registry.npmjs.org/node-fetch/-/node-fetch-3.1.1.tgz", - "integrity": "sha512-SMk+vKgU77PYotRdWzqZGTZeuFKlsJ0hu4KPviQKkfY+N3vn2MIzr0rvpnYpR8MtB3IEuhlEcuOLbGvLRlA+yg==", + "node_modules/parse5": { + "version": "7.3.0", + "resolved": "https://registry.npmjs.org/parse5/-/parse5-7.3.0.tgz", + "integrity": "sha512-IInvU7fabl34qmi9gY8XOVxhYyMyuH2xUNpb2q8/Y+7552KlejkRvqvD19nMoUW/uQGGbqNpA6Tufu5FL5BZgw==", "dev": true, + "license": "MIT", "dependencies": { - "data-uri-to-buffer": "^4.0.0", - "fetch-blob": "^3.1.3", - "formdata-polyfill": "^4.0.10" - }, - "engines": { - "node": "^12.20.0 || ^14.13.1 || >=16.0.0" + "entities": "^6.0.0" }, "funding": { - "type": "opencollective", - "url": "https://opencollective.com/node-fetch" + "url": "https://github.com/inikulin/parse5?sponsor=1" } }, - "node_modules/normalize-package-data": { - "version": "2.5.0", - "resolved": "https://registry.npmjs.org/normalize-package-data/-/normalize-package-data-2.5.0.tgz", - "integrity": "sha512-/5CMN3T0R4XTj4DcGaexo+roZSdSFW/0AOOTROrjxzCG1wrWXEsGbRKevjlIL+ZDE4sZlJr5ED4YW0yqmkK+eA==", + "node_modules/path-exists": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/path-exists/-/path-exists-4.0.0.tgz", + "integrity": "sha512-ak9Qy5Q7jYb2Wwcey5Fpvg2KoAc/ZIhLSLOSBmRmygPsGwkVVt0fZa0qrtMz+m6tJTAHfZQ8FnmB4MG4LWy7/w==", "dev": true, - "dependencies": { - "hosted-git-info": "^2.1.4", - "resolve": "^1.10.0", - "semver": "2 || 3 || 4 || 5", - "validate-npm-package-license": "^3.0.1" + "license": "MIT", + "engines": { + "node": ">=8" } }, - "node_modules/normalize-path": { - "version": "2.1.1", - "resolved": "https://registry.npmjs.org/normalize-path/-/normalize-path-2.1.1.tgz", - "integrity": "sha1-GrKLVW4Zg2Oowab35vogE3/mrtk=", + "node_modules/path-is-absolute": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/path-is-absolute/-/path-is-absolute-1.0.1.tgz", + "integrity": "sha512-AVbw3UJ2e9bq64vSaS9Am0fje1Pa8pbGqTTsmXfaIiMpnr5DlDhfJOuLj9Sf95ZPVDAUerDfEk88MPmPe7UCQg==", "dev": true, - "dependencies": { - "remove-trailing-separator": "^1.0.1" - }, + "license": "MIT", "engines": { "node": ">=0.10.0" } }, - "node_modules/now-and-later": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/now-and-later/-/now-and-later-2.0.1.tgz", - "integrity": "sha512-KGvQ0cB70AQfg107Xvs/Fbu+dGmZoTRJp2TaPwcwQm3/7PteUyN2BCgk8KBMPGBUXZdVwyWS8fDCGFygBm19UQ==", + "node_modules/path-key": { + "version": "3.1.1", + "resolved": "https://registry.npmjs.org/path-key/-/path-key-3.1.1.tgz", + "integrity": "sha512-ojmeN0qd+y0jszEtoY48r0Peq5dwMEkIlCOu6Q5f41lfkswXuKtYrhgoTpLnyIcHm24Uhqx+5Tqm2InSwLhE6Q==", "dev": true, - "dependencies": { - "once": "^1.3.2" - }, + "license": "MIT", "engines": { - "node": ">= 0.10" + "node": ">=8" } }, - "node_modules/npm-run-all": { - "version": "4.1.5", - "resolved": "https://registry.npmjs.org/npm-run-all/-/npm-run-all-4.1.5.tgz", - "integrity": "sha512-Oo82gJDAVcaMdi3nuoKFavkIHBRVqQ1qvMb+9LHk/cF4P6B2m8aP04hGf7oL6wZ9BuGwX1onlLhpuoofSyoQDQ==", + "node_modules/path-parse": { + "version": "1.0.7", + "resolved": "https://registry.npmjs.org/path-parse/-/path-parse-1.0.7.tgz", + "integrity": "sha512-LDJzPVEEEPR+y48z93A0Ed0yXb8pAByGWo/k5YYdYgpY2/2EsOsksJrq7lOHxryrVOn1ejG6oAp8ahvOIQD8sw==", + "dev": true, + "license": "MIT" + }, + "node_modules/path-type": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/path-type/-/path-type-3.0.0.tgz", + "integrity": "sha512-T2ZUsdZFHgA3u4e5PfPbjd7HDDpxPnQb5jN0SrDsjNSuVXHJqtwTnWqG0B1jZrgmJ/7lj1EmVIByWt1gxGkWvg==", "dev": true, + "license": "MIT", "dependencies": { - "ansi-styles": "^3.2.1", - "chalk": "^2.4.1", - "cross-spawn": "^6.0.5", - "memorystream": "^0.3.1", - "minimatch": "^3.0.4", - "pidtree": "^0.3.0", - "read-pkg": "^3.0.0", - "shell-quote": "^1.6.1", - "string.prototype.padend": "^3.0.0" - }, - "bin": { - "npm-run-all": "bin/npm-run-all/index.js", - "run-p": "bin/run-p/index.js", - "run-s": "bin/run-s/index.js" + "pify": "^3.0.0" }, "engines": { - "node": ">= 4" + "node": ">=4" } }, - "node_modules/npm-run-all/node_modules/load-json-file": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/load-json-file/-/load-json-file-4.0.0.tgz", - "integrity": "sha1-L19Fq5HjMhYjT9U62rZo607AmTs=", + "node_modules/pathval": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/pathval/-/pathval-2.0.0.tgz", + "integrity": "sha512-vE7JKRyES09KiunauX7nd2Q9/L7lhok4smP9RZTDeD4MVs72Dp2qNFVz39Nz5a0FVEW0BJR6C0DYrq6unoziZA==", "dev": true, - "dependencies": { - "graceful-fs": "^4.1.2", - "parse-json": "^4.0.0", - "pify": "^3.0.0", - "strip-bom": "^3.0.0" - }, + "license": "MIT", "engines": { - "node": ">=4" + "node": ">= 14.16" } }, - "node_modules/npm-run-all/node_modules/parse-json": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/parse-json/-/parse-json-4.0.0.tgz", - "integrity": "sha1-vjX1Qlvh9/bHRxhPmKeIy5lHfuA=", + "node_modules/picocolors": { + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/picocolors/-/picocolors-1.1.1.tgz", + "integrity": "sha512-xceH2snhtb5M9liqDsmEw56le376mTZkEX/jEb/RxNFyegNul7eNslCXP9FDj/Lcu0X8KEyMceP2ntpaHrDEVA==", "dev": true, - "dependencies": { - "error-ex": "^1.3.1", - "json-parse-better-errors": "^1.0.1" - }, + "license": "ISC" + }, + "node_modules/picomatch": { + "version": "4.0.2", + "resolved": "https://registry.npmjs.org/picomatch/-/picomatch-4.0.2.tgz", + "integrity": "sha512-M7BAV6Rlcy5u+m6oPhAPFgJTzAioX/6B0DxyvDlo9l8+T3nLKbrczg2WLUyzd45L8RqfUMyGPzekbMvX2Ldkwg==", + "dev": true, + "license": "MIT", "engines": { - "node": ">=4" + "node": ">=12" + }, + "funding": { + "url": "https://github.com/sponsors/jonschlinkert" } }, - "node_modules/npm-run-all/node_modules/path-type": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/path-type/-/path-type-3.0.0.tgz", - "integrity": "sha512-T2ZUsdZFHgA3u4e5PfPbjd7HDDpxPnQb5jN0SrDsjNSuVXHJqtwTnWqG0B1jZrgmJ/7lj1EmVIByWt1gxGkWvg==", + "node_modules/pidtree": { + "version": "0.3.1", + "resolved": "https://registry.npmjs.org/pidtree/-/pidtree-0.3.1.tgz", + "integrity": "sha512-qQbW94hLHEqCg7nhby4yRC7G2+jYHY4Rguc2bjw7Uug4GIJuu1tvf2uHaZv5Q8zdt+WKJ6qK1FOI6amaWUo5FA==", "dev": true, - "dependencies": { - "pify": "^3.0.0" + "license": "MIT", + "bin": { + "pidtree": "bin/pidtree.js" }, "engines": { - "node": ">=4" + "node": ">=0.10" } }, - "node_modules/npm-run-all/node_modules/pify": { + "node_modules/pify": { "version": "3.0.0", "resolved": "https://registry.npmjs.org/pify/-/pify-3.0.0.tgz", - "integrity": "sha1-5aSs0sEB/fPZpNB/DbxNtJ3SgXY=", + "integrity": "sha512-C3FsVNH1udSEX48gGX1xfvwTWfsYWj5U+8/uK15BGzIGrKoUpghX8hWZwa/OFnakBiiVNmBvemTJR5mcy7iPcg==", "dev": true, + "license": "MIT", "engines": { "node": ">=4" } }, - "node_modules/npm-run-all/node_modules/read-pkg": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/read-pkg/-/read-pkg-3.0.0.tgz", - "integrity": "sha1-nLxoaXj+5l0WwA4rGcI3/Pbjg4k=", + "node_modules/pinpoint": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/pinpoint/-/pinpoint-1.1.0.tgz", + "integrity": "sha512-+04FTD9x7Cls2rihLlo57QDCcHoLBGn5Dk51SwtFBWkUWLxZaBXyNVpCw1S+atvE7GmnFjeaRZ0WLq3UYuqAdg==", "dev": true, - "dependencies": { - "load-json-file": "^4.0.0", - "normalize-package-data": "^2.3.2", - "path-type": "^3.0.0" - }, - "engines": { - "node": ">=4" - } + "license": "MIT" }, - "node_modules/npm-run-all/node_modules/strip-bom": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/strip-bom/-/strip-bom-3.0.0.tgz", - "integrity": "sha1-IzTBjpx1n3vdVv3vfprj1YjmjtM=", + "node_modules/pirates": { + "version": "4.0.7", + "resolved": "https://registry.npmjs.org/pirates/-/pirates-4.0.7.tgz", + "integrity": "sha512-TfySrs/5nm8fQJDcBDuUng3VOUKsd7S+zqvbOTiGXHfxX4wK31ard+hoNuvkicM/2YFzlpDgABOevKSsB4G/FA==", "dev": true, + "license": "MIT", "engines": { - "node": ">=4" + "node": ">= 6" } }, - "node_modules/npm-run-path": { - "version": "2.0.2", - "resolved": "https://registry.npmjs.org/npm-run-path/-/npm-run-path-2.0.2.tgz", - "integrity": "sha1-NakjLfo11wZ7TLLd8jV7GHFTbF8=", + "node_modules/platform": { + "version": "1.3.6", + "resolved": "https://registry.npmjs.org/platform/-/platform-1.3.6.tgz", + "integrity": "sha512-fnWVljUchTro6RiCFvCXBbNhJc2NijN7oIQxbwsyL0buWJPG85v81ehlHI9fXrJsMNgTofEoWIQeClKpgxFLrg==", "dev": true, - "dependencies": { - "path-key": "^2.0.0" - }, + "license": "MIT" + }, + "node_modules/possible-typed-array-names": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/possible-typed-array-names/-/possible-typed-array-names-1.1.0.tgz", + "integrity": "sha512-/+5VFTchJDoVj3bhoqi6UeymcD00DAwb1nJwamzPvHEszJ4FpF6SNNbUbOS8yI56qHzdV8eK0qEfOSiodkTdxg==", + "dev": true, + "license": "MIT", "engines": { - "node": ">=4" + "node": ">= 0.4" } }, - "node_modules/number-is-nan": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/number-is-nan/-/number-is-nan-1.0.1.tgz", - "integrity": "sha1-CXtgK1NCKlIsGvuHkDGDNpQaAR0=", + "node_modules/prelude-ls": { + "version": "1.2.1", + "resolved": "https://registry.npmjs.org/prelude-ls/-/prelude-ls-1.2.1.tgz", + "integrity": "sha512-vkcDPrRZo1QZLbn5RLGPpg/WmIQ65qoWWhcGKf/b5eplkkarX0m9z8ppCat4mlOqUsWpyNuYgO3VRyrYHSzX5g==", "dev": true, + "license": "MIT", "engines": { - "node": ">=0.10.0" + "node": ">= 0.8.0" } }, - "node_modules/nunjucks": { - "version": "3.2.2", - "resolved": "https://registry.npmjs.org/nunjucks/-/nunjucks-3.2.2.tgz", - "integrity": "sha512-KUi85OoF2NMygwODAy28Lh9qHmq5hO3rBlbkYoC8v377h4l8Pt5qFjILl0LWpMbOrZ18CzfVVUvIHUIrtED3sA==", + "node_modules/prettier": { + "version": "3.5.3", + "resolved": "https://registry.npmjs.org/prettier/-/prettier-3.5.3.tgz", + "integrity": "sha512-QQtaxnoDJeAkDvDKWCLiwIXkTgRhwYDEQCghU9Z6q03iyek/rxRh/2lC3HB7P8sWT2xC/y5JDctPLBIGzHKbhw==", "dev": true, - "dependencies": { - "a-sync-waterfall": "^1.0.0", - "asap": "^2.0.3", - "commander": "^5.1.0" - }, + "license": "MIT", "bin": { - "nunjucks-precompile": "bin/precompile" + "prettier": "bin/prettier.cjs" }, "engines": { - "node": ">= 6.9.0" + "node": ">=14" }, - "optionalDependencies": { - "chokidar": "^3.3.0" + "funding": { + "url": "https://github.com/prettier/prettier?sponsor=1" } }, - "node_modules/nunjucks/node_modules/anymatch": { - "version": "3.1.1", - "resolved": "https://registry.npmjs.org/anymatch/-/anymatch-3.1.1.tgz", - "integrity": "sha512-mM8522psRCqzV+6LhomX5wgp25YVibjh8Wj23I5RPkPppSVSjyKD2A2mBJmWGa+KN7f2D6LNh9jkBCeyLktzjg==", + "node_modules/prettier-plugin-brace-style": { + "version": "0.7.3", + "resolved": "https://registry.npmjs.org/prettier-plugin-brace-style/-/prettier-plugin-brace-style-0.7.3.tgz", + "integrity": "sha512-dpNenn3Dm4BdDmVE0azn0SLclTTcMgWjMGYsQgT5uV/mKNToYi97bT+SiAtSYb36SRQFlZ0nEs/2eD/tUI3maA==", "dev": true, - "optional": true, + "license": "MIT", + "engines": { + "node": ">=14" + }, + "peerDependencies": { + "prettier": "^2 || ^3", + "prettier-plugin-astro": "*", + "prettier-plugin-svelte": "*" + }, + "peerDependenciesMeta": { + "prettier-plugin-astro": { + "optional": true + }, + "prettier-plugin-svelte": { + "optional": true + } + } + }, + "node_modules/prettier-plugin-merge": { + "version": "0.7.4", + "resolved": "https://registry.npmjs.org/prettier-plugin-merge/-/prettier-plugin-merge-0.7.4.tgz", + "integrity": "sha512-cxuInnqaO8d/zZx/tk8PEKtab8QetiBsOlXH+kYqBF66lSwJoy491jQT3ocOdJ/8nzom40QGGq/wUblFe7zRxw==", + "dev": true, + "license": "MIT", "dependencies": { - "normalize-path": "^3.0.0", - "picomatch": "^2.0.4" + "diff": "5.1.0" }, "engines": { - "node": ">= 8" + "node": ">=14" + }, + "peerDependencies": { + "prettier": "^2 || ^3" } }, - "node_modules/nunjucks/node_modules/binary-extensions": { - "version": "2.1.0", - "resolved": "https://registry.npmjs.org/binary-extensions/-/binary-extensions-2.1.0.tgz", - "integrity": "sha512-1Yj8h9Q+QDF5FzhMs/c9+6UntbD5MkRfRwac8DoEm9ZfUBZ7tZ55YcGVAzEe4bXsdQHEk+s9S5wsOKVdZrw0tQ==", + "node_modules/prettier-plugin-merge/node_modules/diff": { + "version": "5.1.0", + "resolved": "https://registry.npmjs.org/diff/-/diff-5.1.0.tgz", + "integrity": "sha512-D+mk+qE8VC/PAUrlAU34N+VfXev0ghe5ywmpqrawphmVZc1bEfn56uo9qpyGp1p4xpzOHkSW4ztBd6L7Xx4ACw==", "dev": true, - "optional": true, + "license": "BSD-3-Clause", "engines": { - "node": ">=8" + "node": ">=0.3.1" } }, - "node_modules/nunjucks/node_modules/braces": { - "version": "3.0.2", - "resolved": "https://registry.npmjs.org/braces/-/braces-3.0.2.tgz", - "integrity": "sha512-b8um+L1RzM3WDSzvhm6gIz1yfTbBt6YTlcEKAvsmqCZZFw46z626lVj9j1yEPW33H5H+lBQpZMP1k8l+78Ha0A==", + "node_modules/prettier-plugin-space-before-function-paren": { + "version": "0.0.8", + "resolved": "https://registry.npmjs.org/prettier-plugin-space-before-function-paren/-/prettier-plugin-space-before-function-paren-0.0.8.tgz", + "integrity": "sha512-ZjtDtkF+oD0GsaIuaQBAlSkgx76/SPIrIhVxmTV8xXKsnr2yIAv2ZxCHhNmxyMNC5RlcmUbKHiMEJGRU1ivy8w==", "dev": true, - "optional": true, + "license": "MIT", + "peerDependencies": { + "prettier": ">=3.0.0" + } + }, + "node_modules/pretty-format": { + "version": "29.7.0", + "resolved": "https://registry.npmjs.org/pretty-format/-/pretty-format-29.7.0.tgz", + "integrity": "sha512-Pdlw/oPxN+aXdmM9R00JVC9WVFoCLTKJvDVLgmJ+qAffBMxsV85l/Lu7sNx4zSzPyoL2euImuEwHhOXdEgNFZQ==", + "dev": true, + "license": "MIT", "dependencies": { - "fill-range": "^7.0.1" + "@jest/schemas": "^29.6.3", + "ansi-styles": "^5.0.0", + "react-is": "^18.0.0" }, "engines": { - "node": ">=8" + "node": "^14.15.0 || ^16.10.0 || >=18.0.0" } }, - "node_modules/nunjucks/node_modules/chokidar": { - "version": "3.4.3", - "resolved": "https://registry.npmjs.org/chokidar/-/chokidar-3.4.3.tgz", - "integrity": "sha512-DtM3g7juCXQxFVSNPNByEC2+NImtBuxQQvWlHunpJIS5Ocr0lG306cC7FCi7cEA0fzmybPUIl4txBIobk1gGOQ==", + "node_modules/pretty-format/node_modules/ansi-styles": { + "version": "5.2.0", + "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-5.2.0.tgz", + "integrity": "sha512-Cxwpt2SfTzTtXcfOlzGEee8O+c+MmUgGrNiBcXnuWxuFJHe6a5Hz7qwhwe5OgaSYI0IJvkLqWX1ASG+cJOkEiA==", "dev": true, - "optional": true, - "dependencies": { - "anymatch": "~3.1.1", - "braces": "~3.0.2", - "glob-parent": "~5.1.0", - "is-binary-path": "~2.1.0", - "is-glob": "~4.0.1", - "normalize-path": "~3.0.0", - "readdirp": "~3.5.0" - }, + "license": "MIT", "engines": { - "node": ">= 8.10.0" + "node": ">=10" }, - "optionalDependencies": { - "fsevents": "~2.1.2" + "funding": { + "url": "https://github.com/chalk/ansi-styles?sponsor=1" } }, - "node_modules/nunjucks/node_modules/commander": { - "version": "5.1.0", - "resolved": "https://registry.npmjs.org/commander/-/commander-5.1.0.tgz", - "integrity": "sha512-P0CysNDQ7rtVw4QIQtm+MRxV66vKFSvlsQvGYXZWR3qFU0jlMKHZZZgw8e+8DSah4UDKMqnknRDQz+xuQXQ/Zg==", + "node_modules/prettyjson": { + "version": "1.2.5", + "resolved": "https://registry.npmjs.org/prettyjson/-/prettyjson-1.2.5.tgz", + "integrity": "sha512-rksPWtoZb2ZpT5OVgtmy0KHVM+Dca3iVwWY9ifwhcexfjebtgjg3wmrUt9PvJ59XIYBcknQeYHD8IAnVlh9lAw==", "dev": true, - "engines": { - "node": ">= 6" + "license": "MIT", + "dependencies": { + "colors": "1.4.0", + "minimist": "^1.2.0" + }, + "bin": { + "prettyjson": "bin/prettyjson" } }, - "node_modules/nunjucks/node_modules/fill-range": { - "version": "7.0.1", - "resolved": "https://registry.npmjs.org/fill-range/-/fill-range-7.0.1.tgz", - "integrity": "sha512-qOo9F+dMUmC2Lcb4BbVvnKJxTPjCm+RRpe4gDuGrzkL7mEVl/djYSu2OdQ2Pa302N4oqkSg9ir6jaLWJ2USVpQ==", + "node_modules/psl": { + "version": "1.15.0", + "resolved": "https://registry.npmjs.org/psl/-/psl-1.15.0.tgz", + "integrity": "sha512-JZd3gMVBAVQkSs6HdNZo9Sdo0LNcQeMNP3CozBJb3JYC/QUYZTnKxP+f8oWRX4rHP5EurWxqAHTSwUCjlNKa1w==", "dev": true, - "optional": true, + "license": "MIT", "dependencies": { - "to-regex-range": "^5.0.1" + "punycode": "^2.3.1" }, - "engines": { - "node": ">=8" + "funding": { + "url": "https://github.com/sponsors/lupomontero" } }, - "node_modules/nunjucks/node_modules/fsevents": { - "version": "2.1.3", - "resolved": "https://registry.npmjs.org/fsevents/-/fsevents-2.1.3.tgz", - "integrity": "sha512-Auw9a4AxqWpa9GUfj370BMPzzyncfBABW8Mab7BGWBYDj4Isgq+cDKtx0i6u9jcX9pQDnswsaaOTgTmA5pEjuQ==", - "deprecated": "\"Please update to latest v2.3 or v2.2\"", + "node_modules/punycode": { + "version": "2.3.1", + "resolved": "https://registry.npmjs.org/punycode/-/punycode-2.3.1.tgz", + "integrity": "sha512-vYt7UD1U9Wg6138shLtLOvdAu+8DsC/ilFtEVHcH+wydcSpNE20AfSOduf6MkRFahL5FY7X1oU7nKVZFtfq8Fg==", "dev": true, - "hasInstallScript": true, - "optional": true, - "os": [ - "darwin" - ], + "license": "MIT", "engines": { - "node": "^8.16.0 || ^10.6.0 || >=11.0.0" + "node": ">=6" } }, - "node_modules/nunjucks/node_modules/glob-parent": { - "version": "5.1.2", - "resolved": "https://registry.npmjs.org/glob-parent/-/glob-parent-5.1.2.tgz", - "integrity": "sha512-AOIgSQCepiJYwP3ARnGx+5VnTu2HBYdzbGP45eLw1vr3zB3vZLeyed1sC9hnbcOc9/SrMyM5RPQrkGz4aS9Zow==", + "node_modules/qs": { + "version": "6.14.0", + "resolved": "https://registry.npmjs.org/qs/-/qs-6.14.0.tgz", + "integrity": "sha512-YWWTjgABSKcvs/nWBi9PycY/JiPJqOD4JA6o9Sej2AtvSGarXxKC3OQSk4pAarbdQlKAh5D4FCQkJNkW+GAn3w==", "dev": true, - "optional": true, + "license": "BSD-3-Clause", "dependencies": { - "is-glob": "^4.0.1" + "side-channel": "^1.1.0" }, "engines": { - "node": ">= 6" + "node": ">=0.6" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" } }, - "node_modules/nunjucks/node_modules/is-binary-path": { - "version": "2.1.0", - "resolved": "https://registry.npmjs.org/is-binary-path/-/is-binary-path-2.1.0.tgz", - "integrity": "sha512-ZMERYes6pDydyuGidse7OsHxtbI7WVeUEozgR/g7rd0xUimYNlvZRE/K2MgZTjWy725IfelLeVcEM97mmtRGXw==", + "node_modules/querystringify": { + "version": "2.2.0", + "resolved": "https://registry.npmjs.org/querystringify/-/querystringify-2.2.0.tgz", + "integrity": "sha512-FIqgj2EUvTa7R50u0rGsyTftzjYmv/a3hO345bZNrqabNqjtgiDMgmo4mkUjd+nzU5oF3dClKqFIPUKybUyqoQ==", "dev": true, - "optional": true, - "dependencies": { - "binary-extensions": "^2.0.0" - }, + "license": "MIT" + }, + "node_modules/queue-microtask": { + "version": "1.2.3", + "resolved": "https://registry.npmjs.org/queue-microtask/-/queue-microtask-1.2.3.tgz", + "integrity": "sha512-NuaNSa6flKT5JaSYQzJok04JzTL1CA6aGhv5rfLW3PgqA+M2ChpZQnAC8h8i4ZFkBS8X5RqkDBHA7r4hej3K9A==", + "dev": true, + "funding": [ + { + "type": "github", + "url": "https://github.com/sponsors/feross" + }, + { + "type": "patreon", + "url": "https://www.patreon.com/feross" + }, + { + "type": "consulting", + "url": "https://feross.org/support" + } + ], + "license": "MIT" + }, + "node_modules/quick-lru": { + "version": "4.0.1", + "resolved": "https://registry.npmjs.org/quick-lru/-/quick-lru-4.0.1.tgz", + "integrity": "sha512-ARhCpm70fzdcvNQfPoy49IaanKkTlRWF2JMzqhcJbhSFRZv7nPTvZJdcY7301IPmvW+/p0RgIWnQDLJxifsQ7g==", + "dev": true, + "license": "MIT", "engines": { "node": ">=8" } }, - "node_modules/nunjucks/node_modules/is-number": { - "version": "7.0.0", - "resolved": "https://registry.npmjs.org/is-number/-/is-number-7.0.0.tgz", - "integrity": "sha512-41Cifkg6e8TylSpdtTpeLVMqvSBEVzTttHvERD741+pnZ8ANv0004MRL43QKPDlK9cGvNp6NZWZUBlbGXYxxng==", + "node_modules/randombytes": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/randombytes/-/randombytes-2.1.0.tgz", + "integrity": "sha512-vYl3iOX+4CKUWuxGi9Ukhie6fsqXqS9FE2Zaic4tNFD2N2QQaXOMFbuKK4QmDHC0JO6B1Zp41J0LpT0oR68amQ==", "dev": true, - "optional": true, - "engines": { - "node": ">=0.12.0" + "license": "MIT", + "dependencies": { + "safe-buffer": "^5.1.0" } }, - "node_modules/nunjucks/node_modules/normalize-path": { + "node_modules/react-is": { + "version": "18.3.1", + "resolved": "https://registry.npmjs.org/react-is/-/react-is-18.3.1.tgz", + "integrity": "sha512-/LLMVyas0ljjAtoYiPqYiL8VWXzUUdThrmU5+n20DZv+a+ClRoevUzw5JxU+Ieh5/c87ytoTBV9G1FiKfNJdmg==", + "dev": true, + "license": "MIT" + }, + "node_modules/read-pkg": { "version": "3.0.0", - "resolved": "https://registry.npmjs.org/normalize-path/-/normalize-path-3.0.0.tgz", - "integrity": "sha512-6eZs5Ls3WtCisHWp9S2GUy8dqkpGi4BVSz3GaqiE6ezub0512ESztXUwUB6C6IKbQkY2Pnb/mD4WYojCRwcwLA==", + "resolved": "https://registry.npmjs.org/read-pkg/-/read-pkg-3.0.0.tgz", + "integrity": "sha512-BLq/cCO9two+lBgiTYNqD6GdtK8s4NpaWrl6/rCO9w0TUS8oJl7cmToOZfRYllKTISY6nt1U7jQ53brmKqY6BA==", "dev": true, - "optional": true, + "license": "MIT", + "dependencies": { + "load-json-file": "^4.0.0", + "normalize-package-data": "^2.3.2", + "path-type": "^3.0.0" + }, "engines": { - "node": ">=0.10.0" + "node": ">=4" } }, - "node_modules/nunjucks/node_modules/readdirp": { - "version": "3.5.0", - "resolved": "https://registry.npmjs.org/readdirp/-/readdirp-3.5.0.tgz", - "integrity": "sha512-cMhu7c/8rdhkHXWsY+osBhfSy0JikwpHK/5+imo+LpeasTF8ouErHrlYkwT0++njiyuDvc7OFY5T3ukvZ8qmFQ==", + "node_modules/read-pkg-up": { + "version": "7.0.1", + "resolved": "https://registry.npmjs.org/read-pkg-up/-/read-pkg-up-7.0.1.tgz", + "integrity": "sha512-zK0TB7Xd6JpCLmlLmufqykGE+/TlOePD6qKClNW7hHDKFh/J7/7gCWGR7joEQEW1bKq3a3yUZSObOoWLFQ4ohg==", "dev": true, - "optional": true, + "license": "MIT", "dependencies": { - "picomatch": "^2.2.1" + "find-up": "^4.1.0", + "read-pkg": "^5.2.0", + "type-fest": "^0.8.1" }, "engines": { - "node": ">=8.10.0" + "node": ">=8" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" } }, - "node_modules/nunjucks/node_modules/to-regex-range": { - "version": "5.0.1", - "resolved": "https://registry.npmjs.org/to-regex-range/-/to-regex-range-5.0.1.tgz", - "integrity": "sha512-65P7iz6X5yEr1cwcgvQxbbIw7Uk3gOy5dIdtZ4rDveLqhrdJP+Li/Hx6tyK0NEb+2GCyneCMJiGqrADCSNk8sQ==", + "node_modules/read-pkg-up/node_modules/find-up": { + "version": "4.1.0", + "resolved": "https://registry.npmjs.org/find-up/-/find-up-4.1.0.tgz", + "integrity": "sha512-PpOwAdQ/YlXQ2vj8a3h8IipDuYRi3wceVQQGYWxNINccq40Anw7BlsEXCMbt1Zt+OLA6Fq9suIpIWD0OsnISlw==", "dev": true, - "optional": true, + "license": "MIT", "dependencies": { - "is-number": "^7.0.0" + "locate-path": "^5.0.0", + "path-exists": "^4.0.0" }, "engines": { - "node": ">=8.0" + "node": ">=8" } }, - "node_modules/nwsapi": { - "version": "2.2.0", - "resolved": "https://registry.npmjs.org/nwsapi/-/nwsapi-2.2.0.tgz", - "integrity": "sha512-h2AatdwYH+JHiZpv7pt/gSX1XoRGb7L/qSIeuqA6GwYoF9w1vP1cw42TO0aI2pNyshRK5893hNSl+1//vHK7hQ==", - "dev": true - }, - "node_modules/object-assign": { - "version": "4.1.1", - "resolved": "https://registry.npmjs.org/object-assign/-/object-assign-4.1.1.tgz", - "integrity": "sha1-IQmtx5ZYh8/AXLvUQsrIv7s2CGM=", + "node_modules/read-pkg-up/node_modules/locate-path": { + "version": "5.0.0", + "resolved": "https://registry.npmjs.org/locate-path/-/locate-path-5.0.0.tgz", + "integrity": "sha512-t7hw9pI+WvuwNJXwk5zVHpyhIqzg2qTlklJOf0mVxGSbe3Fp2VieZcduNYjaLDoy6p9uGpQEGWG87WpMKlNq8g==", "dev": true, + "license": "MIT", + "dependencies": { + "p-locate": "^4.1.0" + }, "engines": { - "node": ">=0.10.0" + "node": ">=8" } }, - "node_modules/object-copy": { - "version": "0.1.0", - "resolved": "https://registry.npmjs.org/object-copy/-/object-copy-0.1.0.tgz", - "integrity": "sha1-fn2Fi3gb18mRpBupde04EnVOmYw=", + "node_modules/read-pkg-up/node_modules/p-locate": { + "version": "4.1.0", + "resolved": "https://registry.npmjs.org/p-locate/-/p-locate-4.1.0.tgz", + "integrity": "sha512-R79ZZ/0wAxKGu3oYMlz8jy/kbhsNrS7SKZ7PxEHBgJ5+F2mtFW2fK2cOtBh1cHYkQsbzFV7I+EoRKe6Yt0oK7A==", "dev": true, + "license": "MIT", "dependencies": { - "copy-descriptor": "^0.1.0", - "define-property": "^0.2.5", - "kind-of": "^3.0.3" + "p-limit": "^2.2.0" }, "engines": { - "node": ">=0.10.0" + "node": ">=8" } }, - "node_modules/object-copy/node_modules/define-property": { - "version": "0.2.5", - "resolved": "https://registry.npmjs.org/define-property/-/define-property-0.2.5.tgz", - "integrity": "sha1-w1se+RjsPJkPmlvFe+BKrOxcgRY=", + "node_modules/read-pkg-up/node_modules/parse-json": { + "version": "5.2.0", + "resolved": "https://registry.npmjs.org/parse-json/-/parse-json-5.2.0.tgz", + "integrity": "sha512-ayCKvm/phCGxOkYRSCM82iDwct8/EonSEgCSxWxD7ve6jHggsFl4fZVQBPRNgQoKiuV/odhFrGzQXZwbifC8Rg==", "dev": true, + "license": "MIT", "dependencies": { - "is-descriptor": "^0.1.0" + "@babel/code-frame": "^7.0.0", + "error-ex": "^1.3.1", + "json-parse-even-better-errors": "^2.3.0", + "lines-and-columns": "^1.1.6" }, "engines": { - "node": ">=0.10.0" + "node": ">=8" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" } }, - "node_modules/object-copy/node_modules/kind-of": { - "version": "3.2.2", - "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-3.2.2.tgz", - "integrity": "sha1-MeohpzS6ubuw8yRm2JOupR5KPGQ=", + "node_modules/read-pkg-up/node_modules/read-pkg": { + "version": "5.2.0", + "resolved": "https://registry.npmjs.org/read-pkg/-/read-pkg-5.2.0.tgz", + "integrity": "sha512-Ug69mNOpfvKDAc2Q8DRpMjjzdtrnv9HcSMX+4VsZxD1aZ6ZzrIE7rlzXBtWTyhULSMKg076AW6WR5iZpD0JiOg==", "dev": true, + "license": "MIT", "dependencies": { - "is-buffer": "^1.1.5" + "@types/normalize-package-data": "^2.4.0", + "normalize-package-data": "^2.5.0", + "parse-json": "^5.0.0", + "type-fest": "^0.6.0" }, "engines": { - "node": ">=0.10.0" + "node": ">=8" } }, - "node_modules/object-inspect": { - "version": "1.10.3", - "resolved": "https://registry.npmjs.org/object-inspect/-/object-inspect-1.10.3.tgz", - "integrity": "sha512-e5mCJlSH7poANfC8z8S9s9S2IN5/4Zb3aZ33f5s8YqoazCFzNLloLU8r5VCG+G7WoqLvAAZoVMcy3tp/3X0Plw==", + "node_modules/read-pkg-up/node_modules/read-pkg/node_modules/type-fest": { + "version": "0.6.0", + "resolved": "https://registry.npmjs.org/type-fest/-/type-fest-0.6.0.tgz", + "integrity": "sha512-q+MB8nYR1KDLrgr4G5yemftpMC7/QLqVndBmEEdqzmNj5dcFOO4Oo8qlwZE3ULT3+Zim1F8Kq4cBnikNhlCMlg==", "dev": true, - "funding": { - "url": "https://github.com/sponsors/ljharb" + "license": "(MIT OR CC0-1.0)", + "engines": { + "node": ">=8" } }, - "node_modules/object-keys": { - "version": "1.1.0", - "resolved": "https://registry.npmjs.org/object-keys/-/object-keys-1.1.0.tgz", - "integrity": "sha512-6OO5X1+2tYkNyNEx6TsCxEqFfRWaqx6EtMiSbGrw8Ob8v9Ne+Hl8rBAgLBZn5wjEz3s/s6U1WXFUFOcxxAwUpg==", + "node_modules/read-pkg-up/node_modules/type-fest": { + "version": "0.8.1", + "resolved": "https://registry.npmjs.org/type-fest/-/type-fest-0.8.1.tgz", + "integrity": "sha512-4dbzIzqvjtgiM5rw1k5rEHtBANKmdudhGyBEajN01fEyhaAIhsoKNy6y7+IN93IfpFtwY9iqi7kD+xwKhQsNJA==", "dev": true, + "license": "(MIT OR CC0-1.0)", "engines": { - "node": ">= 0.4" + "node": ">=8" } }, - "node_modules/object-visit": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/object-visit/-/object-visit-1.0.1.tgz", - "integrity": "sha1-95xEk68MU3e1n+OdOV5BBC3QRbs=", + "node_modules/readable-stream": { + "version": "3.6.2", + "resolved": "https://registry.npmjs.org/readable-stream/-/readable-stream-3.6.2.tgz", + "integrity": "sha512-9u/sniCrY3D5WdsERHzHE4G2YCXqoG5FTHUiCC4SIbr6XcLZBY05ya9EKjYek9O5xOAwjGq+1JdGBAS7Q9ScoA==", "dev": true, + "license": "MIT", "dependencies": { - "isobject": "^3.0.0" + "inherits": "^2.0.3", + "string_decoder": "^1.1.1", + "util-deprecate": "^1.0.1" }, "engines": { - "node": ">=0.10.0" + "node": ">= 6" } }, - "node_modules/object.assign": { - "version": "4.1.0", - "resolved": "https://registry.npmjs.org/object.assign/-/object.assign-4.1.0.tgz", - "integrity": "sha512-exHJeq6kBKj58mqGyTQ9DFvrZC/eR6OwxzoM9YRoGBqrXYonaFyGiFMuc9VZrXf7DarreEwMpurG3dd+CNyW5w==", + "node_modules/readdirp": { + "version": "3.6.0", + "resolved": "https://registry.npmjs.org/readdirp/-/readdirp-3.6.0.tgz", + "integrity": "sha512-hOS089on8RduqdbhvQ5Z37A0ESjsqz6qnRcffsMU3495FuTdqSm+7bhJ29JvIOsBDEEnan5DPu9t3To9VRlMzA==", "dev": true, + "license": "MIT", "dependencies": { - "define-properties": "^1.1.2", - "function-bind": "^1.1.1", - "has-symbols": "^1.0.0", - "object-keys": "^1.0.11" + "picomatch": "^2.2.1" }, "engines": { - "node": ">= 0.4" + "node": ">=8.10.0" } }, - "node_modules/object.defaults": { - "version": "1.1.0", - "resolved": "https://registry.npmjs.org/object.defaults/-/object.defaults-1.1.0.tgz", - "integrity": "sha1-On+GgzS0B96gbaFtiNXNKeQ1/s8=", + "node_modules/readdirp/node_modules/picomatch": { + "version": "2.3.1", + "resolved": "https://registry.npmjs.org/picomatch/-/picomatch-2.3.1.tgz", + "integrity": "sha512-JU3teHTNjmE2VCGFzuY8EXzCDVwEqB2a8fsIvwaStHhAWJEeVd1o1QD80CU6+ZdEXXSLbSsuLwJjkCBWqRQUVA==", "dev": true, - "dependencies": { - "array-each": "^1.0.1", - "array-slice": "^1.0.0", - "for-own": "^1.0.0", - "isobject": "^3.0.0" + "license": "MIT", + "engines": { + "node": ">=8.6" }, + "funding": { + "url": "https://github.com/sponsors/jonschlinkert" + } + }, + "node_modules/readline-sync": { + "version": "1.4.10", + "resolved": "https://registry.npmjs.org/readline-sync/-/readline-sync-1.4.10.tgz", + "integrity": "sha512-gNva8/6UAe8QYepIQH/jQ2qn91Qj0B9sYjMBBs3QOB8F2CXcKgLxQaJRP76sWVRQt+QU+8fAkCbCvjjMFu7Ycw==", + "dev": true, + "license": "MIT", "engines": { - "node": ">=0.10.0" + "node": ">= 0.8.0" } }, - "node_modules/object.map": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/object.map/-/object.map-1.0.1.tgz", - "integrity": "sha1-z4Plncj8wK1fQlDh94s7gb2AHTc=", + "node_modules/redent": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/redent/-/redent-3.0.0.tgz", + "integrity": "sha512-6tDA8g98We0zd0GvVeMT9arEOnTw9qM03L9cJXaCjrip1OO764RDBLBfrB4cwzNGDj5OA5ioymC9GkizgWJDUg==", "dev": true, + "license": "MIT", "dependencies": { - "for-own": "^1.0.0", - "make-iterator": "^1.0.0" + "indent-string": "^4.0.0", + "strip-indent": "^3.0.0" }, "engines": { - "node": ">=0.10.0" + "node": ">=8" } }, - "node_modules/object.pick": { - "version": "1.3.0", - "resolved": "https://registry.npmjs.org/object.pick/-/object.pick-1.3.0.tgz", - "integrity": "sha1-h6EKxMFpS9Lhy/U1kaZhQftd10c=", + "node_modules/refa": { + "version": "0.9.1", + "resolved": "https://registry.npmjs.org/refa/-/refa-0.9.1.tgz", + "integrity": "sha512-egU8LgFq2VXlAfUi8Jcbr5X38wEOadMFf8tCbshgcpVCYlE7k84pJOSlnvXF+muDB4igkdVMq7Z/kiNPqDT9TA==", "dev": true, + "license": "MIT", "dependencies": { - "isobject": "^3.0.1" - }, - "engines": { - "node": ">=0.10.0" + "regexpp": "^3.2.0" } }, - "node_modules/object.reduce": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/object.reduce/-/object.reduce-1.0.1.tgz", - "integrity": "sha1-b+NI8qx/oPlcpiEiZZkJaCW7A60=", + "node_modules/reflect.getprototypeof": { + "version": "1.0.10", + "resolved": "https://registry.npmjs.org/reflect.getprototypeof/-/reflect.getprototypeof-1.0.10.tgz", + "integrity": "sha512-00o4I+DVrefhv+nX0ulyi3biSHCPDe+yLv5o/p6d/UVlirijB8E16FtfwSAi4g3tcqrQ4lRAqQSoFEZJehYEcw==", "dev": true, + "license": "MIT", "dependencies": { - "for-own": "^1.0.0", - "make-iterator": "^1.0.0" + "call-bind": "^1.0.8", + "define-properties": "^1.2.1", + "es-abstract": "^1.23.9", + "es-errors": "^1.3.0", + "es-object-atoms": "^1.0.0", + "get-intrinsic": "^1.2.7", + "get-proto": "^1.0.1", + "which-builtin-type": "^1.2.1" }, "engines": { - "node": ">=0.10.0" + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" } }, - "node_modules/octokit-pagination-methods": { - "version": "1.1.0", - "resolved": "https://registry.npmjs.org/octokit-pagination-methods/-/octokit-pagination-methods-1.1.0.tgz", - "integrity": "sha512-fZ4qZdQ2nxJvtcasX7Ghl+WlWS/d9IgnBIwFZXVNNZUmzpno91SX5bc5vuxiuKoCtK78XxGGNuSCrDC7xYB3OQ==", - "dev": true - }, - "node_modules/once": { - "version": "1.4.0", - "resolved": "https://registry.npmjs.org/once/-/once-1.4.0.tgz", - "integrity": "sha1-WDsap3WWHUsROsF9nFC6753Xa9E=", + "node_modules/regenerator-runtime": { + "version": "0.13.11", + "resolved": "https://registry.npmjs.org/regenerator-runtime/-/regenerator-runtime-0.13.11.tgz", + "integrity": "sha512-kY1AZVr2Ra+t+piVaJ4gxaFaReZVH40AKNo7UCX6W+dEwBo/2oZJzqfuN1qLq1oL45o56cPaTXELwrTh8Fpggg==", "dev": true, - "dependencies": { - "wrappy": "1" - } + "license": "MIT" }, - "node_modules/opener": { - "version": "1.5.2", - "resolved": "https://registry.npmjs.org/opener/-/opener-1.5.2.tgz", - "integrity": "sha512-ur5UIdyw5Y7yEj9wLzhqXiy6GZ3Mwx0yGI+5sMn2r0N0v3cKJvUmFH5yPP+WXh9e0xfyzyJX95D8l088DNFj7A==", + "node_modules/regexp-ast-analysis": { + "version": "0.5.1", + "resolved": "https://registry.npmjs.org/regexp-ast-analysis/-/regexp-ast-analysis-0.5.1.tgz", + "integrity": "sha512-Ca/g9gaTNuMewLuu+mBIq4vCrGRSO8AE9bP32NMQjJ/wBTdWq0g96qLkBb0NbGwEbp7S/q+NQF3o7veeuRfg0g==", "dev": true, - "bin": { - "opener": "bin/opener-bin.js" + "license": "MIT", + "dependencies": { + "refa": "^0.9.0", + "regexpp": "^3.2.0" } }, - "node_modules/optionator": { - "version": "0.8.3", - "resolved": "https://registry.npmjs.org/optionator/-/optionator-0.8.3.tgz", - "integrity": "sha512-+IW9pACdk3XWmmTXG8m3upGUJst5XRGzxMRjXzAuJ1XnIFNvfhjjIuYkDvysnPQ7qzqVzLt78BCruntqRhWQbA==", + "node_modules/regexp.prototype.flags": { + "version": "1.5.4", + "resolved": "https://registry.npmjs.org/regexp.prototype.flags/-/regexp.prototype.flags-1.5.4.tgz", + "integrity": "sha512-dYqgNSZbDwkaJ2ceRd9ojCGjBq+mOm9LmtXnAnEGyHhN/5R7iDW2TRw3h+o/jCFxus3P2LfWIIiwowAjANm7IA==", "dev": true, + "license": "MIT", "dependencies": { - "deep-is": "~0.1.3", - "fast-levenshtein": "~2.0.6", - "levn": "~0.3.0", - "prelude-ls": "~1.1.2", - "type-check": "~0.3.2", - "word-wrap": "~1.2.3" + "call-bind": "^1.0.8", + "define-properties": "^1.2.1", + "es-errors": "^1.3.0", + "get-proto": "^1.0.1", + "gopd": "^1.2.0", + "set-function-name": "^2.0.2" }, "engines": { - "node": ">= 0.8.0" + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" } }, - "node_modules/ordered-read-streams": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/ordered-read-streams/-/ordered-read-streams-1.0.1.tgz", - "integrity": "sha1-d8DLN8QVJdZBZtmQ/61+xqDhNj4=", + "node_modules/regexpp": { + "version": "3.2.0", + "resolved": "https://registry.npmjs.org/regexpp/-/regexpp-3.2.0.tgz", + "integrity": "sha512-pq2bWo9mVD43nbts2wGv17XLiNLya+GklZ8kaDLV2Z08gDCsGpnKn9BFMepvWuHCbyVvY7J5o5+BVvoQbmlJLg==", "dev": true, - "dependencies": { - "readable-stream": "^2.0.1" + "license": "MIT", + "engines": { + "node": ">=8" + }, + "funding": { + "url": "https://github.com/sponsors/mysticatea" } }, - "node_modules/os-locale": { - "version": "1.4.0", - "resolved": "https://registry.npmjs.org/os-locale/-/os-locale-1.4.0.tgz", - "integrity": "sha1-IPnxeuKe00XoveWDsT0gCYA8FNk=", + "node_modules/require-directory": { + "version": "2.1.1", + "resolved": "https://registry.npmjs.org/require-directory/-/require-directory-2.1.1.tgz", + "integrity": "sha512-fGxEI7+wsG9xrvdjsrlmL22OMTTiHRwAMroiEeMgq8gzoLC/PQr7RsRDSTLUg/bZAZtF+TVIkHc6/4RIKrui+Q==", "dev": true, - "dependencies": { - "lcid": "^1.0.0" - }, + "license": "MIT", "engines": { "node": ">=0.10.0" } }, - "node_modules/os-name": { - "version": "3.1.0", - "resolved": "https://registry.npmjs.org/os-name/-/os-name-3.1.0.tgz", - "integrity": "sha512-h8L+8aNjNcMpo/mAIBPn5PXCM16iyPGjHNWo6U1YO8sJTMHtEtyczI6QJnLoplswm6goopQkqc7OAnjhWcugVg==", + "node_modules/require-from-string": { + "version": "2.0.2", + "resolved": "https://registry.npmjs.org/require-from-string/-/require-from-string-2.0.2.tgz", + "integrity": "sha512-Xf0nWe6RseziFMu+Ap9biiUbmplq6S9/p+7w7YXP/JBHhrUDDUhwa+vANyubuqfZWTveU//DYVGsDG7RKL/vEw==", "dev": true, - "dependencies": { - "macos-release": "^2.2.0", - "windows-release": "^3.1.0" - }, + "license": "MIT", "engines": { - "node": ">=6" + "node": ">=0.10.0" } }, - "node_modules/override-require": { - "version": "1.1.1", - "resolved": "https://registry.npmjs.org/override-require/-/override-require-1.1.1.tgz", - "integrity": "sha1-auIvresfhQ/7DPTCD/e4fl62UN8=", - "dev": true - }, - "node_modules/p-finally": { + "node_modules/requires-port": { "version": "1.0.0", - "resolved": "https://registry.npmjs.org/p-finally/-/p-finally-1.0.0.tgz", - "integrity": "sha1-P7z7FbiZpEEjs0ttzBi3JDNqLK4=", + "resolved": "https://registry.npmjs.org/requires-port/-/requires-port-1.0.0.tgz", + "integrity": "sha512-KigOCHcocU3XODJxsu8i/j8T9tzT4adHiecwORRQ0ZZFcp7ahwXuRU1m+yuO90C5ZUyGeGfocHDI14M3L3yDAQ==", "dev": true, - "engines": { - "node": ">=4" - } + "license": "MIT" }, - "node_modules/p-limit": { - "version": "2.2.0", - "resolved": "https://registry.npmjs.org/p-limit/-/p-limit-2.2.0.tgz", - "integrity": "sha512-pZbTJpoUsCzV48Mc9Nh51VbwO0X9cuPFE8gYwx9BTCt9SF8/b7Zljd2fVgOxhIF/HDTKgpVzs+GPhyKfjLLFRQ==", + "node_modules/resolve": { + "version": "1.22.10", + "resolved": "https://registry.npmjs.org/resolve/-/resolve-1.22.10.tgz", + "integrity": "sha512-NPRy+/ncIMeDlTAsuqwKIiferiawhefFJtkNSW0qZJEqMEb+qBt/77B/jGeeek+F0uOeN05CDa6HXbbIgtVX4w==", "dev": true, + "license": "MIT", "dependencies": { - "p-try": "^2.0.0" + "is-core-module": "^2.16.0", + "path-parse": "^1.0.7", + "supports-preserve-symlinks-flag": "^1.0.0" + }, + "bin": { + "resolve": "bin/resolve" }, "engines": { - "node": ">=6" + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" } }, - "node_modules/p-locate": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/p-locate/-/p-locate-3.0.0.tgz", - "integrity": "sha512-x+12w/To+4GFfgJhBEpiDcLozRJGegY+Ei7/z0tSLkMmxGZNybVMSfWj9aJn8Z5Fc7dBUNJOOVgPv2H7IwulSQ==", + "node_modules/resolve-from": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/resolve-from/-/resolve-from-4.0.0.tgz", + "integrity": "sha512-pb/MYmXstAkysRFx8piNI1tGFNQIFA3vkE3Gq4EuA1dF6gHp/+vgZqsCGJapvy8N3Q+4o7FwvquPJcnZ7RYy4g==", "dev": true, - "dependencies": { - "p-limit": "^2.0.0" - }, + "license": "MIT", "engines": { - "node": ">=6" + "node": ">=4" } }, - "node_modules/p-map": { - "version": "2.1.0", - "resolved": "https://registry.npmjs.org/p-map/-/p-map-2.1.0.tgz", - "integrity": "sha512-y3b8Kpd8OAN444hxfBbFfj1FY/RjtTd8tzYwhUqNYXx0fXx2iX4maP4Qr6qhIKbQXI02wTLAda4fYUbDagTUFw==", + "node_modules/retry": { + "version": "0.12.0", + "resolved": "https://registry.npmjs.org/retry/-/retry-0.12.0.tgz", + "integrity": "sha512-9LkiTwjUh6rT555DtE9rTX+BKByPfrMzEAtnlEtdEwr3Nkffwiihqe2bWADg+OQRjt9gl6ICdmB/ZFDCGAtSow==", "dev": true, + "license": "MIT", "engines": { - "node": ">=6" + "node": ">= 4" } }, - "node_modules/p-try": { - "version": "2.1.0", - "resolved": "https://registry.npmjs.org/p-try/-/p-try-2.1.0.tgz", - "integrity": "sha512-H2RyIJ7+A3rjkwKC2l5GGtU4H1vkxKCAGsWasNVd0Set+6i4znxbWy6/j16YDPJDWxhsgZiKAstMEP8wCdSpjA==", + "node_modules/reusify": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/reusify/-/reusify-1.1.0.tgz", + "integrity": "sha512-g6QUff04oZpHs0eG5p83rFLhHeV00ug/Yf9nZM6fLeUrPguBTkTQOdpAWWspMh55TZfVQDPaN3NQJfbVRAxdIw==", "dev": true, + "license": "MIT", "engines": { - "node": ">=6" + "iojs": ">=1.0.0", + "node": ">=0.10.0" } }, - "node_modules/pako": { - "version": "1.0.11", - "resolved": "https://registry.npmjs.org/pako/-/pako-1.0.11.tgz", - "integrity": "sha512-4hLB8Py4zZce5s4yd9XzopqwVv/yGNhV1Bl8NTmCq1763HeK2+EwVTv+leGeL13Dnh2wfbqowVPXCIO0z4taYw==", - "dev": true - }, - "node_modules/parent-module": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/parent-module/-/parent-module-1.0.1.tgz", - "integrity": "sha512-GQ2EWRpQV8/o+Aw8YqtfZZPfNRWZYkbidE9k5rpl/hC3vtHHBfGm2Ifi6qWV+coDGkrUKZAxE3Lot5kcsRlh+g==", + "node_modules/rollup": { + "version": "4.40.0", + "resolved": "https://registry.npmjs.org/rollup/-/rollup-4.40.0.tgz", + "integrity": "sha512-Noe455xmA96nnqH5piFtLobsGbCij7Tu+tb3c1vYjNbTkfzGqXqQXG3wJaYXkRZuQ0vEYN4bhwg7QnIrqB5B+w==", "dev": true, + "license": "MIT", "dependencies": { - "callsites": "^3.0.0" + "@types/estree": "1.0.7" + }, + "bin": { + "rollup": "dist/bin/rollup" }, "engines": { - "node": ">=6" - } - }, - "node_modules/parent-module/node_modules/callsites": { - "version": "3.1.0", - "resolved": "https://registry.npmjs.org/callsites/-/callsites-3.1.0.tgz", - "integrity": "sha512-P8BjAsXvZS+VIDUI11hHCQEv74YT67YUi5JJFNWIqL235sBmjX4+qx9Muvls5ivyNENctx46xQLQ3aTuE7ssaQ==", - "dev": true, - "engines": { - "node": ">=6" + "node": ">=18.0.0", + "npm": ">=8.0.0" + }, + "optionalDependencies": { + "@rollup/rollup-android-arm-eabi": "4.40.0", + "@rollup/rollup-android-arm64": "4.40.0", + "@rollup/rollup-darwin-arm64": "4.40.0", + "@rollup/rollup-darwin-x64": "4.40.0", + "@rollup/rollup-freebsd-arm64": "4.40.0", + "@rollup/rollup-freebsd-x64": "4.40.0", + "@rollup/rollup-linux-arm-gnueabihf": "4.40.0", + "@rollup/rollup-linux-arm-musleabihf": "4.40.0", + "@rollup/rollup-linux-arm64-gnu": "4.40.0", + "@rollup/rollup-linux-arm64-musl": "4.40.0", + "@rollup/rollup-linux-loongarch64-gnu": "4.40.0", + "@rollup/rollup-linux-powerpc64le-gnu": "4.40.0", + "@rollup/rollup-linux-riscv64-gnu": "4.40.0", + "@rollup/rollup-linux-riscv64-musl": "4.40.0", + "@rollup/rollup-linux-s390x-gnu": "4.40.0", + "@rollup/rollup-linux-x64-gnu": "4.40.0", + "@rollup/rollup-linux-x64-musl": "4.40.0", + "@rollup/rollup-win32-arm64-msvc": "4.40.0", + "@rollup/rollup-win32-ia32-msvc": "4.40.0", + "@rollup/rollup-win32-x64-msvc": "4.40.0", + "fsevents": "~2.3.2" } }, - "node_modules/parse-diff": { + "node_modules/rrweb-cssom": { "version": "0.7.1", - "resolved": "https://registry.npmjs.org/parse-diff/-/parse-diff-0.7.1.tgz", - "integrity": "sha512-1j3l8IKcy4yRK2W4o9EYvJLSzpAVwz4DXqCewYyx2vEwk2gcf3DBPqc8Fj4XV3K33OYJ08A8fWwyu/ykD/HUSg==", - "dev": true + "resolved": "https://registry.npmjs.org/rrweb-cssom/-/rrweb-cssom-0.7.1.tgz", + "integrity": "sha512-TrEMa7JGdVm0UThDJSx7ddw5nVm3UJS9o9CCIZ72B1vSyEZoziDqBYP3XIoi/12lKrJR8rE3jeFHMok2F/Mnsg==", + "dev": true, + "license": "MIT" }, - "node_modules/parse-filepath": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/parse-filepath/-/parse-filepath-1.0.2.tgz", - "integrity": "sha1-pjISf1Oq89FYdvWHLz/6x2PWyJE=", + "node_modules/run-parallel": { + "version": "1.2.0", + "resolved": "https://registry.npmjs.org/run-parallel/-/run-parallel-1.2.0.tgz", + "integrity": "sha512-5l4VyZR86LZ/lDxZTR6jqL8AFE2S0IFLMP26AbjsLVADxHdhB/c0GUsH+y39UfCi3dzz8OlQuPmnaJOMoDHQBA==", "dev": true, + "funding": [ + { + "type": "github", + "url": "https://github.com/sponsors/feross" + }, + { + "type": "patreon", + "url": "https://www.patreon.com/feross" + }, + { + "type": "consulting", + "url": "https://feross.org/support" + } + ], + "license": "MIT", "dependencies": { - "is-absolute": "^1.0.0", - "map-cache": "^0.2.0", - "path-root": "^0.1.1" - }, - "engines": { - "node": ">=0.8" + "queue-microtask": "^1.2.2" } }, - "node_modules/parse-git-config": { - "version": "2.0.3", - "resolved": "https://registry.npmjs.org/parse-git-config/-/parse-git-config-2.0.3.tgz", - "integrity": "sha512-Js7ueMZOVSZ3tP8C7E3KZiHv6QQl7lnJ+OkbxoaFazzSa2KyEHqApfGbU3XboUgUnq4ZuUmskUpYKTNx01fm5A==", + "node_modules/safe-array-concat": { + "version": "1.1.3", + "resolved": "https://registry.npmjs.org/safe-array-concat/-/safe-array-concat-1.1.3.tgz", + "integrity": "sha512-AURm5f0jYEOydBj7VQlVvDrjeFgthDdEF5H1dP+6mNpoXOMo1quQqJ4wvJDyRZ9+pO3kGWoOdmV08cSv2aJV6Q==", "dev": true, + "license": "MIT", "dependencies": { - "expand-tilde": "^2.0.2", - "git-config-path": "^1.0.1", - "ini": "^1.3.5" + "call-bind": "^1.0.8", + "call-bound": "^1.0.2", + "get-intrinsic": "^1.2.6", + "has-symbols": "^1.1.0", + "isarray": "^2.0.5" }, "engines": { - "node": ">=6" + "node": ">=0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" } }, - "node_modules/parse-github-url": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/parse-github-url/-/parse-github-url-1.0.2.tgz", - "integrity": "sha512-kgBf6avCbO3Cn6+RnzRGLkUsv4ZVqv/VfAYkRsyBcgkshNvVBkRn1FEZcW0Jb+npXQWm2vHPnnOqFteZxRRGNw==", + "node_modules/safe-buffer": { + "version": "5.2.1", + "resolved": "https://registry.npmjs.org/safe-buffer/-/safe-buffer-5.2.1.tgz", + "integrity": "sha512-rp3So07KcdmmKbGvgaNxQSJr7bGVSVk5S9Eq1F+ppbRo70+YeaDxkw5Dd8NPN+GD6bjnYm2VuPuCXmpuYvmCXQ==", "dev": true, - "bin": { - "parse-github-url": "cli.js" + "funding": [ + { + "type": "github", + "url": "https://github.com/sponsors/feross" + }, + { + "type": "patreon", + "url": "https://www.patreon.com/feross" + }, + { + "type": "consulting", + "url": "https://feross.org/support" + } + ], + "license": "MIT" + }, + "node_modules/safe-push-apply": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/safe-push-apply/-/safe-push-apply-1.0.0.tgz", + "integrity": "sha512-iKE9w/Z7xCzUMIZqdBsp6pEQvwuEebH4vdpjcDWnyzaI6yl6O9FHvVpmGelvEHNsoY6wGblkxR6Zty/h00WiSA==", + "dev": true, + "license": "MIT", + "dependencies": { + "es-errors": "^1.3.0", + "isarray": "^2.0.5" }, "engines": { - "node": ">=0.10.0" + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" } }, - "node_modules/parse-json": { - "version": "2.2.0", - "resolved": "https://registry.npmjs.org/parse-json/-/parse-json-2.2.0.tgz", - "integrity": "sha1-9ID0BDTvgHQfhGkJn43qGPVaTck=", + "node_modules/safe-regex-test": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/safe-regex-test/-/safe-regex-test-1.1.0.tgz", + "integrity": "sha512-x/+Cz4YrimQxQccJf5mKEbIa1NzeCRNI5Ecl/ekmlYaampdNLPalVyIcCZNNH3MvmqBugV5TMYZXv0ljslUlaw==", "dev": true, + "license": "MIT", "dependencies": { - "error-ex": "^1.2.0" + "call-bound": "^1.0.2", + "es-errors": "^1.3.0", + "is-regex": "^1.2.1" }, "engines": { - "node": ">=0.10.0" + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" } }, - "node_modules/parse-link-header": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/parse-link-header/-/parse-link-header-2.0.0.tgz", - "integrity": "sha512-xjU87V0VyHZybn2RrCX5TIFGxTVZE6zqqZWMPlIKiSKuWh/X5WZdt+w1Ki1nXB+8L/KtL+nZ4iq+sfI6MrhhMw==", + "node_modules/safer-buffer": { + "version": "2.1.2", + "resolved": "https://registry.npmjs.org/safer-buffer/-/safer-buffer-2.1.2.tgz", + "integrity": "sha512-YZo3K82SD7Riyi0E1EQPojLz7kpepnSQI9IyPbHHg1XXXevb5dJI7tpyN2ADxGcQbHG7vcyRHk0cbwqcQriUtg==", "dev": true, - "dependencies": { - "xtend": "~4.0.1" - } + "license": "MIT" }, - "node_modules/parse-node-version": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/parse-node-version/-/parse-node-version-1.0.1.tgz", - "integrity": "sha512-3YHlOa/JgH6Mnpr05jP9eDG254US9ek25LyIxZlDItp2iJtwyaXQb57lBYLdT3MowkUFYEV2XXNAYIPlESvJlA==", + "node_modules/sax": { + "version": "1.4.1", + "resolved": "https://registry.npmjs.org/sax/-/sax-1.4.1.tgz", + "integrity": "sha512-+aWOz7yVScEGoKNd4PA10LZ8sk0A/z5+nXQG5giUO5rprX9jgYsTdov9qCchZiPIZezbZH+jRut8nPodFAX4Jg==", + "dev": true, + "license": "ISC" + }, + "node_modules/saxes": { + "version": "6.0.0", + "resolved": "https://registry.npmjs.org/saxes/-/saxes-6.0.0.tgz", + "integrity": "sha512-xAg7SOnEhrm5zI3puOOKyy1OMcMlIJZYNJY7xLBwSze0UjhPLnWfj2GF2EpT0jmzaJKIWKHLsaSSajf35bcYnA==", "dev": true, + "license": "ISC", + "dependencies": { + "xmlchars": "^2.2.0" + }, "engines": { - "node": ">= 0.10" + "node": ">=v12.22.7" } }, - "node_modules/parse-passwd": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/parse-passwd/-/parse-passwd-1.0.0.tgz", - "integrity": "sha1-bVuTSkVpk7I9N/QKOC1vFmao5cY=", + "node_modules/scslre": { + "version": "0.3.0", + "resolved": "https://registry.npmjs.org/scslre/-/scslre-0.3.0.tgz", + "integrity": "sha512-3A6sD0WYP7+QrjbfNA2FN3FsOaGGFoekCVgTyypy53gPxhbkCIjtO6YWgdrfM+n/8sI8JeXZOIxsHjMTNxQ4nQ==", "dev": true, + "license": "MIT", + "dependencies": { + "@eslint-community/regexpp": "^4.8.0", + "refa": "^0.12.0", + "regexp-ast-analysis": "^0.7.0" + }, "engines": { - "node": ">=0.10.0" + "node": "^14.0.0 || >=16.0.0" } }, - "node_modules/parse-srcset": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/parse-srcset/-/parse-srcset-1.0.2.tgz", - "integrity": "sha1-8r0iH2zJcKk42IVWq8WJyqqiveE=", - "dev": true - }, - "node_modules/parse5": { - "version": "6.0.1", - "resolved": "https://registry.npmjs.org/parse5/-/parse5-6.0.1.tgz", - "integrity": "sha512-Ofn/CTFzRGTTxwpNEs9PP93gXShHcTq255nzRYSKe8AkVpZY7e1fpmTfOyoIvjP5HG7Z2ZM7VS9PPhQGW2pOpw==", - "dev": true - }, - "node_modules/pascalcase": { - "version": "0.1.1", - "resolved": "https://registry.npmjs.org/pascalcase/-/pascalcase-0.1.1.tgz", - "integrity": "sha1-s2PlXoAGym/iF4TS2yK9FdeRfxQ=", + "node_modules/scslre/node_modules/refa": { + "version": "0.12.1", + "resolved": "https://registry.npmjs.org/refa/-/refa-0.12.1.tgz", + "integrity": "sha512-J8rn6v4DBb2nnFqkqwy6/NnTYMcgLA+sLr0iIO41qpv0n+ngb7ksag2tMRl0inb1bbO/esUwzW1vbJi7K0sI0g==", "dev": true, + "license": "MIT", + "dependencies": { + "@eslint-community/regexpp": "^4.8.0" + }, "engines": { - "node": ">=0.10.0" + "node": "^12.0.0 || ^14.0.0 || >=16.0.0" } }, - "node_modules/path-dirname": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/path-dirname/-/path-dirname-1.0.2.tgz", - "integrity": "sha1-zDPSTVJeCZpTiMAzbG4yuRYGCeA=", - "dev": true - }, - "node_modules/path-exists": { - "version": "2.1.0", - "resolved": "https://registry.npmjs.org/path-exists/-/path-exists-2.1.0.tgz", - "integrity": "sha1-D+tsZPD8UY2adU3V77YscCJ2H0s=", + "node_modules/scslre/node_modules/regexp-ast-analysis": { + "version": "0.7.1", + "resolved": "https://registry.npmjs.org/regexp-ast-analysis/-/regexp-ast-analysis-0.7.1.tgz", + "integrity": "sha512-sZuz1dYW/ZsfG17WSAG7eS85r5a0dDsvg+7BiiYR5o6lKCAtUrEwdmRmaGF6rwVj3LcmAeYkOWKEPlbPzN3Y3A==", "dev": true, + "license": "MIT", "dependencies": { - "pinkie-promise": "^2.0.0" + "@eslint-community/regexpp": "^4.8.0", + "refa": "^0.12.1" }, "engines": { - "node": ">=0.10.0" + "node": "^12.0.0 || ^14.0.0 || >=16.0.0" } }, - "node_modules/path-is-absolute": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/path-is-absolute/-/path-is-absolute-1.0.1.tgz", - "integrity": "sha1-F0uSaHNVNP+8es5r9TpanhtcX18=", + "node_modules/semver": { + "version": "7.7.1", + "resolved": "https://registry.npmjs.org/semver/-/semver-7.7.1.tgz", + "integrity": "sha512-hlq8tAfn0m/61p4BVRcPzIGr6LKiMwo4VM6dGi6pt4qcRkmNzTcWq6eCEjEh+qXjkMDvPlOFFSGwQjoEa6gyMA==", "dev": true, + "license": "ISC", + "bin": { + "semver": "bin/semver.js" + }, "engines": { - "node": ">=0.10.0" + "node": ">=10" } }, - "node_modules/path-is-inside": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/path-is-inside/-/path-is-inside-1.0.2.tgz", - "integrity": "sha1-NlQX3t5EQw0cEa9hAn+s8HS9/FM=", - "dev": true + "node_modules/serialize-javascript": { + "version": "6.0.2", + "resolved": "https://registry.npmjs.org/serialize-javascript/-/serialize-javascript-6.0.2.tgz", + "integrity": "sha512-Saa1xPByTTq2gdeFZYLLo+RFE35NHZkAbqZeWNd3BpzppeVisAqpDjcp8dyf6uIvEqJRd46jemmyA4iFIeVk8g==", + "dev": true, + "license": "BSD-3-Clause", + "dependencies": { + "randombytes": "^2.1.0" + } }, - "node_modules/path-key": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/path-key/-/path-key-2.0.1.tgz", - "integrity": "sha1-QRyttXTFoUDTpLGRDUDYDMn0C0A=", + "node_modules/set-function-length": { + "version": "1.2.2", + "resolved": "https://registry.npmjs.org/set-function-length/-/set-function-length-1.2.2.tgz", + "integrity": "sha512-pgRc4hJ4/sNjWCSS9AmnS40x3bNMDTknHgL5UaMBTMyJnU90EgWh1Rz+MC9eFu4BuN/UwZjKQuY/1v3rM7HMfg==", "dev": true, + "license": "MIT", + "dependencies": { + "define-data-property": "^1.1.4", + "es-errors": "^1.3.0", + "function-bind": "^1.1.2", + "get-intrinsic": "^1.2.4", + "gopd": "^1.0.1", + "has-property-descriptors": "^1.0.2" + }, "engines": { - "node": ">=4" + "node": ">= 0.4" } }, - "node_modules/path-parse": { - "version": "1.0.7", - "resolved": "https://registry.npmjs.org/path-parse/-/path-parse-1.0.7.tgz", - "integrity": "sha512-LDJzPVEEEPR+y48z93A0Ed0yXb8pAByGWo/k5YYdYgpY2/2EsOsksJrq7lOHxryrVOn1ejG6oAp8ahvOIQD8sw==", - "dev": true - }, - "node_modules/path-root": { - "version": "0.1.1", - "resolved": "https://registry.npmjs.org/path-root/-/path-root-0.1.1.tgz", - "integrity": "sha1-mkpoFMrBwM1zNgqV8yCDyOpHRbc=", + "node_modules/set-function-name": { + "version": "2.0.2", + "resolved": "https://registry.npmjs.org/set-function-name/-/set-function-name-2.0.2.tgz", + "integrity": "sha512-7PGFlmtwsEADb0WYyvCMa1t+yke6daIG4Wirafur5kcf+MhUnPms1UeR0CKQdTZD81yESwMHbtn+TR+dMviakQ==", "dev": true, + "license": "MIT", "dependencies": { - "path-root-regex": "^0.1.0" + "define-data-property": "^1.1.4", + "es-errors": "^1.3.0", + "functions-have-names": "^1.2.3", + "has-property-descriptors": "^1.0.2" }, "engines": { - "node": ">=0.10.0" + "node": ">= 0.4" } }, - "node_modules/path-root-regex": { - "version": "0.1.2", - "resolved": "https://registry.npmjs.org/path-root-regex/-/path-root-regex-0.1.2.tgz", - "integrity": "sha1-v8zcjfWxLcUsi0PsONGNcsBLqW0=", + "node_modules/set-proto": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/set-proto/-/set-proto-1.0.0.tgz", + "integrity": "sha512-RJRdvCo6IAnPdsvP/7m6bsQqNnn1FCBX5ZNtFL98MmFF/4xAIJTIg1YbHW5DC2W5SKZanrC6i4HsJqlajw/dZw==", "dev": true, + "license": "MIT", + "dependencies": { + "dunder-proto": "^1.0.1", + "es-errors": "^1.3.0", + "es-object-atoms": "^1.0.0" + }, "engines": { - "node": ">=0.10.0" + "node": ">= 0.4" } }, - "node_modules/path-type": { - "version": "1.1.0", - "resolved": "https://registry.npmjs.org/path-type/-/path-type-1.1.0.tgz", - "integrity": "sha1-WcRPfuSR2nBNpBXaWkBwuk+P5EE=", + "node_modules/shebang-command": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/shebang-command/-/shebang-command-2.0.0.tgz", + "integrity": "sha512-kHxr2zZpYtdmrN1qDjrrX/Z1rR1kG8Dx+gkpK1G4eXmvXswmcE1hTWBWYUzlraYw1/yZp6YuDY77YtvbN0dmDA==", "dev": true, + "license": "MIT", "dependencies": { - "graceful-fs": "^4.1.2", - "pify": "^2.0.0", - "pinkie-promise": "^2.0.0" + "shebang-regex": "^3.0.0" }, "engines": { - "node": ">=0.10.0" + "node": ">=8" } }, - "node_modules/pathval": { - "version": "1.1.1", - "resolved": "https://registry.npmjs.org/pathval/-/pathval-1.1.1.tgz", - "integrity": "sha512-Dp6zGqpTdETdR63lehJYPeIOqpiNBNtc7BpWSLrOje7UaIsE5aY92r/AunQA7rsXvet3lrJ3JnZX29UPTKXyKQ==", + "node_modules/shebang-regex": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/shebang-regex/-/shebang-regex-3.0.0.tgz", + "integrity": "sha512-7++dFhtcx3353uBaq8DDR4NuxBetBzC7ZQOhmTQInHEd6bSrXdiEyzCvG07Z44UYdLShWUyXt5M/yhz8ekcb1A==", "dev": true, + "license": "MIT", "engines": { - "node": "*" + "node": ">=8" } }, - "node_modules/picomatch": { - "version": "2.3.1", - "resolved": "https://registry.npmjs.org/picomatch/-/picomatch-2.3.1.tgz", - "integrity": "sha512-JU3teHTNjmE2VCGFzuY8EXzCDVwEqB2a8fsIvwaStHhAWJEeVd1o1QD80CU6+ZdEXXSLbSsuLwJjkCBWqRQUVA==", + "node_modules/shell-quote": { + "version": "1.8.2", + "resolved": "https://registry.npmjs.org/shell-quote/-/shell-quote-1.8.2.tgz", + "integrity": "sha512-AzqKpGKjrj7EM6rKVQEPpB288oCfnrEIuyoT9cyF4nmGa7V8Zk6f7RRqYisX8X9m+Q7bd632aZW4ky7EhbQztA==", "dev": true, + "license": "MIT", "engines": { - "node": ">=8.6" + "node": ">= 0.4" }, "funding": { - "url": "https://github.com/sponsors/jonschlinkert" + "url": "https://github.com/sponsors/ljharb" } }, - "node_modules/pidtree": { - "version": "0.3.1", - "resolved": "https://registry.npmjs.org/pidtree/-/pidtree-0.3.1.tgz", - "integrity": "sha512-qQbW94hLHEqCg7nhby4yRC7G2+jYHY4Rguc2bjw7Uug4GIJuu1tvf2uHaZv5Q8zdt+WKJ6qK1FOI6amaWUo5FA==", + "node_modules/side-channel": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/side-channel/-/side-channel-1.1.0.tgz", + "integrity": "sha512-ZX99e6tRweoUXqR+VBrslhda51Nh5MTQwou5tnUDgbtyM0dBgmhEDtWGP/xbKn6hqfPRHujUNwz5fy/wbbhnpw==", "dev": true, - "bin": { - "pidtree": "bin/pidtree.js" + "license": "MIT", + "dependencies": { + "es-errors": "^1.3.0", + "object-inspect": "^1.13.3", + "side-channel-list": "^1.0.0", + "side-channel-map": "^1.0.1", + "side-channel-weakmap": "^1.0.2" }, "engines": { - "node": ">=0.10" + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" } }, - "node_modules/pify": { - "version": "2.3.0", - "resolved": "https://registry.npmjs.org/pify/-/pify-2.3.0.tgz", - "integrity": "sha1-7RQaasBDqEnqWISY59yosVMw6Qw=", + "node_modules/side-channel-list": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/side-channel-list/-/side-channel-list-1.0.0.tgz", + "integrity": "sha512-FCLHtRD/gnpCiCHEiJLOwdmFP+wzCmDEkc9y7NsYxeF4u7Btsn1ZuwgwJGxImImHicJArLP4R0yX4c2KCrMrTA==", "dev": true, + "license": "MIT", + "dependencies": { + "es-errors": "^1.3.0", + "object-inspect": "^1.13.3" + }, "engines": { - "node": ">=0.10.0" + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" } }, - "node_modules/pinkie": { - "version": "2.0.4", - "resolved": "https://registry.npmjs.org/pinkie/-/pinkie-2.0.4.tgz", - "integrity": "sha1-clVrgM+g1IqXToDnckjoDtT3+HA=", + "node_modules/side-channel-map": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/side-channel-map/-/side-channel-map-1.0.1.tgz", + "integrity": "sha512-VCjCNfgMsby3tTdo02nbjtM/ewra6jPHmpThenkTYh8pG9ucZ/1P8So4u4FGBek/BjpOVsDCMoLA/iuBKIFXRA==", "dev": true, + "license": "MIT", + "dependencies": { + "call-bound": "^1.0.2", + "es-errors": "^1.3.0", + "get-intrinsic": "^1.2.5", + "object-inspect": "^1.13.3" + }, "engines": { - "node": ">=0.10.0" + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" } }, - "node_modules/pinkie-promise": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/pinkie-promise/-/pinkie-promise-2.0.1.tgz", - "integrity": "sha1-ITXW36ejWMBprJsXh3YogihFD/o=", + "node_modules/side-channel-weakmap": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/side-channel-weakmap/-/side-channel-weakmap-1.0.2.tgz", + "integrity": "sha512-WPS/HvHQTYnHisLo9McqBHOJk2FkHO/tlpvldyrnem4aeQp4hai3gythswg6p01oSoTl58rcpiFAjF2br2Ak2A==", "dev": true, + "license": "MIT", "dependencies": { - "pinkie": "^2.0.0" + "call-bound": "^1.0.2", + "es-errors": "^1.3.0", + "get-intrinsic": "^1.2.5", + "object-inspect": "^1.13.3", + "side-channel-map": "^1.0.1" }, "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/pinpoint": { - "version": "1.1.0", - "resolved": "https://registry.npmjs.org/pinpoint/-/pinpoint-1.1.0.tgz", - "integrity": "sha1-DPd1eml38b9/ajIge3CeN3OI6HQ=", - "dev": true - }, - "node_modules/platform": { - "version": "1.3.6", - "resolved": "https://registry.npmjs.org/platform/-/platform-1.3.6.tgz", - "integrity": "sha512-fnWVljUchTro6RiCFvCXBbNhJc2NijN7oIQxbwsyL0buWJPG85v81ehlHI9fXrJsMNgTofEoWIQeClKpgxFLrg==", - "dev": true - }, - "node_modules/plugin-error": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/plugin-error/-/plugin-error-1.0.1.tgz", - "integrity": "sha512-L1zP0dk7vGweZME2i+EeakvUNqSrdiI3F91TwEoYiGrAfUXmVv6fJIq4g82PAXxNsWOp0J7ZqQy/3Szz0ajTxA==", - "dev": true, - "dependencies": { - "ansi-colors": "^1.0.1", - "arr-diff": "^4.0.0", - "arr-union": "^3.1.0", - "extend-shallow": "^3.0.2" - }, - "engines": { - "node": ">= 0.10" - } - }, - "node_modules/portfinder": { - "version": "1.0.28", - "resolved": "https://registry.npmjs.org/portfinder/-/portfinder-1.0.28.tgz", - "integrity": "sha512-Se+2isanIcEqf2XMHjyUKskczxbPH7dQnlMjXX6+dybayyHvAf/TCgyMRlzf/B6QDhAEFOGes0pzRo3by4AbMA==", - "dev": true, - "dependencies": { - "async": "^2.6.2", - "debug": "^3.1.1", - "mkdirp": "^0.5.5" + "node": ">= 0.4" }, - "engines": { - "node": ">= 0.12.0" + "funding": { + "url": "https://github.com/sponsors/ljharb" } }, - "node_modules/portfinder/node_modules/debug": { - "version": "3.2.7", - "resolved": "https://registry.npmjs.org/debug/-/debug-3.2.7.tgz", - "integrity": "sha512-CFjzYYAi4ThfiQvizrFQevTTXHtnCqWfe7x1AhgEscTz6ZbLbfoLRLPugTQyBth6f8ZERVUSyWHFD/7Wu4t1XQ==", + "node_modules/signal-exit": { + "version": "3.0.7", + "resolved": "https://registry.npmjs.org/signal-exit/-/signal-exit-3.0.7.tgz", + "integrity": "sha512-wnD2ZE+l+SPC/uoS0vXeE9L1+0wuaMqKlfz9AMUo38JsyLSBWSFcHR1Rri62LZc12vLr1gb3jl7iwQhgwpAbGQ==", "dev": true, - "dependencies": { - "ms": "^2.1.1" - } + "license": "ISC" }, - "node_modules/portfinder/node_modules/mkdirp": { - "version": "0.5.5", - "resolved": "https://registry.npmjs.org/mkdirp/-/mkdirp-0.5.5.tgz", - "integrity": "sha512-NKmAlESf6jMGym1++R0Ra7wvhV+wFW63FaSOFPwRahvea0gMUcGUhVeAg/0BC0wiv9ih5NYPB1Wn1UEI1/L+xQ==", + "node_modules/simple-git": { + "version": "3.27.0", + "resolved": "https://registry.npmjs.org/simple-git/-/simple-git-3.27.0.tgz", + "integrity": "sha512-ivHoFS9Yi9GY49ogc6/YAi3Fl9ROnF4VyubNylgCkA+RVqLaKWnDSzXOVzya8csELIaWaYNutsEuAhZrtOjozA==", "dev": true, + "license": "MIT", "dependencies": { - "minimist": "^1.2.5" + "@kwsites/file-exists": "^1.1.1", + "@kwsites/promise-deferred": "^1.1.1", + "debug": "^4.3.5" }, - "bin": { - "mkdirp": "bin/cmd.js" + "funding": { + "type": "github", + "url": "https://github.com/steveukx/git-js?sponsor=1" } }, - "node_modules/portfinder/node_modules/ms": { - "version": "2.1.3", - "resolved": "https://registry.npmjs.org/ms/-/ms-2.1.3.tgz", - "integrity": "sha512-6FlzubTLZG3J2a/NVCAleEhjzq5oxgHyaCU9yYXvcLsvoVaHJq/s5xXI6/XXP6tz7R9xAOtHnSO/tXtF3WRTlA==", - "dev": true - }, - "node_modules/posix-character-classes": { - "version": "0.1.1", - "resolved": "https://registry.npmjs.org/posix-character-classes/-/posix-character-classes-0.1.1.tgz", - "integrity": "sha1-AerA/jta9xoqbAL+q7jB/vfgDqs=", + "node_modules/slash": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/slash/-/slash-3.0.0.tgz", + "integrity": "sha512-g9Q1haeby36OSStwb4ntCGGGaKsaVSjQ68fBxoQcutl5fS1vuY18H3wSt3jFyFtrkx+Kz0V1G85A4MyAdDMi2Q==", "dev": true, + "license": "MIT", "engines": { - "node": ">=0.10.0" + "node": ">=8" } }, - "node_modules/postcss": { - "version": "7.0.36", - "resolved": "https://registry.npmjs.org/postcss/-/postcss-7.0.36.tgz", - "integrity": "sha512-BebJSIUMwJHRH0HAQoxN4u1CN86glsrwsW0q7T+/m44eXOUAxSNdHRkNZPYz5vVUbg17hFgOQDE7fZk7li3pZw==", + "node_modules/smob": { + "version": "1.5.0", + "resolved": "https://registry.npmjs.org/smob/-/smob-1.5.0.tgz", + "integrity": "sha512-g6T+p7QO8npa+/hNx9ohv1E5pVCmWrVCUzUXJyLdMmftX6ER0oiWY/w9knEonLpnOp6b6FenKnMfR8gqwWdwig==", "dev": true, - "dependencies": { - "chalk": "^2.4.2", - "source-map": "^0.6.1", - "supports-color": "^6.1.0" - }, - "engines": { - "node": ">=6.0.0" - }, - "funding": { - "type": "opencollective", - "url": "https://opencollective.com/postcss/" - } + "license": "MIT" }, - "node_modules/postcss/node_modules/source-map": { + "node_modules/source-map": { "version": "0.6.1", "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.6.1.tgz", "integrity": "sha512-UjgapumWlbMhkBgzT7Ykc5YXUT46F0iKu8SGXq0bcwP5dz/h0Plj6enJqjz1Zbq2l5WaqYnrVbwWOWMyF3F47g==", "dev": true, + "license": "BSD-3-Clause", "engines": { "node": ">=0.10.0" } }, - "node_modules/postcss/node_modules/supports-color": { - "version": "6.1.0", - "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-6.1.0.tgz", - "integrity": "sha512-qe1jfm1Mg7Nq/NSh6XE24gPXROEVsWHxC1LIx//XNlD9iw7YZQGjZNjYN7xGaEG6iKdA8EtNFW6R0gjnVXp+wQ==", + "node_modules/source-map-support": { + "version": "0.5.21", + "resolved": "https://registry.npmjs.org/source-map-support/-/source-map-support-0.5.21.tgz", + "integrity": "sha512-uBHU3L3czsIyYXKX88fdrGovxdSCoTGDRZ6SYXtSRxLZUzHg5P/66Ht6uoUlHu9EZod+inXhKo3qQgwXUT/y1w==", "dev": true, + "license": "MIT", "dependencies": { - "has-flag": "^3.0.0" - }, - "engines": { - "node": ">=6" + "buffer-from": "^1.0.0", + "source-map": "^0.6.0" } }, - "node_modules/prelude-ls": { - "version": "1.1.2", - "resolved": "https://registry.npmjs.org/prelude-ls/-/prelude-ls-1.1.2.tgz", - "integrity": "sha1-IZMqVJ9eUv/ZqCf1cOBL5iqX2lQ=", + "node_modules/spdx-correct": { + "version": "3.2.0", + "resolved": "https://registry.npmjs.org/spdx-correct/-/spdx-correct-3.2.0.tgz", + "integrity": "sha512-kN9dJbvnySHULIluDHy32WHRUu3Og7B9sbY7tsFLctQkIqnMh3hErYgdMjTYuqmcXX+lK5T1lnUt3G7zNswmZA==", "dev": true, - "engines": { - "node": ">= 0.8.0" + "license": "Apache-2.0", + "dependencies": { + "spdx-expression-parse": "^3.0.0", + "spdx-license-ids": "^3.0.0" } }, - "node_modules/prettier": { - "version": "2.4.1", - "resolved": "https://registry.npmjs.org/prettier/-/prettier-2.4.1.tgz", - "integrity": "sha512-9fbDAXSBcc6Bs1mZrDYb3XKzDLm4EXXL9sC1LqKP5rZkT6KRr/rf9amVUcODVXgguK/isJz0d0hP72WeaKWsvA==", + "node_modules/spdx-correct/node_modules/spdx-expression-parse": { + "version": "3.0.1", + "resolved": "https://registry.npmjs.org/spdx-expression-parse/-/spdx-expression-parse-3.0.1.tgz", + "integrity": "sha512-cbqHunsQWnJNE6KhVSMsMeH5H/L9EpymbzqTQ3uLwNCLZ1Q481oWaofqH7nO6V07xlXwY6PhQdQ2IedWx/ZK4Q==", "dev": true, - "bin": { - "prettier": "bin-prettier.js" - }, - "engines": { - "node": ">=10.13.0" + "license": "MIT", + "dependencies": { + "spdx-exceptions": "^2.1.0", + "spdx-license-ids": "^3.0.0" } }, - "node_modules/pretty-hrtime": { - "version": "1.0.3", - "resolved": "https://registry.npmjs.org/pretty-hrtime/-/pretty-hrtime-1.0.3.tgz", - "integrity": "sha1-t+PqQkNaTJsnWdmeDyAesZWALuE=", + "node_modules/spdx-exceptions": { + "version": "2.5.0", + "resolved": "https://registry.npmjs.org/spdx-exceptions/-/spdx-exceptions-2.5.0.tgz", + "integrity": "sha512-PiU42r+xO4UbUS1buo3LPJkjlO7430Xn5SVAhdpzzsPHsjbYVflnnFdATgabnLude+Cqu25p6N+g2lw/PFsa4w==", "dev": true, - "engines": { - "node": ">= 0.8" - } + "license": "CC-BY-3.0" }, - "node_modules/prettyjson": { - "version": "1.2.1", - "resolved": "https://registry.npmjs.org/prettyjson/-/prettyjson-1.2.1.tgz", - "integrity": "sha1-/P+rQdGcq0365eV15kJGYZsS0ok=", + "node_modules/spdx-expression-parse": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/spdx-expression-parse/-/spdx-expression-parse-4.0.0.tgz", + "integrity": "sha512-Clya5JIij/7C6bRR22+tnGXbc4VKlibKSVj2iHvVeX5iMW7s1SIQlqu699JkODJJIhh/pUu8L0/VLh8xflD+LQ==", "dev": true, + "license": "MIT", "dependencies": { - "colors": "^1.1.2", - "minimist": "^1.2.0" - }, - "bin": { - "prettyjson": "bin/prettyjson" + "spdx-exceptions": "^2.1.0", + "spdx-license-ids": "^3.0.0" } }, - "node_modules/process-nextick-args": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/process-nextick-args/-/process-nextick-args-2.0.1.tgz", - "integrity": "sha512-3ouUOpQhtgrbOa17J7+uxOTpITYWaGP7/AhoR3+A+/1e9skrzelGi/dXzEYyvbxubEF6Wn2ypscTKiKJFFn1ag==", - "dev": true - }, - "node_modules/progress": { - "version": "2.0.3", - "resolved": "https://registry.npmjs.org/progress/-/progress-2.0.3.tgz", - "integrity": "sha512-7PiHtLll5LdnKIMw100I+8xJXR5gW2QwWYkT6iJva0bXitZKa/XMrSbdmg3r2Xnaidz9Qumd0VPaMrZlF9V9sA==", + "node_modules/spdx-license-ids": { + "version": "3.0.21", + "resolved": "https://registry.npmjs.org/spdx-license-ids/-/spdx-license-ids-3.0.21.tgz", + "integrity": "sha512-Bvg/8F5XephndSK3JffaRqdT+gyhfqIPwDHpX80tJrF8QQRYMo8sNMeaZ2Dp5+jhwKnUmIOyFFQfHRkjJm5nXg==", "dev": true, - "engines": { - "node": ">=0.4.0" - } - }, - "node_modules/psl": { - "version": "1.8.0", - "resolved": "https://registry.npmjs.org/psl/-/psl-1.8.0.tgz", - "integrity": "sha512-RIdOzyoavK+hA18OGGWDqUTsCLhtA7IcZ/6NCs4fFJaHBDab+pDDmDIByWFRQJq2Cd7r1OoQxBGKOaztq+hjIQ==", - "dev": true + "license": "CC0-1.0" }, - "node_modules/pump": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/pump/-/pump-3.0.0.tgz", - "integrity": "sha512-LwZy+p3SFs1Pytd/jYct4wpv49HiYCqd9Rlc5ZVdk0V+8Yzv6jR5Blk3TRmPL1ft69TxP0IMZGJ+WPFU2BFhww==", + "node_modules/sprintf-js": { + "version": "1.0.3", + "resolved": "https://registry.npmjs.org/sprintf-js/-/sprintf-js-1.0.3.tgz", + "integrity": "sha512-D9cPgkvLlV3t3IzL0D0YLvGA9Ahk4PcvVwUbN0dSGr1aP0Nrt4AEnTUbuGvquEC0mA64Gqt1fzirlRs5ibXx8g==", "dev": true, - "dependencies": { - "end-of-stream": "^1.1.0", - "once": "^1.3.1" - } + "license": "BSD-3-Clause" }, - "node_modules/pumpify": { - "version": "1.5.1", - "resolved": "https://registry.npmjs.org/pumpify/-/pumpify-1.5.1.tgz", - "integrity": "sha512-oClZI37HvuUJJxSKKrC17bZ9Cu0ZYhEAGPsPUy9KlMUmv9dKX2o77RUmq7f3XjIxbwyGwYzbzQ1L2Ks8sIradQ==", + "node_modules/stack-utils": { + "version": "2.0.6", + "resolved": "https://registry.npmjs.org/stack-utils/-/stack-utils-2.0.6.tgz", + "integrity": "sha512-XlkWvfIm6RmsWtNJx+uqtKLS8eqFbxUg0ZzLXqY0caEy9l7hruX8IpiDnjsLavoBgqCCR71TqWO8MaXYheJ3RQ==", "dev": true, + "license": "MIT", "dependencies": { - "duplexify": "^3.6.0", - "inherits": "^2.0.3", - "pump": "^2.0.0" + "escape-string-regexp": "^2.0.0" + }, + "engines": { + "node": ">=10" } }, - "node_modules/pumpify/node_modules/pump": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/pump/-/pump-2.0.1.tgz", - "integrity": "sha512-ruPMNRkN3MHP1cWJc9OWr+T/xDP0jhXYCLfJcBuX54hhfIBnaQmAUMfDcG4DM5UMWByBbJY69QSphm3jtDKIkA==", + "node_modules/stack-utils/node_modules/escape-string-regexp": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/escape-string-regexp/-/escape-string-regexp-2.0.0.tgz", + "integrity": "sha512-UpzcLCXolUWcNu5HtVMHYdXJjArjsF9C0aNnquZYY4uW/Vu0miy5YoWvbV345HauVvcAUnpRuhMMcqTcGOY2+w==", "dev": true, - "dependencies": { - "end-of-stream": "^1.1.0", - "once": "^1.3.1" + "license": "MIT", + "engines": { + "node": ">=8" } }, - "node_modules/punycode": { - "version": "2.1.1", - "resolved": "https://registry.npmjs.org/punycode/-/punycode-2.1.1.tgz", - "integrity": "sha512-XRsRjdf+j5ml+y/6GKHPZbrF/8p2Yga0JPtdqTIY2Xe5ohJPD9saDJJLPvp9+NSBprVvevdXZybnj2cv8OEd0A==", + "node_modules/string_decoder": { + "version": "1.3.0", + "resolved": "https://registry.npmjs.org/string_decoder/-/string_decoder-1.3.0.tgz", + "integrity": "sha512-hkRX8U1WjJFd8LsDJ2yQ/wWWxaopEsABU1XfkM8A+j0+85JAGppt16cr1Whg6KIbb4okU6Mql6BOj+uup/wKeA==", "dev": true, - "engines": { - "node": ">=6" + "license": "MIT", + "dependencies": { + "safe-buffer": "~5.2.0" } }, - "node_modules/qs": { - "version": "6.5.2", - "resolved": "https://registry.npmjs.org/qs/-/qs-6.5.2.tgz", - "integrity": "sha512-N5ZAX4/LxJmF+7wN74pUD6qAh9/wnvdQcjq9TZjevvXzSUo7bfmw91saqMjzGS2xq91/odN2dW/WOl7qQHNDGA==", + "node_modules/string-width": { + "version": "4.2.3", + "resolved": "https://registry.npmjs.org/string-width/-/string-width-4.2.3.tgz", + "integrity": "sha512-wKyQRQpjJ0sIp62ErSZdGsjMJWsap5oRNihHhu6G7JVO/9jIB6UyevL+tXuOqrng8j/cxKTWyWUwvSTriiZz/g==", "dev": true, + "license": "MIT", + "dependencies": { + "emoji-regex": "^8.0.0", + "is-fullwidth-code-point": "^3.0.0", + "strip-ansi": "^6.0.1" + }, "engines": { - "node": ">=0.6" + "node": ">=8" } }, - "node_modules/query-string": { - "version": "6.13.6", - "resolved": "https://registry.npmjs.org/query-string/-/query-string-6.13.6.tgz", - "integrity": "sha512-/WWZ7d9na6s2wMEGdVCVgKWE9Rt7nYyNIf7k8xmHXcesPMlEzicWo3lbYwHyA4wBktI2KrXxxZeACLbE84hvSQ==", + "node_modules/string.prototype.padend": { + "version": "3.1.6", + "resolved": "https://registry.npmjs.org/string.prototype.padend/-/string.prototype.padend-3.1.6.tgz", + "integrity": "sha512-XZpspuSB7vJWhvJc9DLSlrXl1mcA2BdoY5jjnS135ydXqLoqhs96JjDtCkjJEQHvfqZIp9hBuBMgI589peyx9Q==", "dev": true, + "license": "MIT", "dependencies": { - "decode-uri-component": "^0.2.0", - "split-on-first": "^1.0.0", - "strict-uri-encode": "^2.0.0" + "call-bind": "^1.0.7", + "define-properties": "^1.2.1", + "es-abstract": "^1.23.2", + "es-object-atoms": "^1.0.0" }, "engines": { - "node": ">=6" + "node": ">= 0.4" }, "funding": { - "url": "https://github.com/sponsors/sindresorhus" + "url": "https://github.com/sponsors/ljharb" } }, - "node_modules/quick-lru": { - "version": "1.1.0", - "resolved": "https://registry.npmjs.org/quick-lru/-/quick-lru-1.1.0.tgz", - "integrity": "sha1-Q2CxfGETatOAeDl/8RQW4Ybc+7g=", + "node_modules/string.prototype.trim": { + "version": "1.2.10", + "resolved": "https://registry.npmjs.org/string.prototype.trim/-/string.prototype.trim-1.2.10.tgz", + "integrity": "sha512-Rs66F0P/1kedk5lyYyH9uBzuiI/kNRmwJAR9quK6VOtIpZ2G+hMZd+HQbbv25MgCA6gEffoMZYxlTod4WcdrKA==", "dev": true, + "license": "MIT", + "dependencies": { + "call-bind": "^1.0.8", + "call-bound": "^1.0.2", + "define-data-property": "^1.1.4", + "define-properties": "^1.2.1", + "es-abstract": "^1.23.5", + "es-object-atoms": "^1.0.0", + "has-property-descriptors": "^1.0.2" + }, "engines": { - "node": ">=4" + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" } }, - "node_modules/randombytes": { - "version": "2.1.0", - "resolved": "https://registry.npmjs.org/randombytes/-/randombytes-2.1.0.tgz", - "integrity": "sha512-vYl3iOX+4CKUWuxGi9Ukhie6fsqXqS9FE2Zaic4tNFD2N2QQaXOMFbuKK4QmDHC0JO6B1Zp41J0LpT0oR68amQ==", + "node_modules/string.prototype.trimend": { + "version": "1.0.9", + "resolved": "https://registry.npmjs.org/string.prototype.trimend/-/string.prototype.trimend-1.0.9.tgz", + "integrity": "sha512-G7Ok5C6E/j4SGfyLCloXTrngQIQU3PWtXGst3yM7Bea9FRURf1S42ZHlZZtsNque2FN2PoUhfZXYLNWwEr4dLQ==", "dev": true, + "license": "MIT", "dependencies": { - "safe-buffer": "^5.1.0" + "call-bind": "^1.0.8", + "call-bound": "^1.0.2", + "define-properties": "^1.2.1", + "es-object-atoms": "^1.0.0" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" } }, - "node_modules/read-pkg": { - "version": "1.1.0", - "resolved": "https://registry.npmjs.org/read-pkg/-/read-pkg-1.1.0.tgz", - "integrity": "sha1-9f+qXs0pyzHAR0vKfXVra7KePyg=", + "node_modules/string.prototype.trimstart": { + "version": "1.0.8", + "resolved": "https://registry.npmjs.org/string.prototype.trimstart/-/string.prototype.trimstart-1.0.8.tgz", + "integrity": "sha512-UXSH262CSZY1tfu3G3Secr6uGLCFVPMhIqHjlgCUtCCcgihYc/xKs9djMTMUOb2j1mVSeU8EU6NWc/iQKU6Gfg==", "dev": true, + "license": "MIT", "dependencies": { - "load-json-file": "^1.0.0", - "normalize-package-data": "^2.3.2", - "path-type": "^1.0.0" + "call-bind": "^1.0.7", + "define-properties": "^1.2.1", + "es-object-atoms": "^1.0.0" }, "engines": { - "node": ">=0.10.0" + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" } }, - "node_modules/read-pkg-up": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/read-pkg-up/-/read-pkg-up-1.0.1.tgz", - "integrity": "sha1-nWPBMnbAZZGNV/ACpX9AobZD+wI=", + "node_modules/strip-ansi": { + "version": "6.0.1", + "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-6.0.1.tgz", + "integrity": "sha512-Y38VPSHcqkFrCpFnQ9vuSXmquuv5oXOKpGeT6aGrr3o3Gc9AlVa6JBfUSOCnbxGGZF+/0ooI7KrPuUSztUdU5A==", "dev": true, + "license": "MIT", "dependencies": { - "find-up": "^1.0.0", - "read-pkg": "^1.0.0" + "ansi-regex": "^5.0.1" }, "engines": { - "node": ">=0.10.0" + "node": ">=8" } }, - "node_modules/readable-stream": { - "version": "2.3.6", - "resolved": "https://registry.npmjs.org/readable-stream/-/readable-stream-2.3.6.tgz", - "integrity": "sha512-tQtKA9WIAhBF3+VLAseyMqZeBjW0AHJoxOtYqSUZNJxauErmLbVm2FW1y+J/YA9dUrAC39ITejlZWhVIwawkKw==", + "node_modules/strip-bom": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/strip-bom/-/strip-bom-3.0.0.tgz", + "integrity": "sha512-vavAMRXOgBVNF6nyEEmL3DBK19iRpDcoIwW+swQ+CbGiu7lju6t+JklA1MHweoWtadgt4ISVUsXLyDq34ddcwA==", "dev": true, - "dependencies": { - "core-util-is": "~1.0.0", - "inherits": "~2.0.3", - "isarray": "~1.0.0", - "process-nextick-args": "~2.0.0", - "safe-buffer": "~5.1.1", - "string_decoder": "~1.1.1", - "util-deprecate": "~1.0.1" + "license": "MIT", + "engines": { + "node": ">=4" } }, - "node_modules/readdirp": { - "version": "2.2.1", - "resolved": "https://registry.npmjs.org/readdirp/-/readdirp-2.2.1.tgz", - "integrity": "sha512-1JU/8q+VgFZyxwrJ+SVIOsh+KywWGpds3NTqikiKpDMZWScmAYyKIgqkO+ARvNWJfXeXR1zxz7aHF4u4CyH6vQ==", + "node_modules/strip-indent": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/strip-indent/-/strip-indent-3.0.0.tgz", + "integrity": "sha512-laJTa3Jb+VQpaC6DseHhF7dXVqHTfJPCRDaEbid/drOhgitgYku/letMUqOXFoWV0zIIUbjpdH2t+tYj4bQMRQ==", "dev": true, + "license": "MIT", "dependencies": { - "graceful-fs": "^4.1.11", - "micromatch": "^3.1.10", - "readable-stream": "^2.0.2" + "min-indent": "^1.0.0" }, "engines": { - "node": ">=0.10" + "node": ">=8" } }, - "node_modules/readline-sync": { - "version": "1.4.10", - "resolved": "https://registry.npmjs.org/readline-sync/-/readline-sync-1.4.10.tgz", - "integrity": "sha512-gNva8/6UAe8QYepIQH/jQ2qn91Qj0B9sYjMBBs3QOB8F2CXcKgLxQaJRP76sWVRQt+QU+8fAkCbCvjjMFu7Ycw==", + "node_modules/strip-json-comments": { + "version": "3.1.1", + "resolved": "https://registry.npmjs.org/strip-json-comments/-/strip-json-comments-3.1.1.tgz", + "integrity": "sha512-6fPc+R4ihwqP6N/aIv2f1gMH8lOVtWQHoqC4yK6oSDVVocumAsfCqjkXnqiYMhmMwS/mEHLp7Vehlt3ql6lEig==", "dev": true, + "license": "MIT", "engines": { - "node": ">= 0.8.0" + "node": ">=8" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" } }, - "node_modules/rechoir": { - "version": "0.6.2", - "resolved": "https://registry.npmjs.org/rechoir/-/rechoir-0.6.2.tgz", - "integrity": "sha1-hSBLVNuoLVdC4oyWdW70OvUOM4Q=", + "node_modules/supports-color": { + "version": "5.5.0", + "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-5.5.0.tgz", + "integrity": "sha512-QjVjwdXIt408MIiAqCX4oUKsgU2EqAGzs2Ppkm4aQYbjm+ZEWEcW4SfFNTr4uMNZma0ey4f5lgLrkB0aX0QMow==", "dev": true, + "license": "MIT", "dependencies": { - "resolve": "^1.1.6" + "has-flag": "^3.0.0" }, "engines": { - "node": ">= 0.10" + "node": ">=4" } }, - "node_modules/redent": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/redent/-/redent-2.0.0.tgz", - "integrity": "sha1-wbIAe0LVfrE4kHmzyDM2OdXhzKo=", + "node_modules/supports-hyperlinks": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/supports-hyperlinks/-/supports-hyperlinks-1.0.1.tgz", + "integrity": "sha512-HHi5kVSefKaJkGYXbDuKbUGRVxqnWGn3J2e39CYcNJEfWciGq2zYtOhXLTlvrOZW1QU7VX67w7fMmWafHX9Pfw==", "dev": true, + "license": "MIT", "dependencies": { - "indent-string": "^3.0.0", - "strip-indent": "^2.0.0" + "has-flag": "^2.0.0", + "supports-color": "^5.0.0" }, "engines": { "node": ">=4" } }, - "node_modules/refa": { - "version": "0.9.1", - "resolved": "https://registry.npmjs.org/refa/-/refa-0.9.1.tgz", - "integrity": "sha512-egU8LgFq2VXlAfUi8Jcbr5X38wEOadMFf8tCbshgcpVCYlE7k84pJOSlnvXF+muDB4igkdVMq7Z/kiNPqDT9TA==", + "node_modules/supports-hyperlinks/node_modules/has-flag": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-2.0.0.tgz", + "integrity": "sha512-P+1n3MnwjR/Epg9BBo1KT8qbye2g2Ou4sFumihwt6I4tsUX7jnLcX4BTOSKg/B1ZrIYMN9FcEnG4x5a7NB8Eng==", "dev": true, - "dependencies": { - "regexpp": "^3.2.0" - } - }, - "node_modules/regenerator-runtime": { - "version": "0.13.7", - "resolved": "https://registry.npmjs.org/regenerator-runtime/-/regenerator-runtime-0.13.7.tgz", - "integrity": "sha512-a54FxoJDIr27pgf7IgeQGxmqUNYrcV338lf/6gH456HZ/PhX+5BcwHXG9ajESmwe6WRO0tAzRUrRmNONWgkrew==", - "dev": true - }, - "node_modules/regex-not": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/regex-not/-/regex-not-1.0.2.tgz", - "integrity": "sha512-J6SDjUgDxQj5NusnOtdFxDwN/+HWykR8GELwctJ7mdqhcyy1xEc4SRFHUXvxTp661YaVKAjfRLZ9cCqS6tn32A==", - "dev": true, - "dependencies": { - "extend-shallow": "^3.0.2", - "safe-regex": "^1.1.0" - }, + "license": "MIT", "engines": { "node": ">=0.10.0" } }, - "node_modules/regexp-ast-analysis": { - "version": "0.2.4", - "resolved": "https://registry.npmjs.org/regexp-ast-analysis/-/regexp-ast-analysis-0.2.4.tgz", - "integrity": "sha512-8L7kOZQaKPxKKAwGuUZxTQtlO3WZ+tiXy4s6G6PKL6trbOXcZoumwC3AOHHFtI/xoSbNxt7jgLvCnP1UADLWqg==", - "dev": true, - "dependencies": { - "refa": "^0.9.0", - "regexpp": "^3.2.0" - } - }, - "node_modules/regexpp": { - "version": "3.2.0", - "resolved": "https://registry.npmjs.org/regexpp/-/regexpp-3.2.0.tgz", - "integrity": "sha512-pq2bWo9mVD43nbts2wGv17XLiNLya+GklZ8kaDLV2Z08gDCsGpnKn9BFMepvWuHCbyVvY7J5o5+BVvoQbmlJLg==", + "node_modules/supports-preserve-symlinks-flag": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/supports-preserve-symlinks-flag/-/supports-preserve-symlinks-flag-1.0.0.tgz", + "integrity": "sha512-ot0WnXS9fgdkgIcePe6RHNk1WA8+muPa6cSjeR3V8K27q9BB1rTE3R1p7Hv0z1ZyAc8s6Vvv8DIyWf681MAt0w==", "dev": true, + "license": "MIT", "engines": { - "node": ">=8" + "node": ">= 0.4" }, "funding": { - "url": "https://github.com/sponsors/mysticatea" + "url": "https://github.com/sponsors/ljharb" } }, - "node_modules/regextras": { - "version": "0.7.1", - "resolved": "https://registry.npmjs.org/regextras/-/regextras-0.7.1.tgz", - "integrity": "sha512-9YXf6xtW+qzQ+hcMQXx95MOvfqXFgsKDZodX3qZB0x2n5Z94ioetIITsBtvJbiOyxa/6s9AtyweBLCdPmPko/w==", + "node_modules/svg-pathdata": { + "version": "6.0.3", + "resolved": "https://registry.npmjs.org/svg-pathdata/-/svg-pathdata-6.0.3.tgz", + "integrity": "sha512-qsjeeq5YjBZ5eMdFuUa4ZosMLxgr5RZ+F+Y1OrDhuOCEInRMA3x74XdBtggJcj9kOeInz0WE+LgCPDkZFlBYJw==", "dev": true, + "license": "MIT", "engines": { - "node": ">=0.1.14" + "node": ">=12.0.0" } }, - "node_modules/remove-bom-buffer": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/remove-bom-buffer/-/remove-bom-buffer-3.0.0.tgz", - "integrity": "sha512-8v2rWhaakv18qcvNeli2mZ/TMTL2nEyAKRvzo1WtnZBl15SHyEhrCu2/xKlJyUFKHiHgfXIyuY6g2dObJJycXQ==", + "node_modules/svg2ttf": { + "version": "6.0.3", + "resolved": "https://registry.npmjs.org/svg2ttf/-/svg2ttf-6.0.3.tgz", + "integrity": "sha512-CgqMyZrbOPpc+WqH7aga4JWkDPso23EgypLsbQ6gN3uoPWwwiLjXvzgrwGADBExvCRJrWFzAeK1bSoSpE7ixSQ==", "dev": true, + "license": "MIT", "dependencies": { - "is-buffer": "^1.1.5", - "is-utf8": "^0.2.1" + "@xmldom/xmldom": "^0.7.2", + "argparse": "^2.0.1", + "cubic2quad": "^1.2.1", + "lodash": "^4.17.10", + "microbuffer": "^1.0.0", + "svgpath": "^2.1.5" }, - "engines": { - "node": ">=0.10.0" + "bin": { + "svg2ttf": "svg2ttf.js" } }, - "node_modules/remove-bom-stream": { - "version": "1.2.0", - "resolved": "https://registry.npmjs.org/remove-bom-stream/-/remove-bom-stream-1.2.0.tgz", - "integrity": "sha1-BfGlk/FuQuH7kOv1nejlaVJflSM=", + "node_modules/svgicons2svgfont": { + "version": "10.0.6", + "resolved": "https://registry.npmjs.org/svgicons2svgfont/-/svgicons2svgfont-10.0.6.tgz", + "integrity": "sha512-fUgQEVg3XwTbOHvlXahHGqCet5Wvfo1bV4DCvbSRvjsOCPCRunYbG4dUJCPegps37BMph3eOrfoobhH5AWuC6A==", "dev": true, + "license": "MIT", "dependencies": { - "remove-bom-buffer": "^3.0.0", - "safe-buffer": "^5.1.0", - "through2": "^2.0.3" + "commander": "^7.2.0", + "geometry-interfaces": "^1.1.4", + "glob": "^7.1.6", + "neatequal": "^1.0.0", + "readable-stream": "^3.4.0", + "sax": "^1.2.4", + "svg-pathdata": "^6.0.0" + }, + "bin": { + "svgicons2svgfont": "bin/svgicons2svgfont.js" }, "engines": { - "node": ">= 0.10" + "node": ">=12.0.0" } }, - "node_modules/remove-trailing-separator": { - "version": "1.1.0", - "resolved": "https://registry.npmjs.org/remove-trailing-separator/-/remove-trailing-separator-1.1.0.tgz", - "integrity": "sha1-wkvOKig62tW8P1jg1IJJuSN52O8=", - "dev": true - }, - "node_modules/repeat-element": { - "version": "1.1.3", - "resolved": "https://registry.npmjs.org/repeat-element/-/repeat-element-1.1.3.tgz", - "integrity": "sha512-ahGq0ZnV5m5XtZLMb+vP76kcAM5nkLqk0lpqAuojSKGgQtn4eRi4ZZGm2olo2zKFH+sMsWaqOCW1dqAnOru72g==", + "node_modules/svgicons2svgfont/node_modules/brace-expansion": { + "version": "1.1.12", + "resolved": "https://registry.npmjs.org/brace-expansion/-/brace-expansion-1.1.12.tgz", + "integrity": "sha512-9T9UjW3r0UW5c1Q7GTwllptXwhvYmEzFhzMfZ9H7FQWt+uZePjZPjBP/W1ZEyZ1twGWom5/56TF4lPcqjnDHcg==", "dev": true, - "engines": { - "node": ">=0.10.0" + "license": "MIT", + "dependencies": { + "balanced-match": "^1.0.0", + "concat-map": "0.0.1" } }, - "node_modules/repeat-string": { - "version": "1.6.1", - "resolved": "https://registry.npmjs.org/repeat-string/-/repeat-string-1.6.1.tgz", - "integrity": "sha1-jcrkcOHIirwtYA//Sndihtp15jc=", + "node_modules/svgicons2svgfont/node_modules/commander": { + "version": "7.2.0", + "resolved": "https://registry.npmjs.org/commander/-/commander-7.2.0.tgz", + "integrity": "sha512-QrWXB+ZQSVPmIWIhtEO9H+gwHaMGYiF5ChvoJ+K9ZGHG/sVsa6yiesAD1GC/x46sET00Xlwo1u49RVVVzvcSkw==", "dev": true, + "license": "MIT", "engines": { - "node": ">=0.10" + "node": ">= 10" } }, - "node_modules/replace-ext": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/replace-ext/-/replace-ext-1.0.0.tgz", - "integrity": "sha1-3mMSg3P8v3w8z6TeWkgMRaZ5WOs=", + "node_modules/svgicons2svgfont/node_modules/glob": { + "version": "7.2.3", + "resolved": "https://registry.npmjs.org/glob/-/glob-7.2.3.tgz", + "integrity": "sha512-nFR0zLpU2YCaRxwoCJvL6UvCH2JFyFVIvwTLsIf21AuHlMskA1hhTdk+LlYJtOlYt9v6dvszD2BGRqBL+iQK9Q==", + "deprecated": "Glob versions prior to v9 are no longer supported", "dev": true, + "license": "ISC", + "dependencies": { + "fs.realpath": "^1.0.0", + "inflight": "^1.0.4", + "inherits": "2", + "minimatch": "^3.1.1", + "once": "^1.3.0", + "path-is-absolute": "^1.0.0" + }, "engines": { - "node": ">= 0.10" + "node": "*" + }, + "funding": { + "url": "https://github.com/sponsors/isaacs" } }, - "node_modules/replace-homedir": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/replace-homedir/-/replace-homedir-1.0.0.tgz", - "integrity": "sha1-6H9tUTuSjd6AgmDBK+f+xv9ueYw=", + "node_modules/svgicons2svgfont/node_modules/minimatch": { + "version": "3.1.2", + "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-3.1.2.tgz", + "integrity": "sha512-J7p63hRiAjw1NDEww1W7i37+ByIrOWO5XQQAzZ3VOcL0PNybwpfmV/N05zFAzwQ9USyEcX6t3UO+K5aqBQOIHw==", "dev": true, + "license": "ISC", "dependencies": { - "homedir-polyfill": "^1.0.1", - "is-absolute": "^1.0.0", - "remove-trailing-separator": "^1.1.0" + "brace-expansion": "^1.1.7" }, "engines": { - "node": ">= 0.10" + "node": "*" } }, - "node_modules/replacestream": { - "version": "4.0.3", - "resolved": "https://registry.npmjs.org/replacestream/-/replacestream-4.0.3.tgz", - "integrity": "sha512-AC0FiLS352pBBiZhd4VXB1Ab/lh0lEgpP+GGvZqbQh8a5cmXVoTe5EX/YeTFArnp4SRGTHh1qCHu9lGs1qG8sA==", + "node_modules/svgpath": { + "version": "2.6.0", + "resolved": "https://registry.npmjs.org/svgpath/-/svgpath-2.6.0.tgz", + "integrity": "sha512-OIWR6bKzXvdXYyO4DK/UWa1VA1JeKq8E+0ug2DG98Y/vOmMpfZNj+TIG988HjfYSqtcy/hFOtZq/n/j5GSESNg==", "dev": true, - "dependencies": { - "escape-string-regexp": "^1.0.3", - "object-assign": "^4.0.1", - "readable-stream": "^2.0.2" + "license": "MIT", + "funding": { + "url": "https://github.com/fontello/svg2ttf?sponsor=1" } }, - "node_modules/require-directory": { - "version": "2.1.1", - "resolved": "https://registry.npmjs.org/require-directory/-/require-directory-2.1.1.tgz", - "integrity": "sha1-jGStX9MNqxyXbiNE/+f3kqam30I=", + "node_modules/symbol-tree": { + "version": "3.2.4", + "resolved": "https://registry.npmjs.org/symbol-tree/-/symbol-tree-3.2.4.tgz", + "integrity": "sha512-9QNk5KwDF+Bvz+PyObkmSYjI5ksVUYtjW7AU22r2NKcfLJcXp96hkDWU3+XndOsUb+AQ9QhfzfCT2O+CNWT5Tw==", "dev": true, + "license": "MIT" + }, + "node_modules/terser": { + "version": "5.39.0", + "resolved": "https://registry.npmjs.org/terser/-/terser-5.39.0.tgz", + "integrity": "sha512-LBAhFyLho16harJoWMg/nZsQYgTrg5jXOn2nCYjRUcZZEdE3qa2zb8QEDRUGVZBW4rlazf2fxkg8tztybTaqWw==", + "dev": true, + "license": "BSD-2-Clause", + "dependencies": { + "@jridgewell/source-map": "^0.3.3", + "acorn": "^8.8.2", + "commander": "^2.20.0", + "source-map-support": "~0.5.20" + }, + "bin": { + "terser": "bin/terser" + }, "engines": { - "node": ">=0.10.0" + "node": ">=10" } }, - "node_modules/require-from-string": { - "version": "2.0.2", - "resolved": "https://registry.npmjs.org/require-from-string/-/require-from-string-2.0.2.tgz", - "integrity": "sha512-Xf0nWe6RseziFMu+Ap9biiUbmplq6S9/p+7w7YXP/JBHhrUDDUhwa+vANyubuqfZWTveU//DYVGsDG7RKL/vEw==", + "node_modules/test-exclude": { + "version": "6.0.0", + "resolved": "https://registry.npmjs.org/test-exclude/-/test-exclude-6.0.0.tgz", + "integrity": "sha512-cAGWPIyOHU6zlmg88jwm7VRyXnMN7iV68OGAbYDk/Mh/xC/pzVPlQtY6ngoIH/5/tciuhGfvESU8GrHrcxD56w==", "dev": true, + "license": "ISC", + "dependencies": { + "@istanbuljs/schema": "^0.1.2", + "glob": "^7.1.4", + "minimatch": "^3.0.4" + }, "engines": { - "node": ">=0.10.0" + "node": ">=8" } }, - "node_modules/require-main-filename": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/require-main-filename/-/require-main-filename-1.0.1.tgz", - "integrity": "sha1-l/cXtp1IeE9fUmpsWqj/3aBVpNE=", - "dev": true - }, - "node_modules/requires-port": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/requires-port/-/requires-port-1.0.0.tgz", - "integrity": "sha1-kl0mAdOaxIXgkc8NpcbmlNw9yv8=", - "dev": true - }, - "node_modules/requizzle": { - "version": "0.2.3", - "resolved": "https://registry.npmjs.org/requizzle/-/requizzle-0.2.3.tgz", - "integrity": "sha512-YanoyJjykPxGHii0fZP0uUPEXpvqfBDxWV7s6GKAiiOsiqhX6vHNyW3Qzdmqp/iq/ExbhaGbVrjB4ruEVSM4GQ==", + "node_modules/test-exclude/node_modules/brace-expansion": { + "version": "1.1.12", + "resolved": "https://registry.npmjs.org/brace-expansion/-/brace-expansion-1.1.12.tgz", + "integrity": "sha512-9T9UjW3r0UW5c1Q7GTwllptXwhvYmEzFhzMfZ9H7FQWt+uZePjZPjBP/W1ZEyZ1twGWom5/56TF4lPcqjnDHcg==", "dev": true, + "license": "MIT", "dependencies": { - "lodash": "^4.17.14" + "balanced-match": "^1.0.0", + "concat-map": "0.0.1" } }, - "node_modules/resolve": { - "version": "1.15.1", - "resolved": "https://registry.npmjs.org/resolve/-/resolve-1.15.1.tgz", - "integrity": "sha512-84oo6ZTtoTUpjgNEr5SJyzQhzL72gaRodsSfyxC/AXRvwu0Yse9H8eF9IpGo7b8YetZhlI6v7ZQ6bKBFV/6S7w==", + "node_modules/test-exclude/node_modules/glob": { + "version": "7.2.3", + "resolved": "https://registry.npmjs.org/glob/-/glob-7.2.3.tgz", + "integrity": "sha512-nFR0zLpU2YCaRxwoCJvL6UvCH2JFyFVIvwTLsIf21AuHlMskA1hhTdk+LlYJtOlYt9v6dvszD2BGRqBL+iQK9Q==", + "deprecated": "Glob versions prior to v9 are no longer supported", "dev": true, + "license": "ISC", "dependencies": { - "path-parse": "^1.0.6" + "fs.realpath": "^1.0.0", + "inflight": "^1.0.4", + "inherits": "2", + "minimatch": "^3.1.1", + "once": "^1.3.0", + "path-is-absolute": "^1.0.0" + }, + "engines": { + "node": "*" }, "funding": { - "url": "https://github.com/sponsors/ljharb" + "url": "https://github.com/sponsors/isaacs" } }, - "node_modules/resolve-dir": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/resolve-dir/-/resolve-dir-1.0.1.tgz", - "integrity": "sha1-eaQGRMNivoLybv/nOcm7U4IEb0M=", + "node_modules/test-exclude/node_modules/minimatch": { + "version": "3.1.2", + "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-3.1.2.tgz", + "integrity": "sha512-J7p63hRiAjw1NDEww1W7i37+ByIrOWO5XQQAzZ3VOcL0PNybwpfmV/N05zFAzwQ9USyEcX6t3UO+K5aqBQOIHw==", "dev": true, + "license": "ISC", "dependencies": { - "expand-tilde": "^2.0.0", - "global-modules": "^1.0.0" + "brace-expansion": "^1.1.7" }, "engines": { - "node": ">=0.10.0" + "node": "*" } }, - "node_modules/resolve-from": { - "version": "5.0.0", - "resolved": "https://registry.npmjs.org/resolve-from/-/resolve-from-5.0.0.tgz", - "integrity": "sha512-qYg9KP24dD5qka9J47d0aVky0N+b4fTU89LN9iDnjB5waksiC49rvMB0PrUJQGoTmH50XPiqOvAjDfaijGxYZw==", + "node_modules/tmpl": { + "version": "1.0.5", + "resolved": "https://registry.npmjs.org/tmpl/-/tmpl-1.0.5.tgz", + "integrity": "sha512-3f0uOEAQwIqGuWW2MVzYg8fV/QNnc/IpuJNG837rLuczAaLVHslWHZQj4IGiEl5Hs3kkbhwL9Ab7Hrsmuj+Smw==", + "dev": true, + "license": "BSD-3-Clause" + }, + "node_modules/to-regex-range": { + "version": "5.0.1", + "resolved": "https://registry.npmjs.org/to-regex-range/-/to-regex-range-5.0.1.tgz", + "integrity": "sha512-65P7iz6X5yEr1cwcgvQxbbIw7Uk3gOy5dIdtZ4rDveLqhrdJP+Li/Hx6tyK0NEb+2GCyneCMJiGqrADCSNk8sQ==", "dev": true, + "license": "MIT", + "dependencies": { + "is-number": "^7.0.0" + }, "engines": { - "node": ">=8" + "node": ">=8.0" } }, - "node_modules/resolve-options": { - "version": "1.1.0", - "resolved": "https://registry.npmjs.org/resolve-options/-/resolve-options-1.1.0.tgz", - "integrity": "sha1-MrueOcBtZzONyTeMDW1gdFZq0TE=", + "node_modules/tough-cookie": { + "version": "4.1.4", + "resolved": "https://registry.npmjs.org/tough-cookie/-/tough-cookie-4.1.4.tgz", + "integrity": "sha512-Loo5UUvLD9ScZ6jh8beX1T6sO1w2/MpCRpEP7V280GKMVUQ0Jzar2U3UJPsrdbziLEMMhu3Ujnq//rhiFuIeag==", "dev": true, + "license": "BSD-3-Clause", "dependencies": { - "value-or-function": "^3.0.0" + "psl": "^1.1.33", + "punycode": "^2.1.1", + "universalify": "^0.2.0", + "url-parse": "^1.5.3" }, "engines": { - "node": ">= 0.10" + "node": ">=6" } }, - "node_modules/resolve-url": { - "version": "0.2.1", - "resolved": "https://registry.npmjs.org/resolve-url/-/resolve-url-0.2.1.tgz", - "integrity": "sha1-LGN/53yJOv0qZj/iGqkIAGjiBSo=", - "deprecated": "https://github.com/lydell/resolve-url#deprecated", - "dev": true - }, - "node_modules/ret": { - "version": "0.1.15", - "resolved": "https://registry.npmjs.org/ret/-/ret-0.1.15.tgz", - "integrity": "sha512-TTlYpa+OL+vMMNG24xSlQGEJ3B/RzEfUlLct7b5G/ytav+wPrplCpVMFuwzXbkecJrb6IYo1iFb0S9v37754mg==", + "node_modules/tr46": { + "version": "5.1.1", + "resolved": "https://registry.npmjs.org/tr46/-/tr46-5.1.1.tgz", + "integrity": "sha512-hdF5ZgjTqgAntKkklYw0R03MG2x/bSzTtkxmIRw/sTNV8YXsCJ1tfLAX23lhxhHJlEf3CRCOCGGWw3vI3GaSPw==", "dev": true, + "license": "MIT", + "dependencies": { + "punycode": "^2.3.1" + }, "engines": { - "node": ">=0.12" + "node": ">=18" } }, - "node_modules/retry": { - "version": "0.12.0", - "resolved": "https://registry.npmjs.org/retry/-/retry-0.12.0.tgz", - "integrity": "sha1-G0KmJmoh8HQh0bC1S33BZ7AcATs=", + "node_modules/trim-newlines": { + "version": "3.0.1", + "resolved": "https://registry.npmjs.org/trim-newlines/-/trim-newlines-3.0.1.tgz", + "integrity": "sha512-c1PTsA3tYrIsLGkJkzHF+w9F2EyxfXGo4UyJc4pFL++FMjnq0HJS69T3M7d//gKrFKwy429bouPescbjecU+Zw==", "dev": true, + "license": "MIT", "engines": { - "node": ">= 4" + "node": ">=8" } }, - "node_modules/rimraf": { - "version": "2.6.3", - "resolved": "https://registry.npmjs.org/rimraf/-/rimraf-2.6.3.tgz", - "integrity": "sha512-mwqeW5XsA2qAejG46gYdENaxXjx9onRNCfn7L0duuP4hCuTIi/QO7PDK07KJfp1d+izWPrzEJDcSqBa0OZQriA==", + "node_modules/ttf2eot": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/ttf2eot/-/ttf2eot-2.0.0.tgz", + "integrity": "sha512-U56aG2Ylw7psLOmakjemAzmpqVgeadwENg9oaDjaZG5NYX4WB6+7h74bNPcc+0BXsoU5A/XWiHabDXyzFOmsxQ==", "dev": true, + "license": "MIT", "dependencies": { - "glob": "^7.1.3" + "argparse": "^1.0.6", + "microbuffer": "^1.0.0" }, "bin": { - "rimraf": "bin.js" + "ttf2eot": "ttf2eot.js" } }, - "node_modules/safe-buffer": { - "version": "5.1.2", - "resolved": "https://registry.npmjs.org/safe-buffer/-/safe-buffer-5.1.2.tgz", - "integrity": "sha512-Gd2UZBJDkXlY7GbJxfsE8/nvKkUEU1G38c1siN6QP6a9PT9MmHB8GnpscSmMJSoF8LOIrt8ud/wPtojys4G6+g==", - "dev": true - }, - "node_modules/safe-regex": { - "version": "1.1.0", - "resolved": "https://registry.npmjs.org/safe-regex/-/safe-regex-1.1.0.tgz", - "integrity": "sha1-QKNmnzsHfR6UPURinhV91IAjvy4=", + "node_modules/ttf2eot/node_modules/argparse": { + "version": "1.0.10", + "resolved": "https://registry.npmjs.org/argparse/-/argparse-1.0.10.tgz", + "integrity": "sha512-o5Roy6tNG4SL/FOkCAN6RzjiakZS25RLYFrcMttJqbdd8BWrnA+fGz57iN5Pb06pvBGvl5gQ0B48dJlslXvoTg==", "dev": true, + "license": "MIT", "dependencies": { - "ret": "~0.1.10" + "sprintf-js": "~1.0.2" } }, - "node_modules/safer-buffer": { - "version": "2.1.2", - "resolved": "https://registry.npmjs.org/safer-buffer/-/safer-buffer-2.1.2.tgz", - "integrity": "sha512-YZo3K82SD7Riyi0E1EQPojLz7kpepnSQI9IyPbHHg1XXXevb5dJI7tpyN2ADxGcQbHG7vcyRHk0cbwqcQriUtg==", - "dev": true - }, - "node_modules/sanitize-html": { - "version": "1.27.5", - "resolved": "https://registry.npmjs.org/sanitize-html/-/sanitize-html-1.27.5.tgz", - "integrity": "sha512-M4M5iXDAUEcZKLXkmk90zSYWEtk5NH3JmojQxKxV371fnMh+x9t1rqdmXaGoyEHw3z/X/8vnFhKjGL5xFGOJ3A==", + "node_modules/ttf2woff": { + "version": "2.0.2", + "resolved": "https://registry.npmjs.org/ttf2woff/-/ttf2woff-2.0.2.tgz", + "integrity": "sha512-X68badwBjAy/+itU49scLjXUL094up+rHuYk+YAOTTBYSUMOmLZ7VyhZJuqQESj1gnyLAC2/5V8Euv+mExmyPA==", "dev": true, + "license": "MIT", "dependencies": { - "htmlparser2": "^4.1.0", - "lodash": "^4.17.15", - "parse-srcset": "^1.0.2", - "postcss": "^7.0.27" + "argparse": "^1.0.6", + "microbuffer": "^1.0.0", + "pako": "^1.0.0" + }, + "bin": { + "ttf2woff": "ttf2woff.js" } }, - "node_modules/sanitize-html/node_modules/htmlparser2": { - "version": "4.1.0", - "resolved": "https://registry.npmjs.org/htmlparser2/-/htmlparser2-4.1.0.tgz", - "integrity": "sha512-4zDq1a1zhE4gQso/c5LP1OtrhYTncXNSpvJYtWJBtXAETPlMfi3IFNjGuQbYLuVY4ZR0QMqRVvo4Pdy9KLyP8Q==", + "node_modules/ttf2woff/node_modules/argparse": { + "version": "1.0.10", + "resolved": "https://registry.npmjs.org/argparse/-/argparse-1.0.10.tgz", + "integrity": "sha512-o5Roy6tNG4SL/FOkCAN6RzjiakZS25RLYFrcMttJqbdd8BWrnA+fGz57iN5Pb06pvBGvl5gQ0B48dJlslXvoTg==", "dev": true, + "license": "MIT", "dependencies": { - "domelementtype": "^2.0.1", - "domhandler": "^3.0.0", - "domutils": "^2.0.0", - "entities": "^2.0.0" + "sprintf-js": "~1.0.2" } }, - "node_modules/sax": { - "version": "1.2.4", - "resolved": "https://registry.npmjs.org/sax/-/sax-1.2.4.tgz", - "integrity": "sha512-NqVDv9TpANUjFm0N8uM5GxL36UgKi9/atZw+x7YFnQ8ckwFGKrl4xX4yWtrey3UJm5nP1kUbnYgLopqWNSRhWw==", - "dev": true - }, - "node_modules/saxes": { - "version": "5.0.1", - "resolved": "https://registry.npmjs.org/saxes/-/saxes-5.0.1.tgz", - "integrity": "sha512-5LBh1Tls8c9xgGjw3QrMwETmTMVk0oFgvrFSvWx62llR2hcEInrKNZ2GZCCuuy2lvWrdl5jhbpeqc5hRYKFOcw==", + "node_modules/type-check": { + "version": "0.4.0", + "resolved": "https://registry.npmjs.org/type-check/-/type-check-0.4.0.tgz", + "integrity": "sha512-XleUoc9uwGXqjWwXaUTZAmzMcFZ5858QA2vvx1Ur5xIcixXIP+8LnFDgRplU30us6teqdlskFfu+ae4K79Ooew==", "dev": true, + "license": "MIT", "dependencies": { - "xmlchars": "^2.2.0" + "prelude-ls": "^1.2.1" }, "engines": { - "node": ">=10" - } - }, - "node_modules/scslre": { - "version": "0.1.6", - "resolved": "https://registry.npmjs.org/scslre/-/scslre-0.1.6.tgz", - "integrity": "sha512-JORxVRlQTfjvlOAaiQKebgFElyAm5/W8b50lgaZ0OkEnKnagJW2ufDh3xRfU75UD9z3FGIu1gL1IyR3Poa6Qmw==", - "dev": true, - "dependencies": { - "refa": "^0.9.0", - "regexp-ast-analysis": "^0.2.3", - "regexpp": "^3.2.0" + "node": ">= 0.8.0" } }, - "node_modules/secure-compare": { - "version": "3.0.1", - "resolved": "https://registry.npmjs.org/secure-compare/-/secure-compare-3.0.1.tgz", - "integrity": "sha1-8aAymzCLIh+uN7mXTz1XjQypmeM=", - "dev": true - }, - "node_modules/semver": { - "version": "5.6.0", - "resolved": "https://registry.npmjs.org/semver/-/semver-5.6.0.tgz", - "integrity": "sha512-RS9R6R35NYgQn++fkDWaOmqGoj4Ek9gGs+DPxNUZKuwE183xjJroKvyo1IzVFeXvUrvmALy6FWD5xrdJT25gMg==", + "node_modules/type-fest": { + "version": "0.18.1", + "resolved": "https://registry.npmjs.org/type-fest/-/type-fest-0.18.1.tgz", + "integrity": "sha512-OIAYXk8+ISY+qTOwkHtKqzAuxchoMiD9Udx+FSGQDuiRR+PJKJHc2NJAXlbhkGwTt/4/nKZxELY1w3ReWOL8mw==", "dev": true, - "bin": { - "semver": "bin/semver" + "license": "(MIT OR CC0-1.0)", + "engines": { + "node": ">=10" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" } }, - "node_modules/semver-greatest-satisfied-range": { - "version": "1.1.0", - "resolved": "https://registry.npmjs.org/semver-greatest-satisfied-range/-/semver-greatest-satisfied-range-1.1.0.tgz", - "integrity": "sha1-E+jCZYq5aRywzXEJMkAoDTb3els=", + "node_modules/typed-array-buffer": { + "version": "1.0.3", + "resolved": "https://registry.npmjs.org/typed-array-buffer/-/typed-array-buffer-1.0.3.tgz", + "integrity": "sha512-nAYYwfY3qnzX30IkA6AQZjVbtK6duGontcQm1WSG1MD94YLqK0515GNApXkoxKOWMusVssAHWLh9SeaoefYFGw==", "dev": true, + "license": "MIT", "dependencies": { - "sver-compat": "^1.5.0" + "call-bound": "^1.0.3", + "es-errors": "^1.3.0", + "is-typed-array": "^1.1.14" }, "engines": { - "node": ">= 0.10" + "node": ">= 0.4" } }, - "node_modules/serialize-javascript": { - "version": "6.0.0", - "resolved": "https://registry.npmjs.org/serialize-javascript/-/serialize-javascript-6.0.0.tgz", - "integrity": "sha512-Qr3TosvguFt8ePWqsvRfrKyQXIiW+nGbYpy8XK24NQHE83caxWt+mIymTT19DGFbNWNLfEwsrkSmN64lVWB9ag==", - "dev": true, - "dependencies": { - "randombytes": "^2.1.0" - } - }, - "node_modules/set-blocking": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/set-blocking/-/set-blocking-2.0.0.tgz", - "integrity": "sha1-BF+XgtARrppoA93TgrJDkrPYkPc=", - "dev": true - }, - "node_modules/set-value": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/set-value/-/set-value-2.0.1.tgz", - "integrity": "sha512-JxHc1weCN68wRY0fhCoXpyK55m/XPHafOmK4UWD7m2CI14GMcFypt4w/0+NV5f/ZMby2F6S2wwA7fgynh9gWSw==", - "dev": true, - "dependencies": { - "extend-shallow": "^2.0.1", - "is-extendable": "^0.1.1", - "is-plain-object": "^2.0.3", - "split-string": "^3.0.1" - }, - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/set-value/node_modules/extend-shallow": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/extend-shallow/-/extend-shallow-2.0.1.tgz", - "integrity": "sha1-Ua99YUrZqfYQ6huvu5idaxxWiQ8=", - "dev": true, - "dependencies": { - "is-extendable": "^0.1.0" - }, - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/shebang-command": { - "version": "1.2.0", - "resolved": "https://registry.npmjs.org/shebang-command/-/shebang-command-1.2.0.tgz", - "integrity": "sha1-RKrGW2lbAzmJaMOfNj/uXer98eo=", + "node_modules/typed-array-byte-length": { + "version": "1.0.3", + "resolved": "https://registry.npmjs.org/typed-array-byte-length/-/typed-array-byte-length-1.0.3.tgz", + "integrity": "sha512-BaXgOuIxz8n8pIq3e7Atg/7s+DpiYrxn4vdot3w9KbnBhcRQq6o3xemQdIfynqSeXeDrF32x+WvfzmOjPiY9lg==", "dev": true, + "license": "MIT", "dependencies": { - "shebang-regex": "^1.0.0" + "call-bind": "^1.0.8", + "for-each": "^0.3.3", + "gopd": "^1.2.0", + "has-proto": "^1.2.0", + "is-typed-array": "^1.1.14" }, "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/shebang-regex": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/shebang-regex/-/shebang-regex-1.0.0.tgz", - "integrity": "sha1-2kL0l0DAtC2yypcoVxyxkMmO/qM=", - "dev": true, - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/shell-quote": { - "version": "1.7.3", - "resolved": "https://registry.npmjs.org/shell-quote/-/shell-quote-1.7.3.tgz", - "integrity": "sha512-Vpfqwm4EnqGdlsBFNmHhxhElJYrdfcxPThu+ryKS5J8L/fhAwLazFZtq+S+TWZ9ANj2piSQLGj6NQg+lKPmxrw==", - "dev": true - }, - "node_modules/signal-exit": { - "version": "3.0.2", - "resolved": "https://registry.npmjs.org/signal-exit/-/signal-exit-3.0.2.tgz", - "integrity": "sha1-tf3AjxKH6hF4Yo5BXiUTK3NkbG0=", - "dev": true - }, - "node_modules/simple-git": { - "version": "3.5.0", - "resolved": "https://registry.npmjs.org/simple-git/-/simple-git-3.5.0.tgz", - "integrity": "sha512-fZsaq5nzdxQRhMNs6ESGLpMUHoL5GRP+boWPhq9pMYMKwOGZV2jHOxi8AbFFA2Y/6u4kR99HoULizSbpzaODkA==", - "dev": true, - "dependencies": { - "@kwsites/file-exists": "^1.1.1", - "@kwsites/promise-deferred": "^1.1.1", - "debug": "^4.3.3" + "node": ">= 0.4" }, "funding": { - "type": "github", - "url": "https://github.com/sponsors/steveukx/" - } - }, - "node_modules/simple-git/node_modules/debug": { - "version": "4.3.4", - "resolved": "https://registry.npmjs.org/debug/-/debug-4.3.4.tgz", - "integrity": "sha512-PRWFHuSU3eDtQJPvnNY7Jcket1j0t5OuOsFzPPzsekD52Zl8qUfFIPEiswXqIvHWGVHOgX+7G/vCNNhehwxfkQ==", - "dev": true, - "dependencies": { - "ms": "2.1.2" - }, - "engines": { - "node": ">=6.0" - }, - "peerDependenciesMeta": { - "supports-color": { - "optional": true - } - } - }, - "node_modules/simple-git/node_modules/ms": { - "version": "2.1.2", - "resolved": "https://registry.npmjs.org/ms/-/ms-2.1.2.tgz", - "integrity": "sha512-sGkPx+VjMtmA6MX27oA4FBFELFCZZ4S4XqeGOXCv68tT+jb3vk/RyaKWP0PTKyWtmLSM0b+adUTEvbs1PEaH2w==", - "dev": true - }, - "node_modules/slash": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/slash/-/slash-2.0.0.tgz", - "integrity": "sha512-ZYKh3Wh2z1PpEXWr0MpSBZ0V6mZHAQfYevttO11c51CaWjGTaadiKZ+wVt1PbMlDV5qhMFslpZCemhwOK7C89A==", - "dev": true, - "engines": { - "node": ">=6" + "url": "https://github.com/sponsors/ljharb" } }, - "node_modules/slice-ansi": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/slice-ansi/-/slice-ansi-4.0.0.tgz", - "integrity": "sha512-qMCMfhY040cVHT43K9BFygqYbUPFZKHOg7K73mtTWJRb8pyP3fzf4Ixd5SzdEJQ6MRUg/WBnOLxghZtKKurENQ==", + "node_modules/typed-array-byte-offset": { + "version": "1.0.4", + "resolved": "https://registry.npmjs.org/typed-array-byte-offset/-/typed-array-byte-offset-1.0.4.tgz", + "integrity": "sha512-bTlAFB/FBYMcuX81gbL4OcpH5PmlFHqlCCpAl8AlEzMz5k53oNDvN8p1PNOWLEmI2x4orp3raOFB51tv9X+MFQ==", "dev": true, + "license": "MIT", "dependencies": { - "ansi-styles": "^4.0.0", - "astral-regex": "^2.0.0", - "is-fullwidth-code-point": "^3.0.0" + "available-typed-arrays": "^1.0.7", + "call-bind": "^1.0.8", + "for-each": "^0.3.3", + "gopd": "^1.2.0", + "has-proto": "^1.2.0", + "is-typed-array": "^1.1.15", + "reflect.getprototypeof": "^1.0.9" }, "engines": { - "node": ">=10" + "node": ">= 0.4" }, "funding": { - "url": "https://github.com/chalk/slice-ansi?sponsor=1" + "url": "https://github.com/sponsors/ljharb" } }, - "node_modules/slice-ansi/node_modules/ansi-styles": { - "version": "4.3.0", - "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-4.3.0.tgz", - "integrity": "sha512-zbB9rCJAT1rbjiVDb2hqKFHNYLxgtk8NURxZ3IZwD3F6NtxbXZQCnnSi1Lkx+IDohdPlFp222wVALIheZJQSEg==", + "node_modules/typed-array-length": { + "version": "1.0.7", + "resolved": "https://registry.npmjs.org/typed-array-length/-/typed-array-length-1.0.7.tgz", + "integrity": "sha512-3KS2b+kL7fsuk/eJZ7EQdnEmQoaho/r6KUef7hxvltNA5DR8NAUM+8wJMbJyZ4G9/7i3v5zPBIMN5aybAh2/Jg==", "dev": true, + "license": "MIT", "dependencies": { - "color-convert": "^2.0.1" + "call-bind": "^1.0.7", + "for-each": "^0.3.3", + "gopd": "^1.0.1", + "is-typed-array": "^1.1.13", + "possible-typed-array-names": "^1.0.0", + "reflect.getprototypeof": "^1.0.6" }, "engines": { - "node": ">=8" + "node": ">= 0.4" }, "funding": { - "url": "https://github.com/chalk/ansi-styles?sponsor=1" - } - }, - "node_modules/slice-ansi/node_modules/color-convert": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-2.0.1.tgz", - "integrity": "sha512-RRECPsj7iu/xb5oKYcsFHSppFNnsj/52OVTRKb4zP5onXwVF3zVmmToNcOfGC+CRDpfK/U584fMg38ZHCaElKQ==", - "dev": true, - "dependencies": { - "color-name": "~1.1.4" - }, - "engines": { - "node": ">=7.0.0" - } - }, - "node_modules/slice-ansi/node_modules/color-name": { - "version": "1.1.4", - "resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.4.tgz", - "integrity": "sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA==", - "dev": true - }, - "node_modules/slice-ansi/node_modules/is-fullwidth-code-point": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/is-fullwidth-code-point/-/is-fullwidth-code-point-3.0.0.tgz", - "integrity": "sha512-zymm5+u+sCsSWyD9qNaejV3DFvhCKclKdizYaJUuHA83RLjb7nSuGnddCHGv0hk+KY7BMAlsWeK4Ueg6EV6XQg==", - "dev": true, - "engines": { - "node": ">=8" - } - }, - "node_modules/snapdragon": { - "version": "0.8.2", - "resolved": "https://registry.npmjs.org/snapdragon/-/snapdragon-0.8.2.tgz", - "integrity": "sha512-FtyOnWN/wCHTVXOMwvSv26d+ko5vWlIDD6zoUJ7LW8vh+ZBC8QdljveRP+crNrtBwioEUWy/4dMtbBjA4ioNlg==", - "dev": true, - "dependencies": { - "base": "^0.11.1", - "debug": "^2.2.0", - "define-property": "^0.2.5", - "extend-shallow": "^2.0.1", - "map-cache": "^0.2.2", - "source-map": "^0.5.6", - "source-map-resolve": "^0.5.0", - "use": "^3.1.0" - }, - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/snapdragon-node": { - "version": "2.1.1", - "resolved": "https://registry.npmjs.org/snapdragon-node/-/snapdragon-node-2.1.1.tgz", - "integrity": "sha512-O27l4xaMYt/RSQ5TR3vpWCAB5Kb/czIcqUFOM/C4fYcLnbZUc1PkjTAMjof2pBWaSTwOUd6qUHcFGVGj7aIwnw==", - "dev": true, - "dependencies": { - "define-property": "^1.0.0", - "isobject": "^3.0.0", - "snapdragon-util": "^3.0.1" - }, - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/snapdragon-node/node_modules/define-property": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/define-property/-/define-property-1.0.0.tgz", - "integrity": "sha1-dp66rz9KY6rTr56NMEybvnm/sOY=", - "dev": true, - "dependencies": { - "is-descriptor": "^1.0.0" - }, - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/snapdragon-node/node_modules/is-accessor-descriptor": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/is-accessor-descriptor/-/is-accessor-descriptor-1.0.0.tgz", - "integrity": "sha512-m5hnHTkcVsPfqx3AKlyttIPb7J+XykHvJP2B9bZDjlhLIoEq4XoK64Vg7boZlVWYK6LUY94dYPEE7Lh0ZkZKcQ==", - "dev": true, - "dependencies": { - "kind-of": "^6.0.0" - }, - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/snapdragon-node/node_modules/is-data-descriptor": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/is-data-descriptor/-/is-data-descriptor-1.0.0.tgz", - "integrity": "sha512-jbRXy1FmtAoCjQkVmIVYwuuqDFUbaOeDjmed1tOGPrsMhtJA4rD9tkgA0F1qJ3gRFRXcHYVkdeaP50Q5rE/jLQ==", - "dev": true, - "dependencies": { - "kind-of": "^6.0.0" - }, - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/snapdragon-node/node_modules/is-descriptor": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/is-descriptor/-/is-descriptor-1.0.2.tgz", - "integrity": "sha512-2eis5WqQGV7peooDyLmNEPUrps9+SXX5c9pL3xEB+4e9HnGuDa7mB7kHxHw4CbqS9k1T2hOH3miL8n8WtiYVtg==", - "dev": true, - "dependencies": { - "is-accessor-descriptor": "^1.0.0", - "is-data-descriptor": "^1.0.0", - "kind-of": "^6.0.2" - }, - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/snapdragon-util": { - "version": "3.0.1", - "resolved": "https://registry.npmjs.org/snapdragon-util/-/snapdragon-util-3.0.1.tgz", - "integrity": "sha512-mbKkMdQKsjX4BAL4bRYTj21edOf8cN7XHdYUJEe+Zn99hVEYcMvKPct1IqNe7+AZPirn8BCDOQBHQZknqmKlZQ==", - "dev": true, - "dependencies": { - "kind-of": "^3.2.0" - }, - "engines": { - "node": ">=0.10.0" + "url": "https://github.com/sponsors/ljharb" } }, - "node_modules/snapdragon-util/node_modules/kind-of": { - "version": "3.2.2", - "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-3.2.2.tgz", - "integrity": "sha1-MeohpzS6ubuw8yRm2JOupR5KPGQ=", + "node_modules/typescript": { + "version": "5.8.3", + "resolved": "https://registry.npmjs.org/typescript/-/typescript-5.8.3.tgz", + "integrity": "sha512-p1diW6TqL9L07nNxvRMM7hMMw4c5XOo/1ibL4aAIGmSAt9slTE1Xgw5KWuof2uTOvCg9BY7ZRi+GaF+7sfgPeQ==", "dev": true, - "dependencies": { - "is-buffer": "^1.1.5" + "license": "Apache-2.0", + "bin": { + "tsc": "bin/tsc", + "tsserver": "bin/tsserver" }, "engines": { - "node": ">=0.10.0" + "node": ">=14.17" } }, - "node_modules/snapdragon/node_modules/define-property": { - "version": "0.2.5", - "resolved": "https://registry.npmjs.org/define-property/-/define-property-0.2.5.tgz", - "integrity": "sha1-w1se+RjsPJkPmlvFe+BKrOxcgRY=", + "node_modules/unbox-primitive": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/unbox-primitive/-/unbox-primitive-1.1.0.tgz", + "integrity": "sha512-nWJ91DjeOkej/TA8pXQ3myruKpKEYgqvpw9lz4OPHj/NWFNluYrjbz9j01CJ8yKQd2g4jFoOkINCTW2I5LEEyw==", "dev": true, + "license": "MIT", "dependencies": { - "is-descriptor": "^0.1.0" + "call-bound": "^1.0.3", + "has-bigints": "^1.0.2", + "has-symbols": "^1.1.0", + "which-boxed-primitive": "^1.1.1" }, "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/snapdragon/node_modules/extend-shallow": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/extend-shallow/-/extend-shallow-2.0.1.tgz", - "integrity": "sha1-Ua99YUrZqfYQ6huvu5idaxxWiQ8=", - "dev": true, - "dependencies": { - "is-extendable": "^0.1.0" + "node": ">= 0.4" }, - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/source-map": { - "version": "0.5.7", - "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.5.7.tgz", - "integrity": "sha1-igOdLRAh0i0eoUyA2OpGi6LvP8w=", - "dev": true, - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/source-map-resolve": { - "version": "0.5.3", - "resolved": "https://registry.npmjs.org/source-map-resolve/-/source-map-resolve-0.5.3.tgz", - "integrity": "sha512-Htz+RnsXWk5+P2slx5Jh3Q66vhQj1Cllm0zvnaY98+NFx+Dv2CF/f5O/t8x+KaNdrdIAsruNzoh/KpialbqAnw==", - "deprecated": "See https://github.com/lydell/source-map-resolve#deprecated", - "dev": true, - "dependencies": { - "atob": "^2.1.2", - "decode-uri-component": "^0.2.0", - "resolve-url": "^0.2.1", - "source-map-url": "^0.4.0", - "urix": "^0.1.0" - } - }, - "node_modules/source-map-support": { - "version": "0.5.21", - "resolved": "https://registry.npmjs.org/source-map-support/-/source-map-support-0.5.21.tgz", - "integrity": "sha512-uBHU3L3czsIyYXKX88fdrGovxdSCoTGDRZ6SYXtSRxLZUzHg5P/66Ht6uoUlHu9EZod+inXhKo3qQgwXUT/y1w==", - "dev": true, - "dependencies": { - "buffer-from": "^1.0.0", - "source-map": "^0.6.0" - } - }, - "node_modules/source-map-support/node_modules/source-map": { - "version": "0.6.1", - "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.6.1.tgz", - "integrity": "sha512-UjgapumWlbMhkBgzT7Ykc5YXUT46F0iKu8SGXq0bcwP5dz/h0Plj6enJqjz1Zbq2l5WaqYnrVbwWOWMyF3F47g==", - "dev": true, - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/source-map-url": { - "version": "0.4.0", - "resolved": "https://registry.npmjs.org/source-map-url/-/source-map-url-0.4.0.tgz", - "integrity": "sha1-PpNdfd1zYxuXZZlW1VEo6HtQhKM=", - "deprecated": "See https://github.com/lydell/source-map-url#deprecated", - "dev": true - }, - "node_modules/sparkles": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/sparkles/-/sparkles-1.0.1.tgz", - "integrity": "sha512-dSO0DDYUahUt/0/pD/Is3VIm5TGJjludZ0HVymmhYF6eNA53PVLhnUk0znSYbH8IYBuJdCE+1luR22jNLMaQdw==", - "dev": true, - "engines": { - "node": ">= 0.10" + "funding": { + "url": "https://github.com/sponsors/ljharb" } }, - "node_modules/spdx-correct": { - "version": "3.1.0", - "resolved": "https://registry.npmjs.org/spdx-correct/-/spdx-correct-3.1.0.tgz", - "integrity": "sha512-lr2EZCctC2BNR7j7WzJ2FpDznxky1sjfxvvYEyzxNyb6lZXHODmEoJeFu4JupYlkfha1KZpJyoqiJ7pgA1qq8Q==", + "node_modules/undici-types": { + "version": "6.21.0", + "resolved": "https://registry.npmjs.org/undici-types/-/undici-types-6.21.0.tgz", + "integrity": "sha512-iwDZqg0QAGrg9Rav5H4n0M64c3mkR59cJ6wQp+7C4nI0gsmExaedaYLNO44eT4AtBBwjbTiGPMlt2Md0T9H9JQ==", "dev": true, - "dependencies": { - "spdx-expression-parse": "^3.0.0", - "spdx-license-ids": "^3.0.0" - } - }, - "node_modules/spdx-exceptions": { - "version": "2.2.0", - "resolved": "https://registry.npmjs.org/spdx-exceptions/-/spdx-exceptions-2.2.0.tgz", - "integrity": "sha512-2XQACfElKi9SlVb1CYadKDXvoajPgBVPn/gOQLrTvHdElaVhr7ZEbqJaRnJLVNeaI4cMEAgVCeBMKF6MWRDCRA==", - "dev": true + "license": "MIT" }, - "node_modules/spdx-expression-parse": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/spdx-expression-parse/-/spdx-expression-parse-3.0.0.tgz", - "integrity": "sha512-Yg6D3XpRD4kkOmTpdgbUiEJFKghJH03fiC1OPll5h/0sO6neh2jqRDVHOQ4o/LMea0tgCkbMgea5ip/e+MkWyg==", + "node_modules/universal-user-agent": { + "version": "6.0.1", + "resolved": "https://registry.npmjs.org/universal-user-agent/-/universal-user-agent-6.0.1.tgz", + "integrity": "sha512-yCzhz6FN2wU1NiiQRogkTQszlQSlpWaw8SvVegAc+bDxbzHgh1vX8uIe8OYyMH6DwH+sdTJsgMl36+mSMdRJIQ==", "dev": true, - "dependencies": { - "spdx-exceptions": "^2.1.0", - "spdx-license-ids": "^3.0.0" - } - }, - "node_modules/spdx-license-ids": { - "version": "3.0.5", - "resolved": "https://registry.npmjs.org/spdx-license-ids/-/spdx-license-ids-3.0.5.tgz", - "integrity": "sha512-J+FWzZoynJEXGphVIS+XEh3kFSjZX/1i9gFBaWQcB+/tmpe2qUsSBABpcxqxnAxFdiUFEgAX1bjYGQvIZmoz9Q==", - "dev": true + "license": "ISC" }, - "node_modules/split-on-first": { - "version": "1.1.0", - "resolved": "https://registry.npmjs.org/split-on-first/-/split-on-first-1.1.0.tgz", - "integrity": "sha512-43ZssAJaMusuKWL8sKUBQXHWOpq8d6CfN/u1p4gUzfJkM05C8rxTmYrkIPTXapZpORA6LkkzcUulJ8FqA7Uudw==", + "node_modules/universalify": { + "version": "0.2.0", + "resolved": "https://registry.npmjs.org/universalify/-/universalify-0.2.0.tgz", + "integrity": "sha512-CJ1QgKmNg3CwvAv/kOFmtnEN05f0D/cn9QntgNOQlQF9dgvVTHj3t+8JPdjqawCHk7V/KA+fbUqzZ9XWhcqPUg==", "dev": true, + "license": "MIT", "engines": { - "node": ">=6" + "node": ">= 4.0.0" } }, - "node_modules/split-string": { - "version": "3.1.0", - "resolved": "https://registry.npmjs.org/split-string/-/split-string-3.1.0.tgz", - "integrity": "sha512-NzNVhJDYpwceVVii8/Hu6DKfD2G+NrQHlS/V/qgv763EYudVwEcMQNxd2lh+0VrUByXN/oJkl5grOhYWvQUYiw==", + "node_modules/update-browserslist-db": { + "version": "1.1.3", + "resolved": "https://registry.npmjs.org/update-browserslist-db/-/update-browserslist-db-1.1.3.tgz", + "integrity": "sha512-UxhIZQ+QInVdunkDAaiazvvT/+fXL5Osr0JZlJulepYu6Jd7qJtDZjlur0emRlT71EN3ScPoE7gvsuIKKNavKw==", "dev": true, - "dependencies": { - "extend-shallow": "^3.0.0" - }, - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/sprintf-js": { - "version": "1.0.3", - "resolved": "https://registry.npmjs.org/sprintf-js/-/sprintf-js-1.0.3.tgz", - "integrity": "sha1-BOaSb2YolTVPPdAVIDYzuFcpfiw=", - "dev": true - }, - "node_modules/stack-trace": { - "version": "0.0.10", - "resolved": "https://registry.npmjs.org/stack-trace/-/stack-trace-0.0.10.tgz", - "integrity": "sha1-VHxws0fo0ytOEI6hoqFZ5f3eGcA=", - "dev": true, - "engines": { - "node": "*" - } - }, - "node_modules/static-extend": { - "version": "0.1.2", - "resolved": "https://registry.npmjs.org/static-extend/-/static-extend-0.1.2.tgz", - "integrity": "sha1-YICcOcv/VTNyJv1eC1IPNB8ftcY=", - "dev": true, - "dependencies": { - "define-property": "^0.2.5", - "object-copy": "^0.1.0" - }, - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/static-extend/node_modules/define-property": { - "version": "0.2.5", - "resolved": "https://registry.npmjs.org/define-property/-/define-property-0.2.5.tgz", - "integrity": "sha1-w1se+RjsPJkPmlvFe+BKrOxcgRY=", - "dev": true, - "dependencies": { - "is-descriptor": "^0.1.0" - }, - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/stream-exhaust": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/stream-exhaust/-/stream-exhaust-1.0.2.tgz", - "integrity": "sha512-b/qaq/GlBK5xaq1yrK9/zFcyRSTNxmcZwFLGSTG0mXgZl/4Z6GgiyYOXOvY7N3eEvFRAG1bkDRz5EPGSvPYQlw==", - "dev": true - }, - "node_modules/stream-shift": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/stream-shift/-/stream-shift-1.0.1.tgz", - "integrity": "sha512-AiisoFqQ0vbGcZgQPY1cdP2I76glaVA/RauYR4G4thNFgkTqr90yXTo4LYX60Jl+sIlPNHHdGSwo01AvbKUSVQ==", - "dev": true - }, - "node_modules/strict-uri-encode": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/strict-uri-encode/-/strict-uri-encode-2.0.0.tgz", - "integrity": "sha1-ucczDHBChi9rFC3CdLvMWGbONUY=", - "dev": true, - "engines": { - "node": ">=4" - } - }, - "node_modules/string_decoder": { - "version": "1.1.1", - "resolved": "https://registry.npmjs.org/string_decoder/-/string_decoder-1.1.1.tgz", - "integrity": "sha512-n/ShnvDi6FHbbVfviro+WojiFzv+s8MPMHBczVePfUpDJLwoLT0ht1l4YwBCbi8pJAveEEdnkHyPyTP/mzRfwg==", - "dev": true, - "dependencies": { - "safe-buffer": "~5.1.0" - } - }, - "node_modules/string-width": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/string-width/-/string-width-1.0.2.tgz", - "integrity": "sha1-EYvfW4zcUaKn5w0hHgfisLmxB9M=", - "dev": true, - "dependencies": { - "code-point-at": "^1.0.0", - "is-fullwidth-code-point": "^1.0.0", - "strip-ansi": "^3.0.0" - }, - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/string.fromcodepoint": { - "version": "0.2.1", - "resolved": "https://registry.npmjs.org/string.fromcodepoint/-/string.fromcodepoint-0.2.1.tgz", - "integrity": "sha1-jZeDM8C8klOPUPOD5IiPPlYZ1lM=", - "dev": true - }, - "node_modules/string.prototype.codepointat": { - "version": "0.2.1", - "resolved": "https://registry.npmjs.org/string.prototype.codepointat/-/string.prototype.codepointat-0.2.1.tgz", - "integrity": "sha512-2cBVCj6I4IOvEnjgO/hWqXjqBGsY+zwPmHl12Srk9IXSZ56Jwwmy+66XO5Iut/oQVR7t5ihYdLB0GMa4alEUcg==", - "dev": true - }, - "node_modules/string.prototype.padend": { - "version": "3.1.2", - "resolved": "https://registry.npmjs.org/string.prototype.padend/-/string.prototype.padend-3.1.2.tgz", - "integrity": "sha512-/AQFLdYvePENU3W5rgurfWSMU6n+Ww8n/3cUt7E+vPBB/D7YDG8x+qjoFs4M/alR2bW7Qg6xMjVwWUOvuQ0XpQ==", - "dev": true, - "dependencies": { - "call-bind": "^1.0.2", - "define-properties": "^1.1.3", - "es-abstract": "^1.18.0-next.2" - }, - "engines": { - "node": ">= 0.4" - }, - "funding": { - "url": "https://github.com/sponsors/ljharb" - } - }, - "node_modules/string.prototype.padend/node_modules/es-abstract": { - "version": "1.18.3", - "resolved": "https://registry.npmjs.org/es-abstract/-/es-abstract-1.18.3.tgz", - "integrity": "sha512-nQIr12dxV7SSxE6r6f1l3DtAeEYdsGpps13dR0TwJg1S8gyp4ZPgy3FZcHBgbiQqnoqSTb+oC+kO4UQ0C/J8vw==", - "dev": true, - "dependencies": { - "call-bind": "^1.0.2", - "es-to-primitive": "^1.2.1", - "function-bind": "^1.1.1", - "get-intrinsic": "^1.1.1", - "has": "^1.0.3", - "has-symbols": "^1.0.2", - "is-callable": "^1.2.3", - "is-negative-zero": "^2.0.1", - "is-regex": "^1.1.3", - "is-string": "^1.0.6", - "object-inspect": "^1.10.3", - "object-keys": "^1.1.1", - "object.assign": "^4.1.2", - "string.prototype.trimend": "^1.0.4", - "string.prototype.trimstart": "^1.0.4", - "unbox-primitive": "^1.0.1" - }, - "engines": { - "node": ">= 0.4" - }, - "funding": { - "url": "https://github.com/sponsors/ljharb" - } - }, - "node_modules/string.prototype.padend/node_modules/es-to-primitive": { - "version": "1.2.1", - "resolved": "https://registry.npmjs.org/es-to-primitive/-/es-to-primitive-1.2.1.tgz", - "integrity": "sha512-QCOllgZJtaUo9miYBcLChTUaHNjJF3PYs1VidD7AwiEj1kYxKeQTctLAezAOH5ZKRH0g2IgPn6KwB4IT8iRpvA==", - "dev": true, - "dependencies": { - "is-callable": "^1.1.4", - "is-date-object": "^1.0.1", - "is-symbol": "^1.0.2" - }, - "engines": { - "node": ">= 0.4" - }, - "funding": { - "url": "https://github.com/sponsors/ljharb" - } - }, - "node_modules/string.prototype.padend/node_modules/has-symbols": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/has-symbols/-/has-symbols-1.0.2.tgz", - "integrity": "sha512-chXa79rL/UC2KlX17jo3vRGz0azaWEx5tGqZg5pO3NUyEJVB17dMruQlzCCOfUvElghKcm5194+BCRvi2Rv/Gw==", - "dev": true, - "engines": { - "node": ">= 0.4" - }, - "funding": { - "url": "https://github.com/sponsors/ljharb" - } - }, - "node_modules/string.prototype.padend/node_modules/is-callable": { - "version": "1.2.3", - "resolved": "https://registry.npmjs.org/is-callable/-/is-callable-1.2.3.tgz", - "integrity": "sha512-J1DcMe8UYTBSrKezuIUTUwjXsho29693unXM2YhJUTR2txK/eG47bvNa/wipPFmZFgr/N6f1GA66dv0mEyTIyQ==", - "dev": true, - "engines": { - "node": ">= 0.4" - }, - "funding": { - "url": "https://github.com/sponsors/ljharb" - } - }, - "node_modules/string.prototype.padend/node_modules/is-regex": { - "version": "1.1.3", - "resolved": "https://registry.npmjs.org/is-regex/-/is-regex-1.1.3.tgz", - "integrity": "sha512-qSVXFz28HM7y+IWX6vLCsexdlvzT1PJNFSBuaQLQ5o0IEw8UDYW6/2+eCMVyIsbM8CNLX2a/QWmSpyxYEHY7CQ==", - "dev": true, - "dependencies": { - "call-bind": "^1.0.2", - "has-symbols": "^1.0.2" - }, - "engines": { - "node": ">= 0.4" - }, - "funding": { - "url": "https://github.com/sponsors/ljharb" - } - }, - "node_modules/string.prototype.padend/node_modules/object-keys": { - "version": "1.1.1", - "resolved": "https://registry.npmjs.org/object-keys/-/object-keys-1.1.1.tgz", - "integrity": "sha512-NuAESUOUMrlIXOfHKzD6bpPu3tYt3xvjNdRIQ+FeT0lNb4K8WR70CaDxhuNguS2XG+GjkyMwOzsN5ZktImfhLA==", - "dev": true, - "engines": { - "node": ">= 0.4" - } - }, - "node_modules/string.prototype.padend/node_modules/object.assign": { - "version": "4.1.2", - "resolved": "https://registry.npmjs.org/object.assign/-/object.assign-4.1.2.tgz", - "integrity": "sha512-ixT2L5THXsApyiUPYKmW+2EHpXXe5Ii3M+f4e+aJFAHao5amFRW6J0OO6c/LU8Be47utCx2GL89hxGB6XSmKuQ==", - "dev": true, - "dependencies": { - "call-bind": "^1.0.0", - "define-properties": "^1.1.3", - "has-symbols": "^1.0.1", - "object-keys": "^1.1.1" - }, - "engines": { - "node": ">= 0.4" - }, - "funding": { - "url": "https://github.com/sponsors/ljharb" - } - }, - "node_modules/string.prototype.trimend": { - "version": "1.0.4", - "resolved": "https://registry.npmjs.org/string.prototype.trimend/-/string.prototype.trimend-1.0.4.tgz", - "integrity": "sha512-y9xCjw1P23Awk8EvTpcyL2NIr1j7wJ39f+k6lvRnSMz+mz9CGz9NYPelDk42kOz6+ql8xjfK8oYzy3jAP5QU5A==", - "dev": true, - "dependencies": { - "call-bind": "^1.0.2", - "define-properties": "^1.1.3" - }, - "funding": { - "url": "https://github.com/sponsors/ljharb" - } - }, - "node_modules/string.prototype.trimstart": { - "version": "1.0.4", - "resolved": "https://registry.npmjs.org/string.prototype.trimstart/-/string.prototype.trimstart-1.0.4.tgz", - "integrity": "sha512-jh6e984OBfvxS50tdY2nRZnoC5/mLFKOREQfw8t5yytkoUsJRNxvI/E39qu1sD0OtWI3OC0XgKSmcWwziwYuZw==", - "dev": true, - "dependencies": { - "call-bind": "^1.0.2", - "define-properties": "^1.1.3" - }, - "funding": { - "url": "https://github.com/sponsors/ljharb" - } - }, - "node_modules/strip-ansi": { - "version": "3.0.1", - "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-3.0.1.tgz", - "integrity": "sha1-ajhfuIU9lS1f8F0Oiq+UJ43GPc8=", - "dev": true, - "dependencies": { - "ansi-regex": "^2.0.0" - }, - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/strip-bom": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/strip-bom/-/strip-bom-2.0.0.tgz", - "integrity": "sha1-YhmoVhZSBJHzV4i9vxRHqZx+aw4=", - "dev": true, - "dependencies": { - "is-utf8": "^0.2.0" - }, - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/strip-eof": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/strip-eof/-/strip-eof-1.0.0.tgz", - "integrity": "sha1-u0P/VZim6wXYm1n80SnJgzE2Br8=", - "dev": true, - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/strip-indent": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/strip-indent/-/strip-indent-2.0.0.tgz", - "integrity": "sha1-XvjbKV0B5u1sv3qrlpmNeCJSe2g=", - "dev": true, - "engines": { - "node": ">=4" - } - }, - "node_modules/strip-json-comments": { - "version": "3.1.1", - "resolved": "https://registry.npmjs.org/strip-json-comments/-/strip-json-comments-3.1.1.tgz", - "integrity": "sha512-6fPc+R4ihwqP6N/aIv2f1gMH8lOVtWQHoqC4yK6oSDVVocumAsfCqjkXnqiYMhmMwS/mEHLp7Vehlt3ql6lEig==", - "dev": true, - "engines": { - "node": ">=8" - }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" - } - }, - "node_modules/supports-color": { - "version": "8.1.1", - "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-8.1.1.tgz", - "integrity": "sha512-MpUEN2OodtUzxvKQl72cUF7RQ5EiHsGvSsVG0ia9c5RbWGL2CI4C7EpPS8UTBIplnlzZiNuV56w+FuNxy3ty2Q==", - "dev": true, - "dependencies": { - "has-flag": "^4.0.0" - }, - "engines": { - "node": ">=10" - }, - "funding": { - "url": "https://github.com/chalk/supports-color?sponsor=1" - } - }, - "node_modules/supports-color/node_modules/has-flag": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-4.0.0.tgz", - "integrity": "sha512-EykJT/Q1KjTWctppgIAgfSO0tKVuZUjhgMr17kqTumMl6Afv3EISleU7qZUzoXDFTAHTDC4NOoG/ZxU3EvlMPQ==", - "dev": true, - "engines": { - "node": ">=8" - } - }, - "node_modules/supports-hyperlinks": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/supports-hyperlinks/-/supports-hyperlinks-1.0.1.tgz", - "integrity": "sha512-HHi5kVSefKaJkGYXbDuKbUGRVxqnWGn3J2e39CYcNJEfWciGq2zYtOhXLTlvrOZW1QU7VX67w7fMmWafHX9Pfw==", - "dev": true, - "dependencies": { - "has-flag": "^2.0.0", - "supports-color": "^5.0.0" - }, - "engines": { - "node": ">=4" - } - }, - "node_modules/supports-hyperlinks/node_modules/has-flag": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-2.0.0.tgz", - "integrity": "sha1-6CB68cx7MNRGzHC3NLXovhj4jVE=", - "dev": true, - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/supports-hyperlinks/node_modules/supports-color": { - "version": "5.5.0", - "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-5.5.0.tgz", - "integrity": "sha512-QjVjwdXIt408MIiAqCX4oUKsgU2EqAGzs2Ppkm4aQYbjm+ZEWEcW4SfFNTr4uMNZma0ey4f5lgLrkB0aX0QMow==", - "dev": true, - "dependencies": { - "has-flag": "^3.0.0" - }, - "engines": { - "node": ">=4" - } - }, - "node_modules/supports-hyperlinks/node_modules/supports-color/node_modules/has-flag": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-3.0.0.tgz", - "integrity": "sha1-tdRU3CGZriJWmfNGfloH87lVuv0=", - "dev": true, - "engines": { - "node": ">=4" - } - }, - "node_modules/sver-compat": { - "version": "1.5.0", - "resolved": "https://registry.npmjs.org/sver-compat/-/sver-compat-1.5.0.tgz", - "integrity": "sha1-PPh9/rTQe0o/FIJ7wYaz/QxkXNg=", - "dev": true, - "dependencies": { - "es6-iterator": "^2.0.1", - "es6-symbol": "^3.1.1" - } - }, - "node_modules/svg-pathdata": { - "version": "5.0.5", - "resolved": "https://registry.npmjs.org/svg-pathdata/-/svg-pathdata-5.0.5.tgz", - "integrity": "sha512-TAAvLNSE3fEhyl/Da19JWfMAdhSXTYeviXsLSoDT1UM76ADj5ndwAPX1FKQEgB/gFMPavOy6tOqfalXKUiXrow==", - "dev": true, - "engines": { - "node": ">=6.9.5" - } - }, - "node_modules/svg2ttf": { - "version": "4.3.0", - "resolved": "https://registry.npmjs.org/svg2ttf/-/svg2ttf-4.3.0.tgz", - "integrity": "sha512-LZ0B7zzHWLWbzLzwaKGHQvPOuxCXLReIb3LSxFSGUy1gMw2Utk6KGNbTmbmRL6Rk1qDSmTixnDrQgnXaL9n0CA==", - "dev": true, - "dependencies": { - "argparse": "^1.0.6", - "cubic2quad": "^1.0.0", - "lodash": "^4.17.10", - "microbuffer": "^1.0.0", - "svgpath": "^2.1.5", - "xmldom": "~0.1.22" - }, - "bin": { - "svg2ttf": "svg2ttf.js" - } - }, - "node_modules/svgicons2svgfont": { - "version": "9.1.1", - "resolved": "https://registry.npmjs.org/svgicons2svgfont/-/svgicons2svgfont-9.1.1.tgz", - "integrity": "sha512-iOj7lqHP/oMrLg7S2Iv89LOJUfmIuePefXcs5ul4IsKwcYvL/T/Buahz+nQQJygyuvEMBBXqnCRmnvJggHeJzA==", - "dev": true, - "dependencies": { - "commander": "^2.12.2", - "geometry-interfaces": "^1.1.4", - "glob": "^7.1.2", - "neatequal": "^1.0.0", - "readable-stream": "^2.3.3", - "sax": "^1.2.4", - "string.fromcodepoint": "^0.2.1", - "string.prototype.codepointat": "^0.2.0", - "svg-pathdata": "^5.0.0", - "transformation-matrix-js": "^2.7.1" - }, - "bin": { - "svgicons2svgfont": "bin/svgicons2svgfont.js" - }, - "engines": { - "node": ">=6.9.5" - } - }, - "node_modules/svgpath": { - "version": "2.3.0", - "resolved": "https://registry.npmjs.org/svgpath/-/svgpath-2.3.0.tgz", - "integrity": "sha512-N/4UDu3Y2ICik0daMmFW1tplw0XPs1nVIEVYkTiQfj9/JQZeEtAKaSYwheCwje1I4pQ5r22fGpoaNIvGgsyJyg==", - "dev": true - }, - "node_modules/symbol-tree": { - "version": "3.2.4", - "resolved": "https://registry.npmjs.org/symbol-tree/-/symbol-tree-3.2.4.tgz", - "integrity": "sha512-9QNk5KwDF+Bvz+PyObkmSYjI5ksVUYtjW7AU22r2NKcfLJcXp96hkDWU3+XndOsUb+AQ9QhfzfCT2O+CNWT5Tw==", - "dev": true - }, - "node_modules/table": { - "version": "6.0.7", - "resolved": "https://registry.npmjs.org/table/-/table-6.0.7.tgz", - "integrity": "sha512-rxZevLGTUzWna/qBLObOe16kB2RTnnbhciwgPbMMlazz1yZGVEgnZK762xyVdVznhqxrfCeBMmMkgOOaPwjH7g==", - "dev": true, - "dependencies": { - "ajv": "^7.0.2", - "lodash": "^4.17.20", - "slice-ansi": "^4.0.0", - "string-width": "^4.2.0" - }, - "engines": { - "node": ">=10.0.0" - } - }, - "node_modules/table/node_modules/ajv": { - "version": "7.2.4", - "resolved": "https://registry.npmjs.org/ajv/-/ajv-7.2.4.tgz", - "integrity": "sha512-nBeQgg/ZZA3u3SYxyaDvpvDtgZ/EZPF547ARgZBrG9Bhu1vKDwAIjtIf+sDtJUKa2zOcEbmRLBRSyMraS/Oy1A==", - "dev": true, - "dependencies": { - "fast-deep-equal": "^3.1.1", - "json-schema-traverse": "^1.0.0", - "require-from-string": "^2.0.2", - "uri-js": "^4.2.2" - }, - "funding": { - "type": "github", - "url": "https://github.com/sponsors/epoberezkin" - } - }, - "node_modules/table/node_modules/ansi-regex": { - "version": "5.0.1", - "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-5.0.1.tgz", - "integrity": "sha512-quJQXlTSUGL2LH9SUXo8VwsY4soanhgo6LNSm84E1LBcE8s3O0wpdiRzyR9z/ZZJMlMWv37qOOb9pdJlMUEKFQ==", - "dev": true, - "engines": { - "node": ">=8" - } - }, - "node_modules/table/node_modules/emoji-regex": { - "version": "8.0.0", - "resolved": "https://registry.npmjs.org/emoji-regex/-/emoji-regex-8.0.0.tgz", - "integrity": "sha512-MSjYzcWNOA0ewAHpz0MxpYFvwg6yjy1NG3xteoqz644VCo/RPgnr1/GGt+ic3iJTzQ8Eu3TdM14SawnVUmGE6A==", - "dev": true - }, - "node_modules/table/node_modules/fast-deep-equal": { - "version": "3.1.3", - "resolved": "https://registry.npmjs.org/fast-deep-equal/-/fast-deep-equal-3.1.3.tgz", - "integrity": "sha512-f3qQ9oQy9j2AhBe/H9VC91wLmKBCCU/gDOnKNAYG5hswO7BLKj09Hc5HYNz9cGI++xlpDCIgDaitVs03ATR84Q==", - "dev": true - }, - "node_modules/table/node_modules/is-fullwidth-code-point": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/is-fullwidth-code-point/-/is-fullwidth-code-point-3.0.0.tgz", - "integrity": "sha512-zymm5+u+sCsSWyD9qNaejV3DFvhCKclKdizYaJUuHA83RLjb7nSuGnddCHGv0hk+KY7BMAlsWeK4Ueg6EV6XQg==", - "dev": true, - "engines": { - "node": ">=8" - } - }, - "node_modules/table/node_modules/json-schema-traverse": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/json-schema-traverse/-/json-schema-traverse-1.0.0.tgz", - "integrity": "sha512-NM8/P9n3XjXhIZn1lLhkFaACTOURQXjWhV4BA/RnOv8xvgqtqpAX9IO4mRQxSx1Rlo4tqzeqb0sOlruaOy3dug==", - "dev": true - }, - "node_modules/table/node_modules/string-width": { - "version": "4.2.2", - "resolved": "https://registry.npmjs.org/string-width/-/string-width-4.2.2.tgz", - "integrity": "sha512-XBJbT3N4JhVumXE0eoLU9DCjcaF92KLNqTmFCnG1pf8duUxFGwtP6AD6nkjw9a3IdiRtL3E2w3JDiE/xi3vOeA==", - "dev": true, - "dependencies": { - "emoji-regex": "^8.0.0", - "is-fullwidth-code-point": "^3.0.0", - "strip-ansi": "^6.0.0" - }, - "engines": { - "node": ">=8" - } - }, - "node_modules/table/node_modules/strip-ansi": { - "version": "6.0.0", - "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-6.0.0.tgz", - "integrity": "sha512-AuvKTrTfQNYNIctbR1K/YGTR1756GycPsg7b9bdV9Duqur4gv6aKqHXah67Z8ImS7WEz5QVcOtlfW2rZEugt6w==", - "dev": true, - "dependencies": { - "ansi-regex": "^5.0.0" - }, - "engines": { - "node": ">=8" - } - }, - "node_modules/taffydb": { - "version": "2.6.2", - "resolved": "https://registry.npmjs.org/taffydb/-/taffydb-2.6.2.tgz", - "integrity": "sha1-fLy2S1oUG2ou/CxdLGe04VCyomg=", - "dev": true - }, - "node_modules/terser": { - "version": "5.14.2", - "resolved": "https://registry.npmjs.org/terser/-/terser-5.14.2.tgz", - "integrity": "sha512-oL0rGeM/WFQCUd0y2QrWxYnq7tfSuKBiqTjRPWrRgB46WD/kiwHwF8T23z78H6Q6kGCuuHcPB+KULHRdxvVGQA==", - "dev": true, - "dependencies": { - "@jridgewell/source-map": "^0.3.2", - "acorn": "^8.5.0", - "commander": "^2.20.0", - "source-map-support": "~0.5.20" - }, - "bin": { - "terser": "bin/terser" - }, - "engines": { - "node": ">=10" - } - }, - "node_modules/terser/node_modules/commander": { - "version": "2.20.3", - "resolved": "https://registry.npmjs.org/commander/-/commander-2.20.3.tgz", - "integrity": "sha512-GpVkmM8vF2vQUkj2LvZmD35JxeJOLCwJ9cUkugyk2nuhbv3+mJvpLYYt+0+USMxE+oj+ey/lJEnhZw75x/OMcQ==", - "dev": true - }, - "node_modules/text-table": { - "version": "0.2.0", - "resolved": "https://registry.npmjs.org/text-table/-/text-table-0.2.0.tgz", - "integrity": "sha1-f17oI66AUgfACvLfSoTsP8+lcLQ=", - "dev": true - }, - "node_modules/textextensions": { - "version": "2.4.0", - "resolved": "https://registry.npmjs.org/textextensions/-/textextensions-2.4.0.tgz", - "integrity": "sha512-qftQXnX1DzpSV8EddtHIT0eDDEiBF8ywhFYR2lI9xrGtxqKN+CvLXhACeCIGbCpQfxxERbrkZEFb8cZcDKbVZA==", - "dev": true, - "engines": { - "node": ">=0.8" - } - }, - "node_modules/through2": { - "version": "2.0.5", - "resolved": "https://registry.npmjs.org/through2/-/through2-2.0.5.tgz", - "integrity": "sha512-/mrRod8xqpA+IHSLyGCQ2s8SPHiCDEeQJSep1jqLYeEUClOFG2Qsh+4FU6G9VeqpZnGW/Su8LQGc4YKni5rYSQ==", - "dev": true, - "dependencies": { - "readable-stream": "~2.3.6", - "xtend": "~4.0.1" - } - }, - "node_modules/through2-filter": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/through2-filter/-/through2-filter-3.0.0.tgz", - "integrity": "sha512-jaRjI2WxN3W1V8/FMZ9HKIBXixtiqs3SQSX4/YGIiP3gL6djW48VoZq9tDqeCWs3MT8YY5wb/zli8VW8snY1CA==", - "dev": true, - "dependencies": { - "through2": "~2.0.0", - "xtend": "~4.0.0" - } - }, - "node_modules/time-stamp": { - "version": "1.1.0", - "resolved": "https://registry.npmjs.org/time-stamp/-/time-stamp-1.1.0.tgz", - "integrity": "sha1-dkpaEa9QVhkhsTPztE5hhofg9cM=", - "dev": true, - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/tmp": { - "version": "0.1.0", - "resolved": "https://registry.npmjs.org/tmp/-/tmp-0.1.0.tgz", - "integrity": "sha512-J7Z2K08jbGcdA1kkQpJSqLF6T0tdQqpR2pnSUXsIchbPdTI9v3e85cLW0d6WDhwuAleOV71j2xWs8qMPfK7nKw==", - "dev": true, - "dependencies": { - "rimraf": "^2.6.3" - }, - "engines": { - "node": ">=6" - } - }, - "node_modules/to-absolute-glob": { - "version": "2.0.2", - "resolved": "https://registry.npmjs.org/to-absolute-glob/-/to-absolute-glob-2.0.2.tgz", - "integrity": "sha1-GGX0PZ50sIItufFFt4z/fQ98hJs=", - "dev": true, - "dependencies": { - "is-absolute": "^1.0.0", - "is-negated-glob": "^1.0.0" - }, - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/to-object-path": { - "version": "0.3.0", - "resolved": "https://registry.npmjs.org/to-object-path/-/to-object-path-0.3.0.tgz", - "integrity": "sha1-KXWIt7Dn4KwI4E5nL4XB9JmeF68=", - "dev": true, - "dependencies": { - "kind-of": "^3.0.2" - }, - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/to-object-path/node_modules/kind-of": { - "version": "3.2.2", - "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-3.2.2.tgz", - "integrity": "sha1-MeohpzS6ubuw8yRm2JOupR5KPGQ=", - "dev": true, - "dependencies": { - "is-buffer": "^1.1.5" - }, - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/to-regex": { - "version": "3.0.2", - "resolved": "https://registry.npmjs.org/to-regex/-/to-regex-3.0.2.tgz", - "integrity": "sha512-FWtleNAtZ/Ki2qtqej2CXTOayOH9bHDQF+Q48VpWyDXjbYxA4Yz8iDB31zXOBUlOHHKidDbqGVrTUvQMPmBGBw==", - "dev": true, - "dependencies": { - "define-property": "^2.0.2", - "extend-shallow": "^3.0.2", - "regex-not": "^1.0.2", - "safe-regex": "^1.1.0" - }, - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/to-regex-range": { - "version": "2.1.1", - "resolved": "https://registry.npmjs.org/to-regex-range/-/to-regex-range-2.1.1.tgz", - "integrity": "sha1-fIDBe53+vlmeJzZ+DU3VWQFB2zg=", - "dev": true, - "dependencies": { - "is-number": "^3.0.0", - "repeat-string": "^1.6.1" - }, - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/to-through": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/to-through/-/to-through-2.0.0.tgz", - "integrity": "sha1-/JKtq6ByZHvAtn1rA2ZKoZUJOvY=", - "dev": true, - "dependencies": { - "through2": "^2.0.3" - }, - "engines": { - "node": ">= 0.10" - } - }, - "node_modules/tough-cookie": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/tough-cookie/-/tough-cookie-4.0.0.tgz", - "integrity": "sha512-tHdtEpQCMrc1YLrMaqXXcj6AxhYi/xgit6mZu1+EDWUn+qhUf8wMQoFIy9NXuq23zAwtcB0t/MjACGR18pcRbg==", - "dev": true, - "dependencies": { - "psl": "^1.1.33", - "punycode": "^2.1.1", - "universalify": "^0.1.2" - }, - "engines": { - "node": ">=6" - } - }, - "node_modules/tr46": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/tr46/-/tr46-1.0.1.tgz", - "integrity": "sha1-qLE/1r/SSJUZZ0zN5VujaTtwbQk=", - "dev": true, - "dependencies": { - "punycode": "^2.1.0" - } - }, - "node_modules/transformation-matrix-js": { - "version": "2.7.6", - "resolved": "https://registry.npmjs.org/transformation-matrix-js/-/transformation-matrix-js-2.7.6.tgz", - "integrity": "sha512-1CxDIZmCQ3vA0GGnkdMQqxUXVm3xXAFmglPYRS1hr37LzSg22TC7QAWOT38OmdUvMEs/rqcnkFoAsqvzdiluDg==", - "deprecated": "Package no longer supported. Contact support@npmjs.com for more info.", - "dev": true - }, - "node_modules/trim-newlines": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/trim-newlines/-/trim-newlines-2.0.0.tgz", - "integrity": "sha1-tAPQuRvlDDMd/EuC7s6yLD3hbSA=", - "dev": true, - "engines": { - "node": ">=4" - } - }, - "node_modules/ttf2eot": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/ttf2eot/-/ttf2eot-2.0.0.tgz", - "integrity": "sha1-jmM3pYWr0WCKDISVirSDzmn2ZUs=", - "dev": true, - "dependencies": { - "argparse": "^1.0.6", - "microbuffer": "^1.0.0" - }, - "bin": { - "ttf2eot": "ttf2eot.js" - } - }, - "node_modules/ttf2woff": { - "version": "2.0.2", - "resolved": "https://registry.npmjs.org/ttf2woff/-/ttf2woff-2.0.2.tgz", - "integrity": "sha512-X68badwBjAy/+itU49scLjXUL094up+rHuYk+YAOTTBYSUMOmLZ7VyhZJuqQESj1gnyLAC2/5V8Euv+mExmyPA==", - "dev": true, - "dependencies": { - "argparse": "^1.0.6", - "microbuffer": "^1.0.0", - "pako": "^1.0.0" - }, - "bin": { - "ttf2woff": "ttf2woff.js" - } - }, - "node_modules/type": { - "version": "1.2.0", - "resolved": "https://registry.npmjs.org/type/-/type-1.2.0.tgz", - "integrity": "sha512-+5nt5AAniqsCnu2cEQQdpzCAh33kVx8n0VoFidKpB1dVVLAN/F+bgVOqOJqOnEnrhp222clB5p3vUlD+1QAnfg==", - "dev": true - }, - "node_modules/type-check": { - "version": "0.3.2", - "resolved": "https://registry.npmjs.org/type-check/-/type-check-0.3.2.tgz", - "integrity": "sha1-WITKtRLPHTVeP7eE8wgEsrUg23I=", - "dev": true, - "dependencies": { - "prelude-ls": "~1.1.2" - }, - "engines": { - "node": ">= 0.8.0" - } - }, - "node_modules/type-detect": { - "version": "4.0.8", - "resolved": "https://registry.npmjs.org/type-detect/-/type-detect-4.0.8.tgz", - "integrity": "sha512-0fr/mIH1dlO+x7TlcMy+bIDqKPsw/70tVyeHW787goQjhmqaZe10uwLujubK9q9Lg6Fiho1KUKDYz0Z7k7g5/g==", - "dev": true, - "engines": { - "node": ">=4" - } - }, - "node_modules/type-fest": { - "version": "0.8.1", - "resolved": "https://registry.npmjs.org/type-fest/-/type-fest-0.8.1.tgz", - "integrity": "sha512-4dbzIzqvjtgiM5rw1k5rEHtBANKmdudhGyBEajN01fEyhaAIhsoKNy6y7+IN93IfpFtwY9iqi7kD+xwKhQsNJA==", - "dev": true, - "engines": { - "node": ">=8" - } - }, - "node_modules/typedarray": { - "version": "0.0.6", - "resolved": "https://registry.npmjs.org/typedarray/-/typedarray-0.0.6.tgz", - "integrity": "sha1-hnrHTjhkGHsdPUfZlqeOxciDB3c=", - "dev": true - }, - "node_modules/uc.micro": { - "version": "1.0.6", - "resolved": "https://registry.npmjs.org/uc.micro/-/uc.micro-1.0.6.tgz", - "integrity": "sha512-8Y75pvTYkLJW2hWQHXxoqRgV7qb9B+9vFEtidML+7koHUFapnVJAZ6cKs+Qjz5Aw3aZWHMC6u0wJE3At+nSGwA==", - "dev": true - }, - "node_modules/unbox-primitive": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/unbox-primitive/-/unbox-primitive-1.0.1.tgz", - "integrity": "sha512-tZU/3NqK3dA5gpE1KtyiJUrEB0lxnGkMFHptJ7q6ewdZ8s12QrODwNbhIJStmJkd1QDXa1NRA8aF2A1zk/Ypyw==", - "dev": true, - "dependencies": { - "function-bind": "^1.1.1", - "has-bigints": "^1.0.1", - "has-symbols": "^1.0.2", - "which-boxed-primitive": "^1.0.2" - }, - "funding": { - "url": "https://github.com/sponsors/ljharb" - } - }, - "node_modules/unbox-primitive/node_modules/has-symbols": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/has-symbols/-/has-symbols-1.0.2.tgz", - "integrity": "sha512-chXa79rL/UC2KlX17jo3vRGz0azaWEx5tGqZg5pO3NUyEJVB17dMruQlzCCOfUvElghKcm5194+BCRvi2Rv/Gw==", - "dev": true, - "engines": { - "node": ">= 0.4" - }, - "funding": { - "url": "https://github.com/sponsors/ljharb" - } - }, - "node_modules/unc-path-regex": { - "version": "0.1.2", - "resolved": "https://registry.npmjs.org/unc-path-regex/-/unc-path-regex-0.1.2.tgz", - "integrity": "sha1-5z3T17DXxe2G+6xrCufYxqadUPo=", - "dev": true, - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/underscore": { - "version": "1.13.2", - "resolved": "https://registry.npmjs.org/underscore/-/underscore-1.13.2.tgz", - "integrity": "sha512-ekY1NhRzq0B08g4bGuX4wd2jZx5GnKz6mKSqFL4nqBlfyMGiG10gDFhDTMEfYmDL6Jy0FUIZp7wiRB+0BP7J2g==", - "dev": true - }, - "node_modules/undertaker": { - "version": "1.2.1", - "resolved": "https://registry.npmjs.org/undertaker/-/undertaker-1.2.1.tgz", - "integrity": "sha512-71WxIzDkgYk9ZS+spIB8iZXchFhAdEo2YU8xYqBYJ39DIUIqziK78ftm26eecoIY49X0J2MLhG4hr18Yp6/CMA==", - "dev": true, - "dependencies": { - "arr-flatten": "^1.0.1", - "arr-map": "^2.0.0", - "bach": "^1.0.0", - "collection-map": "^1.0.0", - "es6-weak-map": "^2.0.1", - "last-run": "^1.1.0", - "object.defaults": "^1.0.0", - "object.reduce": "^1.0.0", - "undertaker-registry": "^1.0.0" - }, - "engines": { - "node": ">= 0.10" - } - }, - "node_modules/undertaker-registry": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/undertaker-registry/-/undertaker-registry-1.0.1.tgz", - "integrity": "sha1-XkvaMI5KiirlhPm5pDWaSZglzFA=", - "dev": true, - "engines": { - "node": ">= 0.10" - } - }, - "node_modules/union": { - "version": "0.5.0", - "resolved": "https://registry.npmjs.org/union/-/union-0.5.0.tgz", - "integrity": "sha512-N6uOhuW6zO95P3Mel2I2zMsbsanvvtgn6jVqJv4vbVcz/JN0OkL9suomjQGmWtxJQXOCqUJvquc1sMeNz/IwlA==", - "dev": true, - "dependencies": { - "qs": "^6.4.0" - }, - "engines": { - "node": ">= 0.8.0" - } - }, - "node_modules/union-value": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/union-value/-/union-value-1.0.1.tgz", - "integrity": "sha512-tJfXmxMeWYnczCVs7XAEvIV7ieppALdyepWMkHkwciRpZraG/xwT+s2JN8+pr1+8jCRf80FFzvr+MpQeeoF4Xg==", - "dev": true, - "dependencies": { - "arr-union": "^3.1.0", - "get-value": "^2.0.6", - "is-extendable": "^0.1.1", - "set-value": "^2.0.1" - }, - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/unique-stream": { - "version": "2.3.1", - "resolved": "https://registry.npmjs.org/unique-stream/-/unique-stream-2.3.1.tgz", - "integrity": "sha512-2nY4TnBE70yoxHkDli7DMazpWiP7xMdCYqU2nBRO0UB+ZpEkGsSija7MvmvnZFUeC+mrgiUfcHSr3LmRFIg4+A==", - "dev": true, - "dependencies": { - "json-stable-stringify-without-jsonify": "^1.0.1", - "through2-filter": "^3.0.0" - } - }, - "node_modules/universal-url": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/universal-url/-/universal-url-2.0.0.tgz", - "integrity": "sha512-3DLtXdm/G1LQMCnPj+Aw7uDoleQttNHp2g5FnNQKR6cP6taNWS1b/Ehjjx4PVyvejKi3TJyu8iBraKM4q3JQPg==", - "dev": true, - "dependencies": { - "hasurl": "^1.0.0", - "whatwg-url": "^7.0.0" - }, - "engines": { - "node": ">= 6" - } - }, - "node_modules/universal-user-agent": { - "version": "4.0.1", - "resolved": "https://registry.npmjs.org/universal-user-agent/-/universal-user-agent-4.0.1.tgz", - "integrity": "sha512-LnST3ebHwVL2aNe4mejI9IQh2HfZ1RLo8Io2HugSif8ekzD1TlWpHpColOB/eh8JHMLkGH3Akqf040I+4ylNxg==", - "dev": true, - "dependencies": { - "os-name": "^3.1.0" - } - }, - "node_modules/universalify": { - "version": "0.1.2", - "resolved": "https://registry.npmjs.org/universalify/-/universalify-0.1.2.tgz", - "integrity": "sha512-rBJeI5CXAlmy1pV+617WB9J63U6XcazHHF2f2dbJix4XzpUF0RS3Zbj0FGIOCAva5P/d/GBOYaACQ1w+0azUkg==", - "dev": true, - "engines": { - "node": ">= 4.0.0" - } - }, - "node_modules/unset-value": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/unset-value/-/unset-value-1.0.0.tgz", - "integrity": "sha1-g3aHP30jNRef+x5vw6jtDfyKtVk=", - "dev": true, - "dependencies": { - "has-value": "^0.3.1", - "isobject": "^3.0.0" - }, - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/unset-value/node_modules/has-value": { - "version": "0.3.1", - "resolved": "https://registry.npmjs.org/has-value/-/has-value-0.3.1.tgz", - "integrity": "sha1-ex9YutpiyoJ+wKIHgCVlSEWZXh8=", - "dev": true, - "dependencies": { - "get-value": "^2.0.3", - "has-values": "^0.1.4", - "isobject": "^2.0.0" - }, - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/unset-value/node_modules/has-value/node_modules/isobject": { - "version": "2.1.0", - "resolved": "https://registry.npmjs.org/isobject/-/isobject-2.1.0.tgz", - "integrity": "sha1-8GVWEJaj8dou9GJy+BXIQNh+DIk=", - "dev": true, - "dependencies": { - "isarray": "1.0.0" - }, - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/unset-value/node_modules/has-values": { - "version": "0.1.4", - "resolved": "https://registry.npmjs.org/has-values/-/has-values-0.1.4.tgz", - "integrity": "sha1-bWHeldkd/Km5oCCJrThL/49it3E=", - "dev": true, - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/upath": { - "version": "1.2.0", - "resolved": "https://registry.npmjs.org/upath/-/upath-1.2.0.tgz", - "integrity": "sha512-aZwGpamFO61g3OlfT7OQCHqhGnW43ieH9WZeP7QxN/G/jS4jfqUkZxoryvJgVPEcrl5NL/ggHsSmLMHuH64Lhg==", - "dev": true, - "engines": { - "node": ">=4", - "yarn": "*" - } - }, - "node_modules/uri-js": { - "version": "4.2.2", - "resolved": "https://registry.npmjs.org/uri-js/-/uri-js-4.2.2.tgz", - "integrity": "sha512-KY9Frmirql91X2Qgjry0Wd4Y+YTdrdZheS8TFwvkbLWf/G5KNJDCh6pKL5OZctEW4+0Baa5idK2ZQuELRwPznQ==", - "dev": true, - "dependencies": { - "punycode": "^2.1.0" - } - }, - "node_modules/urix": { - "version": "0.1.0", - "resolved": "https://registry.npmjs.org/urix/-/urix-0.1.0.tgz", - "integrity": "sha1-2pN/emLiH+wf0Y1Js1wpNQZ6bHI=", - "deprecated": "Please see https://github.com/lydell/urix#deprecated", - "dev": true - }, - "node_modules/url-join": { - "version": "2.0.5", - "resolved": "https://registry.npmjs.org/url-join/-/url-join-2.0.5.tgz", - "integrity": "sha1-WvIvGMBSoACkjXuCxenC4v7tpyg=", - "dev": true - }, - "node_modules/use": { - "version": "3.1.1", - "resolved": "https://registry.npmjs.org/use/-/use-3.1.1.tgz", - "integrity": "sha512-cwESVXlO3url9YWlFW/TA9cshCEhtu7IKJ/p5soJ/gGpj7vbvFrAY/eIioQ6Dw23KjZhYgiIo8HOs1nQ2vr/oQ==", - "dev": true, - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/util-deprecate": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/util-deprecate/-/util-deprecate-1.0.2.tgz", - "integrity": "sha1-RQ1Nyfpw3nMnYvvS1KKJgUGaDM8=", - "dev": true - }, - "node_modules/v8-compile-cache": { - "version": "2.3.0", - "resolved": "https://registry.npmjs.org/v8-compile-cache/-/v8-compile-cache-2.3.0.tgz", - "integrity": "sha512-l8lCEmLcLYZh4nbunNZvQCJc5pv7+RCwa8q/LdUx8u7lsWvPDKmpodJAJNwkAhJC//dFY48KuIEmjtd4RViDrA==", - "dev": true - }, - "node_modules/v8flags": { - "version": "3.1.3", - "resolved": "https://registry.npmjs.org/v8flags/-/v8flags-3.1.3.tgz", - "integrity": "sha512-amh9CCg3ZxkzQ48Mhcb8iX7xpAfYJgePHxWMQCBWECpOSqJUXgY26ncA61UTV0BkPqfhcy6mzwCIoP4ygxpW8w==", - "dev": true, - "dependencies": { - "homedir-polyfill": "^1.0.1" - }, - "engines": { - "node": ">= 0.10" - } - }, - "node_modules/validate-npm-package-license": { - "version": "3.0.4", - "resolved": "https://registry.npmjs.org/validate-npm-package-license/-/validate-npm-package-license-3.0.4.tgz", - "integrity": "sha512-DpKm2Ui/xN7/HQKCtpZxoRWBhZ9Z0kqtygG8XCgNQ8ZlDnxuQmWhj566j8fN4Cu3/JmbhsDo7fcAJq4s9h27Ew==", - "dev": true, - "dependencies": { - "spdx-correct": "^3.0.0", - "spdx-expression-parse": "^3.0.0" - } - }, - "node_modules/value-or-function": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/value-or-function/-/value-or-function-3.0.0.tgz", - "integrity": "sha1-HCQ6ULWVwb5Up1S/7OhWO5/42BM=", - "dev": true, - "engines": { - "node": ">= 0.10" - } - }, - "node_modules/varstream": { - "version": "0.3.2", - "resolved": "https://registry.npmjs.org/varstream/-/varstream-0.3.2.tgz", - "integrity": "sha1-GKxklHZfP/GjWtmkvgU77BiKXeE=", - "dev": true, - "dependencies": { - "readable-stream": "^1.0.33" - }, - "bin": { - "json2varstream": "cli/json2varstream.js", - "varstream2json": "cli/varstream2json.js" - }, - "engines": { - "node": ">=0.10.*" - } - }, - "node_modules/varstream/node_modules/isarray": { - "version": "0.0.1", - "resolved": "https://registry.npmjs.org/isarray/-/isarray-0.0.1.tgz", - "integrity": "sha1-ihis/Kmo9Bd+Cav8YDiTmwXR7t8=", - "dev": true - }, - "node_modules/varstream/node_modules/readable-stream": { - "version": "1.1.14", - "resolved": "https://registry.npmjs.org/readable-stream/-/readable-stream-1.1.14.tgz", - "integrity": "sha1-fPTFTvZI44EwhMY23SB54WbAgdk=", - "dev": true, - "dependencies": { - "core-util-is": "~1.0.0", - "inherits": "~2.0.1", - "isarray": "0.0.1", - "string_decoder": "~0.10.x" - } - }, - "node_modules/varstream/node_modules/string_decoder": { - "version": "0.10.31", - "resolved": "https://registry.npmjs.org/string_decoder/-/string_decoder-0.10.31.tgz", - "integrity": "sha1-YuIDvEF2bGwoyfyEMB2rHFMQ+pQ=", - "dev": true - }, - "node_modules/vinyl": { - "version": "2.2.0", - "resolved": "https://registry.npmjs.org/vinyl/-/vinyl-2.2.0.tgz", - "integrity": "sha512-MBH+yP0kC/GQ5GwBqrTPTzEfiiLjta7hTtvQtbxBgTeSXsmKQRQecjibMbxIXzVT3Y9KJK+drOz1/k+vsu8Nkg==", - "dev": true, - "dependencies": { - "clone": "^2.1.1", - "clone-buffer": "^1.0.0", - "clone-stats": "^1.0.0", - "cloneable-readable": "^1.0.0", - "remove-trailing-separator": "^1.0.1", - "replace-ext": "^1.0.0" - }, - "engines": { - "node": ">= 0.10" - } - }, - "node_modules/vinyl-fs": { - "version": "3.0.3", - "resolved": "https://registry.npmjs.org/vinyl-fs/-/vinyl-fs-3.0.3.tgz", - "integrity": "sha512-vIu34EkyNyJxmP0jscNzWBSygh7VWhqun6RmqVfXePrOwi9lhvRs//dOaGOTRUQr4tx7/zd26Tk5WeSVZitgng==", - "dev": true, - "dependencies": { - "fs-mkdirp-stream": "^1.0.0", - "glob-stream": "^6.1.0", - "graceful-fs": "^4.0.0", - "is-valid-glob": "^1.0.0", - "lazystream": "^1.0.0", - "lead": "^1.0.0", - "object.assign": "^4.0.4", - "pumpify": "^1.3.5", - "readable-stream": "^2.3.3", - "remove-bom-buffer": "^3.0.0", - "remove-bom-stream": "^1.2.0", - "resolve-options": "^1.1.0", - "through2": "^2.0.0", - "to-through": "^2.0.0", - "value-or-function": "^3.0.0", - "vinyl": "^2.0.0", - "vinyl-sourcemap": "^1.1.0" - }, - "engines": { - "node": ">= 0.10" - } - }, - "node_modules/vinyl-sourcemap": { - "version": "1.1.0", - "resolved": "https://registry.npmjs.org/vinyl-sourcemap/-/vinyl-sourcemap-1.1.0.tgz", - "integrity": "sha1-kqgAWTo4cDqM2xHYswCtS+Y7PhY=", - "dev": true, - "dependencies": { - "append-buffer": "^1.0.2", - "convert-source-map": "^1.5.0", - "graceful-fs": "^4.1.6", - "normalize-path": "^2.1.1", - "now-and-later": "^2.0.0", - "remove-bom-buffer": "^3.0.0", - "vinyl": "^2.0.0" - }, - "engines": { - "node": ">= 0.10" - } - }, - "node_modules/vinyl-sourcemaps-apply": { - "version": "0.2.1", - "resolved": "https://registry.npmjs.org/vinyl-sourcemaps-apply/-/vinyl-sourcemaps-apply-0.2.1.tgz", - "integrity": "sha1-q2VJ1h0XLCsbh75cUI0jnI74dwU=", - "dev": true, - "dependencies": { - "source-map": "^0.5.1" - } - }, - "node_modules/w3c-hr-time": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/w3c-hr-time/-/w3c-hr-time-1.0.2.tgz", - "integrity": "sha512-z8P5DvDNjKDoFIHK7q8r8lackT6l+jo/Ye3HOle7l9nICP9lf1Ci25fy9vHd0JOWewkIFzXIEig3TdKT7JQ5fQ==", - "dev": true, - "dependencies": { - "browser-process-hrtime": "^1.0.0" - } - }, - "node_modules/w3c-xmlserializer": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/w3c-xmlserializer/-/w3c-xmlserializer-2.0.0.tgz", - "integrity": "sha512-4tzD0mF8iSiMiNs30BiLO3EpfGLZUT2MSX/G+o7ZywDzliWQ3OPtTZ0PTC3B3ca1UAf4cJMHB+2Bf56EriJuRA==", - "dev": true, - "dependencies": { - "xml-name-validator": "^3.0.0" - }, - "engines": { - "node": ">=10" - } - }, - "node_modules/wawoff2": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/wawoff2/-/wawoff2-1.0.2.tgz", - "integrity": "sha512-qxuTwf5tAP/XojrRc6cmR0hGvqgD3XUxv2fzfzURKPDfE7AeHmtRuankVxdJ4DRdSKXaE5QlyJT49yBis2vb6Q==", - "dev": true, - "dependencies": { - "argparse": "^1.0.6" - }, - "bin": { - "woff2_compress.js": "bin/woff2_compress.js", - "woff2_decompress.js": "bin/woff2_decompress.js" - } - }, - "node_modules/web-streams-polyfill": { - "version": "3.2.0", - "resolved": "https://registry.npmjs.org/web-streams-polyfill/-/web-streams-polyfill-3.2.0.tgz", - "integrity": "sha512-EqPmREeOzttaLRm5HS7io98goBgZ7IVz79aDvqjD0kYXLtFZTc0T/U6wHTPKyIjb+MdN7DFIIX6hgdBEpWmfPA==", - "dev": true, - "engines": { - "node": ">= 8" - } - }, - "node_modules/webfont": { - "version": "9.0.0", - "resolved": "https://registry.npmjs.org/webfont/-/webfont-9.0.0.tgz", - "integrity": "sha512-Sn8KnTXroWAbBHYKUXCUq2rKwqbluupUd7krYqluT+kFGV4dvMuKXaL84Fm/Kfv+5rz2S81jNRvcyQ6ySBiC2Q==", - "dev": true, - "dependencies": { - "cosmiconfig": "^5.2.0", - "deepmerge": "^3.2.0", - "fs-extra": "^7.0.1", - "globby": "^9.2.0", - "meow": "^5.0.0", - "nunjucks": "^3.2.0", - "p-limit": "^2.2.0", - "resolve-from": "^5.0.0", - "svg2ttf": "^4.0.0", - "svgicons2svgfont": "^9.0.3", - "ttf2eot": "^2.0.0", - "ttf2woff": "^2.0.0", - "wawoff2": "^1.0.2", - "xml2js": "^0.4.17" - }, - "bin": { - "webfont": "dist/cli.js" - }, - "engines": { - "node": ">= 8.9.0" - } - }, - "node_modules/webfont/node_modules/globby": { - "version": "9.2.0", - "resolved": "https://registry.npmjs.org/globby/-/globby-9.2.0.tgz", - "integrity": "sha512-ollPHROa5mcxDEkwg6bPt3QbEf4pDQSNtd6JPL1YvOvAo/7/0VAm9TccUeoTmarjPw4pfUthSCqcyfNB1I3ZSg==", - "dev": true, - "dependencies": { - "@types/glob": "^7.1.1", - "array-union": "^1.0.2", - "dir-glob": "^2.2.2", - "fast-glob": "^2.2.6", - "glob": "^7.1.3", - "ignore": "^4.0.3", - "pify": "^4.0.1", - "slash": "^2.0.0" - }, - "engines": { - "node": ">=6" - } - }, - "node_modules/webfont/node_modules/pify": { - "version": "4.0.1", - "resolved": "https://registry.npmjs.org/pify/-/pify-4.0.1.tgz", - "integrity": "sha512-uB80kBFb/tfd68bVleG9T5GGsGPjJrLAUpR5PZIrhBnIaRTQRjqdJSsIKkOP6OAIFbj7GOrcudc5pNjZ+geV2g==", - "dev": true, - "engines": { - "node": ">=6" - } - }, - "node_modules/webidl-conversions": { - "version": "4.0.2", - "resolved": "https://registry.npmjs.org/webidl-conversions/-/webidl-conversions-4.0.2.tgz", - "integrity": "sha512-YQ+BmxuTgd6UXZW3+ICGfyqRyHXVlD5GtQr5+qjiNW7bF0cqrzX500HVXPBOvgXb5YnzDd+h0zqyv61KUD7+Sg==", - "dev": true - }, - "node_modules/whatwg-encoding": { - "version": "1.0.5", - "resolved": "https://registry.npmjs.org/whatwg-encoding/-/whatwg-encoding-1.0.5.tgz", - "integrity": "sha512-b5lim54JOPN9HtzvK9HFXvBma/rnfFeqsic0hSpjtDbVxR3dJKLc+KB4V6GgiGOvl7CY/KNh8rxSo9DKQrnUEw==", - "dev": true, - "dependencies": { - "iconv-lite": "0.4.24" - } - }, - "node_modules/whatwg-mimetype": { - "version": "2.3.0", - "resolved": "https://registry.npmjs.org/whatwg-mimetype/-/whatwg-mimetype-2.3.0.tgz", - "integrity": "sha512-M4yMwr6mAnQz76TbJm914+gPpB/nCwvZbJU28cUD6dR004SAxDLOOSUaB1JDRqLtaOV/vi0IC5lEAGFgrjGv/g==", - "dev": true - }, - "node_modules/whatwg-url": { - "version": "7.0.0", - "resolved": "https://registry.npmjs.org/whatwg-url/-/whatwg-url-7.0.0.tgz", - "integrity": "sha512-37GeVSIJ3kn1JgKyjiYNmSLP1yzbpb29jdmwBSgkD9h40/hyrR/OifpVUndji3tmwGgD8qpw7iQu3RSbCrBpsQ==", - "dev": true, - "dependencies": { - "lodash.sortby": "^4.7.0", - "tr46": "^1.0.1", - "webidl-conversions": "^4.0.2" - } - }, - "node_modules/which": { - "version": "1.3.1", - "resolved": "https://registry.npmjs.org/which/-/which-1.3.1.tgz", - "integrity": "sha512-HxJdYWq1MTIQbJ3nw0cqssHoTNU267KlrDuGZ1WYlxDStUtKUhOaJmh112/TZmHxxUfuJqPXSOm7tDyas0OSIQ==", - "dev": true, - "dependencies": { - "isexe": "^2.0.0" - }, - "bin": { - "which": "bin/which" - } - }, - "node_modules/which-boxed-primitive": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/which-boxed-primitive/-/which-boxed-primitive-1.0.2.tgz", - "integrity": "sha512-bwZdv0AKLpplFY2KZRX6TvyuN7ojjr7lwkg6ml0roIy9YeuSr7JS372qlNW18UQYzgYK9ziGcerWqZOmEn9VNg==", - "dev": true, - "dependencies": { - "is-bigint": "^1.0.1", - "is-boolean-object": "^1.1.0", - "is-number-object": "^1.0.4", - "is-string": "^1.0.5", - "is-symbol": "^1.0.3" - }, - "funding": { - "url": "https://github.com/sponsors/ljharb" - } - }, - "node_modules/which-boxed-primitive/node_modules/has-symbols": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/has-symbols/-/has-symbols-1.0.2.tgz", - "integrity": "sha512-chXa79rL/UC2KlX17jo3vRGz0azaWEx5tGqZg5pO3NUyEJVB17dMruQlzCCOfUvElghKcm5194+BCRvi2Rv/Gw==", - "dev": true, - "engines": { - "node": ">= 0.4" - }, - "funding": { - "url": "https://github.com/sponsors/ljharb" - } - }, - "node_modules/which-boxed-primitive/node_modules/is-symbol": { - "version": "1.0.4", - "resolved": "https://registry.npmjs.org/is-symbol/-/is-symbol-1.0.4.tgz", - "integrity": "sha512-C/CPBqKWnvdcxqIARxyOh4v1UUEOCHpgDa0WYgpKDFMszcrPcffg5uhwSgPCLD2WWxmq6isisz87tzT01tuGhg==", - "dev": true, - "dependencies": { - "has-symbols": "^1.0.2" - }, - "engines": { - "node": ">= 0.4" - }, - "funding": { - "url": "https://github.com/sponsors/ljharb" - } - }, - "node_modules/which-module": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/which-module/-/which-module-1.0.0.tgz", - "integrity": "sha1-u6Y8qGGUiZT/MHc2CJ47lgJsKk8=", - "dev": true - }, - "node_modules/windows-release": { - "version": "3.3.3", - "resolved": "https://registry.npmjs.org/windows-release/-/windows-release-3.3.3.tgz", - "integrity": "sha512-OSOGH1QYiW5yVor9TtmXKQvt2vjQqbYS+DqmsZw+r7xDwLXEeT3JGW0ZppFmHx4diyXmxt238KFR3N9jzevBRg==", - "dev": true, - "dependencies": { - "execa": "^1.0.0" - }, - "engines": { - "node": ">=6" - }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" - } - }, - "node_modules/word-wrap": { - "version": "1.2.3", - "resolved": "https://registry.npmjs.org/word-wrap/-/word-wrap-1.2.3.tgz", - "integrity": "sha512-Hz/mrNwitNRh/HUAtM/VT/5VH+ygD6DV7mYKZAtHOrbs8U7lvPS6xf7EJKMF0uW1KJCl0H701g3ZGus+muE5vQ==", - "dev": true, - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/workerpool": { - "version": "6.2.0", - "resolved": "https://registry.npmjs.org/workerpool/-/workerpool-6.2.0.tgz", - "integrity": "sha512-Rsk5qQHJ9eowMH28Jwhe8HEbmdYDX4lwoMWshiCXugjtHqMD9ZbiqSDLxcsfdqsETPzVUtX5s1Z5kStiIM6l4A==", - "dev": true - }, - "node_modules/wrap-ansi": { - "version": "2.1.0", - "resolved": "https://registry.npmjs.org/wrap-ansi/-/wrap-ansi-2.1.0.tgz", - "integrity": "sha1-2Pw9KE3QV5T+hJc8rs3Rz4JP3YU=", - "dev": true, - "dependencies": { - "string-width": "^1.0.1", - "strip-ansi": "^3.0.1" - }, - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/wrappy": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/wrappy/-/wrappy-1.0.2.tgz", - "integrity": "sha1-tSQ9jz7BqjXxNkYFvA0QNuMKtp8=", - "dev": true - }, - "node_modules/ws": { - "version": "7.5.5", - "resolved": "https://registry.npmjs.org/ws/-/ws-7.5.5.tgz", - "integrity": "sha512-BAkMFcAzl8as1G/hArkxOxq3G7pjUqQ3gzYbLL0/5zNkph70e+lCoxBGnm6AW1+/aiNeV4fnKqZ8m4GZewmH2w==", - "dev": true, - "engines": { - "node": ">=8.3.0" - }, - "peerDependencies": { - "bufferutil": "^4.0.1", - "utf-8-validate": "^5.0.2" - }, - "peerDependenciesMeta": { - "bufferutil": { - "optional": true - }, - "utf-8-validate": { - "optional": true - } - } - }, - "node_modules/xml-name-validator": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/xml-name-validator/-/xml-name-validator-3.0.0.tgz", - "integrity": "sha512-A5CUptxDsvxKJEU3yO6DuWBSJz/qizqzJKOMIfUJHETbBw/sFaDxgd6fxm1ewUaM0jZ444Fc5vC5ROYurg/4Pw==", - "dev": true - }, - "node_modules/xml2js": { - "version": "0.4.23", - "resolved": "https://registry.npmjs.org/xml2js/-/xml2js-0.4.23.tgz", - "integrity": "sha512-ySPiMjM0+pLDftHgXY4By0uswI3SPKLDw/i3UXbnO8M/p28zqexCUoPmQFrYD+/1BzhGJSs2i1ERWKJAtiLrug==", - "dev": true, - "dependencies": { - "sax": ">=0.6.0", - "xmlbuilder": "~11.0.0" - }, - "engines": { - "node": ">=4.0.0" - } - }, - "node_modules/xmlbuilder": { - "version": "11.0.1", - "resolved": "https://registry.npmjs.org/xmlbuilder/-/xmlbuilder-11.0.1.tgz", - "integrity": "sha512-fDlsI/kFEx7gLvbecc0/ohLG50fugQp8ryHzMTuW9vSa1GJ0XYWKnhsUx7oie3G98+r56aTQIUB4kht42R3JvA==", - "dev": true, - "engines": { - "node": ">=4.0" - } - }, - "node_modules/xmlchars": { - "version": "2.2.0", - "resolved": "https://registry.npmjs.org/xmlchars/-/xmlchars-2.2.0.tgz", - "integrity": "sha512-JZnDKK8B0RCDw84FNdDAIpZK+JuJw+s7Lz8nksI7SIuU3UXJJslUthsi+uWBUYOwPFwW7W7PRLRfUKpxjtjFCw==", - "dev": true - }, - "node_modules/xmlcreate": { - "version": "2.0.4", - "resolved": "https://registry.npmjs.org/xmlcreate/-/xmlcreate-2.0.4.tgz", - "integrity": "sha512-nquOebG4sngPmGPICTS5EnxqhKbCmz5Ox5hsszI2T6U5qdrJizBc+0ilYSEjTSzU0yZcmvppztXe/5Al5fUwdg==", - "dev": true - }, - "node_modules/xmldom": { - "version": "0.1.31", - "resolved": "https://registry.npmjs.org/xmldom/-/xmldom-0.1.31.tgz", - "integrity": "sha512-yS2uJflVQs6n+CyjHoaBmVSqIDevTAWrzMmjG1Gc7h1qQ7uVozNhEPJAwZXWyGQ/Gafo3fCwrcaokezLPupVyQ==", - "deprecated": "Deprecated due to CVE-2021-21366 resolved in 0.5.0", - "dev": true, - "engines": { - "node": ">=0.1" - } - }, - "node_modules/xtend": { - "version": "4.0.1", - "resolved": "https://registry.npmjs.org/xtend/-/xtend-4.0.1.tgz", - "integrity": "sha1-pcbVMr5lbiPbgg77lDofBJmNY68=", - "dev": true, - "engines": { - "node": ">=0.4" - } - }, - "node_modules/y18n": { - "version": "3.2.2", - "resolved": "https://registry.npmjs.org/y18n/-/y18n-3.2.2.tgz", - "integrity": "sha512-uGZHXkHnhF0XeeAPgnKfPv1bgKAYyVvmNL1xlKsPYZPaIHxGti2hHqvOCQv71XMsLxu1QjergkqogUnms5D3YQ==", - "dev": true - }, - "node_modules/yallist": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/yallist/-/yallist-4.0.0.tgz", - "integrity": "sha512-3wdGidZyq5PB084XLES5TpOSRA3wjXAlIWMhum2kRcv/41Sn2emQ0dycQW4uZXLejwKvg6EsvbdlVL+FYEct7A==", - "dev": true - }, - "node_modules/yargs": { - "version": "13.3.2", - "resolved": "https://registry.npmjs.org/yargs/-/yargs-13.3.2.tgz", - "integrity": "sha512-AX3Zw5iPruN5ie6xGRIDgqkT+ZhnRlZMLMHAs8tg7nRruy2Nb+i5o9bwghAogtM08q1dpr2LVoS8KSTMYpWXUw==", - "dev": true, - "dependencies": { - "cliui": "^5.0.0", - "find-up": "^3.0.0", - "get-caller-file": "^2.0.1", - "require-directory": "^2.1.1", - "require-main-filename": "^2.0.0", - "set-blocking": "^2.0.0", - "string-width": "^3.0.0", - "which-module": "^2.0.0", - "y18n": "^4.0.0", - "yargs-parser": "^13.1.2" - } - }, - "node_modules/yargs-parser": { - "version": "5.0.1", - "resolved": "https://registry.npmjs.org/yargs-parser/-/yargs-parser-5.0.1.tgz", - "integrity": "sha512-wpav5XYiddjXxirPoCTUPbqM0PXvJ9hiBMvuJgInvo4/lAOTZzUprArw17q2O1P2+GHhbBr18/iQwjL5Z9BqfA==", - "dev": true, - "dependencies": { - "camelcase": "^3.0.0", - "object.assign": "^4.1.0" - } - }, - "node_modules/yargs-unparser": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/yargs-unparser/-/yargs-unparser-2.0.0.tgz", - "integrity": "sha512-7pRTIA9Qc1caZ0bZ6RYRGbHJthJWuakf+WmHK0rVeLkNrrGhfoabBNdue6kdINI6r4if7ocq9aD/n7xwKOdzOA==", - "dev": true, - "dependencies": { - "camelcase": "^6.0.0", - "decamelize": "^4.0.0", - "flat": "^5.0.2", - "is-plain-obj": "^2.1.0" - }, - "engines": { - "node": ">=10" - } - }, - "node_modules/yargs-unparser/node_modules/camelcase": { - "version": "6.3.0", - "resolved": "https://registry.npmjs.org/camelcase/-/camelcase-6.3.0.tgz", - "integrity": "sha512-Gmy6FhYlCY7uOElZUSbxo2UCDH8owEk996gkbrpsgGtrJLM3J7jGxl9Ic7Qwwj4ivOE5AWZWRMecDdF7hqGjFA==", - "dev": true, - "engines": { - "node": ">=10" - }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" - } - }, - "node_modules/yargs-unparser/node_modules/decamelize": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/decamelize/-/decamelize-4.0.0.tgz", - "integrity": "sha512-9iE1PgSik9HeIIw2JO94IidnE3eBoQrFJ3w7sFuzSX4DpmZ3v5sZpUiV5Swcf6mQEF+Y0ru8Neo+p+nyh2J+hQ==", - "dev": true, - "engines": { - "node": ">=10" - }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" - } - }, - "node_modules/yargs-unparser/node_modules/is-plain-obj": { - "version": "2.1.0", - "resolved": "https://registry.npmjs.org/is-plain-obj/-/is-plain-obj-2.1.0.tgz", - "integrity": "sha512-YWnfyRwxL/+SsrWYfOpUtz5b3YD+nyfkHvjbcanzk8zgyO4ASD67uVMRt8k5bM4lLMDnXfriRhOpemw+NfT1eA==", - "dev": true, - "engines": { - "node": ">=8" - } - }, - "node_modules/yargs/node_modules/ansi-regex": { - "version": "4.1.1", - "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-4.1.1.tgz", - "integrity": "sha512-ILlv4k/3f6vfQ4OoP2AGvirOktlQ98ZEL1k9FaQjxa3L1abBgbuTDAdPOpvbGncC0BTVQrl+OM8xZGK6tWXt7g==", - "dev": true, - "engines": { - "node": ">=6" - } - }, - "node_modules/yargs/node_modules/camelcase": { - "version": "5.3.1", - "resolved": "https://registry.npmjs.org/camelcase/-/camelcase-5.3.1.tgz", - "integrity": "sha512-L28STB170nwWS63UjtlEOE3dldQApaJXZkOI1uMFfzf3rRuPegHaHesyee+YxQ+W6SvRDQV6UrdOdRiR153wJg==", - "dev": true, - "engines": { - "node": ">=6" - } - }, - "node_modules/yargs/node_modules/cliui": { - "version": "5.0.0", - "resolved": "https://registry.npmjs.org/cliui/-/cliui-5.0.0.tgz", - "integrity": "sha512-PYeGSEmmHM6zvoef2w8TPzlrnNpXIjTipYK780YswmIP9vjxmd6Y2a3CB2Ks6/AU8NHjZugXvo8w3oWM2qnwXA==", - "dev": true, - "dependencies": { - "string-width": "^3.1.0", - "strip-ansi": "^5.2.0", - "wrap-ansi": "^5.1.0" - } - }, - "node_modules/yargs/node_modules/find-up": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/find-up/-/find-up-3.0.0.tgz", - "integrity": "sha512-1yD6RmLI1XBfxugvORwlck6f75tYL+iR0jqwsOrOxMZyGYqUuDhJ0l4AXdO1iX/FTs9cBAMEk1gWSEx1kSbylg==", - "dev": true, - "dependencies": { - "locate-path": "^3.0.0" - }, - "engines": { - "node": ">=6" - } - }, - "node_modules/yargs/node_modules/get-caller-file": { - "version": "2.0.5", - "resolved": "https://registry.npmjs.org/get-caller-file/-/get-caller-file-2.0.5.tgz", - "integrity": "sha512-DyFP3BM/3YHTQOCUL/w0OZHR0lpKeGrxotcHWcqNEdnltqFwXVfhEBQ94eIo34AfQpo0rGki4cyIiftY06h2Fg==", - "dev": true, - "engines": { - "node": "6.* || 8.* || >= 10.*" - } - }, - "node_modules/yargs/node_modules/is-fullwidth-code-point": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/is-fullwidth-code-point/-/is-fullwidth-code-point-2.0.0.tgz", - "integrity": "sha1-o7MKXE8ZkYMWeqq5O+764937ZU8=", - "dev": true, - "engines": { - "node": ">=4" - } - }, - "node_modules/yargs/node_modules/require-main-filename": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/require-main-filename/-/require-main-filename-2.0.0.tgz", - "integrity": "sha512-NKN5kMDylKuldxYLSUfrbo5Tuzh4hd+2E8NPPX02mZtn1VuREQToYe/ZdlJy+J3uCpfaiGF05e7B8W0iXbQHmg==", - "dev": true - }, - "node_modules/yargs/node_modules/string-width": { - "version": "3.1.0", - "resolved": "https://registry.npmjs.org/string-width/-/string-width-3.1.0.tgz", - "integrity": "sha512-vafcv6KjVZKSgz06oM/H6GDBrAtz8vdhQakGjFIvNrHA6y3HCF1CInLy+QLq8dTJPQ1b+KDUqDFctkdRW44e1w==", - "dev": true, - "dependencies": { - "emoji-regex": "^7.0.1", - "is-fullwidth-code-point": "^2.0.0", - "strip-ansi": "^5.1.0" - }, - "engines": { - "node": ">=6" - } - }, - "node_modules/yargs/node_modules/strip-ansi": { - "version": "5.2.0", - "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-5.2.0.tgz", - "integrity": "sha512-DuRs1gKbBqsMKIZlrffwlug8MHkcnpjs5VPmL1PAh+mA30U0DTotfDZ0d2UUsXpPmPmMMJ6W773MaA3J+lbiWA==", - "dev": true, - "dependencies": { - "ansi-regex": "^4.1.0" - }, - "engines": { - "node": ">=6" - } - }, - "node_modules/yargs/node_modules/which-module": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/which-module/-/which-module-2.0.0.tgz", - "integrity": "sha1-2e8H3Od7mQK4o6j6SzHD4/fm6Ho=", - "dev": true - }, - "node_modules/yargs/node_modules/wrap-ansi": { - "version": "5.1.0", - "resolved": "https://registry.npmjs.org/wrap-ansi/-/wrap-ansi-5.1.0.tgz", - "integrity": "sha512-QC1/iN/2/RPVJ5jYK8BGttj5z83LmSKmvbvrXPNCLZSEb32KKVDJDl/MOt2N01qU2H/FkzEa9PKto1BqDjtd7Q==", - "dev": true, - "dependencies": { - "ansi-styles": "^3.2.0", - "string-width": "^3.0.0", - "strip-ansi": "^5.0.0" - }, - "engines": { - "node": ">=6" - } - }, - "node_modules/yargs/node_modules/y18n": { - "version": "4.0.1", - "resolved": "https://registry.npmjs.org/y18n/-/y18n-4.0.1.tgz", - "integrity": "sha512-wNcy4NvjMYL8gogWWYAO7ZFWFfHcbdbE57tZO8e4cbpj8tfUcwrwqSl3ad8HxpYWCdXcJUCeKKZS62Av1affwQ==", - "dev": true - }, - "node_modules/yargs/node_modules/yargs-parser": { - "version": "13.1.2", - "resolved": "https://registry.npmjs.org/yargs-parser/-/yargs-parser-13.1.2.tgz", - "integrity": "sha512-3lbsNRf/j+A4QuSZfDRA7HRSfWrzO0YjqTJd5kjAq37Zep1CEgaYmrH9Q3GwPiB9cHyd1Y1UwggGhJGoxipbzg==", - "dev": true, - "dependencies": { - "camelcase": "^5.0.0", - "decamelize": "^1.2.0" - } - }, - "node_modules/yocto-queue": { - "version": "0.1.0", - "resolved": "https://registry.npmjs.org/yocto-queue/-/yocto-queue-0.1.0.tgz", - "integrity": "sha512-rVksvsnNCdJ/ohGc6xgPwyN8eheCxsiLM8mxuE/t/mOVqJewPuO1miLpTHQiRgTKCLexL4MeAFVagts7HmNZ2Q==", - "dev": true, - "engines": { - "node": ">=10" - }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" - } - } - }, - "dependencies": { - "@babel/code-frame": { - "version": "7.12.11", - "resolved": "https://registry.npmjs.org/@babel/code-frame/-/code-frame-7.12.11.tgz", - "integrity": "sha512-Zt1yodBx1UcyiePMSkWnU4hPqhwq7hGi2nFL1LeA3EUl+q2LQx16MISgJ0+z7dnmgvP9QtIleuETGOiOH1RcIw==", - "dev": true, - "requires": { - "@babel/highlight": "^7.10.4" - } - }, - "@babel/helper-validator-identifier": { - "version": "7.12.11", - "resolved": "https://registry.npmjs.org/@babel/helper-validator-identifier/-/helper-validator-identifier-7.12.11.tgz", - "integrity": "sha512-np/lG3uARFybkoHokJUmf1QfEvRVCPbmQeUQpKow5cQ3xWrV9i3rUHodKDJPQfTVX61qKi+UdYk8kik84n7XOw==", - "dev": true - }, - "@babel/highlight": { - "version": "7.13.10", - "resolved": "https://registry.npmjs.org/@babel/highlight/-/highlight-7.13.10.tgz", - "integrity": "sha512-5aPpe5XQPzflQrFwL1/QoeHkP2MsA4JCntcXHRhEsdsfPVkvPi2w7Qix4iV7t5S/oC9OodGrggd8aco1g3SZFg==", - "dev": true, - "requires": { - "@babel/helper-validator-identifier": "^7.12.11", - "chalk": "^2.0.0", - "js-tokens": "^4.0.0" - } - }, - "@babel/parser": { - "version": "7.10.3", - "resolved": "https://registry.npmjs.org/@babel/parser/-/parser-7.10.3.tgz", - "integrity": "sha512-oJtNJCMFdIMwXGmx+KxuaD7i3b8uS7TTFYW/FNG2BT8m+fmGHoiPYoH0Pe3gya07WuFmM5FCDIr1x0irkD/hyA==", - "dev": true - }, - "@babel/polyfill": { - "version": "7.12.1", - "resolved": "https://registry.npmjs.org/@babel/polyfill/-/polyfill-7.12.1.tgz", - "integrity": "sha512-X0pi0V6gxLi6lFZpGmeNa4zxtwEmCs42isWLNjZZDE0Y8yVfgu0T2OAHlzBbdYlqbW/YXVvoBHpATEM+goCj8g==", - "dev": true, - "requires": { - "core-js": "^2.6.5", - "regenerator-runtime": "^0.13.4" - } - }, - "@eslint/eslintrc": { - "version": "0.4.0", - "resolved": "https://registry.npmjs.org/@eslint/eslintrc/-/eslintrc-0.4.0.tgz", - "integrity": "sha512-2ZPCc+uNbjV5ERJr+aKSPRwZgKd2z11x0EgLvb1PURmUrn9QNRXFqje0Ldq454PfAVyaJYyrDvvIKSFP4NnBog==", - "dev": true, - "requires": { - "ajv": "^6.12.4", - "debug": "^4.1.1", - "espree": "^7.3.0", - "globals": "^12.1.0", - "ignore": "^4.0.6", - "import-fresh": "^3.2.1", - "js-yaml": "^3.13.1", - "minimatch": "^3.0.4", - "strip-json-comments": "^3.1.1" - }, - "dependencies": { - "debug": { - "version": "4.3.1", - "resolved": "https://registry.npmjs.org/debug/-/debug-4.3.1.tgz", - "integrity": "sha512-doEwdvm4PCeK4K3RQN2ZC2BYUBaxwLARCqZmMjtF8a51J2Rb0xpVloFRnCODwqjpwnAoao4pelN8l3RJdv3gRQ==", - "dev": true, - "requires": { - "ms": "2.1.2" - } - }, - "globals": { - "version": "12.4.0", - "resolved": "https://registry.npmjs.org/globals/-/globals-12.4.0.tgz", - "integrity": "sha512-BWICuzzDvDoH54NHKCseDanAhE3CeDorgDL5MT6LMXXj2WCnd9UC2szdk4AWLfjdgNBCXLUanXYcpBBKOSWGwg==", - "dev": true, - "requires": { - "type-fest": "^0.8.1" - } - }, - "import-fresh": { - "version": "3.3.0", - "resolved": "https://registry.npmjs.org/import-fresh/-/import-fresh-3.3.0.tgz", - "integrity": "sha512-veYYhQa+D1QBKznvhUHxb8faxlrwUnxseDAbAp457E0wLNio2bOSKnjYDhMj+YiAq61xrMGhQk9iXVk5FzgQMw==", - "dev": true, - "requires": { - "parent-module": "^1.0.0", - "resolve-from": "^4.0.0" - } - }, - "ms": { - "version": "2.1.2", - "resolved": "https://registry.npmjs.org/ms/-/ms-2.1.2.tgz", - "integrity": "sha512-sGkPx+VjMtmA6MX27oA4FBFELFCZZ4S4XqeGOXCv68tT+jb3vk/RyaKWP0PTKyWtmLSM0b+adUTEvbs1PEaH2w==", - "dev": true - }, - "resolve-from": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/resolve-from/-/resolve-from-4.0.0.tgz", - "integrity": "sha512-pb/MYmXstAkysRFx8piNI1tGFNQIFA3vkE3Gq4EuA1dF6gHp/+vgZqsCGJapvy8N3Q+4o7FwvquPJcnZ7RYy4g==", - "dev": true - } - } - }, - "@jridgewell/gen-mapping": { - "version": "0.3.2", - "resolved": "https://registry.npmjs.org/@jridgewell/gen-mapping/-/gen-mapping-0.3.2.tgz", - "integrity": "sha512-mh65xKQAzI6iBcFzwv28KVWSmCkdRBWoOh+bYQGW3+6OZvbbN3TqMGo5hqYxQniRcH9F2VZIoJCm4pa3BPDK/A==", - "dev": true, - "requires": { - "@jridgewell/set-array": "^1.0.1", - "@jridgewell/sourcemap-codec": "^1.4.10", - "@jridgewell/trace-mapping": "^0.3.9" - } - }, - "@jridgewell/resolve-uri": { - "version": "3.1.0", - "resolved": "https://registry.npmjs.org/@jridgewell/resolve-uri/-/resolve-uri-3.1.0.tgz", - "integrity": "sha512-F2msla3tad+Mfht5cJq7LSXcdudKTWCVYUgw6pLFOOHSTtZlj6SWNYAp+AhuqLmWdBO2X5hPrLcu8cVP8fy28w==", - "dev": true - }, - "@jridgewell/set-array": { - "version": "1.1.2", - "resolved": "https://registry.npmjs.org/@jridgewell/set-array/-/set-array-1.1.2.tgz", - "integrity": "sha512-xnkseuNADM0gt2bs+BvhO0p78Mk762YnZdsuzFV018NoG1Sj1SCQvpSqa7XUaTam5vAGasABV9qXASMKnFMwMw==", - "dev": true - }, - "@jridgewell/source-map": { - "version": "0.3.2", - "resolved": "https://registry.npmjs.org/@jridgewell/source-map/-/source-map-0.3.2.tgz", - "integrity": "sha512-m7O9o2uR8k2ObDysZYzdfhb08VuEml5oWGiosa1VdaPZ/A6QyPkAJuwN0Q1lhULOf6B7MtQmHENS743hWtCrgw==", - "dev": true, - "requires": { - "@jridgewell/gen-mapping": "^0.3.0", - "@jridgewell/trace-mapping": "^0.3.9" - } - }, - "@jridgewell/sourcemap-codec": { - "version": "1.4.14", - "resolved": "https://registry.npmjs.org/@jridgewell/sourcemap-codec/-/sourcemap-codec-1.4.14.tgz", - "integrity": "sha512-XPSJHWmi394fuUuzDnGz1wiKqWfo1yXecHQMRf2l6hztTO+nPru658AyDngaBe7isIxEkRsPR3FZh+s7iVa4Uw==", - "dev": true - }, - "@jridgewell/trace-mapping": { - "version": "0.3.14", - "resolved": "https://registry.npmjs.org/@jridgewell/trace-mapping/-/trace-mapping-0.3.14.tgz", - "integrity": "sha512-bJWEfQ9lPTvm3SneWwRFVLzrh6nhjwqw7TUFFBEMzwvg7t7PCDenf2lDwqo4NQXzdpgBXyFgDWnQA+2vkruksQ==", - "dev": true, - "requires": { - "@jridgewell/resolve-uri": "^3.0.3", - "@jridgewell/sourcemap-codec": "^1.4.10" - } - }, - "@kwsites/file-exists": { - "version": "1.1.1", - "resolved": "https://registry.npmjs.org/@kwsites/file-exists/-/file-exists-1.1.1.tgz", - "integrity": "sha512-m9/5YGR18lIwxSFDwfE3oA7bWuq9kdau6ugN4H2rJeyhFQZcG9AgSHkQtSD15a8WvTgfz9aikZMrKPHvbpqFiw==", - "dev": true, - "requires": { - "debug": "^4.1.1" - }, - "dependencies": { - "debug": { - "version": "4.3.4", - "resolved": "https://registry.npmjs.org/debug/-/debug-4.3.4.tgz", - "integrity": "sha512-PRWFHuSU3eDtQJPvnNY7Jcket1j0t5OuOsFzPPzsekD52Zl8qUfFIPEiswXqIvHWGVHOgX+7G/vCNNhehwxfkQ==", - "dev": true, - "requires": { - "ms": "2.1.2" - } - }, - "ms": { - "version": "2.1.2", - "resolved": "https://registry.npmjs.org/ms/-/ms-2.1.2.tgz", - "integrity": "sha512-sGkPx+VjMtmA6MX27oA4FBFELFCZZ4S4XqeGOXCv68tT+jb3vk/RyaKWP0PTKyWtmLSM0b+adUTEvbs1PEaH2w==", - "dev": true - } - } - }, - "@kwsites/promise-deferred": { - "version": "1.1.1", - "resolved": "https://registry.npmjs.org/@kwsites/promise-deferred/-/promise-deferred-1.1.1.tgz", - "integrity": "sha512-GaHYm+c0O9MjZRu0ongGBRbinu8gVAMd2UZjji6jVmqKtZluZnptXGWhz1E8j8D2HJ3f/yMxKAUC0b+57wncIw==", - "dev": true - }, - "@mrmlnc/readdir-enhanced": { - "version": "2.2.1", - "resolved": "https://registry.npmjs.org/@mrmlnc/readdir-enhanced/-/readdir-enhanced-2.2.1.tgz", - "integrity": "sha512-bPHp6Ji8b41szTOcaP63VlnbbO5Ny6dwAATtY6JTjh5N2OLrb5Qk/Th5cRkRQhkWCt+EJsYrNB0MiL+Gpn6e3g==", - "dev": true, - "requires": { - "call-me-maybe": "^1.0.1", - "glob-to-regexp": "^0.3.0" - } - }, - "@nodelib/fs.stat": { - "version": "1.1.3", - "resolved": "https://registry.npmjs.org/@nodelib/fs.stat/-/fs.stat-1.1.3.tgz", - "integrity": "sha512-shAmDyaQC4H92APFoIaVDHCx5bStIocgvbwQyxPRrbUY20V1EYTbSDchWbuwlMG3V17cprZhA6+78JfB+3DTPw==", - "dev": true - }, - "@octokit/auth-token": { - "version": "2.5.0", - "resolved": "https://registry.npmjs.org/@octokit/auth-token/-/auth-token-2.5.0.tgz", - "integrity": "sha512-r5FVUJCOLl19AxiuZD2VRZ/ORjp/4IN98Of6YJoJOkY75CIBuYfmiNHGrDwXr+aLGG55igl9QrxX3hbiXlLb+g==", - "dev": true, - "requires": { - "@octokit/types": "^6.0.3" - }, - "dependencies": { - "@octokit/types": { - "version": "6.34.0", - "resolved": "https://registry.npmjs.org/@octokit/types/-/types-6.34.0.tgz", - "integrity": "sha512-s1zLBjWhdEI2zwaoSgyOFoKSl109CUcVBCc7biPJ3aAf6LGLU6szDvi31JPU7bxfla2lqfhjbbg/5DdFNxOwHw==", - "dev": true, - "requires": { - "@octokit/openapi-types": "^11.2.0" - } - } - } - }, - "@octokit/core": { - "version": "3.6.0", - "resolved": "https://registry.npmjs.org/@octokit/core/-/core-3.6.0.tgz", - "integrity": "sha512-7RKRKuA4xTjMhY+eG3jthb3hlZCsOwg3rztWh75Xc+ShDWOfDDATWbeZpAHBNRpm4Tv9WgBMOy1zEJYXG6NJ7Q==", - "dev": true, - "peer": true, - "requires": { - "@octokit/auth-token": "^2.4.4", - "@octokit/graphql": "^4.5.8", - "@octokit/request": "^5.6.3", - "@octokit/request-error": "^2.0.5", - "@octokit/types": "^6.0.3", - "before-after-hook": "^2.2.0", - "universal-user-agent": "^6.0.0" - }, - "dependencies": { - "@octokit/request-error": { - "version": "2.1.0", - "resolved": "https://registry.npmjs.org/@octokit/request-error/-/request-error-2.1.0.tgz", - "integrity": "sha512-1VIvgXxs9WHSjicsRwq8PlR2LR2x6DwsJAaFgzdi0JfJoGSO8mYI/cHJQ+9FbN21aa+DrgNLnwObmyeSC8Rmpg==", - "dev": true, - "peer": true, - "requires": { - "@octokit/types": "^6.0.3", - "deprecation": "^2.0.0", - "once": "^1.4.0" - } - }, - "@octokit/types": { - "version": "6.34.0", - "resolved": "https://registry.npmjs.org/@octokit/types/-/types-6.34.0.tgz", - "integrity": "sha512-s1zLBjWhdEI2zwaoSgyOFoKSl109CUcVBCc7biPJ3aAf6LGLU6szDvi31JPU7bxfla2lqfhjbbg/5DdFNxOwHw==", - "dev": true, - "peer": true, - "requires": { - "@octokit/openapi-types": "^11.2.0" - } - }, - "universal-user-agent": { - "version": "6.0.0", - "resolved": "https://registry.npmjs.org/universal-user-agent/-/universal-user-agent-6.0.0.tgz", - "integrity": "sha512-isyNax3wXoKaulPDZWHQqbmIx1k2tb9fb3GGDBRxCscfYV2Ch7WxPArBsFEG8s/safwXTT7H4QGhaIkTp9447w==", - "dev": true, - "peer": true - } - } - }, - "@octokit/endpoint": { - "version": "6.0.8", - "resolved": "https://registry.npmjs.org/@octokit/endpoint/-/endpoint-6.0.8.tgz", - "integrity": "sha512-MuRrgv+bM4Q+e9uEvxAB/Kf+Sj0O2JAOBA131uo1o6lgdq1iS8ejKwtqHgdfY91V3rN9R/hdGKFiQYMzVzVBEQ==", - "dev": true, - "requires": { - "@octokit/types": "^5.0.0", - "is-plain-object": "^5.0.0", - "universal-user-agent": "^6.0.0" - }, - "dependencies": { - "is-plain-object": { - "version": "5.0.0", - "resolved": "https://registry.npmjs.org/is-plain-object/-/is-plain-object-5.0.0.tgz", - "integrity": "sha512-VRSzKkbMm5jMDoKLbltAkFQ5Qr7VDiTFGXxYFXXowVj387GeGNOCsOH6Msy00SGZ3Fp84b1Naa1psqgcCIEP5Q==", - "dev": true - }, - "universal-user-agent": { - "version": "6.0.0", - "resolved": "https://registry.npmjs.org/universal-user-agent/-/universal-user-agent-6.0.0.tgz", - "integrity": "sha512-isyNax3wXoKaulPDZWHQqbmIx1k2tb9fb3GGDBRxCscfYV2Ch7WxPArBsFEG8s/safwXTT7H4QGhaIkTp9447w==", - "dev": true - } - } - }, - "@octokit/graphql": { - "version": "4.8.0", - "resolved": "https://registry.npmjs.org/@octokit/graphql/-/graphql-4.8.0.tgz", - "integrity": "sha512-0gv+qLSBLKF0z8TKaSKTsS39scVKF9dbMxJpj3U0vC7wjNWFuIpL/z76Qe2fiuCbDRcJSavkXsVtMS6/dtQQsg==", - "dev": true, - "peer": true, - "requires": { - "@octokit/request": "^5.6.0", - "@octokit/types": "^6.0.3", - "universal-user-agent": "^6.0.0" - }, - "dependencies": { - "@octokit/types": { - "version": "6.34.0", - "resolved": "https://registry.npmjs.org/@octokit/types/-/types-6.34.0.tgz", - "integrity": "sha512-s1zLBjWhdEI2zwaoSgyOFoKSl109CUcVBCc7biPJ3aAf6LGLU6szDvi31JPU7bxfla2lqfhjbbg/5DdFNxOwHw==", - "dev": true, - "peer": true, - "requires": { - "@octokit/openapi-types": "^11.2.0" - } - }, - "universal-user-agent": { - "version": "6.0.0", - "resolved": "https://registry.npmjs.org/universal-user-agent/-/universal-user-agent-6.0.0.tgz", - "integrity": "sha512-isyNax3wXoKaulPDZWHQqbmIx1k2tb9fb3GGDBRxCscfYV2Ch7WxPArBsFEG8s/safwXTT7H4QGhaIkTp9447w==", - "dev": true, - "peer": true - } - } - }, - "@octokit/openapi-types": { - "version": "11.2.0", - "resolved": "https://registry.npmjs.org/@octokit/openapi-types/-/openapi-types-11.2.0.tgz", - "integrity": "sha512-PBsVO+15KSlGmiI8QAzaqvsNlZlrDlyAJYcrXBCvVUxCp7VnXjkwPoFHgjEJXx3WF9BAwkA6nfCUA7i9sODzKA==", - "dev": true - }, - "@octokit/plugin-paginate-rest": { - "version": "1.1.2", - "resolved": "https://registry.npmjs.org/@octokit/plugin-paginate-rest/-/plugin-paginate-rest-1.1.2.tgz", - "integrity": "sha512-jbsSoi5Q1pj63sC16XIUboklNw+8tL9VOnJsWycWYR78TKss5PVpIPb1TUUcMQ+bBh7cY579cVAWmf5qG+dw+Q==", - "dev": true, - "requires": { - "@octokit/types": "^2.0.1" - }, - "dependencies": { - "@octokit/types": { - "version": "2.16.2", - "resolved": "https://registry.npmjs.org/@octokit/types/-/types-2.16.2.tgz", - "integrity": "sha512-O75k56TYvJ8WpAakWwYRN8Bgu60KrmX0z1KqFp1kNiFNkgW+JW+9EBKZ+S33PU6SLvbihqd+3drvPxKK68Ee8Q==", - "dev": true, - "requires": { - "@types/node": ">= 8" - } - } - } - }, - "@octokit/plugin-request-log": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/@octokit/plugin-request-log/-/plugin-request-log-1.0.2.tgz", - "integrity": "sha512-oTJSNAmBqyDR41uSMunLQKMX0jmEXbwD1fpz8FG27lScV3RhtGfBa1/BBLym+PxcC16IBlF7KH9vP1BUYxA+Eg==", - "dev": true, - "requires": {} - }, - "@octokit/plugin-rest-endpoint-methods": { - "version": "2.4.0", - "resolved": "https://registry.npmjs.org/@octokit/plugin-rest-endpoint-methods/-/plugin-rest-endpoint-methods-2.4.0.tgz", - "integrity": "sha512-EZi/AWhtkdfAYi01obpX0DF7U6b1VRr30QNQ5xSFPITMdLSfhcBqjamE3F+sKcxPbD7eZuMHu3Qkk2V+JGxBDQ==", - "dev": true, - "requires": { - "@octokit/types": "^2.0.1", - "deprecation": "^2.3.1" - }, - "dependencies": { - "@octokit/types": { - "version": "2.16.2", - "resolved": "https://registry.npmjs.org/@octokit/types/-/types-2.16.2.tgz", - "integrity": "sha512-O75k56TYvJ8WpAakWwYRN8Bgu60KrmX0z1KqFp1kNiFNkgW+JW+9EBKZ+S33PU6SLvbihqd+3drvPxKK68Ee8Q==", - "dev": true, - "requires": { - "@types/node": ">= 8" - } - } - } - }, - "@octokit/request": { - "version": "5.6.3", - "resolved": "https://registry.npmjs.org/@octokit/request/-/request-5.6.3.tgz", - "integrity": "sha512-bFJl0I1KVc9jYTe9tdGGpAMPy32dLBXXo1dS/YwSCTL/2nd9XeHsY616RE3HPXDVk+a+dBuzyz5YdlXwcDTr2A==", - "dev": true, - "requires": { - "@octokit/endpoint": "^6.0.1", - "@octokit/request-error": "^2.1.0", - "@octokit/types": "^6.16.1", - "is-plain-object": "^5.0.0", - "node-fetch": "^2.6.7", - "universal-user-agent": "^6.0.0" - }, - "dependencies": { - "@octokit/request-error": { - "version": "2.1.0", - "resolved": "https://registry.npmjs.org/@octokit/request-error/-/request-error-2.1.0.tgz", - "integrity": "sha512-1VIvgXxs9WHSjicsRwq8PlR2LR2x6DwsJAaFgzdi0JfJoGSO8mYI/cHJQ+9FbN21aa+DrgNLnwObmyeSC8Rmpg==", - "dev": true, - "requires": { - "@octokit/types": "^6.0.3", - "deprecation": "^2.0.0", - "once": "^1.4.0" - } - }, - "@octokit/types": { - "version": "6.34.0", - "resolved": "https://registry.npmjs.org/@octokit/types/-/types-6.34.0.tgz", - "integrity": "sha512-s1zLBjWhdEI2zwaoSgyOFoKSl109CUcVBCc7biPJ3aAf6LGLU6szDvi31JPU7bxfla2lqfhjbbg/5DdFNxOwHw==", - "dev": true, - "requires": { - "@octokit/openapi-types": "^11.2.0" - } - }, - "is-plain-object": { - "version": "5.0.0", - "resolved": "https://registry.npmjs.org/is-plain-object/-/is-plain-object-5.0.0.tgz", - "integrity": "sha512-VRSzKkbMm5jMDoKLbltAkFQ5Qr7VDiTFGXxYFXXowVj387GeGNOCsOH6Msy00SGZ3Fp84b1Naa1psqgcCIEP5Q==", - "dev": true - }, - "node-fetch": { - "version": "2.6.7", - "resolved": "https://registry.npmjs.org/node-fetch/-/node-fetch-2.6.7.tgz", - "integrity": "sha512-ZjMPFEfVx5j+y2yF35Kzx5sF7kDzxuDj6ziH4FFbOp87zKDZNx8yExJIb05OGF4Nlt9IHFIMBkRl41VdvcNdbQ==", - "dev": true, - "requires": { - "whatwg-url": "^5.0.0" - } - }, - "tr46": { - "version": "0.0.3", - "resolved": "https://registry.npmjs.org/tr46/-/tr46-0.0.3.tgz", - "integrity": "sha1-gYT9NH2snNwYWZLzpmIuFLnZq2o=", - "dev": true - }, - "universal-user-agent": { - "version": "6.0.0", - "resolved": "https://registry.npmjs.org/universal-user-agent/-/universal-user-agent-6.0.0.tgz", - "integrity": "sha512-isyNax3wXoKaulPDZWHQqbmIx1k2tb9fb3GGDBRxCscfYV2Ch7WxPArBsFEG8s/safwXTT7H4QGhaIkTp9447w==", - "dev": true - }, - "webidl-conversions": { - "version": "3.0.1", - "resolved": "https://registry.npmjs.org/webidl-conversions/-/webidl-conversions-3.0.1.tgz", - "integrity": "sha1-JFNCdeKnvGvnvIZhHMFq4KVlSHE=", - "dev": true - }, - "whatwg-url": { - "version": "5.0.0", - "resolved": "https://registry.npmjs.org/whatwg-url/-/whatwg-url-5.0.0.tgz", - "integrity": "sha1-lmRU6HZUYuN2RNNib2dCzotwll0=", - "dev": true, - "requires": { - "tr46": "~0.0.3", - "webidl-conversions": "^3.0.0" - } - } - } - }, - "@octokit/request-error": { - "version": "1.2.1", - "resolved": "https://registry.npmjs.org/@octokit/request-error/-/request-error-1.2.1.tgz", - "integrity": "sha512-+6yDyk1EES6WK+l3viRDElw96MvwfJxCt45GvmjDUKWjYIb3PJZQkq3i46TwGwoPD4h8NmTrENmtyA1FwbmhRA==", - "dev": true, - "requires": { - "@octokit/types": "^2.0.0", - "deprecation": "^2.0.0", - "once": "^1.4.0" - }, - "dependencies": { - "@octokit/types": { - "version": "2.16.2", - "resolved": "https://registry.npmjs.org/@octokit/types/-/types-2.16.2.tgz", - "integrity": "sha512-O75k56TYvJ8WpAakWwYRN8Bgu60KrmX0z1KqFp1kNiFNkgW+JW+9EBKZ+S33PU6SLvbihqd+3drvPxKK68Ee8Q==", - "dev": true, - "requires": { - "@types/node": ">= 8" - } - } - } - }, - "@octokit/rest": { - "version": "16.43.2", - "resolved": "https://registry.npmjs.org/@octokit/rest/-/rest-16.43.2.tgz", - "integrity": "sha512-ngDBevLbBTFfrHZeiS7SAMAZ6ssuVmXuya+F/7RaVvlysgGa1JKJkKWY+jV6TCJYcW0OALfJ7nTIGXcBXzycfQ==", - "dev": true, - "requires": { - "@octokit/auth-token": "^2.4.0", - "@octokit/plugin-paginate-rest": "^1.1.1", - "@octokit/plugin-request-log": "^1.0.0", - "@octokit/plugin-rest-endpoint-methods": "2.4.0", - "@octokit/request": "^5.2.0", - "@octokit/request-error": "^1.0.2", - "atob-lite": "^2.0.0", - "before-after-hook": "^2.0.0", - "btoa-lite": "^1.0.0", - "deprecation": "^2.0.0", - "lodash.get": "^4.4.2", - "lodash.set": "^4.3.2", - "lodash.uniq": "^4.5.0", - "octokit-pagination-methods": "^1.1.0", - "once": "^1.4.0", - "universal-user-agent": "^4.0.0" - } - }, - "@octokit/types": { - "version": "5.5.0", - "resolved": "https://registry.npmjs.org/@octokit/types/-/types-5.5.0.tgz", - "integrity": "sha512-UZ1pErDue6bZNjYOotCNveTXArOMZQFG6hKJfOnGnulVCMcVVi7YIIuuR4WfBhjo7zgpmzn/BkPDnUXtNx+PcQ==", - "dev": true, - "requires": { - "@types/node": ">= 8" - } - }, - "@tootallnate/once": { - "version": "1.1.2", - "resolved": "https://registry.npmjs.org/@tootallnate/once/-/once-1.1.2.tgz", - "integrity": "sha512-RbzJvlNzmRq5c3O09UipeuXno4tA1FE6ikOjxZK0tuxVv3412l64l5t1W5pj4+rJq9vpkm/kwiR07aZXnsKPxw==", - "dev": true - }, - "@types/events": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/@types/events/-/events-3.0.0.tgz", - "integrity": "sha512-EaObqwIvayI5a8dCzhFrjKzVwKLxjoG9T6Ppd5CEo07LRKfQ8Yokw54r5+Wq7FaBQ+yXRvQAYPrHwya1/UFt9g==", - "dev": true - }, - "@types/glob": { - "version": "7.1.1", - "resolved": "https://registry.npmjs.org/@types/glob/-/glob-7.1.1.tgz", - "integrity": "sha512-1Bh06cbWJUHMC97acuD6UMG29nMt0Aqz1vF3guLfG+kHHJhy3AyohZFFxYk2f7Q1SQIrNwvncxAE0N/9s70F2w==", - "dev": true, - "requires": { - "@types/events": "*", - "@types/minimatch": "*", - "@types/node": "*" - } - }, - "@types/linkify-it": { - "version": "3.0.2", - "resolved": "https://registry.npmjs.org/@types/linkify-it/-/linkify-it-3.0.2.tgz", - "integrity": "sha512-HZQYqbiFVWufzCwexrvh694SOim8z2d+xJl5UNamcvQFejLY/2YUtzXHYi3cHdI7PMlS8ejH2slRAOJQ32aNbA==", - "dev": true - }, - "@types/markdown-it": { - "version": "12.2.3", - "resolved": "https://registry.npmjs.org/@types/markdown-it/-/markdown-it-12.2.3.tgz", - "integrity": "sha512-GKMHFfv3458yYy+v/N8gjufHO6MSZKCOXpZc5GXIWWy8uldwfmPn98vp81gZ5f9SVw8YYBctgfJ22a2d7AOMeQ==", - "dev": true, - "requires": { - "@types/linkify-it": "*", - "@types/mdurl": "*" - } - }, - "@types/mdurl": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/@types/mdurl/-/mdurl-1.0.2.tgz", - "integrity": "sha512-eC4U9MlIcu2q0KQmXszyn5Akca/0jrQmwDRgpAMJai7qBWq4amIQhZyNau4VYGtCeALvW1/NtjzJJ567aZxfKA==", - "dev": true - }, - "@types/minimatch": { - "version": "3.0.3", - "resolved": "https://registry.npmjs.org/@types/minimatch/-/minimatch-3.0.3.tgz", - "integrity": "sha512-tHq6qdbT9U1IRSGf14CL0pUlULksvY9OZ+5eEgl1N7t+OA3tGvNpxJCzuKQlsNgCVwbAs670L1vcVQi8j9HjnA==", - "dev": true - }, - "@types/node": { - "version": "12.0.2", - "resolved": "https://registry.npmjs.org/@types/node/-/node-12.0.2.tgz", - "integrity": "sha512-5tabW/i+9mhrfEOUcLDu2xBPsHJ+X5Orqy9FKpale3SjDA17j5AEpYq5vfy3oAeAHGcvANRCO3NV3d2D6q3NiA==", - "dev": true - }, - "@types/node-fetch": { - "version": "2.5.7", - "resolved": "https://registry.npmjs.org/@types/node-fetch/-/node-fetch-2.5.7.tgz", - "integrity": "sha512-o2WVNf5UhWRkxlf6eq+jMZDu7kjgpgJfl4xVNlvryc95O/6F2ld8ztKX+qu+Rjyet93WAWm5LjeX9H5FGkODvw==", - "dev": true, - "requires": { - "@types/node": "*", - "form-data": "^3.0.0" - } - }, - "@ungap/promise-all-settled": { - "version": "1.1.2", - "resolved": "https://registry.npmjs.org/@ungap/promise-all-settled/-/promise-all-settled-1.1.2.tgz", - "integrity": "sha512-sL/cEvJWAnClXw0wHk85/2L0G6Sj8UB0Ctc1TEMbKSsmpRosqhwj9gWgFRZSrBr2f9tiXISwNhCPmlfqUqyb9Q==", - "dev": true - }, - "a-sync-waterfall": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/a-sync-waterfall/-/a-sync-waterfall-1.0.1.tgz", - "integrity": "sha512-RYTOHHdWipFUliRFMCS4X2Yn2X8M87V/OpSqWzKKOGhzqyUxzyVmhHDH9sAvG+ZuQf/TAOFsLCpMw09I1ufUnA==", - "dev": true - }, - "abab": { - "version": "2.0.5", - "resolved": "https://registry.npmjs.org/abab/-/abab-2.0.5.tgz", - "integrity": "sha512-9IK9EadsbHo6jLWIpxpR6pL0sazTXV6+SQv25ZB+F7Bj9mJNaOc4nCRabwd5M/JwmUa8idz6Eci6eKfJryPs6Q==", - "dev": true - }, - "abort-controller": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/abort-controller/-/abort-controller-3.0.0.tgz", - "integrity": "sha512-h8lQ8tacZYnR3vNQTgibj+tODHI5/+l06Au2Pcriv/Gmet0eaj4TwWH41sO9wnHDiQsEj19q0drzdWdeAHtweg==", - "dev": true, - "requires": { - "event-target-shim": "^5.0.0" - } - }, - "acorn": { - "version": "8.5.0", - "resolved": "https://registry.npmjs.org/acorn/-/acorn-8.5.0.tgz", - "integrity": "sha512-yXbYeFy+jUuYd3/CDcg2NkIYE991XYX/bje7LmjJigUciaeO1JR4XxXgCIV1/Zc/dRuFEyw1L0pbA+qynJkW5Q==", - "dev": true - }, - "acorn-globals": { - "version": "6.0.0", - "resolved": "https://registry.npmjs.org/acorn-globals/-/acorn-globals-6.0.0.tgz", - "integrity": "sha512-ZQl7LOWaF5ePqqcX4hLuv/bLXYQNfNWw2c0/yX/TsPRKamzHcTGQnlCjHT3TsmkOUVEPS3crCxiPfdzE/Trlhg==", - "dev": true, - "requires": { - "acorn": "^7.1.1", - "acorn-walk": "^7.1.1" - }, - "dependencies": { - "acorn": { - "version": "7.4.1", - "resolved": "https://registry.npmjs.org/acorn/-/acorn-7.4.1.tgz", - "integrity": "sha512-nQyp0o1/mNdbTO1PO6kHkwSrmgZ0MT/jCCpNiwbUjGoRN4dlBhqJtoQuCnEOKzgTVwg0ZWiCoQy6SxMebQVh8A==", - "dev": true - } - } - }, - "acorn-jsx": { - "version": "5.3.1", - "resolved": "https://registry.npmjs.org/acorn-jsx/-/acorn-jsx-5.3.1.tgz", - "integrity": "sha512-K0Ptm/47OKfQRpNQ2J/oIN/3QYiK6FwW+eJbILhsdxh2WTLdl+30o8aGdTbm5JbffpFFAg/g+zi1E+jvJha5ng==", - "dev": true, - "requires": {} - }, - "acorn-walk": { - "version": "7.2.0", - "resolved": "https://registry.npmjs.org/acorn-walk/-/acorn-walk-7.2.0.tgz", - "integrity": "sha512-OPdCF6GsMIP+Az+aWfAAOEt2/+iVDKE7oy6lJ098aoe59oAmK76qV6Gw60SbZ8jHuG2wH058GF4pLFbYamYrVA==", - "dev": true - }, - "agent-base": { - "version": "4.3.0", - "resolved": "https://registry.npmjs.org/agent-base/-/agent-base-4.3.0.tgz", - "integrity": "sha512-salcGninV0nPrwpGNn4VTXBb1SOuXQBiqbrNXoeizJsHrsL6ERFM2Ne3JUSBWRE6aeNJI2ROP/WEEIDUiDe3cg==", - "dev": true, - "requires": { - "es6-promisify": "^5.0.0" - } - }, - "ajv": { - "version": "6.12.6", - "resolved": "https://registry.npmjs.org/ajv/-/ajv-6.12.6.tgz", - "integrity": "sha512-j3fVLgvTo527anyYyJOGTYJbG+vnnQYvE0m5mmkc1TK+nxAppkCLMIL0aZ4dblVCNoGShhm+kzE4ZUykBoMg4g==", - "dev": true, - "requires": { - "fast-deep-equal": "^3.1.1", - "fast-json-stable-stringify": "^2.0.0", - "json-schema-traverse": "^0.4.1", - "uri-js": "^4.2.2" - }, - "dependencies": { - "fast-deep-equal": { - "version": "3.1.3", - "resolved": "https://registry.npmjs.org/fast-deep-equal/-/fast-deep-equal-3.1.3.tgz", - "integrity": "sha512-f3qQ9oQy9j2AhBe/H9VC91wLmKBCCU/gDOnKNAYG5hswO7BLKj09Hc5HYNz9cGI++xlpDCIgDaitVs03ATR84Q==", - "dev": true - } - } - }, - "ansi-colors": { - "version": "1.1.0", - "resolved": "https://registry.npmjs.org/ansi-colors/-/ansi-colors-1.1.0.tgz", - "integrity": "sha512-SFKX67auSNoVR38N3L+nvsPjOE0bybKTYbkf5tRvushrAPQ9V75huw0ZxBkKVeRU9kqH3d6HA4xTckbwZ4ixmA==", - "dev": true, - "requires": { - "ansi-wrap": "^0.1.0" - } - }, - "ansi-gray": { - "version": "0.1.1", - "resolved": "https://registry.npmjs.org/ansi-gray/-/ansi-gray-0.1.1.tgz", - "integrity": "sha1-KWLPVOyXksSFEKPetSRDaGHvclE=", - "dev": true, - "requires": { - "ansi-wrap": "0.1.0" - } - }, - "ansi-regex": { - "version": "2.1.1", - "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-2.1.1.tgz", - "integrity": "sha1-w7M6te42DYbg5ijwRorn7yfWVN8=", - "dev": true - }, - "ansi-styles": { - "version": "3.2.1", - "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-3.2.1.tgz", - "integrity": "sha512-VT0ZI6kZRdTh8YyJw3SMbYm/u+NqfsAxEpWO0Pf9sq8/e94WxxOpPKx9FR1FlyCtOVDNOQ+8ntlqFxiRc+r5qA==", - "dev": true, - "requires": { - "color-convert": "^1.9.0" - } - }, - "ansi-wrap": { - "version": "0.1.0", - "resolved": "https://registry.npmjs.org/ansi-wrap/-/ansi-wrap-0.1.0.tgz", - "integrity": "sha1-qCJQ3bABXponyoLoLqYDu/pF768=", - "dev": true - }, - "anymatch": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/anymatch/-/anymatch-2.0.0.tgz", - "integrity": "sha512-5teOsQWABXHHBFP9y3skS5P3d/WfWXpv3FUpy+LorMrNYaT9pI4oLMQX7jzQ2KklNpGpWHzdCXTDT2Y3XGlZBw==", - "dev": true, - "requires": { - "micromatch": "^3.1.4", - "normalize-path": "^2.1.1" - } - }, - "append-buffer": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/append-buffer/-/append-buffer-1.0.2.tgz", - "integrity": "sha1-2CIM9GYIFSXv6lBhTz3mUU36WPE=", - "dev": true, - "requires": { - "buffer-equal": "^1.0.0" - } - }, - "archy": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/archy/-/archy-1.0.0.tgz", - "integrity": "sha1-+cjBN1fMHde8N5rHeyxipcKGjEA=", - "dev": true - }, - "argparse": { - "version": "1.0.10", - "resolved": "https://registry.npmjs.org/argparse/-/argparse-1.0.10.tgz", - "integrity": "sha512-o5Roy6tNG4SL/FOkCAN6RzjiakZS25RLYFrcMttJqbdd8BWrnA+fGz57iN5Pb06pvBGvl5gQ0B48dJlslXvoTg==", - "dev": true, - "requires": { - "sprintf-js": "~1.0.2" - } - }, - "arr-diff": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/arr-diff/-/arr-diff-4.0.0.tgz", - "integrity": "sha1-1kYQdP6/7HHn4VI1dhoyml3HxSA=", - "dev": true - }, - "arr-filter": { - "version": "1.1.2", - "resolved": "https://registry.npmjs.org/arr-filter/-/arr-filter-1.1.2.tgz", - "integrity": "sha1-Q/3d0JHo7xGqTEXZzcGOLf8XEe4=", - "dev": true, - "requires": { - "make-iterator": "^1.0.0" - } - }, - "arr-flatten": { - "version": "1.1.0", - "resolved": "https://registry.npmjs.org/arr-flatten/-/arr-flatten-1.1.0.tgz", - "integrity": "sha512-L3hKV5R/p5o81R7O02IGnwpDmkp6E982XhtbuwSe3O4qOtMMMtodicASA1Cny2U+aCXcNpml+m4dPsvsJ3jatg==", - "dev": true - }, - "arr-map": { - "version": "2.0.2", - "resolved": "https://registry.npmjs.org/arr-map/-/arr-map-2.0.2.tgz", - "integrity": "sha1-Onc0X/wc814qkYJWAfnljy4kysQ=", - "dev": true, - "requires": { - "make-iterator": "^1.0.0" - } - }, - "arr-union": { - "version": "3.1.0", - "resolved": "https://registry.npmjs.org/arr-union/-/arr-union-3.1.0.tgz", - "integrity": "sha1-45sJrqne+Gao8gbiiK9jkZuuOcQ=", - "dev": true - }, - "array-each": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/array-each/-/array-each-1.0.1.tgz", - "integrity": "sha1-p5SvDAWrF1KEbudTofIRoFugxE8=", - "dev": true - }, - "array-find-index": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/array-find-index/-/array-find-index-1.0.2.tgz", - "integrity": "sha1-3wEKoSh+Fku9pvlyOwqWoexBh6E=", - "dev": true - }, - "array-initial": { - "version": "1.1.0", - "resolved": "https://registry.npmjs.org/array-initial/-/array-initial-1.1.0.tgz", - "integrity": "sha1-L6dLJnOTccOUe9enrcc74zSz15U=", - "dev": true, - "requires": { - "array-slice": "^1.0.0", - "is-number": "^4.0.0" - }, - "dependencies": { - "is-number": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/is-number/-/is-number-4.0.0.tgz", - "integrity": "sha512-rSklcAIlf1OmFdyAqbnWTLVelsQ58uvZ66S/ZyawjWqIviTWCjg2PzVGw8WUA+nNuPTqb4wgA+NszrJ+08LlgQ==", - "dev": true - } - } - }, - "array-last": { - "version": "1.3.0", - "resolved": "https://registry.npmjs.org/array-last/-/array-last-1.3.0.tgz", - "integrity": "sha512-eOCut5rXlI6aCOS7Z7kCplKRKyiFQ6dHFBem4PwlwKeNFk2/XxTrhRh5T9PyaEWGy/NHTZWbY+nsZlNFJu9rYg==", - "dev": true, - "requires": { - "is-number": "^4.0.0" - }, - "dependencies": { - "is-number": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/is-number/-/is-number-4.0.0.tgz", - "integrity": "sha512-rSklcAIlf1OmFdyAqbnWTLVelsQ58uvZ66S/ZyawjWqIviTWCjg2PzVGw8WUA+nNuPTqb4wgA+NszrJ+08LlgQ==", - "dev": true - } - } - }, - "array-slice": { - "version": "1.1.0", - "resolved": "https://registry.npmjs.org/array-slice/-/array-slice-1.1.0.tgz", - "integrity": "sha512-B1qMD3RBP7O8o0H2KbrXDyB0IccejMF15+87Lvlor12ONPRHP6gTjXMNkt/d3ZuOGbAe66hFmaCfECI24Ufp6w==", - "dev": true - }, - "array-sort": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/array-sort/-/array-sort-1.0.0.tgz", - "integrity": "sha512-ihLeJkonmdiAsD7vpgN3CRcx2J2S0TiYW+IS/5zHBI7mKUq3ySvBdzzBfD236ubDBQFiiyG3SWCPc+msQ9KoYg==", - "dev": true, - "requires": { - "default-compare": "^1.0.0", - "get-value": "^2.0.6", - "kind-of": "^5.0.2" - }, - "dependencies": { - "kind-of": { - "version": "5.1.0", - "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-5.1.0.tgz", - "integrity": "sha512-NGEErnH6F2vUuXDh+OlbcKW7/wOcfdRHaZ7VWtqCztfHri/++YKmP51OdWeGPuqCOba6kk2OTe5d02VmTB80Pw==", - "dev": true - } - } - }, - "array-union": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/array-union/-/array-union-1.0.2.tgz", - "integrity": "sha1-mjRBDk9OPaI96jdb5b5w8kd47Dk=", - "dev": true, - "requires": { - "array-uniq": "^1.0.1" - } - }, - "array-uniq": { - "version": "1.0.3", - "resolved": "https://registry.npmjs.org/array-uniq/-/array-uniq-1.0.3.tgz", - "integrity": "sha1-r2rId6Jcx/dOBYiUdThY39sk/bY=", - "dev": true - }, - "array-unique": { - "version": "0.3.2", - "resolved": "https://registry.npmjs.org/array-unique/-/array-unique-0.3.2.tgz", - "integrity": "sha1-qJS3XUvE9s1nnvMkSp/Y9Gri1Cg=", - "dev": true - }, - "arrify": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/arrify/-/arrify-1.0.1.tgz", - "integrity": "sha1-iYUI2iIm84DfkEcoRWhJwVAaSw0=", - "dev": true - }, - "asap": { - "version": "2.0.6", - "resolved": "https://registry.npmjs.org/asap/-/asap-2.0.6.tgz", - "integrity": "sha1-5QNHYR1+aQlDIIu9r+vLwvuGbUY=", - "dev": true - }, - "assertion-error": { - "version": "1.1.0", - "resolved": "https://registry.npmjs.org/assertion-error/-/assertion-error-1.1.0.tgz", - "integrity": "sha512-jgsaNduz+ndvGyFt3uSuWqvy4lCnIJiovtouQN5JZHOKCS2QuhEdbcQHFhVksz2N2U9hXJo8odG7ETyWlEeuDw==", - "dev": true - }, - "assign-symbols": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/assign-symbols/-/assign-symbols-1.0.0.tgz", - "integrity": "sha1-WWZ/QfrdTyDMvCu5a41Pf3jsA2c=", - "dev": true - }, - "astral-regex": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/astral-regex/-/astral-regex-2.0.0.tgz", - "integrity": "sha512-Z7tMw1ytTXt5jqMcOP+OQteU1VuNK9Y02uuJtKQ1Sv69jXQKKg5cibLwGJow8yzZP+eAc18EmLGPal0bp36rvQ==", - "dev": true - }, - "async": { - "version": "2.6.4", - "resolved": "https://registry.npmjs.org/async/-/async-2.6.4.tgz", - "integrity": "sha512-mzo5dfJYwAn29PeiJ0zvwTo04zj8HDJj0Mn8TD7sno7q12prdbnasKJHhkm2c1LgrhlJ0teaea8860oxi51mGA==", - "dev": true, - "requires": { - "lodash": "^4.17.14" - } - }, - "async-done": { - "version": "1.3.2", - "resolved": "https://registry.npmjs.org/async-done/-/async-done-1.3.2.tgz", - "integrity": "sha512-uYkTP8dw2og1tu1nmza1n1CMW0qb8gWWlwqMmLb7MhBVs4BXrFziT6HXUd+/RlRA/i4H9AkofYloUbs1fwMqlw==", - "dev": true, - "requires": { - "end-of-stream": "^1.1.0", - "once": "^1.3.2", - "process-nextick-args": "^2.0.0", - "stream-exhaust": "^1.0.1" - } - }, - "async-each": { - "version": "1.0.3", - "resolved": "https://registry.npmjs.org/async-each/-/async-each-1.0.3.tgz", - "integrity": "sha512-z/WhQ5FPySLdvREByI2vZiTWwCnF0moMJ1hK9YQwDTHKh6I7/uSckMetoRGb5UBZPC1z0jlw+n/XCgjeH7y1AQ==", - "dev": true - }, - "async-retry": { - "version": "1.2.3", - "resolved": "https://registry.npmjs.org/async-retry/-/async-retry-1.2.3.tgz", - "integrity": "sha512-tfDb02Th6CE6pJUF2gjW5ZVjsgwlucVXOEQMvEX9JgSJMs9gAX+Nz3xRuJBKuUYjTSYORqvDBORdAQ3LU59g7Q==", - "dev": true, - "requires": { - "retry": "0.12.0" - } - }, - "async-settle": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/async-settle/-/async-settle-1.0.0.tgz", - "integrity": "sha1-HQqRS7Aldb7IqPOnTlCA9yssDGs=", - "dev": true, - "requires": { - "async-done": "^1.2.2" - } - }, - "asynckit": { - "version": "0.4.0", - "resolved": "https://registry.npmjs.org/asynckit/-/asynckit-0.4.0.tgz", - "integrity": "sha1-x57Zf380y48robyXkLzDZkdLS3k=", - "dev": true - }, - "atob": { - "version": "2.1.2", - "resolved": "https://registry.npmjs.org/atob/-/atob-2.1.2.tgz", - "integrity": "sha512-Wm6ukoaOGJi/73p/cl2GvLjTI5JM1k/O14isD73YML8StrH/7/lRFgmg8nICZgD3bZZvjwCGxtMOD3wWNAu8cg==", - "dev": true - }, - "atob-lite": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/atob-lite/-/atob-lite-2.0.0.tgz", - "integrity": "sha1-D+9a1G8b16hQLGVyfwNn1e5D1pY=", - "dev": true - }, - "bach": { - "version": "1.2.0", - "resolved": "https://registry.npmjs.org/bach/-/bach-1.2.0.tgz", - "integrity": "sha1-Szzpa/JxNPeaG0FKUcFONMO9mIA=", - "dev": true, - "requires": { - "arr-filter": "^1.1.1", - "arr-flatten": "^1.0.1", - "arr-map": "^2.0.0", - "array-each": "^1.0.0", - "array-initial": "^1.0.0", - "array-last": "^1.1.1", - "async-done": "^1.2.2", - "async-settle": "^1.0.0", - "now-and-later": "^2.0.0" - } - }, - "balanced-match": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/balanced-match/-/balanced-match-1.0.0.tgz", - "integrity": "sha1-ibTRmasr7kneFk6gK4nORi1xt2c=", - "dev": true - }, - "base": { - "version": "0.11.2", - "resolved": "https://registry.npmjs.org/base/-/base-0.11.2.tgz", - "integrity": "sha512-5T6P4xPgpp0YDFvSWwEZ4NoE3aM4QBQXDzmVbraCkFj8zHM+mba8SyqB5DbZWyR7mYHo6Y7BdQo3MoA4m0TeQg==", - "dev": true, - "requires": { - "cache-base": "^1.0.1", - "class-utils": "^0.3.5", - "component-emitter": "^1.2.1", - "define-property": "^1.0.0", - "isobject": "^3.0.1", - "mixin-deep": "^1.2.0", - "pascalcase": "^0.1.1" - }, - "dependencies": { - "define-property": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/define-property/-/define-property-1.0.0.tgz", - "integrity": "sha1-dp66rz9KY6rTr56NMEybvnm/sOY=", - "dev": true, - "requires": { - "is-descriptor": "^1.0.0" - } - }, - "is-accessor-descriptor": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/is-accessor-descriptor/-/is-accessor-descriptor-1.0.0.tgz", - "integrity": "sha512-m5hnHTkcVsPfqx3AKlyttIPb7J+XykHvJP2B9bZDjlhLIoEq4XoK64Vg7boZlVWYK6LUY94dYPEE7Lh0ZkZKcQ==", - "dev": true, - "requires": { - "kind-of": "^6.0.0" - } - }, - "is-data-descriptor": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/is-data-descriptor/-/is-data-descriptor-1.0.0.tgz", - "integrity": "sha512-jbRXy1FmtAoCjQkVmIVYwuuqDFUbaOeDjmed1tOGPrsMhtJA4rD9tkgA0F1qJ3gRFRXcHYVkdeaP50Q5rE/jLQ==", - "dev": true, - "requires": { - "kind-of": "^6.0.0" - } - }, - "is-descriptor": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/is-descriptor/-/is-descriptor-1.0.2.tgz", - "integrity": "sha512-2eis5WqQGV7peooDyLmNEPUrps9+SXX5c9pL3xEB+4e9HnGuDa7mB7kHxHw4CbqS9k1T2hOH3miL8n8WtiYVtg==", - "dev": true, - "requires": { - "is-accessor-descriptor": "^1.0.0", - "is-data-descriptor": "^1.0.0", - "kind-of": "^6.0.2" - } - } - } - }, - "basic-auth": { - "version": "1.1.0", - "resolved": "https://registry.npmjs.org/basic-auth/-/basic-auth-1.1.0.tgz", - "integrity": "sha1-RSIe5Cn37h5QNb4/UVM/HN/SmIQ=", - "dev": true - }, - "beeper": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/beeper/-/beeper-2.0.0.tgz", - "integrity": "sha512-+ShExQEewPvKdTUOtCAJmkUAgEyNF0QqgiAhPRE5xLvoFkIPt8xuHKaz1gMLzSMS73beHWs9gbRBngdH61nVWw==", - "dev": true, - "requires": { - "delay": "^4.1.0" - } - }, - "before-after-hook": { - "version": "2.2.2", - "resolved": "https://registry.npmjs.org/before-after-hook/-/before-after-hook-2.2.2.tgz", - "integrity": "sha512-3pZEU3NT5BFUo/AD5ERPWOgQOCZITni6iavr5AUw5AUwQjMlI0kzu5btnyD39AF0gUEsDPwJT+oY1ORBJijPjQ==", - "dev": true - }, - "benchmark": { - "version": "2.1.4", - "resolved": "https://registry.npmjs.org/benchmark/-/benchmark-2.1.4.tgz", - "integrity": "sha1-CfPeMckWQl1JjMLuVloOvzwqVik=", - "dev": true, - "requires": { - "lodash": "^4.17.4", - "platform": "^1.3.3" - } - }, - "binary-extensions": { - "version": "1.13.1", - "resolved": "https://registry.npmjs.org/binary-extensions/-/binary-extensions-1.13.1.tgz", - "integrity": "sha512-Un7MIEDdUC5gNpcGDV97op1Ywk748MpHcFTHoYs6qnj1Z3j7I53VG3nwZhKzoBZmbdRNnb6WRdFlwl7tSDuZGw==", - "dev": true - }, - "binaryextensions": { - "version": "2.1.2", - "resolved": "https://registry.npmjs.org/binaryextensions/-/binaryextensions-2.1.2.tgz", - "integrity": "sha512-xVNN69YGDghOqCCtA6FI7avYrr02mTJjOgB0/f1VPD3pJC8QEvjTKWc4epDx8AqxxA75NI0QpVM2gPJXUbE4Tg==", - "dev": true - }, - "bindings": { - "version": "1.5.0", - "resolved": "https://registry.npmjs.org/bindings/-/bindings-1.5.0.tgz", - "integrity": "sha512-p2q/t/mhvuOj/UeLlV6566GD/guowlr0hHxClI0W9m7MWYkL1F0hLo+0Aexs9HSPCtR1SXQ0TD3MMKrXZajbiQ==", - "dev": true, - "optional": true, - "requires": { - "file-uri-to-path": "1.0.0" - } - }, - "bluebird": { - "version": "3.7.2", - "resolved": "https://registry.npmjs.org/bluebird/-/bluebird-3.7.2.tgz", - "integrity": "sha512-XpNj6GDQzdfW+r2Wnn7xiSAd7TM3jzkxGXBGTtWKuSXv1xUV+azxAm8jdWZN06QTQk+2N2XB9jRDkvbmQmcRtg==", - "dev": true - }, - "brace-expansion": { - "version": "1.1.11", - "resolved": "https://registry.npmjs.org/brace-expansion/-/brace-expansion-1.1.11.tgz", - "integrity": "sha512-iCuPHDFgrHX7H2vEI/5xpz07zSHB00TpugqhmYtVmMO6518mCuRMoOYFldEBl0g187ufozdaHgWKcYFb61qGiA==", - "dev": true, - "requires": { - "balanced-match": "^1.0.0", - "concat-map": "0.0.1" - } - }, - "braces": { - "version": "2.3.2", - "resolved": "https://registry.npmjs.org/braces/-/braces-2.3.2.tgz", - "integrity": "sha512-aNdbnj9P8PjdXU4ybaWLK2IF3jc/EoDYbC7AazW6to3TRsfXxscC9UXOB5iDiEQrkyIbWp2SLQda4+QAa7nc3w==", - "dev": true, - "requires": { - "arr-flatten": "^1.1.0", - "array-unique": "^0.3.2", - "extend-shallow": "^2.0.1", - "fill-range": "^4.0.0", - "isobject": "^3.0.1", - "repeat-element": "^1.1.2", - "snapdragon": "^0.8.1", - "snapdragon-node": "^2.0.1", - "split-string": "^3.0.2", - "to-regex": "^3.0.1" - }, - "dependencies": { - "extend-shallow": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/extend-shallow/-/extend-shallow-2.0.1.tgz", - "integrity": "sha1-Ua99YUrZqfYQ6huvu5idaxxWiQ8=", - "dev": true, - "requires": { - "is-extendable": "^0.1.0" - } - } - } - }, - "browser-process-hrtime": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/browser-process-hrtime/-/browser-process-hrtime-1.0.0.tgz", - "integrity": "sha512-9o5UecI3GhkpM6DrXr69PblIuWxPKk9Y0jHBRhdocZ2y7YECBFCsHm79Pr3OyR2AvjhDkabFJaDJMYRazHgsow==", - "dev": true - }, - "browser-stdout": { - "version": "1.3.1", - "resolved": "https://registry.npmjs.org/browser-stdout/-/browser-stdout-1.3.1.tgz", - "integrity": "sha512-qhAVI1+Av2X7qelOfAIYwXONood6XlZE/fXaBSmW/T5SzLAmCgzi+eiWE7fUvbHaeNBQH13UftjpXxsfLkMpgw==", - "dev": true - }, - "btoa-lite": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/btoa-lite/-/btoa-lite-1.0.0.tgz", - "integrity": "sha1-M3dm2hWAEhD92VbCLpxokaudAzc=", - "dev": true - }, - "buffer-equal": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/buffer-equal/-/buffer-equal-1.0.0.tgz", - "integrity": "sha1-WWFrSYME1Var1GaWayLu2j7KX74=", - "dev": true - }, - "buffer-equal-constant-time": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/buffer-equal-constant-time/-/buffer-equal-constant-time-1.0.1.tgz", - "integrity": "sha1-+OcRMvf/5uAaXJaXpMbz5I1cyBk=", - "dev": true - }, - "buffer-from": { - "version": "1.1.1", - "resolved": "https://registry.npmjs.org/buffer-from/-/buffer-from-1.1.1.tgz", - "integrity": "sha512-MQcXEUbCKtEo7bhqEs6560Hyd4XaovZlO/k9V3hjVUF/zwW7KBVdSK4gIt/bzwS9MbR5qob+F5jusZsb0YQK2A==", - "dev": true - }, - "cache-base": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/cache-base/-/cache-base-1.0.1.tgz", - "integrity": "sha512-AKcdTnFSWATd5/GCPRxr2ChwIJ85CeyrEyjRHlKxQ56d4XJMGym0uAiKn0xbLOGOl3+yRpOTi484dVCEc5AUzQ==", - "dev": true, - "requires": { - "collection-visit": "^1.0.0", - "component-emitter": "^1.2.1", - "get-value": "^2.0.6", - "has-value": "^1.0.0", - "isobject": "^3.0.1", - "set-value": "^2.0.0", - "to-object-path": "^0.3.0", - "union-value": "^1.0.0", - "unset-value": "^1.0.0" - } - }, - "call-bind": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/call-bind/-/call-bind-1.0.2.tgz", - "integrity": "sha512-7O+FbCihrB5WGbFYesctwmTKae6rOiIzmz1icreWJ+0aA7LJfuqhEso2T9ncpcFtzMQtzXf2QGGueWJGTYsqrA==", - "dev": true, - "requires": { - "function-bind": "^1.1.1", - "get-intrinsic": "^1.0.2" - } - }, - "call-me-maybe": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/call-me-maybe/-/call-me-maybe-1.0.1.tgz", - "integrity": "sha1-JtII6onje1y95gJQoV8DHBak1ms=", - "dev": true - }, - "caller-callsite": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/caller-callsite/-/caller-callsite-2.0.0.tgz", - "integrity": "sha1-hH4PzgoiN1CpoCfFSzNzGtMVQTQ=", - "dev": true, - "requires": { - "callsites": "^2.0.0" - } - }, - "caller-path": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/caller-path/-/caller-path-2.0.0.tgz", - "integrity": "sha1-Ro+DBE42mrIBD6xfBs7uFbsssfQ=", - "dev": true, - "requires": { - "caller-callsite": "^2.0.0" - } - }, - "callsites": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/callsites/-/callsites-2.0.0.tgz", - "integrity": "sha1-BuuE8A7qQT2oav/vrL/7Ngk7PFA=", - "dev": true - }, - "camelcase": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/camelcase/-/camelcase-3.0.0.tgz", - "integrity": "sha1-MvxLn82vhF/N9+c7uXysImHwqwo=", - "dev": true - }, - "camelcase-keys": { - "version": "4.2.0", - "resolved": "https://registry.npmjs.org/camelcase-keys/-/camelcase-keys-4.2.0.tgz", - "integrity": "sha1-oqpfsa9oh1glnDLBQUJteJI7m3c=", - "dev": true, - "requires": { - "camelcase": "^4.1.0", - "map-obj": "^2.0.0", - "quick-lru": "^1.0.0" - }, - "dependencies": { - "camelcase": { - "version": "4.1.0", - "resolved": "https://registry.npmjs.org/camelcase/-/camelcase-4.1.0.tgz", - "integrity": "sha1-1UVjW+HjPFQmScaRc+Xeas+uNN0=", - "dev": true - } - } - }, - "catharsis": { - "version": "0.9.0", - "resolved": "https://registry.npmjs.org/catharsis/-/catharsis-0.9.0.tgz", - "integrity": "sha512-prMTQVpcns/tzFgFVkVp6ak6RykZyWb3gu8ckUpd6YkTlacOd3DXGJjIpD4Q6zJirizvaiAjSSHlOsA+6sNh2A==", - "dev": true, - "requires": { - "lodash": "^4.17.15" - } - }, - "chai": { - "version": "4.2.0", - "resolved": "https://registry.npmjs.org/chai/-/chai-4.2.0.tgz", - "integrity": "sha512-XQU3bhBukrOsQCuwZndwGcCVQHyZi53fQ6Ys1Fym7E4olpIqqZZhhoFJoaKVvV17lWQoXYwgWN2nF5crA8J2jw==", - "dev": true, - "requires": { - "assertion-error": "^1.1.0", - "check-error": "^1.0.2", - "deep-eql": "^3.0.1", - "get-func-name": "^2.0.0", - "pathval": "^1.1.0", - "type-detect": "^4.0.5" - } - }, - "chalk": { - "version": "2.4.2", - "resolved": "https://registry.npmjs.org/chalk/-/chalk-2.4.2.tgz", - "integrity": "sha512-Mti+f9lpJNcwF4tWV8/OrTTtF1gZi+f8FqlyAdouralcFWFQWF2+NgCHShjkCb+IFBLq9buZwE1xckQU4peSuQ==", - "dev": true, - "requires": { - "ansi-styles": "^3.2.1", - "escape-string-regexp": "^1.0.5", - "supports-color": "^5.3.0" - }, - "dependencies": { - "supports-color": { - "version": "5.5.0", - "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-5.5.0.tgz", - "integrity": "sha512-QjVjwdXIt408MIiAqCX4oUKsgU2EqAGzs2Ppkm4aQYbjm+ZEWEcW4SfFNTr4uMNZma0ey4f5lgLrkB0aX0QMow==", - "dev": true, - "requires": { - "has-flag": "^3.0.0" - } - } - } - }, - "check-error": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/check-error/-/check-error-1.0.2.tgz", - "integrity": "sha1-V00xLt2Iu13YkS6Sht1sCu1KrII=", - "dev": true - }, - "chokidar": { - "version": "2.1.8", - "resolved": "https://registry.npmjs.org/chokidar/-/chokidar-2.1.8.tgz", - "integrity": "sha512-ZmZUazfOzf0Nve7duiCKD23PFSCs4JPoYyccjUFF3aQkQadqBhfzhjkwBH2mNOG9cTBwhamM37EIsIkZw3nRgg==", - "dev": true, - "requires": { - "anymatch": "^2.0.0", - "async-each": "^1.0.1", - "braces": "^2.3.2", - "fsevents": "^1.2.7", - "glob-parent": "^3.1.0", - "inherits": "^2.0.3", - "is-binary-path": "^1.0.0", - "is-glob": "^4.0.0", - "normalize-path": "^3.0.0", - "path-is-absolute": "^1.0.0", - "readdirp": "^2.2.1", - "upath": "^1.1.1" - }, - "dependencies": { - "normalize-path": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/normalize-path/-/normalize-path-3.0.0.tgz", - "integrity": "sha512-6eZs5Ls3WtCisHWp9S2GUy8dqkpGi4BVSz3GaqiE6ezub0512ESztXUwUB6C6IKbQkY2Pnb/mD4WYojCRwcwLA==", - "dev": true - } - } - }, - "class-utils": { - "version": "0.3.6", - "resolved": "https://registry.npmjs.org/class-utils/-/class-utils-0.3.6.tgz", - "integrity": "sha512-qOhPa/Fj7s6TY8H8esGu5QNpMMQxz79h+urzrNYN6mn+9BnxlDGf5QZ+XeCDsxSjPqsSR56XOZOJmpeurnLMeg==", - "dev": true, - "requires": { - "arr-union": "^3.1.0", - "define-property": "^0.2.5", - "isobject": "^3.0.0", - "static-extend": "^0.1.1" - }, - "dependencies": { - "define-property": { - "version": "0.2.5", - "resolved": "https://registry.npmjs.org/define-property/-/define-property-0.2.5.tgz", - "integrity": "sha1-w1se+RjsPJkPmlvFe+BKrOxcgRY=", - "dev": true, - "requires": { - "is-descriptor": "^0.1.0" - } - } - } - }, - "clean-css": { - "version": "4.2.3", - "resolved": "https://registry.npmjs.org/clean-css/-/clean-css-4.2.3.tgz", - "integrity": "sha512-VcMWDN54ZN/DS+g58HYL5/n4Zrqe8vHJpGA8KdgUXFU4fuP/aHNw8eld9SyEIyabIMJX/0RaY/fplOo5hYLSFA==", - "dev": true, - "requires": { - "source-map": "~0.6.0" - }, - "dependencies": { - "source-map": { - "version": "0.6.1", - "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.6.1.tgz", - "integrity": "sha512-UjgapumWlbMhkBgzT7Ykc5YXUT46F0iKu8SGXq0bcwP5dz/h0Plj6enJqjz1Zbq2l5WaqYnrVbwWOWMyF3F47g==", - "dev": true - } - } - }, - "cliui": { - "version": "3.2.0", - "resolved": "https://registry.npmjs.org/cliui/-/cliui-3.2.0.tgz", - "integrity": "sha1-EgYBU3qRbSmUD5NNo7SNWFo5IT0=", - "dev": true, - "requires": { - "string-width": "^1.0.1", - "strip-ansi": "^3.0.1", - "wrap-ansi": "^2.0.0" - } - }, - "clone": { - "version": "2.1.2", - "resolved": "https://registry.npmjs.org/clone/-/clone-2.1.2.tgz", - "integrity": "sha1-G39Ln1kfHo+DZwQBYANFoCiHQ18=", - "dev": true - }, - "clone-buffer": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/clone-buffer/-/clone-buffer-1.0.0.tgz", - "integrity": "sha1-4+JbIHrE5wGvch4staFnksrD3Fg=", - "dev": true - }, - "clone-stats": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/clone-stats/-/clone-stats-1.0.0.tgz", - "integrity": "sha1-s3gt/4u1R04Yuba/D9/ngvh3doA=", - "dev": true - }, - "cloneable-readable": { - "version": "1.1.2", - "resolved": "https://registry.npmjs.org/cloneable-readable/-/cloneable-readable-1.1.2.tgz", - "integrity": "sha512-Bq6+4t+lbM8vhTs/Bef5c5AdEMtapp/iFb6+s4/Hh9MVTt8OLKH7ZOOZSCT+Ys7hsHvqv0GuMPJ1lnQJVHvxpg==", - "dev": true, - "requires": { - "inherits": "^2.0.1", - "process-nextick-args": "^2.0.0", - "readable-stream": "^2.3.5" - } - }, - "code-point-at": { - "version": "1.1.0", - "resolved": "https://registry.npmjs.org/code-point-at/-/code-point-at-1.1.0.tgz", - "integrity": "sha1-DQcLTQQ6W+ozovGkDi7bPZpMz3c=", - "dev": true - }, - "collection-map": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/collection-map/-/collection-map-1.0.0.tgz", - "integrity": "sha1-rqDwb40mx4DCt1SUOFVEsiVa8Yw=", - "dev": true, - "requires": { - "arr-map": "^2.0.2", - "for-own": "^1.0.0", - "make-iterator": "^1.0.0" - } - }, - "collection-visit": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/collection-visit/-/collection-visit-1.0.0.tgz", - "integrity": "sha1-S8A3PBZLwykbTTaMgpzxqApZ3KA=", - "dev": true, - "requires": { - "map-visit": "^1.0.0", - "object-visit": "^1.0.0" - } - }, - "color-convert": { - "version": "1.9.3", - "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-1.9.3.tgz", - "integrity": "sha512-QfAUtd+vFdAtFQcC8CCyYt1fYWxSqAiK2cSD6zDB8N3cpsEBAvRxp9zOGg6G/SHHJYAT88/az/IuDGALsNVbGg==", - "dev": true, - "requires": { - "color-name": "1.1.3" - } - }, - "color-name": { - "version": "1.1.3", - "resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.3.tgz", - "integrity": "sha1-p9BVi9icQveV3UIyj3QIMcpTvCU=", - "dev": true - }, - "color-support": { - "version": "1.1.3", - "resolved": "https://registry.npmjs.org/color-support/-/color-support-1.1.3.tgz", - "integrity": "sha512-qiBjkpbMLO/HL68y+lh4q0/O1MZFj2RX6X/KmMa3+gJD3z+WwI1ZzDHysvqHGS3mP6mznPckpXmw1nI9cJjyRg==", - "dev": true - }, - "colors": { - "version": "1.4.0", - "resolved": "https://registry.npmjs.org/colors/-/colors-1.4.0.tgz", - "integrity": "sha512-a+UqTh4kgZg/SlGvfbzDHpgRu7AAQOmmqRHJnxhRZICKFUT91brVhNNt58CMWU9PsBbv3PDCZUHbVxuDiH2mtA==", - "dev": true - }, - "combined-stream": { - "version": "1.0.7", - "resolved": "https://registry.npmjs.org/combined-stream/-/combined-stream-1.0.7.tgz", - "integrity": "sha512-brWl9y6vOB1xYPZcpZde3N9zDByXTosAeMDo4p1wzo6UMOX4vumB+TP1RZ76sfE6Md68Q0NJSrE/gbezd4Ul+w==", - "dev": true, - "requires": { - "delayed-stream": "~1.0.0" - } - }, - "commander": { - "version": "2.19.0", - "resolved": "https://registry.npmjs.org/commander/-/commander-2.19.0.tgz", - "integrity": "sha512-6tvAOO+D6OENvRAh524Dh9jcfKTYDQAqvqezbCW82xj5X0pSrcpxtvRKHLG0yBY6SD7PSDrJaj+0AiOcKVd1Xg==", - "dev": true - }, - "comment-parser": { - "version": "1.1.2", - "resolved": "https://registry.npmjs.org/comment-parser/-/comment-parser-1.1.2.tgz", - "integrity": "sha512-AOdq0i8ghZudnYv8RUnHrhTgafUGs61Rdz9jemU5x2lnZwAWyOq7vySo626K59e1fVKH1xSRorJwPVRLSWOoAQ==", - "dev": true - }, - "component-emitter": { - "version": "1.3.0", - "resolved": "https://registry.npmjs.org/component-emitter/-/component-emitter-1.3.0.tgz", - "integrity": "sha512-Rd3se6QB+sO1TwqZjscQrurpEPIfO0/yYnSin6Q/rD3mOutHvUrCAhJub3r90uNb+SESBuE0QYoB90YdfatsRg==", - "dev": true - }, - "concat-map": { - "version": "0.0.1", - "resolved": "https://registry.npmjs.org/concat-map/-/concat-map-0.0.1.tgz", - "integrity": "sha1-2Klr13/Wjfd5OnMDajug1UBdR3s=", - "dev": true - }, - "concat-stream": { - "version": "1.6.2", - "resolved": "https://registry.npmjs.org/concat-stream/-/concat-stream-1.6.2.tgz", - "integrity": "sha512-27HBghJxjiZtIk3Ycvn/4kbJk/1uZuJFfuPEns6LaEvpvG1f0hTea8lilrouyo9mVc2GWdcEZ8OLoGmSADlrCw==", - "dev": true, - "requires": { - "buffer-from": "^1.0.0", - "inherits": "^2.0.3", - "readable-stream": "^2.2.2", - "typedarray": "^0.0.6" - } - }, - "concat-with-sourcemaps": { - "version": "1.1.0", - "resolved": "https://registry.npmjs.org/concat-with-sourcemaps/-/concat-with-sourcemaps-1.1.0.tgz", - "integrity": "sha512-4gEjHJFT9e+2W/77h/DS5SGUgwDaOwprX8L/gl5+3ixnzkVJJsZWDSelmN3Oilw3LNDZjZV0yqH1hLG3k6nghg==", - "dev": true, - "requires": { - "source-map": "^0.6.1" - }, - "dependencies": { - "source-map": { - "version": "0.6.1", - "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.6.1.tgz", - "integrity": "sha512-UjgapumWlbMhkBgzT7Ykc5YXUT46F0iKu8SGXq0bcwP5dz/h0Plj6enJqjz1Zbq2l5WaqYnrVbwWOWMyF3F47g==", - "dev": true - } - } - }, - "convert-source-map": { - "version": "1.7.0", - "resolved": "https://registry.npmjs.org/convert-source-map/-/convert-source-map-1.7.0.tgz", - "integrity": "sha512-4FJkXzKXEDB1snCFZlLP4gpC3JILicCpGbzG9f9G7tGqGCzETQ2hWPrcinA9oU4wtf2biUaEH5065UnMeR33oA==", - "dev": true, - "requires": { - "safe-buffer": "~5.1.1" - } - }, - "copy-descriptor": { - "version": "0.1.1", - "resolved": "https://registry.npmjs.org/copy-descriptor/-/copy-descriptor-0.1.1.tgz", - "integrity": "sha1-Z29us8OZl8LuGsOpJP1hJHSPV40=", - "dev": true - }, - "copy-props": { - "version": "2.0.5", - "resolved": "https://registry.npmjs.org/copy-props/-/copy-props-2.0.5.tgz", - "integrity": "sha512-XBlx8HSqrT0ObQwmSzM7WE5k8FxTV75h1DX1Z3n6NhQ/UYYAvInWYmG06vFt7hQZArE2fuO62aihiWIVQwh1sw==", - "dev": true, - "requires": { - "each-props": "^1.3.2", - "is-plain-object": "^5.0.0" - }, - "dependencies": { - "is-plain-object": { - "version": "5.0.0", - "resolved": "https://registry.npmjs.org/is-plain-object/-/is-plain-object-5.0.0.tgz", - "integrity": "sha512-VRSzKkbMm5jMDoKLbltAkFQ5Qr7VDiTFGXxYFXXowVj387GeGNOCsOH6Msy00SGZ3Fp84b1Naa1psqgcCIEP5Q==", - "dev": true - } - } - }, - "core-js": { - "version": "2.6.11", - "resolved": "https://registry.npmjs.org/core-js/-/core-js-2.6.11.tgz", - "integrity": "sha512-5wjnpaT/3dV+XB4borEsnAYQchn00XSgTAWKDkEqv+K8KevjbzmofK6hfJ9TZIlpj2N0xQpazy7PiRQiWHqzWg==", - "dev": true - }, - "core-util-is": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/core-util-is/-/core-util-is-1.0.2.tgz", - "integrity": "sha1-tf1UIgqivFq1eqtxQMlAdUUDwac=", - "dev": true - }, - "corser": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/corser/-/corser-2.0.1.tgz", - "integrity": "sha1-jtolLsqrWEDc2XXOuQ2TcMgZ/4c=", - "dev": true - }, - "cosmiconfig": { - "version": "5.2.1", - "resolved": "https://registry.npmjs.org/cosmiconfig/-/cosmiconfig-5.2.1.tgz", - "integrity": "sha512-H65gsXo1SKjf8zmrJ67eJk8aIRKV5ff2D4uKZIBZShbhGSpEmsQOPW/SKMKYhSTrqR7ufy6RP69rPogdaPh/kA==", - "dev": true, - "requires": { - "import-fresh": "^2.0.0", - "is-directory": "^0.3.1", - "js-yaml": "^3.13.1", - "parse-json": "^4.0.0" - }, - "dependencies": { - "parse-json": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/parse-json/-/parse-json-4.0.0.tgz", - "integrity": "sha1-vjX1Qlvh9/bHRxhPmKeIy5lHfuA=", - "dev": true, - "requires": { - "error-ex": "^1.3.1", - "json-parse-better-errors": "^1.0.1" - } - } - } - }, - "cross-spawn": { - "version": "6.0.5", - "resolved": "https://registry.npmjs.org/cross-spawn/-/cross-spawn-6.0.5.tgz", - "integrity": "sha512-eTVLrBSt7fjbDygz805pMnstIs2VTBNkRm0qxZd+M7A5XDdxVRWO5MxGBXZhjY4cqLYLdtrGqRf8mBPmzwSpWQ==", - "dev": true, - "requires": { - "nice-try": "^1.0.4", - "path-key": "^2.0.1", - "semver": "^5.5.0", - "shebang-command": "^1.2.0", - "which": "^1.2.9" - } - }, - "cssom": { - "version": "0.4.4", - "resolved": "https://registry.npmjs.org/cssom/-/cssom-0.4.4.tgz", - "integrity": "sha512-p3pvU7r1MyyqbTk+WbNJIgJjG2VmTIaB10rI93LzVPrmDJKkzKYMtxxyAvQXR/NS6otuzveI7+7BBq3SjBS2mw==", - "dev": true - }, - "cssstyle": { - "version": "2.3.0", - "resolved": "https://registry.npmjs.org/cssstyle/-/cssstyle-2.3.0.tgz", - "integrity": "sha512-AZL67abkUzIuvcHqk7c09cezpGNcxUxU4Ioi/05xHk4DQeTkWmGYftIE6ctU6AEt+Gn4n1lDStOtj7FKycP71A==", - "dev": true, - "requires": { - "cssom": "~0.3.6" - }, - "dependencies": { - "cssom": { - "version": "0.3.8", - "resolved": "https://registry.npmjs.org/cssom/-/cssom-0.3.8.tgz", - "integrity": "sha512-b0tGHbfegbhPJpxpiBPU2sCkigAqtM9O121le6bbOlgyV+NyGyCmVfJ6QW9eRjz8CpNfWEOYBIMIGRYkLwsIYg==", - "dev": true - } - } - }, - "cubic2quad": { - "version": "1.1.1", - "resolved": "https://registry.npmjs.org/cubic2quad/-/cubic2quad-1.1.1.tgz", - "integrity": "sha1-abGcYaP1tB7PLx1fro+wNBWqixU=", - "dev": true - }, - "currently-unhandled": { - "version": "0.4.1", - "resolved": "https://registry.npmjs.org/currently-unhandled/-/currently-unhandled-0.4.1.tgz", - "integrity": "sha1-mI3zP+qxke95mmE2nddsF635V+o=", - "dev": true, - "requires": { - "array-find-index": "^1.0.1" - } - }, - "d": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/d/-/d-1.0.1.tgz", - "integrity": "sha512-m62ShEObQ39CfralilEQRjH6oAMtNCV1xJyEx5LpRYUVN+EviphDgUc/F3hnYbADmkiNs67Y+3ylmlG7Lnu+FA==", - "dev": true, - "requires": { - "es5-ext": "^0.10.50", - "type": "^1.0.1" - } - }, - "danger": { - "version": "10.9.0", - "resolved": "https://registry.npmjs.org/danger/-/danger-10.9.0.tgz", - "integrity": "sha512-eEWQAaIPfWSfzlQiFx+w9fWuP3jwq8VAV9W22EZRxfmCBnkdDa5aN0Akr7lzfCKudzy+4uEmIGUtxnYeFgTthQ==", - "dev": true, - "requires": { - "@babel/polyfill": "^7.2.5", - "@octokit/rest": "^16.43.1", - "async-retry": "1.2.3", - "chalk": "^2.3.0", - "commander": "^2.18.0", - "debug": "^4.1.1", - "fast-json-patch": "^3.0.0-1", - "get-stdin": "^6.0.0", - "gitlab": "^10.0.1", - "http-proxy-agent": "^2.1.0", - "https-proxy-agent": "^2.2.1", - "hyperlinker": "^1.0.0", - "json5": "^2.1.0", - "jsonpointer": "^5.0.0", - "jsonwebtoken": "^8.4.0", - "lodash.find": "^4.6.0", - "lodash.includes": "^4.3.0", - "lodash.isobject": "^3.0.2", - "lodash.keys": "^4.0.8", - "lodash.mapvalues": "^4.6.0", - "lodash.memoize": "^4.1.2", - "memfs-or-file-map-to-github-branch": "^1.1.0", - "micromatch": "^4.0.4", - "node-cleanup": "^2.1.2", - "node-fetch": "^2.6.7", - "override-require": "^1.1.1", - "p-limit": "^2.1.0", - "parse-diff": "^0.7.0", - "parse-git-config": "^2.0.3", - "parse-github-url": "^1.0.2", - "parse-link-header": "^2.0.0", - "pinpoint": "^1.1.0", - "prettyjson": "^1.2.1", - "readline-sync": "^1.4.9", - "require-from-string": "^2.0.2", - "supports-hyperlinks": "^1.0.1" - }, - "dependencies": { - "braces": { - "version": "3.0.2", - "resolved": "https://registry.npmjs.org/braces/-/braces-3.0.2.tgz", - "integrity": "sha512-b8um+L1RzM3WDSzvhm6gIz1yfTbBt6YTlcEKAvsmqCZZFw46z626lVj9j1yEPW33H5H+lBQpZMP1k8l+78Ha0A==", - "dev": true, - "requires": { - "fill-range": "^7.0.1" - } - }, - "debug": { - "version": "4.2.0", - "resolved": "https://registry.npmjs.org/debug/-/debug-4.2.0.tgz", - "integrity": "sha512-IX2ncY78vDTjZMFUdmsvIRFY2Cf4FnD0wRs+nQwJU8Lu99/tPFdb0VybiiMTPe3I6rQmwsqQqRBvxU+bZ/I8sg==", - "dev": true, - "requires": { - "ms": "2.1.2" - } - }, - "fill-range": { - "version": "7.0.1", - "resolved": "https://registry.npmjs.org/fill-range/-/fill-range-7.0.1.tgz", - "integrity": "sha512-qOo9F+dMUmC2Lcb4BbVvnKJxTPjCm+RRpe4gDuGrzkL7mEVl/djYSu2OdQ2Pa302N4oqkSg9ir6jaLWJ2USVpQ==", - "dev": true, - "requires": { - "to-regex-range": "^5.0.1" - } - }, - "is-number": { - "version": "7.0.0", - "resolved": "https://registry.npmjs.org/is-number/-/is-number-7.0.0.tgz", - "integrity": "sha512-41Cifkg6e8TylSpdtTpeLVMqvSBEVzTttHvERD741+pnZ8ANv0004MRL43QKPDlK9cGvNp6NZWZUBlbGXYxxng==", - "dev": true - }, - "micromatch": { - "version": "4.0.4", - "resolved": "https://registry.npmjs.org/micromatch/-/micromatch-4.0.4.tgz", - "integrity": "sha512-pRmzw/XUcwXGpD9aI9q/0XOwLNygjETJ8y0ao0wdqprrzDa4YnxLcz7fQRZr8voh8V10kGhABbNcHVk5wHgWwg==", - "dev": true, - "requires": { - "braces": "^3.0.1", - "picomatch": "^2.2.3" - } - }, - "ms": { - "version": "2.1.2", - "resolved": "https://registry.npmjs.org/ms/-/ms-2.1.2.tgz", - "integrity": "sha512-sGkPx+VjMtmA6MX27oA4FBFELFCZZ4S4XqeGOXCv68tT+jb3vk/RyaKWP0PTKyWtmLSM0b+adUTEvbs1PEaH2w==", - "dev": true - }, - "node-fetch": { - "version": "2.6.7", - "resolved": "https://registry.npmjs.org/node-fetch/-/node-fetch-2.6.7.tgz", - "integrity": "sha512-ZjMPFEfVx5j+y2yF35Kzx5sF7kDzxuDj6ziH4FFbOp87zKDZNx8yExJIb05OGF4Nlt9IHFIMBkRl41VdvcNdbQ==", - "dev": true, - "requires": { - "whatwg-url": "^5.0.0" - } - }, - "to-regex-range": { - "version": "5.0.1", - "resolved": "https://registry.npmjs.org/to-regex-range/-/to-regex-range-5.0.1.tgz", - "integrity": "sha512-65P7iz6X5yEr1cwcgvQxbbIw7Uk3gOy5dIdtZ4rDveLqhrdJP+Li/Hx6tyK0NEb+2GCyneCMJiGqrADCSNk8sQ==", - "dev": true, - "requires": { - "is-number": "^7.0.0" - } - }, - "tr46": { - "version": "0.0.3", - "resolved": "https://registry.npmjs.org/tr46/-/tr46-0.0.3.tgz", - "integrity": "sha1-gYT9NH2snNwYWZLzpmIuFLnZq2o=", - "dev": true - }, - "webidl-conversions": { - "version": "3.0.1", - "resolved": "https://registry.npmjs.org/webidl-conversions/-/webidl-conversions-3.0.1.tgz", - "integrity": "sha1-JFNCdeKnvGvnvIZhHMFq4KVlSHE=", - "dev": true - }, - "whatwg-url": { - "version": "5.0.0", - "resolved": "https://registry.npmjs.org/whatwg-url/-/whatwg-url-5.0.0.tgz", - "integrity": "sha1-lmRU6HZUYuN2RNNib2dCzotwll0=", - "dev": true, - "requires": { - "tr46": "~0.0.3", - "webidl-conversions": "^3.0.0" - } - } - } - }, - "data-uri-to-buffer": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/data-uri-to-buffer/-/data-uri-to-buffer-4.0.0.tgz", - "integrity": "sha512-Vr3mLBA8qWmcuschSLAOogKgQ/Jwxulv3RNE4FXnYWRGujzrRWQI4m12fQqRkwX06C0KanhLr4hK+GydchZsaA==", - "dev": true - }, - "data-urls": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/data-urls/-/data-urls-2.0.0.tgz", - "integrity": "sha512-X5eWTSXO/BJmpdIKCRuKUgSCgAN0OwliVK3yPKbwIWU1Tdw5BRajxlzMidvh+gwko9AfQ9zIj52pzF91Q3YAvQ==", - "dev": true, - "requires": { - "abab": "^2.0.3", - "whatwg-mimetype": "^2.3.0", - "whatwg-url": "^8.0.0" - }, - "dependencies": { - "tr46": { - "version": "2.1.0", - "resolved": "https://registry.npmjs.org/tr46/-/tr46-2.1.0.tgz", - "integrity": "sha512-15Ih7phfcdP5YxqiB+iDtLoaTz4Nd35+IiAv0kQ5FNKHzXgdWqPoTIqEDDJmXceQt4JZk6lVPT8lnDlPpGDppw==", - "dev": true, - "requires": { - "punycode": "^2.1.1" - } - }, - "webidl-conversions": { - "version": "6.1.0", - "resolved": "https://registry.npmjs.org/webidl-conversions/-/webidl-conversions-6.1.0.tgz", - "integrity": "sha512-qBIvFLGiBpLjfwmYAaHPXsn+ho5xZnGvyGvsarywGNc8VyQJUMHJ8OBKGGrPER0okBeMDaan4mNBlgBROxuI8w==", - "dev": true - }, - "whatwg-url": { - "version": "8.7.0", - "resolved": "https://registry.npmjs.org/whatwg-url/-/whatwg-url-8.7.0.tgz", - "integrity": "sha512-gAojqb/m9Q8a5IV96E3fHJM70AzCkgt4uXYX2O7EmuyOnLrViCQlsEBmF9UQIu3/aeAIp2U17rtbpZWNntQqdg==", - "dev": true, - "requires": { - "lodash": "^4.7.0", - "tr46": "^2.1.0", - "webidl-conversions": "^6.1.0" - } - } - } - }, - "debug": { - "version": "2.6.9", - "resolved": "https://registry.npmjs.org/debug/-/debug-2.6.9.tgz", - "integrity": "sha512-bC7ElrdJaJnPbAP+1EotYvqZsb3ecl5wi6Bfi6BJTUcNowp6cvspg0jXznRTKDjm/E7AdgFBVeAPVMNcKGsHMA==", - "dev": true, - "requires": { - "ms": "2.0.0" - } - }, - "decamelize": { - "version": "1.2.0", - "resolved": "https://registry.npmjs.org/decamelize/-/decamelize-1.2.0.tgz", - "integrity": "sha1-9lNNFRSCabIDUue+4m9QH5oZEpA=", - "dev": true - }, - "decamelize-keys": { - "version": "1.1.0", - "resolved": "https://registry.npmjs.org/decamelize-keys/-/decamelize-keys-1.1.0.tgz", - "integrity": "sha1-0XGoeTMlKAfrPLYdwcFEXQeN8tk=", - "dev": true, - "requires": { - "decamelize": "^1.1.0", - "map-obj": "^1.0.0" - }, - "dependencies": { - "map-obj": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/map-obj/-/map-obj-1.0.1.tgz", - "integrity": "sha1-2TPOuSBdgr3PSIb2dCvcK03qFG0=", - "dev": true - } - } - }, - "decimal.js": { - "version": "10.3.1", - "resolved": "https://registry.npmjs.org/decimal.js/-/decimal.js-10.3.1.tgz", - "integrity": "sha512-V0pfhfr8suzyPGOx3nmq4aHqabehUZn6Ch9kyFpV79TGDTWFmHqUqXdabR7QHqxzrYolF4+tVmJhUG4OURg5dQ==", - "dev": true - }, - "decode-uri-component": { - "version": "0.2.0", - "resolved": "https://registry.npmjs.org/decode-uri-component/-/decode-uri-component-0.2.0.tgz", - "integrity": "sha1-6zkTMzRYd1y4TNGh+uBiEGu4dUU=", - "dev": true - }, - "deep-eql": { - "version": "3.0.1", - "resolved": "https://registry.npmjs.org/deep-eql/-/deep-eql-3.0.1.tgz", - "integrity": "sha512-+QeIQyN5ZuO+3Uk5DYh6/1eKO0m0YmJFGNmFHGACpf1ClL1nmlV/p4gNgbl2pJGxgXb4faqo6UE+M5ACEMyVcw==", - "dev": true, - "requires": { - "type-detect": "^4.0.0" - } - }, - "deep-is": { - "version": "0.1.3", - "resolved": "https://registry.npmjs.org/deep-is/-/deep-is-0.1.3.tgz", - "integrity": "sha1-s2nW+128E+7PUk+RsHD+7cNXzzQ=", - "dev": true - }, - "deepmerge": { - "version": "3.3.0", - "resolved": "https://registry.npmjs.org/deepmerge/-/deepmerge-3.3.0.tgz", - "integrity": "sha512-GRQOafGHwMHpjPx9iCvTgpu9NojZ49q794EEL94JVEw6VaeA8XTUyBKvAkOOjBX9oJNiV6G3P+T+tihFjo2TqA==", - "dev": true - }, - "default-compare": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/default-compare/-/default-compare-1.0.0.tgz", - "integrity": "sha512-QWfXlM0EkAbqOCbD/6HjdwT19j7WCkMyiRhWilc4H9/5h/RzTF9gv5LYh1+CmDV5d1rki6KAWLtQale0xt20eQ==", - "dev": true, - "requires": { - "kind-of": "^5.0.2" - }, - "dependencies": { - "kind-of": { - "version": "5.1.0", - "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-5.1.0.tgz", - "integrity": "sha512-NGEErnH6F2vUuXDh+OlbcKW7/wOcfdRHaZ7VWtqCztfHri/++YKmP51OdWeGPuqCOba6kk2OTe5d02VmTB80Pw==", - "dev": true - } - } - }, - "default-resolution": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/default-resolution/-/default-resolution-2.0.0.tgz", - "integrity": "sha1-vLgrqnKtebQmp2cy8aga1t8m1oQ=", - "dev": true - }, - "define-properties": { - "version": "1.1.3", - "resolved": "https://registry.npmjs.org/define-properties/-/define-properties-1.1.3.tgz", - "integrity": "sha512-3MqfYKj2lLzdMSf8ZIZE/V+Zuy+BgD6f164e8K2w7dgnpKArBDerGYpM46IYYcjnkdPNMjPk9A6VFB8+3SKlXQ==", - "dev": true, - "requires": { - "object-keys": "^1.0.12" - } - }, - "define-property": { - "version": "2.0.2", - "resolved": "https://registry.npmjs.org/define-property/-/define-property-2.0.2.tgz", - "integrity": "sha512-jwK2UV4cnPpbcG7+VRARKTZPUWowwXA8bzH5NP6ud0oeAxyYPuGZUAC7hMugpCdz4BeSZl2Dl9k66CHJ/46ZYQ==", - "dev": true, - "requires": { - "is-descriptor": "^1.0.2", - "isobject": "^3.0.1" - }, - "dependencies": { - "is-accessor-descriptor": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/is-accessor-descriptor/-/is-accessor-descriptor-1.0.0.tgz", - "integrity": "sha512-m5hnHTkcVsPfqx3AKlyttIPb7J+XykHvJP2B9bZDjlhLIoEq4XoK64Vg7boZlVWYK6LUY94dYPEE7Lh0ZkZKcQ==", - "dev": true, - "requires": { - "kind-of": "^6.0.0" - } - }, - "is-data-descriptor": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/is-data-descriptor/-/is-data-descriptor-1.0.0.tgz", - "integrity": "sha512-jbRXy1FmtAoCjQkVmIVYwuuqDFUbaOeDjmed1tOGPrsMhtJA4rD9tkgA0F1qJ3gRFRXcHYVkdeaP50Q5rE/jLQ==", - "dev": true, - "requires": { - "kind-of": "^6.0.0" - } - }, - "is-descriptor": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/is-descriptor/-/is-descriptor-1.0.2.tgz", - "integrity": "sha512-2eis5WqQGV7peooDyLmNEPUrps9+SXX5c9pL3xEB+4e9HnGuDa7mB7kHxHw4CbqS9k1T2hOH3miL8n8WtiYVtg==", - "dev": true, - "requires": { - "is-accessor-descriptor": "^1.0.0", - "is-data-descriptor": "^1.0.0", - "kind-of": "^6.0.2" - } - } - } - }, - "del": { - "version": "4.1.1", - "resolved": "https://registry.npmjs.org/del/-/del-4.1.1.tgz", - "integrity": "sha512-QwGuEUouP2kVwQenAsOof5Fv8K9t3D8Ca8NxcXKrIpEHjTXK5J2nXLdP+ALI1cgv8wj7KuwBhTwBkOZSJKM5XQ==", - "dev": true, - "requires": { - "@types/glob": "^7.1.1", - "globby": "^6.1.0", - "is-path-cwd": "^2.0.0", - "is-path-in-cwd": "^2.0.0", - "p-map": "^2.0.0", - "pify": "^4.0.1", - "rimraf": "^2.6.3" - }, - "dependencies": { - "pify": { - "version": "4.0.1", - "resolved": "https://registry.npmjs.org/pify/-/pify-4.0.1.tgz", - "integrity": "sha512-uB80kBFb/tfd68bVleG9T5GGsGPjJrLAUpR5PZIrhBnIaRTQRjqdJSsIKkOP6OAIFbj7GOrcudc5pNjZ+geV2g==", - "dev": true - } - } - }, - "delay": { - "version": "4.3.0", - "resolved": "https://registry.npmjs.org/delay/-/delay-4.3.0.tgz", - "integrity": "sha512-Lwaf3zVFDMBop1yDuFZ19F9WyGcZcGacsbdlZtWjQmM50tOcMntm1njF/Nb/Vjij3KaSvCF+sEYGKrrjObu2NA==", - "dev": true - }, - "delayed-stream": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/delayed-stream/-/delayed-stream-1.0.0.tgz", - "integrity": "sha1-3zrhmayt+31ECqrgsp4icrJOxhk=", - "dev": true - }, - "deprecation": { - "version": "2.3.1", - "resolved": "https://registry.npmjs.org/deprecation/-/deprecation-2.3.1.tgz", - "integrity": "sha512-xmHIy4F3scKVwMsQ4WnVaS8bHOx0DmVwRywosKhaILI0ywMDWPtBSku2HNxRvF7jtwDRsoEwYQSfbxj8b7RlJQ==", - "dev": true - }, - "detect-file": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/detect-file/-/detect-file-1.0.0.tgz", - "integrity": "sha1-8NZtA2cqglyxtzvbP+YjEMjlUrc=", - "dev": true - }, - "diff": { - "version": "5.0.0", - "resolved": "https://registry.npmjs.org/diff/-/diff-5.0.0.tgz", - "integrity": "sha512-/VTCrvm5Z0JGty/BWHljh+BAiw3IK+2j87NGMu8Nwc/f48WoDAC395uomO9ZD117ZOBaHmkX1oyLvkVM/aIT3w==", - "dev": true - }, - "dir-glob": { - "version": "2.2.2", - "resolved": "https://registry.npmjs.org/dir-glob/-/dir-glob-2.2.2.tgz", - "integrity": "sha512-f9LBi5QWzIW3I6e//uxZoLBlUt9kcp66qo0sSCxL6YZKc75R1c4MFCoe/LaZiBGmgujvQdxc5Bn3QhfyvK5Hsw==", - "dev": true, - "requires": { - "path-type": "^3.0.0" - }, - "dependencies": { - "path-type": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/path-type/-/path-type-3.0.0.tgz", - "integrity": "sha512-T2ZUsdZFHgA3u4e5PfPbjd7HDDpxPnQb5jN0SrDsjNSuVXHJqtwTnWqG0B1jZrgmJ/7lj1EmVIByWt1gxGkWvg==", - "dev": true, - "requires": { - "pify": "^3.0.0" - } - }, - "pify": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/pify/-/pify-3.0.0.tgz", - "integrity": "sha1-5aSs0sEB/fPZpNB/DbxNtJ3SgXY=", - "dev": true - } - } - }, - "docdash": { - "version": "1.2.0", - "resolved": "https://registry.npmjs.org/docdash/-/docdash-1.2.0.tgz", - "integrity": "sha512-IYZbgYthPTspgqYeciRJNPhSwL51yer7HAwDXhF5p+H7mTDbPvY3PCk/QDjNxdPCpWkaJVFC4t7iCNB/t9E5Kw==", - "dev": true - }, - "doctrine": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/doctrine/-/doctrine-3.0.0.tgz", - "integrity": "sha512-yS+Q5i3hBf7GBkd4KG8a7eBNNWNGLTaEwwYWUijIYM7zrlYDM0BFXHjjPWlWZ1Rg7UaddZeIDmi9jF3HmqiQ2w==", - "dev": true, - "requires": { - "esutils": "^2.0.2" - } - }, - "dom-serializer": { - "version": "0.2.2", - "resolved": "https://registry.npmjs.org/dom-serializer/-/dom-serializer-0.2.2.tgz", - "integrity": "sha512-2/xPb3ORsQ42nHYiSunXkDjPLBaEj/xTwUO4B7XCZQTRk7EBtTOPaygh10YAAh2OI1Qrp6NWfpAhzswj0ydt9g==", - "dev": true, - "requires": { - "domelementtype": "^2.0.1", - "entities": "^2.0.0" - } - }, - "domelementtype": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/domelementtype/-/domelementtype-2.0.1.tgz", - "integrity": "sha512-5HOHUDsYZWV8FGWN0Njbr/Rn7f/eWSQi1v7+HsUVwXgn8nWWlL64zKDkS0n8ZmQ3mlWOMuXOnR+7Nx/5tMO5AQ==", - "dev": true - }, - "domexception": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/domexception/-/domexception-2.0.1.tgz", - "integrity": "sha512-yxJ2mFy/sibVQlu5qHjOkf9J3K6zgmCxgJ94u2EdvDOV09H+32LtRswEcUsmUWN72pVLOEnTSRaIVVzVQgS0dg==", - "dev": true, - "requires": { - "webidl-conversions": "^5.0.0" - }, - "dependencies": { - "webidl-conversions": { - "version": "5.0.0", - "resolved": "https://registry.npmjs.org/webidl-conversions/-/webidl-conversions-5.0.0.tgz", - "integrity": "sha512-VlZwKPCkYKxQgeSbH5EyngOmRp7Ww7I9rQLERETtf5ofd9pGeswWiOtogpEO850jziPRarreGxn5QIiTqpb2wA==", - "dev": true - } - } - }, - "domhandler": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/domhandler/-/domhandler-3.0.0.tgz", - "integrity": "sha512-eKLdI5v9m67kbXQbJSNn1zjh0SDzvzWVWtX+qEI3eMjZw8daH9k8rlj1FZY9memPwjiskQFbe7vHVVJIAqoEhw==", - "dev": true, - "requires": { - "domelementtype": "^2.0.1" - } - }, - "domutils": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/domutils/-/domutils-2.0.0.tgz", - "integrity": "sha512-n5SelJ1axbO636c2yUtOGia/IcJtVtlhQbFiVDBZHKV5ReJO1ViX7sFEemtuyoAnBxk5meNSYgA8V4s0271efg==", - "dev": true, - "requires": { - "dom-serializer": "^0.2.1", - "domelementtype": "^2.0.1", - "domhandler": "^3.0.0" - } - }, - "duplexer": { - "version": "0.1.2", - "resolved": "https://registry.npmjs.org/duplexer/-/duplexer-0.1.2.tgz", - "integrity": "sha512-jtD6YG370ZCIi/9GTaJKQxWTZD045+4R4hTk/x1UyoqadyJ9x9CgSi1RlVDQF8U2sxLLSnFkCaMihqljHIWgMg==", - "dev": true - }, - "duplexify": { - "version": "3.7.1", - "resolved": "https://registry.npmjs.org/duplexify/-/duplexify-3.7.1.tgz", - "integrity": "sha512-07z8uv2wMyS51kKhD1KsdXJg5WQ6t93RneqRxUHnskXVtlYYkLqM0gqStQZ3pj073g687jPCHrqNfCzawLYh5g==", - "dev": true, - "requires": { - "end-of-stream": "^1.0.0", - "inherits": "^2.0.1", - "readable-stream": "^2.0.0", - "stream-shift": "^1.0.0" - } - }, - "each-props": { - "version": "1.3.2", - "resolved": "https://registry.npmjs.org/each-props/-/each-props-1.3.2.tgz", - "integrity": "sha512-vV0Hem3zAGkJAyU7JSjixeU66rwdynTAa1vofCrSA5fEln+m67Az9CcnkVD776/fsN/UjIWmBDoNRS6t6G9RfA==", - "dev": true, - "requires": { - "is-plain-object": "^2.0.1", - "object.defaults": "^1.1.0" - } - }, - "ecdsa-sig-formatter": { - "version": "1.0.11", - "resolved": "https://registry.npmjs.org/ecdsa-sig-formatter/-/ecdsa-sig-formatter-1.0.11.tgz", - "integrity": "sha512-nagl3RYrbNv6kQkeJIpt6NJZy8twLB/2vtz6yN9Z4vRKHN4/QZJIEbqohALSgwKdnksuY3k5Addp5lg8sVoVcQ==", - "dev": true, - "requires": { - "safe-buffer": "^5.0.1" - } - }, - "ecstatic": { - "version": "3.3.2", - "resolved": "https://registry.npmjs.org/ecstatic/-/ecstatic-3.3.2.tgz", - "integrity": "sha512-fLf9l1hnwrHI2xn9mEDT7KIi22UDqA2jaCwyCbSUJh9a1V+LEUSL/JO/6TIz/QyuBURWUHrFL5Kg2TtO1bkkog==", - "dev": true, - "requires": { - "he": "^1.1.1", - "mime": "^1.6.0", - "minimist": "^1.1.0", - "url-join": "^2.0.5" - } - }, - "editions": { - "version": "1.3.4", - "resolved": "https://registry.npmjs.org/editions/-/editions-1.3.4.tgz", - "integrity": "sha512-gzao+mxnYDzIysXKMQi/+M1mjy/rjestjg6OPoYTtI+3Izp23oiGZitsl9lPDPiTGXbcSIk1iJWhliSaglxnUg==", - "dev": true - }, - "emoji-regex": { - "version": "7.0.3", - "resolved": "https://registry.npmjs.org/emoji-regex/-/emoji-regex-7.0.3.tgz", - "integrity": "sha512-CwBLREIQ7LvYFB0WyRvwhq5N5qPhc6PMjD6bYggFlI5YyDgl+0vxq5VHbMOFqLg7hfWzmu8T5Z1QofhmTIhItA==", - "dev": true - }, - "end-of-stream": { - "version": "1.4.1", - "resolved": "https://registry.npmjs.org/end-of-stream/-/end-of-stream-1.4.1.tgz", - "integrity": "sha512-1MkrZNvWTKCaigbn+W15elq2BB/L22nqrSY5DKlo3X6+vclJm8Bb5djXJBmEX6fS3+zCh/F4VBK5Z2KxJt4s2Q==", - "dev": true, - "requires": { - "once": "^1.4.0" - } - }, - "enquirer": { - "version": "2.3.6", - "resolved": "https://registry.npmjs.org/enquirer/-/enquirer-2.3.6.tgz", - "integrity": "sha512-yjNnPr315/FjS4zIsUxYguYUPP2e1NK4d7E7ZOLiyYCcbFBiTMyID+2wvm2w6+pZ/odMA7cRkjhsPbltwBOrLg==", - "dev": true, - "requires": { - "ansi-colors": "^4.1.1" - }, - "dependencies": { - "ansi-colors": { - "version": "4.1.1", - "resolved": "https://registry.npmjs.org/ansi-colors/-/ansi-colors-4.1.1.tgz", - "integrity": "sha512-JoX0apGbHaUJBNl6yF+p6JAFYZ666/hhCGKN5t9QFjbJQKUU/g8MNbFDbvfrgKXvI1QpZplPOnwIo99lX/AAmA==", - "dev": true - } - } - }, - "entities": { - "version": "2.1.0", - "resolved": "https://registry.npmjs.org/entities/-/entities-2.1.0.tgz", - "integrity": "sha512-hCx1oky9PFrJ611mf0ifBLBRW8lUUVRlFolb5gWRfIELabBlbp9xZvrqZLZAs+NxFnbfQoeGd8wDkygjg7U85w==", - "dev": true - }, - "error-ex": { - "version": "1.3.2", - "resolved": "https://registry.npmjs.org/error-ex/-/error-ex-1.3.2.tgz", - "integrity": "sha512-7dFHNmqeFSEt2ZBsCriorKnn3Z2pj+fd9kmI6QoWw4//DL+icEBfc0U7qJCisqrTsKTjw4fNFy2pW9OqStD84g==", - "dev": true, - "requires": { - "is-arrayish": "^0.2.1" - } - }, - "es5-ext": { - "version": "0.10.53", - "resolved": "https://registry.npmjs.org/es5-ext/-/es5-ext-0.10.53.tgz", - "integrity": "sha512-Xs2Stw6NiNHWypzRTY1MtaG/uJlwCk8kH81920ma8mvN8Xq1gsfhZvpkImLQArw8AHnv8MT2I45J3c0R8slE+Q==", - "dev": true, - "requires": { - "es6-iterator": "~2.0.3", - "es6-symbol": "~3.1.3", - "next-tick": "~1.0.0" - } - }, - "es6-iterator": { - "version": "2.0.3", - "resolved": "https://registry.npmjs.org/es6-iterator/-/es6-iterator-2.0.3.tgz", - "integrity": "sha1-p96IkUGgWpSwhUQDstCg+/qY87c=", - "dev": true, - "requires": { - "d": "1", - "es5-ext": "^0.10.35", - "es6-symbol": "^3.1.1" - } - }, - "es6-promise": { - "version": "4.2.8", - "resolved": "https://registry.npmjs.org/es6-promise/-/es6-promise-4.2.8.tgz", - "integrity": "sha512-HJDGx5daxeIvxdBxvG2cb9g4tEvwIk3i8+nhX0yGrYmZUzbkdg8QbDevheDB8gd0//uPj4c1EQua8Q+MViT0/w==", - "dev": true - }, - "es6-promisify": { - "version": "5.0.0", - "resolved": "https://registry.npmjs.org/es6-promisify/-/es6-promisify-5.0.0.tgz", - "integrity": "sha1-UQnWLz5W6pZ8S2NQWu8IKRyKUgM=", - "dev": true, - "requires": { - "es6-promise": "^4.0.3" - } - }, - "es6-symbol": { - "version": "3.1.3", - "resolved": "https://registry.npmjs.org/es6-symbol/-/es6-symbol-3.1.3.tgz", - "integrity": "sha512-NJ6Yn3FuDinBaBRWl/q5X/s4koRHBrgKAu+yGI6JCBeiu3qrcbJhwT2GeR/EXVfylRk8dpQVJoLEFhK+Mu31NA==", - "dev": true, - "requires": { - "d": "^1.0.1", - "ext": "^1.1.2" - } - }, - "es6-weak-map": { - "version": "2.0.3", - "resolved": "https://registry.npmjs.org/es6-weak-map/-/es6-weak-map-2.0.3.tgz", - "integrity": "sha512-p5um32HOTO1kP+w7PRnB+5lQ43Z6muuMuIMffvDN8ZB4GcnjLBV6zGStpbASIMk4DCAvEaamhe2zhyCb/QXXsA==", - "dev": true, - "requires": { - "d": "1", - "es5-ext": "^0.10.46", - "es6-iterator": "^2.0.3", - "es6-symbol": "^3.1.1" - } - }, - "escalade": { - "version": "3.1.1", - "resolved": "https://registry.npmjs.org/escalade/-/escalade-3.1.1.tgz", - "integrity": "sha512-k0er2gUkLf8O0zKJiAhmkTnJlTvINGv7ygDNPbeIsX/TJjGJZHuh9B2UxbsaEkmlEo9MfhrSzmhIlhRlI2GXnw==", - "dev": true - }, - "escape-string-regexp": { - "version": "1.0.5", - "resolved": "https://registry.npmjs.org/escape-string-regexp/-/escape-string-regexp-1.0.5.tgz", - "integrity": "sha1-G2HAViGQqN/2rjuyzwIAyhMLhtQ=", - "dev": true - }, - "escodegen": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/escodegen/-/escodegen-2.0.0.tgz", - "integrity": "sha512-mmHKys/C8BFUGI+MAWNcSYoORYLMdPzjrknd2Vc+bUsjN5bXcr8EhrNB+UTqfL1y3I9c4fw2ihgtMPQLBRiQxw==", - "dev": true, - "requires": { - "esprima": "^4.0.1", - "estraverse": "^5.2.0", - "esutils": "^2.0.2", - "optionator": "^0.8.1", - "source-map": "~0.6.1" - }, - "dependencies": { - "estraverse": { - "version": "5.2.0", - "resolved": "https://registry.npmjs.org/estraverse/-/estraverse-5.2.0.tgz", - "integrity": "sha512-BxbNGGNm0RyRYvUdHpIwv9IWzeM9XClbOxwoATuFdOE7ZE6wHL+HQ5T8hoPM+zHvmKzzsEqhgy0GrQ5X13afiQ==", - "dev": true - }, - "source-map": { - "version": "0.6.1", - "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.6.1.tgz", - "integrity": "sha512-UjgapumWlbMhkBgzT7Ykc5YXUT46F0iKu8SGXq0bcwP5dz/h0Plj6enJqjz1Zbq2l5WaqYnrVbwWOWMyF3F47g==", - "dev": true, - "optional": true - } - } - }, - "eslint": { - "version": "7.22.0", - "resolved": "https://registry.npmjs.org/eslint/-/eslint-7.22.0.tgz", - "integrity": "sha512-3VawOtjSJUQiiqac8MQc+w457iGLfuNGLFn8JmF051tTKbh5/x/0vlcEj8OgDCaw7Ysa2Jn8paGshV7x2abKXg==", - "dev": true, - "requires": { - "@babel/code-frame": "7.12.11", - "@eslint/eslintrc": "^0.4.0", - "ajv": "^6.10.0", - "chalk": "^4.0.0", - "cross-spawn": "^7.0.2", - "debug": "^4.0.1", - "doctrine": "^3.0.0", - "enquirer": "^2.3.5", - "eslint-scope": "^5.1.1", - "eslint-utils": "^2.1.0", - "eslint-visitor-keys": "^2.0.0", - "espree": "^7.3.1", - "esquery": "^1.4.0", - "esutils": "^2.0.2", - "file-entry-cache": "^6.0.1", - "functional-red-black-tree": "^1.0.1", - "glob-parent": "^5.0.0", - "globals": "^13.6.0", - "ignore": "^4.0.6", - "import-fresh": "^3.0.0", - "imurmurhash": "^0.1.4", - "is-glob": "^4.0.0", - "js-yaml": "^3.13.1", - "json-stable-stringify-without-jsonify": "^1.0.1", - "levn": "^0.4.1", - "lodash": "^4.17.21", - "minimatch": "^3.0.4", - "natural-compare": "^1.4.0", - "optionator": "^0.9.1", - "progress": "^2.0.0", - "regexpp": "^3.1.0", - "semver": "^7.2.1", - "strip-ansi": "^6.0.0", - "strip-json-comments": "^3.1.0", - "table": "^6.0.4", - "text-table": "^0.2.0", - "v8-compile-cache": "^2.0.3" - }, - "dependencies": { - "ansi-regex": { - "version": "5.0.1", - "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-5.0.1.tgz", - "integrity": "sha512-quJQXlTSUGL2LH9SUXo8VwsY4soanhgo6LNSm84E1LBcE8s3O0wpdiRzyR9z/ZZJMlMWv37qOOb9pdJlMUEKFQ==", - "dev": true - }, - "ansi-styles": { - "version": "4.3.0", - "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-4.3.0.tgz", - "integrity": "sha512-zbB9rCJAT1rbjiVDb2hqKFHNYLxgtk8NURxZ3IZwD3F6NtxbXZQCnnSi1Lkx+IDohdPlFp222wVALIheZJQSEg==", - "dev": true, - "requires": { - "color-convert": "^2.0.1" - } - }, - "chalk": { - "version": "4.1.0", - "resolved": "https://registry.npmjs.org/chalk/-/chalk-4.1.0.tgz", - "integrity": "sha512-qwx12AxXe2Q5xQ43Ac//I6v5aXTipYrSESdOgzrN+9XjgEpyjpKuvSGaN4qE93f7TQTlerQQ8S+EQ0EyDoVL1A==", - "dev": true, - "requires": { - "ansi-styles": "^4.1.0", - "supports-color": "^7.1.0" - } - }, - "color-convert": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-2.0.1.tgz", - "integrity": "sha512-RRECPsj7iu/xb5oKYcsFHSppFNnsj/52OVTRKb4zP5onXwVF3zVmmToNcOfGC+CRDpfK/U584fMg38ZHCaElKQ==", - "dev": true, - "requires": { - "color-name": "~1.1.4" - } - }, - "color-name": { - "version": "1.1.4", - "resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.4.tgz", - "integrity": "sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA==", - "dev": true - }, - "cross-spawn": { - "version": "7.0.3", - "resolved": "https://registry.npmjs.org/cross-spawn/-/cross-spawn-7.0.3.tgz", - "integrity": "sha512-iRDPJKUPVEND7dHPO8rkbOnPpyDygcDFtWjpeWNCgy8WP2rXcxXL8TskReQl6OrB2G7+UJrags1q15Fudc7G6w==", - "dev": true, - "requires": { - "path-key": "^3.1.0", - "shebang-command": "^2.0.0", - "which": "^2.0.1" - } - }, - "debug": { - "version": "4.3.1", - "resolved": "https://registry.npmjs.org/debug/-/debug-4.3.1.tgz", - "integrity": "sha512-doEwdvm4PCeK4K3RQN2ZC2BYUBaxwLARCqZmMjtF8a51J2Rb0xpVloFRnCODwqjpwnAoao4pelN8l3RJdv3gRQ==", - "dev": true, - "requires": { - "ms": "2.1.2" - } - }, - "glob-parent": { - "version": "5.1.2", - "resolved": "https://registry.npmjs.org/glob-parent/-/glob-parent-5.1.2.tgz", - "integrity": "sha512-AOIgSQCepiJYwP3ARnGx+5VnTu2HBYdzbGP45eLw1vr3zB3vZLeyed1sC9hnbcOc9/SrMyM5RPQrkGz4aS9Zow==", - "dev": true, - "requires": { - "is-glob": "^4.0.1" - } - }, - "has-flag": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-4.0.0.tgz", - "integrity": "sha512-EykJT/Q1KjTWctppgIAgfSO0tKVuZUjhgMr17kqTumMl6Afv3EISleU7qZUzoXDFTAHTDC4NOoG/ZxU3EvlMPQ==", - "dev": true - }, - "import-fresh": { - "version": "3.3.0", - "resolved": "https://registry.npmjs.org/import-fresh/-/import-fresh-3.3.0.tgz", - "integrity": "sha512-veYYhQa+D1QBKznvhUHxb8faxlrwUnxseDAbAp457E0wLNio2bOSKnjYDhMj+YiAq61xrMGhQk9iXVk5FzgQMw==", - "dev": true, - "requires": { - "parent-module": "^1.0.0", - "resolve-from": "^4.0.0" - } - }, - "levn": { - "version": "0.4.1", - "resolved": "https://registry.npmjs.org/levn/-/levn-0.4.1.tgz", - "integrity": "sha512-+bT2uH4E5LGE7h/n3evcS/sQlJXCpIp6ym8OWJ5eV6+67Dsql/LaaT7qJBAt2rzfoa/5QBGBhxDix1dMt2kQKQ==", - "dev": true, - "requires": { - "prelude-ls": "^1.2.1", - "type-check": "~0.4.0" - } - }, - "ms": { - "version": "2.1.2", - "resolved": "https://registry.npmjs.org/ms/-/ms-2.1.2.tgz", - "integrity": "sha512-sGkPx+VjMtmA6MX27oA4FBFELFCZZ4S4XqeGOXCv68tT+jb3vk/RyaKWP0PTKyWtmLSM0b+adUTEvbs1PEaH2w==", - "dev": true - }, - "optionator": { - "version": "0.9.1", - "resolved": "https://registry.npmjs.org/optionator/-/optionator-0.9.1.tgz", - "integrity": "sha512-74RlY5FCnhq4jRxVUPKDaRwrVNXMqsGsiW6AJw4XK8hmtm10wC0ypZBLw5IIp85NZMr91+qd1RvvENwg7jjRFw==", - "dev": true, - "requires": { - "deep-is": "^0.1.3", - "fast-levenshtein": "^2.0.6", - "levn": "^0.4.1", - "prelude-ls": "^1.2.1", - "type-check": "^0.4.0", - "word-wrap": "^1.2.3" - } - }, - "path-key": { - "version": "3.1.1", - "resolved": "https://registry.npmjs.org/path-key/-/path-key-3.1.1.tgz", - "integrity": "sha512-ojmeN0qd+y0jszEtoY48r0Peq5dwMEkIlCOu6Q5f41lfkswXuKtYrhgoTpLnyIcHm24Uhqx+5Tqm2InSwLhE6Q==", - "dev": true - }, - "prelude-ls": { - "version": "1.2.1", - "resolved": "https://registry.npmjs.org/prelude-ls/-/prelude-ls-1.2.1.tgz", - "integrity": "sha512-vkcDPrRZo1QZLbn5RLGPpg/WmIQ65qoWWhcGKf/b5eplkkarX0m9z8ppCat4mlOqUsWpyNuYgO3VRyrYHSzX5g==", - "dev": true - }, - "resolve-from": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/resolve-from/-/resolve-from-4.0.0.tgz", - "integrity": "sha512-pb/MYmXstAkysRFx8piNI1tGFNQIFA3vkE3Gq4EuA1dF6gHp/+vgZqsCGJapvy8N3Q+4o7FwvquPJcnZ7RYy4g==", - "dev": true - }, - "semver": { - "version": "7.3.5", - "resolved": "https://registry.npmjs.org/semver/-/semver-7.3.5.tgz", - "integrity": "sha512-PoeGJYh8HK4BTO/a9Tf6ZG3veo/A7ZVsYrSA6J8ny9nb3B1VrpkuN+z9OE5wfE5p6H4LchYZsegiQgbJD94ZFQ==", - "dev": true, - "requires": { - "lru-cache": "^6.0.0" - } - }, - "shebang-command": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/shebang-command/-/shebang-command-2.0.0.tgz", - "integrity": "sha512-kHxr2zZpYtdmrN1qDjrrX/Z1rR1kG8Dx+gkpK1G4eXmvXswmcE1hTWBWYUzlraYw1/yZp6YuDY77YtvbN0dmDA==", - "dev": true, - "requires": { - "shebang-regex": "^3.0.0" - } - }, - "shebang-regex": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/shebang-regex/-/shebang-regex-3.0.0.tgz", - "integrity": "sha512-7++dFhtcx3353uBaq8DDR4NuxBetBzC7ZQOhmTQInHEd6bSrXdiEyzCvG07Z44UYdLShWUyXt5M/yhz8ekcb1A==", - "dev": true - }, - "strip-ansi": { - "version": "6.0.0", - "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-6.0.0.tgz", - "integrity": "sha512-AuvKTrTfQNYNIctbR1K/YGTR1756GycPsg7b9bdV9Duqur4gv6aKqHXah67Z8ImS7WEz5QVcOtlfW2rZEugt6w==", - "dev": true, - "requires": { - "ansi-regex": "^5.0.0" - } - }, - "supports-color": { - "version": "7.2.0", - "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-7.2.0.tgz", - "integrity": "sha512-qpCAvRl9stuOHveKsn7HncJRvv501qIacKzQlO/+Lwxc9+0q2wLyv4Dfvt80/DPn2pqOBsJdDiogXGR9+OvwRw==", - "dev": true, - "requires": { - "has-flag": "^4.0.0" - } - }, - "type-check": { - "version": "0.4.0", - "resolved": "https://registry.npmjs.org/type-check/-/type-check-0.4.0.tgz", - "integrity": "sha512-XleUoc9uwGXqjWwXaUTZAmzMcFZ5858QA2vvx1Ur5xIcixXIP+8LnFDgRplU30us6teqdlskFfu+ae4K79Ooew==", - "dev": true, - "requires": { - "prelude-ls": "^1.2.1" - } - }, - "which": { - "version": "2.0.2", - "resolved": "https://registry.npmjs.org/which/-/which-2.0.2.tgz", - "integrity": "sha512-BLI3Tl1TW3Pvl70l3yq3Y64i+awpwXqsGBYWkkqMtnbXgrMD+yj7rhW0kuEDxzJaYXGjEW5ogapKNMEKNMjibA==", - "dev": true, - "requires": { - "isexe": "^2.0.0" - } - } - } - }, - "eslint-plugin-jsdoc": { - "version": "32.3.0", - "resolved": "https://registry.npmjs.org/eslint-plugin-jsdoc/-/eslint-plugin-jsdoc-32.3.0.tgz", - "integrity": "sha512-zyx7kajDK+tqS1bHuY5sapkad8P8KT0vdd/lE55j47VPG2MeenSYuIY/M/Pvmzq5g0+3JB+P3BJGUXmHxtuKPQ==", - "dev": true, - "requires": { - "comment-parser": "1.1.2", - "debug": "^4.3.1", - "jsdoctypeparser": "^9.0.0", - "lodash": "^4.17.20", - "regextras": "^0.7.1", - "semver": "^7.3.4", - "spdx-expression-parse": "^3.0.1" - }, - "dependencies": { - "debug": { - "version": "4.3.1", - "resolved": "https://registry.npmjs.org/debug/-/debug-4.3.1.tgz", - "integrity": "sha512-doEwdvm4PCeK4K3RQN2ZC2BYUBaxwLARCqZmMjtF8a51J2Rb0xpVloFRnCODwqjpwnAoao4pelN8l3RJdv3gRQ==", - "dev": true, - "requires": { - "ms": "2.1.2" - } - }, - "ms": { - "version": "2.1.2", - "resolved": "https://registry.npmjs.org/ms/-/ms-2.1.2.tgz", - "integrity": "sha512-sGkPx+VjMtmA6MX27oA4FBFELFCZZ4S4XqeGOXCv68tT+jb3vk/RyaKWP0PTKyWtmLSM0b+adUTEvbs1PEaH2w==", - "dev": true - }, - "semver": { - "version": "7.3.5", - "resolved": "https://registry.npmjs.org/semver/-/semver-7.3.5.tgz", - "integrity": "sha512-PoeGJYh8HK4BTO/a9Tf6ZG3veo/A7ZVsYrSA6J8ny9nb3B1VrpkuN+z9OE5wfE5p6H4LchYZsegiQgbJD94ZFQ==", - "dev": true, - "requires": { - "lru-cache": "^6.0.0" - } - }, - "spdx-expression-parse": { - "version": "3.0.1", - "resolved": "https://registry.npmjs.org/spdx-expression-parse/-/spdx-expression-parse-3.0.1.tgz", - "integrity": "sha512-cbqHunsQWnJNE6KhVSMsMeH5H/L9EpymbzqTQ3uLwNCLZ1Q481oWaofqH7nO6V07xlXwY6PhQdQ2IedWx/ZK4Q==", - "dev": true, - "requires": { - "spdx-exceptions": "^2.1.0", - "spdx-license-ids": "^3.0.0" - } - } - } - }, - "eslint-plugin-regexp": { - "version": "1.6.0", - "resolved": "https://registry.npmjs.org/eslint-plugin-regexp/-/eslint-plugin-regexp-1.6.0.tgz", - "integrity": "sha512-xkaQOzyY4PUukRd8b6zTq+QTtg0dePlCP2dZiM+XGSmvlpDeYiPJHfRDpAfS/sP9YtK6q7DGes1smCyPTD3Lkg==", - "dev": true, - "requires": { - "comment-parser": "^1.1.2", - "eslint-utils": "^3.0.0", - "grapheme-splitter": "^1.0.4", - "jsdoctypeparser": "^9.0.0", - "refa": "^0.9.0", - "regexp-ast-analysis": "^0.3.0", - "regexpp": "^3.2.0", - "scslre": "^0.1.6" - }, - "dependencies": { - "eslint-utils": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/eslint-utils/-/eslint-utils-3.0.0.tgz", - "integrity": "sha512-uuQC43IGctw68pJA1RgbQS8/NP7rch6Cwd4j3ZBtgo4/8Flj4eGE7ZYSZRN3iq5pVUv6GPdW5Z1RFleo84uLDA==", - "dev": true, - "requires": { - "eslint-visitor-keys": "^2.0.0" - } - }, - "regexp-ast-analysis": { - "version": "0.3.0", - "resolved": "https://registry.npmjs.org/regexp-ast-analysis/-/regexp-ast-analysis-0.3.0.tgz", - "integrity": "sha512-11PlbBSUxwWpdj6BdZUKfhDdV9g+cveqHB+BqBQDBD7ZermDBVgtyowUaXTvT0dO3tZYo2bDIr/GoED6X1aYSA==", - "dev": true, - "requires": { - "refa": "^0.9.0", - "regexpp": "^3.2.0" - } - } - } - }, - "eslint-scope": { - "version": "5.1.1", - "resolved": "https://registry.npmjs.org/eslint-scope/-/eslint-scope-5.1.1.tgz", - "integrity": "sha512-2NxwbF/hZ0KpepYN0cNbo+FN6XoK7GaHlQhgx/hIZl6Va0bF45RQOOwhLIy8lQDbuCiadSLCBnH2CFYquit5bw==", - "dev": true, - "requires": { - "esrecurse": "^4.3.0", - "estraverse": "^4.1.1" - } - }, - "eslint-utils": { - "version": "2.1.0", - "resolved": "https://registry.npmjs.org/eslint-utils/-/eslint-utils-2.1.0.tgz", - "integrity": "sha512-w94dQYoauyvlDc43XnGB8lU3Zt713vNChgt4EWwhXAP2XkBvndfxF0AgIqKOOasjPIPzj9JqgwkwbCYD0/V3Zg==", - "dev": true, - "requires": { - "eslint-visitor-keys": "^1.1.0" - }, - "dependencies": { - "eslint-visitor-keys": { - "version": "1.3.0", - "resolved": "https://registry.npmjs.org/eslint-visitor-keys/-/eslint-visitor-keys-1.3.0.tgz", - "integrity": "sha512-6J72N8UNa462wa/KFODt/PJ3IU60SDpC3QXC1Hjc1BXXpfL2C9R5+AU7jhe0F6GREqVMh4Juu+NY7xn+6dipUQ==", - "dev": true - } - } - }, - "eslint-visitor-keys": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/eslint-visitor-keys/-/eslint-visitor-keys-2.0.0.tgz", - "integrity": "sha512-QudtT6av5WXels9WjIM7qz1XD1cWGvX4gGXvp/zBn9nXG02D0utdU3Em2m/QjTnrsk6bBjmCygl3rmj118msQQ==", - "dev": true - }, - "espree": { - "version": "7.3.1", - "resolved": "https://registry.npmjs.org/espree/-/espree-7.3.1.tgz", - "integrity": "sha512-v3JCNCE64umkFpmkFGqzVKsOT0tN1Zr+ueqLZfpV1Ob8e+CEgPWa+OxCoGH3tnhimMKIaBm4m/vaRpJ/krRz2g==", - "dev": true, - "requires": { - "acorn": "^7.4.0", - "acorn-jsx": "^5.3.1", - "eslint-visitor-keys": "^1.3.0" - }, - "dependencies": { - "acorn": { - "version": "7.4.1", - "resolved": "https://registry.npmjs.org/acorn/-/acorn-7.4.1.tgz", - "integrity": "sha512-nQyp0o1/mNdbTO1PO6kHkwSrmgZ0MT/jCCpNiwbUjGoRN4dlBhqJtoQuCnEOKzgTVwg0ZWiCoQy6SxMebQVh8A==", - "dev": true - }, - "eslint-visitor-keys": { - "version": "1.3.0", - "resolved": "https://registry.npmjs.org/eslint-visitor-keys/-/eslint-visitor-keys-1.3.0.tgz", - "integrity": "sha512-6J72N8UNa462wa/KFODt/PJ3IU60SDpC3QXC1Hjc1BXXpfL2C9R5+AU7jhe0F6GREqVMh4Juu+NY7xn+6dipUQ==", - "dev": true - } - } - }, - "esprima": { - "version": "4.0.1", - "resolved": "https://registry.npmjs.org/esprima/-/esprima-4.0.1.tgz", - "integrity": "sha512-eGuFFw7Upda+g4p+QHvnW0RyTX/SVeJBDM/gCtMARO0cLuT2HcEKnTPvhjV6aGeqrCB/sbNop0Kszm0jsaWU4A==", - "dev": true - }, - "esquery": { - "version": "1.4.0", - "resolved": "https://registry.npmjs.org/esquery/-/esquery-1.4.0.tgz", - "integrity": "sha512-cCDispWt5vHHtwMY2YrAQ4ibFkAL8RbH5YGBnZBc90MolvvfkkQcJro/aZiAQUlQ3qgrYS6D6v8Gc5G5CQsc9w==", - "dev": true, - "requires": { - "estraverse": "^5.1.0" - }, - "dependencies": { - "estraverse": { - "version": "5.2.0", - "resolved": "https://registry.npmjs.org/estraverse/-/estraverse-5.2.0.tgz", - "integrity": "sha512-BxbNGGNm0RyRYvUdHpIwv9IWzeM9XClbOxwoATuFdOE7ZE6wHL+HQ5T8hoPM+zHvmKzzsEqhgy0GrQ5X13afiQ==", - "dev": true - } - } - }, - "esrecurse": { - "version": "4.3.0", - "resolved": "https://registry.npmjs.org/esrecurse/-/esrecurse-4.3.0.tgz", - "integrity": "sha512-KmfKL3b6G+RXvP8N1vr3Tq1kL/oCFgn2NYXEtqP8/L3pKapUA4G8cFVaoF3SU323CD4XypR/ffioHmkti6/Tag==", - "dev": true, - "requires": { - "estraverse": "^5.2.0" - }, - "dependencies": { - "estraverse": { - "version": "5.2.0", - "resolved": "https://registry.npmjs.org/estraverse/-/estraverse-5.2.0.tgz", - "integrity": "sha512-BxbNGGNm0RyRYvUdHpIwv9IWzeM9XClbOxwoATuFdOE7ZE6wHL+HQ5T8hoPM+zHvmKzzsEqhgy0GrQ5X13afiQ==", - "dev": true - } - } - }, - "estraverse": { - "version": "4.2.0", - "resolved": "https://registry.npmjs.org/estraverse/-/estraverse-4.2.0.tgz", - "integrity": "sha1-De4/7TH81GlhjOc0IJn8GvoL2xM=", - "dev": true - }, - "esutils": { - "version": "2.0.2", - "resolved": "https://registry.npmjs.org/esutils/-/esutils-2.0.2.tgz", - "integrity": "sha1-Cr9PHKpbyx96nYrMbepPqqBLrJs=", - "dev": true - }, - "event-target-shim": { - "version": "5.0.1", - "resolved": "https://registry.npmjs.org/event-target-shim/-/event-target-shim-5.0.1.tgz", - "integrity": "sha512-i/2XbnSz/uxRCU6+NdVJgKWDTM427+MqYbkQzD321DuCQJUqOuJKIA0IM2+W2xtYHdKOmZ4dR6fExsd4SXL+WQ==", - "dev": true - }, - "eventemitter3": { - "version": "4.0.7", - "resolved": "https://registry.npmjs.org/eventemitter3/-/eventemitter3-4.0.7.tgz", - "integrity": "sha512-8guHBZCwKnFhYdHr2ysuRWErTwhoN2X8XELRlrRwpmfeY2jjuUN4taQMsULKUVo1K4DvZl+0pgfyoysHxvmvEw==", - "dev": true - }, - "execa": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/execa/-/execa-1.0.0.tgz", - "integrity": "sha512-adbxcyWV46qiHyvSp50TKt05tB4tK3HcmF7/nxfAdhnox83seTDbwnaqKO4sXRy7roHAIFqJP/Rw/AuEbX61LA==", - "dev": true, - "requires": { - "cross-spawn": "^6.0.0", - "get-stream": "^4.0.0", - "is-stream": "^1.1.0", - "npm-run-path": "^2.0.0", - "p-finally": "^1.0.0", - "signal-exit": "^3.0.0", - "strip-eof": "^1.0.0" - } - }, - "expand-brackets": { - "version": "2.1.4", - "resolved": "https://registry.npmjs.org/expand-brackets/-/expand-brackets-2.1.4.tgz", - "integrity": "sha1-t3c14xXOMPa27/D4OwQVGiJEliI=", - "dev": true, - "requires": { - "debug": "^2.3.3", - "define-property": "^0.2.5", - "extend-shallow": "^2.0.1", - "posix-character-classes": "^0.1.0", - "regex-not": "^1.0.0", - "snapdragon": "^0.8.1", - "to-regex": "^3.0.1" - }, - "dependencies": { - "define-property": { - "version": "0.2.5", - "resolved": "https://registry.npmjs.org/define-property/-/define-property-0.2.5.tgz", - "integrity": "sha1-w1se+RjsPJkPmlvFe+BKrOxcgRY=", - "dev": true, - "requires": { - "is-descriptor": "^0.1.0" - } - }, - "extend-shallow": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/extend-shallow/-/extend-shallow-2.0.1.tgz", - "integrity": "sha1-Ua99YUrZqfYQ6huvu5idaxxWiQ8=", - "dev": true, - "requires": { - "is-extendable": "^0.1.0" - } - } - } - }, - "expand-tilde": { - "version": "2.0.2", - "resolved": "https://registry.npmjs.org/expand-tilde/-/expand-tilde-2.0.2.tgz", - "integrity": "sha1-l+gBqgUt8CRU3kawK/YhZCzchQI=", - "dev": true, - "requires": { - "homedir-polyfill": "^1.0.1" - } - }, - "ext": { - "version": "1.4.0", - "resolved": "https://registry.npmjs.org/ext/-/ext-1.4.0.tgz", - "integrity": "sha512-Key5NIsUxdqKg3vIsdw9dSuXpPCQ297y6wBjL30edxwPgt2E44WcWBZey/ZvUc6sERLTxKdyCu4gZFmUbk1Q7A==", - "dev": true, - "requires": { - "type": "^2.0.0" - }, - "dependencies": { - "type": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/type/-/type-2.0.0.tgz", - "integrity": "sha512-KBt58xCHry4Cejnc2ISQAF7QY+ORngsWfxezO68+12hKV6lQY8P/psIkcbjeHWn7MqcgciWJyCCevFMJdIXpow==", - "dev": true - } - } - }, - "extend": { - "version": "3.0.2", - "resolved": "https://registry.npmjs.org/extend/-/extend-3.0.2.tgz", - "integrity": "sha512-fjquC59cD7CyW6urNXK0FBufkZcoiGG80wTuPujX590cB5Ttln20E2UB4S/WARVqhXffZl2LNgS+gQdPIIim/g==", - "dev": true - }, - "extend-shallow": { - "version": "3.0.2", - "resolved": "https://registry.npmjs.org/extend-shallow/-/extend-shallow-3.0.2.tgz", - "integrity": "sha1-Jqcarwc7OfshJxcnRhMcJwQCjbg=", - "dev": true, - "requires": { - "assign-symbols": "^1.0.0", - "is-extendable": "^1.0.1" - }, - "dependencies": { - "is-extendable": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/is-extendable/-/is-extendable-1.0.1.tgz", - "integrity": "sha512-arnXMxT1hhoKo9k1LZdmlNyJdDDfy2v0fXjFlmok4+i8ul/6WlbVge9bhM74OpNPQPMGUToDtz+KXa1PneJxOA==", - "dev": true, - "requires": { - "is-plain-object": "^2.0.4" - } - } - } - }, - "extglob": { - "version": "2.0.4", - "resolved": "https://registry.npmjs.org/extglob/-/extglob-2.0.4.tgz", - "integrity": "sha512-Nmb6QXkELsuBr24CJSkilo6UHHgbekK5UiZgfE6UHD3Eb27YC6oD+bhcT+tJ6cl8dmsgdQxnWlcry8ksBIBLpw==", - "dev": true, - "requires": { - "array-unique": "^0.3.2", - "define-property": "^1.0.0", - "expand-brackets": "^2.1.4", - "extend-shallow": "^2.0.1", - "fragment-cache": "^0.2.1", - "regex-not": "^1.0.0", - "snapdragon": "^0.8.1", - "to-regex": "^3.0.1" - }, - "dependencies": { - "define-property": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/define-property/-/define-property-1.0.0.tgz", - "integrity": "sha1-dp66rz9KY6rTr56NMEybvnm/sOY=", - "dev": true, - "requires": { - "is-descriptor": "^1.0.0" - } - }, - "extend-shallow": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/extend-shallow/-/extend-shallow-2.0.1.tgz", - "integrity": "sha1-Ua99YUrZqfYQ6huvu5idaxxWiQ8=", - "dev": true, - "requires": { - "is-extendable": "^0.1.0" - } - }, - "is-accessor-descriptor": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/is-accessor-descriptor/-/is-accessor-descriptor-1.0.0.tgz", - "integrity": "sha512-m5hnHTkcVsPfqx3AKlyttIPb7J+XykHvJP2B9bZDjlhLIoEq4XoK64Vg7boZlVWYK6LUY94dYPEE7Lh0ZkZKcQ==", - "dev": true, - "requires": { - "kind-of": "^6.0.0" - } - }, - "is-data-descriptor": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/is-data-descriptor/-/is-data-descriptor-1.0.0.tgz", - "integrity": "sha512-jbRXy1FmtAoCjQkVmIVYwuuqDFUbaOeDjmed1tOGPrsMhtJA4rD9tkgA0F1qJ3gRFRXcHYVkdeaP50Q5rE/jLQ==", - "dev": true, - "requires": { - "kind-of": "^6.0.0" - } - }, - "is-descriptor": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/is-descriptor/-/is-descriptor-1.0.2.tgz", - "integrity": "sha512-2eis5WqQGV7peooDyLmNEPUrps9+SXX5c9pL3xEB+4e9HnGuDa7mB7kHxHw4CbqS9k1T2hOH3miL8n8WtiYVtg==", - "dev": true, - "requires": { - "is-accessor-descriptor": "^1.0.0", - "is-data-descriptor": "^1.0.0", - "kind-of": "^6.0.2" - } - } - } - }, - "fancy-log": { - "version": "1.3.3", - "resolved": "https://registry.npmjs.org/fancy-log/-/fancy-log-1.3.3.tgz", - "integrity": "sha512-k9oEhlyc0FrVh25qYuSELjr8oxsCoc4/LEZfg2iJJrfEk/tZL9bCoJE47gqAvI2m/AUjluCS4+3I0eTx8n3AEw==", - "dev": true, - "requires": { - "ansi-gray": "^0.1.1", - "color-support": "^1.1.3", - "parse-node-version": "^1.0.0", - "time-stamp": "^1.0.0" - } - }, - "fast-glob": { - "version": "2.2.7", - "resolved": "https://registry.npmjs.org/fast-glob/-/fast-glob-2.2.7.tgz", - "integrity": "sha512-g1KuQwHOZAmOZMuBtHdxDtju+T2RT8jgCC9aANsbpdiDDTSnjgfuVsIBNKbUeJI3oKMRExcfNDtJl4OhbffMsw==", - "dev": true, - "requires": { - "@mrmlnc/readdir-enhanced": "^2.2.1", - "@nodelib/fs.stat": "^1.1.2", - "glob-parent": "^3.1.0", - "is-glob": "^4.0.0", - "merge2": "^1.2.3", - "micromatch": "^3.1.10" - } - }, - "fast-json-patch": { - "version": "3.0.0-1", - "resolved": "https://registry.npmjs.org/fast-json-patch/-/fast-json-patch-3.0.0-1.tgz", - "integrity": "sha512-6pdFb07cknxvPzCeLsFHStEy+MysPJPgZQ9LbQ/2O67unQF93SNqfdSqnPPl71YMHX+AD8gbl7iuoGFzHEdDuw==", - "dev": true - }, - "fast-json-stable-stringify": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/fast-json-stable-stringify/-/fast-json-stable-stringify-2.0.0.tgz", - "integrity": "sha1-1RQsDK7msRifh9OnYREGT4bIu/I=", - "dev": true - }, - "fast-levenshtein": { - "version": "2.0.6", - "resolved": "https://registry.npmjs.org/fast-levenshtein/-/fast-levenshtein-2.0.6.tgz", - "integrity": "sha1-PYpcZog6FqMMqGQ+hR8Zuqd5eRc=", - "dev": true - }, - "fetch-blob": { - "version": "3.1.4", - "resolved": "https://registry.npmjs.org/fetch-blob/-/fetch-blob-3.1.4.tgz", - "integrity": "sha512-Eq5Xv5+VlSrYWEqKrusxY1C3Hm/hjeAsCGVG3ft7pZahlUAChpGZT/Ms1WmSLnEAisEXszjzu/s+ce6HZB2VHA==", - "dev": true, - "requires": { - "node-domexception": "^1.0.0", - "web-streams-polyfill": "^3.0.3" - } - }, - "file-entry-cache": { - "version": "6.0.1", - "resolved": "https://registry.npmjs.org/file-entry-cache/-/file-entry-cache-6.0.1.tgz", - "integrity": "sha512-7Gps/XWymbLk2QLYK4NzpMOrYjMhdIxXuIvy2QBsLE6ljuodKvdkWs/cpyJJ3CVIVpH0Oi1Hvg1ovbMzLdFBBg==", - "dev": true, - "requires": { - "flat-cache": "^3.0.4" - } - }, - "file-uri-to-path": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/file-uri-to-path/-/file-uri-to-path-1.0.0.tgz", - "integrity": "sha512-0Zt+s3L7Vf1biwWZ29aARiVYLx7iMGnEUl9x33fbB/j3jR81u/O2LbqK+Bm1CDSNDKVtJ/YjwY7TUd5SkeLQLw==", - "dev": true, - "optional": true - }, - "fill-range": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/fill-range/-/fill-range-4.0.0.tgz", - "integrity": "sha1-1USBHUKPmOsGpj3EAtJAPDKMOPc=", - "dev": true, - "requires": { - "extend-shallow": "^2.0.1", - "is-number": "^3.0.0", - "repeat-string": "^1.6.1", - "to-regex-range": "^2.1.0" - }, - "dependencies": { - "extend-shallow": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/extend-shallow/-/extend-shallow-2.0.1.tgz", - "integrity": "sha1-Ua99YUrZqfYQ6huvu5idaxxWiQ8=", - "dev": true, - "requires": { - "is-extendable": "^0.1.0" - } - } - } - }, - "find-up": { - "version": "1.1.2", - "resolved": "https://registry.npmjs.org/find-up/-/find-up-1.1.2.tgz", - "integrity": "sha1-ay6YIrGizgpgq2TWEOzK1TyyTQ8=", - "dev": true, - "requires": { - "path-exists": "^2.0.0", - "pinkie-promise": "^2.0.0" - } - }, - "findup-sync": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/findup-sync/-/findup-sync-3.0.0.tgz", - "integrity": "sha512-YbffarhcicEhOrm4CtrwdKBdCuz576RLdhJDsIfvNtxUuhdRet1qZcsMjqbePtAseKdAnDyM/IyXbu7PRPRLYg==", - "dev": true, - "requires": { - "detect-file": "^1.0.0", - "is-glob": "^4.0.0", - "micromatch": "^3.0.4", - "resolve-dir": "^1.0.1" - } - }, - "fined": { - "version": "1.2.0", - "resolved": "https://registry.npmjs.org/fined/-/fined-1.2.0.tgz", - "integrity": "sha512-ZYDqPLGxDkDhDZBjZBb+oD1+j0rA4E0pXY50eplAAOPg2N/gUBSSk5IM1/QhPfyVo19lJ+CvXpqfvk+b2p/8Ng==", - "dev": true, - "requires": { - "expand-tilde": "^2.0.2", - "is-plain-object": "^2.0.3", - "object.defaults": "^1.1.0", - "object.pick": "^1.2.0", - "parse-filepath": "^1.0.1" - } - }, - "flagged-respawn": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/flagged-respawn/-/flagged-respawn-1.0.1.tgz", - "integrity": "sha512-lNaHNVymajmk0OJMBn8fVUAU1BtDeKIqKoVhk4xAALB57aALg6b4W0MfJ/cUE0g9YBXy5XhSlPIpYIJ7HaY/3Q==", - "dev": true - }, - "flat": { - "version": "5.0.2", - "resolved": "https://registry.npmjs.org/flat/-/flat-5.0.2.tgz", - "integrity": "sha512-b6suED+5/3rTpUBdG1gupIl8MPFCAMA0QXwmljLhvCUKcUvdE4gWky9zpuGCcXHOsz4J9wPGNWq6OKpmIzz3hQ==", - "dev": true - }, - "flat-cache": { - "version": "3.0.4", - "resolved": "https://registry.npmjs.org/flat-cache/-/flat-cache-3.0.4.tgz", - "integrity": "sha512-dm9s5Pw7Jc0GvMYbshN6zchCA9RgQlzzEZX3vylR9IqFfS8XciblUXOKfW6SiuJ0e13eDYZoZV5wdrev7P3Nwg==", - "dev": true, - "requires": { - "flatted": "^3.1.0", - "rimraf": "^3.0.2" - }, - "dependencies": { - "rimraf": { - "version": "3.0.2", - "resolved": "https://registry.npmjs.org/rimraf/-/rimraf-3.0.2.tgz", - "integrity": "sha512-JZkJMZkAGFFPP2YqXZXPbMlMBgsxzE8ILs4lMIX/2o0L9UBw9O/Y3o6wFw/i9YLapcUJWwqbi3kdxIPdC62TIA==", - "dev": true, - "requires": { - "glob": "^7.1.3" - } - } - } - }, - "flatted": { - "version": "3.1.1", - "resolved": "https://registry.npmjs.org/flatted/-/flatted-3.1.1.tgz", - "integrity": "sha512-zAoAQiudy+r5SvnSw3KJy5os/oRJYHzrzja/tBDqrZtNhUw8bt6y8OBzMWcjWr+8liV8Eb6yOhw8WZ7VFZ5ZzA==", - "dev": true - }, - "flush-write-stream": { - "version": "1.1.1", - "resolved": "https://registry.npmjs.org/flush-write-stream/-/flush-write-stream-1.1.1.tgz", - "integrity": "sha512-3Z4XhFZ3992uIq0XOqb9AreonueSYphE6oYbpt5+3u06JWklbsPkNv3ZKkP9Bz/r+1MWCaMoSQ28P85+1Yc77w==", - "dev": true, - "requires": { - "inherits": "^2.0.3", - "readable-stream": "^2.3.6" - } - }, - "follow-redirects": { - "version": "1.14.8", - "resolved": "https://registry.npmjs.org/follow-redirects/-/follow-redirects-1.14.8.tgz", - "integrity": "sha512-1x0S9UVJHsQprFcEC/qnNzBLcIxsjAV905f/UkQxbclCsoTWlacCNOpQa/anodLl2uaEKFhfWOvM2Qg77+15zA==", - "dev": true - }, - "for-in": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/for-in/-/for-in-1.0.2.tgz", - "integrity": "sha1-gQaNKVqBQuwKxybG4iAMMPttXoA=", - "dev": true - }, - "for-own": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/for-own/-/for-own-1.0.0.tgz", - "integrity": "sha1-xjMy9BXO3EsE2/5wz4NklMU8tEs=", - "dev": true, - "requires": { - "for-in": "^1.0.1" - } - }, - "form-data": { - "version": "3.0.1", - "resolved": "https://registry.npmjs.org/form-data/-/form-data-3.0.1.tgz", - "integrity": "sha512-RHkBKtLWUVwd7SqRIvCZMEvAMoGUp0XU+seQiZejj0COz3RI3hWP4sCv3gZWWLjJTd7rGwcsF5eKZGii0r/hbg==", - "dev": true, - "requires": { - "asynckit": "^0.4.0", - "combined-stream": "^1.0.8", - "mime-types": "^2.1.12" - }, - "dependencies": { - "combined-stream": { - "version": "1.0.8", - "resolved": "https://registry.npmjs.org/combined-stream/-/combined-stream-1.0.8.tgz", - "integrity": "sha512-FQN4MRfuJeHf7cBbBMJFXhKSDq+2kAArBlmRBvcvFE5BB1HZKXtSFASDhdlz9zOYwxh8lDdnvmMOe/+5cdoEdg==", - "dev": true, - "requires": { - "delayed-stream": "~1.0.0" - } - } - } - }, - "formdata-polyfill": { - "version": "4.0.10", - "resolved": "https://registry.npmjs.org/formdata-polyfill/-/formdata-polyfill-4.0.10.tgz", - "integrity": "sha512-buewHzMvYL29jdeQTVILecSaZKnt/RJWjoZCF5OW60Z67/GmSLBkOFM7qh1PI3zFNtJbaZL5eQu1vLfazOwj4g==", - "dev": true, - "requires": { - "fetch-blob": "^3.1.2" - } - }, - "fragment-cache": { - "version": "0.2.1", - "resolved": "https://registry.npmjs.org/fragment-cache/-/fragment-cache-0.2.1.tgz", - "integrity": "sha1-QpD60n8T6Jvn8zeZxrxaCr//DRk=", - "dev": true, - "requires": { - "map-cache": "^0.2.2" - } - }, - "fs-exists-sync": { - "version": "0.1.0", - "resolved": "https://registry.npmjs.org/fs-exists-sync/-/fs-exists-sync-0.1.0.tgz", - "integrity": "sha1-mC1ok6+RjnLQjeyehnP/K1qNat0=", - "dev": true - }, - "fs-extra": { - "version": "7.0.1", - "resolved": "https://registry.npmjs.org/fs-extra/-/fs-extra-7.0.1.tgz", - "integrity": "sha512-YJDaCJZEnBmcbw13fvdAM9AwNOJwOzrE4pqMqBq5nFiEqXUqHwlK4B+3pUw6JNvfSPtX05xFHtYy/1ni01eGCw==", - "dev": true, - "requires": { - "graceful-fs": "^4.1.2", - "jsonfile": "^4.0.0", - "universalify": "^0.1.0" - } - }, - "fs-mkdirp-stream": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/fs-mkdirp-stream/-/fs-mkdirp-stream-1.0.0.tgz", - "integrity": "sha1-C3gV/DIBxqaeFNuYzgmMFpNSWes=", - "dev": true, - "requires": { - "graceful-fs": "^4.1.11", - "through2": "^2.0.3" - } - }, - "fs.realpath": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/fs.realpath/-/fs.realpath-1.0.0.tgz", - "integrity": "sha1-FQStJSMVjKpA20onh8sBQRmU6k8=", - "dev": true - }, - "fsevents": { - "version": "1.2.13", - "resolved": "https://registry.npmjs.org/fsevents/-/fsevents-1.2.13.tgz", - "integrity": "sha512-oWb1Z6mkHIskLzEJ/XWX0srkpkTQ7vaopMQkyaEIoq0fmtFVxOthb8cCxeT+p3ynTdkk/RZwbgG4brR5BeWECw==", - "dev": true, - "optional": true, - "requires": { - "bindings": "^1.5.0", - "nan": "^2.12.1" - } - }, - "function-bind": { - "version": "1.1.1", - "resolved": "https://registry.npmjs.org/function-bind/-/function-bind-1.1.1.tgz", - "integrity": "sha512-yIovAzMX49sF8Yl58fSCWJ5svSLuaibPxXQJFLmBObTuCr0Mf1KiPopGM9NiFjiYBCbfaa2Fh6breQ6ANVTI0A==", - "dev": true - }, - "functional-red-black-tree": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/functional-red-black-tree/-/functional-red-black-tree-1.0.1.tgz", - "integrity": "sha1-GwqzvVU7Kg1jmdKcDj6gslIHgyc=", - "dev": true - }, - "geometry-interfaces": { - "version": "1.1.4", - "resolved": "https://registry.npmjs.org/geometry-interfaces/-/geometry-interfaces-1.1.4.tgz", - "integrity": "sha512-qD6OdkT6NcES9l4Xx3auTpwraQruU7dARbQPVO71MKvkGYw5/z/oIiGymuFXrRaEQa5Y67EIojUpaLeGEa5hGA==", - "dev": true - }, - "get-caller-file": { - "version": "1.0.3", - "resolved": "https://registry.npmjs.org/get-caller-file/-/get-caller-file-1.0.3.tgz", - "integrity": "sha512-3t6rVToeoZfYSGd8YoLFR2DJkiQrIiUrGcjvFX2mDw3bn6k2OtwHN0TNCLbBO+w8qTvimhDkv+LSscbJY1vE6w==", - "dev": true - }, - "get-func-name": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/get-func-name/-/get-func-name-2.0.0.tgz", - "integrity": "sha1-6td0q+5y4gQJQzoGY2YCPdaIekE=", - "dev": true - }, - "get-intrinsic": { - "version": "1.1.1", - "resolved": "https://registry.npmjs.org/get-intrinsic/-/get-intrinsic-1.1.1.tgz", - "integrity": "sha512-kWZrnVM42QCiEA2Ig1bG8zjoIMOgxWwYCEeNdwY6Tv/cOSeGpcoX4pXHfKUxNKVoArnrEr2e9srnAxxGIraS9Q==", - "dev": true, - "requires": { - "function-bind": "^1.1.1", - "has": "^1.0.3", - "has-symbols": "^1.0.1" - }, - "dependencies": { - "has-symbols": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/has-symbols/-/has-symbols-1.0.2.tgz", - "integrity": "sha512-chXa79rL/UC2KlX17jo3vRGz0azaWEx5tGqZg5pO3NUyEJVB17dMruQlzCCOfUvElghKcm5194+BCRvi2Rv/Gw==", - "dev": true - } - } - }, - "get-stdin": { - "version": "6.0.0", - "resolved": "https://registry.npmjs.org/get-stdin/-/get-stdin-6.0.0.tgz", - "integrity": "sha512-jp4tHawyV7+fkkSKyvjuLZswblUtz+SQKzSWnBbii16BuZksJlU1wuBYXY75r+duh/llF1ur6oNwi+2ZzjKZ7g==", - "dev": true - }, - "get-stream": { - "version": "4.1.0", - "resolved": "https://registry.npmjs.org/get-stream/-/get-stream-4.1.0.tgz", - "integrity": "sha512-GMat4EJ5161kIy2HevLlr4luNjBgvmj413KaQA7jt4V8B4RDsfpHk7WQ9GVqfYyyx8OS/L66Kox+rJRNklLK7w==", - "dev": true, - "requires": { - "pump": "^3.0.0" - } - }, - "get-value": { - "version": "2.0.6", - "resolved": "https://registry.npmjs.org/get-value/-/get-value-2.0.6.tgz", - "integrity": "sha1-3BXKHGcjh8p2vTesCjlbogQqLCg=", - "dev": true - }, - "git-config-path": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/git-config-path/-/git-config-path-1.0.1.tgz", - "integrity": "sha1-bTP37WPbDQ4RgTFQO6s6ykfVRmQ=", - "dev": true, - "requires": { - "extend-shallow": "^2.0.1", - "fs-exists-sync": "^0.1.0", - "homedir-polyfill": "^1.0.0" - }, - "dependencies": { - "extend-shallow": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/extend-shallow/-/extend-shallow-2.0.1.tgz", - "integrity": "sha1-Ua99YUrZqfYQ6huvu5idaxxWiQ8=", - "dev": true, - "requires": { - "is-extendable": "^0.1.0" - } - } - } - }, - "gitlab": { - "version": "10.2.1", - "resolved": "https://registry.npmjs.org/gitlab/-/gitlab-10.2.1.tgz", - "integrity": "sha512-z+DxRF1C9uayVbocs9aJkJz+kGy14TSm1noB/rAIEBbXOkOYbjKxyuqJzt+0zeFpXFdgA0yq6DVVbvM7HIfGwg==", - "dev": true, - "requires": { - "form-data": "^2.5.0", - "humps": "^2.0.1", - "ky": "^0.12.0", - "ky-universal": "^0.3.0", - "li": "^1.3.0", - "query-string": "^6.8.2", - "universal-url": "^2.0.0" - }, - "dependencies": { - "form-data": { - "version": "2.5.1", - "resolved": "https://registry.npmjs.org/form-data/-/form-data-2.5.1.tgz", - "integrity": "sha512-m21N3WOmEEURgk6B9GLOE4RuWOFf28Lhh9qGYeNlGq4VDXUlJy2th2slBNU8Gp8EzloYZOibZJ7t5ecIrFSjVA==", - "dev": true, - "requires": { - "asynckit": "^0.4.0", - "combined-stream": "^1.0.6", - "mime-types": "^2.1.12" - } - } - } - }, - "glob": { - "version": "7.2.0", - "resolved": "https://registry.npmjs.org/glob/-/glob-7.2.0.tgz", - "integrity": "sha512-lmLf6gtyrPq8tTjSmrO94wBeQbFR3HbLHbuyD69wuyQkImp2hWqMGB47OX65FBkPffO641IP9jWa1z4ivqG26Q==", - "dev": true, - "requires": { - "fs.realpath": "^1.0.0", - "inflight": "^1.0.4", - "inherits": "2", - "minimatch": "^3.0.4", - "once": "^1.3.0", - "path-is-absolute": "^1.0.0" - } - }, - "glob-parent": { - "version": "3.1.0", - "resolved": "https://registry.npmjs.org/glob-parent/-/glob-parent-3.1.0.tgz", - "integrity": "sha1-nmr2KZ2NO9K9QEMIMr0RPfkGxa4=", - "dev": true, - "requires": { - "is-glob": "^3.1.0", - "path-dirname": "^1.0.0" - }, - "dependencies": { - "is-glob": { - "version": "3.1.0", - "resolved": "https://registry.npmjs.org/is-glob/-/is-glob-3.1.0.tgz", - "integrity": "sha1-e6WuJCF4BKxwcHuWkiVnSGzD6Eo=", - "dev": true, - "requires": { - "is-extglob": "^2.1.0" - } - } - } - }, - "glob-stream": { - "version": "6.1.0", - "resolved": "https://registry.npmjs.org/glob-stream/-/glob-stream-6.1.0.tgz", - "integrity": "sha1-cEXJlBOz65SIjYOrRtC0BMx73eQ=", - "dev": true, - "requires": { - "extend": "^3.0.0", - "glob": "^7.1.1", - "glob-parent": "^3.1.0", - "is-negated-glob": "^1.0.0", - "ordered-read-streams": "^1.0.0", - "pumpify": "^1.3.5", - "readable-stream": "^2.1.5", - "remove-trailing-separator": "^1.0.1", - "to-absolute-glob": "^2.0.0", - "unique-stream": "^2.0.2" - } - }, - "glob-to-regexp": { - "version": "0.3.0", - "resolved": "https://registry.npmjs.org/glob-to-regexp/-/glob-to-regexp-0.3.0.tgz", - "integrity": "sha1-jFoUlNIGbFcMw7/kSWF1rMTVAqs=", - "dev": true - }, - "glob-watcher": { - "version": "5.0.5", - "resolved": "https://registry.npmjs.org/glob-watcher/-/glob-watcher-5.0.5.tgz", - "integrity": "sha512-zOZgGGEHPklZNjZQaZ9f41i7F2YwE+tS5ZHrDhbBCk3stwahn5vQxnFmBJZHoYdusR6R1bLSXeGUy/BhctwKzw==", - "dev": true, - "requires": { - "anymatch": "^2.0.0", - "async-done": "^1.2.0", - "chokidar": "^2.0.0", - "is-negated-glob": "^1.0.0", - "just-debounce": "^1.0.0", - "normalize-path": "^3.0.0", - "object.defaults": "^1.1.0" - }, - "dependencies": { - "normalize-path": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/normalize-path/-/normalize-path-3.0.0.tgz", - "integrity": "sha512-6eZs5Ls3WtCisHWp9S2GUy8dqkpGi4BVSz3GaqiE6ezub0512ESztXUwUB6C6IKbQkY2Pnb/mD4WYojCRwcwLA==", - "dev": true - } - } - }, - "global-modules": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/global-modules/-/global-modules-1.0.0.tgz", - "integrity": "sha512-sKzpEkf11GpOFuw0Zzjzmt4B4UZwjOcG757PPvrfhxcLFbq0wpsgpOqxpxtxFiCG4DtG93M6XRVbF2oGdev7bg==", - "dev": true, - "requires": { - "global-prefix": "^1.0.1", - "is-windows": "^1.0.1", - "resolve-dir": "^1.0.0" - } - }, - "global-prefix": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/global-prefix/-/global-prefix-1.0.2.tgz", - "integrity": "sha1-2/dDxsFJklk8ZVVoy2btMsASLr4=", - "dev": true, - "requires": { - "expand-tilde": "^2.0.2", - "homedir-polyfill": "^1.0.1", - "ini": "^1.3.4", - "is-windows": "^1.0.1", - "which": "^1.2.14" - } - }, - "globals": { - "version": "13.7.0", - "resolved": "https://registry.npmjs.org/globals/-/globals-13.7.0.tgz", - "integrity": "sha512-Aipsz6ZKRxa/xQkZhNg0qIWXT6x6rD46f6x/PCnBomlttdIyAPak4YD9jTmKpZ72uROSMU87qJtcgpgHaVchiA==", - "dev": true, - "requires": { - "type-fest": "^0.20.2" - }, - "dependencies": { - "type-fest": { - "version": "0.20.2", - "resolved": "https://registry.npmjs.org/type-fest/-/type-fest-0.20.2.tgz", - "integrity": "sha512-Ne+eE4r0/iWnpAxD852z3A+N0Bt5RN//NjJwRd2VFHEmrywxf5vsZlh4R6lixl6B+wz/8d+maTSAkN1FIkI3LQ==", - "dev": true - } - } - }, - "globby": { - "version": "6.1.0", - "resolved": "https://registry.npmjs.org/globby/-/globby-6.1.0.tgz", - "integrity": "sha1-9abXDoOV4hyFj7BInWTfAkJNUGw=", - "dev": true, - "requires": { - "array-union": "^1.0.1", - "glob": "^7.0.3", - "object-assign": "^4.0.1", - "pify": "^2.0.0", - "pinkie-promise": "^2.0.0" - } - }, - "glogg": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/glogg/-/glogg-1.0.2.tgz", - "integrity": "sha512-5mwUoSuBk44Y4EshyiqcH95ZntbDdTQqA3QYSrxmzj28Ai0vXBGMH1ApSANH14j2sIRtqCEyg6PfsuP7ElOEDA==", - "dev": true, - "requires": { - "sparkles": "^1.0.0" - } - }, - "graceful-fs": { - "version": "4.2.3", - "resolved": "https://registry.npmjs.org/graceful-fs/-/graceful-fs-4.2.3.tgz", - "integrity": "sha512-a30VEBm4PEdx1dRB7MFK7BejejvCvBronbLjht+sHuGYj8PHs7M/5Z+rt5lw551vZ7yfTCj4Vuyy3mSJytDWRQ==", - "dev": true - }, - "grapheme-splitter": { - "version": "1.0.4", - "resolved": "https://registry.npmjs.org/grapheme-splitter/-/grapheme-splitter-1.0.4.tgz", - "integrity": "sha512-bzh50DW9kTPM00T8y4o8vQg89Di9oLJVLW/KaOGIXJWP/iqCN6WKYkbNOF04vFLJhwcpYUh9ydh/+5vpOqV4YQ==", - "dev": true - }, - "growl": { - "version": "1.10.5", - "resolved": "https://registry.npmjs.org/growl/-/growl-1.10.5.tgz", - "integrity": "sha512-qBr4OuELkhPenW6goKVXiv47US3clb3/IbuWF9KNKEijAy9oeHxU9IgzjvJhHkUzhaj7rOUD7+YGWqUjLp5oSA==", - "dev": true - }, - "gulp": { - "version": "4.0.2", - "resolved": "https://registry.npmjs.org/gulp/-/gulp-4.0.2.tgz", - "integrity": "sha512-dvEs27SCZt2ibF29xYgmnwwCYZxdxhQ/+LFWlbAW8y7jt68L/65402Lz3+CKy0Ov4rOs+NERmDq7YlZaDqUIfA==", - "dev": true, - "requires": { - "glob-watcher": "^5.0.3", - "gulp-cli": "^2.2.0", - "undertaker": "^1.2.1", - "vinyl-fs": "^3.0.0" - }, - "dependencies": { - "gulp-cli": { - "version": "2.2.0", - "resolved": "https://registry.npmjs.org/gulp-cli/-/gulp-cli-2.2.0.tgz", - "integrity": "sha512-rGs3bVYHdyJpLqR0TUBnlcZ1O5O++Zs4bA0ajm+zr3WFCfiSLjGwoCBqFs18wzN+ZxahT9DkOK5nDf26iDsWjA==", - "dev": true, - "requires": { - "ansi-colors": "^1.0.1", - "archy": "^1.0.0", - "array-sort": "^1.0.0", - "color-support": "^1.1.3", - "concat-stream": "^1.6.0", - "copy-props": "^2.0.1", - "fancy-log": "^1.3.2", - "gulplog": "^1.0.0", - "interpret": "^1.1.0", - "isobject": "^3.0.1", - "liftoff": "^3.1.0", - "matchdep": "^2.0.0", - "mute-stdout": "^1.0.0", - "pretty-hrtime": "^1.0.0", - "replace-homedir": "^1.0.0", - "semver-greatest-satisfied-range": "^1.1.0", - "v8flags": "^3.0.1", - "yargs": "^7.1.0" - } - }, - "yargs": { - "version": "7.1.0", - "resolved": "https://registry.npmjs.org/yargs/-/yargs-7.1.0.tgz", - "integrity": "sha1-a6MY6xaWFyf10oT46gA+jWFU0Mg=", - "dev": true, - "requires": { - "camelcase": "^3.0.0", - "cliui": "^3.2.0", - "decamelize": "^1.1.1", - "get-caller-file": "^1.0.1", - "os-locale": "^1.4.0", - "read-pkg-up": "^1.0.1", - "require-directory": "^2.1.1", - "require-main-filename": "^1.0.1", - "set-blocking": "^2.0.0", - "string-width": "^1.0.2", - "which-module": "^1.0.0", - "y18n": "^3.2.1", - "yargs-parser": "^5.0.0" - } - } - } - }, - "gulp-clean-css": { - "version": "4.3.0", - "resolved": "https://registry.npmjs.org/gulp-clean-css/-/gulp-clean-css-4.3.0.tgz", - "integrity": "sha512-mGyeT3qqFXTy61j0zOIciS4MkYziF2U594t2Vs9rUnpkEHqfu6aDITMp8xOvZcvdX61Uz3y1mVERRYmjzQF5fg==", - "dev": true, - "requires": { - "clean-css": "4.2.3", - "plugin-error": "1.0.1", - "through2": "3.0.1", - "vinyl-sourcemaps-apply": "0.2.1" - }, - "dependencies": { - "through2": { - "version": "3.0.1", - "resolved": "https://registry.npmjs.org/through2/-/through2-3.0.1.tgz", - "integrity": "sha512-M96dvTalPT3YbYLaKaCuwu+j06D/8Jfib0o/PxbVt6Amhv3dUAtW6rTV1jPgJSBG83I/e04Y6xkVdVhSRhi0ww==", - "dev": true, - "requires": { - "readable-stream": "2 || 3" - } - } - } - }, - "gulp-concat": { - "version": "2.6.1", - "resolved": "https://registry.npmjs.org/gulp-concat/-/gulp-concat-2.6.1.tgz", - "integrity": "sha1-Yz0WyV2IUEYorQJmVmPO5aR5M1M=", - "dev": true, - "requires": { - "concat-with-sourcemaps": "^1.0.0", - "through2": "^2.0.0", - "vinyl": "^2.0.0" - } - }, - "gulp-header": { - "version": "2.0.7", - "resolved": "https://registry.npmjs.org/gulp-header/-/gulp-header-2.0.7.tgz", - "integrity": "sha512-qppGkYGQZnt/mRJiiR5wYZIUwNUn47Xpg4+6tHYDVeAW5IDLbHBQwbw7axfMLWGE+gKQpB+yXLeslHMw1/Haog==", - "dev": true, - "requires": { - "concat-with-sourcemaps": "^1.1.0", - "lodash.template": "^4.4.0", - "map-stream": "0.0.7", - "through2": "^2.0.0" - } - }, - "gulp-jsdoc3": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/gulp-jsdoc3/-/gulp-jsdoc3-3.0.0.tgz", - "integrity": "sha512-rE2jAwCPA8XFi9g4V3Z3LPhZNjxuMTIYQVMjdqZAQpRfJITLVaUK3xfmiiNTMc7j+fT7pL8Q5yj7ZPRdwCJWNg==", - "dev": true, - "requires": { - "ansi-colors": "^4.1.1", - "beeper": "^2.0.0", - "debug": "^4.1.1", - "fancy-log": "^1.3.3", - "ink-docstrap": "^1.3.2", - "jsdoc": "^3.6.3", - "map-stream": "0.0.7", - "tmp": "0.1.0" - }, - "dependencies": { - "ansi-colors": { - "version": "4.1.1", - "resolved": "https://registry.npmjs.org/ansi-colors/-/ansi-colors-4.1.1.tgz", - "integrity": "sha512-JoX0apGbHaUJBNl6yF+p6JAFYZ666/hhCGKN5t9QFjbJQKUU/g8MNbFDbvfrgKXvI1QpZplPOnwIo99lX/AAmA==", - "dev": true - }, - "debug": { - "version": "4.1.1", - "resolved": "https://registry.npmjs.org/debug/-/debug-4.1.1.tgz", - "integrity": "sha512-pYAIzeRo8J6KPEaJ0VWOh5Pzkbw/RetuzehGM7QRRX5he4fPHx2rdKMB256ehJCkX+XRQm16eZLqLNS8RSZXZw==", - "dev": true, - "requires": { - "ms": "^2.1.1" - } - }, - "ms": { - "version": "2.1.2", - "resolved": "https://registry.npmjs.org/ms/-/ms-2.1.2.tgz", - "integrity": "sha512-sGkPx+VjMtmA6MX27oA4FBFELFCZZ4S4XqeGOXCv68tT+jb3vk/RyaKWP0PTKyWtmLSM0b+adUTEvbs1PEaH2w==", - "dev": true - } - } - }, - "gulp-rename": { - "version": "1.4.0", - "resolved": "https://registry.npmjs.org/gulp-rename/-/gulp-rename-1.4.0.tgz", - "integrity": "sha512-swzbIGb/arEoFK89tPY58vg3Ok1bw+d35PfUNwWqdo7KM4jkmuGA78JiDNqR+JeZFaeeHnRg9N7aihX3YPmsyg==", - "dev": true - }, - "gulp-replace": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/gulp-replace/-/gulp-replace-1.0.0.tgz", - "integrity": "sha512-lgdmrFSI1SdhNMXZQbrC75MOl1UjYWlOWNbNRnz+F/KHmgxt3l6XstBoAYIdadwETFyG/6i+vWUSCawdC3pqOw==", - "dev": true, - "requires": { - "istextorbinary": "2.2.1", - "readable-stream": "^2.0.1", - "replacestream": "^4.0.0" - } - }, - "gulp-terser": { - "version": "2.1.0", - "resolved": "https://registry.npmjs.org/gulp-terser/-/gulp-terser-2.1.0.tgz", - "integrity": "sha512-lQ3+JUdHDVISAlUIUSZ/G9Dz/rBQHxOiYDQ70IVWFQeh4b33TC1MCIU+K18w07PS3rq/CVc34aQO4SUbdaNMPQ==", - "dev": true, - "requires": { - "plugin-error": "^1.0.1", - "terser": "^5.9.0", - "through2": "^4.0.2", - "vinyl-sourcemaps-apply": "^0.2.1" - }, - "dependencies": { - "readable-stream": { - "version": "3.6.0", - "resolved": "https://registry.npmjs.org/readable-stream/-/readable-stream-3.6.0.tgz", - "integrity": "sha512-BViHy7LKeTz4oNnkcLJ+lVSL6vpiFeX6/d3oSH8zCW7UxP2onchk+vTGB143xuFjHS3deTgkKoXXymXqymiIdA==", - "dev": true, - "requires": { - "inherits": "^2.0.3", - "string_decoder": "^1.1.1", - "util-deprecate": "^1.0.1" - } - }, - "through2": { - "version": "4.0.2", - "resolved": "https://registry.npmjs.org/through2/-/through2-4.0.2.tgz", - "integrity": "sha512-iOqSav00cVxEEICeD7TjLB1sueEL+81Wpzp2bY17uZjZN0pWZPuo4suZ/61VujxmqSGFfgOcNuTZ85QJwNZQpw==", - "dev": true, - "requires": { - "readable-stream": "3" - } - } - } - }, - "gulplog": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/gulplog/-/gulplog-1.0.0.tgz", - "integrity": "sha1-4oxNRdBey77YGDY86PnFkmIp/+U=", - "dev": true, - "requires": { - "glogg": "^1.0.0" - } - }, - "gzip-size": { - "version": "5.1.1", - "resolved": "https://registry.npmjs.org/gzip-size/-/gzip-size-5.1.1.tgz", - "integrity": "sha512-FNHi6mmoHvs1mxZAds4PpdCS6QG8B4C1krxJsMutgxl5t3+GlRTzzI3NEkifXx2pVsOvJdOGSmIgDhQ55FwdPA==", - "dev": true, - "requires": { - "duplexer": "^0.1.1", - "pify": "^4.0.1" - }, - "dependencies": { - "pify": { - "version": "4.0.1", - "resolved": "https://registry.npmjs.org/pify/-/pify-4.0.1.tgz", - "integrity": "sha512-uB80kBFb/tfd68bVleG9T5GGsGPjJrLAUpR5PZIrhBnIaRTQRjqdJSsIKkOP6OAIFbj7GOrcudc5pNjZ+geV2g==", - "dev": true - } - } - }, - "has": { - "version": "1.0.3", - "resolved": "https://registry.npmjs.org/has/-/has-1.0.3.tgz", - "integrity": "sha512-f2dvO0VU6Oej7RkWJGrehjbzMAjFp5/VKPp5tTpWIV4JHHZK1/BxbFRtf/siA2SWTe09caDmVtYYzWEIbBS4zw==", - "dev": true, - "requires": { - "function-bind": "^1.1.1" - } - }, - "has-bigints": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/has-bigints/-/has-bigints-1.0.1.tgz", - "integrity": "sha512-LSBS2LjbNBTf6287JEbEzvJgftkF5qFkmCo9hDRpAzKhUOlJ+hx8dd4USs00SgsUNwc4617J9ki5YtEClM2ffA==", - "dev": true - }, - "has-flag": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-3.0.0.tgz", - "integrity": "sha1-tdRU3CGZriJWmfNGfloH87lVuv0=", - "dev": true - }, - "has-symbols": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/has-symbols/-/has-symbols-1.0.0.tgz", - "integrity": "sha1-uhqPGvKg/DllD1yFA2dwQSIGO0Q=", - "dev": true - }, - "has-value": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/has-value/-/has-value-1.0.0.tgz", - "integrity": "sha1-GLKB2lhbHFxR3vJMkw7SmgvmsXc=", - "dev": true, - "requires": { - "get-value": "^2.0.6", - "has-values": "^1.0.0", - "isobject": "^3.0.0" - } - }, - "has-values": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/has-values/-/has-values-1.0.0.tgz", - "integrity": "sha1-lbC2P+whRmGab+V/51Yo1aOe/k8=", - "dev": true, - "requires": { - "is-number": "^3.0.0", - "kind-of": "^4.0.0" - }, - "dependencies": { - "kind-of": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-4.0.0.tgz", - "integrity": "sha1-IIE989cSkosgc3hpGkUGb65y3Vc=", - "dev": true, - "requires": { - "is-buffer": "^1.1.5" - } - } - } - }, - "hasurl": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/hasurl/-/hasurl-1.0.0.tgz", - "integrity": "sha512-43ypUd3DbwyCT01UYpA99AEZxZ4aKtRxWGBHEIbjcOsUghd9YUON0C+JF6isNjaiwC/UF5neaUudy6JS9jZPZQ==", - "dev": true - }, - "he": { - "version": "1.2.0", - "resolved": "https://registry.npmjs.org/he/-/he-1.2.0.tgz", - "integrity": "sha512-F/1DnUGPopORZi0ni+CvrCgHQ5FyEAHRLSApuYWMmrbSwoN2Mn/7k+Gl38gJnR7yyDZk6WLXwiGod1JOWNDKGw==", - "dev": true - }, - "homedir-polyfill": { - "version": "1.0.3", - "resolved": "https://registry.npmjs.org/homedir-polyfill/-/homedir-polyfill-1.0.3.tgz", - "integrity": "sha512-eSmmWE5bZTK2Nou4g0AI3zZ9rswp7GRKoKXS1BLUkvPviOqs4YTN1djQIqrXy9k5gEtdLPy86JjRwsNM9tnDcA==", - "dev": true, - "requires": { - "parse-passwd": "^1.0.0" - } - }, - "hosted-git-info": { - "version": "2.8.9", - "resolved": "https://registry.npmjs.org/hosted-git-info/-/hosted-git-info-2.8.9.tgz", - "integrity": "sha512-mxIDAb9Lsm6DoOJ7xH+5+X4y1LU/4Hi50L9C5sIswK3JzULS4bwk1FvjdBgvYR4bzT4tuUQiC15FE2f5HbLvYw==", - "dev": true - }, - "html-encoding-sniffer": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/html-encoding-sniffer/-/html-encoding-sniffer-2.0.1.tgz", - "integrity": "sha512-D5JbOMBIR/TVZkubHT+OyT2705QvogUW4IBn6nHd756OwieSF9aDYFj4dv6HHEVGYbHaLETa3WggZYWWMyy3ZQ==", - "dev": true, - "requires": { - "whatwg-encoding": "^1.0.5" - } - }, - "htmlparser2": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/htmlparser2/-/htmlparser2-4.0.0.tgz", - "integrity": "sha512-cChwXn5Vam57fyXajDtPXL1wTYc8JtLbr2TN76FYu05itVVVealxLowe2B3IEznJG4p9HAYn/0tJaRlGuEglFQ==", - "dev": true, - "requires": { - "domelementtype": "^2.0.1", - "domhandler": "^3.0.0", - "domutils": "^2.0.0", - "entities": "^2.0.0" - } - }, - "http-proxy": { - "version": "1.18.1", - "resolved": "https://registry.npmjs.org/http-proxy/-/http-proxy-1.18.1.tgz", - "integrity": "sha512-7mz/721AbnJwIVbnaSv1Cz3Am0ZLT/UBwkC92VlxhXv/k/BBQfM2fXElQNC27BVGr0uwUpplYPQM9LnaBMR5NQ==", - "dev": true, - "requires": { - "eventemitter3": "^4.0.0", - "follow-redirects": "^1.0.0", - "requires-port": "^1.0.0" - } - }, - "http-proxy-agent": { - "version": "2.1.0", - "resolved": "https://registry.npmjs.org/http-proxy-agent/-/http-proxy-agent-2.1.0.tgz", - "integrity": "sha512-qwHbBLV7WviBl0rQsOzH6o5lwyOIvwp/BdFnvVxXORldu5TmjFfjzBcWUWS5kWAZhmv+JtiDhSuQCp4sBfbIgg==", - "dev": true, - "requires": { - "agent-base": "4", - "debug": "3.1.0" - }, - "dependencies": { - "debug": { - "version": "3.1.0", - "resolved": "https://registry.npmjs.org/debug/-/debug-3.1.0.tgz", - "integrity": "sha512-OX8XqP7/1a9cqkxYw2yXss15f26NKWBpDXQd0/uK/KPqdQhxbPa994hnzjcE2VqQpDslf55723cKPUOGSmMY3g==", - "dev": true, - "requires": { - "ms": "2.0.0" - } - } - } - }, - "http-server": { - "version": "0.12.3", - "resolved": "https://registry.npmjs.org/http-server/-/http-server-0.12.3.tgz", - "integrity": "sha512-be0dKG6pni92bRjq0kvExtj/NrrAd28/8fCXkaI/4piTwQMSDSLMhWyW0NI1V+DBI3aa1HMlQu46/HjVLfmugA==", - "dev": true, - "requires": { - "basic-auth": "^1.0.3", - "colors": "^1.4.0", - "corser": "^2.0.1", - "ecstatic": "^3.3.2", - "http-proxy": "^1.18.0", - "minimist": "^1.2.5", - "opener": "^1.5.1", - "portfinder": "^1.0.25", - "secure-compare": "3.0.1", - "union": "~0.5.0" - } - }, - "https-proxy-agent": { - "version": "2.2.4", - "resolved": "https://registry.npmjs.org/https-proxy-agent/-/https-proxy-agent-2.2.4.tgz", - "integrity": "sha512-OmvfoQ53WLjtA9HeYP9RNrWMJzzAz1JGaSFr1nijg0PVR1JaD/xbJq1mdEIIlxGpXp9eSe/O2LgU9DJmTPd0Eg==", - "dev": true, - "requires": { - "agent-base": "^4.3.0", - "debug": "^3.1.0" - }, - "dependencies": { - "debug": { - "version": "3.2.6", - "resolved": "https://registry.npmjs.org/debug/-/debug-3.2.6.tgz", - "integrity": "sha512-mel+jf7nrtEl5Pn1Qx46zARXKDpBbvzezse7p7LqINmdoIk8PYP5SySaxEmYv6TZ0JyEKA1hsCId6DIhgITtWQ==", - "dev": true, - "requires": { - "ms": "^2.1.1" - } - }, - "ms": { - "version": "2.1.2", - "resolved": "https://registry.npmjs.org/ms/-/ms-2.1.2.tgz", - "integrity": "sha512-sGkPx+VjMtmA6MX27oA4FBFELFCZZ4S4XqeGOXCv68tT+jb3vk/RyaKWP0PTKyWtmLSM0b+adUTEvbs1PEaH2w==", - "dev": true - } - } - }, - "humps": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/humps/-/humps-2.0.1.tgz", - "integrity": "sha1-3QLqYIG9BWjcXQcxhEY5V7qe+ao=", - "dev": true - }, - "hyperlinker": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/hyperlinker/-/hyperlinker-1.0.0.tgz", - "integrity": "sha512-Ty8UblRWFEcfSuIaajM34LdPXIhbs1ajEX/BBPv24J+enSVaEVY63xQ6lTO9VRYS5LAoghIG0IDJ+p+IPzKUQQ==", - "dev": true - }, - "iconv-lite": { - "version": "0.4.24", - "resolved": "https://registry.npmjs.org/iconv-lite/-/iconv-lite-0.4.24.tgz", - "integrity": "sha512-v3MXnZAcvnywkTUEZomIActle7RXXeedOR31wwl7VlyoXO4Qi9arvSenNQWne1TcRwhCL1HwLI21bEqdpj8/rA==", - "dev": true, - "requires": { - "safer-buffer": ">= 2.1.2 < 3" - } - }, - "ignore": { - "version": "4.0.6", - "resolved": "https://registry.npmjs.org/ignore/-/ignore-4.0.6.tgz", - "integrity": "sha512-cyFDKrqc/YdcWFniJhzI42+AzS+gNwmUzOSFcRCQYwySuBBBy/KjuxWLZ/FHEH6Moq1NizMOBWyTcv8O4OZIMg==", - "dev": true - }, - "import-fresh": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/import-fresh/-/import-fresh-2.0.0.tgz", - "integrity": "sha1-2BNVwVYS04bGH53dOSLUMEgipUY=", - "dev": true, - "requires": { - "caller-path": "^2.0.0", - "resolve-from": "^3.0.0" - }, - "dependencies": { - "resolve-from": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/resolve-from/-/resolve-from-3.0.0.tgz", - "integrity": "sha1-six699nWiBvItuZTM17rywoYh0g=", - "dev": true - } - } - }, - "imurmurhash": { - "version": "0.1.4", - "resolved": "https://registry.npmjs.org/imurmurhash/-/imurmurhash-0.1.4.tgz", - "integrity": "sha1-khi5srkoojixPcT7a21XbyMUU+o=", - "dev": true - }, - "indent-string": { - "version": "3.2.0", - "resolved": "https://registry.npmjs.org/indent-string/-/indent-string-3.2.0.tgz", - "integrity": "sha1-Sl/W0nzDMvN+VBmlBNu4NxBckok=", - "dev": true - }, - "inflight": { - "version": "1.0.6", - "resolved": "https://registry.npmjs.org/inflight/-/inflight-1.0.6.tgz", - "integrity": "sha1-Sb1jMdfQLQwJvJEKEHW6gWW1bfk=", - "dev": true, - "requires": { - "once": "^1.3.0", - "wrappy": "1" - } - }, - "inherits": { - "version": "2.0.3", - "resolved": "https://registry.npmjs.org/inherits/-/inherits-2.0.3.tgz", - "integrity": "sha1-Yzwsg+PaQqUC9SRmAiSA9CCCYd4=", - "dev": true - }, - "ini": { - "version": "1.3.7", - "resolved": "https://registry.npmjs.org/ini/-/ini-1.3.7.tgz", - "integrity": "sha512-iKpRpXP+CrP2jyrxvg1kMUpXDyRUFDWurxbnVT1vQPx+Wz9uCYsMIqYuSBLV+PAaZG/d7kRLKRFc9oDMsH+mFQ==", - "dev": true - }, - "ink-docstrap": { - "version": "1.3.2", - "resolved": "https://registry.npmjs.org/ink-docstrap/-/ink-docstrap-1.3.2.tgz", - "integrity": "sha512-STx5orGQU1gfrkoI/fMU7lX6CSP7LBGO10gXNgOZhwKhUqbtNjCkYSewJtNnLmWP1tAGN6oyEpG1HFPw5vpa5Q==", - "dev": true, - "requires": { - "moment": "^2.14.1", - "sanitize-html": "^1.13.0" - } - }, - "interpret": { - "version": "1.2.0", - "resolved": "https://registry.npmjs.org/interpret/-/interpret-1.2.0.tgz", - "integrity": "sha512-mT34yGKMNceBQUoVn7iCDKDntA7SC6gycMAWzGx1z/CMCTV7b2AAtXlo3nRyHZ1FelRkQbQjprHSYGwzLtkVbw==", - "dev": true - }, - "invert-kv": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/invert-kv/-/invert-kv-1.0.0.tgz", - "integrity": "sha1-EEqOSqym09jNFXqO+L+rLXo//bY=", - "dev": true - }, - "is-absolute": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/is-absolute/-/is-absolute-1.0.0.tgz", - "integrity": "sha512-dOWoqflvcydARa360Gvv18DZ/gRuHKi2NU/wU5X1ZFzdYfH29nkiNZsF3mp4OJ3H4yo9Mx8A/uAGNzpzPN3yBA==", - "dev": true, - "requires": { - "is-relative": "^1.0.0", - "is-windows": "^1.0.1" - } - }, - "is-accessor-descriptor": { - "version": "0.1.6", - "resolved": "https://registry.npmjs.org/is-accessor-descriptor/-/is-accessor-descriptor-0.1.6.tgz", - "integrity": "sha1-qeEss66Nh2cn7u84Q/igiXtcmNY=", - "dev": true, - "requires": { - "kind-of": "^3.0.2" - }, - "dependencies": { - "kind-of": { - "version": "3.2.2", - "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-3.2.2.tgz", - "integrity": "sha1-MeohpzS6ubuw8yRm2JOupR5KPGQ=", - "dev": true, - "requires": { - "is-buffer": "^1.1.5" - } - } - } - }, - "is-arrayish": { - "version": "0.2.1", - "resolved": "https://registry.npmjs.org/is-arrayish/-/is-arrayish-0.2.1.tgz", - "integrity": "sha1-d8mYQFJ6qOyxqLppe4BkWnqSap0=", - "dev": true - }, - "is-bigint": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/is-bigint/-/is-bigint-1.0.2.tgz", - "integrity": "sha512-0JV5+SOCQkIdzjBK9buARcV804Ddu7A0Qet6sHi3FimE9ne6m4BGQZfRn+NZiXbBk4F4XmHfDZIipLj9pX8dSA==", - "dev": true - }, - "is-binary-path": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/is-binary-path/-/is-binary-path-1.0.1.tgz", - "integrity": "sha1-dfFmQrSA8YenEcgUFh/TpKdlWJg=", - "dev": true, - "requires": { - "binary-extensions": "^1.0.0" - } - }, - "is-boolean-object": { - "version": "1.1.1", - "resolved": "https://registry.npmjs.org/is-boolean-object/-/is-boolean-object-1.1.1.tgz", - "integrity": "sha512-bXdQWkECBUIAcCkeH1unwJLIpZYaa5VvuygSyS/c2lf719mTKZDU5UdDRlpd01UjADgmW8RfqaP+mRaVPdr/Ng==", - "dev": true, - "requires": { - "call-bind": "^1.0.2" - } - }, - "is-buffer": { - "version": "1.1.6", - "resolved": "https://registry.npmjs.org/is-buffer/-/is-buffer-1.1.6.tgz", - "integrity": "sha512-NcdALwpXkTm5Zvvbk7owOUSvVvBKDgKP5/ewfXEznmQFfs4ZRmanOeKBTjRVjka3QFoN6XJ+9F3USqfHqTaU5w==", - "dev": true - }, - "is-data-descriptor": { - "version": "0.1.4", - "resolved": "https://registry.npmjs.org/is-data-descriptor/-/is-data-descriptor-0.1.4.tgz", - "integrity": "sha1-C17mSDiOLIYCgueT8YVv7D8wG1Y=", - "dev": true, - "requires": { - "kind-of": "^3.0.2" - }, - "dependencies": { - "kind-of": { - "version": "3.2.2", - "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-3.2.2.tgz", - "integrity": "sha1-MeohpzS6ubuw8yRm2JOupR5KPGQ=", - "dev": true, - "requires": { - "is-buffer": "^1.1.5" - } - } - } - }, - "is-date-object": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/is-date-object/-/is-date-object-1.0.1.tgz", - "integrity": "sha1-mqIOtq7rv/d/vTPnTKAbM1gdOhY=", - "dev": true - }, - "is-descriptor": { - "version": "0.1.6", - "resolved": "https://registry.npmjs.org/is-descriptor/-/is-descriptor-0.1.6.tgz", - "integrity": "sha512-avDYr0SB3DwO9zsMov0gKCESFYqCnE4hq/4z3TdUlukEy5t9C0YRq7HLrsN52NAcqXKaepeCD0n+B0arnVG3Hg==", - "dev": true, - "requires": { - "is-accessor-descriptor": "^0.1.6", - "is-data-descriptor": "^0.1.4", - "kind-of": "^5.0.0" - }, - "dependencies": { - "kind-of": { - "version": "5.1.0", - "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-5.1.0.tgz", - "integrity": "sha512-NGEErnH6F2vUuXDh+OlbcKW7/wOcfdRHaZ7VWtqCztfHri/++YKmP51OdWeGPuqCOba6kk2OTe5d02VmTB80Pw==", - "dev": true - } - } - }, - "is-directory": { - "version": "0.3.1", - "resolved": "https://registry.npmjs.org/is-directory/-/is-directory-0.3.1.tgz", - "integrity": "sha1-YTObbyR1/Hcv2cnYP1yFddwVSuE=", - "dev": true - }, - "is-extendable": { - "version": "0.1.1", - "resolved": "https://registry.npmjs.org/is-extendable/-/is-extendable-0.1.1.tgz", - "integrity": "sha1-YrEQ4omkcUGOPsNqYX1HLjAd/Ik=", - "dev": true - }, - "is-extglob": { - "version": "2.1.1", - "resolved": "https://registry.npmjs.org/is-extglob/-/is-extglob-2.1.1.tgz", - "integrity": "sha1-qIwCU1eR8C7TfHahueqXc8gz+MI=", - "dev": true - }, - "is-fullwidth-code-point": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/is-fullwidth-code-point/-/is-fullwidth-code-point-1.0.0.tgz", - "integrity": "sha1-754xOG8DGn8NZDr4L95QxFfvAMs=", - "dev": true, - "requires": { - "number-is-nan": "^1.0.0" - } - }, - "is-glob": { - "version": "4.0.1", - "resolved": "https://registry.npmjs.org/is-glob/-/is-glob-4.0.1.tgz", - "integrity": "sha512-5G0tKtBTFImOqDnLB2hG6Bp2qcKEFduo4tZu9MT/H6NQv/ghhy30o55ufafxJ/LdH79LLs2Kfrn85TLKyA7BUg==", - "dev": true, - "requires": { - "is-extglob": "^2.1.1" - } - }, - "is-negated-glob": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/is-negated-glob/-/is-negated-glob-1.0.0.tgz", - "integrity": "sha1-aRC8pdqMleeEtXUbl2z1oQ/uNtI=", - "dev": true - }, - "is-negative-zero": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/is-negative-zero/-/is-negative-zero-2.0.1.tgz", - "integrity": "sha512-2z6JzQvZRa9A2Y7xC6dQQm4FSTSTNWjKIYYTt4246eMTJmIo0Q+ZyOsU66X8lxK1AbB92dFeglPLrhwpeRKO6w==", - "dev": true - }, - "is-number": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/is-number/-/is-number-3.0.0.tgz", - "integrity": "sha1-JP1iAaR4LPUFYcgQJ2r8fRLXEZU=", - "dev": true, - "requires": { - "kind-of": "^3.0.2" - }, - "dependencies": { - "kind-of": { - "version": "3.2.2", - "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-3.2.2.tgz", - "integrity": "sha1-MeohpzS6ubuw8yRm2JOupR5KPGQ=", - "dev": true, - "requires": { - "is-buffer": "^1.1.5" - } - } - } - }, - "is-number-object": { - "version": "1.0.5", - "resolved": "https://registry.npmjs.org/is-number-object/-/is-number-object-1.0.5.tgz", - "integrity": "sha512-RU0lI/n95pMoUKu9v1BZP5MBcZuNSVJkMkAG2dJqC4z2GlkGUNeH68SuHuBKBD/XFe+LHZ+f9BKkLET60Niedw==", - "dev": true - }, - "is-path-cwd": { - "version": "2.1.0", - "resolved": "https://registry.npmjs.org/is-path-cwd/-/is-path-cwd-2.1.0.tgz", - "integrity": "sha512-Sc5j3/YnM8tDeyCsVeKlm/0p95075DyLmDEIkSgQ7mXkrOX+uTCtmQFm0CYzVyJwcCCmO3k8qfJt17SxQwB5Zw==", - "dev": true - }, - "is-path-in-cwd": { - "version": "2.1.0", - "resolved": "https://registry.npmjs.org/is-path-in-cwd/-/is-path-in-cwd-2.1.0.tgz", - "integrity": "sha512-rNocXHgipO+rvnP6dk3zI20RpOtrAM/kzbB258Uw5BWr3TpXi861yzjo16Dn4hUox07iw5AyeMLHWsujkjzvRQ==", - "dev": true, - "requires": { - "is-path-inside": "^2.1.0" - } - }, - "is-path-inside": { - "version": "2.1.0", - "resolved": "https://registry.npmjs.org/is-path-inside/-/is-path-inside-2.1.0.tgz", - "integrity": "sha512-wiyhTzfDWsvwAW53OBWF5zuvaOGlZ6PwYxAbPVDhpm+gM09xKQGjBq/8uYN12aDvMxnAnq3dxTyoSoRNmg5YFg==", - "dev": true, - "requires": { - "path-is-inside": "^1.0.2" - } - }, - "is-plain-obj": { - "version": "1.1.0", - "resolved": "https://registry.npmjs.org/is-plain-obj/-/is-plain-obj-1.1.0.tgz", - "integrity": "sha1-caUMhCnfync8kqOQpKA7OfzVHT4=", - "dev": true - }, - "is-plain-object": { - "version": "2.0.4", - "resolved": "https://registry.npmjs.org/is-plain-object/-/is-plain-object-2.0.4.tgz", - "integrity": "sha512-h5PpgXkWitc38BBMYawTYMWJHFZJVnBquFE57xFpjB8pJFiF6gZ+bU+WyI/yqXiFR5mdLsgYNaPe8uao6Uv9Og==", - "dev": true, - "requires": { - "isobject": "^3.0.1" - } - }, - "is-potential-custom-element-name": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/is-potential-custom-element-name/-/is-potential-custom-element-name-1.0.1.tgz", - "integrity": "sha512-bCYeRA2rVibKZd+s2625gGnGF/t7DSqDs4dP7CrLA1m7jKWz6pps0LpYLJN8Q64HtmPKJ1hrN3nzPNKFEKOUiQ==", - "dev": true - }, - "is-relative": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/is-relative/-/is-relative-1.0.0.tgz", - "integrity": "sha512-Kw/ReK0iqwKeu0MITLFuj0jbPAmEiOsIwyIXvvbfa6QfmN9pkD1M+8pdk7Rl/dTKbH34/XBFMbgD4iMJhLQbGA==", - "dev": true, - "requires": { - "is-unc-path": "^1.0.0" - } - }, - "is-stream": { - "version": "1.1.0", - "resolved": "https://registry.npmjs.org/is-stream/-/is-stream-1.1.0.tgz", - "integrity": "sha1-EtSj3U5o4Lec6428hBc66A2RykQ=", - "dev": true - }, - "is-string": { - "version": "1.0.6", - "resolved": "https://registry.npmjs.org/is-string/-/is-string-1.0.6.tgz", - "integrity": "sha512-2gdzbKUuqtQ3lYNrUTQYoClPhm7oQu4UdpSZMp1/DGgkHBT8E2Z1l0yMdb6D4zNAxwDiMv8MdulKROJGNl0Q0w==", - "dev": true - }, - "is-symbol": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/is-symbol/-/is-symbol-1.0.2.tgz", - "integrity": "sha512-HS8bZ9ox60yCJLH9snBpIwv9pYUAkcuLhSA1oero1UB5y9aiQpRA8y2ex945AOtCZL1lJDeIk3G5LthswI46Lw==", - "dev": true, - "requires": { - "has-symbols": "^1.0.0" - } - }, - "is-unc-path": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/is-unc-path/-/is-unc-path-1.0.0.tgz", - "integrity": "sha512-mrGpVd0fs7WWLfVsStvgF6iEJnbjDFZh9/emhRDcGWTduTfNHd9CHeUwH3gYIjdbwo4On6hunkztwOaAw0yllQ==", - "dev": true, - "requires": { - "unc-path-regex": "^0.1.2" - } - }, - "is-unicode-supported": { - "version": "0.1.0", - "resolved": "https://registry.npmjs.org/is-unicode-supported/-/is-unicode-supported-0.1.0.tgz", - "integrity": "sha512-knxG2q4UC3u8stRGyAVJCOdxFmv5DZiRcdlIaAQXAbSfJya+OhopNotLQrstBhququ4ZpuKbDc/8S6mgXgPFPw==", - "dev": true - }, - "is-utf8": { - "version": "0.2.1", - "resolved": "https://registry.npmjs.org/is-utf8/-/is-utf8-0.2.1.tgz", - "integrity": "sha1-Sw2hRCEE0bM2NA6AeX6GXPOffXI=", - "dev": true - }, - "is-valid-glob": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/is-valid-glob/-/is-valid-glob-1.0.0.tgz", - "integrity": "sha1-Kb8+/3Ab4tTTFdusw5vDn+j2Aao=", - "dev": true - }, - "is-windows": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/is-windows/-/is-windows-1.0.2.tgz", - "integrity": "sha512-eXK1UInq2bPmjyX6e3VHIzMLobc4J94i4AWn+Hpq3OU5KkrRC96OAcR3PRJ/pGu6m8TRnBHP9dkXQVsT/COVIA==", - "dev": true - }, - "isarray": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/isarray/-/isarray-1.0.0.tgz", - "integrity": "sha1-u5NdSFgsuhaMBoNJV6VKPgcSTxE=", - "dev": true - }, - "isexe": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/isexe/-/isexe-2.0.0.tgz", - "integrity": "sha1-6PvzdNxVb/iUehDcsFctYz8s+hA=", - "dev": true - }, - "isobject": { - "version": "3.0.1", - "resolved": "https://registry.npmjs.org/isobject/-/isobject-3.0.1.tgz", - "integrity": "sha1-TkMekrEalzFjaqH5yNHMvP2reN8=", - "dev": true - }, - "istextorbinary": { - "version": "2.2.1", - "resolved": "https://registry.npmjs.org/istextorbinary/-/istextorbinary-2.2.1.tgz", - "integrity": "sha512-TS+hoFl8Z5FAFMK38nhBkdLt44CclNRgDHWeMgsV8ko3nDlr/9UI2Sf839sW7enijf8oKsZYXRvM8g0it9Zmcw==", - "dev": true, - "requires": { - "binaryextensions": "2", - "editions": "^1.3.3", - "textextensions": "2" - } - }, - "js-tokens": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/js-tokens/-/js-tokens-4.0.0.tgz", - "integrity": "sha512-RdJUflcE3cUzKiMqQgsCu06FPu9UdIJO0beYbPhHN4k6apgJtifcoCtT9bcxOpYBtpD2kCM6Sbzg4CausW/PKQ==", - "dev": true - }, - "js-yaml": { - "version": "3.13.1", - "resolved": "https://registry.npmjs.org/js-yaml/-/js-yaml-3.13.1.tgz", - "integrity": "sha512-YfbcO7jXDdyj0DGxYVSlSeQNHbD7XPWvrVWeVUujrQEoZzWJIRrCPoyk6kL6IAjAG2IolMK4T0hNUe0HOUs5Jw==", - "dev": true, - "requires": { - "argparse": "^1.0.7", - "esprima": "^4.0.0" - } - }, - "js2xmlparser": { - "version": "4.0.2", - "resolved": "https://registry.npmjs.org/js2xmlparser/-/js2xmlparser-4.0.2.tgz", - "integrity": "sha512-6n4D8gLlLf1n5mNLQPRfViYzu9RATblzPEtm1SthMX1Pjao0r9YI9nw7ZIfRxQMERS87mcswrg+r/OYrPRX6jA==", - "dev": true, - "requires": { - "xmlcreate": "^2.0.4" - } - }, - "jsdoc": { - "version": "3.6.10", - "resolved": "https://registry.npmjs.org/jsdoc/-/jsdoc-3.6.10.tgz", - "integrity": "sha512-IdQ8ppSo5LKZ9o3M+LKIIK8i00DIe5msDvG3G81Km+1dhy0XrOWD0Ji8H61ElgyEj/O9KRLokgKbAM9XX9CJAg==", - "dev": true, - "requires": { - "@babel/parser": "^7.9.4", - "@types/markdown-it": "^12.2.3", - "bluebird": "^3.7.2", - "catharsis": "^0.9.0", - "escape-string-regexp": "^2.0.0", - "js2xmlparser": "^4.0.2", - "klaw": "^4.0.1", - "markdown-it": "^12.3.2", - "markdown-it-anchor": "^8.4.1", - "marked": "^4.0.10", - "mkdirp": "^1.0.4", - "requizzle": "^0.2.3", - "strip-json-comments": "^3.1.0", - "taffydb": "2.6.2", - "underscore": "~1.13.2" - }, - "dependencies": { - "escape-string-regexp": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/escape-string-regexp/-/escape-string-regexp-2.0.0.tgz", - "integrity": "sha512-UpzcLCXolUWcNu5HtVMHYdXJjArjsF9C0aNnquZYY4uW/Vu0miy5YoWvbV345HauVvcAUnpRuhMMcqTcGOY2+w==", - "dev": true - }, - "mkdirp": { - "version": "1.0.4", - "resolved": "https://registry.npmjs.org/mkdirp/-/mkdirp-1.0.4.tgz", - "integrity": "sha512-vVqVZQyf3WLx2Shd0qJ9xuvqgAyKPLAiqITEtqW0oIUjzo3PePDd6fW9iFz30ef7Ysp/oiWqbhszeGWW2T6Gzw==", - "dev": true - } - } - }, - "jsdoctypeparser": { - "version": "9.0.0", - "resolved": "https://registry.npmjs.org/jsdoctypeparser/-/jsdoctypeparser-9.0.0.tgz", - "integrity": "sha512-jrTA2jJIL6/DAEILBEh2/w9QxCuwmvNXIry39Ay/HVfhE3o2yVV0U44blYkqdHA/OKloJEqvJy0xU+GSdE2SIw==", - "dev": true - }, - "jsdom": { - "version": "16.7.0", - "resolved": "https://registry.npmjs.org/jsdom/-/jsdom-16.7.0.tgz", - "integrity": "sha512-u9Smc2G1USStM+s/x1ru5Sxrl6mPYCbByG1U/hUmqaVsm4tbNyS7CicOSRyuGQYZhTu0h84qkZZQ/I+dzizSVw==", - "dev": true, - "requires": { - "abab": "^2.0.5", - "acorn": "^8.2.4", - "acorn-globals": "^6.0.0", - "cssom": "^0.4.4", - "cssstyle": "^2.3.0", - "data-urls": "^2.0.0", - "decimal.js": "^10.2.1", - "domexception": "^2.0.1", - "escodegen": "^2.0.0", - "form-data": "^3.0.0", - "html-encoding-sniffer": "^2.0.1", - "http-proxy-agent": "^4.0.1", - "https-proxy-agent": "^5.0.0", - "is-potential-custom-element-name": "^1.0.1", - "nwsapi": "^2.2.0", - "parse5": "6.0.1", - "saxes": "^5.0.1", - "symbol-tree": "^3.2.4", - "tough-cookie": "^4.0.0", - "w3c-hr-time": "^1.0.2", - "w3c-xmlserializer": "^2.0.0", - "webidl-conversions": "^6.1.0", - "whatwg-encoding": "^1.0.5", - "whatwg-mimetype": "^2.3.0", - "whatwg-url": "^8.5.0", - "ws": "^7.4.6", - "xml-name-validator": "^3.0.0" - }, - "dependencies": { - "agent-base": { - "version": "6.0.2", - "resolved": "https://registry.npmjs.org/agent-base/-/agent-base-6.0.2.tgz", - "integrity": "sha512-RZNwNclF7+MS/8bDg70amg32dyeZGZxiDuQmZxKLAlQjr3jGyLx+4Kkk58UO7D2QdgFIQCovuSuZESne6RG6XQ==", - "dev": true, - "requires": { - "debug": "4" - } - }, - "debug": { - "version": "4.3.2", - "resolved": "https://registry.npmjs.org/debug/-/debug-4.3.2.tgz", - "integrity": "sha512-mOp8wKcvj7XxC78zLgw/ZA+6TSgkoE2C/ienthhRD298T7UNwAg9diBpLRxC0mOezLl4B0xV7M0cCO6P/O0Xhw==", - "dev": true, - "requires": { - "ms": "2.1.2" - } - }, - "http-proxy-agent": { - "version": "4.0.1", - "resolved": "https://registry.npmjs.org/http-proxy-agent/-/http-proxy-agent-4.0.1.tgz", - "integrity": "sha512-k0zdNgqWTGA6aeIRVpvfVob4fL52dTfaehylg0Y4UvSySvOq/Y+BOyPrgpUrA7HylqvU8vIZGsRuXmspskV0Tg==", - "dev": true, - "requires": { - "@tootallnate/once": "1", - "agent-base": "6", - "debug": "4" - } - }, - "https-proxy-agent": { - "version": "5.0.0", - "resolved": "https://registry.npmjs.org/https-proxy-agent/-/https-proxy-agent-5.0.0.tgz", - "integrity": "sha512-EkYm5BcKUGiduxzSt3Eppko+PiNWNEpa4ySk9vTC6wDsQJW9rHSa+UhGNJoRYp7bz6Ht1eaRIa6QaJqO5rCFbA==", - "dev": true, - "requires": { - "agent-base": "6", - "debug": "4" - } - }, - "ms": { - "version": "2.1.2", - "resolved": "https://registry.npmjs.org/ms/-/ms-2.1.2.tgz", - "integrity": "sha512-sGkPx+VjMtmA6MX27oA4FBFELFCZZ4S4XqeGOXCv68tT+jb3vk/RyaKWP0PTKyWtmLSM0b+adUTEvbs1PEaH2w==", - "dev": true - }, - "tr46": { - "version": "2.1.0", - "resolved": "https://registry.npmjs.org/tr46/-/tr46-2.1.0.tgz", - "integrity": "sha512-15Ih7phfcdP5YxqiB+iDtLoaTz4Nd35+IiAv0kQ5FNKHzXgdWqPoTIqEDDJmXceQt4JZk6lVPT8lnDlPpGDppw==", - "dev": true, - "requires": { - "punycode": "^2.1.1" - } - }, - "webidl-conversions": { - "version": "6.1.0", - "resolved": "https://registry.npmjs.org/webidl-conversions/-/webidl-conversions-6.1.0.tgz", - "integrity": "sha512-qBIvFLGiBpLjfwmYAaHPXsn+ho5xZnGvyGvsarywGNc8VyQJUMHJ8OBKGGrPER0okBeMDaan4mNBlgBROxuI8w==", - "dev": true - }, - "whatwg-url": { - "version": "8.7.0", - "resolved": "https://registry.npmjs.org/whatwg-url/-/whatwg-url-8.7.0.tgz", - "integrity": "sha512-gAojqb/m9Q8a5IV96E3fHJM70AzCkgt4uXYX2O7EmuyOnLrViCQlsEBmF9UQIu3/aeAIp2U17rtbpZWNntQqdg==", - "dev": true, - "requires": { - "lodash": "^4.7.0", - "tr46": "^2.1.0", - "webidl-conversions": "^6.1.0" - } - } - } - }, - "json-parse-better-errors": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/json-parse-better-errors/-/json-parse-better-errors-1.0.2.tgz", - "integrity": "sha512-mrqyZKfX5EhL7hvqcV6WG1yYjnjeuYDzDhhcAAUrq8Po85NBQBJP+ZDUT75qZQ98IkUoBqdkExkukOU7Ts2wrw==", - "dev": true - }, - "json-schema-traverse": { - "version": "0.4.1", - "resolved": "https://registry.npmjs.org/json-schema-traverse/-/json-schema-traverse-0.4.1.tgz", - "integrity": "sha512-xbbCH5dCYU5T8LcEhhuh7HJ88HXuW3qsI3Y0zOZFKfZEHcpWiHU/Jxzk629Brsab/mMiHQti9wMP+845RPe3Vg==", - "dev": true - }, - "json-stable-stringify-without-jsonify": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/json-stable-stringify-without-jsonify/-/json-stable-stringify-without-jsonify-1.0.1.tgz", - "integrity": "sha1-nbe1lJatPzz+8wp1FC0tkwrXJlE=", - "dev": true - }, - "json5": { - "version": "2.1.3", - "resolved": "https://registry.npmjs.org/json5/-/json5-2.1.3.tgz", - "integrity": "sha512-KXPvOm8K9IJKFM0bmdn8QXh7udDh1g/giieX0NLCaMnb4hEiVFqnop2ImTXCc5e0/oHz3LTqmHGtExn5hfMkOA==", - "dev": true, - "requires": { - "minimist": "^1.2.5" - } - }, - "jsonfile": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/jsonfile/-/jsonfile-4.0.0.tgz", - "integrity": "sha1-h3Gq4HmbZAdrdmQPygWPnBDjPss=", - "dev": true, - "requires": { - "graceful-fs": "^4.1.6" - } - }, - "jsonpointer": { - "version": "5.0.0", - "resolved": "https://registry.npmjs.org/jsonpointer/-/jsonpointer-5.0.0.tgz", - "integrity": "sha512-PNYZIdMjVIvVgDSYKTT63Y+KZ6IZvGRNNWcxwD+GNnUz1MKPfv30J8ueCjdwcN0nDx2SlshgyB7Oy0epAzVRRg==", - "dev": true - }, - "jsonwebtoken": { - "version": "8.5.1", - "resolved": "https://registry.npmjs.org/jsonwebtoken/-/jsonwebtoken-8.5.1.tgz", - "integrity": "sha512-XjwVfRS6jTMsqYs0EsuJ4LGxXV14zQybNd4L2r0UvbVnSF9Af8x7p5MzbJ90Ioz/9TI41/hTCvznF/loiSzn8w==", - "dev": true, - "requires": { - "jws": "^3.2.2", - "lodash.includes": "^4.3.0", - "lodash.isboolean": "^3.0.3", - "lodash.isinteger": "^4.0.4", - "lodash.isnumber": "^3.0.3", - "lodash.isplainobject": "^4.0.6", - "lodash.isstring": "^4.0.1", - "lodash.once": "^4.0.0", - "ms": "^2.1.1", - "semver": "^5.6.0" - }, - "dependencies": { - "ms": { - "version": "2.1.2", - "resolved": "https://registry.npmjs.org/ms/-/ms-2.1.2.tgz", - "integrity": "sha512-sGkPx+VjMtmA6MX27oA4FBFELFCZZ4S4XqeGOXCv68tT+jb3vk/RyaKWP0PTKyWtmLSM0b+adUTEvbs1PEaH2w==", - "dev": true - } - } - }, - "just-debounce": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/just-debounce/-/just-debounce-1.0.0.tgz", - "integrity": "sha1-h/zPrv/AtozRnVX2cilD+SnqNeo=", - "dev": true - }, - "jwa": { - "version": "1.4.1", - "resolved": "https://registry.npmjs.org/jwa/-/jwa-1.4.1.tgz", - "integrity": "sha512-qiLX/xhEEFKUAJ6FiBMbes3w9ATzyk5W7Hvzpa/SLYdxNtng+gcurvrI7TbACjIXlsJyr05/S1oUhZrc63evQA==", - "dev": true, - "requires": { - "buffer-equal-constant-time": "1.0.1", - "ecdsa-sig-formatter": "1.0.11", - "safe-buffer": "^5.0.1" - } - }, - "jws": { - "version": "3.2.2", - "resolved": "https://registry.npmjs.org/jws/-/jws-3.2.2.tgz", - "integrity": "sha512-YHlZCB6lMTllWDtSPHz/ZXTsi8S00usEV6v1tjq8tOUZzw7DpSDWVXjXDre6ed1w/pd495ODpHZYSdkRTsa0HA==", - "dev": true, - "requires": { - "jwa": "^1.4.1", - "safe-buffer": "^5.0.1" - } - }, - "kind-of": { - "version": "6.0.3", - "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-6.0.3.tgz", - "integrity": "sha512-dcS1ul+9tmeD95T+x28/ehLgd9mENa3LsvDTtzm3vyBEO7RPptvAD+t44WVXaUjTBRcrpFeFlC8WCruUR456hw==", - "dev": true - }, - "klaw": { - "version": "4.0.1", - "resolved": "https://registry.npmjs.org/klaw/-/klaw-4.0.1.tgz", - "integrity": "sha512-pgsE40/SvC7st04AHiISNewaIMUbY5V/K8b21ekiPiFoYs/EYSdsGa+FJArB1d441uq4Q8zZyIxvAzkGNlBdRw==", - "dev": true - }, - "ky": { - "version": "0.12.0", - "resolved": "https://registry.npmjs.org/ky/-/ky-0.12.0.tgz", - "integrity": "sha512-t9b7v3V2fGwAcQnnDDQwKQGF55eWrf4pwi1RN08Fy8b/9GEwV7Ea0xQiaSW6ZbeghBHIwl8kgnla4vVo9seepQ==", - "dev": true - }, - "ky-universal": { - "version": "0.3.0", - "resolved": "https://registry.npmjs.org/ky-universal/-/ky-universal-0.3.0.tgz", - "integrity": "sha512-CM4Bgb2zZZpsprcjI6DNYTaH3oGHXL2u7BU4DK+lfCuC4snkt9/WRpMYeKbBbXscvKkeqBwzzjFX2WwmKY5K/A==", - "dev": true, - "requires": { - "abort-controller": "^3.0.0", - "node-fetch": "^2.6.0" - }, - "dependencies": { - "node-fetch": { - "version": "2.6.7", - "resolved": "https://registry.npmjs.org/node-fetch/-/node-fetch-2.6.7.tgz", - "integrity": "sha512-ZjMPFEfVx5j+y2yF35Kzx5sF7kDzxuDj6ziH4FFbOp87zKDZNx8yExJIb05OGF4Nlt9IHFIMBkRl41VdvcNdbQ==", - "dev": true, - "requires": { - "whatwg-url": "^5.0.0" - } - }, - "tr46": { - "version": "0.0.3", - "resolved": "https://registry.npmjs.org/tr46/-/tr46-0.0.3.tgz", - "integrity": "sha1-gYT9NH2snNwYWZLzpmIuFLnZq2o=", - "dev": true - }, - "webidl-conversions": { - "version": "3.0.1", - "resolved": "https://registry.npmjs.org/webidl-conversions/-/webidl-conversions-3.0.1.tgz", - "integrity": "sha1-JFNCdeKnvGvnvIZhHMFq4KVlSHE=", - "dev": true - }, - "whatwg-url": { - "version": "5.0.0", - "resolved": "https://registry.npmjs.org/whatwg-url/-/whatwg-url-5.0.0.tgz", - "integrity": "sha1-lmRU6HZUYuN2RNNib2dCzotwll0=", - "dev": true, - "requires": { - "tr46": "~0.0.3", - "webidl-conversions": "^3.0.0" - } - } - } - }, - "last-run": { - "version": "1.1.1", - "resolved": "https://registry.npmjs.org/last-run/-/last-run-1.1.1.tgz", - "integrity": "sha1-RblpQsF7HHnHchmCWbqUO+v4yls=", - "dev": true, - "requires": { - "default-resolution": "^2.0.0", - "es6-weak-map": "^2.0.1" - } - }, - "lazystream": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/lazystream/-/lazystream-1.0.0.tgz", - "integrity": "sha1-9plf4PggOS9hOWvolGJAe7dxaOQ=", - "dev": true, - "requires": { - "readable-stream": "^2.0.5" - } - }, - "lcid": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/lcid/-/lcid-1.0.0.tgz", - "integrity": "sha1-MIrMr6C8SDo4Z7S28rlQYlHRuDU=", - "dev": true, - "requires": { - "invert-kv": "^1.0.0" - } - }, - "lead": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/lead/-/lead-1.0.0.tgz", - "integrity": "sha1-bxT5mje+Op3XhPVJVpDlkDRm7kI=", - "dev": true, - "requires": { - "flush-write-stream": "^1.0.2" - } - }, - "levn": { - "version": "0.3.0", - "resolved": "https://registry.npmjs.org/levn/-/levn-0.3.0.tgz", - "integrity": "sha1-OwmSTt+fCDwEkP3UwLxEIeBHZO4=", - "dev": true, - "requires": { - "prelude-ls": "~1.1.2", - "type-check": "~0.3.2" - } - }, - "li": { - "version": "1.3.0", - "resolved": "https://registry.npmjs.org/li/-/li-1.3.0.tgz", - "integrity": "sha1-IsWbyu+qmo7zWc91l4TkvxBq6hs=", - "dev": true - }, - "liftoff": { - "version": "3.1.0", - "resolved": "https://registry.npmjs.org/liftoff/-/liftoff-3.1.0.tgz", - "integrity": "sha512-DlIPlJUkCV0Ips2zf2pJP0unEoT1kwYhiiPUGF3s/jtxTCjziNLoiVVh+jqWOWeFi6mmwQ5fNxvAUyPad4Dfog==", - "dev": true, - "requires": { - "extend": "^3.0.0", - "findup-sync": "^3.0.0", - "fined": "^1.0.1", - "flagged-respawn": "^1.0.0", - "is-plain-object": "^2.0.4", - "object.map": "^1.0.0", - "rechoir": "^0.6.2", - "resolve": "^1.1.7" - } - }, - "linkify-it": { - "version": "3.0.3", - "resolved": "https://registry.npmjs.org/linkify-it/-/linkify-it-3.0.3.tgz", - "integrity": "sha512-ynTsyrFSdE5oZ/O9GEf00kPngmOfVwazR5GKDq6EYfhlpFug3J2zybX56a2PRRpc9P+FuSoGNAwjlbDs9jJBPQ==", - "dev": true, - "requires": { - "uc.micro": "^1.0.1" - } - }, - "load-json-file": { - "version": "1.1.0", - "resolved": "https://registry.npmjs.org/load-json-file/-/load-json-file-1.1.0.tgz", - "integrity": "sha1-lWkFcI1YtLq0wiYbBPWfMcmTdMA=", - "dev": true, - "requires": { - "graceful-fs": "^4.1.2", - "parse-json": "^2.2.0", - "pify": "^2.0.0", - "pinkie-promise": "^2.0.0", - "strip-bom": "^2.0.0" - } - }, - "locate-path": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/locate-path/-/locate-path-3.0.0.tgz", - "integrity": "sha512-7AO748wWnIhNqAuaty2ZWHkQHRSNfPVIsPIfwEOWO22AmaoVrWavlOcMR5nzTLNYvp36X220/maaRsrec1G65A==", - "dev": true, - "requires": { - "p-locate": "^3.0.0", - "path-exists": "^3.0.0" - }, - "dependencies": { - "path-exists": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/path-exists/-/path-exists-3.0.0.tgz", - "integrity": "sha1-zg6+ql94yxiSXqfYENe1mwEP1RU=", - "dev": true - } - } - }, - "lodash": { - "version": "4.17.21", - "resolved": "https://registry.npmjs.org/lodash/-/lodash-4.17.21.tgz", - "integrity": "sha512-v2kDEe57lecTulaDIuNTPy3Ry4gLGJ6Z1O3vE1krgXZNrsQ+LFTGHVxVjcXPs17LhbZVGedAJv8XZ1tvj5FvSg==", - "dev": true - }, - "lodash._reinterpolate": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/lodash._reinterpolate/-/lodash._reinterpolate-3.0.0.tgz", - "integrity": "sha1-DM8tiRZq8Ds2Y8eWU4t1rG4RTZ0=", - "dev": true - }, - "lodash.find": { - "version": "4.6.0", - "resolved": "https://registry.npmjs.org/lodash.find/-/lodash.find-4.6.0.tgz", - "integrity": "sha1-ywcE1Hq3F4n/oN6Ll92Sb7iLE7E=", - "dev": true - }, - "lodash.get": { - "version": "4.4.2", - "resolved": "https://registry.npmjs.org/lodash.get/-/lodash.get-4.4.2.tgz", - "integrity": "sha1-LRd/ZS+jHpObRDjVNBSZ36OCXpk=", - "dev": true - }, - "lodash.includes": { - "version": "4.3.0", - "resolved": "https://registry.npmjs.org/lodash.includes/-/lodash.includes-4.3.0.tgz", - "integrity": "sha1-YLuYqHy5I8aMoeUTJUgzFISfVT8=", - "dev": true - }, - "lodash.isboolean": { - "version": "3.0.3", - "resolved": "https://registry.npmjs.org/lodash.isboolean/-/lodash.isboolean-3.0.3.tgz", - "integrity": "sha1-bC4XHbKiV82WgC/UOwGyDV9YcPY=", - "dev": true - }, - "lodash.isinteger": { - "version": "4.0.4", - "resolved": "https://registry.npmjs.org/lodash.isinteger/-/lodash.isinteger-4.0.4.tgz", - "integrity": "sha1-YZwK89A/iwTDH1iChAt3sRzWg0M=", - "dev": true - }, - "lodash.isnumber": { - "version": "3.0.3", - "resolved": "https://registry.npmjs.org/lodash.isnumber/-/lodash.isnumber-3.0.3.tgz", - "integrity": "sha1-POdoEMWSjQM1IwGsKHMX8RwLH/w=", - "dev": true - }, - "lodash.isobject": { - "version": "3.0.2", - "resolved": "https://registry.npmjs.org/lodash.isobject/-/lodash.isobject-3.0.2.tgz", - "integrity": "sha1-PI+41bW/S/kK4G4U8qUwpO2TXh0=", - "dev": true - }, - "lodash.isplainobject": { - "version": "4.0.6", - "resolved": "https://registry.npmjs.org/lodash.isplainobject/-/lodash.isplainobject-4.0.6.tgz", - "integrity": "sha1-fFJqUtibRcRcxpC4gWO+BJf1UMs=", - "dev": true - }, - "lodash.isstring": { - "version": "4.0.1", - "resolved": "https://registry.npmjs.org/lodash.isstring/-/lodash.isstring-4.0.1.tgz", - "integrity": "sha1-1SfftUVuynzJu5XV2ur4i6VKVFE=", - "dev": true - }, - "lodash.keys": { - "version": "4.2.0", - "resolved": "https://registry.npmjs.org/lodash.keys/-/lodash.keys-4.2.0.tgz", - "integrity": "sha1-oIYCrBLk+4P5H8H7ejYKTZujUgU=", - "dev": true - }, - "lodash.mapvalues": { - "version": "4.6.0", - "resolved": "https://registry.npmjs.org/lodash.mapvalues/-/lodash.mapvalues-4.6.0.tgz", - "integrity": "sha1-G6+lAF3p3W9PJmaMMMo3IwzJaJw=", - "dev": true - }, - "lodash.memoize": { - "version": "4.1.2", - "resolved": "https://registry.npmjs.org/lodash.memoize/-/lodash.memoize-4.1.2.tgz", - "integrity": "sha1-vMbEmkKihA7Zl/Mj6tpezRguC/4=", - "dev": true - }, - "lodash.once": { - "version": "4.1.1", - "resolved": "https://registry.npmjs.org/lodash.once/-/lodash.once-4.1.1.tgz", - "integrity": "sha1-DdOXEhPHxW34gJd9UEyI+0cal6w=", - "dev": true - }, - "lodash.set": { - "version": "4.3.2", - "resolved": "https://registry.npmjs.org/lodash.set/-/lodash.set-4.3.2.tgz", - "integrity": "sha1-2HV7HagH3eJIFrDWqEvqGnYjCyM=", - "dev": true - }, - "lodash.sortby": { - "version": "4.7.0", - "resolved": "https://registry.npmjs.org/lodash.sortby/-/lodash.sortby-4.7.0.tgz", - "integrity": "sha1-7dFMgk4sycHgsKG0K7UhBRakJDg=", - "dev": true - }, - "lodash.template": { - "version": "4.5.0", - "resolved": "https://registry.npmjs.org/lodash.template/-/lodash.template-4.5.0.tgz", - "integrity": "sha512-84vYFxIkmidUiFxidA/KjjH9pAycqW+h980j7Fuz5qxRtO9pgB7MDFTdys1N7A5mcucRiDyEq4fusljItR1T/A==", - "dev": true, - "requires": { - "lodash._reinterpolate": "^3.0.0", - "lodash.templatesettings": "^4.0.0" - } - }, - "lodash.templatesettings": { - "version": "4.1.0", - "resolved": "https://registry.npmjs.org/lodash.templatesettings/-/lodash.templatesettings-4.1.0.tgz", - "integrity": "sha1-K01OlbpEDZFf8IvImeRVNmZxMxY=", - "dev": true, - "requires": { - "lodash._reinterpolate": "~3.0.0" - } - }, - "lodash.uniq": { - "version": "4.5.0", - "resolved": "https://registry.npmjs.org/lodash.uniq/-/lodash.uniq-4.5.0.tgz", - "integrity": "sha1-0CJTc662Uq3BvILklFM5qEJ1R3M=", - "dev": true - }, - "log-symbols": { - "version": "4.1.0", - "resolved": "https://registry.npmjs.org/log-symbols/-/log-symbols-4.1.0.tgz", - "integrity": "sha512-8XPvpAA8uyhfteu8pIvQxpJZ7SYYdpUivZpGy6sFsBuKRY/7rQGavedeB8aK+Zkyq6upMFVL/9AW6vOYzfRyLg==", - "dev": true, - "requires": { - "chalk": "^4.1.0", - "is-unicode-supported": "^0.1.0" - }, - "dependencies": { - "ansi-styles": { - "version": "4.3.0", - "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-4.3.0.tgz", - "integrity": "sha512-zbB9rCJAT1rbjiVDb2hqKFHNYLxgtk8NURxZ3IZwD3F6NtxbXZQCnnSi1Lkx+IDohdPlFp222wVALIheZJQSEg==", - "dev": true, - "requires": { - "color-convert": "^2.0.1" - } - }, - "chalk": { - "version": "4.1.2", - "resolved": "https://registry.npmjs.org/chalk/-/chalk-4.1.2.tgz", - "integrity": "sha512-oKnbhFyRIXpUuez8iBMmyEa4nbj4IOQyuhc/wy9kY7/WVPcwIO9VA668Pu8RkO7+0G76SLROeyw9CpQ061i4mA==", - "dev": true, - "requires": { - "ansi-styles": "^4.1.0", - "supports-color": "^7.1.0" - } - }, - "color-convert": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-2.0.1.tgz", - "integrity": "sha512-RRECPsj7iu/xb5oKYcsFHSppFNnsj/52OVTRKb4zP5onXwVF3zVmmToNcOfGC+CRDpfK/U584fMg38ZHCaElKQ==", - "dev": true, - "requires": { - "color-name": "~1.1.4" - } - }, - "color-name": { - "version": "1.1.4", - "resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.4.tgz", - "integrity": "sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA==", - "dev": true - }, - "has-flag": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-4.0.0.tgz", - "integrity": "sha512-EykJT/Q1KjTWctppgIAgfSO0tKVuZUjhgMr17kqTumMl6Afv3EISleU7qZUzoXDFTAHTDC4NOoG/ZxU3EvlMPQ==", - "dev": true - }, - "supports-color": { - "version": "7.2.0", - "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-7.2.0.tgz", - "integrity": "sha512-qpCAvRl9stuOHveKsn7HncJRvv501qIacKzQlO/+Lwxc9+0q2wLyv4Dfvt80/DPn2pqOBsJdDiogXGR9+OvwRw==", - "dev": true, - "requires": { - "has-flag": "^4.0.0" - } - } - } - }, - "loud-rejection": { - "version": "1.6.0", - "resolved": "https://registry.npmjs.org/loud-rejection/-/loud-rejection-1.6.0.tgz", - "integrity": "sha1-W0b4AUft7leIcPCG0Eghz5mOVR8=", - "dev": true, - "requires": { - "currently-unhandled": "^0.4.1", - "signal-exit": "^3.0.0" - } - }, - "lru-cache": { - "version": "6.0.0", - "resolved": "https://registry.npmjs.org/lru-cache/-/lru-cache-6.0.0.tgz", - "integrity": "sha512-Jo6dJ04CmSjuznwJSS3pUeWmd/H0ffTlkXXgwZi+eq1UCmqQwCh+eLsYOYCwY991i2Fah4h1BEMCx4qThGbsiA==", - "dev": true, - "requires": { - "yallist": "^4.0.0" - } - }, - "macos-release": { - "version": "2.4.1", - "resolved": "https://registry.npmjs.org/macos-release/-/macos-release-2.4.1.tgz", - "integrity": "sha512-H/QHeBIN1fIGJX517pvK8IEK53yQOW7YcEI55oYtgjDdoCQQz7eJS94qt5kNrscReEyuD/JcdFCm2XBEcGOITg==", - "dev": true - }, - "make-iterator": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/make-iterator/-/make-iterator-1.0.1.tgz", - "integrity": "sha512-pxiuXh0iVEq7VM7KMIhs5gxsfxCux2URptUQaXo4iZZJxBAzTPOLE2BumO5dbfVYq/hBJFBR/a1mFDmOx5AGmw==", - "dev": true, - "requires": { - "kind-of": "^6.0.2" - } - }, - "map-cache": { - "version": "0.2.2", - "resolved": "https://registry.npmjs.org/map-cache/-/map-cache-0.2.2.tgz", - "integrity": "sha1-wyq9C9ZSXZsFFkW7TyasXcmKDb8=", - "dev": true - }, - "map-obj": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/map-obj/-/map-obj-2.0.0.tgz", - "integrity": "sha1-plzSkIepJZi4eRJXpSPgISIqwfk=", - "dev": true - }, - "map-stream": { - "version": "0.0.7", - "resolved": "https://registry.npmjs.org/map-stream/-/map-stream-0.0.7.tgz", - "integrity": "sha1-ih8HiW2CsQkmvTdEokIACfiJdKg=", - "dev": true - }, - "map-visit": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/map-visit/-/map-visit-1.0.0.tgz", - "integrity": "sha1-7Nyo8TFE5mDxtb1B8S80edmN+48=", - "dev": true, - "requires": { - "object-visit": "^1.0.0" - } - }, - "markdown-it": { - "version": "12.3.2", - "resolved": "https://registry.npmjs.org/markdown-it/-/markdown-it-12.3.2.tgz", - "integrity": "sha512-TchMembfxfNVpHkbtriWltGWc+m3xszaRD0CZup7GFFhzIgQqxIfn3eGj1yZpfuflzPvfkt611B2Q/Bsk1YnGg==", - "dev": true, - "requires": { - "argparse": "^2.0.1", - "entities": "~2.1.0", - "linkify-it": "^3.0.1", - "mdurl": "^1.0.1", - "uc.micro": "^1.0.5" - }, - "dependencies": { - "argparse": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/argparse/-/argparse-2.0.1.tgz", - "integrity": "sha512-8+9WqebbFzpX9OR+Wa6O29asIogeRMzcGtAINdpMHHyAg10f05aSFVBbcEqGf/PXw1EjAZ+q2/bEBg3DvurK3Q==", - "dev": true - } - } - }, - "markdown-it-anchor": { - "version": "8.4.1", - "resolved": "https://registry.npmjs.org/markdown-it-anchor/-/markdown-it-anchor-8.4.1.tgz", - "integrity": "sha512-sLODeRetZ/61KkKLJElaU3NuU2z7MhXf12Ml1WJMSdwpngeofneCRF+JBbat8HiSqhniOMuTemXMrsI7hA6XyA==", - "dev": true, - "requires": {} - }, - "marked": { - "version": "4.0.12", - "resolved": "https://registry.npmjs.org/marked/-/marked-4.0.12.tgz", - "integrity": "sha512-hgibXWrEDNBWgGiK18j/4lkS6ihTe9sxtV4Q1OQppb/0zzyPSzoFANBa5MfsG/zgsWklmNnhm0XACZOH/0HBiQ==", - "dev": true - }, - "matchdep": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/matchdep/-/matchdep-2.0.0.tgz", - "integrity": "sha1-xvNINKDY28OzfCfui7yyfHd1WC4=", - "dev": true, - "requires": { - "findup-sync": "^2.0.0", - "micromatch": "^3.0.4", - "resolve": "^1.4.0", - "stack-trace": "0.0.10" - }, - "dependencies": { - "findup-sync": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/findup-sync/-/findup-sync-2.0.0.tgz", - "integrity": "sha1-kyaxSIwi0aYIhlCoaQGy2akKLLw=", - "dev": true, - "requires": { - "detect-file": "^1.0.0", - "is-glob": "^3.1.0", - "micromatch": "^3.0.4", - "resolve-dir": "^1.0.1" - } - }, - "is-glob": { - "version": "3.1.0", - "resolved": "https://registry.npmjs.org/is-glob/-/is-glob-3.1.0.tgz", - "integrity": "sha1-e6WuJCF4BKxwcHuWkiVnSGzD6Eo=", - "dev": true, - "requires": { - "is-extglob": "^2.1.0" - } - } - } - }, - "mdurl": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/mdurl/-/mdurl-1.0.1.tgz", - "integrity": "sha1-/oWy7HWlkDfyrf7BAP1sYBdhFS4=", - "dev": true - }, - "memfs-or-file-map-to-github-branch": { - "version": "1.2.0", - "resolved": "https://registry.npmjs.org/memfs-or-file-map-to-github-branch/-/memfs-or-file-map-to-github-branch-1.2.0.tgz", - "integrity": "sha512-PloI9AkRXrLQuBU1s7eYQpl+4hkL0U0h23lddMaJ3ZGUufn8pdNRxd1kCfBqL5gISCFQs78ttXS15e4/f5vcTA==", - "dev": true, - "requires": { - "@octokit/rest": "^16.43.1" - } - }, - "memorystream": { - "version": "0.3.1", - "resolved": "https://registry.npmjs.org/memorystream/-/memorystream-0.3.1.tgz", - "integrity": "sha1-htcJCzDORV1j+64S3aUaR93K+bI=", - "dev": true - }, - "meow": { - "version": "5.0.0", - "resolved": "https://registry.npmjs.org/meow/-/meow-5.0.0.tgz", - "integrity": "sha512-CbTqYU17ABaLefO8vCU153ZZlprKYWDljcndKKDCFcYQITzWCXZAVk4QMFZPgvzrnUQ3uItnIE/LoUOwrT15Ig==", - "dev": true, - "requires": { - "camelcase-keys": "^4.0.0", - "decamelize-keys": "^1.0.0", - "loud-rejection": "^1.0.0", - "minimist-options": "^3.0.1", - "normalize-package-data": "^2.3.4", - "read-pkg-up": "^3.0.0", - "redent": "^2.0.0", - "trim-newlines": "^2.0.0", - "yargs-parser": "^10.0.0" - }, - "dependencies": { - "camelcase": { - "version": "4.1.0", - "resolved": "https://registry.npmjs.org/camelcase/-/camelcase-4.1.0.tgz", - "integrity": "sha1-1UVjW+HjPFQmScaRc+Xeas+uNN0=", - "dev": true - }, - "find-up": { - "version": "2.1.0", - "resolved": "https://registry.npmjs.org/find-up/-/find-up-2.1.0.tgz", - "integrity": "sha1-RdG35QbHF93UgndaK3eSCjwMV6c=", - "dev": true, - "requires": { - "locate-path": "^2.0.0" - } - }, - "load-json-file": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/load-json-file/-/load-json-file-4.0.0.tgz", - "integrity": "sha1-L19Fq5HjMhYjT9U62rZo607AmTs=", - "dev": true, - "requires": { - "graceful-fs": "^4.1.2", - "parse-json": "^4.0.0", - "pify": "^3.0.0", - "strip-bom": "^3.0.0" - } - }, - "locate-path": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/locate-path/-/locate-path-2.0.0.tgz", - "integrity": "sha1-K1aLJl7slExtnA3pw9u7ygNUzY4=", - "dev": true, - "requires": { - "p-locate": "^2.0.0", - "path-exists": "^3.0.0" - } - }, - "p-limit": { - "version": "1.3.0", - "resolved": "https://registry.npmjs.org/p-limit/-/p-limit-1.3.0.tgz", - "integrity": "sha512-vvcXsLAJ9Dr5rQOPk7toZQZJApBl2K4J6dANSsEuh6QI41JYcsS/qhTGa9ErIUUgK3WNQoJYvylxvjqmiqEA9Q==", - "dev": true, - "requires": { - "p-try": "^1.0.0" - } - }, - "p-locate": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/p-locate/-/p-locate-2.0.0.tgz", - "integrity": "sha1-IKAQOyIqcMj9OcwuWAaA893l7EM=", - "dev": true, - "requires": { - "p-limit": "^1.1.0" - } - }, - "p-try": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/p-try/-/p-try-1.0.0.tgz", - "integrity": "sha1-y8ec26+P1CKOE/Yh8rGiN8GyB7M=", - "dev": true - }, - "parse-json": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/parse-json/-/parse-json-4.0.0.tgz", - "integrity": "sha1-vjX1Qlvh9/bHRxhPmKeIy5lHfuA=", - "dev": true, - "requires": { - "error-ex": "^1.3.1", - "json-parse-better-errors": "^1.0.1" - } - }, - "path-exists": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/path-exists/-/path-exists-3.0.0.tgz", - "integrity": "sha1-zg6+ql94yxiSXqfYENe1mwEP1RU=", - "dev": true - }, - "path-type": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/path-type/-/path-type-3.0.0.tgz", - "integrity": "sha512-T2ZUsdZFHgA3u4e5PfPbjd7HDDpxPnQb5jN0SrDsjNSuVXHJqtwTnWqG0B1jZrgmJ/7lj1EmVIByWt1gxGkWvg==", - "dev": true, - "requires": { - "pify": "^3.0.0" - } - }, - "pify": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/pify/-/pify-3.0.0.tgz", - "integrity": "sha1-5aSs0sEB/fPZpNB/DbxNtJ3SgXY=", - "dev": true - }, - "read-pkg": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/read-pkg/-/read-pkg-3.0.0.tgz", - "integrity": "sha1-nLxoaXj+5l0WwA4rGcI3/Pbjg4k=", - "dev": true, - "requires": { - "load-json-file": "^4.0.0", - "normalize-package-data": "^2.3.2", - "path-type": "^3.0.0" - } - }, - "read-pkg-up": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/read-pkg-up/-/read-pkg-up-3.0.0.tgz", - "integrity": "sha1-PtSWaF26D4/hGNBpHcUfSh/5bwc=", - "dev": true, - "requires": { - "find-up": "^2.0.0", - "read-pkg": "^3.0.0" - } - }, - "strip-bom": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/strip-bom/-/strip-bom-3.0.0.tgz", - "integrity": "sha1-IzTBjpx1n3vdVv3vfprj1YjmjtM=", - "dev": true - }, - "yargs-parser": { - "version": "10.1.0", - "resolved": "https://registry.npmjs.org/yargs-parser/-/yargs-parser-10.1.0.tgz", - "integrity": "sha512-VCIyR1wJoEBZUqk5PA+oOBF6ypbwh5aNB3I50guxAL/quggdfs4TtNHQrSazFA3fYZ+tEqfs0zIGlv0c/rgjbQ==", - "dev": true, - "requires": { - "camelcase": "^4.1.0" - } - } - } - }, - "merge2": { - "version": "1.4.1", - "resolved": "https://registry.npmjs.org/merge2/-/merge2-1.4.1.tgz", - "integrity": "sha512-8q7VEgMJW4J8tcfVPy8g09NcQwZdbwFEqhe/WZkoIzjn/3TGDwtOCYtXGxA3O8tPzpczCCDgv+P2P5y00ZJOOg==", - "dev": true - }, - "microbuffer": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/microbuffer/-/microbuffer-1.0.0.tgz", - "integrity": "sha1-izgy7UDIfVH0e7I0kTppinVtGdI=", - "dev": true - }, - "micromatch": { - "version": "3.1.10", - "resolved": "https://registry.npmjs.org/micromatch/-/micromatch-3.1.10.tgz", - "integrity": "sha512-MWikgl9n9M3w+bpsY3He8L+w9eF9338xRl8IAO5viDizwSzziFEyUzo2xrrloB64ADbTf8uA8vRqqttDTOmccg==", - "dev": true, - "requires": { - "arr-diff": "^4.0.0", - "array-unique": "^0.3.2", - "braces": "^2.3.1", - "define-property": "^2.0.2", - "extend-shallow": "^3.0.2", - "extglob": "^2.0.4", - "fragment-cache": "^0.2.1", - "kind-of": "^6.0.2", - "nanomatch": "^1.2.9", - "object.pick": "^1.3.0", - "regex-not": "^1.0.0", - "snapdragon": "^0.8.1", - "to-regex": "^3.0.2" - } - }, - "mime": { - "version": "1.6.0", - "resolved": "https://registry.npmjs.org/mime/-/mime-1.6.0.tgz", - "integrity": "sha512-x0Vn8spI+wuJ1O6S7gnbaQg8Pxh4NNHb7KSINmEWKiPE4RKOplvijn+NkmYmmRgP68mc70j2EbeTFRsrswaQeg==", - "dev": true - }, - "mime-db": { - "version": "1.38.0", - "resolved": "https://registry.npmjs.org/mime-db/-/mime-db-1.38.0.tgz", - "integrity": "sha512-bqVioMFFzc2awcdJZIzR3HjZFX20QhilVS7hytkKrv7xFAn8bM1gzc/FOX2awLISvWe0PV8ptFKcon+wZ5qYkg==", - "dev": true - }, - "mime-types": { - "version": "2.1.22", - "resolved": "https://registry.npmjs.org/mime-types/-/mime-types-2.1.22.tgz", - "integrity": "sha512-aGl6TZGnhm/li6F7yx82bJiBZwgiEa4Hf6CNr8YO+r5UHr53tSTYZb102zyU50DOWWKeOv0uQLRL0/9EiKWCog==", - "dev": true, - "requires": { - "mime-db": "~1.38.0" - } - }, - "minimatch": { - "version": "3.0.4", - "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-3.0.4.tgz", - "integrity": "sha512-yJHVQEhyqPLUTgt9B83PXu6W3rx4MvvHvSUvToogpwoGDOUQ+yDrR0HRot+yOCdCO7u4hX3pWft6kWBBcqh0UA==", - "dev": true, - "requires": { - "brace-expansion": "^1.1.7" - } - }, - "minimist": { - "version": "1.2.6", - "resolved": "https://registry.npmjs.org/minimist/-/minimist-1.2.6.tgz", - "integrity": "sha512-Jsjnk4bw3YJqYzbdyBiNsPWHPfO++UGG749Cxs6peCu5Xg4nrena6OVxOYxrQTqww0Jmwt+Ref8rggumkTLz9Q==", - "dev": true - }, - "minimist-options": { - "version": "3.0.2", - "resolved": "https://registry.npmjs.org/minimist-options/-/minimist-options-3.0.2.tgz", - "integrity": "sha512-FyBrT/d0d4+uiZRbqznPXqw3IpZZG3gl3wKWiX784FycUKVwBt0uLBFkQrtE4tZOrgo78nZp2jnKz3L65T5LdQ==", - "dev": true, - "requires": { - "arrify": "^1.0.1", - "is-plain-obj": "^1.1.0" - } - }, - "mixin-deep": { - "version": "1.3.2", - "resolved": "https://registry.npmjs.org/mixin-deep/-/mixin-deep-1.3.2.tgz", - "integrity": "sha512-WRoDn//mXBiJ1H40rqa3vH0toePwSsGb45iInWlTySa+Uu4k3tYUSxa2v1KqAiLtvlrSzaExqS1gtk96A9zvEA==", - "dev": true, - "requires": { - "for-in": "^1.0.2", - "is-extendable": "^1.0.1" - }, - "dependencies": { - "is-extendable": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/is-extendable/-/is-extendable-1.0.1.tgz", - "integrity": "sha512-arnXMxT1hhoKo9k1LZdmlNyJdDDfy2v0fXjFlmok4+i8ul/6WlbVge9bhM74OpNPQPMGUToDtz+KXa1PneJxOA==", - "dev": true, - "requires": { - "is-plain-object": "^2.0.4" - } - } - } - }, - "mocha": { - "version": "9.2.2", - "resolved": "https://registry.npmjs.org/mocha/-/mocha-9.2.2.tgz", - "integrity": "sha512-L6XC3EdwT6YrIk0yXpavvLkn8h+EU+Y5UcCHKECyMbdUIxyMuZj4bX4U9e1nvnvUUvQVsV2VHQr5zLdcUkhW/g==", - "dev": true, - "requires": { - "@ungap/promise-all-settled": "1.1.2", - "ansi-colors": "4.1.1", - "browser-stdout": "1.3.1", - "chokidar": "3.5.3", - "debug": "4.3.3", - "diff": "5.0.0", - "escape-string-regexp": "4.0.0", - "find-up": "5.0.0", - "glob": "7.2.0", - "growl": "1.10.5", - "he": "1.2.0", - "js-yaml": "4.1.0", - "log-symbols": "4.1.0", - "minimatch": "4.2.1", - "ms": "2.1.3", - "nanoid": "3.3.1", - "serialize-javascript": "6.0.0", - "strip-json-comments": "3.1.1", - "supports-color": "8.1.1", - "which": "2.0.2", - "workerpool": "6.2.0", - "yargs": "16.2.0", - "yargs-parser": "20.2.4", - "yargs-unparser": "2.0.0" - }, - "dependencies": { - "ansi-colors": { - "version": "4.1.1", - "resolved": "https://registry.npmjs.org/ansi-colors/-/ansi-colors-4.1.1.tgz", - "integrity": "sha512-JoX0apGbHaUJBNl6yF+p6JAFYZ666/hhCGKN5t9QFjbJQKUU/g8MNbFDbvfrgKXvI1QpZplPOnwIo99lX/AAmA==", - "dev": true - }, - "ansi-regex": { - "version": "5.0.1", - "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-5.0.1.tgz", - "integrity": "sha512-quJQXlTSUGL2LH9SUXo8VwsY4soanhgo6LNSm84E1LBcE8s3O0wpdiRzyR9z/ZZJMlMWv37qOOb9pdJlMUEKFQ==", - "dev": true - }, - "ansi-styles": { - "version": "4.3.0", - "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-4.3.0.tgz", - "integrity": "sha512-zbB9rCJAT1rbjiVDb2hqKFHNYLxgtk8NURxZ3IZwD3F6NtxbXZQCnnSi1Lkx+IDohdPlFp222wVALIheZJQSEg==", - "dev": true, - "requires": { - "color-convert": "^2.0.1" - } - }, - "anymatch": { - "version": "3.1.2", - "resolved": "https://registry.npmjs.org/anymatch/-/anymatch-3.1.2.tgz", - "integrity": "sha512-P43ePfOAIupkguHUycrc4qJ9kz8ZiuOUijaETwX7THt0Y/GNK7v0aa8rY816xWjZ7rJdA5XdMcpVFTKMq+RvWg==", - "dev": true, - "requires": { - "normalize-path": "^3.0.0", - "picomatch": "^2.0.4" - } - }, - "argparse": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/argparse/-/argparse-2.0.1.tgz", - "integrity": "sha512-8+9WqebbFzpX9OR+Wa6O29asIogeRMzcGtAINdpMHHyAg10f05aSFVBbcEqGf/PXw1EjAZ+q2/bEBg3DvurK3Q==", - "dev": true - }, - "binary-extensions": { - "version": "2.2.0", - "resolved": "https://registry.npmjs.org/binary-extensions/-/binary-extensions-2.2.0.tgz", - "integrity": "sha512-jDctJ/IVQbZoJykoeHbhXpOlNBqGNcwXJKJog42E5HDPUwQTSdjCHdihjj0DlnheQ7blbT6dHOafNAiS8ooQKA==", - "dev": true - }, - "braces": { - "version": "3.0.2", - "resolved": "https://registry.npmjs.org/braces/-/braces-3.0.2.tgz", - "integrity": "sha512-b8um+L1RzM3WDSzvhm6gIz1yfTbBt6YTlcEKAvsmqCZZFw46z626lVj9j1yEPW33H5H+lBQpZMP1k8l+78Ha0A==", - "dev": true, - "requires": { - "fill-range": "^7.0.1" - } - }, - "chokidar": { - "version": "3.5.3", - "resolved": "https://registry.npmjs.org/chokidar/-/chokidar-3.5.3.tgz", - "integrity": "sha512-Dr3sfKRP6oTcjf2JmUmFJfeVMvXBdegxB0iVQ5eb2V10uFJUCAS8OByZdVAyVb8xXNz3GjjTgj9kLWsZTqE6kw==", - "dev": true, - "requires": { - "anymatch": "~3.1.2", - "braces": "~3.0.2", - "fsevents": "~2.3.2", - "glob-parent": "~5.1.2", - "is-binary-path": "~2.1.0", - "is-glob": "~4.0.1", - "normalize-path": "~3.0.0", - "readdirp": "~3.6.0" - } - }, - "cliui": { - "version": "7.0.4", - "resolved": "https://registry.npmjs.org/cliui/-/cliui-7.0.4.tgz", - "integrity": "sha512-OcRE68cOsVMXp1Yvonl/fzkQOyjLSu/8bhPDfQt0e0/Eb283TKP20Fs2MqoPsr9SwA595rRCA+QMzYc9nBP+JQ==", - "dev": true, - "requires": { - "string-width": "^4.2.0", - "strip-ansi": "^6.0.0", - "wrap-ansi": "^7.0.0" - } - }, - "color-convert": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-2.0.1.tgz", - "integrity": "sha512-RRECPsj7iu/xb5oKYcsFHSppFNnsj/52OVTRKb4zP5onXwVF3zVmmToNcOfGC+CRDpfK/U584fMg38ZHCaElKQ==", - "dev": true, - "requires": { - "color-name": "~1.1.4" - } - }, - "color-name": { - "version": "1.1.4", - "resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.4.tgz", - "integrity": "sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA==", - "dev": true - }, - "debug": { - "version": "4.3.3", - "resolved": "https://registry.npmjs.org/debug/-/debug-4.3.3.tgz", - "integrity": "sha512-/zxw5+vh1Tfv+4Qn7a5nsbcJKPaSvCDhojn6FEl9vupwK2VCSDtEiEtqr8DFtzYFOdz63LBkxec7DYuc2jon6Q==", - "dev": true, - "requires": { - "ms": "2.1.2" - }, - "dependencies": { - "ms": { - "version": "2.1.2", - "resolved": "https://registry.npmjs.org/ms/-/ms-2.1.2.tgz", - "integrity": "sha512-sGkPx+VjMtmA6MX27oA4FBFELFCZZ4S4XqeGOXCv68tT+jb3vk/RyaKWP0PTKyWtmLSM0b+adUTEvbs1PEaH2w==", - "dev": true - } - } - }, - "emoji-regex": { - "version": "8.0.0", - "resolved": "https://registry.npmjs.org/emoji-regex/-/emoji-regex-8.0.0.tgz", - "integrity": "sha512-MSjYzcWNOA0ewAHpz0MxpYFvwg6yjy1NG3xteoqz644VCo/RPgnr1/GGt+ic3iJTzQ8Eu3TdM14SawnVUmGE6A==", - "dev": true - }, - "escape-string-regexp": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/escape-string-regexp/-/escape-string-regexp-4.0.0.tgz", - "integrity": "sha512-TtpcNJ3XAzx3Gq8sWRzJaVajRs0uVxA2YAkdb1jm2YkPz4G6egUFAyA3n5vtEIZefPk5Wa4UXbKuS5fKkJWdgA==", - "dev": true - }, - "fill-range": { - "version": "7.0.1", - "resolved": "https://registry.npmjs.org/fill-range/-/fill-range-7.0.1.tgz", - "integrity": "sha512-qOo9F+dMUmC2Lcb4BbVvnKJxTPjCm+RRpe4gDuGrzkL7mEVl/djYSu2OdQ2Pa302N4oqkSg9ir6jaLWJ2USVpQ==", - "dev": true, - "requires": { - "to-regex-range": "^5.0.1" - } - }, - "find-up": { - "version": "5.0.0", - "resolved": "https://registry.npmjs.org/find-up/-/find-up-5.0.0.tgz", - "integrity": "sha512-78/PXT1wlLLDgTzDs7sjq9hzz0vXD+zn+7wypEe4fXQxCmdmqfGsEPQxmiCSQI3ajFV91bVSsvNtrJRiW6nGng==", - "dev": true, - "requires": { - "locate-path": "^6.0.0", - "path-exists": "^4.0.0" - } - }, - "fsevents": { - "version": "2.3.2", - "resolved": "https://registry.npmjs.org/fsevents/-/fsevents-2.3.2.tgz", - "integrity": "sha512-xiqMQR4xAeHTuB9uWm+fFRcIOgKBMiOBP+eXiyT7jsgVCq1bkVygt00oASowB7EdtpOHaaPgKt812P9ab+DDKA==", - "dev": true, - "optional": true - }, - "get-caller-file": { - "version": "2.0.5", - "resolved": "https://registry.npmjs.org/get-caller-file/-/get-caller-file-2.0.5.tgz", - "integrity": "sha512-DyFP3BM/3YHTQOCUL/w0OZHR0lpKeGrxotcHWcqNEdnltqFwXVfhEBQ94eIo34AfQpo0rGki4cyIiftY06h2Fg==", - "dev": true - }, - "glob-parent": { - "version": "5.1.2", - "resolved": "https://registry.npmjs.org/glob-parent/-/glob-parent-5.1.2.tgz", - "integrity": "sha512-AOIgSQCepiJYwP3ARnGx+5VnTu2HBYdzbGP45eLw1vr3zB3vZLeyed1sC9hnbcOc9/SrMyM5RPQrkGz4aS9Zow==", - "dev": true, - "requires": { - "is-glob": "^4.0.1" - } - }, - "is-binary-path": { - "version": "2.1.0", - "resolved": "https://registry.npmjs.org/is-binary-path/-/is-binary-path-2.1.0.tgz", - "integrity": "sha512-ZMERYes6pDydyuGidse7OsHxtbI7WVeUEozgR/g7rd0xUimYNlvZRE/K2MgZTjWy725IfelLeVcEM97mmtRGXw==", - "dev": true, - "requires": { - "binary-extensions": "^2.0.0" - } - }, - "is-fullwidth-code-point": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/is-fullwidth-code-point/-/is-fullwidth-code-point-3.0.0.tgz", - "integrity": "sha512-zymm5+u+sCsSWyD9qNaejV3DFvhCKclKdizYaJUuHA83RLjb7nSuGnddCHGv0hk+KY7BMAlsWeK4Ueg6EV6XQg==", - "dev": true - }, - "is-number": { - "version": "7.0.0", - "resolved": "https://registry.npmjs.org/is-number/-/is-number-7.0.0.tgz", - "integrity": "sha512-41Cifkg6e8TylSpdtTpeLVMqvSBEVzTttHvERD741+pnZ8ANv0004MRL43QKPDlK9cGvNp6NZWZUBlbGXYxxng==", - "dev": true - }, - "js-yaml": { - "version": "4.1.0", - "resolved": "https://registry.npmjs.org/js-yaml/-/js-yaml-4.1.0.tgz", - "integrity": "sha512-wpxZs9NoxZaJESJGIZTyDEaYpl0FKSA+FB9aJiyemKhMwkxQg63h4T1KJgUGHpTqPDNRcmmYLugrRjJlBtWvRA==", - "dev": true, - "requires": { - "argparse": "^2.0.1" - } - }, - "locate-path": { - "version": "6.0.0", - "resolved": "https://registry.npmjs.org/locate-path/-/locate-path-6.0.0.tgz", - "integrity": "sha512-iPZK6eYjbxRu3uB4/WZ3EsEIMJFMqAoopl3R+zuq0UjcAm/MO6KCweDgPfP3elTztoKP3KtnVHxTn2NHBSDVUw==", - "dev": true, - "requires": { - "p-locate": "^5.0.0" - } - }, - "minimatch": { - "version": "4.2.1", - "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-4.2.1.tgz", - "integrity": "sha512-9Uq1ChtSZO+Mxa/CL1eGizn2vRn3MlLgzhT0Iz8zaY8NdvxvB0d5QdPFmCKf7JKA9Lerx5vRrnwO03jsSfGG9g==", - "dev": true, - "requires": { - "brace-expansion": "^1.1.7" - } - }, - "ms": { - "version": "2.1.3", - "resolved": "https://registry.npmjs.org/ms/-/ms-2.1.3.tgz", - "integrity": "sha512-6FlzubTLZG3J2a/NVCAleEhjzq5oxgHyaCU9yYXvcLsvoVaHJq/s5xXI6/XXP6tz7R9xAOtHnSO/tXtF3WRTlA==", - "dev": true - }, - "normalize-path": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/normalize-path/-/normalize-path-3.0.0.tgz", - "integrity": "sha512-6eZs5Ls3WtCisHWp9S2GUy8dqkpGi4BVSz3GaqiE6ezub0512ESztXUwUB6C6IKbQkY2Pnb/mD4WYojCRwcwLA==", - "dev": true - }, - "p-limit": { - "version": "3.1.0", - "resolved": "https://registry.npmjs.org/p-limit/-/p-limit-3.1.0.tgz", - "integrity": "sha512-TYOanM3wGwNGsZN2cVTYPArw454xnXj5qmWF1bEoAc4+cU/ol7GVh7odevjp1FNHduHc3KZMcFduxU5Xc6uJRQ==", - "dev": true, - "requires": { - "yocto-queue": "^0.1.0" - } - }, - "p-locate": { - "version": "5.0.0", - "resolved": "https://registry.npmjs.org/p-locate/-/p-locate-5.0.0.tgz", - "integrity": "sha512-LaNjtRWUBY++zB5nE/NwcaoMylSPk+S+ZHNB1TzdbMJMny6dynpAGt7X/tl/QYq3TIeE6nxHppbo2LGymrG5Pw==", - "dev": true, - "requires": { - "p-limit": "^3.0.2" - } - }, - "path-exists": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/path-exists/-/path-exists-4.0.0.tgz", - "integrity": "sha512-ak9Qy5Q7jYb2Wwcey5Fpvg2KoAc/ZIhLSLOSBmRmygPsGwkVVt0fZa0qrtMz+m6tJTAHfZQ8FnmB4MG4LWy7/w==", - "dev": true - }, - "readdirp": { - "version": "3.6.0", - "resolved": "https://registry.npmjs.org/readdirp/-/readdirp-3.6.0.tgz", - "integrity": "sha512-hOS089on8RduqdbhvQ5Z37A0ESjsqz6qnRcffsMU3495FuTdqSm+7bhJ29JvIOsBDEEnan5DPu9t3To9VRlMzA==", - "dev": true, - "requires": { - "picomatch": "^2.2.1" - } - }, - "string-width": { - "version": "4.2.3", - "resolved": "https://registry.npmjs.org/string-width/-/string-width-4.2.3.tgz", - "integrity": "sha512-wKyQRQpjJ0sIp62ErSZdGsjMJWsap5oRNihHhu6G7JVO/9jIB6UyevL+tXuOqrng8j/cxKTWyWUwvSTriiZz/g==", - "dev": true, - "requires": { - "emoji-regex": "^8.0.0", - "is-fullwidth-code-point": "^3.0.0", - "strip-ansi": "^6.0.1" - } - }, - "strip-ansi": { - "version": "6.0.1", - "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-6.0.1.tgz", - "integrity": "sha512-Y38VPSHcqkFrCpFnQ9vuSXmquuv5oXOKpGeT6aGrr3o3Gc9AlVa6JBfUSOCnbxGGZF+/0ooI7KrPuUSztUdU5A==", - "dev": true, - "requires": { - "ansi-regex": "^5.0.1" - } - }, - "to-regex-range": { - "version": "5.0.1", - "resolved": "https://registry.npmjs.org/to-regex-range/-/to-regex-range-5.0.1.tgz", - "integrity": "sha512-65P7iz6X5yEr1cwcgvQxbbIw7Uk3gOy5dIdtZ4rDveLqhrdJP+Li/Hx6tyK0NEb+2GCyneCMJiGqrADCSNk8sQ==", - "dev": true, - "requires": { - "is-number": "^7.0.0" - } - }, - "which": { - "version": "2.0.2", - "resolved": "https://registry.npmjs.org/which/-/which-2.0.2.tgz", - "integrity": "sha512-BLI3Tl1TW3Pvl70l3yq3Y64i+awpwXqsGBYWkkqMtnbXgrMD+yj7rhW0kuEDxzJaYXGjEW5ogapKNMEKNMjibA==", - "dev": true, - "requires": { - "isexe": "^2.0.0" - } - }, - "wrap-ansi": { - "version": "7.0.0", - "resolved": "https://registry.npmjs.org/wrap-ansi/-/wrap-ansi-7.0.0.tgz", - "integrity": "sha512-YVGIj2kamLSTxw6NsZjoBxfSwsn0ycdesmc4p+Q21c5zPuZ1pl+NfxVdxPtdHvmNVOQ6XSYG4AUtyt/Fi7D16Q==", - "dev": true, - "requires": { - "ansi-styles": "^4.0.0", - "string-width": "^4.1.0", - "strip-ansi": "^6.0.0" - } - }, - "y18n": { - "version": "5.0.8", - "resolved": "https://registry.npmjs.org/y18n/-/y18n-5.0.8.tgz", - "integrity": "sha512-0pfFzegeDWJHJIAmTLRP2DwHjdF5s7jo9tuztdQxAhINCdvS+3nGINqPd00AphqJR/0LhANUS6/+7SCb98YOfA==", - "dev": true - }, - "yargs": { - "version": "16.2.0", - "resolved": "https://registry.npmjs.org/yargs/-/yargs-16.2.0.tgz", - "integrity": "sha512-D1mvvtDG0L5ft/jGWkLpG1+m0eQxOfaBvTNELraWj22wSVUMWxZUvYgJYcKh6jGGIkJFhH4IZPQhR4TKpc8mBw==", - "dev": true, - "requires": { - "cliui": "^7.0.2", - "escalade": "^3.1.1", - "get-caller-file": "^2.0.5", - "require-directory": "^2.1.1", - "string-width": "^4.2.0", - "y18n": "^5.0.5", - "yargs-parser": "^20.2.2" - } - }, - "yargs-parser": { - "version": "20.2.4", - "resolved": "https://registry.npmjs.org/yargs-parser/-/yargs-parser-20.2.4.tgz", - "integrity": "sha512-WOkpgNhPTlE73h4VFAFsOnomJVaovO8VqLDzy5saChRBFQFBoMYirowyW+Q9HB4HFF4Z7VZTiG3iSzJJA29yRA==", - "dev": true - } - } - }, - "moment": { - "version": "2.29.4", - "resolved": "https://registry.npmjs.org/moment/-/moment-2.29.4.tgz", - "integrity": "sha512-5LC9SOxjSc2HF6vO2CyuTDNivEdoz2IvyJJGj6X8DJ0eFyfszE0QiEd+iXmBvUP3WHxSjFH/vIsA0EN00cgr8w==", - "dev": true - }, - "ms": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/ms/-/ms-2.0.0.tgz", - "integrity": "sha1-VgiurfwAvmwpAd9fmGF4jeDVl8g=", - "dev": true - }, - "mute-stdout": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/mute-stdout/-/mute-stdout-1.0.1.tgz", - "integrity": "sha512-kDcwXR4PS7caBpuRYYBUz9iVixUk3anO3f5OYFiIPwK/20vCzKCHyKoulbiDY1S53zD2bxUpxN/IJ+TnXjfvxg==", - "dev": true - }, - "nan": { - "version": "2.14.2", - "resolved": "https://registry.npmjs.org/nan/-/nan-2.14.2.tgz", - "integrity": "sha512-M2ufzIiINKCuDfBSAUr1vWQ+vuVcA9kqx8JJUsbQi6yf1uGRyb7HfpdfUr5qLXf3B/t8dPvcjhKMmlfnP47EzQ==", - "dev": true, - "optional": true - }, - "nanoid": { - "version": "3.3.1", - "resolved": "https://registry.npmjs.org/nanoid/-/nanoid-3.3.1.tgz", - "integrity": "sha512-n6Vs/3KGyxPQd6uO0eH4Bv0ojGSUvuLlIHtC3Y0kEO23YRge8H9x1GCzLn28YX0H66pMkxuaeESFq4tKISKwdw==", - "dev": true - }, - "nanomatch": { - "version": "1.2.13", - "resolved": "https://registry.npmjs.org/nanomatch/-/nanomatch-1.2.13.tgz", - "integrity": "sha512-fpoe2T0RbHwBTBUOftAfBPaDEi06ufaUai0mE6Yn1kacc3SnTErfb/h+X94VXzI64rKFHYImXSvdwGGCmwOqCA==", - "dev": true, - "requires": { - "arr-diff": "^4.0.0", - "array-unique": "^0.3.2", - "define-property": "^2.0.2", - "extend-shallow": "^3.0.2", - "fragment-cache": "^0.2.1", - "is-windows": "^1.0.2", - "kind-of": "^6.0.2", - "object.pick": "^1.3.0", - "regex-not": "^1.0.0", - "snapdragon": "^0.8.1", - "to-regex": "^3.0.1" - } - }, - "natural-compare": { - "version": "1.4.0", - "resolved": "https://registry.npmjs.org/natural-compare/-/natural-compare-1.4.0.tgz", - "integrity": "sha1-Sr6/7tdUHywnrPspvbvRXI1bpPc=", - "dev": true - }, - "neatequal": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/neatequal/-/neatequal-1.0.0.tgz", - "integrity": "sha1-LuEhG8n6bkxVcV/SELsFYC6xrjs=", - "dev": true, - "requires": { - "varstream": "^0.3.2" - } - }, - "next-tick": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/next-tick/-/next-tick-1.0.0.tgz", - "integrity": "sha1-yobR/ogoFpsBICCOPchCS524NCw=", - "dev": true - }, - "nice-try": { - "version": "1.0.5", - "resolved": "https://registry.npmjs.org/nice-try/-/nice-try-1.0.5.tgz", - "integrity": "sha512-1nh45deeb5olNY7eX82BkPO7SSxR5SSYJiPTrTdFUVYwAl8CKMA5N9PjTYkHiRjisVcxcQ1HXdLhx2qxxJzLNQ==", - "dev": true - }, - "node-cleanup": { - "version": "2.1.2", - "resolved": "https://registry.npmjs.org/node-cleanup/-/node-cleanup-2.1.2.tgz", - "integrity": "sha1-esGavSl+Caf3KnFUXZUbUX5N3iw=", - "dev": true - }, - "node-domexception": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/node-domexception/-/node-domexception-1.0.0.tgz", - "integrity": "sha512-/jKZoMpw0F8GRwl4/eLROPA3cfcXtLApP0QzLmUT/HuPCZWyB7IY9ZrMeKw2O/nFIqPQB3PVM9aYm0F312AXDQ==", - "dev": true - }, - "node-fetch": { - "version": "3.1.1", - "resolved": "https://registry.npmjs.org/node-fetch/-/node-fetch-3.1.1.tgz", - "integrity": "sha512-SMk+vKgU77PYotRdWzqZGTZeuFKlsJ0hu4KPviQKkfY+N3vn2MIzr0rvpnYpR8MtB3IEuhlEcuOLbGvLRlA+yg==", - "dev": true, - "requires": { - "data-uri-to-buffer": "^4.0.0", - "fetch-blob": "^3.1.3", - "formdata-polyfill": "^4.0.10" - } - }, - "normalize-package-data": { - "version": "2.5.0", - "resolved": "https://registry.npmjs.org/normalize-package-data/-/normalize-package-data-2.5.0.tgz", - "integrity": "sha512-/5CMN3T0R4XTj4DcGaexo+roZSdSFW/0AOOTROrjxzCG1wrWXEsGbRKevjlIL+ZDE4sZlJr5ED4YW0yqmkK+eA==", - "dev": true, - "requires": { - "hosted-git-info": "^2.1.4", - "resolve": "^1.10.0", - "semver": "2 || 3 || 4 || 5", - "validate-npm-package-license": "^3.0.1" - } - }, - "normalize-path": { - "version": "2.1.1", - "resolved": "https://registry.npmjs.org/normalize-path/-/normalize-path-2.1.1.tgz", - "integrity": "sha1-GrKLVW4Zg2Oowab35vogE3/mrtk=", - "dev": true, - "requires": { - "remove-trailing-separator": "^1.0.1" - } - }, - "now-and-later": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/now-and-later/-/now-and-later-2.0.1.tgz", - "integrity": "sha512-KGvQ0cB70AQfg107Xvs/Fbu+dGmZoTRJp2TaPwcwQm3/7PteUyN2BCgk8KBMPGBUXZdVwyWS8fDCGFygBm19UQ==", - "dev": true, - "requires": { - "once": "^1.3.2" - } - }, - "npm-run-all": { - "version": "4.1.5", - "resolved": "https://registry.npmjs.org/npm-run-all/-/npm-run-all-4.1.5.tgz", - "integrity": "sha512-Oo82gJDAVcaMdi3nuoKFavkIHBRVqQ1qvMb+9LHk/cF4P6B2m8aP04hGf7oL6wZ9BuGwX1onlLhpuoofSyoQDQ==", - "dev": true, - "requires": { - "ansi-styles": "^3.2.1", - "chalk": "^2.4.1", - "cross-spawn": "^6.0.5", - "memorystream": "^0.3.1", - "minimatch": "^3.0.4", - "pidtree": "^0.3.0", - "read-pkg": "^3.0.0", - "shell-quote": "^1.6.1", - "string.prototype.padend": "^3.0.0" - }, - "dependencies": { - "load-json-file": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/load-json-file/-/load-json-file-4.0.0.tgz", - "integrity": "sha1-L19Fq5HjMhYjT9U62rZo607AmTs=", - "dev": true, - "requires": { - "graceful-fs": "^4.1.2", - "parse-json": "^4.0.0", - "pify": "^3.0.0", - "strip-bom": "^3.0.0" - } - }, - "parse-json": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/parse-json/-/parse-json-4.0.0.tgz", - "integrity": "sha1-vjX1Qlvh9/bHRxhPmKeIy5lHfuA=", - "dev": true, - "requires": { - "error-ex": "^1.3.1", - "json-parse-better-errors": "^1.0.1" - } - }, - "path-type": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/path-type/-/path-type-3.0.0.tgz", - "integrity": "sha512-T2ZUsdZFHgA3u4e5PfPbjd7HDDpxPnQb5jN0SrDsjNSuVXHJqtwTnWqG0B1jZrgmJ/7lj1EmVIByWt1gxGkWvg==", - "dev": true, - "requires": { - "pify": "^3.0.0" - } - }, - "pify": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/pify/-/pify-3.0.0.tgz", - "integrity": "sha1-5aSs0sEB/fPZpNB/DbxNtJ3SgXY=", - "dev": true - }, - "read-pkg": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/read-pkg/-/read-pkg-3.0.0.tgz", - "integrity": "sha1-nLxoaXj+5l0WwA4rGcI3/Pbjg4k=", - "dev": true, - "requires": { - "load-json-file": "^4.0.0", - "normalize-package-data": "^2.3.2", - "path-type": "^3.0.0" - } - }, - "strip-bom": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/strip-bom/-/strip-bom-3.0.0.tgz", - "integrity": "sha1-IzTBjpx1n3vdVv3vfprj1YjmjtM=", - "dev": true - } - } - }, - "npm-run-path": { - "version": "2.0.2", - "resolved": "https://registry.npmjs.org/npm-run-path/-/npm-run-path-2.0.2.tgz", - "integrity": "sha1-NakjLfo11wZ7TLLd8jV7GHFTbF8=", - "dev": true, - "requires": { - "path-key": "^2.0.0" - } - }, - "number-is-nan": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/number-is-nan/-/number-is-nan-1.0.1.tgz", - "integrity": "sha1-CXtgK1NCKlIsGvuHkDGDNpQaAR0=", - "dev": true - }, - "nunjucks": { - "version": "3.2.2", - "resolved": "https://registry.npmjs.org/nunjucks/-/nunjucks-3.2.2.tgz", - "integrity": "sha512-KUi85OoF2NMygwODAy28Lh9qHmq5hO3rBlbkYoC8v377h4l8Pt5qFjILl0LWpMbOrZ18CzfVVUvIHUIrtED3sA==", - "dev": true, - "requires": { - "a-sync-waterfall": "^1.0.0", - "asap": "^2.0.3", - "chokidar": "^3.3.0", - "commander": "^5.1.0" - }, - "dependencies": { - "anymatch": { - "version": "3.1.1", - "resolved": "https://registry.npmjs.org/anymatch/-/anymatch-3.1.1.tgz", - "integrity": "sha512-mM8522psRCqzV+6LhomX5wgp25YVibjh8Wj23I5RPkPppSVSjyKD2A2mBJmWGa+KN7f2D6LNh9jkBCeyLktzjg==", - "dev": true, - "optional": true, - "requires": { - "normalize-path": "^3.0.0", - "picomatch": "^2.0.4" - } - }, - "binary-extensions": { - "version": "2.1.0", - "resolved": "https://registry.npmjs.org/binary-extensions/-/binary-extensions-2.1.0.tgz", - "integrity": "sha512-1Yj8h9Q+QDF5FzhMs/c9+6UntbD5MkRfRwac8DoEm9ZfUBZ7tZ55YcGVAzEe4bXsdQHEk+s9S5wsOKVdZrw0tQ==", - "dev": true, - "optional": true - }, - "braces": { - "version": "3.0.2", - "resolved": "https://registry.npmjs.org/braces/-/braces-3.0.2.tgz", - "integrity": "sha512-b8um+L1RzM3WDSzvhm6gIz1yfTbBt6YTlcEKAvsmqCZZFw46z626lVj9j1yEPW33H5H+lBQpZMP1k8l+78Ha0A==", - "dev": true, - "optional": true, - "requires": { - "fill-range": "^7.0.1" - } - }, - "chokidar": { - "version": "3.4.3", - "resolved": "https://registry.npmjs.org/chokidar/-/chokidar-3.4.3.tgz", - "integrity": "sha512-DtM3g7juCXQxFVSNPNByEC2+NImtBuxQQvWlHunpJIS5Ocr0lG306cC7FCi7cEA0fzmybPUIl4txBIobk1gGOQ==", - "dev": true, - "optional": true, - "requires": { - "anymatch": "~3.1.1", - "braces": "~3.0.2", - "fsevents": "~2.1.2", - "glob-parent": "~5.1.0", - "is-binary-path": "~2.1.0", - "is-glob": "~4.0.1", - "normalize-path": "~3.0.0", - "readdirp": "~3.5.0" - } - }, - "commander": { - "version": "5.1.0", - "resolved": "https://registry.npmjs.org/commander/-/commander-5.1.0.tgz", - "integrity": "sha512-P0CysNDQ7rtVw4QIQtm+MRxV66vKFSvlsQvGYXZWR3qFU0jlMKHZZZgw8e+8DSah4UDKMqnknRDQz+xuQXQ/Zg==", - "dev": true - }, - "fill-range": { - "version": "7.0.1", - "resolved": "https://registry.npmjs.org/fill-range/-/fill-range-7.0.1.tgz", - "integrity": "sha512-qOo9F+dMUmC2Lcb4BbVvnKJxTPjCm+RRpe4gDuGrzkL7mEVl/djYSu2OdQ2Pa302N4oqkSg9ir6jaLWJ2USVpQ==", - "dev": true, - "optional": true, - "requires": { - "to-regex-range": "^5.0.1" - } - }, - "fsevents": { - "version": "2.1.3", - "resolved": "https://registry.npmjs.org/fsevents/-/fsevents-2.1.3.tgz", - "integrity": "sha512-Auw9a4AxqWpa9GUfj370BMPzzyncfBABW8Mab7BGWBYDj4Isgq+cDKtx0i6u9jcX9pQDnswsaaOTgTmA5pEjuQ==", - "dev": true, - "optional": true - }, - "glob-parent": { - "version": "5.1.2", - "resolved": "https://registry.npmjs.org/glob-parent/-/glob-parent-5.1.2.tgz", - "integrity": "sha512-AOIgSQCepiJYwP3ARnGx+5VnTu2HBYdzbGP45eLw1vr3zB3vZLeyed1sC9hnbcOc9/SrMyM5RPQrkGz4aS9Zow==", - "dev": true, - "optional": true, - "requires": { - "is-glob": "^4.0.1" - } - }, - "is-binary-path": { - "version": "2.1.0", - "resolved": "https://registry.npmjs.org/is-binary-path/-/is-binary-path-2.1.0.tgz", - "integrity": "sha512-ZMERYes6pDydyuGidse7OsHxtbI7WVeUEozgR/g7rd0xUimYNlvZRE/K2MgZTjWy725IfelLeVcEM97mmtRGXw==", - "dev": true, - "optional": true, - "requires": { - "binary-extensions": "^2.0.0" - } - }, - "is-number": { - "version": "7.0.0", - "resolved": "https://registry.npmjs.org/is-number/-/is-number-7.0.0.tgz", - "integrity": "sha512-41Cifkg6e8TylSpdtTpeLVMqvSBEVzTttHvERD741+pnZ8ANv0004MRL43QKPDlK9cGvNp6NZWZUBlbGXYxxng==", - "dev": true, - "optional": true - }, - "normalize-path": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/normalize-path/-/normalize-path-3.0.0.tgz", - "integrity": "sha512-6eZs5Ls3WtCisHWp9S2GUy8dqkpGi4BVSz3GaqiE6ezub0512ESztXUwUB6C6IKbQkY2Pnb/mD4WYojCRwcwLA==", - "dev": true, - "optional": true - }, - "readdirp": { - "version": "3.5.0", - "resolved": "https://registry.npmjs.org/readdirp/-/readdirp-3.5.0.tgz", - "integrity": "sha512-cMhu7c/8rdhkHXWsY+osBhfSy0JikwpHK/5+imo+LpeasTF8ouErHrlYkwT0++njiyuDvc7OFY5T3ukvZ8qmFQ==", - "dev": true, - "optional": true, - "requires": { - "picomatch": "^2.2.1" - } - }, - "to-regex-range": { - "version": "5.0.1", - "resolved": "https://registry.npmjs.org/to-regex-range/-/to-regex-range-5.0.1.tgz", - "integrity": "sha512-65P7iz6X5yEr1cwcgvQxbbIw7Uk3gOy5dIdtZ4rDveLqhrdJP+Li/Hx6tyK0NEb+2GCyneCMJiGqrADCSNk8sQ==", - "dev": true, - "optional": true, - "requires": { - "is-number": "^7.0.0" - } - } - } - }, - "nwsapi": { - "version": "2.2.0", - "resolved": "https://registry.npmjs.org/nwsapi/-/nwsapi-2.2.0.tgz", - "integrity": "sha512-h2AatdwYH+JHiZpv7pt/gSX1XoRGb7L/qSIeuqA6GwYoF9w1vP1cw42TO0aI2pNyshRK5893hNSl+1//vHK7hQ==", - "dev": true - }, - "object-assign": { - "version": "4.1.1", - "resolved": "https://registry.npmjs.org/object-assign/-/object-assign-4.1.1.tgz", - "integrity": "sha1-IQmtx5ZYh8/AXLvUQsrIv7s2CGM=", - "dev": true - }, - "object-copy": { - "version": "0.1.0", - "resolved": "https://registry.npmjs.org/object-copy/-/object-copy-0.1.0.tgz", - "integrity": "sha1-fn2Fi3gb18mRpBupde04EnVOmYw=", - "dev": true, - "requires": { - "copy-descriptor": "^0.1.0", - "define-property": "^0.2.5", - "kind-of": "^3.0.3" - }, - "dependencies": { - "define-property": { - "version": "0.2.5", - "resolved": "https://registry.npmjs.org/define-property/-/define-property-0.2.5.tgz", - "integrity": "sha1-w1se+RjsPJkPmlvFe+BKrOxcgRY=", - "dev": true, - "requires": { - "is-descriptor": "^0.1.0" - } - }, - "kind-of": { - "version": "3.2.2", - "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-3.2.2.tgz", - "integrity": "sha1-MeohpzS6ubuw8yRm2JOupR5KPGQ=", - "dev": true, - "requires": { - "is-buffer": "^1.1.5" - } - } - } - }, - "object-inspect": { - "version": "1.10.3", - "resolved": "https://registry.npmjs.org/object-inspect/-/object-inspect-1.10.3.tgz", - "integrity": "sha512-e5mCJlSH7poANfC8z8S9s9S2IN5/4Zb3aZ33f5s8YqoazCFzNLloLU8r5VCG+G7WoqLvAAZoVMcy3tp/3X0Plw==", - "dev": true - }, - "object-keys": { - "version": "1.1.0", - "resolved": "https://registry.npmjs.org/object-keys/-/object-keys-1.1.0.tgz", - "integrity": "sha512-6OO5X1+2tYkNyNEx6TsCxEqFfRWaqx6EtMiSbGrw8Ob8v9Ne+Hl8rBAgLBZn5wjEz3s/s6U1WXFUFOcxxAwUpg==", - "dev": true - }, - "object-visit": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/object-visit/-/object-visit-1.0.1.tgz", - "integrity": "sha1-95xEk68MU3e1n+OdOV5BBC3QRbs=", - "dev": true, - "requires": { - "isobject": "^3.0.0" - } - }, - "object.assign": { - "version": "4.1.0", - "resolved": "https://registry.npmjs.org/object.assign/-/object.assign-4.1.0.tgz", - "integrity": "sha512-exHJeq6kBKj58mqGyTQ9DFvrZC/eR6OwxzoM9YRoGBqrXYonaFyGiFMuc9VZrXf7DarreEwMpurG3dd+CNyW5w==", - "dev": true, - "requires": { - "define-properties": "^1.1.2", - "function-bind": "^1.1.1", - "has-symbols": "^1.0.0", - "object-keys": "^1.0.11" - } - }, - "object.defaults": { - "version": "1.1.0", - "resolved": "https://registry.npmjs.org/object.defaults/-/object.defaults-1.1.0.tgz", - "integrity": "sha1-On+GgzS0B96gbaFtiNXNKeQ1/s8=", - "dev": true, - "requires": { - "array-each": "^1.0.1", - "array-slice": "^1.0.0", - "for-own": "^1.0.0", - "isobject": "^3.0.0" - } - }, - "object.map": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/object.map/-/object.map-1.0.1.tgz", - "integrity": "sha1-z4Plncj8wK1fQlDh94s7gb2AHTc=", - "dev": true, - "requires": { - "for-own": "^1.0.0", - "make-iterator": "^1.0.0" - } - }, - "object.pick": { - "version": "1.3.0", - "resolved": "https://registry.npmjs.org/object.pick/-/object.pick-1.3.0.tgz", - "integrity": "sha1-h6EKxMFpS9Lhy/U1kaZhQftd10c=", - "dev": true, - "requires": { - "isobject": "^3.0.1" - } - }, - "object.reduce": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/object.reduce/-/object.reduce-1.0.1.tgz", - "integrity": "sha1-b+NI8qx/oPlcpiEiZZkJaCW7A60=", - "dev": true, - "requires": { - "for-own": "^1.0.0", - "make-iterator": "^1.0.0" - } - }, - "octokit-pagination-methods": { - "version": "1.1.0", - "resolved": "https://registry.npmjs.org/octokit-pagination-methods/-/octokit-pagination-methods-1.1.0.tgz", - "integrity": "sha512-fZ4qZdQ2nxJvtcasX7Ghl+WlWS/d9IgnBIwFZXVNNZUmzpno91SX5bc5vuxiuKoCtK78XxGGNuSCrDC7xYB3OQ==", - "dev": true - }, - "once": { - "version": "1.4.0", - "resolved": "https://registry.npmjs.org/once/-/once-1.4.0.tgz", - "integrity": "sha1-WDsap3WWHUsROsF9nFC6753Xa9E=", - "dev": true, - "requires": { - "wrappy": "1" - } - }, - "opener": { - "version": "1.5.2", - "resolved": "https://registry.npmjs.org/opener/-/opener-1.5.2.tgz", - "integrity": "sha512-ur5UIdyw5Y7yEj9wLzhqXiy6GZ3Mwx0yGI+5sMn2r0N0v3cKJvUmFH5yPP+WXh9e0xfyzyJX95D8l088DNFj7A==", - "dev": true - }, - "optionator": { - "version": "0.8.3", - "resolved": "https://registry.npmjs.org/optionator/-/optionator-0.8.3.tgz", - "integrity": "sha512-+IW9pACdk3XWmmTXG8m3upGUJst5XRGzxMRjXzAuJ1XnIFNvfhjjIuYkDvysnPQ7qzqVzLt78BCruntqRhWQbA==", - "dev": true, - "requires": { - "deep-is": "~0.1.3", - "fast-levenshtein": "~2.0.6", - "levn": "~0.3.0", - "prelude-ls": "~1.1.2", - "type-check": "~0.3.2", - "word-wrap": "~1.2.3" - } - }, - "ordered-read-streams": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/ordered-read-streams/-/ordered-read-streams-1.0.1.tgz", - "integrity": "sha1-d8DLN8QVJdZBZtmQ/61+xqDhNj4=", - "dev": true, - "requires": { - "readable-stream": "^2.0.1" - } - }, - "os-locale": { - "version": "1.4.0", - "resolved": "https://registry.npmjs.org/os-locale/-/os-locale-1.4.0.tgz", - "integrity": "sha1-IPnxeuKe00XoveWDsT0gCYA8FNk=", - "dev": true, - "requires": { - "lcid": "^1.0.0" - } - }, - "os-name": { - "version": "3.1.0", - "resolved": "https://registry.npmjs.org/os-name/-/os-name-3.1.0.tgz", - "integrity": "sha512-h8L+8aNjNcMpo/mAIBPn5PXCM16iyPGjHNWo6U1YO8sJTMHtEtyczI6QJnLoplswm6goopQkqc7OAnjhWcugVg==", - "dev": true, - "requires": { - "macos-release": "^2.2.0", - "windows-release": "^3.1.0" - } - }, - "override-require": { - "version": "1.1.1", - "resolved": "https://registry.npmjs.org/override-require/-/override-require-1.1.1.tgz", - "integrity": "sha1-auIvresfhQ/7DPTCD/e4fl62UN8=", - "dev": true - }, - "p-finally": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/p-finally/-/p-finally-1.0.0.tgz", - "integrity": "sha1-P7z7FbiZpEEjs0ttzBi3JDNqLK4=", - "dev": true - }, - "p-limit": { - "version": "2.2.0", - "resolved": "https://registry.npmjs.org/p-limit/-/p-limit-2.2.0.tgz", - "integrity": "sha512-pZbTJpoUsCzV48Mc9Nh51VbwO0X9cuPFE8gYwx9BTCt9SF8/b7Zljd2fVgOxhIF/HDTKgpVzs+GPhyKfjLLFRQ==", - "dev": true, - "requires": { - "p-try": "^2.0.0" - } - }, - "p-locate": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/p-locate/-/p-locate-3.0.0.tgz", - "integrity": "sha512-x+12w/To+4GFfgJhBEpiDcLozRJGegY+Ei7/z0tSLkMmxGZNybVMSfWj9aJn8Z5Fc7dBUNJOOVgPv2H7IwulSQ==", - "dev": true, - "requires": { - "p-limit": "^2.0.0" - } - }, - "p-map": { - "version": "2.1.0", - "resolved": "https://registry.npmjs.org/p-map/-/p-map-2.1.0.tgz", - "integrity": "sha512-y3b8Kpd8OAN444hxfBbFfj1FY/RjtTd8tzYwhUqNYXx0fXx2iX4maP4Qr6qhIKbQXI02wTLAda4fYUbDagTUFw==", - "dev": true - }, - "p-try": { - "version": "2.1.0", - "resolved": "https://registry.npmjs.org/p-try/-/p-try-2.1.0.tgz", - "integrity": "sha512-H2RyIJ7+A3rjkwKC2l5GGtU4H1vkxKCAGsWasNVd0Set+6i4znxbWy6/j16YDPJDWxhsgZiKAstMEP8wCdSpjA==", - "dev": true - }, - "pako": { - "version": "1.0.11", - "resolved": "https://registry.npmjs.org/pako/-/pako-1.0.11.tgz", - "integrity": "sha512-4hLB8Py4zZce5s4yd9XzopqwVv/yGNhV1Bl8NTmCq1763HeK2+EwVTv+leGeL13Dnh2wfbqowVPXCIO0z4taYw==", - "dev": true - }, - "parent-module": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/parent-module/-/parent-module-1.0.1.tgz", - "integrity": "sha512-GQ2EWRpQV8/o+Aw8YqtfZZPfNRWZYkbidE9k5rpl/hC3vtHHBfGm2Ifi6qWV+coDGkrUKZAxE3Lot5kcsRlh+g==", - "dev": true, - "requires": { - "callsites": "^3.0.0" - }, - "dependencies": { - "callsites": { - "version": "3.1.0", - "resolved": "https://registry.npmjs.org/callsites/-/callsites-3.1.0.tgz", - "integrity": "sha512-P8BjAsXvZS+VIDUI11hHCQEv74YT67YUi5JJFNWIqL235sBmjX4+qx9Muvls5ivyNENctx46xQLQ3aTuE7ssaQ==", - "dev": true - } - } - }, - "parse-diff": { - "version": "0.7.1", - "resolved": "https://registry.npmjs.org/parse-diff/-/parse-diff-0.7.1.tgz", - "integrity": "sha512-1j3l8IKcy4yRK2W4o9EYvJLSzpAVwz4DXqCewYyx2vEwk2gcf3DBPqc8Fj4XV3K33OYJ08A8fWwyu/ykD/HUSg==", - "dev": true - }, - "parse-filepath": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/parse-filepath/-/parse-filepath-1.0.2.tgz", - "integrity": "sha1-pjISf1Oq89FYdvWHLz/6x2PWyJE=", - "dev": true, - "requires": { - "is-absolute": "^1.0.0", - "map-cache": "^0.2.0", - "path-root": "^0.1.1" - } - }, - "parse-git-config": { - "version": "2.0.3", - "resolved": "https://registry.npmjs.org/parse-git-config/-/parse-git-config-2.0.3.tgz", - "integrity": "sha512-Js7ueMZOVSZ3tP8C7E3KZiHv6QQl7lnJ+OkbxoaFazzSa2KyEHqApfGbU3XboUgUnq4ZuUmskUpYKTNx01fm5A==", - "dev": true, - "requires": { - "expand-tilde": "^2.0.2", - "git-config-path": "^1.0.1", - "ini": "^1.3.5" - } - }, - "parse-github-url": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/parse-github-url/-/parse-github-url-1.0.2.tgz", - "integrity": "sha512-kgBf6avCbO3Cn6+RnzRGLkUsv4ZVqv/VfAYkRsyBcgkshNvVBkRn1FEZcW0Jb+npXQWm2vHPnnOqFteZxRRGNw==", - "dev": true - }, - "parse-json": { - "version": "2.2.0", - "resolved": "https://registry.npmjs.org/parse-json/-/parse-json-2.2.0.tgz", - "integrity": "sha1-9ID0BDTvgHQfhGkJn43qGPVaTck=", - "dev": true, - "requires": { - "error-ex": "^1.2.0" - } - }, - "parse-link-header": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/parse-link-header/-/parse-link-header-2.0.0.tgz", - "integrity": "sha512-xjU87V0VyHZybn2RrCX5TIFGxTVZE6zqqZWMPlIKiSKuWh/X5WZdt+w1Ki1nXB+8L/KtL+nZ4iq+sfI6MrhhMw==", - "dev": true, - "requires": { - "xtend": "~4.0.1" - } - }, - "parse-node-version": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/parse-node-version/-/parse-node-version-1.0.1.tgz", - "integrity": "sha512-3YHlOa/JgH6Mnpr05jP9eDG254US9ek25LyIxZlDItp2iJtwyaXQb57lBYLdT3MowkUFYEV2XXNAYIPlESvJlA==", - "dev": true - }, - "parse-passwd": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/parse-passwd/-/parse-passwd-1.0.0.tgz", - "integrity": "sha1-bVuTSkVpk7I9N/QKOC1vFmao5cY=", - "dev": true - }, - "parse-srcset": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/parse-srcset/-/parse-srcset-1.0.2.tgz", - "integrity": "sha1-8r0iH2zJcKk42IVWq8WJyqqiveE=", - "dev": true - }, - "parse5": { - "version": "6.0.1", - "resolved": "https://registry.npmjs.org/parse5/-/parse5-6.0.1.tgz", - "integrity": "sha512-Ofn/CTFzRGTTxwpNEs9PP93gXShHcTq255nzRYSKe8AkVpZY7e1fpmTfOyoIvjP5HG7Z2ZM7VS9PPhQGW2pOpw==", - "dev": true - }, - "pascalcase": { - "version": "0.1.1", - "resolved": "https://registry.npmjs.org/pascalcase/-/pascalcase-0.1.1.tgz", - "integrity": "sha1-s2PlXoAGym/iF4TS2yK9FdeRfxQ=", - "dev": true - }, - "path-dirname": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/path-dirname/-/path-dirname-1.0.2.tgz", - "integrity": "sha1-zDPSTVJeCZpTiMAzbG4yuRYGCeA=", - "dev": true - }, - "path-exists": { - "version": "2.1.0", - "resolved": "https://registry.npmjs.org/path-exists/-/path-exists-2.1.0.tgz", - "integrity": "sha1-D+tsZPD8UY2adU3V77YscCJ2H0s=", - "dev": true, - "requires": { - "pinkie-promise": "^2.0.0" - } - }, - "path-is-absolute": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/path-is-absolute/-/path-is-absolute-1.0.1.tgz", - "integrity": "sha1-F0uSaHNVNP+8es5r9TpanhtcX18=", - "dev": true - }, - "path-is-inside": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/path-is-inside/-/path-is-inside-1.0.2.tgz", - "integrity": "sha1-NlQX3t5EQw0cEa9hAn+s8HS9/FM=", - "dev": true - }, - "path-key": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/path-key/-/path-key-2.0.1.tgz", - "integrity": "sha1-QRyttXTFoUDTpLGRDUDYDMn0C0A=", - "dev": true - }, - "path-parse": { - "version": "1.0.7", - "resolved": "https://registry.npmjs.org/path-parse/-/path-parse-1.0.7.tgz", - "integrity": "sha512-LDJzPVEEEPR+y48z93A0Ed0yXb8pAByGWo/k5YYdYgpY2/2EsOsksJrq7lOHxryrVOn1ejG6oAp8ahvOIQD8sw==", - "dev": true - }, - "path-root": { - "version": "0.1.1", - "resolved": "https://registry.npmjs.org/path-root/-/path-root-0.1.1.tgz", - "integrity": "sha1-mkpoFMrBwM1zNgqV8yCDyOpHRbc=", - "dev": true, - "requires": { - "path-root-regex": "^0.1.0" - } - }, - "path-root-regex": { - "version": "0.1.2", - "resolved": "https://registry.npmjs.org/path-root-regex/-/path-root-regex-0.1.2.tgz", - "integrity": "sha1-v8zcjfWxLcUsi0PsONGNcsBLqW0=", - "dev": true - }, - "path-type": { - "version": "1.1.0", - "resolved": "https://registry.npmjs.org/path-type/-/path-type-1.1.0.tgz", - "integrity": "sha1-WcRPfuSR2nBNpBXaWkBwuk+P5EE=", - "dev": true, - "requires": { - "graceful-fs": "^4.1.2", - "pify": "^2.0.0", - "pinkie-promise": "^2.0.0" - } - }, - "pathval": { - "version": "1.1.1", - "resolved": "https://registry.npmjs.org/pathval/-/pathval-1.1.1.tgz", - "integrity": "sha512-Dp6zGqpTdETdR63lehJYPeIOqpiNBNtc7BpWSLrOje7UaIsE5aY92r/AunQA7rsXvet3lrJ3JnZX29UPTKXyKQ==", - "dev": true - }, - "picomatch": { - "version": "2.3.1", - "resolved": "https://registry.npmjs.org/picomatch/-/picomatch-2.3.1.tgz", - "integrity": "sha512-JU3teHTNjmE2VCGFzuY8EXzCDVwEqB2a8fsIvwaStHhAWJEeVd1o1QD80CU6+ZdEXXSLbSsuLwJjkCBWqRQUVA==", - "dev": true - }, - "pidtree": { - "version": "0.3.1", - "resolved": "https://registry.npmjs.org/pidtree/-/pidtree-0.3.1.tgz", - "integrity": "sha512-qQbW94hLHEqCg7nhby4yRC7G2+jYHY4Rguc2bjw7Uug4GIJuu1tvf2uHaZv5Q8zdt+WKJ6qK1FOI6amaWUo5FA==", - "dev": true - }, - "pify": { - "version": "2.3.0", - "resolved": "https://registry.npmjs.org/pify/-/pify-2.3.0.tgz", - "integrity": "sha1-7RQaasBDqEnqWISY59yosVMw6Qw=", - "dev": true - }, - "pinkie": { - "version": "2.0.4", - "resolved": "https://registry.npmjs.org/pinkie/-/pinkie-2.0.4.tgz", - "integrity": "sha1-clVrgM+g1IqXToDnckjoDtT3+HA=", - "dev": true - }, - "pinkie-promise": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/pinkie-promise/-/pinkie-promise-2.0.1.tgz", - "integrity": "sha1-ITXW36ejWMBprJsXh3YogihFD/o=", - "dev": true, - "requires": { - "pinkie": "^2.0.0" - } - }, - "pinpoint": { - "version": "1.1.0", - "resolved": "https://registry.npmjs.org/pinpoint/-/pinpoint-1.1.0.tgz", - "integrity": "sha1-DPd1eml38b9/ajIge3CeN3OI6HQ=", - "dev": true - }, - "platform": { - "version": "1.3.6", - "resolved": "https://registry.npmjs.org/platform/-/platform-1.3.6.tgz", - "integrity": "sha512-fnWVljUchTro6RiCFvCXBbNhJc2NijN7oIQxbwsyL0buWJPG85v81ehlHI9fXrJsMNgTofEoWIQeClKpgxFLrg==", - "dev": true - }, - "plugin-error": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/plugin-error/-/plugin-error-1.0.1.tgz", - "integrity": "sha512-L1zP0dk7vGweZME2i+EeakvUNqSrdiI3F91TwEoYiGrAfUXmVv6fJIq4g82PAXxNsWOp0J7ZqQy/3Szz0ajTxA==", - "dev": true, - "requires": { - "ansi-colors": "^1.0.1", - "arr-diff": "^4.0.0", - "arr-union": "^3.1.0", - "extend-shallow": "^3.0.2" - } - }, - "portfinder": { - "version": "1.0.28", - "resolved": "https://registry.npmjs.org/portfinder/-/portfinder-1.0.28.tgz", - "integrity": "sha512-Se+2isanIcEqf2XMHjyUKskczxbPH7dQnlMjXX6+dybayyHvAf/TCgyMRlzf/B6QDhAEFOGes0pzRo3by4AbMA==", - "dev": true, - "requires": { - "async": "^2.6.2", - "debug": "^3.1.1", - "mkdirp": "^0.5.5" - }, - "dependencies": { - "debug": { - "version": "3.2.7", - "resolved": "https://registry.npmjs.org/debug/-/debug-3.2.7.tgz", - "integrity": "sha512-CFjzYYAi4ThfiQvizrFQevTTXHtnCqWfe7x1AhgEscTz6ZbLbfoLRLPugTQyBth6f8ZERVUSyWHFD/7Wu4t1XQ==", - "dev": true, - "requires": { - "ms": "^2.1.1" - } - }, - "mkdirp": { - "version": "0.5.5", - "resolved": "https://registry.npmjs.org/mkdirp/-/mkdirp-0.5.5.tgz", - "integrity": "sha512-NKmAlESf6jMGym1++R0Ra7wvhV+wFW63FaSOFPwRahvea0gMUcGUhVeAg/0BC0wiv9ih5NYPB1Wn1UEI1/L+xQ==", - "dev": true, - "requires": { - "minimist": "^1.2.5" - } - }, - "ms": { - "version": "2.1.3", - "resolved": "https://registry.npmjs.org/ms/-/ms-2.1.3.tgz", - "integrity": "sha512-6FlzubTLZG3J2a/NVCAleEhjzq5oxgHyaCU9yYXvcLsvoVaHJq/s5xXI6/XXP6tz7R9xAOtHnSO/tXtF3WRTlA==", - "dev": true - } - } - }, - "posix-character-classes": { - "version": "0.1.1", - "resolved": "https://registry.npmjs.org/posix-character-classes/-/posix-character-classes-0.1.1.tgz", - "integrity": "sha1-AerA/jta9xoqbAL+q7jB/vfgDqs=", - "dev": true - }, - "postcss": { - "version": "7.0.36", - "resolved": "https://registry.npmjs.org/postcss/-/postcss-7.0.36.tgz", - "integrity": "sha512-BebJSIUMwJHRH0HAQoxN4u1CN86glsrwsW0q7T+/m44eXOUAxSNdHRkNZPYz5vVUbg17hFgOQDE7fZk7li3pZw==", - "dev": true, - "requires": { - "chalk": "^2.4.2", - "source-map": "^0.6.1", - "supports-color": "^6.1.0" - }, - "dependencies": { - "source-map": { - "version": "0.6.1", - "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.6.1.tgz", - "integrity": "sha512-UjgapumWlbMhkBgzT7Ykc5YXUT46F0iKu8SGXq0bcwP5dz/h0Plj6enJqjz1Zbq2l5WaqYnrVbwWOWMyF3F47g==", - "dev": true - }, - "supports-color": { - "version": "6.1.0", - "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-6.1.0.tgz", - "integrity": "sha512-qe1jfm1Mg7Nq/NSh6XE24gPXROEVsWHxC1LIx//XNlD9iw7YZQGjZNjYN7xGaEG6iKdA8EtNFW6R0gjnVXp+wQ==", - "dev": true, - "requires": { - "has-flag": "^3.0.0" - } - } - } - }, - "prelude-ls": { - "version": "1.1.2", - "resolved": "https://registry.npmjs.org/prelude-ls/-/prelude-ls-1.1.2.tgz", - "integrity": "sha1-IZMqVJ9eUv/ZqCf1cOBL5iqX2lQ=", - "dev": true - }, - "prettier": { - "version": "2.4.1", - "resolved": "https://registry.npmjs.org/prettier/-/prettier-2.4.1.tgz", - "integrity": "sha512-9fbDAXSBcc6Bs1mZrDYb3XKzDLm4EXXL9sC1LqKP5rZkT6KRr/rf9amVUcODVXgguK/isJz0d0hP72WeaKWsvA==", - "dev": true - }, - "pretty-hrtime": { - "version": "1.0.3", - "resolved": "https://registry.npmjs.org/pretty-hrtime/-/pretty-hrtime-1.0.3.tgz", - "integrity": "sha1-t+PqQkNaTJsnWdmeDyAesZWALuE=", - "dev": true - }, - "prettyjson": { - "version": "1.2.1", - "resolved": "https://registry.npmjs.org/prettyjson/-/prettyjson-1.2.1.tgz", - "integrity": "sha1-/P+rQdGcq0365eV15kJGYZsS0ok=", - "dev": true, - "requires": { - "colors": "^1.1.2", - "minimist": "^1.2.0" - } - }, - "process-nextick-args": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/process-nextick-args/-/process-nextick-args-2.0.1.tgz", - "integrity": "sha512-3ouUOpQhtgrbOa17J7+uxOTpITYWaGP7/AhoR3+A+/1e9skrzelGi/dXzEYyvbxubEF6Wn2ypscTKiKJFFn1ag==", - "dev": true - }, - "progress": { - "version": "2.0.3", - "resolved": "https://registry.npmjs.org/progress/-/progress-2.0.3.tgz", - "integrity": "sha512-7PiHtLll5LdnKIMw100I+8xJXR5gW2QwWYkT6iJva0bXitZKa/XMrSbdmg3r2Xnaidz9Qumd0VPaMrZlF9V9sA==", - "dev": true - }, - "psl": { - "version": "1.8.0", - "resolved": "https://registry.npmjs.org/psl/-/psl-1.8.0.tgz", - "integrity": "sha512-RIdOzyoavK+hA18OGGWDqUTsCLhtA7IcZ/6NCs4fFJaHBDab+pDDmDIByWFRQJq2Cd7r1OoQxBGKOaztq+hjIQ==", - "dev": true - }, - "pump": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/pump/-/pump-3.0.0.tgz", - "integrity": "sha512-LwZy+p3SFs1Pytd/jYct4wpv49HiYCqd9Rlc5ZVdk0V+8Yzv6jR5Blk3TRmPL1ft69TxP0IMZGJ+WPFU2BFhww==", - "dev": true, - "requires": { - "end-of-stream": "^1.1.0", - "once": "^1.3.1" - } - }, - "pumpify": { - "version": "1.5.1", - "resolved": "https://registry.npmjs.org/pumpify/-/pumpify-1.5.1.tgz", - "integrity": "sha512-oClZI37HvuUJJxSKKrC17bZ9Cu0ZYhEAGPsPUy9KlMUmv9dKX2o77RUmq7f3XjIxbwyGwYzbzQ1L2Ks8sIradQ==", - "dev": true, - "requires": { - "duplexify": "^3.6.0", - "inherits": "^2.0.3", - "pump": "^2.0.0" - }, - "dependencies": { - "pump": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/pump/-/pump-2.0.1.tgz", - "integrity": "sha512-ruPMNRkN3MHP1cWJc9OWr+T/xDP0jhXYCLfJcBuX54hhfIBnaQmAUMfDcG4DM5UMWByBbJY69QSphm3jtDKIkA==", - "dev": true, - "requires": { - "end-of-stream": "^1.1.0", - "once": "^1.3.1" - } - } - } - }, - "punycode": { - "version": "2.1.1", - "resolved": "https://registry.npmjs.org/punycode/-/punycode-2.1.1.tgz", - "integrity": "sha512-XRsRjdf+j5ml+y/6GKHPZbrF/8p2Yga0JPtdqTIY2Xe5ohJPD9saDJJLPvp9+NSBprVvevdXZybnj2cv8OEd0A==", - "dev": true - }, - "qs": { - "version": "6.5.2", - "resolved": "https://registry.npmjs.org/qs/-/qs-6.5.2.tgz", - "integrity": "sha512-N5ZAX4/LxJmF+7wN74pUD6qAh9/wnvdQcjq9TZjevvXzSUo7bfmw91saqMjzGS2xq91/odN2dW/WOl7qQHNDGA==", - "dev": true - }, - "query-string": { - "version": "6.13.6", - "resolved": "https://registry.npmjs.org/query-string/-/query-string-6.13.6.tgz", - "integrity": "sha512-/WWZ7d9na6s2wMEGdVCVgKWE9Rt7nYyNIf7k8xmHXcesPMlEzicWo3lbYwHyA4wBktI2KrXxxZeACLbE84hvSQ==", - "dev": true, - "requires": { - "decode-uri-component": "^0.2.0", - "split-on-first": "^1.0.0", - "strict-uri-encode": "^2.0.0" - } - }, - "quick-lru": { - "version": "1.1.0", - "resolved": "https://registry.npmjs.org/quick-lru/-/quick-lru-1.1.0.tgz", - "integrity": "sha1-Q2CxfGETatOAeDl/8RQW4Ybc+7g=", - "dev": true - }, - "randombytes": { - "version": "2.1.0", - "resolved": "https://registry.npmjs.org/randombytes/-/randombytes-2.1.0.tgz", - "integrity": "sha512-vYl3iOX+4CKUWuxGi9Ukhie6fsqXqS9FE2Zaic4tNFD2N2QQaXOMFbuKK4QmDHC0JO6B1Zp41J0LpT0oR68amQ==", - "dev": true, - "requires": { - "safe-buffer": "^5.1.0" - } - }, - "read-pkg": { - "version": "1.1.0", - "resolved": "https://registry.npmjs.org/read-pkg/-/read-pkg-1.1.0.tgz", - "integrity": "sha1-9f+qXs0pyzHAR0vKfXVra7KePyg=", - "dev": true, - "requires": { - "load-json-file": "^1.0.0", - "normalize-package-data": "^2.3.2", - "path-type": "^1.0.0" - } - }, - "read-pkg-up": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/read-pkg-up/-/read-pkg-up-1.0.1.tgz", - "integrity": "sha1-nWPBMnbAZZGNV/ACpX9AobZD+wI=", - "dev": true, - "requires": { - "find-up": "^1.0.0", - "read-pkg": "^1.0.0" - } - }, - "readable-stream": { - "version": "2.3.6", - "resolved": "https://registry.npmjs.org/readable-stream/-/readable-stream-2.3.6.tgz", - "integrity": "sha512-tQtKA9WIAhBF3+VLAseyMqZeBjW0AHJoxOtYqSUZNJxauErmLbVm2FW1y+J/YA9dUrAC39ITejlZWhVIwawkKw==", - "dev": true, - "requires": { - "core-util-is": "~1.0.0", - "inherits": "~2.0.3", - "isarray": "~1.0.0", - "process-nextick-args": "~2.0.0", - "safe-buffer": "~5.1.1", - "string_decoder": "~1.1.1", - "util-deprecate": "~1.0.1" - } - }, - "readdirp": { - "version": "2.2.1", - "resolved": "https://registry.npmjs.org/readdirp/-/readdirp-2.2.1.tgz", - "integrity": "sha512-1JU/8q+VgFZyxwrJ+SVIOsh+KywWGpds3NTqikiKpDMZWScmAYyKIgqkO+ARvNWJfXeXR1zxz7aHF4u4CyH6vQ==", - "dev": true, - "requires": { - "graceful-fs": "^4.1.11", - "micromatch": "^3.1.10", - "readable-stream": "^2.0.2" - } - }, - "readline-sync": { - "version": "1.4.10", - "resolved": "https://registry.npmjs.org/readline-sync/-/readline-sync-1.4.10.tgz", - "integrity": "sha512-gNva8/6UAe8QYepIQH/jQ2qn91Qj0B9sYjMBBs3QOB8F2CXcKgLxQaJRP76sWVRQt+QU+8fAkCbCvjjMFu7Ycw==", - "dev": true - }, - "rechoir": { - "version": "0.6.2", - "resolved": "https://registry.npmjs.org/rechoir/-/rechoir-0.6.2.tgz", - "integrity": "sha1-hSBLVNuoLVdC4oyWdW70OvUOM4Q=", - "dev": true, - "requires": { - "resolve": "^1.1.6" - } - }, - "redent": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/redent/-/redent-2.0.0.tgz", - "integrity": "sha1-wbIAe0LVfrE4kHmzyDM2OdXhzKo=", - "dev": true, - "requires": { - "indent-string": "^3.0.0", - "strip-indent": "^2.0.0" - } - }, - "refa": { - "version": "0.9.1", - "resolved": "https://registry.npmjs.org/refa/-/refa-0.9.1.tgz", - "integrity": "sha512-egU8LgFq2VXlAfUi8Jcbr5X38wEOadMFf8tCbshgcpVCYlE7k84pJOSlnvXF+muDB4igkdVMq7Z/kiNPqDT9TA==", - "dev": true, - "requires": { - "regexpp": "^3.2.0" - } - }, - "regenerator-runtime": { - "version": "0.13.7", - "resolved": "https://registry.npmjs.org/regenerator-runtime/-/regenerator-runtime-0.13.7.tgz", - "integrity": "sha512-a54FxoJDIr27pgf7IgeQGxmqUNYrcV338lf/6gH456HZ/PhX+5BcwHXG9ajESmwe6WRO0tAzRUrRmNONWgkrew==", - "dev": true - }, - "regex-not": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/regex-not/-/regex-not-1.0.2.tgz", - "integrity": "sha512-J6SDjUgDxQj5NusnOtdFxDwN/+HWykR8GELwctJ7mdqhcyy1xEc4SRFHUXvxTp661YaVKAjfRLZ9cCqS6tn32A==", - "dev": true, - "requires": { - "extend-shallow": "^3.0.2", - "safe-regex": "^1.1.0" - } - }, - "regexp-ast-analysis": { - "version": "0.2.4", - "resolved": "https://registry.npmjs.org/regexp-ast-analysis/-/regexp-ast-analysis-0.2.4.tgz", - "integrity": "sha512-8L7kOZQaKPxKKAwGuUZxTQtlO3WZ+tiXy4s6G6PKL6trbOXcZoumwC3AOHHFtI/xoSbNxt7jgLvCnP1UADLWqg==", - "dev": true, - "requires": { - "refa": "^0.9.0", - "regexpp": "^3.2.0" - } - }, - "regexpp": { - "version": "3.2.0", - "resolved": "https://registry.npmjs.org/regexpp/-/regexpp-3.2.0.tgz", - "integrity": "sha512-pq2bWo9mVD43nbts2wGv17XLiNLya+GklZ8kaDLV2Z08gDCsGpnKn9BFMepvWuHCbyVvY7J5o5+BVvoQbmlJLg==", - "dev": true - }, - "regextras": { - "version": "0.7.1", - "resolved": "https://registry.npmjs.org/regextras/-/regextras-0.7.1.tgz", - "integrity": "sha512-9YXf6xtW+qzQ+hcMQXx95MOvfqXFgsKDZodX3qZB0x2n5Z94ioetIITsBtvJbiOyxa/6s9AtyweBLCdPmPko/w==", - "dev": true - }, - "remove-bom-buffer": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/remove-bom-buffer/-/remove-bom-buffer-3.0.0.tgz", - "integrity": "sha512-8v2rWhaakv18qcvNeli2mZ/TMTL2nEyAKRvzo1WtnZBl15SHyEhrCu2/xKlJyUFKHiHgfXIyuY6g2dObJJycXQ==", - "dev": true, - "requires": { - "is-buffer": "^1.1.5", - "is-utf8": "^0.2.1" - } - }, - "remove-bom-stream": { - "version": "1.2.0", - "resolved": "https://registry.npmjs.org/remove-bom-stream/-/remove-bom-stream-1.2.0.tgz", - "integrity": "sha1-BfGlk/FuQuH7kOv1nejlaVJflSM=", - "dev": true, - "requires": { - "remove-bom-buffer": "^3.0.0", - "safe-buffer": "^5.1.0", - "through2": "^2.0.3" - } - }, - "remove-trailing-separator": { - "version": "1.1.0", - "resolved": "https://registry.npmjs.org/remove-trailing-separator/-/remove-trailing-separator-1.1.0.tgz", - "integrity": "sha1-wkvOKig62tW8P1jg1IJJuSN52O8=", - "dev": true - }, - "repeat-element": { - "version": "1.1.3", - "resolved": "https://registry.npmjs.org/repeat-element/-/repeat-element-1.1.3.tgz", - "integrity": "sha512-ahGq0ZnV5m5XtZLMb+vP76kcAM5nkLqk0lpqAuojSKGgQtn4eRi4ZZGm2olo2zKFH+sMsWaqOCW1dqAnOru72g==", - "dev": true - }, - "repeat-string": { - "version": "1.6.1", - "resolved": "https://registry.npmjs.org/repeat-string/-/repeat-string-1.6.1.tgz", - "integrity": "sha1-jcrkcOHIirwtYA//Sndihtp15jc=", - "dev": true - }, - "replace-ext": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/replace-ext/-/replace-ext-1.0.0.tgz", - "integrity": "sha1-3mMSg3P8v3w8z6TeWkgMRaZ5WOs=", - "dev": true - }, - "replace-homedir": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/replace-homedir/-/replace-homedir-1.0.0.tgz", - "integrity": "sha1-6H9tUTuSjd6AgmDBK+f+xv9ueYw=", - "dev": true, - "requires": { - "homedir-polyfill": "^1.0.1", - "is-absolute": "^1.0.0", - "remove-trailing-separator": "^1.1.0" - } - }, - "replacestream": { - "version": "4.0.3", - "resolved": "https://registry.npmjs.org/replacestream/-/replacestream-4.0.3.tgz", - "integrity": "sha512-AC0FiLS352pBBiZhd4VXB1Ab/lh0lEgpP+GGvZqbQh8a5cmXVoTe5EX/YeTFArnp4SRGTHh1qCHu9lGs1qG8sA==", - "dev": true, - "requires": { - "escape-string-regexp": "^1.0.3", - "object-assign": "^4.0.1", - "readable-stream": "^2.0.2" - } - }, - "require-directory": { - "version": "2.1.1", - "resolved": "https://registry.npmjs.org/require-directory/-/require-directory-2.1.1.tgz", - "integrity": "sha1-jGStX9MNqxyXbiNE/+f3kqam30I=", - "dev": true - }, - "require-from-string": { - "version": "2.0.2", - "resolved": "https://registry.npmjs.org/require-from-string/-/require-from-string-2.0.2.tgz", - "integrity": "sha512-Xf0nWe6RseziFMu+Ap9biiUbmplq6S9/p+7w7YXP/JBHhrUDDUhwa+vANyubuqfZWTveU//DYVGsDG7RKL/vEw==", - "dev": true - }, - "require-main-filename": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/require-main-filename/-/require-main-filename-1.0.1.tgz", - "integrity": "sha1-l/cXtp1IeE9fUmpsWqj/3aBVpNE=", - "dev": true - }, - "requires-port": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/requires-port/-/requires-port-1.0.0.tgz", - "integrity": "sha1-kl0mAdOaxIXgkc8NpcbmlNw9yv8=", - "dev": true - }, - "requizzle": { - "version": "0.2.3", - "resolved": "https://registry.npmjs.org/requizzle/-/requizzle-0.2.3.tgz", - "integrity": "sha512-YanoyJjykPxGHii0fZP0uUPEXpvqfBDxWV7s6GKAiiOsiqhX6vHNyW3Qzdmqp/iq/ExbhaGbVrjB4ruEVSM4GQ==", - "dev": true, - "requires": { - "lodash": "^4.17.14" - } - }, - "resolve": { - "version": "1.15.1", - "resolved": "https://registry.npmjs.org/resolve/-/resolve-1.15.1.tgz", - "integrity": "sha512-84oo6ZTtoTUpjgNEr5SJyzQhzL72gaRodsSfyxC/AXRvwu0Yse9H8eF9IpGo7b8YetZhlI6v7ZQ6bKBFV/6S7w==", - "dev": true, - "requires": { - "path-parse": "^1.0.6" - } - }, - "resolve-dir": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/resolve-dir/-/resolve-dir-1.0.1.tgz", - "integrity": "sha1-eaQGRMNivoLybv/nOcm7U4IEb0M=", - "dev": true, - "requires": { - "expand-tilde": "^2.0.0", - "global-modules": "^1.0.0" - } - }, - "resolve-from": { - "version": "5.0.0", - "resolved": "https://registry.npmjs.org/resolve-from/-/resolve-from-5.0.0.tgz", - "integrity": "sha512-qYg9KP24dD5qka9J47d0aVky0N+b4fTU89LN9iDnjB5waksiC49rvMB0PrUJQGoTmH50XPiqOvAjDfaijGxYZw==", - "dev": true - }, - "resolve-options": { - "version": "1.1.0", - "resolved": "https://registry.npmjs.org/resolve-options/-/resolve-options-1.1.0.tgz", - "integrity": "sha1-MrueOcBtZzONyTeMDW1gdFZq0TE=", - "dev": true, - "requires": { - "value-or-function": "^3.0.0" - } - }, - "resolve-url": { - "version": "0.2.1", - "resolved": "https://registry.npmjs.org/resolve-url/-/resolve-url-0.2.1.tgz", - "integrity": "sha1-LGN/53yJOv0qZj/iGqkIAGjiBSo=", - "dev": true - }, - "ret": { - "version": "0.1.15", - "resolved": "https://registry.npmjs.org/ret/-/ret-0.1.15.tgz", - "integrity": "sha512-TTlYpa+OL+vMMNG24xSlQGEJ3B/RzEfUlLct7b5G/ytav+wPrplCpVMFuwzXbkecJrb6IYo1iFb0S9v37754mg==", - "dev": true - }, - "retry": { - "version": "0.12.0", - "resolved": "https://registry.npmjs.org/retry/-/retry-0.12.0.tgz", - "integrity": "sha1-G0KmJmoh8HQh0bC1S33BZ7AcATs=", - "dev": true - }, - "rimraf": { - "version": "2.6.3", - "resolved": "https://registry.npmjs.org/rimraf/-/rimraf-2.6.3.tgz", - "integrity": "sha512-mwqeW5XsA2qAejG46gYdENaxXjx9onRNCfn7L0duuP4hCuTIi/QO7PDK07KJfp1d+izWPrzEJDcSqBa0OZQriA==", - "dev": true, - "requires": { - "glob": "^7.1.3" - } - }, - "safe-buffer": { - "version": "5.1.2", - "resolved": "https://registry.npmjs.org/safe-buffer/-/safe-buffer-5.1.2.tgz", - "integrity": "sha512-Gd2UZBJDkXlY7GbJxfsE8/nvKkUEU1G38c1siN6QP6a9PT9MmHB8GnpscSmMJSoF8LOIrt8ud/wPtojys4G6+g==", - "dev": true - }, - "safe-regex": { - "version": "1.1.0", - "resolved": "https://registry.npmjs.org/safe-regex/-/safe-regex-1.1.0.tgz", - "integrity": "sha1-QKNmnzsHfR6UPURinhV91IAjvy4=", - "dev": true, - "requires": { - "ret": "~0.1.10" - } - }, - "safer-buffer": { - "version": "2.1.2", - "resolved": "https://registry.npmjs.org/safer-buffer/-/safer-buffer-2.1.2.tgz", - "integrity": "sha512-YZo3K82SD7Riyi0E1EQPojLz7kpepnSQI9IyPbHHg1XXXevb5dJI7tpyN2ADxGcQbHG7vcyRHk0cbwqcQriUtg==", - "dev": true - }, - "sanitize-html": { - "version": "1.27.5", - "resolved": "https://registry.npmjs.org/sanitize-html/-/sanitize-html-1.27.5.tgz", - "integrity": "sha512-M4M5iXDAUEcZKLXkmk90zSYWEtk5NH3JmojQxKxV371fnMh+x9t1rqdmXaGoyEHw3z/X/8vnFhKjGL5xFGOJ3A==", - "dev": true, - "requires": { - "htmlparser2": "^4.1.0", - "lodash": "^4.17.15", - "parse-srcset": "^1.0.2", - "postcss": "^7.0.27" - }, - "dependencies": { - "htmlparser2": { - "version": "4.1.0", - "resolved": "https://registry.npmjs.org/htmlparser2/-/htmlparser2-4.1.0.tgz", - "integrity": "sha512-4zDq1a1zhE4gQso/c5LP1OtrhYTncXNSpvJYtWJBtXAETPlMfi3IFNjGuQbYLuVY4ZR0QMqRVvo4Pdy9KLyP8Q==", - "dev": true, - "requires": { - "domelementtype": "^2.0.1", - "domhandler": "^3.0.0", - "domutils": "^2.0.0", - "entities": "^2.0.0" - } - } - } - }, - "sax": { - "version": "1.2.4", - "resolved": "https://registry.npmjs.org/sax/-/sax-1.2.4.tgz", - "integrity": "sha512-NqVDv9TpANUjFm0N8uM5GxL36UgKi9/atZw+x7YFnQ8ckwFGKrl4xX4yWtrey3UJm5nP1kUbnYgLopqWNSRhWw==", - "dev": true - }, - "saxes": { - "version": "5.0.1", - "resolved": "https://registry.npmjs.org/saxes/-/saxes-5.0.1.tgz", - "integrity": "sha512-5LBh1Tls8c9xgGjw3QrMwETmTMVk0oFgvrFSvWx62llR2hcEInrKNZ2GZCCuuy2lvWrdl5jhbpeqc5hRYKFOcw==", - "dev": true, - "requires": { - "xmlchars": "^2.2.0" - } - }, - "scslre": { - "version": "0.1.6", - "resolved": "https://registry.npmjs.org/scslre/-/scslre-0.1.6.tgz", - "integrity": "sha512-JORxVRlQTfjvlOAaiQKebgFElyAm5/W8b50lgaZ0OkEnKnagJW2ufDh3xRfU75UD9z3FGIu1gL1IyR3Poa6Qmw==", - "dev": true, - "requires": { - "refa": "^0.9.0", - "regexp-ast-analysis": "^0.2.3", - "regexpp": "^3.2.0" - } - }, - "secure-compare": { - "version": "3.0.1", - "resolved": "https://registry.npmjs.org/secure-compare/-/secure-compare-3.0.1.tgz", - "integrity": "sha1-8aAymzCLIh+uN7mXTz1XjQypmeM=", - "dev": true - }, - "semver": { - "version": "5.6.0", - "resolved": "https://registry.npmjs.org/semver/-/semver-5.6.0.tgz", - "integrity": "sha512-RS9R6R35NYgQn++fkDWaOmqGoj4Ek9gGs+DPxNUZKuwE183xjJroKvyo1IzVFeXvUrvmALy6FWD5xrdJT25gMg==", - "dev": true - }, - "semver-greatest-satisfied-range": { - "version": "1.1.0", - "resolved": "https://registry.npmjs.org/semver-greatest-satisfied-range/-/semver-greatest-satisfied-range-1.1.0.tgz", - "integrity": "sha1-E+jCZYq5aRywzXEJMkAoDTb3els=", - "dev": true, - "requires": { - "sver-compat": "^1.5.0" - } - }, - "serialize-javascript": { - "version": "6.0.0", - "resolved": "https://registry.npmjs.org/serialize-javascript/-/serialize-javascript-6.0.0.tgz", - "integrity": "sha512-Qr3TosvguFt8ePWqsvRfrKyQXIiW+nGbYpy8XK24NQHE83caxWt+mIymTT19DGFbNWNLfEwsrkSmN64lVWB9ag==", - "dev": true, - "requires": { - "randombytes": "^2.1.0" - } - }, - "set-blocking": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/set-blocking/-/set-blocking-2.0.0.tgz", - "integrity": "sha1-BF+XgtARrppoA93TgrJDkrPYkPc=", - "dev": true - }, - "set-value": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/set-value/-/set-value-2.0.1.tgz", - "integrity": "sha512-JxHc1weCN68wRY0fhCoXpyK55m/XPHafOmK4UWD7m2CI14GMcFypt4w/0+NV5f/ZMby2F6S2wwA7fgynh9gWSw==", - "dev": true, - "requires": { - "extend-shallow": "^2.0.1", - "is-extendable": "^0.1.1", - "is-plain-object": "^2.0.3", - "split-string": "^3.0.1" - }, - "dependencies": { - "extend-shallow": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/extend-shallow/-/extend-shallow-2.0.1.tgz", - "integrity": "sha1-Ua99YUrZqfYQ6huvu5idaxxWiQ8=", - "dev": true, - "requires": { - "is-extendable": "^0.1.0" - } - } - } - }, - "shebang-command": { - "version": "1.2.0", - "resolved": "https://registry.npmjs.org/shebang-command/-/shebang-command-1.2.0.tgz", - "integrity": "sha1-RKrGW2lbAzmJaMOfNj/uXer98eo=", - "dev": true, - "requires": { - "shebang-regex": "^1.0.0" - } - }, - "shebang-regex": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/shebang-regex/-/shebang-regex-1.0.0.tgz", - "integrity": "sha1-2kL0l0DAtC2yypcoVxyxkMmO/qM=", - "dev": true - }, - "shell-quote": { - "version": "1.7.3", - "resolved": "https://registry.npmjs.org/shell-quote/-/shell-quote-1.7.3.tgz", - "integrity": "sha512-Vpfqwm4EnqGdlsBFNmHhxhElJYrdfcxPThu+ryKS5J8L/fhAwLazFZtq+S+TWZ9ANj2piSQLGj6NQg+lKPmxrw==", - "dev": true - }, - "signal-exit": { - "version": "3.0.2", - "resolved": "https://registry.npmjs.org/signal-exit/-/signal-exit-3.0.2.tgz", - "integrity": "sha1-tf3AjxKH6hF4Yo5BXiUTK3NkbG0=", - "dev": true - }, - "simple-git": { - "version": "3.5.0", - "resolved": "https://registry.npmjs.org/simple-git/-/simple-git-3.5.0.tgz", - "integrity": "sha512-fZsaq5nzdxQRhMNs6ESGLpMUHoL5GRP+boWPhq9pMYMKwOGZV2jHOxi8AbFFA2Y/6u4kR99HoULizSbpzaODkA==", - "dev": true, - "requires": { - "@kwsites/file-exists": "^1.1.1", - "@kwsites/promise-deferred": "^1.1.1", - "debug": "^4.3.3" - }, - "dependencies": { - "debug": { - "version": "4.3.4", - "resolved": "https://registry.npmjs.org/debug/-/debug-4.3.4.tgz", - "integrity": "sha512-PRWFHuSU3eDtQJPvnNY7Jcket1j0t5OuOsFzPPzsekD52Zl8qUfFIPEiswXqIvHWGVHOgX+7G/vCNNhehwxfkQ==", - "dev": true, - "requires": { - "ms": "2.1.2" - } - }, - "ms": { - "version": "2.1.2", - "resolved": "https://registry.npmjs.org/ms/-/ms-2.1.2.tgz", - "integrity": "sha512-sGkPx+VjMtmA6MX27oA4FBFELFCZZ4S4XqeGOXCv68tT+jb3vk/RyaKWP0PTKyWtmLSM0b+adUTEvbs1PEaH2w==", - "dev": true - } - } - }, - "slash": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/slash/-/slash-2.0.0.tgz", - "integrity": "sha512-ZYKh3Wh2z1PpEXWr0MpSBZ0V6mZHAQfYevttO11c51CaWjGTaadiKZ+wVt1PbMlDV5qhMFslpZCemhwOK7C89A==", - "dev": true - }, - "slice-ansi": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/slice-ansi/-/slice-ansi-4.0.0.tgz", - "integrity": "sha512-qMCMfhY040cVHT43K9BFygqYbUPFZKHOg7K73mtTWJRb8pyP3fzf4Ixd5SzdEJQ6MRUg/WBnOLxghZtKKurENQ==", - "dev": true, - "requires": { - "ansi-styles": "^4.0.0", - "astral-regex": "^2.0.0", - "is-fullwidth-code-point": "^3.0.0" - }, - "dependencies": { - "ansi-styles": { - "version": "4.3.0", - "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-4.3.0.tgz", - "integrity": "sha512-zbB9rCJAT1rbjiVDb2hqKFHNYLxgtk8NURxZ3IZwD3F6NtxbXZQCnnSi1Lkx+IDohdPlFp222wVALIheZJQSEg==", - "dev": true, - "requires": { - "color-convert": "^2.0.1" - } - }, - "color-convert": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-2.0.1.tgz", - "integrity": "sha512-RRECPsj7iu/xb5oKYcsFHSppFNnsj/52OVTRKb4zP5onXwVF3zVmmToNcOfGC+CRDpfK/U584fMg38ZHCaElKQ==", - "dev": true, - "requires": { - "color-name": "~1.1.4" - } - }, - "color-name": { - "version": "1.1.4", - "resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.4.tgz", - "integrity": "sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA==", - "dev": true - }, - "is-fullwidth-code-point": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/is-fullwidth-code-point/-/is-fullwidth-code-point-3.0.0.tgz", - "integrity": "sha512-zymm5+u+sCsSWyD9qNaejV3DFvhCKclKdizYaJUuHA83RLjb7nSuGnddCHGv0hk+KY7BMAlsWeK4Ueg6EV6XQg==", - "dev": true - } - } - }, - "snapdragon": { - "version": "0.8.2", - "resolved": "https://registry.npmjs.org/snapdragon/-/snapdragon-0.8.2.tgz", - "integrity": "sha512-FtyOnWN/wCHTVXOMwvSv26d+ko5vWlIDD6zoUJ7LW8vh+ZBC8QdljveRP+crNrtBwioEUWy/4dMtbBjA4ioNlg==", - "dev": true, - "requires": { - "base": "^0.11.1", - "debug": "^2.2.0", - "define-property": "^0.2.5", - "extend-shallow": "^2.0.1", - "map-cache": "^0.2.2", - "source-map": "^0.5.6", - "source-map-resolve": "^0.5.0", - "use": "^3.1.0" - }, - "dependencies": { - "define-property": { - "version": "0.2.5", - "resolved": "https://registry.npmjs.org/define-property/-/define-property-0.2.5.tgz", - "integrity": "sha1-w1se+RjsPJkPmlvFe+BKrOxcgRY=", - "dev": true, - "requires": { - "is-descriptor": "^0.1.0" - } - }, - "extend-shallow": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/extend-shallow/-/extend-shallow-2.0.1.tgz", - "integrity": "sha1-Ua99YUrZqfYQ6huvu5idaxxWiQ8=", - "dev": true, - "requires": { - "is-extendable": "^0.1.0" - } - } - } - }, - "snapdragon-node": { - "version": "2.1.1", - "resolved": "https://registry.npmjs.org/snapdragon-node/-/snapdragon-node-2.1.1.tgz", - "integrity": "sha512-O27l4xaMYt/RSQ5TR3vpWCAB5Kb/czIcqUFOM/C4fYcLnbZUc1PkjTAMjof2pBWaSTwOUd6qUHcFGVGj7aIwnw==", - "dev": true, - "requires": { - "define-property": "^1.0.0", - "isobject": "^3.0.0", - "snapdragon-util": "^3.0.1" - }, - "dependencies": { - "define-property": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/define-property/-/define-property-1.0.0.tgz", - "integrity": "sha1-dp66rz9KY6rTr56NMEybvnm/sOY=", - "dev": true, - "requires": { - "is-descriptor": "^1.0.0" - } - }, - "is-accessor-descriptor": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/is-accessor-descriptor/-/is-accessor-descriptor-1.0.0.tgz", - "integrity": "sha512-m5hnHTkcVsPfqx3AKlyttIPb7J+XykHvJP2B9bZDjlhLIoEq4XoK64Vg7boZlVWYK6LUY94dYPEE7Lh0ZkZKcQ==", - "dev": true, - "requires": { - "kind-of": "^6.0.0" - } - }, - "is-data-descriptor": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/is-data-descriptor/-/is-data-descriptor-1.0.0.tgz", - "integrity": "sha512-jbRXy1FmtAoCjQkVmIVYwuuqDFUbaOeDjmed1tOGPrsMhtJA4rD9tkgA0F1qJ3gRFRXcHYVkdeaP50Q5rE/jLQ==", - "dev": true, - "requires": { - "kind-of": "^6.0.0" - } - }, - "is-descriptor": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/is-descriptor/-/is-descriptor-1.0.2.tgz", - "integrity": "sha512-2eis5WqQGV7peooDyLmNEPUrps9+SXX5c9pL3xEB+4e9HnGuDa7mB7kHxHw4CbqS9k1T2hOH3miL8n8WtiYVtg==", - "dev": true, - "requires": { - "is-accessor-descriptor": "^1.0.0", - "is-data-descriptor": "^1.0.0", - "kind-of": "^6.0.2" - } - } - } - }, - "snapdragon-util": { - "version": "3.0.1", - "resolved": "https://registry.npmjs.org/snapdragon-util/-/snapdragon-util-3.0.1.tgz", - "integrity": "sha512-mbKkMdQKsjX4BAL4bRYTj21edOf8cN7XHdYUJEe+Zn99hVEYcMvKPct1IqNe7+AZPirn8BCDOQBHQZknqmKlZQ==", - "dev": true, - "requires": { - "kind-of": "^3.2.0" - }, - "dependencies": { - "kind-of": { - "version": "3.2.2", - "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-3.2.2.tgz", - "integrity": "sha1-MeohpzS6ubuw8yRm2JOupR5KPGQ=", - "dev": true, - "requires": { - "is-buffer": "^1.1.5" - } - } - } - }, - "source-map": { - "version": "0.5.7", - "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.5.7.tgz", - "integrity": "sha1-igOdLRAh0i0eoUyA2OpGi6LvP8w=", - "dev": true - }, - "source-map-resolve": { - "version": "0.5.3", - "resolved": "https://registry.npmjs.org/source-map-resolve/-/source-map-resolve-0.5.3.tgz", - "integrity": "sha512-Htz+RnsXWk5+P2slx5Jh3Q66vhQj1Cllm0zvnaY98+NFx+Dv2CF/f5O/t8x+KaNdrdIAsruNzoh/KpialbqAnw==", - "dev": true, - "requires": { - "atob": "^2.1.2", - "decode-uri-component": "^0.2.0", - "resolve-url": "^0.2.1", - "source-map-url": "^0.4.0", - "urix": "^0.1.0" - } - }, - "source-map-support": { - "version": "0.5.21", - "resolved": "https://registry.npmjs.org/source-map-support/-/source-map-support-0.5.21.tgz", - "integrity": "sha512-uBHU3L3czsIyYXKX88fdrGovxdSCoTGDRZ6SYXtSRxLZUzHg5P/66Ht6uoUlHu9EZod+inXhKo3qQgwXUT/y1w==", - "dev": true, - "requires": { - "buffer-from": "^1.0.0", - "source-map": "^0.6.0" - }, - "dependencies": { - "source-map": { - "version": "0.6.1", - "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.6.1.tgz", - "integrity": "sha512-UjgapumWlbMhkBgzT7Ykc5YXUT46F0iKu8SGXq0bcwP5dz/h0Plj6enJqjz1Zbq2l5WaqYnrVbwWOWMyF3F47g==", - "dev": true - } - } - }, - "source-map-url": { - "version": "0.4.0", - "resolved": "https://registry.npmjs.org/source-map-url/-/source-map-url-0.4.0.tgz", - "integrity": "sha1-PpNdfd1zYxuXZZlW1VEo6HtQhKM=", - "dev": true - }, - "sparkles": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/sparkles/-/sparkles-1.0.1.tgz", - "integrity": "sha512-dSO0DDYUahUt/0/pD/Is3VIm5TGJjludZ0HVymmhYF6eNA53PVLhnUk0znSYbH8IYBuJdCE+1luR22jNLMaQdw==", - "dev": true - }, - "spdx-correct": { - "version": "3.1.0", - "resolved": "https://registry.npmjs.org/spdx-correct/-/spdx-correct-3.1.0.tgz", - "integrity": "sha512-lr2EZCctC2BNR7j7WzJ2FpDznxky1sjfxvvYEyzxNyb6lZXHODmEoJeFu4JupYlkfha1KZpJyoqiJ7pgA1qq8Q==", - "dev": true, - "requires": { - "spdx-expression-parse": "^3.0.0", - "spdx-license-ids": "^3.0.0" - } - }, - "spdx-exceptions": { - "version": "2.2.0", - "resolved": "https://registry.npmjs.org/spdx-exceptions/-/spdx-exceptions-2.2.0.tgz", - "integrity": "sha512-2XQACfElKi9SlVb1CYadKDXvoajPgBVPn/gOQLrTvHdElaVhr7ZEbqJaRnJLVNeaI4cMEAgVCeBMKF6MWRDCRA==", - "dev": true - }, - "spdx-expression-parse": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/spdx-expression-parse/-/spdx-expression-parse-3.0.0.tgz", - "integrity": "sha512-Yg6D3XpRD4kkOmTpdgbUiEJFKghJH03fiC1OPll5h/0sO6neh2jqRDVHOQ4o/LMea0tgCkbMgea5ip/e+MkWyg==", - "dev": true, - "requires": { - "spdx-exceptions": "^2.1.0", - "spdx-license-ids": "^3.0.0" - } - }, - "spdx-license-ids": { - "version": "3.0.5", - "resolved": "https://registry.npmjs.org/spdx-license-ids/-/spdx-license-ids-3.0.5.tgz", - "integrity": "sha512-J+FWzZoynJEXGphVIS+XEh3kFSjZX/1i9gFBaWQcB+/tmpe2qUsSBABpcxqxnAxFdiUFEgAX1bjYGQvIZmoz9Q==", - "dev": true - }, - "split-on-first": { - "version": "1.1.0", - "resolved": "https://registry.npmjs.org/split-on-first/-/split-on-first-1.1.0.tgz", - "integrity": "sha512-43ZssAJaMusuKWL8sKUBQXHWOpq8d6CfN/u1p4gUzfJkM05C8rxTmYrkIPTXapZpORA6LkkzcUulJ8FqA7Uudw==", - "dev": true - }, - "split-string": { - "version": "3.1.0", - "resolved": "https://registry.npmjs.org/split-string/-/split-string-3.1.0.tgz", - "integrity": "sha512-NzNVhJDYpwceVVii8/Hu6DKfD2G+NrQHlS/V/qgv763EYudVwEcMQNxd2lh+0VrUByXN/oJkl5grOhYWvQUYiw==", - "dev": true, - "requires": { - "extend-shallow": "^3.0.0" - } - }, - "sprintf-js": { - "version": "1.0.3", - "resolved": "https://registry.npmjs.org/sprintf-js/-/sprintf-js-1.0.3.tgz", - "integrity": "sha1-BOaSb2YolTVPPdAVIDYzuFcpfiw=", - "dev": true - }, - "stack-trace": { - "version": "0.0.10", - "resolved": "https://registry.npmjs.org/stack-trace/-/stack-trace-0.0.10.tgz", - "integrity": "sha1-VHxws0fo0ytOEI6hoqFZ5f3eGcA=", - "dev": true - }, - "static-extend": { - "version": "0.1.2", - "resolved": "https://registry.npmjs.org/static-extend/-/static-extend-0.1.2.tgz", - "integrity": "sha1-YICcOcv/VTNyJv1eC1IPNB8ftcY=", - "dev": true, - "requires": { - "define-property": "^0.2.5", - "object-copy": "^0.1.0" - }, - "dependencies": { - "define-property": { - "version": "0.2.5", - "resolved": "https://registry.npmjs.org/define-property/-/define-property-0.2.5.tgz", - "integrity": "sha1-w1se+RjsPJkPmlvFe+BKrOxcgRY=", - "dev": true, - "requires": { - "is-descriptor": "^0.1.0" - } - } - } - }, - "stream-exhaust": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/stream-exhaust/-/stream-exhaust-1.0.2.tgz", - "integrity": "sha512-b/qaq/GlBK5xaq1yrK9/zFcyRSTNxmcZwFLGSTG0mXgZl/4Z6GgiyYOXOvY7N3eEvFRAG1bkDRz5EPGSvPYQlw==", - "dev": true - }, - "stream-shift": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/stream-shift/-/stream-shift-1.0.1.tgz", - "integrity": "sha512-AiisoFqQ0vbGcZgQPY1cdP2I76glaVA/RauYR4G4thNFgkTqr90yXTo4LYX60Jl+sIlPNHHdGSwo01AvbKUSVQ==", - "dev": true - }, - "strict-uri-encode": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/strict-uri-encode/-/strict-uri-encode-2.0.0.tgz", - "integrity": "sha1-ucczDHBChi9rFC3CdLvMWGbONUY=", - "dev": true - }, - "string_decoder": { - "version": "1.1.1", - "resolved": "https://registry.npmjs.org/string_decoder/-/string_decoder-1.1.1.tgz", - "integrity": "sha512-n/ShnvDi6FHbbVfviro+WojiFzv+s8MPMHBczVePfUpDJLwoLT0ht1l4YwBCbi8pJAveEEdnkHyPyTP/mzRfwg==", - "dev": true, - "requires": { - "safe-buffer": "~5.1.0" - } - }, - "string-width": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/string-width/-/string-width-1.0.2.tgz", - "integrity": "sha1-EYvfW4zcUaKn5w0hHgfisLmxB9M=", - "dev": true, - "requires": { - "code-point-at": "^1.0.0", - "is-fullwidth-code-point": "^1.0.0", - "strip-ansi": "^3.0.0" - } - }, - "string.fromcodepoint": { - "version": "0.2.1", - "resolved": "https://registry.npmjs.org/string.fromcodepoint/-/string.fromcodepoint-0.2.1.tgz", - "integrity": "sha1-jZeDM8C8klOPUPOD5IiPPlYZ1lM=", - "dev": true - }, - "string.prototype.codepointat": { - "version": "0.2.1", - "resolved": "https://registry.npmjs.org/string.prototype.codepointat/-/string.prototype.codepointat-0.2.1.tgz", - "integrity": "sha512-2cBVCj6I4IOvEnjgO/hWqXjqBGsY+zwPmHl12Srk9IXSZ56Jwwmy+66XO5Iut/oQVR7t5ihYdLB0GMa4alEUcg==", - "dev": true - }, - "string.prototype.padend": { - "version": "3.1.2", - "resolved": "https://registry.npmjs.org/string.prototype.padend/-/string.prototype.padend-3.1.2.tgz", - "integrity": "sha512-/AQFLdYvePENU3W5rgurfWSMU6n+Ww8n/3cUt7E+vPBB/D7YDG8x+qjoFs4M/alR2bW7Qg6xMjVwWUOvuQ0XpQ==", - "dev": true, - "requires": { - "call-bind": "^1.0.2", - "define-properties": "^1.1.3", - "es-abstract": "^1.18.0-next.2" - }, - "dependencies": { - "es-abstract": { - "version": "1.18.3", - "resolved": "https://registry.npmjs.org/es-abstract/-/es-abstract-1.18.3.tgz", - "integrity": "sha512-nQIr12dxV7SSxE6r6f1l3DtAeEYdsGpps13dR0TwJg1S8gyp4ZPgy3FZcHBgbiQqnoqSTb+oC+kO4UQ0C/J8vw==", - "dev": true, - "requires": { - "call-bind": "^1.0.2", - "es-to-primitive": "^1.2.1", - "function-bind": "^1.1.1", - "get-intrinsic": "^1.1.1", - "has": "^1.0.3", - "has-symbols": "^1.0.2", - "is-callable": "^1.2.3", - "is-negative-zero": "^2.0.1", - "is-regex": "^1.1.3", - "is-string": "^1.0.6", - "object-inspect": "^1.10.3", - "object-keys": "^1.1.1", - "object.assign": "^4.1.2", - "string.prototype.trimend": "^1.0.4", - "string.prototype.trimstart": "^1.0.4", - "unbox-primitive": "^1.0.1" - } - }, - "es-to-primitive": { - "version": "1.2.1", - "resolved": "https://registry.npmjs.org/es-to-primitive/-/es-to-primitive-1.2.1.tgz", - "integrity": "sha512-QCOllgZJtaUo9miYBcLChTUaHNjJF3PYs1VidD7AwiEj1kYxKeQTctLAezAOH5ZKRH0g2IgPn6KwB4IT8iRpvA==", - "dev": true, - "requires": { - "is-callable": "^1.1.4", - "is-date-object": "^1.0.1", - "is-symbol": "^1.0.2" - } - }, - "has-symbols": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/has-symbols/-/has-symbols-1.0.2.tgz", - "integrity": "sha512-chXa79rL/UC2KlX17jo3vRGz0azaWEx5tGqZg5pO3NUyEJVB17dMruQlzCCOfUvElghKcm5194+BCRvi2Rv/Gw==", - "dev": true - }, - "is-callable": { - "version": "1.2.3", - "resolved": "https://registry.npmjs.org/is-callable/-/is-callable-1.2.3.tgz", - "integrity": "sha512-J1DcMe8UYTBSrKezuIUTUwjXsho29693unXM2YhJUTR2txK/eG47bvNa/wipPFmZFgr/N6f1GA66dv0mEyTIyQ==", - "dev": true - }, - "is-regex": { - "version": "1.1.3", - "resolved": "https://registry.npmjs.org/is-regex/-/is-regex-1.1.3.tgz", - "integrity": "sha512-qSVXFz28HM7y+IWX6vLCsexdlvzT1PJNFSBuaQLQ5o0IEw8UDYW6/2+eCMVyIsbM8CNLX2a/QWmSpyxYEHY7CQ==", - "dev": true, - "requires": { - "call-bind": "^1.0.2", - "has-symbols": "^1.0.2" - } - }, - "object-keys": { - "version": "1.1.1", - "resolved": "https://registry.npmjs.org/object-keys/-/object-keys-1.1.1.tgz", - "integrity": "sha512-NuAESUOUMrlIXOfHKzD6bpPu3tYt3xvjNdRIQ+FeT0lNb4K8WR70CaDxhuNguS2XG+GjkyMwOzsN5ZktImfhLA==", - "dev": true - }, - "object.assign": { - "version": "4.1.2", - "resolved": "https://registry.npmjs.org/object.assign/-/object.assign-4.1.2.tgz", - "integrity": "sha512-ixT2L5THXsApyiUPYKmW+2EHpXXe5Ii3M+f4e+aJFAHao5amFRW6J0OO6c/LU8Be47utCx2GL89hxGB6XSmKuQ==", - "dev": true, - "requires": { - "call-bind": "^1.0.0", - "define-properties": "^1.1.3", - "has-symbols": "^1.0.1", - "object-keys": "^1.1.1" - } - } - } - }, - "string.prototype.trimend": { - "version": "1.0.4", - "resolved": "https://registry.npmjs.org/string.prototype.trimend/-/string.prototype.trimend-1.0.4.tgz", - "integrity": "sha512-y9xCjw1P23Awk8EvTpcyL2NIr1j7wJ39f+k6lvRnSMz+mz9CGz9NYPelDk42kOz6+ql8xjfK8oYzy3jAP5QU5A==", - "dev": true, - "requires": { - "call-bind": "^1.0.2", - "define-properties": "^1.1.3" - } - }, - "string.prototype.trimstart": { - "version": "1.0.4", - "resolved": "https://registry.npmjs.org/string.prototype.trimstart/-/string.prototype.trimstart-1.0.4.tgz", - "integrity": "sha512-jh6e984OBfvxS50tdY2nRZnoC5/mLFKOREQfw8t5yytkoUsJRNxvI/E39qu1sD0OtWI3OC0XgKSmcWwziwYuZw==", - "dev": true, - "requires": { - "call-bind": "^1.0.2", - "define-properties": "^1.1.3" - } - }, - "strip-ansi": { - "version": "3.0.1", - "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-3.0.1.tgz", - "integrity": "sha1-ajhfuIU9lS1f8F0Oiq+UJ43GPc8=", - "dev": true, - "requires": { - "ansi-regex": "^2.0.0" - } - }, - "strip-bom": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/strip-bom/-/strip-bom-2.0.0.tgz", - "integrity": "sha1-YhmoVhZSBJHzV4i9vxRHqZx+aw4=", - "dev": true, - "requires": { - "is-utf8": "^0.2.0" - } - }, - "strip-eof": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/strip-eof/-/strip-eof-1.0.0.tgz", - "integrity": "sha1-u0P/VZim6wXYm1n80SnJgzE2Br8=", - "dev": true - }, - "strip-indent": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/strip-indent/-/strip-indent-2.0.0.tgz", - "integrity": "sha1-XvjbKV0B5u1sv3qrlpmNeCJSe2g=", - "dev": true - }, - "strip-json-comments": { - "version": "3.1.1", - "resolved": "https://registry.npmjs.org/strip-json-comments/-/strip-json-comments-3.1.1.tgz", - "integrity": "sha512-6fPc+R4ihwqP6N/aIv2f1gMH8lOVtWQHoqC4yK6oSDVVocumAsfCqjkXnqiYMhmMwS/mEHLp7Vehlt3ql6lEig==", - "dev": true - }, - "supports-color": { - "version": "8.1.1", - "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-8.1.1.tgz", - "integrity": "sha512-MpUEN2OodtUzxvKQl72cUF7RQ5EiHsGvSsVG0ia9c5RbWGL2CI4C7EpPS8UTBIplnlzZiNuV56w+FuNxy3ty2Q==", - "dev": true, - "requires": { - "has-flag": "^4.0.0" - }, - "dependencies": { - "has-flag": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-4.0.0.tgz", - "integrity": "sha512-EykJT/Q1KjTWctppgIAgfSO0tKVuZUjhgMr17kqTumMl6Afv3EISleU7qZUzoXDFTAHTDC4NOoG/ZxU3EvlMPQ==", - "dev": true - } - } - }, - "supports-hyperlinks": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/supports-hyperlinks/-/supports-hyperlinks-1.0.1.tgz", - "integrity": "sha512-HHi5kVSefKaJkGYXbDuKbUGRVxqnWGn3J2e39CYcNJEfWciGq2zYtOhXLTlvrOZW1QU7VX67w7fMmWafHX9Pfw==", - "dev": true, - "requires": { - "has-flag": "^2.0.0", - "supports-color": "^5.0.0" - }, - "dependencies": { - "has-flag": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-2.0.0.tgz", - "integrity": "sha1-6CB68cx7MNRGzHC3NLXovhj4jVE=", - "dev": true - }, - "supports-color": { - "version": "5.5.0", - "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-5.5.0.tgz", - "integrity": "sha512-QjVjwdXIt408MIiAqCX4oUKsgU2EqAGzs2Ppkm4aQYbjm+ZEWEcW4SfFNTr4uMNZma0ey4f5lgLrkB0aX0QMow==", - "dev": true, - "requires": { - "has-flag": "^3.0.0" - }, - "dependencies": { - "has-flag": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-3.0.0.tgz", - "integrity": "sha1-tdRU3CGZriJWmfNGfloH87lVuv0=", - "dev": true - } - } - } - } - }, - "sver-compat": { - "version": "1.5.0", - "resolved": "https://registry.npmjs.org/sver-compat/-/sver-compat-1.5.0.tgz", - "integrity": "sha1-PPh9/rTQe0o/FIJ7wYaz/QxkXNg=", - "dev": true, - "requires": { - "es6-iterator": "^2.0.1", - "es6-symbol": "^3.1.1" - } - }, - "svg-pathdata": { - "version": "5.0.5", - "resolved": "https://registry.npmjs.org/svg-pathdata/-/svg-pathdata-5.0.5.tgz", - "integrity": "sha512-TAAvLNSE3fEhyl/Da19JWfMAdhSXTYeviXsLSoDT1UM76ADj5ndwAPX1FKQEgB/gFMPavOy6tOqfalXKUiXrow==", - "dev": true - }, - "svg2ttf": { - "version": "4.3.0", - "resolved": "https://registry.npmjs.org/svg2ttf/-/svg2ttf-4.3.0.tgz", - "integrity": "sha512-LZ0B7zzHWLWbzLzwaKGHQvPOuxCXLReIb3LSxFSGUy1gMw2Utk6KGNbTmbmRL6Rk1qDSmTixnDrQgnXaL9n0CA==", - "dev": true, - "requires": { - "argparse": "^1.0.6", - "cubic2quad": "^1.0.0", - "lodash": "^4.17.10", - "microbuffer": "^1.0.0", - "svgpath": "^2.1.5", - "xmldom": "~0.1.22" - } - }, - "svgicons2svgfont": { - "version": "9.1.1", - "resolved": "https://registry.npmjs.org/svgicons2svgfont/-/svgicons2svgfont-9.1.1.tgz", - "integrity": "sha512-iOj7lqHP/oMrLg7S2Iv89LOJUfmIuePefXcs5ul4IsKwcYvL/T/Buahz+nQQJygyuvEMBBXqnCRmnvJggHeJzA==", - "dev": true, - "requires": { - "commander": "^2.12.2", - "geometry-interfaces": "^1.1.4", - "glob": "^7.1.2", - "neatequal": "^1.0.0", - "readable-stream": "^2.3.3", - "sax": "^1.2.4", - "string.fromcodepoint": "^0.2.1", - "string.prototype.codepointat": "^0.2.0", - "svg-pathdata": "^5.0.0", - "transformation-matrix-js": "^2.7.1" - } - }, - "svgpath": { - "version": "2.3.0", - "resolved": "https://registry.npmjs.org/svgpath/-/svgpath-2.3.0.tgz", - "integrity": "sha512-N/4UDu3Y2ICik0daMmFW1tplw0XPs1nVIEVYkTiQfj9/JQZeEtAKaSYwheCwje1I4pQ5r22fGpoaNIvGgsyJyg==", - "dev": true - }, - "symbol-tree": { - "version": "3.2.4", - "resolved": "https://registry.npmjs.org/symbol-tree/-/symbol-tree-3.2.4.tgz", - "integrity": "sha512-9QNk5KwDF+Bvz+PyObkmSYjI5ksVUYtjW7AU22r2NKcfLJcXp96hkDWU3+XndOsUb+AQ9QhfzfCT2O+CNWT5Tw==", - "dev": true - }, - "table": { - "version": "6.0.7", - "resolved": "https://registry.npmjs.org/table/-/table-6.0.7.tgz", - "integrity": "sha512-rxZevLGTUzWna/qBLObOe16kB2RTnnbhciwgPbMMlazz1yZGVEgnZK762xyVdVznhqxrfCeBMmMkgOOaPwjH7g==", - "dev": true, - "requires": { - "ajv": "^7.0.2", - "lodash": "^4.17.20", - "slice-ansi": "^4.0.0", - "string-width": "^4.2.0" - }, - "dependencies": { - "ajv": { - "version": "7.2.4", - "resolved": "https://registry.npmjs.org/ajv/-/ajv-7.2.4.tgz", - "integrity": "sha512-nBeQgg/ZZA3u3SYxyaDvpvDtgZ/EZPF547ARgZBrG9Bhu1vKDwAIjtIf+sDtJUKa2zOcEbmRLBRSyMraS/Oy1A==", - "dev": true, - "requires": { - "fast-deep-equal": "^3.1.1", - "json-schema-traverse": "^1.0.0", - "require-from-string": "^2.0.2", - "uri-js": "^4.2.2" - } - }, - "ansi-regex": { - "version": "5.0.1", - "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-5.0.1.tgz", - "integrity": "sha512-quJQXlTSUGL2LH9SUXo8VwsY4soanhgo6LNSm84E1LBcE8s3O0wpdiRzyR9z/ZZJMlMWv37qOOb9pdJlMUEKFQ==", - "dev": true - }, - "emoji-regex": { - "version": "8.0.0", - "resolved": "https://registry.npmjs.org/emoji-regex/-/emoji-regex-8.0.0.tgz", - "integrity": "sha512-MSjYzcWNOA0ewAHpz0MxpYFvwg6yjy1NG3xteoqz644VCo/RPgnr1/GGt+ic3iJTzQ8Eu3TdM14SawnVUmGE6A==", - "dev": true - }, - "fast-deep-equal": { - "version": "3.1.3", - "resolved": "https://registry.npmjs.org/fast-deep-equal/-/fast-deep-equal-3.1.3.tgz", - "integrity": "sha512-f3qQ9oQy9j2AhBe/H9VC91wLmKBCCU/gDOnKNAYG5hswO7BLKj09Hc5HYNz9cGI++xlpDCIgDaitVs03ATR84Q==", - "dev": true - }, - "is-fullwidth-code-point": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/is-fullwidth-code-point/-/is-fullwidth-code-point-3.0.0.tgz", - "integrity": "sha512-zymm5+u+sCsSWyD9qNaejV3DFvhCKclKdizYaJUuHA83RLjb7nSuGnddCHGv0hk+KY7BMAlsWeK4Ueg6EV6XQg==", - "dev": true - }, - "json-schema-traverse": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/json-schema-traverse/-/json-schema-traverse-1.0.0.tgz", - "integrity": "sha512-NM8/P9n3XjXhIZn1lLhkFaACTOURQXjWhV4BA/RnOv8xvgqtqpAX9IO4mRQxSx1Rlo4tqzeqb0sOlruaOy3dug==", - "dev": true + "funding": [ + { + "type": "opencollective", + "url": "https://opencollective.com/browserslist" }, - "string-width": { - "version": "4.2.2", - "resolved": "https://registry.npmjs.org/string-width/-/string-width-4.2.2.tgz", - "integrity": "sha512-XBJbT3N4JhVumXE0eoLU9DCjcaF92KLNqTmFCnG1pf8duUxFGwtP6AD6nkjw9a3IdiRtL3E2w3JDiE/xi3vOeA==", - "dev": true, - "requires": { - "emoji-regex": "^8.0.0", - "is-fullwidth-code-point": "^3.0.0", - "strip-ansi": "^6.0.0" - } + { + "type": "tidelift", + "url": "https://tidelift.com/funding/github/npm/browserslist" }, - "strip-ansi": { - "version": "6.0.0", - "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-6.0.0.tgz", - "integrity": "sha512-AuvKTrTfQNYNIctbR1K/YGTR1756GycPsg7b9bdV9Duqur4gv6aKqHXah67Z8ImS7WEz5QVcOtlfW2rZEugt6w==", - "dev": true, - "requires": { - "ansi-regex": "^5.0.0" - } + { + "type": "github", + "url": "https://github.com/sponsors/ai" } - } - }, - "taffydb": { - "version": "2.6.2", - "resolved": "https://registry.npmjs.org/taffydb/-/taffydb-2.6.2.tgz", - "integrity": "sha1-fLy2S1oUG2ou/CxdLGe04VCyomg=", - "dev": true - }, - "terser": { - "version": "5.14.2", - "resolved": "https://registry.npmjs.org/terser/-/terser-5.14.2.tgz", - "integrity": "sha512-oL0rGeM/WFQCUd0y2QrWxYnq7tfSuKBiqTjRPWrRgB46WD/kiwHwF8T23z78H6Q6kGCuuHcPB+KULHRdxvVGQA==", - "dev": true, - "requires": { - "@jridgewell/source-map": "^0.3.2", - "acorn": "^8.5.0", - "commander": "^2.20.0", - "source-map-support": "~0.5.20" - }, + ], + "license": "MIT", "dependencies": { - "commander": { - "version": "2.20.3", - "resolved": "https://registry.npmjs.org/commander/-/commander-2.20.3.tgz", - "integrity": "sha512-GpVkmM8vF2vQUkj2LvZmD35JxeJOLCwJ9cUkugyk2nuhbv3+mJvpLYYt+0+USMxE+oj+ey/lJEnhZw75x/OMcQ==", - "dev": true - } + "escalade": "^3.2.0", + "picocolors": "^1.1.1" + }, + "bin": { + "update-browserslist-db": "cli.js" + }, + "peerDependencies": { + "browserslist": ">= 4.21.0" } }, - "text-table": { - "version": "0.2.0", - "resolved": "https://registry.npmjs.org/text-table/-/text-table-0.2.0.tgz", - "integrity": "sha1-f17oI66AUgfACvLfSoTsP8+lcLQ=", - "dev": true - }, - "textextensions": { - "version": "2.4.0", - "resolved": "https://registry.npmjs.org/textextensions/-/textextensions-2.4.0.tgz", - "integrity": "sha512-qftQXnX1DzpSV8EddtHIT0eDDEiBF8ywhFYR2lI9xrGtxqKN+CvLXhACeCIGbCpQfxxERbrkZEFb8cZcDKbVZA==", - "dev": true - }, - "through2": { - "version": "2.0.5", - "resolved": "https://registry.npmjs.org/through2/-/through2-2.0.5.tgz", - "integrity": "sha512-/mrRod8xqpA+IHSLyGCQ2s8SPHiCDEeQJSep1jqLYeEUClOFG2Qsh+4FU6G9VeqpZnGW/Su8LQGc4YKni5rYSQ==", + "node_modules/uri-js": { + "version": "4.4.1", + "resolved": "https://registry.npmjs.org/uri-js/-/uri-js-4.4.1.tgz", + "integrity": "sha512-7rKUyy33Q1yc98pQ1DAmLtwX109F7TIfWlW1Ydo8Wl1ii1SeHieeh0HHfPeL2fMXK6z0s8ecKs9frCuLJvndBg==", "dev": true, - "requires": { - "readable-stream": "~2.3.6", - "xtend": "~4.0.1" + "license": "BSD-2-Clause", + "dependencies": { + "punycode": "^2.1.0" } }, - "through2-filter": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/through2-filter/-/through2-filter-3.0.0.tgz", - "integrity": "sha512-jaRjI2WxN3W1V8/FMZ9HKIBXixtiqs3SQSX4/YGIiP3gL6djW48VoZq9tDqeCWs3MT8YY5wb/zli8VW8snY1CA==", + "node_modules/url-parse": { + "version": "1.5.10", + "resolved": "https://registry.npmjs.org/url-parse/-/url-parse-1.5.10.tgz", + "integrity": "sha512-WypcfiRhfeUP9vvF0j6rw0J3hrWrw6iZv3+22h6iRMJ/8z1Tj6XfLP4DsUix5MhMPnXpiHDoKyoZ/bdCkwBCiQ==", "dev": true, - "requires": { - "through2": "~2.0.0", - "xtend": "~4.0.0" + "license": "MIT", + "dependencies": { + "querystringify": "^2.1.1", + "requires-port": "^1.0.0" } }, - "time-stamp": { - "version": "1.1.0", - "resolved": "https://registry.npmjs.org/time-stamp/-/time-stamp-1.1.0.tgz", - "integrity": "sha1-dkpaEa9QVhkhsTPztE5hhofg9cM=", - "dev": true - }, - "tmp": { - "version": "0.1.0", - "resolved": "https://registry.npmjs.org/tmp/-/tmp-0.1.0.tgz", - "integrity": "sha512-J7Z2K08jbGcdA1kkQpJSqLF6T0tdQqpR2pnSUXsIchbPdTI9v3e85cLW0d6WDhwuAleOV71j2xWs8qMPfK7nKw==", + "node_modules/util-deprecate": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/util-deprecate/-/util-deprecate-1.0.2.tgz", + "integrity": "sha512-EPD5q1uXyFxJpCrLnCc1nHnq3gOa6DZBocAIiI2TaSCA7VCJ1UJDMagCzIkXNsUYfD1daK//LTEQ8xiIbrHtcw==", "dev": true, - "requires": { - "rimraf": "^2.6.3" - } + "license": "MIT" }, - "to-absolute-glob": { - "version": "2.0.2", - "resolved": "https://registry.npmjs.org/to-absolute-glob/-/to-absolute-glob-2.0.2.tgz", - "integrity": "sha1-GGX0PZ50sIItufFFt4z/fQ98hJs=", + "node_modules/validate-npm-package-license": { + "version": "3.0.4", + "resolved": "https://registry.npmjs.org/validate-npm-package-license/-/validate-npm-package-license-3.0.4.tgz", + "integrity": "sha512-DpKm2Ui/xN7/HQKCtpZxoRWBhZ9Z0kqtygG8XCgNQ8ZlDnxuQmWhj566j8fN4Cu3/JmbhsDo7fcAJq4s9h27Ew==", "dev": true, - "requires": { - "is-absolute": "^1.0.0", - "is-negated-glob": "^1.0.0" + "license": "Apache-2.0", + "dependencies": { + "spdx-correct": "^3.0.0", + "spdx-expression-parse": "^3.0.0" } }, - "to-object-path": { - "version": "0.3.0", - "resolved": "https://registry.npmjs.org/to-object-path/-/to-object-path-0.3.0.tgz", - "integrity": "sha1-KXWIt7Dn4KwI4E5nL4XB9JmeF68=", + "node_modules/validate-npm-package-license/node_modules/spdx-expression-parse": { + "version": "3.0.1", + "resolved": "https://registry.npmjs.org/spdx-expression-parse/-/spdx-expression-parse-3.0.1.tgz", + "integrity": "sha512-cbqHunsQWnJNE6KhVSMsMeH5H/L9EpymbzqTQ3uLwNCLZ1Q481oWaofqH7nO6V07xlXwY6PhQdQ2IedWx/ZK4Q==", "dev": true, - "requires": { - "kind-of": "^3.0.2" - }, + "license": "MIT", "dependencies": { - "kind-of": { - "version": "3.2.2", - "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-3.2.2.tgz", - "integrity": "sha1-MeohpzS6ubuw8yRm2JOupR5KPGQ=", - "dev": true, - "requires": { - "is-buffer": "^1.1.5" - } - } + "spdx-exceptions": "^2.1.0", + "spdx-license-ids": "^3.0.0" } }, - "to-regex": { - "version": "3.0.2", - "resolved": "https://registry.npmjs.org/to-regex/-/to-regex-3.0.2.tgz", - "integrity": "sha512-FWtleNAtZ/Ki2qtqej2CXTOayOH9bHDQF+Q48VpWyDXjbYxA4Yz8iDB31zXOBUlOHHKidDbqGVrTUvQMPmBGBw==", + "node_modules/varstream": { + "version": "0.3.2", + "resolved": "https://registry.npmjs.org/varstream/-/varstream-0.3.2.tgz", + "integrity": "sha512-OpR3Usr9dGZZbDttlTxdviGdxiURI0prX68+DuaN/JfIDbK9ZOmREKM6PgmelsejMnhgjXmEEEgf+E4NbsSqMg==", "dev": true, - "requires": { - "define-property": "^2.0.2", - "extend-shallow": "^3.0.2", - "regex-not": "^1.0.2", - "safe-regex": "^1.1.0" + "dependencies": { + "readable-stream": "^1.0.33" + }, + "bin": { + "json2varstream": "cli/json2varstream.js", + "varstream2json": "cli/varstream2json.js" + }, + "engines": { + "node": ">=0.10.*" } }, - "to-regex-range": { - "version": "2.1.1", - "resolved": "https://registry.npmjs.org/to-regex-range/-/to-regex-range-2.1.1.tgz", - "integrity": "sha1-fIDBe53+vlmeJzZ+DU3VWQFB2zg=", + "node_modules/varstream/node_modules/isarray": { + "version": "0.0.1", + "resolved": "https://registry.npmjs.org/isarray/-/isarray-0.0.1.tgz", + "integrity": "sha512-D2S+3GLxWH+uhrNEcoh/fnmYeP8E8/zHl644d/jdA0g2uyXvy3sb0qxotE+ne0LtccHknQzWwZEzhak7oJ0COQ==", "dev": true, - "requires": { - "is-number": "^3.0.0", - "repeat-string": "^1.6.1" - } + "license": "MIT" }, - "to-through": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/to-through/-/to-through-2.0.0.tgz", - "integrity": "sha1-/JKtq6ByZHvAtn1rA2ZKoZUJOvY=", + "node_modules/varstream/node_modules/readable-stream": { + "version": "1.1.14", + "resolved": "https://registry.npmjs.org/readable-stream/-/readable-stream-1.1.14.tgz", + "integrity": "sha512-+MeVjFf4L44XUkhM1eYbD8fyEsxcV81pqMSR5gblfcLCHfZvbrqy4/qYHE+/R5HoBUT11WV5O08Cr1n3YXkWVQ==", "dev": true, - "requires": { - "through2": "^2.0.3" + "license": "MIT", + "dependencies": { + "core-util-is": "~1.0.0", + "inherits": "~2.0.1", + "isarray": "0.0.1", + "string_decoder": "~0.10.x" } }, - "tough-cookie": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/tough-cookie/-/tough-cookie-4.0.0.tgz", - "integrity": "sha512-tHdtEpQCMrc1YLrMaqXXcj6AxhYi/xgit6mZu1+EDWUn+qhUf8wMQoFIy9NXuq23zAwtcB0t/MjACGR18pcRbg==", + "node_modules/varstream/node_modules/string_decoder": { + "version": "0.10.31", + "resolved": "https://registry.npmjs.org/string_decoder/-/string_decoder-0.10.31.tgz", + "integrity": "sha512-ev2QzSzWPYmy9GuqfIVildA4OdcGLeFZQrq5ys6RtiuF+RQQiZWr8TZNyAcuVXyQRYfEO+MsoB/1BuQVhOJuoQ==", "dev": true, - "requires": { - "psl": "^1.1.33", - "punycode": "^2.1.1", - "universalify": "^0.1.2" - } + "license": "MIT" }, - "tr46": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/tr46/-/tr46-1.0.1.tgz", - "integrity": "sha1-qLE/1r/SSJUZZ0zN5VujaTtwbQk=", + "node_modules/w3c-xmlserializer": { + "version": "5.0.0", + "resolved": "https://registry.npmjs.org/w3c-xmlserializer/-/w3c-xmlserializer-5.0.0.tgz", + "integrity": "sha512-o8qghlI8NZHU1lLPrpi2+Uq7abh4GGPpYANlalzWxyWteJOCsr/P+oPBA49TOLu5FTZO4d3F9MnWJfiMo4BkmA==", "dev": true, - "requires": { - "punycode": "^2.1.0" + "license": "MIT", + "dependencies": { + "xml-name-validator": "^5.0.0" + }, + "engines": { + "node": ">=18" } }, - "transformation-matrix-js": { - "version": "2.7.6", - "resolved": "https://registry.npmjs.org/transformation-matrix-js/-/transformation-matrix-js-2.7.6.tgz", - "integrity": "sha512-1CxDIZmCQ3vA0GGnkdMQqxUXVm3xXAFmglPYRS1hr37LzSg22TC7QAWOT38OmdUvMEs/rqcnkFoAsqvzdiluDg==", - "dev": true - }, - "trim-newlines": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/trim-newlines/-/trim-newlines-2.0.0.tgz", - "integrity": "sha1-tAPQuRvlDDMd/EuC7s6yLD3hbSA=", - "dev": true - }, - "ttf2eot": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/ttf2eot/-/ttf2eot-2.0.0.tgz", - "integrity": "sha1-jmM3pYWr0WCKDISVirSDzmn2ZUs=", + "node_modules/walker": { + "version": "1.0.8", + "resolved": "https://registry.npmjs.org/walker/-/walker-1.0.8.tgz", + "integrity": "sha512-ts/8E8l5b7kY0vlWLewOkDXMmPdLcVV4GmOQLyxuSswIJsweeFZtAsMF7k1Nszz+TYBQrlYRmzOnr398y1JemQ==", "dev": true, - "requires": { - "argparse": "^1.0.6", - "microbuffer": "^1.0.0" + "license": "Apache-2.0", + "dependencies": { + "makeerror": "1.0.12" } }, - "ttf2woff": { - "version": "2.0.2", - "resolved": "https://registry.npmjs.org/ttf2woff/-/ttf2woff-2.0.2.tgz", - "integrity": "sha512-X68badwBjAy/+itU49scLjXUL094up+rHuYk+YAOTTBYSUMOmLZ7VyhZJuqQESj1gnyLAC2/5V8Euv+mExmyPA==", + "node_modules/wawoff2": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/wawoff2/-/wawoff2-2.0.1.tgz", + "integrity": "sha512-r0CEmvpH63r4T15ebFqeOjGqU4+EgTx4I510NtK35EMciSdcTxCw3Byy3JnBonz7iyIFZ0AbVo0bbFpEVuhCYA==", "dev": true, - "requires": { - "argparse": "^1.0.6", - "microbuffer": "^1.0.0", - "pako": "^1.0.0" + "license": "MIT", + "dependencies": { + "argparse": "^2.0.1" + }, + "bin": { + "woff2_compress.js": "bin/woff2_compress.js", + "woff2_decompress.js": "bin/woff2_decompress.js" } }, - "type": { - "version": "1.2.0", - "resolved": "https://registry.npmjs.org/type/-/type-1.2.0.tgz", - "integrity": "sha512-+5nt5AAniqsCnu2cEQQdpzCAh33kVx8n0VoFidKpB1dVVLAN/F+bgVOqOJqOnEnrhp222clB5p3vUlD+1QAnfg==", - "dev": true - }, - "type-check": { - "version": "0.3.2", - "resolved": "https://registry.npmjs.org/type-check/-/type-check-0.3.2.tgz", - "integrity": "sha1-WITKtRLPHTVeP7eE8wgEsrUg23I=", + "node_modules/webfont": { + "version": "11.2.26", + "resolved": "https://registry.npmjs.org/webfont/-/webfont-11.2.26.tgz", + "integrity": "sha512-ms9abzcJGMBj5yVTpNfAcyQB0SNzmi10aBlKLC7kAt1TQ5eZqieRhvhxN1BrXaizWV0nksp6vLqBfaJmBWmF7Q==", "dev": true, - "requires": { - "prelude-ls": "~1.1.2" + "license": "MIT", + "dependencies": { + "cosmiconfig": "^5.2.0", + "deepmerge": "^4.2.2", + "globby": "^11.0.0", + "meow": "^9.0.0", + "nunjucks": "^3.2.3", + "p-limit": "^3.1.0", + "parse-json": "^5.2.0", + "resolve-from": "^5.0.0", + "svg2ttf": "^6.0.2", + "svgicons2svgfont": "^10.0.3", + "ttf2eot": "^2.0.0", + "ttf2woff": "^2.0.2", + "wawoff2": "^2.0.0", + "xml2js": "^0.4.23" + }, + "bin": { + "webfont": "dist/cli.js" + }, + "engines": { + "node": ">= 12.0.0" } }, - "type-detect": { - "version": "4.0.8", - "resolved": "https://registry.npmjs.org/type-detect/-/type-detect-4.0.8.tgz", - "integrity": "sha512-0fr/mIH1dlO+x7TlcMy+bIDqKPsw/70tVyeHW787goQjhmqaZe10uwLujubK9q9Lg6Fiho1KUKDYz0Z7k7g5/g==", - "dev": true - }, - "type-fest": { - "version": "0.8.1", - "resolved": "https://registry.npmjs.org/type-fest/-/type-fest-0.8.1.tgz", - "integrity": "sha512-4dbzIzqvjtgiM5rw1k5rEHtBANKmdudhGyBEajN01fEyhaAIhsoKNy6y7+IN93IfpFtwY9iqi7kD+xwKhQsNJA==", - "dev": true - }, - "typedarray": { - "version": "0.0.6", - "resolved": "https://registry.npmjs.org/typedarray/-/typedarray-0.0.6.tgz", - "integrity": "sha1-hnrHTjhkGHsdPUfZlqeOxciDB3c=", - "dev": true - }, - "uc.micro": { - "version": "1.0.6", - "resolved": "https://registry.npmjs.org/uc.micro/-/uc.micro-1.0.6.tgz", - "integrity": "sha512-8Y75pvTYkLJW2hWQHXxoqRgV7qb9B+9vFEtidML+7koHUFapnVJAZ6cKs+Qjz5Aw3aZWHMC6u0wJE3At+nSGwA==", - "dev": true - }, - "unbox-primitive": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/unbox-primitive/-/unbox-primitive-1.0.1.tgz", - "integrity": "sha512-tZU/3NqK3dA5gpE1KtyiJUrEB0lxnGkMFHptJ7q6ewdZ8s12QrODwNbhIJStmJkd1QDXa1NRA8aF2A1zk/Ypyw==", + "node_modules/webfont/node_modules/p-limit": { + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/p-limit/-/p-limit-3.1.0.tgz", + "integrity": "sha512-TYOanM3wGwNGsZN2cVTYPArw454xnXj5qmWF1bEoAc4+cU/ol7GVh7odevjp1FNHduHc3KZMcFduxU5Xc6uJRQ==", "dev": true, - "requires": { - "function-bind": "^1.1.1", - "has-bigints": "^1.0.1", - "has-symbols": "^1.0.2", - "which-boxed-primitive": "^1.0.2" - }, + "license": "MIT", "dependencies": { - "has-symbols": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/has-symbols/-/has-symbols-1.0.2.tgz", - "integrity": "sha512-chXa79rL/UC2KlX17jo3vRGz0azaWEx5tGqZg5pO3NUyEJVB17dMruQlzCCOfUvElghKcm5194+BCRvi2Rv/Gw==", - "dev": true - } + "yocto-queue": "^0.1.0" + }, + "engines": { + "node": ">=10" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" } }, - "unc-path-regex": { - "version": "0.1.2", - "resolved": "https://registry.npmjs.org/unc-path-regex/-/unc-path-regex-0.1.2.tgz", - "integrity": "sha1-5z3T17DXxe2G+6xrCufYxqadUPo=", - "dev": true - }, - "underscore": { - "version": "1.13.2", - "resolved": "https://registry.npmjs.org/underscore/-/underscore-1.13.2.tgz", - "integrity": "sha512-ekY1NhRzq0B08g4bGuX4wd2jZx5GnKz6mKSqFL4nqBlfyMGiG10gDFhDTMEfYmDL6Jy0FUIZp7wiRB+0BP7J2g==", - "dev": true - }, - "undertaker": { - "version": "1.2.1", - "resolved": "https://registry.npmjs.org/undertaker/-/undertaker-1.2.1.tgz", - "integrity": "sha512-71WxIzDkgYk9ZS+spIB8iZXchFhAdEo2YU8xYqBYJ39DIUIqziK78ftm26eecoIY49X0J2MLhG4hr18Yp6/CMA==", - "dev": true, - "requires": { - "arr-flatten": "^1.0.1", - "arr-map": "^2.0.0", - "bach": "^1.0.0", - "collection-map": "^1.0.0", - "es6-weak-map": "^2.0.1", - "last-run": "^1.1.0", - "object.defaults": "^1.0.0", - "object.reduce": "^1.0.0", - "undertaker-registry": "^1.0.0" - } - }, - "undertaker-registry": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/undertaker-registry/-/undertaker-registry-1.0.1.tgz", - "integrity": "sha1-XkvaMI5KiirlhPm5pDWaSZglzFA=", - "dev": true - }, - "union": { - "version": "0.5.0", - "resolved": "https://registry.npmjs.org/union/-/union-0.5.0.tgz", - "integrity": "sha512-N6uOhuW6zO95P3Mel2I2zMsbsanvvtgn6jVqJv4vbVcz/JN0OkL9suomjQGmWtxJQXOCqUJvquc1sMeNz/IwlA==", + "node_modules/webfont/node_modules/parse-json": { + "version": "5.2.0", + "resolved": "https://registry.npmjs.org/parse-json/-/parse-json-5.2.0.tgz", + "integrity": "sha512-ayCKvm/phCGxOkYRSCM82iDwct8/EonSEgCSxWxD7ve6jHggsFl4fZVQBPRNgQoKiuV/odhFrGzQXZwbifC8Rg==", "dev": true, - "requires": { - "qs": "^6.4.0" + "license": "MIT", + "dependencies": { + "@babel/code-frame": "^7.0.0", + "error-ex": "^1.3.1", + "json-parse-even-better-errors": "^2.3.0", + "lines-and-columns": "^1.1.6" + }, + "engines": { + "node": ">=8" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" } }, - "union-value": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/union-value/-/union-value-1.0.1.tgz", - "integrity": "sha512-tJfXmxMeWYnczCVs7XAEvIV7ieppALdyepWMkHkwciRpZraG/xwT+s2JN8+pr1+8jCRf80FFzvr+MpQeeoF4Xg==", + "node_modules/webfont/node_modules/resolve-from": { + "version": "5.0.0", + "resolved": "https://registry.npmjs.org/resolve-from/-/resolve-from-5.0.0.tgz", + "integrity": "sha512-qYg9KP24dD5qka9J47d0aVky0N+b4fTU89LN9iDnjB5waksiC49rvMB0PrUJQGoTmH50XPiqOvAjDfaijGxYZw==", "dev": true, - "requires": { - "arr-union": "^3.1.0", - "get-value": "^2.0.6", - "is-extendable": "^0.1.1", - "set-value": "^2.0.1" + "license": "MIT", + "engines": { + "node": ">=8" } }, - "unique-stream": { - "version": "2.3.1", - "resolved": "https://registry.npmjs.org/unique-stream/-/unique-stream-2.3.1.tgz", - "integrity": "sha512-2nY4TnBE70yoxHkDli7DMazpWiP7xMdCYqU2nBRO0UB+ZpEkGsSija7MvmvnZFUeC+mrgiUfcHSr3LmRFIg4+A==", + "node_modules/webidl-conversions": { + "version": "7.0.0", + "resolved": "https://registry.npmjs.org/webidl-conversions/-/webidl-conversions-7.0.0.tgz", + "integrity": "sha512-VwddBukDzu71offAQR975unBIGqfKZpM+8ZX6ySk8nYhVoo5CYaZyzt3YBvYtRtO+aoGlqxPg/B87NGVZ/fu6g==", "dev": true, - "requires": { - "json-stable-stringify-without-jsonify": "^1.0.1", - "through2-filter": "^3.0.0" + "license": "BSD-2-Clause", + "engines": { + "node": ">=12" } }, - "universal-url": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/universal-url/-/universal-url-2.0.0.tgz", - "integrity": "sha512-3DLtXdm/G1LQMCnPj+Aw7uDoleQttNHp2g5FnNQKR6cP6taNWS1b/Ehjjx4PVyvejKi3TJyu8iBraKM4q3JQPg==", + "node_modules/whatwg-encoding": { + "version": "3.1.1", + "resolved": "https://registry.npmjs.org/whatwg-encoding/-/whatwg-encoding-3.1.1.tgz", + "integrity": "sha512-6qN4hJdMwfYBtE3YBTTHhoeuUrDBPZmbQaxWAqSALV/MeEnR5z1xd8UKud2RAkFoPkmB+hli1TZSnyi84xz1vQ==", "dev": true, - "requires": { - "hasurl": "^1.0.0", - "whatwg-url": "^7.0.0" + "license": "MIT", + "dependencies": { + "iconv-lite": "0.6.3" + }, + "engines": { + "node": ">=18" } }, - "universal-user-agent": { - "version": "4.0.1", - "resolved": "https://registry.npmjs.org/universal-user-agent/-/universal-user-agent-4.0.1.tgz", - "integrity": "sha512-LnST3ebHwVL2aNe4mejI9IQh2HfZ1RLo8Io2HugSif8ekzD1TlWpHpColOB/eh8JHMLkGH3Akqf040I+4ylNxg==", + "node_modules/whatwg-mimetype": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/whatwg-mimetype/-/whatwg-mimetype-4.0.0.tgz", + "integrity": "sha512-QaKxh0eNIi2mE9p2vEdzfagOKHCcj1pJ56EEHGQOVxp8r9/iszLUUV7v89x9O1p/T+NlTM5W7jW6+cz4Fq1YVg==", "dev": true, - "requires": { - "os-name": "^3.1.0" - } - }, - "universalify": { - "version": "0.1.2", - "resolved": "https://registry.npmjs.org/universalify/-/universalify-0.1.2.tgz", - "integrity": "sha512-rBJeI5CXAlmy1pV+617WB9J63U6XcazHHF2f2dbJix4XzpUF0RS3Zbj0FGIOCAva5P/d/GBOYaACQ1w+0azUkg==", - "dev": true - }, - "unset-value": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/unset-value/-/unset-value-1.0.0.tgz", - "integrity": "sha1-g3aHP30jNRef+x5vw6jtDfyKtVk=", - "dev": true, - "requires": { - "has-value": "^0.3.1", - "isobject": "^3.0.0" - }, - "dependencies": { - "has-value": { - "version": "0.3.1", - "resolved": "https://registry.npmjs.org/has-value/-/has-value-0.3.1.tgz", - "integrity": "sha1-ex9YutpiyoJ+wKIHgCVlSEWZXh8=", - "dev": true, - "requires": { - "get-value": "^2.0.3", - "has-values": "^0.1.4", - "isobject": "^2.0.0" - }, - "dependencies": { - "isobject": { - "version": "2.1.0", - "resolved": "https://registry.npmjs.org/isobject/-/isobject-2.1.0.tgz", - "integrity": "sha1-8GVWEJaj8dou9GJy+BXIQNh+DIk=", - "dev": true, - "requires": { - "isarray": "1.0.0" - } - } - } - }, - "has-values": { - "version": "0.1.4", - "resolved": "https://registry.npmjs.org/has-values/-/has-values-0.1.4.tgz", - "integrity": "sha1-bWHeldkd/Km5oCCJrThL/49it3E=", - "dev": true - } + "license": "MIT", + "engines": { + "node": ">=18" } }, - "upath": { - "version": "1.2.0", - "resolved": "https://registry.npmjs.org/upath/-/upath-1.2.0.tgz", - "integrity": "sha512-aZwGpamFO61g3OlfT7OQCHqhGnW43ieH9WZeP7QxN/G/jS4jfqUkZxoryvJgVPEcrl5NL/ggHsSmLMHuH64Lhg==", - "dev": true - }, - "uri-js": { - "version": "4.2.2", - "resolved": "https://registry.npmjs.org/uri-js/-/uri-js-4.2.2.tgz", - "integrity": "sha512-KY9Frmirql91X2Qgjry0Wd4Y+YTdrdZheS8TFwvkbLWf/G5KNJDCh6pKL5OZctEW4+0Baa5idK2ZQuELRwPznQ==", + "node_modules/whatwg-url": { + "version": "14.2.0", + "resolved": "https://registry.npmjs.org/whatwg-url/-/whatwg-url-14.2.0.tgz", + "integrity": "sha512-De72GdQZzNTUBBChsXueQUnPKDkg/5A5zp7pFDuQAj5UFoENpiACU0wlCvzpAGnTkj++ihpKwKyYewn/XNUbKw==", "dev": true, - "requires": { - "punycode": "^2.1.0" + "license": "MIT", + "dependencies": { + "tr46": "^5.1.0", + "webidl-conversions": "^7.0.0" + }, + "engines": { + "node": ">=18" } }, - "urix": { - "version": "0.1.0", - "resolved": "https://registry.npmjs.org/urix/-/urix-0.1.0.tgz", - "integrity": "sha1-2pN/emLiH+wf0Y1Js1wpNQZ6bHI=", - "dev": true - }, - "url-join": { - "version": "2.0.5", - "resolved": "https://registry.npmjs.org/url-join/-/url-join-2.0.5.tgz", - "integrity": "sha1-WvIvGMBSoACkjXuCxenC4v7tpyg=", - "dev": true - }, - "use": { - "version": "3.1.1", - "resolved": "https://registry.npmjs.org/use/-/use-3.1.1.tgz", - "integrity": "sha512-cwESVXlO3url9YWlFW/TA9cshCEhtu7IKJ/p5soJ/gGpj7vbvFrAY/eIioQ6Dw23KjZhYgiIo8HOs1nQ2vr/oQ==", - "dev": true - }, - "util-deprecate": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/util-deprecate/-/util-deprecate-1.0.2.tgz", - "integrity": "sha1-RQ1Nyfpw3nMnYvvS1KKJgUGaDM8=", - "dev": true - }, - "v8-compile-cache": { - "version": "2.3.0", - "resolved": "https://registry.npmjs.org/v8-compile-cache/-/v8-compile-cache-2.3.0.tgz", - "integrity": "sha512-l8lCEmLcLYZh4nbunNZvQCJc5pv7+RCwa8q/LdUx8u7lsWvPDKmpodJAJNwkAhJC//dFY48KuIEmjtd4RViDrA==", - "dev": true - }, - "v8flags": { - "version": "3.1.3", - "resolved": "https://registry.npmjs.org/v8flags/-/v8flags-3.1.3.tgz", - "integrity": "sha512-amh9CCg3ZxkzQ48Mhcb8iX7xpAfYJgePHxWMQCBWECpOSqJUXgY26ncA61UTV0BkPqfhcy6mzwCIoP4ygxpW8w==", + "node_modules/which": { + "version": "2.0.2", + "resolved": "https://registry.npmjs.org/which/-/which-2.0.2.tgz", + "integrity": "sha512-BLI3Tl1TW3Pvl70l3yq3Y64i+awpwXqsGBYWkkqMtnbXgrMD+yj7rhW0kuEDxzJaYXGjEW5ogapKNMEKNMjibA==", "dev": true, - "requires": { - "homedir-polyfill": "^1.0.1" + "license": "ISC", + "dependencies": { + "isexe": "^2.0.0" + }, + "bin": { + "node-which": "bin/node-which" + }, + "engines": { + "node": ">= 8" } }, - "validate-npm-package-license": { - "version": "3.0.4", - "resolved": "https://registry.npmjs.org/validate-npm-package-license/-/validate-npm-package-license-3.0.4.tgz", - "integrity": "sha512-DpKm2Ui/xN7/HQKCtpZxoRWBhZ9Z0kqtygG8XCgNQ8ZlDnxuQmWhj566j8fN4Cu3/JmbhsDo7fcAJq4s9h27Ew==", + "node_modules/which-boxed-primitive": { + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/which-boxed-primitive/-/which-boxed-primitive-1.1.1.tgz", + "integrity": "sha512-TbX3mj8n0odCBFVlY8AxkqcHASw3L60jIuF8jFP78az3C2YhmGvqbHBpAjTRH2/xqYunrJ9g1jSyjCjpoWzIAA==", "dev": true, - "requires": { - "spdx-correct": "^3.0.0", - "spdx-expression-parse": "^3.0.0" + "license": "MIT", + "dependencies": { + "is-bigint": "^1.1.0", + "is-boolean-object": "^1.2.1", + "is-number-object": "^1.1.1", + "is-string": "^1.1.1", + "is-symbol": "^1.1.1" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" } }, - "value-or-function": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/value-or-function/-/value-or-function-3.0.0.tgz", - "integrity": "sha1-HCQ6ULWVwb5Up1S/7OhWO5/42BM=", - "dev": true - }, - "varstream": { - "version": "0.3.2", - "resolved": "https://registry.npmjs.org/varstream/-/varstream-0.3.2.tgz", - "integrity": "sha1-GKxklHZfP/GjWtmkvgU77BiKXeE=", + "node_modules/which-builtin-type": { + "version": "1.2.1", + "resolved": "https://registry.npmjs.org/which-builtin-type/-/which-builtin-type-1.2.1.tgz", + "integrity": "sha512-6iBczoX+kDQ7a3+YJBnh3T+KZRxM/iYNPXicqk66/Qfm1b93iu+yOImkg0zHbj5LNOcNv1TEADiZ0xa34B4q6Q==", "dev": true, - "requires": { - "readable-stream": "^1.0.33" - }, + "license": "MIT", "dependencies": { - "isarray": { - "version": "0.0.1", - "resolved": "https://registry.npmjs.org/isarray/-/isarray-0.0.1.tgz", - "integrity": "sha1-ihis/Kmo9Bd+Cav8YDiTmwXR7t8=", - "dev": true - }, - "readable-stream": { - "version": "1.1.14", - "resolved": "https://registry.npmjs.org/readable-stream/-/readable-stream-1.1.14.tgz", - "integrity": "sha1-fPTFTvZI44EwhMY23SB54WbAgdk=", - "dev": true, - "requires": { - "core-util-is": "~1.0.0", - "inherits": "~2.0.1", - "isarray": "0.0.1", - "string_decoder": "~0.10.x" - } - }, - "string_decoder": { - "version": "0.10.31", - "resolved": "https://registry.npmjs.org/string_decoder/-/string_decoder-0.10.31.tgz", - "integrity": "sha1-YuIDvEF2bGwoyfyEMB2rHFMQ+pQ=", - "dev": true - } + "call-bound": "^1.0.2", + "function.prototype.name": "^1.1.6", + "has-tostringtag": "^1.0.2", + "is-async-function": "^2.0.0", + "is-date-object": "^1.1.0", + "is-finalizationregistry": "^1.1.0", + "is-generator-function": "^1.0.10", + "is-regex": "^1.2.1", + "is-weakref": "^1.0.2", + "isarray": "^2.0.5", + "which-boxed-primitive": "^1.1.0", + "which-collection": "^1.0.2", + "which-typed-array": "^1.1.16" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" } }, - "vinyl": { - "version": "2.2.0", - "resolved": "https://registry.npmjs.org/vinyl/-/vinyl-2.2.0.tgz", - "integrity": "sha512-MBH+yP0kC/GQ5GwBqrTPTzEfiiLjta7hTtvQtbxBgTeSXsmKQRQecjibMbxIXzVT3Y9KJK+drOz1/k+vsu8Nkg==", + "node_modules/which-collection": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/which-collection/-/which-collection-1.0.2.tgz", + "integrity": "sha512-K4jVyjnBdgvc86Y6BkaLZEN933SwYOuBFkdmBu9ZfkcAbdVbpITnDmjvZ/aQjRXQrv5EPkTnD1s39GiiqbngCw==", "dev": true, - "requires": { - "clone": "^2.1.1", - "clone-buffer": "^1.0.0", - "clone-stats": "^1.0.0", - "cloneable-readable": "^1.0.0", - "remove-trailing-separator": "^1.0.1", - "replace-ext": "^1.0.0" + "license": "MIT", + "dependencies": { + "is-map": "^2.0.3", + "is-set": "^2.0.3", + "is-weakmap": "^2.0.2", + "is-weakset": "^2.0.3" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" } }, - "vinyl-fs": { - "version": "3.0.3", - "resolved": "https://registry.npmjs.org/vinyl-fs/-/vinyl-fs-3.0.3.tgz", - "integrity": "sha512-vIu34EkyNyJxmP0jscNzWBSygh7VWhqun6RmqVfXePrOwi9lhvRs//dOaGOTRUQr4tx7/zd26Tk5WeSVZitgng==", - "dev": true, - "requires": { - "fs-mkdirp-stream": "^1.0.0", - "glob-stream": "^6.1.0", - "graceful-fs": "^4.0.0", - "is-valid-glob": "^1.0.0", - "lazystream": "^1.0.0", - "lead": "^1.0.0", - "object.assign": "^4.0.4", - "pumpify": "^1.3.5", - "readable-stream": "^2.3.3", - "remove-bom-buffer": "^3.0.0", - "remove-bom-stream": "^1.2.0", - "resolve-options": "^1.1.0", - "through2": "^2.0.0", - "to-through": "^2.0.0", - "value-or-function": "^3.0.0", - "vinyl": "^2.0.0", - "vinyl-sourcemap": "^1.1.0" - } - }, - "vinyl-sourcemap": { - "version": "1.1.0", - "resolved": "https://registry.npmjs.org/vinyl-sourcemap/-/vinyl-sourcemap-1.1.0.tgz", - "integrity": "sha1-kqgAWTo4cDqM2xHYswCtS+Y7PhY=", + "node_modules/which-typed-array": { + "version": "1.1.19", + "resolved": "https://registry.npmjs.org/which-typed-array/-/which-typed-array-1.1.19.tgz", + "integrity": "sha512-rEvr90Bck4WZt9HHFC4DJMsjvu7x+r6bImz0/BrbWb7A2djJ8hnZMrWnHo9F8ssv0OMErasDhftrfROTyqSDrw==", "dev": true, - "requires": { - "append-buffer": "^1.0.2", - "convert-source-map": "^1.5.0", - "graceful-fs": "^4.1.6", - "normalize-path": "^2.1.1", - "now-and-later": "^2.0.0", - "remove-bom-buffer": "^3.0.0", - "vinyl": "^2.0.0" + "license": "MIT", + "dependencies": { + "available-typed-arrays": "^1.0.7", + "call-bind": "^1.0.8", + "call-bound": "^1.0.4", + "for-each": "^0.3.5", + "get-proto": "^1.0.1", + "gopd": "^1.2.0", + "has-tostringtag": "^1.0.2" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" } }, - "vinyl-sourcemaps-apply": { - "version": "0.2.1", - "resolved": "https://registry.npmjs.org/vinyl-sourcemaps-apply/-/vinyl-sourcemaps-apply-0.2.1.tgz", - "integrity": "sha1-q2VJ1h0XLCsbh75cUI0jnI74dwU=", + "node_modules/word-wrap": { + "version": "1.2.5", + "resolved": "https://registry.npmjs.org/word-wrap/-/word-wrap-1.2.5.tgz", + "integrity": "sha512-BN22B5eaMMI9UMtjrGd5g5eCYPpCPDUy0FJXbYsaT5zYxjFOckS53SQDE3pWkVoWpHXVb3BrYcEN4Twa55B5cA==", "dev": true, - "requires": { - "source-map": "^0.5.1" + "license": "MIT", + "engines": { + "node": ">=0.10.0" } }, - "w3c-hr-time": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/w3c-hr-time/-/w3c-hr-time-1.0.2.tgz", - "integrity": "sha512-z8P5DvDNjKDoFIHK7q8r8lackT6l+jo/Ye3HOle7l9nICP9lf1Ci25fy9vHd0JOWewkIFzXIEig3TdKT7JQ5fQ==", + "node_modules/workerpool": { + "version": "6.5.1", + "resolved": "https://registry.npmjs.org/workerpool/-/workerpool-6.5.1.tgz", + "integrity": "sha512-Fs4dNYcsdpYSAfVxhnl1L5zTksjvOJxtC5hzMNl+1t9B8hTJTdKDyZ5ju7ztgPy+ft9tBFXoOlDNiOT9WUXZlA==", "dev": true, - "requires": { - "browser-process-hrtime": "^1.0.0" - } + "license": "Apache-2.0" }, - "w3c-xmlserializer": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/w3c-xmlserializer/-/w3c-xmlserializer-2.0.0.tgz", - "integrity": "sha512-4tzD0mF8iSiMiNs30BiLO3EpfGLZUT2MSX/G+o7ZywDzliWQ3OPtTZ0PTC3B3ca1UAf4cJMHB+2Bf56EriJuRA==", + "node_modules/wrap-ansi": { + "version": "7.0.0", + "resolved": "https://registry.npmjs.org/wrap-ansi/-/wrap-ansi-7.0.0.tgz", + "integrity": "sha512-YVGIj2kamLSTxw6NsZjoBxfSwsn0ycdesmc4p+Q21c5zPuZ1pl+NfxVdxPtdHvmNVOQ6XSYG4AUtyt/Fi7D16Q==", "dev": true, - "requires": { - "xml-name-validator": "^3.0.0" + "license": "MIT", + "dependencies": { + "ansi-styles": "^4.0.0", + "string-width": "^4.1.0", + "strip-ansi": "^6.0.0" + }, + "engines": { + "node": ">=10" + }, + "funding": { + "url": "https://github.com/chalk/wrap-ansi?sponsor=1" } }, - "wawoff2": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/wawoff2/-/wawoff2-1.0.2.tgz", - "integrity": "sha512-qxuTwf5tAP/XojrRc6cmR0hGvqgD3XUxv2fzfzURKPDfE7AeHmtRuankVxdJ4DRdSKXaE5QlyJT49yBis2vb6Q==", + "node_modules/wrap-ansi/node_modules/ansi-styles": { + "version": "4.3.0", + "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-4.3.0.tgz", + "integrity": "sha512-zbB9rCJAT1rbjiVDb2hqKFHNYLxgtk8NURxZ3IZwD3F6NtxbXZQCnnSi1Lkx+IDohdPlFp222wVALIheZJQSEg==", "dev": true, - "requires": { - "argparse": "^1.0.6" + "license": "MIT", + "dependencies": { + "color-convert": "^2.0.1" + }, + "engines": { + "node": ">=8" + }, + "funding": { + "url": "https://github.com/chalk/ansi-styles?sponsor=1" } }, - "web-streams-polyfill": { - "version": "3.2.0", - "resolved": "https://registry.npmjs.org/web-streams-polyfill/-/web-streams-polyfill-3.2.0.tgz", - "integrity": "sha512-EqPmREeOzttaLRm5HS7io98goBgZ7IVz79aDvqjD0kYXLtFZTc0T/U6wHTPKyIjb+MdN7DFIIX6hgdBEpWmfPA==", - "dev": true - }, - "webfont": { - "version": "9.0.0", - "resolved": "https://registry.npmjs.org/webfont/-/webfont-9.0.0.tgz", - "integrity": "sha512-Sn8KnTXroWAbBHYKUXCUq2rKwqbluupUd7krYqluT+kFGV4dvMuKXaL84Fm/Kfv+5rz2S81jNRvcyQ6ySBiC2Q==", + "node_modules/wrap-ansi/node_modules/color-convert": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-2.0.1.tgz", + "integrity": "sha512-RRECPsj7iu/xb5oKYcsFHSppFNnsj/52OVTRKb4zP5onXwVF3zVmmToNcOfGC+CRDpfK/U584fMg38ZHCaElKQ==", "dev": true, - "requires": { - "cosmiconfig": "^5.2.0", - "deepmerge": "^3.2.0", - "fs-extra": "^7.0.1", - "globby": "^9.2.0", - "meow": "^5.0.0", - "nunjucks": "^3.2.0", - "p-limit": "^2.2.0", - "resolve-from": "^5.0.0", - "svg2ttf": "^4.0.0", - "svgicons2svgfont": "^9.0.3", - "ttf2eot": "^2.0.0", - "ttf2woff": "^2.0.0", - "wawoff2": "^1.0.2", - "xml2js": "^0.4.17" - }, - "dependencies": { - "globby": { - "version": "9.2.0", - "resolved": "https://registry.npmjs.org/globby/-/globby-9.2.0.tgz", - "integrity": "sha512-ollPHROa5mcxDEkwg6bPt3QbEf4pDQSNtd6JPL1YvOvAo/7/0VAm9TccUeoTmarjPw4pfUthSCqcyfNB1I3ZSg==", - "dev": true, - "requires": { - "@types/glob": "^7.1.1", - "array-union": "^1.0.2", - "dir-glob": "^2.2.2", - "fast-glob": "^2.2.6", - "glob": "^7.1.3", - "ignore": "^4.0.3", - "pify": "^4.0.1", - "slash": "^2.0.0" - } - }, - "pify": { - "version": "4.0.1", - "resolved": "https://registry.npmjs.org/pify/-/pify-4.0.1.tgz", - "integrity": "sha512-uB80kBFb/tfd68bVleG9T5GGsGPjJrLAUpR5PZIrhBnIaRTQRjqdJSsIKkOP6OAIFbj7GOrcudc5pNjZ+geV2g==", - "dev": true - } + "license": "MIT", + "dependencies": { + "color-name": "~1.1.4" + }, + "engines": { + "node": ">=7.0.0" } }, - "webidl-conversions": { - "version": "4.0.2", - "resolved": "https://registry.npmjs.org/webidl-conversions/-/webidl-conversions-4.0.2.tgz", - "integrity": "sha512-YQ+BmxuTgd6UXZW3+ICGfyqRyHXVlD5GtQr5+qjiNW7bF0cqrzX500HVXPBOvgXb5YnzDd+h0zqyv61KUD7+Sg==", - "dev": true - }, - "whatwg-encoding": { - "version": "1.0.5", - "resolved": "https://registry.npmjs.org/whatwg-encoding/-/whatwg-encoding-1.0.5.tgz", - "integrity": "sha512-b5lim54JOPN9HtzvK9HFXvBma/rnfFeqsic0hSpjtDbVxR3dJKLc+KB4V6GgiGOvl7CY/KNh8rxSo9DKQrnUEw==", + "node_modules/wrap-ansi/node_modules/color-name": { + "version": "1.1.4", + "resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.4.tgz", + "integrity": "sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA==", "dev": true, - "requires": { - "iconv-lite": "0.4.24" - } - }, - "whatwg-mimetype": { - "version": "2.3.0", - "resolved": "https://registry.npmjs.org/whatwg-mimetype/-/whatwg-mimetype-2.3.0.tgz", - "integrity": "sha512-M4yMwr6mAnQz76TbJm914+gPpB/nCwvZbJU28cUD6dR004SAxDLOOSUaB1JDRqLtaOV/vi0IC5lEAGFgrjGv/g==", - "dev": true + "license": "MIT" }, - "whatwg-url": { - "version": "7.0.0", - "resolved": "https://registry.npmjs.org/whatwg-url/-/whatwg-url-7.0.0.tgz", - "integrity": "sha512-37GeVSIJ3kn1JgKyjiYNmSLP1yzbpb29jdmwBSgkD9h40/hyrR/OifpVUndji3tmwGgD8qpw7iQu3RSbCrBpsQ==", + "node_modules/wrappy": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/wrappy/-/wrappy-1.0.2.tgz", + "integrity": "sha512-l4Sp/DRseor9wL6EvV2+TuQn63dMkPjZ/sp9XkghTEbV9KlPS1xUsZ3u7/IQO4wxtcFB4bgpQPRcR3QCvezPcQ==", "dev": true, - "requires": { - "lodash.sortby": "^4.7.0", - "tr46": "^1.0.1", - "webidl-conversions": "^4.0.2" - } + "license": "ISC" }, - "which": { - "version": "1.3.1", - "resolved": "https://registry.npmjs.org/which/-/which-1.3.1.tgz", - "integrity": "sha512-HxJdYWq1MTIQbJ3nw0cqssHoTNU267KlrDuGZ1WYlxDStUtKUhOaJmh112/TZmHxxUfuJqPXSOm7tDyas0OSIQ==", + "node_modules/write-file-atomic": { + "version": "4.0.2", + "resolved": "https://registry.npmjs.org/write-file-atomic/-/write-file-atomic-4.0.2.tgz", + "integrity": "sha512-7KxauUdBmSdWnmpaGFg+ppNjKF8uNLry8LyzjauQDOVONfFLNKrKvQOxZ/VuTIcS/gge/YNahf5RIIQWTSarlg==", "dev": true, - "requires": { - "isexe": "^2.0.0" + "license": "ISC", + "dependencies": { + "imurmurhash": "^0.1.4", + "signal-exit": "^3.0.7" + }, + "engines": { + "node": "^12.13.0 || ^14.15.0 || >=16.0.0" } }, - "which-boxed-primitive": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/which-boxed-primitive/-/which-boxed-primitive-1.0.2.tgz", - "integrity": "sha512-bwZdv0AKLpplFY2KZRX6TvyuN7ojjr7lwkg6ml0roIy9YeuSr7JS372qlNW18UQYzgYK9ziGcerWqZOmEn9VNg==", - "dev": true, - "requires": { - "is-bigint": "^1.0.1", - "is-boolean-object": "^1.1.0", - "is-number-object": "^1.0.4", - "is-string": "^1.0.5", - "is-symbol": "^1.0.3" - }, - "dependencies": { - "has-symbols": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/has-symbols/-/has-symbols-1.0.2.tgz", - "integrity": "sha512-chXa79rL/UC2KlX17jo3vRGz0azaWEx5tGqZg5pO3NUyEJVB17dMruQlzCCOfUvElghKcm5194+BCRvi2Rv/Gw==", - "dev": true + "node_modules/ws": { + "version": "8.18.1", + "resolved": "https://registry.npmjs.org/ws/-/ws-8.18.1.tgz", + "integrity": "sha512-RKW2aJZMXeMxVpnZ6bck+RswznaxmzdULiBr6KY7XkTnW8uvt0iT9H5DkHUChXrc+uurzwa0rVI16n/Xzjdz1w==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=10.0.0" + }, + "peerDependencies": { + "bufferutil": "^4.0.1", + "utf-8-validate": ">=5.0.2" + }, + "peerDependenciesMeta": { + "bufferutil": { + "optional": true }, - "is-symbol": { - "version": "1.0.4", - "resolved": "https://registry.npmjs.org/is-symbol/-/is-symbol-1.0.4.tgz", - "integrity": "sha512-C/CPBqKWnvdcxqIARxyOh4v1UUEOCHpgDa0WYgpKDFMszcrPcffg5uhwSgPCLD2WWxmq6isisz87tzT01tuGhg==", - "dev": true, - "requires": { - "has-symbols": "^1.0.2" - } + "utf-8-validate": { + "optional": true } } }, - "which-module": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/which-module/-/which-module-1.0.0.tgz", - "integrity": "sha1-u6Y8qGGUiZT/MHc2CJ47lgJsKk8=", - "dev": true - }, - "windows-release": { - "version": "3.3.3", - "resolved": "https://registry.npmjs.org/windows-release/-/windows-release-3.3.3.tgz", - "integrity": "sha512-OSOGH1QYiW5yVor9TtmXKQvt2vjQqbYS+DqmsZw+r7xDwLXEeT3JGW0ZppFmHx4diyXmxt238KFR3N9jzevBRg==", + "node_modules/xcase": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/xcase/-/xcase-2.0.1.tgz", + "integrity": "sha512-UmFXIPU+9Eg3E9m/728Bii0lAIuoc+6nbrNUKaRPJOFp91ih44qqGlWtxMB6kXFrRD6po+86ksHM5XHCfk6iPw==", "dev": true, - "requires": { - "execa": "^1.0.0" - } - }, - "word-wrap": { - "version": "1.2.3", - "resolved": "https://registry.npmjs.org/word-wrap/-/word-wrap-1.2.3.tgz", - "integrity": "sha512-Hz/mrNwitNRh/HUAtM/VT/5VH+ygD6DV7mYKZAtHOrbs8U7lvPS6xf7EJKMF0uW1KJCl0H701g3ZGus+muE5vQ==", - "dev": true + "license": "MIT" }, - "workerpool": { - "version": "6.2.0", - "resolved": "https://registry.npmjs.org/workerpool/-/workerpool-6.2.0.tgz", - "integrity": "sha512-Rsk5qQHJ9eowMH28Jwhe8HEbmdYDX4lwoMWshiCXugjtHqMD9ZbiqSDLxcsfdqsETPzVUtX5s1Z5kStiIM6l4A==", - "dev": true - }, - "wrap-ansi": { - "version": "2.1.0", - "resolved": "https://registry.npmjs.org/wrap-ansi/-/wrap-ansi-2.1.0.tgz", - "integrity": "sha1-2Pw9KE3QV5T+hJc8rs3Rz4JP3YU=", + "node_modules/xml-name-validator": { + "version": "5.0.0", + "resolved": "https://registry.npmjs.org/xml-name-validator/-/xml-name-validator-5.0.0.tgz", + "integrity": "sha512-EvGK8EJ3DhaHfbRlETOWAS5pO9MZITeauHKJyb8wyajUfQUenkIg2MvLDTZ4T/TgIcm3HU0TFBgWWboAZ30UHg==", "dev": true, - "requires": { - "string-width": "^1.0.1", - "strip-ansi": "^3.0.1" + "license": "Apache-2.0", + "engines": { + "node": ">=18" } }, - "wrappy": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/wrappy/-/wrappy-1.0.2.tgz", - "integrity": "sha1-tSQ9jz7BqjXxNkYFvA0QNuMKtp8=", - "dev": true - }, - "ws": { - "version": "7.5.5", - "resolved": "https://registry.npmjs.org/ws/-/ws-7.5.5.tgz", - "integrity": "sha512-BAkMFcAzl8as1G/hArkxOxq3G7pjUqQ3gzYbLL0/5zNkph70e+lCoxBGnm6AW1+/aiNeV4fnKqZ8m4GZewmH2w==", - "dev": true, - "requires": {} - }, - "xml-name-validator": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/xml-name-validator/-/xml-name-validator-3.0.0.tgz", - "integrity": "sha512-A5CUptxDsvxKJEU3yO6DuWBSJz/qizqzJKOMIfUJHETbBw/sFaDxgd6fxm1ewUaM0jZ444Fc5vC5ROYurg/4Pw==", - "dev": true - }, - "xml2js": { + "node_modules/xml2js": { "version": "0.4.23", "resolved": "https://registry.npmjs.org/xml2js/-/xml2js-0.4.23.tgz", "integrity": "sha512-ySPiMjM0+pLDftHgXY4By0uswI3SPKLDw/i3UXbnO8M/p28zqexCUoPmQFrYD+/1BzhGJSs2i1ERWKJAtiLrug==", "dev": true, - "requires": { + "license": "MIT", + "dependencies": { "sax": ">=0.6.0", "xmlbuilder": "~11.0.0" + }, + "engines": { + "node": ">=4.0.0" } }, - "xmlbuilder": { + "node_modules/xmlbuilder": { "version": "11.0.1", "resolved": "https://registry.npmjs.org/xmlbuilder/-/xmlbuilder-11.0.1.tgz", "integrity": "sha512-fDlsI/kFEx7gLvbecc0/ohLG50fugQp8ryHzMTuW9vSa1GJ0XYWKnhsUx7oie3G98+r56aTQIUB4kht42R3JvA==", - "dev": true + "dev": true, + "license": "MIT", + "engines": { + "node": ">=4.0" + } }, - "xmlchars": { + "node_modules/xmlchars": { "version": "2.2.0", "resolved": "https://registry.npmjs.org/xmlchars/-/xmlchars-2.2.0.tgz", "integrity": "sha512-JZnDKK8B0RCDw84FNdDAIpZK+JuJw+s7Lz8nksI7SIuU3UXJJslUthsi+uWBUYOwPFwW7W7PRLRfUKpxjtjFCw==", - "dev": true - }, - "xmlcreate": { - "version": "2.0.4", - "resolved": "https://registry.npmjs.org/xmlcreate/-/xmlcreate-2.0.4.tgz", - "integrity": "sha512-nquOebG4sngPmGPICTS5EnxqhKbCmz5Ox5hsszI2T6U5qdrJizBc+0ilYSEjTSzU0yZcmvppztXe/5Al5fUwdg==", - "dev": true - }, - "xmldom": { - "version": "0.1.31", - "resolved": "https://registry.npmjs.org/xmldom/-/xmldom-0.1.31.tgz", - "integrity": "sha512-yS2uJflVQs6n+CyjHoaBmVSqIDevTAWrzMmjG1Gc7h1qQ7uVozNhEPJAwZXWyGQ/Gafo3fCwrcaokezLPupVyQ==", - "dev": true + "dev": true, + "license": "MIT" }, - "xtend": { - "version": "4.0.1", - "resolved": "https://registry.npmjs.org/xtend/-/xtend-4.0.1.tgz", - "integrity": "sha1-pcbVMr5lbiPbgg77lDofBJmNY68=", - "dev": true + "node_modules/xtend": { + "version": "4.0.2", + "resolved": "https://registry.npmjs.org/xtend/-/xtend-4.0.2.tgz", + "integrity": "sha512-LKYU1iAXJXUgAXn9URjiu+MWhyUXHsvfp7mcuYm9dSUKK0/CjtrUwFAxD82/mCWbtLsGjFIad0wIsod4zrTAEQ==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=0.4" + } }, - "y18n": { - "version": "3.2.2", - "resolved": "https://registry.npmjs.org/y18n/-/y18n-3.2.2.tgz", - "integrity": "sha512-uGZHXkHnhF0XeeAPgnKfPv1bgKAYyVvmNL1xlKsPYZPaIHxGti2hHqvOCQv71XMsLxu1QjergkqogUnms5D3YQ==", - "dev": true + "node_modules/y18n": { + "version": "5.0.8", + "resolved": "https://registry.npmjs.org/y18n/-/y18n-5.0.8.tgz", + "integrity": "sha512-0pfFzegeDWJHJIAmTLRP2DwHjdF5s7jo9tuztdQxAhINCdvS+3nGINqPd00AphqJR/0LhANUS6/+7SCb98YOfA==", + "dev": true, + "license": "ISC", + "engines": { + "node": ">=10" + } }, - "yallist": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/yallist/-/yallist-4.0.0.tgz", - "integrity": "sha512-3wdGidZyq5PB084XLES5TpOSRA3wjXAlIWMhum2kRcv/41Sn2emQ0dycQW4uZXLejwKvg6EsvbdlVL+FYEct7A==", - "dev": true + "node_modules/yallist": { + "version": "3.1.1", + "resolved": "https://registry.npmjs.org/yallist/-/yallist-3.1.1.tgz", + "integrity": "sha512-a4UGQaWPH59mOXUYnAG2ewncQS4i4F43Tv3JoAM+s2VDAmS9NsK8GpDMLrCHPksFT7h3K6TOoUNn2pb7RoXx4g==", + "dev": true, + "license": "ISC" }, - "yargs": { - "version": "13.3.2", - "resolved": "https://registry.npmjs.org/yargs/-/yargs-13.3.2.tgz", - "integrity": "sha512-AX3Zw5iPruN5ie6xGRIDgqkT+ZhnRlZMLMHAs8tg7nRruy2Nb+i5o9bwghAogtM08q1dpr2LVoS8KSTMYpWXUw==", + "node_modules/yargs": { + "version": "17.7.2", + "resolved": "https://registry.npmjs.org/yargs/-/yargs-17.7.2.tgz", + "integrity": "sha512-7dSzzRQ++CKnNI/krKnYRV7JKKPUXMEh61soaHKg9mrWEhzFWhFnxPxGl+69cD1Ou63C13NUPCnmIcrvqCuM6w==", "dev": true, - "requires": { - "cliui": "^5.0.0", - "find-up": "^3.0.0", - "get-caller-file": "^2.0.1", + "license": "MIT", + "dependencies": { + "cliui": "^8.0.1", + "escalade": "^3.1.1", + "get-caller-file": "^2.0.5", "require-directory": "^2.1.1", - "require-main-filename": "^2.0.0", - "set-blocking": "^2.0.0", - "string-width": "^3.0.0", - "which-module": "^2.0.0", - "y18n": "^4.0.0", - "yargs-parser": "^13.1.2" - }, - "dependencies": { - "ansi-regex": { - "version": "4.1.1", - "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-4.1.1.tgz", - "integrity": "sha512-ILlv4k/3f6vfQ4OoP2AGvirOktlQ98ZEL1k9FaQjxa3L1abBgbuTDAdPOpvbGncC0BTVQrl+OM8xZGK6tWXt7g==", - "dev": true - }, - "camelcase": { - "version": "5.3.1", - "resolved": "https://registry.npmjs.org/camelcase/-/camelcase-5.3.1.tgz", - "integrity": "sha512-L28STB170nwWS63UjtlEOE3dldQApaJXZkOI1uMFfzf3rRuPegHaHesyee+YxQ+W6SvRDQV6UrdOdRiR153wJg==", - "dev": true - }, - "cliui": { - "version": "5.0.0", - "resolved": "https://registry.npmjs.org/cliui/-/cliui-5.0.0.tgz", - "integrity": "sha512-PYeGSEmmHM6zvoef2w8TPzlrnNpXIjTipYK780YswmIP9vjxmd6Y2a3CB2Ks6/AU8NHjZugXvo8w3oWM2qnwXA==", - "dev": true, - "requires": { - "string-width": "^3.1.0", - "strip-ansi": "^5.2.0", - "wrap-ansi": "^5.1.0" - } - }, - "find-up": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/find-up/-/find-up-3.0.0.tgz", - "integrity": "sha512-1yD6RmLI1XBfxugvORwlck6f75tYL+iR0jqwsOrOxMZyGYqUuDhJ0l4AXdO1iX/FTs9cBAMEk1gWSEx1kSbylg==", - "dev": true, - "requires": { - "locate-path": "^3.0.0" - } - }, - "get-caller-file": { - "version": "2.0.5", - "resolved": "https://registry.npmjs.org/get-caller-file/-/get-caller-file-2.0.5.tgz", - "integrity": "sha512-DyFP3BM/3YHTQOCUL/w0OZHR0lpKeGrxotcHWcqNEdnltqFwXVfhEBQ94eIo34AfQpo0rGki4cyIiftY06h2Fg==", - "dev": true - }, - "is-fullwidth-code-point": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/is-fullwidth-code-point/-/is-fullwidth-code-point-2.0.0.tgz", - "integrity": "sha1-o7MKXE8ZkYMWeqq5O+764937ZU8=", - "dev": true - }, - "require-main-filename": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/require-main-filename/-/require-main-filename-2.0.0.tgz", - "integrity": "sha512-NKN5kMDylKuldxYLSUfrbo5Tuzh4hd+2E8NPPX02mZtn1VuREQToYe/ZdlJy+J3uCpfaiGF05e7B8W0iXbQHmg==", - "dev": true - }, - "string-width": { - "version": "3.1.0", - "resolved": "https://registry.npmjs.org/string-width/-/string-width-3.1.0.tgz", - "integrity": "sha512-vafcv6KjVZKSgz06oM/H6GDBrAtz8vdhQakGjFIvNrHA6y3HCF1CInLy+QLq8dTJPQ1b+KDUqDFctkdRW44e1w==", - "dev": true, - "requires": { - "emoji-regex": "^7.0.1", - "is-fullwidth-code-point": "^2.0.0", - "strip-ansi": "^5.1.0" - } - }, - "strip-ansi": { - "version": "5.2.0", - "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-5.2.0.tgz", - "integrity": "sha512-DuRs1gKbBqsMKIZlrffwlug8MHkcnpjs5VPmL1PAh+mA30U0DTotfDZ0d2UUsXpPmPmMMJ6W773MaA3J+lbiWA==", - "dev": true, - "requires": { - "ansi-regex": "^4.1.0" - } - }, - "which-module": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/which-module/-/which-module-2.0.0.tgz", - "integrity": "sha1-2e8H3Od7mQK4o6j6SzHD4/fm6Ho=", - "dev": true - }, - "wrap-ansi": { - "version": "5.1.0", - "resolved": "https://registry.npmjs.org/wrap-ansi/-/wrap-ansi-5.1.0.tgz", - "integrity": "sha512-QC1/iN/2/RPVJ5jYK8BGttj5z83LmSKmvbvrXPNCLZSEb32KKVDJDl/MOt2N01qU2H/FkzEa9PKto1BqDjtd7Q==", - "dev": true, - "requires": { - "ansi-styles": "^3.2.0", - "string-width": "^3.0.0", - "strip-ansi": "^5.0.0" - } - }, - "y18n": { - "version": "4.0.1", - "resolved": "https://registry.npmjs.org/y18n/-/y18n-4.0.1.tgz", - "integrity": "sha512-wNcy4NvjMYL8gogWWYAO7ZFWFfHcbdbE57tZO8e4cbpj8tfUcwrwqSl3ad8HxpYWCdXcJUCeKKZS62Av1affwQ==", - "dev": true - }, - "yargs-parser": { - "version": "13.1.2", - "resolved": "https://registry.npmjs.org/yargs-parser/-/yargs-parser-13.1.2.tgz", - "integrity": "sha512-3lbsNRf/j+A4QuSZfDRA7HRSfWrzO0YjqTJd5kjAq37Zep1CEgaYmrH9Q3GwPiB9cHyd1Y1UwggGhJGoxipbzg==", - "dev": true, - "requires": { - "camelcase": "^5.0.0", - "decamelize": "^1.2.0" - } - } + "string-width": "^4.2.3", + "y18n": "^5.0.5", + "yargs-parser": "^21.1.1" + }, + "engines": { + "node": ">=12" } }, - "yargs-parser": { - "version": "5.0.1", - "resolved": "https://registry.npmjs.org/yargs-parser/-/yargs-parser-5.0.1.tgz", - "integrity": "sha512-wpav5XYiddjXxirPoCTUPbqM0PXvJ9hiBMvuJgInvo4/lAOTZzUprArw17q2O1P2+GHhbBr18/iQwjL5Z9BqfA==", + "node_modules/yargs-parser": { + "version": "20.2.9", + "resolved": "https://registry.npmjs.org/yargs-parser/-/yargs-parser-20.2.9.tgz", + "integrity": "sha512-y11nGElTIV+CT3Zv9t7VKl+Q3hTQoT9a1Qzezhhl6Rp21gJ/IVTW7Z3y9EWXhuUBC2Shnf+DX0antecpAwSP8w==", "dev": true, - "requires": { - "camelcase": "^3.0.0", - "object.assign": "^4.1.0" + "license": "ISC", + "engines": { + "node": ">=10" } }, - "yargs-unparser": { + "node_modules/yargs-unparser": { "version": "2.0.0", "resolved": "https://registry.npmjs.org/yargs-unparser/-/yargs-unparser-2.0.0.tgz", "integrity": "sha512-7pRTIA9Qc1caZ0bZ6RYRGbHJthJWuakf+WmHK0rVeLkNrrGhfoabBNdue6kdINI6r4if7ocq9aD/n7xwKOdzOA==", "dev": true, - "requires": { + "license": "MIT", + "dependencies": { "camelcase": "^6.0.0", "decamelize": "^4.0.0", "flat": "^5.0.2", "is-plain-obj": "^2.1.0" }, - "dependencies": { - "camelcase": { - "version": "6.3.0", - "resolved": "https://registry.npmjs.org/camelcase/-/camelcase-6.3.0.tgz", - "integrity": "sha512-Gmy6FhYlCY7uOElZUSbxo2UCDH8owEk996gkbrpsgGtrJLM3J7jGxl9Ic7Qwwj4ivOE5AWZWRMecDdF7hqGjFA==", - "dev": true - }, - "decamelize": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/decamelize/-/decamelize-4.0.0.tgz", - "integrity": "sha512-9iE1PgSik9HeIIw2JO94IidnE3eBoQrFJ3w7sFuzSX4DpmZ3v5sZpUiV5Swcf6mQEF+Y0ru8Neo+p+nyh2J+hQ==", - "dev": true - }, - "is-plain-obj": { - "version": "2.1.0", - "resolved": "https://registry.npmjs.org/is-plain-obj/-/is-plain-obj-2.1.0.tgz", - "integrity": "sha512-YWnfyRwxL/+SsrWYfOpUtz5b3YD+nyfkHvjbcanzk8zgyO4ASD67uVMRt8k5bM4lLMDnXfriRhOpemw+NfT1eA==", - "dev": true - } + "engines": { + "node": ">=10" + } + }, + "node_modules/yargs-unparser/node_modules/camelcase": { + "version": "6.3.0", + "resolved": "https://registry.npmjs.org/camelcase/-/camelcase-6.3.0.tgz", + "integrity": "sha512-Gmy6FhYlCY7uOElZUSbxo2UCDH8owEk996gkbrpsgGtrJLM3J7jGxl9Ic7Qwwj4ivOE5AWZWRMecDdF7hqGjFA==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=10" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/yargs-unparser/node_modules/decamelize": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/decamelize/-/decamelize-4.0.0.tgz", + "integrity": "sha512-9iE1PgSik9HeIIw2JO94IidnE3eBoQrFJ3w7sFuzSX4DpmZ3v5sZpUiV5Swcf6mQEF+Y0ru8Neo+p+nyh2J+hQ==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=10" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/yargs-unparser/node_modules/is-plain-obj": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/is-plain-obj/-/is-plain-obj-2.1.0.tgz", + "integrity": "sha512-YWnfyRwxL/+SsrWYfOpUtz5b3YD+nyfkHvjbcanzk8zgyO4ASD67uVMRt8k5bM4lLMDnXfriRhOpemw+NfT1eA==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=8" + } + }, + "node_modules/yargs/node_modules/yargs-parser": { + "version": "21.1.1", + "resolved": "https://registry.npmjs.org/yargs-parser/-/yargs-parser-21.1.1.tgz", + "integrity": "sha512-tVpsJW7DdjecAiFpbIB1e3qxIQsE6NoPc5/eTdrbbIC4h0LVsWhnoa3g+m2HclBIujHzsxZ4VJVA+GUuc2/LBw==", + "dev": true, + "license": "ISC", + "engines": { + "node": ">=12" } }, - "yocto-queue": { + "node_modules/yocto-queue": { "version": "0.1.0", "resolved": "https://registry.npmjs.org/yocto-queue/-/yocto-queue-0.1.0.tgz", "integrity": "sha512-rVksvsnNCdJ/ohGc6xgPwyN8eheCxsiLM8mxuE/t/mOVqJewPuO1miLpTHQiRgTKCLexL4MeAFVagts7HmNZ2Q==", - "dev": true + "dev": true, + "license": "MIT", + "engines": { + "node": ">=10" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } } } } diff --git a/package.json b/package.json index 43f62ab753..8b23cbfe96 100644 --- a/package.json +++ b/package.json @@ -1,30 +1,57 @@ { "name": "prismjs", "version": "1.29.0", - "description": "Lightweight, robust, elegant syntax highlighting. A spin-off project from Dabblet.", - "main": "prism.js", + "description": "Lightweight, robust, elegant syntax highlighting.", + "type": "module", + "main": "./dist/cjs/index.js", + "module": "./dist/index.js", + "types": "./types/index.d.ts", + "exports": { + ".": { + "types": "./types/index.d.ts", + "import": "./dist/index.js", + "require": "./dist/cjs/index.js" + }, + "./shared": { + "types": "./types/shared.d.ts", + "import": "./dist/shared.js", + "require": "./dist/cjs/shared.js" + }, + "./languages/*": { + "types": "./types/languages/*.d.ts", + "import": "./dist/languages/*.js", + "require": "./dist/cjs/languages/*.js" + }, + "./plugins/*": { + "types": "./types/plugins/*.d.ts", + "import": "./dist/plugins/*.js", + "require": "./dist/cjs/plugins/*.js" + }, + "./themes/*": "./dist/themes/*.css", + "./components.json": "./dist/components.json" + }, "style": "themes/prism.css", "engines": { - "node": ">=6" + "node": ">=18" }, "scripts": { "benchmark": "node benchmark/benchmark.js", - "build": "gulp", - "start": "http-server -c-1", + "build": "node scripts/build.js", "lint": "eslint . --cache", "lint:fix": "npm run lint -- --fix", "lint:ci": "eslint . --max-warnings 0", "regex-coverage": "mocha tests/coverage.js", - "test:aliases": "mocha tests/aliases-test.js", + "test:components": "mocha tests/components-test.js", "test:core": "mocha tests/core/**/*.js", - "test:dependencies": "mocha tests/dependencies-test.js", - "test:examples": "mocha tests/examples-test.js", "test:identifiers": "mocha tests/identifier-test.js", "test:languages": "mocha tests/run.js", "test:patterns": "mocha tests/pattern-tests.js", "test:plugins": "mocha tests/plugins/**/*.js", "test:runner": "mocha tests/testrunner-tests.js", - "test": "npm-run-all test:*" + "test": "npm-run-all test:*", + "typecheck:core": "tsc", + "typecheck:tests": "tsc -p tests/tsconfig.json", + "typecheck": "npm-run-all typecheck:*" }, "repository": { "type": "git", @@ -36,41 +63,55 @@ ], "author": "Lea Verou", "license": "MIT", + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/prismjs" + }, "readmeFilename": "README.md", "devDependencies": { - "@types/node-fetch": "^2.5.5", + "@eslint/js": "^9.24.0", + "@ianvs/prettier-plugin-sort-imports": "^4.4.1", + "@prettier/sync": "^0.5.2", + "@rollup/plugin-commonjs": "^28.0.3", + "@rollup/plugin-terser": "^0.4.4", + "@types/benchmark": "^2.1.2", + "@types/chai": "^5.2.1", + "@types/clean-css": "^4.2.11", + "@types/jsdom": "^21.1.7", + "@types/mocha": "^10.0.10", + "@types/node": "^22.15.2", + "@types/yargs": "^17.0.33", "benchmark": "^2.1.4", - "chai": "^4.2.0", - "danger": "^10.5.0", - "del": "^4.1.1", - "docdash": "^1.2.0", - "eslint": "^7.22.0", - "eslint-plugin-jsdoc": "^32.3.0", - "eslint-plugin-regexp": "^1.6.0", - "gulp": "^4.0.2", - "gulp-clean-css": "^4.3.0", - "gulp-concat": "^2.3.4", - "gulp-header": "^2.0.7", - "gulp-jsdoc3": "^3.0.0", - "gulp-rename": "^1.2.0", - "gulp-replace": "^1.0.0", - "gulp-terser": "^2.1.0", - "gzip-size": "^5.1.1", - "htmlparser2": "^4.0.0", - "http-server": "^0.12.3", - "jsdom": "^16.7.0", - "mocha": "^9.2.2", - "node-fetch": "^3.1.1", + "chai": "^5.2.0", + "clean-css": "^5.3.3", + "cross-fetch": "^4.1.0", + "danger": "^13.0.4", + "eslint": "^9.24.0", + "eslint-config-prettier": "^10.1.2", + "eslint-plugin-eslint-comments": "^3.2.0", + "eslint-plugin-jsdoc": "^50.6.9", + "eslint-plugin-regexp": "^2.7.0", + "globals": "^16.0.0", + "gzip-size": "^7.0.0", + "htmlparser2": "^10.0.0", + "jsdom": "^24.1.3", + "magic-string": "^0.30.17", + "mocha": "^10.8.2", + "mocha-chai-jest-snapshot": "^1.1.6", "npm-run-all": "^4.1.5", - "prettier": "^2.4.1", - "pump": "^3.0.0", + "prettier": "^3.5.3", + "prettier-plugin-brace-style": "^0.7.3", + "prettier-plugin-merge": "^0.7.4", + "prettier-plugin-space-before-function-paren": "^0.0.8", "refa": "^0.9.1", - "regexp-ast-analysis": "^0.2.4", + "regexp-ast-analysis": "^0.5.1", "regexpp": "^3.2.0", - "scslre": "^0.1.6", - "simple-git": "^3.3.0", - "webfont": "^9.0.0", - "yargs": "^13.2.2" + "rollup": "^4.40.0", + "scslre": "^0.3.0", + "simple-git": "^3.27.0", + "typescript": "^5.8.3", + "webfont": "^11.2.26", + "yargs": "^17.7.2" }, "jspm": { "main": "prism", diff --git a/plugins/autolinker/index.html b/plugins/autolinker/index.html deleted file mode 100644 index b4e4a282c7..0000000000 --- a/plugins/autolinker/index.html +++ /dev/null @@ -1,65 +0,0 @@ - - - - - - -Autolinker ▲ Prism plugins - - - - - - - - - - - -
    - -
    -

    How to use

    -

    URLs and emails will be linked automatically, you don’t need to do anything. To link some text inside a comment to a certain URL, - you may use the Markdown syntax: -

    [Text you want to see](http://url-goes-here.com)
    -
    - -
    -

    Examples

    - -

    JavaScript

    -
    /**
    - * Prism: Lightweight, robust, elegant syntax highlighting
    - * MIT license http://www.opensource.org/licenses/mit-license.php/
    - * @author Lea Verou http://lea.verou.me
    - * Reach Lea at fake@email.com (no, not really)
    - * And this is [a Markdown link](http://prismjs.com). Sweet, huh?
    - */
    -var foo = 5;
    -// And a single line comment http://google.com
    - -

    CSS

    -
    @font-face {
    -	src: url(http://lea.verou.me/logo.otf);
    -	font-family: 'LeaVerou';
    -}
    - -

    HTML

    -
    <!-- Links in HTML, woo!
    -Lea Verou http://lea.verou.me or, with Markdown, [Lea Verou](http://lea.verou.me) -->
    -<img src="https://prismjs.com/assets/img/spectrum.png" alt="In attributes too!" />
    -<p>Autolinking in raw text: http://prismjs.com</p>
    -
    - -
    - - - - - - - - - - diff --git a/plugins/autolinker/prism-autolinker.css b/plugins/autolinker/prism-autolinker.css deleted file mode 100644 index b5f7630924..0000000000 --- a/plugins/autolinker/prism-autolinker.css +++ /dev/null @@ -1,3 +0,0 @@ -.token a { - color: inherit; -} \ No newline at end of file diff --git a/plugins/autolinker/prism-autolinker.js b/plugins/autolinker/prism-autolinker.js deleted file mode 100644 index 532e11b5ad..0000000000 --- a/plugins/autolinker/prism-autolinker.js +++ /dev/null @@ -1,76 +0,0 @@ -(function () { - - if (typeof Prism === 'undefined') { - return; - } - - var url = /\b([a-z]{3,7}:\/\/|tel:)[\w\-+%~/.:=&!$'()*,;@]+(?:\?[\w\-+%~/.:=?&!$'()*,;@]*)?(?:#[\w\-+%~/.:#=?&!$'()*,;@]*)?/; - var email = /\b\S+@[\w.]+[a-z]{2}/; - var linkMd = /\[([^\]]+)\]\(([^)]+)\)/; - - // Tokens that may contain URLs and emails - var candidates = ['comment', 'url', 'attr-value', 'string']; - - Prism.plugins.autolinker = { - processGrammar: function (grammar) { - // Abort if grammar has already been processed - if (!grammar || grammar['url-link']) { - return; - } - Prism.languages.DFS(grammar, function (key, def, type) { - if (candidates.indexOf(type) > -1 && !Array.isArray(def)) { - if (!def.pattern) { - def = this[key] = { - pattern: def - }; - } - - def.inside = def.inside || {}; - - if (type == 'comment') { - def.inside['md-link'] = linkMd; - } - if (type == 'attr-value') { - Prism.languages.insertBefore('inside', 'punctuation', { 'url-link': url }, def); - } else { - def.inside['url-link'] = url; - } - - def.inside['email-link'] = email; - } - }); - grammar['url-link'] = url; - grammar['email-link'] = email; - } - }; - - Prism.hooks.add('before-highlight', function (env) { - Prism.plugins.autolinker.processGrammar(env.grammar); - }); - - Prism.hooks.add('wrap', function (env) { - if (/-link$/.test(env.type)) { - env.tag = 'a'; - - var href = env.content; - - if (env.type == 'email-link' && href.indexOf('mailto:') != 0) { - href = 'mailto:' + href; - } else if (env.type == 'md-link') { - // Markdown - var match = env.content.match(linkMd); - - href = match[2]; - env.content = match[1]; - } - - env.attributes.href = href; - - // Silently catch any error thrown by decodeURIComponent (#1186) - try { - env.content = decodeURIComponent(env.content); - } catch (e) { /* noop */ } - } - }); - -}()); diff --git a/plugins/autolinker/prism-autolinker.min.css b/plugins/autolinker/prism-autolinker.min.css deleted file mode 100644 index 3c54381d78..0000000000 --- a/plugins/autolinker/prism-autolinker.min.css +++ /dev/null @@ -1 +0,0 @@ -.token a{color:inherit} \ No newline at end of file diff --git a/plugins/autolinker/prism-autolinker.min.js b/plugins/autolinker/prism-autolinker.min.js deleted file mode 100644 index 44aa79402a..0000000000 --- a/plugins/autolinker/prism-autolinker.min.js +++ /dev/null @@ -1 +0,0 @@ -!function(){if("undefined"!=typeof Prism){var i=/\b([a-z]{3,7}:\/\/|tel:)[\w\-+%~/.:=&!$'()*,;@]+(?:\?[\w\-+%~/.:=?&!$'()*,;@]*)?(?:#[\w\-+%~/.:#=?&!$'()*,;@]*)?/,n=/\b\S+@[\w.]+[a-z]{2}/,t=/\[([^\]]+)\]\(([^)]+)\)/,e=["comment","url","attr-value","string"];Prism.plugins.autolinker={processGrammar:function(r){r&&!r["url-link"]&&(Prism.languages.DFS(r,(function(r,a,l){e.indexOf(l)>-1&&!Array.isArray(a)&&(a.pattern||(a=this[r]={pattern:a}),a.inside=a.inside||{},"comment"==l&&(a.inside["md-link"]=t),"attr-value"==l?Prism.languages.insertBefore("inside","punctuation",{"url-link":i},a):a.inside["url-link"]=i,a.inside["email-link"]=n)})),r["url-link"]=i,r["email-link"]=n)}},Prism.hooks.add("before-highlight",(function(i){Prism.plugins.autolinker.processGrammar(i.grammar)})),Prism.hooks.add("wrap",(function(i){if(/-link$/.test(i.type)){i.tag="a";var n=i.content;if("email-link"==i.type&&0!=n.indexOf("mailto:"))n="mailto:"+n;else if("md-link"==i.type){var e=i.content.match(t);n=e[2],i.content=e[1]}i.attributes.href=n;try{i.content=decodeURIComponent(i.content)}catch(i){}}}))}}(); \ No newline at end of file diff --git a/plugins/autoloader/index.html b/plugins/autoloader/index.html deleted file mode 100644 index 0370c74388..0000000000 --- a/plugins/autoloader/index.html +++ /dev/null @@ -1,230 +0,0 @@ - - - - - - -Autoloader ▲ Prism plugins - - - - - - - - - - - -
    - -
    -

    How to use

    - -

    - The plugin will automatically handle missing grammars and load them for you. - To do this, you need to provide a URL to a directory of all the grammars you want. - This can be the path to a local directory with all grammars or a CDN URL. -

    -

    - You can download all the available grammars by clicking on the following link: .
    - Alternatively, you can also clone the GitHub repo and take the components folder from there. - Read our usage section to use a CDN. -

    -

    - You can then download Prism core and any plugins from the Download page, without checking any languages (or just check the languages you want to load by default, e.g. if you're using a language a lot, then you probably want to save the extra HTTP request). -

    -

    - A couple of additional options are available through the configuration object Prism.plugins.autoloader. -

    - -

    Specifying the grammars path

    - -

    - By default, the plugin will look for the missing grammars in the components folder. - If your files are in a different location, you can specify it using the languages_path option: -

    - -
    Prism.plugins.autoloader.languages_path = 'path/to/grammars/';
    - -

    - Note: Autoloader is pretty good at guessing this path. You most likely won't have to change this path. -

    - -

    Using development versions

    - -

    - By default, the plugin uses the minified versions of the grammars. - If you wish to use the development versions instead, you can set the use_minified option to false: -

    - -
    Prism.plugins.autoloader.use_minified = false;
    - -

    Specifying additional dependencies

    - -

    - All default dependencies are already included in the plugin. - However, there are some cases where you might want to load an additional dependency for a specific code block. - To do so, just add a data-dependencies attribute on you <code> or <pre> tags, - containing a list of comma-separated language aliases. -

    - -
    <pre><code class="language-pug" data-dependencies="less">
    -:less
    -	foo {
    -		color: @red;
    -	}
    -</code><pre>
    - -

    Force to reload a grammar

    - -

    - The plugin usually doesn't reload a grammar if it already exists. - In some very specific cases, you might however want to do so. - If you add an exclamation mark after an alias in the data-dependencies attribute, - this language will be reloaded. -

    - -
    <pre class="language-markup" data-dependencies="markup,css!"><code>
    - -
    - -
    -

    Examples

    - -

    Note that no languages are loaded on this page by default.

    - -

    Basic usage with some Perl code:

    -
    my ($class, $filename) = @_;
    - -

    Alias support with TypeScript's ts:

    -
    const a: number = 0;
    - -

    The Less filter used in Pug:

    -
    :less
    -	foo {
    -		color: @red;
    -	}
    - -
    - -
    -

    Markdown

    - -

    Markdown will use the Autoloader to automatically load missing languages.

    -
    The C# code will be highlighted __after__ the rest of this document.
    -
    -```csharp
    -public class Foo : IBar<int> {
    -	public string Baz { get; set; } = "foo";
    -}
    -```
    -
    -The CSS code will be highlighted with this document because CSS has already been loaded.
    -
    -```css
    -a:hover {
    -	color: green !important;
    -}
    -```
    - -
    - -
    - - - - - - - - - - - - - - diff --git a/plugins/autoloader/prism-autoloader.js b/plugins/autoloader/prism-autoloader.js deleted file mode 100644 index 2881b2d899..0000000000 --- a/plugins/autoloader/prism-autoloader.js +++ /dev/null @@ -1,541 +0,0 @@ -(function () { - - if (typeof Prism === 'undefined' || typeof document === 'undefined') { - return; - } - - /* eslint-disable */ - - /** - * The dependencies map is built automatically with gulp. - * - * @type {Object} - */ - var lang_dependencies = /*dependencies_placeholder[*/{ - "javascript": "clike", - "actionscript": "javascript", - "apex": [ - "clike", - "sql" - ], - "arduino": "cpp", - "aspnet": [ - "markup", - "csharp" - ], - "birb": "clike", - "bison": "c", - "c": "clike", - "csharp": "clike", - "cpp": "c", - "cfscript": "clike", - "chaiscript": [ - "clike", - "cpp" - ], - "cilkc": "c", - "cilkcpp": "cpp", - "coffeescript": "javascript", - "crystal": "ruby", - "css-extras": "css", - "d": "clike", - "dart": "clike", - "django": "markup-templating", - "ejs": [ - "javascript", - "markup-templating" - ], - "etlua": [ - "lua", - "markup-templating" - ], - "erb": [ - "ruby", - "markup-templating" - ], - "fsharp": "clike", - "firestore-security-rules": "clike", - "flow": "javascript", - "ftl": "markup-templating", - "gml": "clike", - "glsl": "c", - "go": "clike", - "gradle": "clike", - "groovy": "clike", - "haml": "ruby", - "handlebars": "markup-templating", - "haxe": "clike", - "hlsl": "c", - "idris": "haskell", - "java": "clike", - "javadoc": [ - "markup", - "java", - "javadoclike" - ], - "jolie": "clike", - "jsdoc": [ - "javascript", - "javadoclike", - "typescript" - ], - "js-extras": "javascript", - "json5": "json", - "jsonp": "json", - "js-templates": "javascript", - "kotlin": "clike", - "latte": [ - "clike", - "markup-templating", - "php" - ], - "less": "css", - "lilypond": "scheme", - "liquid": "markup-templating", - "markdown": "markup", - "markup-templating": "markup", - "mongodb": "javascript", - "n4js": "javascript", - "objectivec": "c", - "opencl": "c", - "parser": "markup", - "php": "markup-templating", - "phpdoc": [ - "php", - "javadoclike" - ], - "php-extras": "php", - "plsql": "sql", - "processing": "clike", - "protobuf": "clike", - "pug": [ - "markup", - "javascript" - ], - "purebasic": "clike", - "purescript": "haskell", - "qsharp": "clike", - "qml": "javascript", - "qore": "clike", - "racket": "scheme", - "cshtml": [ - "markup", - "csharp" - ], - "jsx": [ - "markup", - "javascript" - ], - "tsx": [ - "jsx", - "typescript" - ], - "reason": "clike", - "ruby": "clike", - "sass": "css", - "scss": "css", - "scala": "java", - "shell-session": "bash", - "smarty": "markup-templating", - "solidity": "clike", - "soy": "markup-templating", - "sparql": "turtle", - "sqf": "clike", - "squirrel": "clike", - "stata": [ - "mata", - "java", - "python" - ], - "t4-cs": [ - "t4-templating", - "csharp" - ], - "t4-vb": [ - "t4-templating", - "vbnet" - ], - "tap": "yaml", - "tt2": [ - "clike", - "markup-templating" - ], - "textile": "markup", - "twig": "markup-templating", - "typescript": "javascript", - "v": "clike", - "vala": "clike", - "vbnet": "basic", - "velocity": "markup", - "wiki": "markup", - "xeora": "markup", - "xml-doc": "markup", - "xquery": "markup" - }/*]*/; - - var lang_aliases = /*aliases_placeholder[*/{ - "html": "markup", - "xml": "markup", - "svg": "markup", - "mathml": "markup", - "ssml": "markup", - "atom": "markup", - "rss": "markup", - "js": "javascript", - "g4": "antlr4", - "ino": "arduino", - "arm-asm": "armasm", - "art": "arturo", - "adoc": "asciidoc", - "avs": "avisynth", - "avdl": "avro-idl", - "gawk": "awk", - "sh": "bash", - "shell": "bash", - "shortcode": "bbcode", - "rbnf": "bnf", - "oscript": "bsl", - "cs": "csharp", - "dotnet": "csharp", - "cfc": "cfscript", - "cilk-c": "cilkc", - "cilk-cpp": "cilkcpp", - "cilk": "cilkcpp", - "coffee": "coffeescript", - "conc": "concurnas", - "jinja2": "django", - "dns-zone": "dns-zone-file", - "dockerfile": "docker", - "gv": "dot", - "eta": "ejs", - "xlsx": "excel-formula", - "xls": "excel-formula", - "gamemakerlanguage": "gml", - "po": "gettext", - "gni": "gn", - "ld": "linker-script", - "go-mod": "go-module", - "hbs": "handlebars", - "mustache": "handlebars", - "hs": "haskell", - "idr": "idris", - "gitignore": "ignore", - "hgignore": "ignore", - "npmignore": "ignore", - "webmanifest": "json", - "kt": "kotlin", - "kts": "kotlin", - "kum": "kumir", - "tex": "latex", - "context": "latex", - "ly": "lilypond", - "emacs": "lisp", - "elisp": "lisp", - "emacs-lisp": "lisp", - "md": "markdown", - "moon": "moonscript", - "n4jsd": "n4js", - "nani": "naniscript", - "objc": "objectivec", - "qasm": "openqasm", - "objectpascal": "pascal", - "px": "pcaxis", - "pcode": "peoplecode", - "plantuml": "plant-uml", - "pq": "powerquery", - "mscript": "powerquery", - "pbfasm": "purebasic", - "purs": "purescript", - "py": "python", - "qs": "qsharp", - "rkt": "racket", - "razor": "cshtml", - "rpy": "renpy", - "res": "rescript", - "robot": "robotframework", - "rb": "ruby", - "sh-session": "shell-session", - "shellsession": "shell-session", - "smlnj": "sml", - "sol": "solidity", - "sln": "solution-file", - "rq": "sparql", - "sclang": "supercollider", - "t4": "t4-cs", - "trickle": "tremor", - "troy": "tremor", - "trig": "turtle", - "ts": "typescript", - "tsconfig": "typoscript", - "uscript": "unrealscript", - "uc": "unrealscript", - "url": "uri", - "vb": "visual-basic", - "vba": "visual-basic", - "webidl": "web-idl", - "mathematica": "wolfram", - "nb": "wolfram", - "wl": "wolfram", - "xeoracube": "xeora", - "yml": "yaml" - }/*]*/; - - /* eslint-enable */ - - /** - * @typedef LangDataItem - * @property {{ success?: () => void, error?: () => void }[]} callbacks - * @property {boolean} [error] - * @property {boolean} [loading] - */ - /** @type {Object} */ - var lang_data = {}; - - var ignored_language = 'none'; - var languages_path = 'components/'; - - var script = Prism.util.currentScript(); - if (script) { - var autoloaderFile = /\bplugins\/autoloader\/prism-autoloader\.(?:min\.)?js(?:\?[^\r\n/]*)?$/i; - var prismFile = /(^|\/)[\w-]+\.(?:min\.)?js(?:\?[^\r\n/]*)?$/i; - - var autoloaderPath = script.getAttribute('data-autoloader-path'); - if (autoloaderPath != null) { - // data-autoloader-path is set, so just use it - languages_path = autoloaderPath.trim().replace(/\/?$/, '/'); - } else { - var src = script.src; - if (autoloaderFile.test(src)) { - // the script is the original autoloader script in the usual Prism project structure - languages_path = src.replace(autoloaderFile, 'components/'); - } else if (prismFile.test(src)) { - // the script is part of a bundle like a custom prism.js from the download page - languages_path = src.replace(prismFile, '$1components/'); - } - } - } - - var config = Prism.plugins.autoloader = { - languages_path: languages_path, - use_minified: true, - loadLanguages: loadLanguages - }; - - - /** - * Lazily loads an external script. - * - * @param {string} src - * @param {() => void} [success] - * @param {() => void} [error] - */ - function addScript(src, success, error) { - var s = document.createElement('script'); - s.src = src; - s.async = true; - s.onload = function () { - document.body.removeChild(s); - success && success(); - }; - s.onerror = function () { - document.body.removeChild(s); - error && error(); - }; - document.body.appendChild(s); - } - - /** - * Returns all additional dependencies of the given element defined by the `data-dependencies` attribute. - * - * @param {Element} element - * @returns {string[]} - */ - function getDependencies(element) { - var deps = (element.getAttribute('data-dependencies') || '').trim(); - if (!deps) { - var parent = element.parentElement; - if (parent && parent.tagName.toLowerCase() === 'pre') { - deps = (parent.getAttribute('data-dependencies') || '').trim(); - } - } - return deps ? deps.split(/\s*,\s*/g) : []; - } - - /** - * Returns whether the given language is currently loaded. - * - * @param {string} lang - * @returns {boolean} - */ - function isLoaded(lang) { - if (lang.indexOf('!') >= 0) { - // forced reload - return false; - } - - lang = lang_aliases[lang] || lang; // resolve alias - - if (lang in Prism.languages) { - // the given language is already loaded - return true; - } - - // this will catch extensions like CSS extras that don't add a grammar to Prism.languages - var data = lang_data[lang]; - return data && !data.error && data.loading === false; - } - - /** - * Returns the path to a grammar, using the language_path and use_minified config keys. - * - * @param {string} lang - * @returns {string} - */ - function getLanguagePath(lang) { - return config.languages_path + 'prism-' + lang + (config.use_minified ? '.min' : '') + '.js'; - } - - /** - * Loads all given grammars concurrently. - * - * @param {string[]|string} languages - * @param {(languages: string[]) => void} [success] - * @param {(language: string) => void} [error] This callback will be invoked on the first language to fail. - */ - function loadLanguages(languages, success, error) { - if (typeof languages === 'string') { - languages = [languages]; - } - - var total = languages.length; - var completed = 0; - var failed = false; - - if (total === 0) { - if (success) { - setTimeout(success, 0); - } - return; - } - - function successCallback() { - if (failed) { - return; - } - completed++; - if (completed === total) { - success && success(languages); - } - } - - languages.forEach(function (lang) { - loadLanguage(lang, successCallback, function () { - if (failed) { - return; - } - failed = true; - error && error(lang); - }); - }); - } - - /** - * Loads a grammar with its dependencies. - * - * @param {string} lang - * @param {() => void} [success] - * @param {() => void} [error] - */ - function loadLanguage(lang, success, error) { - var force = lang.indexOf('!') >= 0; - - lang = lang.replace('!', ''); - lang = lang_aliases[lang] || lang; - - function load() { - var data = lang_data[lang]; - if (!data) { - data = lang_data[lang] = { - callbacks: [] - }; - } - data.callbacks.push({ - success: success, - error: error - }); - - if (!force && isLoaded(lang)) { - // the language is already loaded and we aren't forced to reload - languageCallback(lang, 'success'); - } else if (!force && data.error) { - // the language failed to load before and we don't reload - languageCallback(lang, 'error'); - } else if (force || !data.loading) { - // the language isn't currently loading and/or we are forced to reload - data.loading = true; - data.error = false; - - addScript(getLanguagePath(lang), function () { - data.loading = false; - languageCallback(lang, 'success'); - - }, function () { - data.loading = false; - data.error = true; - languageCallback(lang, 'error'); - }); - } - } - - var dependencies = lang_dependencies[lang]; - if (dependencies && dependencies.length) { - loadLanguages(dependencies, load, error); - } else { - load(); - } - } - - /** - * Runs all callbacks of the given type for the given language. - * - * @param {string} lang - * @param {"success" | "error"} type - */ - function languageCallback(lang, type) { - if (lang_data[lang]) { - var callbacks = lang_data[lang].callbacks; - for (var i = 0, l = callbacks.length; i < l; i++) { - var callback = callbacks[i][type]; - if (callback) { - setTimeout(callback, 0); - } - } - callbacks.length = 0; - } - } - - Prism.hooks.add('complete', function (env) { - var element = env.element; - var language = env.language; - if (!element || !language || language === ignored_language) { - return; - } - - var deps = getDependencies(element); - if (/^diff-./i.test(language)) { - // the "diff-xxxx" format is used by the Diff Highlight plugin - deps.push('diff'); - deps.push(language.substr('diff-'.length)); - } else { - deps.push(language); - } - - if (!deps.every(isLoaded)) { - // the language or some dependencies aren't loaded - loadLanguages(deps, function () { - Prism.highlightElement(element); - }); - } - }); - -}()); diff --git a/plugins/autoloader/prism-autoloader.min.js b/plugins/autoloader/prism-autoloader.min.js deleted file mode 100644 index 0e2dd0c592..0000000000 --- a/plugins/autoloader/prism-autoloader.min.js +++ /dev/null @@ -1 +0,0 @@ -!function(){if("undefined"!=typeof Prism&&"undefined"!=typeof document){var e={javascript:"clike",actionscript:"javascript",apex:["clike","sql"],arduino:"cpp",aspnet:["markup","csharp"],birb:"clike",bison:"c",c:"clike",csharp:"clike",cpp:"c",cfscript:"clike",chaiscript:["clike","cpp"],cilkc:"c",cilkcpp:"cpp",coffeescript:"javascript",crystal:"ruby","css-extras":"css",d:"clike",dart:"clike",django:"markup-templating",ejs:["javascript","markup-templating"],etlua:["lua","markup-templating"],erb:["ruby","markup-templating"],fsharp:"clike","firestore-security-rules":"clike",flow:"javascript",ftl:"markup-templating",gml:"clike",glsl:"c",go:"clike",gradle:"clike",groovy:"clike",haml:"ruby",handlebars:"markup-templating",haxe:"clike",hlsl:"c",idris:"haskell",java:"clike",javadoc:["markup","java","javadoclike"],jolie:"clike",jsdoc:["javascript","javadoclike","typescript"],"js-extras":"javascript",json5:"json",jsonp:"json","js-templates":"javascript",kotlin:"clike",latte:["clike","markup-templating","php"],less:"css",lilypond:"scheme",liquid:"markup-templating",markdown:"markup","markup-templating":"markup",mongodb:"javascript",n4js:"javascript",objectivec:"c",opencl:"c",parser:"markup",php:"markup-templating",phpdoc:["php","javadoclike"],"php-extras":"php",plsql:"sql",processing:"clike",protobuf:"clike",pug:["markup","javascript"],purebasic:"clike",purescript:"haskell",qsharp:"clike",qml:"javascript",qore:"clike",racket:"scheme",cshtml:["markup","csharp"],jsx:["markup","javascript"],tsx:["jsx","typescript"],reason:"clike",ruby:"clike",sass:"css",scss:"css",scala:"java","shell-session":"bash",smarty:"markup-templating",solidity:"clike",soy:"markup-templating",sparql:"turtle",sqf:"clike",squirrel:"clike",stata:["mata","java","python"],"t4-cs":["t4-templating","csharp"],"t4-vb":["t4-templating","vbnet"],tap:"yaml",tt2:["clike","markup-templating"],textile:"markup",twig:"markup-templating",typescript:"javascript",v:"clike",vala:"clike",vbnet:"basic",velocity:"markup",wiki:"markup",xeora:"markup","xml-doc":"markup",xquery:"markup"},a={html:"markup",xml:"markup",svg:"markup",mathml:"markup",ssml:"markup",atom:"markup",rss:"markup",js:"javascript",g4:"antlr4",ino:"arduino","arm-asm":"armasm",art:"arturo",adoc:"asciidoc",avs:"avisynth",avdl:"avro-idl",gawk:"awk",sh:"bash",shell:"bash",shortcode:"bbcode",rbnf:"bnf",oscript:"bsl",cs:"csharp",dotnet:"csharp",cfc:"cfscript","cilk-c":"cilkc","cilk-cpp":"cilkcpp",cilk:"cilkcpp",coffee:"coffeescript",conc:"concurnas",jinja2:"django","dns-zone":"dns-zone-file",dockerfile:"docker",gv:"dot",eta:"ejs",xlsx:"excel-formula",xls:"excel-formula",gamemakerlanguage:"gml",po:"gettext",gni:"gn",ld:"linker-script","go-mod":"go-module",hbs:"handlebars",mustache:"handlebars",hs:"haskell",idr:"idris",gitignore:"ignore",hgignore:"ignore",npmignore:"ignore",webmanifest:"json",kt:"kotlin",kts:"kotlin",kum:"kumir",tex:"latex",context:"latex",ly:"lilypond",emacs:"lisp",elisp:"lisp","emacs-lisp":"lisp",md:"markdown",moon:"moonscript",n4jsd:"n4js",nani:"naniscript",objc:"objectivec",qasm:"openqasm",objectpascal:"pascal",px:"pcaxis",pcode:"peoplecode",plantuml:"plant-uml",pq:"powerquery",mscript:"powerquery",pbfasm:"purebasic",purs:"purescript",py:"python",qs:"qsharp",rkt:"racket",razor:"cshtml",rpy:"renpy",res:"rescript",robot:"robotframework",rb:"ruby","sh-session":"shell-session",shellsession:"shell-session",smlnj:"sml",sol:"solidity",sln:"solution-file",rq:"sparql",sclang:"supercollider",t4:"t4-cs",trickle:"tremor",troy:"tremor",trig:"turtle",ts:"typescript",tsconfig:"typoscript",uscript:"unrealscript",uc:"unrealscript",url:"uri",vb:"visual-basic",vba:"visual-basic",webidl:"web-idl",mathematica:"wolfram",nb:"wolfram",wl:"wolfram",xeoracube:"xeora",yml:"yaml"},r={},s="components/",i=Prism.util.currentScript();if(i){var t=/\bplugins\/autoloader\/prism-autoloader\.(?:min\.)?js(?:\?[^\r\n/]*)?$/i,c=/(^|\/)[\w-]+\.(?:min\.)?js(?:\?[^\r\n/]*)?$/i,l=i.getAttribute("data-autoloader-path");if(null!=l)s=l.trim().replace(/\/?$/,"/");else{var p=i.src;t.test(p)?s=p.replace(t,"components/"):c.test(p)&&(s=p.replace(c,"$1components/"))}}var n=Prism.plugins.autoloader={languages_path:s,use_minified:!0,loadLanguages:m};Prism.hooks.add("complete",(function(e){var a=e.element,r=e.language;if(a&&r&&"none"!==r){var s=function(e){var a=(e.getAttribute("data-dependencies")||"").trim();if(!a){var r=e.parentElement;r&&"pre"===r.tagName.toLowerCase()&&(a=(r.getAttribute("data-dependencies")||"").trim())}return a?a.split(/\s*,\s*/g):[]}(a);/^diff-./i.test(r)?(s.push("diff"),s.push(r.substr("diff-".length))):s.push(r),s.every(o)||m(s,(function(){Prism.highlightElement(a)}))}}))}function o(e){if(e.indexOf("!")>=0)return!1;if((e=a[e]||e)in Prism.languages)return!0;var s=r[e];return s&&!s.error&&!1===s.loading}function m(s,i,t){"string"==typeof s&&(s=[s]);var c=s.length,l=0,p=!1;function k(){p||++l===c&&i&&i(s)}0!==c?s.forEach((function(s){!function(s,i,t){var c=s.indexOf("!")>=0;function l(){var e=r[s];e||(e=r[s]={callbacks:[]}),e.callbacks.push({success:i,error:t}),!c&&o(s)?u(s,"success"):!c&&e.error?u(s,"error"):!c&&e.loading||(e.loading=!0,e.error=!1,function(e,a,r){var s=document.createElement("script");s.src=e,s.async=!0,s.onload=function(){document.body.removeChild(s),a&&a()},s.onerror=function(){document.body.removeChild(s),r&&r()},document.body.appendChild(s)}(function(e){return n.languages_path+"prism-"+e+(n.use_minified?".min":"")+".js"}(s),(function(){e.loading=!1,u(s,"success")}),(function(){e.loading=!1,e.error=!0,u(s,"error")})))}s=s.replace("!","");var p=e[s=a[s]||s];p&&p.length?m(p,l,t):l()}(s,k,(function(){p||(p=!0,t&&t(s))}))})):i&&setTimeout(i,0)}function u(e,a){if(r[e]){for(var s=r[e].callbacks,i=0,t=s.length;i - - - - - -Command Line ▲ Prism plugins - - - - - - - - - - - -
    - -
    -

    How to use

    - -

    This is intended for code blocks (<pre><code>) and not for inline code.

    - -

    Add class command-line to your <pre>. For a server command line, specify the user and host names using the data-user and data-host attributes. The resulting prompt displays a # for the root user and $ for all other users. For any other command line, such as a Windows prompt, you may specify the entire prompt using the data-prompt attribute.

    - -

    Optional: Command output (positional)

    -

    You may specify the lines to be presented as output (no prompt and no highlighting) through the data-output attribute on the <pre> element in the following simple format:

    -
      -
    • A single number refers to the line with that number
    • -
    • Ranges are denoted by two numbers, separated with a hyphen (-)
    • -
    • Multiple line numbers or ranges are separated by commas.
    • -
    • Whitespace is allowed anywhere and will be stripped off.
    • -
    - -

    Examples:

    -
    -
    5
    -
    The 5th line
    - -
    1-5
    -
    Lines 1 through 5
    - -
    1,4
    -
    Line 1 and line 4
    - -
    1-2, 5, 9-20
    -
    Lines 1 through 2, line 5, lines 9 through 20
    -
    - -

    Optional: Command output (prefix)

    -

    To automatically present some lines as output, you can prefix those lines with any string and specify the prefix using the data-filter-output attribute on the <pre> element. For example, data-filter-output="(out)" will treat lines beginning with (out) as output and remove the prefix.

    - -

    A blank line will render as an empty line with a prompt. If you want an empty line without a prompt then you can use a line containing just the output prefix, e.g. (out). See the blank lines in the examples below.

    - -

    Output lines are user selectable by default, so if you select the whole content of the code block, it will select the shell commands and any output lines. This may not be desirable if you want to copy/paste just the commands and not the output. If you want to make the output not user selectable then add the following to your CSS:

    - -
    .command-line span.token.output {
    -	user-select: none;
    -}
    - -

    Optional: Multi-line commands

    -

    You can configure the plugin to handle multi-line commands. This can be done in two ways; setting a line continuation string (as in Bash); or explicitly marking continuation lines with a prefix for languages that do not have a continuation string/character, e.g. SQL, Scala, etc..

    - -
    -
    data-continuation-str
    -
    Set this attribute to the line continuation string/character, e.g. for bash data-continuation-str="\"
    - -
    data-filter-continuation
    -
    This works in a similar way to data-filter-output. Prefix all continuation lines with the value of data-filter-continuation and they will be displayed with the prompt set in data-continuation-prompt. For example, data-filter-continuation="(con)" will treat lines beginning with (con) as continuation lines and remove the prefix.
    - -
    data-continuation-prompt
    -
    Set this attribute to define the prompt to be displayed when the command has continued beyond the first line (whether using line continuation or command termination), e.g. for MySQL data-continuation-prompt="->". If this attribute is not set then a default of > will be used.
    -
    -
    - -
    -

    Examples

    - -

    Default Use Without Output

    - -
    <pre class="command-line">
    - -
    cd ~/.vim
    -
    -vim vimrc
    - -

    Root User Without Output

    - -
    <pre class="command-line"
    -     data-user="root"
    -     data-host="localhost">
    - -
    cd /usr/local/etc
    -cp php.ini php.ini.bak
    -vi php.ini
    - -

    Non-Root User With Output

    - -
    <pre class="command-line"
    -     data-user="chris"
    -     data-host="remotehost"
    -     data-output="2, 4-8">
    - -
    pwd
    -/usr/home/chris/bin
    -ls -la
    -total 2
    -drwxr-xr-x   2 chris  chris     11 Jan 10 16:48 .
    -drwxr--r-x  45 chris  chris     92 Feb 14 11:10 ..
    --rwxr-xr-x   1 chris  chris    444 Aug 25  2013 backup
    --rwxr-xr-x   1 chris  chris    642 Jan 17 14:42 deploy
    - -

    Windows PowerShell With Output

    - -
    <pre class="command-line"
    -     data-prompt="PS C:\Users\Chris>"
    -     data-output="2-19">
    - -
    dir
    -
    -
    -    Directory: C:\Users\Chris
    -
    -
    -Mode                LastWriteTime     Length Name
    -----                -------------     ------ ----
    -d-r--        10/14/2015   5:06 PM            Contacts
    -d-r--        12/12/2015   1:47 PM            Desktop
    -d-r--         11/4/2015   7:59 PM            Documents
    -d-r--        10/14/2015   5:06 PM            Downloads
    -d-r--        10/14/2015   5:06 PM            Favorites
    -d-r--        10/14/2015   5:06 PM            Links
    -d-r--        10/14/2015   5:06 PM            Music
    -d-r--        10/14/2015   5:06 PM            Pictures
    -d-r--        10/14/2015   5:06 PM            Saved Games
    -d-r--        10/14/2015   5:06 PM            Searches
    -d-r--        10/14/2015   5:06 PM            Videos
    - -

    Line continuation with Output (bash)

    - -
    <pre class="command-line"
    -     data-filter-output="(out)"
    -     data-continuation-str="\" >
    - - -
    export MY_VAR=123
    -echo "hello"
    -(out)hello
    -echo one \
    -two \
    -three
    -(out)one two three
    -(out)
    -echo "goodbye"
    -(out)goodbye
    - -

    Line continuation with Output (PowerShell)

    - -
    <pre class="command-line"
    -     data-prompt="ps c:\users\chris>"
    -     data-continuation-prompt=">>"
    -     data-filter-output="(out)"
    -     data-continuation-str=" `">
    - -
    Write-Host `
    -'Hello' `
    -'from' `
    -'PowerShell!'
    -(out)Hello from PowerShell!
    -Write-Host 'Goodbye from PowerShell!'
    -(out)Goodbye from PowerShell!
    - -

    Line continuation using prefix (MySQL/SQL)

    - -
    <pre class="command-line"
    -     data-prompt="mysql>"
    -     data-continuation-prompt="->"
    -     data-filter-output="(out)"
    -     data-filter-continuation="(con)">
    - -
    set @my_var = 'foo';
    -set @my_other_var = 'bar';
    -(out)
    -CREATE TABLE people (
    -(con)first_name VARCHAR(30) NOT NULL,
    -(con)last_name VARCHAR(30) NOT NULL
    -(con));
    -(out)Query OK, 0 rows affected (0.09 sec)
    -(out)
    -insert into people
    -(con)values ('John', 'Doe');
    -(out)Query OK, 1 row affected (0.02 sec)
    -(out)
    -select *
    -(con)from people
    -(con)order by last_name;
    -(out)+------------+-----------+
    -(out)| first_name | last_name |
    -(out)+------------+-----------+
    -(out)| John       | Doe       |
    -(out)+------------+-----------+
    -(out)1 row in set (0.00 sec)
    - -
    - -
    - - - - - - - - - - - - diff --git a/plugins/command-line/prism-command-line.css b/plugins/command-line/prism-command-line.css deleted file mode 100644 index 6a3c993d4c..0000000000 --- a/plugins/command-line/prism-command-line.css +++ /dev/null @@ -1,43 +0,0 @@ -.command-line-prompt { - border-right: 1px solid #999; - display: block; - float: left; - font-size: 100%; - letter-spacing: -1px; - margin-right: 1em; - pointer-events: none; - text-align: right; - - -webkit-user-select: none; - -moz-user-select: none; - -ms-user-select: none; - user-select: none; -} - -.command-line-prompt > span:before { - opacity: 0.7; - content: ' '; - display: block; - padding-right: 0.8em; -} - -.command-line-prompt > span[data-user]:before { - content: "[" attr(data-user) "@" attr(data-host) "] $"; -} - -.command-line-prompt > span[data-user="root"]:before { - content: "[" attr(data-user) "@" attr(data-host) "] #"; -} - -.command-line-prompt > span[data-prompt]:before { - content: attr(data-prompt); -} - -.command-line-prompt > span[data-continuation-prompt]:before { - content: attr(data-continuation-prompt); -} - -.command-line span.token.output { - /* Make shell output lines a bit lighter to distinguish them from shell commands */ - opacity: 0.7; -} diff --git a/plugins/command-line/prism-command-line.js b/plugins/command-line/prism-command-line.js deleted file mode 100644 index b5fa38fea2..0000000000 --- a/plugins/command-line/prism-command-line.js +++ /dev/null @@ -1,239 +0,0 @@ -(function () { - - if (typeof Prism === 'undefined' || typeof document === 'undefined') { - return; - } - - var CLASS_PATTERN = /(?:^|\s)command-line(?:\s|$)/; - var PROMPT_CLASS = 'command-line-prompt'; - - /** @type {(str: string, prefix: string) => boolean} */ - var startsWith = ''.startsWith - ? function (s, p) { return s.startsWith(p); } - : function (s, p) { return s.indexOf(p) === 0; }; - - // Support for IE11 that has no endsWith() - /** @type {(str: string, suffix: string) => boolean} */ - var endsWith = ''.endsWith - ? function (str, suffix) { - return str.endsWith(suffix); - } - : function (str, suffix) { - var len = str.length; - return str.substring(len - suffix.length, len) === suffix; - }; - - /** - * Returns whether the given hook environment has a command line info object. - * - * @param {any} env - * @returns {boolean} - */ - function hasCommandLineInfo(env) { - var vars = env.vars = env.vars || {}; - return 'command-line' in vars; - } - /** - * Returns the command line info object from the given hook environment. - * - * @param {any} env - * @returns {CommandLineInfo} - * - * @typedef CommandLineInfo - * @property {boolean} [complete] - * @property {number} [numberOfLines] - * @property {string[]} [outputLines] - */ - function getCommandLineInfo(env) { - var vars = env.vars = env.vars || {}; - return vars['command-line'] = vars['command-line'] || {}; - } - - - Prism.hooks.add('before-highlight', function (env) { - var commandLine = getCommandLineInfo(env); - - if (commandLine.complete || !env.code) { - commandLine.complete = true; - return; - } - - // Works only for wrapped inside
     (not inline).
    -		var pre = env.element.parentElement;
    -		if (!pre || !/pre/i.test(pre.nodeName) || // Abort only if neither the 
     nor the  have the class
    -			(!CLASS_PATTERN.test(pre.className) && !CLASS_PATTERN.test(env.element.className))) {
    -			commandLine.complete = true;
    -			return;
    -		}
    -
    -		// The element might be highlighted multiple times, so we just remove the previous prompt
    -		var existingPrompt = env.element.querySelector('.' + PROMPT_CLASS);
    -		if (existingPrompt) {
    -			existingPrompt.remove();
    -		}
    -
    -		var codeLines = env.code.split('\n');
    -
    -		commandLine.numberOfLines = codeLines.length;
    -		/** @type {string[]} */
    -		var outputLines = commandLine.outputLines = [];
    -
    -		var outputSections = pre.getAttribute('data-output');
    -		var outputFilter = pre.getAttribute('data-filter-output');
    -		if (outputSections !== null) { // The user specified the output lines. -- cwells
    -			outputSections.split(',').forEach(function (section) {
    -				var range = section.split('-');
    -				var outputStart = parseInt(range[0], 10);
    -				var outputEnd = range.length === 2 ? parseInt(range[1], 10) : outputStart;
    -
    -				if (!isNaN(outputStart) && !isNaN(outputEnd)) {
    -					if (outputStart < 1) {
    -						outputStart = 1;
    -					}
    -					if (outputEnd > codeLines.length) {
    -						outputEnd = codeLines.length;
    -					}
    -					// Convert start and end to 0-based to simplify the arrays. -- cwells
    -					outputStart--;
    -					outputEnd--;
    -					// Save the output line in an array and clear it in the code so it's not highlighted. -- cwells
    -					for (var j = outputStart; j <= outputEnd; j++) {
    -						outputLines[j] = codeLines[j];
    -						codeLines[j] = '';
    -					}
    -				}
    -			});
    -		} else if (outputFilter) { // Treat lines beginning with this string as output. -- cwells
    -			for (var i = 0; i < codeLines.length; i++) {
    -				if (startsWith(codeLines[i], outputFilter)) { // This line is output. -- cwells
    -					outputLines[i] = codeLines[i].slice(outputFilter.length);
    -					codeLines[i] = '';
    -				}
    -			}
    -		}
    -
    -		var continuationLineIndicies = commandLine.continuationLineIndicies = new Set();
    -		var lineContinuationStr = pre.getAttribute('data-continuation-str');
    -		var continuationFilter = pre.getAttribute('data-filter-continuation');
    -
    -		// Identify code lines where the command has continued onto subsequent
    -		// lines and thus need a different prompt. Need to do this after the output
    -		// lines have been removed to ensure we don't pick up a continuation string
    -		// in an output line.
    -		for (var j = 0; j < codeLines.length; j++) {
    -			var line = codeLines[j];
    -			if (!line) {
    -				continue;
    -			}
    -
    -			// Record the next line as a continuation if this one ends in a continuation str.
    -			if (lineContinuationStr && endsWith(line, lineContinuationStr)) {
    -				continuationLineIndicies.add(j + 1);
    -			}
    -			// Record this line as a continuation if marked with a continuation prefix
    -			// (that we will remove).
    -			if (j > 0 && continuationFilter && startsWith(line, continuationFilter)) {
    -				codeLines[j] = line.slice(continuationFilter.length);
    -				continuationLineIndicies.add(j);
    -			}
    -		}
    -
    -		env.code = codeLines.join('\n');
    -	});
    -
    -	Prism.hooks.add('before-insert', function (env) {
    -		var commandLine = getCommandLineInfo(env);
    -
    -		if (commandLine.complete) {
    -			return;
    -		}
    -
    -		// Reinsert the output lines into the highlighted code. -- cwells
    -		var codeLines = env.highlightedCode.split('\n');
    -		var outputLines = commandLine.outputLines || [];
    -		for (var i = 0, l = codeLines.length; i < l; i++) {
    -			// Add spans to allow distinction of input/output text for styling
    -			if (outputLines.hasOwnProperty(i)) {
    -				// outputLines were removed from codeLines so missed out on escaping
    -				// of markup so do it here.
    -				codeLines[i] = ''
    -					+ Prism.util.encode(outputLines[i]) + '';
    -			} else {
    -				codeLines[i] = ''
    -					+ codeLines[i] + '';
    -			}
    -		}
    -		env.highlightedCode = codeLines.join('\n');
    -	});
    -
    -	Prism.hooks.add('complete', function (env) {
    -		if (!hasCommandLineInfo(env)) {
    -			// the previous hooks never ran
    -			return;
    -		}
    -
    -		var commandLine = getCommandLineInfo(env);
    -
    -		if (commandLine.complete) {
    -			return;
    -		}
    -
    -		var pre = env.element.parentElement;
    -		if (CLASS_PATTERN.test(env.element.className)) { // Remove the class "command-line" from the 
    -			env.element.className = env.element.className.replace(CLASS_PATTERN, ' ');
    -		}
    -		if (!CLASS_PATTERN.test(pre.className)) { // Add the class "command-line" to the 
    -			pre.className += ' command-line';
    -		}
    -
    -		function getAttribute(key, defaultValue) {
    -			return (pre.getAttribute(key) || defaultValue).replace(/"/g, '"');
    -		}
    -
    -		// Create the "rows" that will become the command-line prompts. -- cwells
    -		var promptLines = '';
    -		var rowCount = commandLine.numberOfLines || 0;
    -		var promptText = getAttribute('data-prompt', '');
    -		var promptLine;
    -		if (promptText !== '') {
    -			promptLine = '';
    -		} else {
    -			var user = getAttribute('data-user', 'user');
    -			var host = getAttribute('data-host', 'localhost');
    -			promptLine = '';
    -		}
    -
    -		var continuationLineIndicies = commandLine.continuationLineIndicies || new Set();
    -		var continuationPromptText = getAttribute('data-continuation-prompt', '>');
    -		var continuationPromptLine = '';
    -
    -		// Assemble all the appropriate prompt/continuation lines
    -		for (var j = 0; j < rowCount; j++) {
    -			if (continuationLineIndicies.has(j)) {
    -				promptLines += continuationPromptLine;
    -			} else {
    -				promptLines += promptLine;
    -			}
    -		}
    -
    -		// Create the wrapper element. -- cwells
    -		var prompt = document.createElement('span');
    -		prompt.className = PROMPT_CLASS;
    -		prompt.innerHTML = promptLines;
    -
    -		// Remove the prompt from the output lines. -- cwells
    -		var outputLines = commandLine.outputLines || [];
    -		for (var i = 0, l = outputLines.length; i < l; i++) {
    -			if (outputLines.hasOwnProperty(i)) {
    -				var node = prompt.children[i];
    -				node.removeAttribute('data-user');
    -				node.removeAttribute('data-host');
    -				node.removeAttribute('data-prompt');
    -			}
    -		}
    -
    -		env.element.insertBefore(prompt, env.element.firstChild);
    -		commandLine.complete = true;
    -	});
    -
    -}());
    diff --git a/plugins/command-line/prism-command-line.min.css b/plugins/command-line/prism-command-line.min.css
    deleted file mode 100644
    index 7d7fc595af..0000000000
    --- a/plugins/command-line/prism-command-line.min.css
    +++ /dev/null
    @@ -1 +0,0 @@
    -.command-line-prompt{border-right:1px solid #999;display:block;float:left;font-size:100%;letter-spacing:-1px;margin-right:1em;pointer-events:none;text-align:right;-webkit-user-select:none;-moz-user-select:none;-ms-user-select:none;user-select:none}.command-line-prompt>span:before{opacity:.7;content:' ';display:block;padding-right:.8em}.command-line-prompt>span[data-user]:before{content:"[" attr(data-user) "@" attr(data-host) "] $"}.command-line-prompt>span[data-user=root]:before{content:"[" attr(data-user) "@" attr(data-host) "] #"}.command-line-prompt>span[data-prompt]:before{content:attr(data-prompt)}.command-line-prompt>span[data-continuation-prompt]:before{content:attr(data-continuation-prompt)}.command-line span.token.output{opacity:.7}
    \ No newline at end of file
    diff --git a/plugins/command-line/prism-command-line.min.js b/plugins/command-line/prism-command-line.min.js
    deleted file mode 100644
    index 971ae8156d..0000000000
    --- a/plugins/command-line/prism-command-line.min.js
    +++ /dev/null
    @@ -1 +0,0 @@
    -!function(){if("undefined"!=typeof Prism&&"undefined"!=typeof document){var e=/(?:^|\s)command-line(?:\s|$)/,t="command-line-prompt",n="".startsWith?function(e,t){return e.startsWith(t)}:function(e,t){return 0===e.indexOf(t)},a="".endsWith?function(e,t){return e.endsWith(t)}:function(e,t){var n=e.length;return e.substring(n-t.length,n)===t};Prism.hooks.add("before-highlight",(function(i){var o=r(i);if(!o.complete&&i.code){var s=i.element.parentElement;if(s&&/pre/i.test(s.nodeName)&&(e.test(s.className)||e.test(i.element.className))){var l=i.element.querySelector("."+t);l&&l.remove();var m=i.code.split("\n");o.numberOfLines=m.length;var u=o.outputLines=[],c=s.getAttribute("data-output"),d=s.getAttribute("data-filter-output");if(null!==c)c.split(",").forEach((function(e){var t=e.split("-"),n=parseInt(t[0],10),a=2===t.length?parseInt(t[1],10):n;if(!isNaN(n)&&!isNaN(a)){n<1&&(n=1),a>m.length&&(a=m.length),a--;for(var r=--n;r<=a;r++)u[r]=m[r],m[r]=""}}));else if(d)for(var p=0;p0&&v&&n(b,v)&&(m[g]=b.slice(v.length),f.add(g)))}i.code=m.join("\n")}else o.complete=!0}else o.complete=!0})),Prism.hooks.add("before-insert",(function(e){var t=r(e);if(!t.complete){for(var n=e.highlightedCode.split("\n"),a=t.outputLines||[],i=0,o=n.length;i'+Prism.util.encode(a[i])+"":n[i]=''+n[i]+"";e.highlightedCode=n.join("\n")}})),Prism.hooks.add("complete",(function(n){if(function(e){return"command-line"in(e.vars=e.vars||{})}(n)){var a=r(n);if(!a.complete){var i=n.element.parentElement;e.test(n.element.className)&&(n.element.className=n.element.className.replace(e," ")),e.test(i.className)||(i.className+=" command-line");var o,s="",l=a.numberOfLines||0,m=b("data-prompt","");o=""!==m?'':'';for(var u=a.continuationLineIndicies||new Set,c='")+'">',d=0;d
    -
    -
    -
    -	
    -	
    -	Copy to Clipboard ▲ Prism plugins
    -	
    -	
    -	
    -	
    -	
    -
    -	
    -	
    -
    -
    -
    -
    - -
    -

    How to use

    - -

    The plugin depends on the Prism Toolbar plugin. In addition to including the plugin file with your PrismJS build, ensure it is loaded before the plugin.

    -
    - -
    -

    Settings

    - -

    By default, the plugin shows messages in English and sets a 5-second timeout after a click. You can use the following HTML5 data attributes to override the default settings:

    - -
      -
    • data-prismjs-copy — default message displayed by Copy to Clipboard;
    • -
    • data-prismjs-copy-error — a message displayed after failing copying, prompting the user to press Ctrl+C;
    • -
    • data-prismjs-copy-success — a message displayed after a successful copying;
    • -
    • data-prismjs-copy-timeout — a timeout (in milliseconds) after copying. Once the timeout passed, the success or error message will revert back to the default message. The value should be a non-negative integer.
    • -
    - -

    The plugin traverses up the DOM tree to find each of these attributes. The search starts at every pre code element and stops at the closest ancestor element that has a desired attribute or at the worst case, at the html element.

    - -

    Warning! Although possible, you definitely shouldn't add these attributes to the html element, because a human-readable text should be placed after the character encoding declaration (<meta charset="...">), and the latter must be serialized completely within the first 512 (in older browsers) or 1024 bytes of the document. Consider using the body element or one of its descendants.

    -
    - -
    -

    Styling

    - -

    This plugin supports customizing the style of the copy button. To understand how this is done, let's look at the HTML structure of the copy button:

    - -
    <button class="copy-to-clipboard-button" type="button" data-copy-state="copy">
    -	<span>Copy</span>
    -</button>
    - -

    The copy-to-clipboard-button class can be used to select the button. The data-copy-state attribute indicates the current state of the plugin with the 3 possible states being:

    - -
      -
    • data-copy-state="copy" — default state;
    • -
    • data-copy-state="copy-error" — the state after failing copying;
    • -
    • data-copy-state="copy-success" — the state after successful copying;
    • -
    - -

    These 3 states should be conveyed to the user either by different styling or displaying the button text.

    -
    - -
    -

    Examples

    - -

    Sharing

    - -

    The following code blocks show modified messages and both use a half-second timeout. The other settings are set to default.

    - -

    Source code:

    - -
    <body data-prismjs-copy-timeout="500">
    -	<pre><code class="language-js" data-prismjs-copy="Copy the JavaScript snippet!">console.log('Hello, world!');</code></pre>
    -
    -	<pre><code class="language-c" data-prismjs-copy="Copy the C snippet!">int main() {
    -	return 0;
    -}</code></pre>
    -</body>
    - -

    Output:

    - -
    -
    console.log('Hello, world!');
    - -
    int main() {
    -	return 0;
    -}
    -
    - -

    Inheritance

    - -

    The plugin always use the closest ancestor element that has a desired attribute, so it's possible to override any setting on any descendant. In the following example, the baz message is used. The other settings are set to default.

    - -

    Source code:

    - -
    <body data-prismjs-copy="foo">
    -	<main data-prismjs-copy="bar">
    -		<pre><code class="language-c" data-prismjs-copy="baz">int main() {
    -	return 0;
    -}</code></pre>
    -	</main>
    -</body>
    - -

    Output:

    - -
    -
    -
    int main() {
    -	return 0;
    -}
    -
    -
    - -

    i18n

    - -

    You can use the data attributes for internationalization.

    - -

    The following code blocks use shared messages in Russian and the default 5-second timeout.

    - -

    Source code:

    - -
    <!DOCTYPE html>
    -<html lang="ru">
    -<!-- The head is omitted. -->
    -<body
    -	data-prismjs-copy="Скопировать"
    -	data-prismjs-copy-error="Нажмите Ctrl+C, чтобы скопировать"
    -	data-prismjs-copy-success="Скопировано!"
    ->
    -	<pre><code class="language-c">int main() {
    -	return 0;
    -}</code></pre>
    -
    -	<pre><code class="language-js">console.log('Hello, world!');</code></pre>
    -</body>
    -</html>
    - -

    Output:

    - -
    -
    int main() {
    -	return 0;
    -}
    - -
    console.log('Hello, world!');
    -
    - -

    The next HTML document is in English, but some code blocks show messages in Russian and simplified Mainland Chinese. The other settings are set to default.

    - -

    Source code:

    - -
    <!DOCTYPE html>
    -<html lang="en"><!-- The head is omitted. -->
    -<body>
    -	<pre><code class="language-js">console.log('Hello, world!');</code></pre>
    -
    -	<pre
    -		lang="ru"
    -		data-prismjs-copy="Скопировать"
    -		data-prismjs-copy-error="Нажмите Ctrl+C, чтобы скопировать"
    -		data-prismjs-copy-success="Скопировано!"
    -	><code class="language-js">console.log('Привет, мир!');</code></pre>
    -
    -	<pre
    -		lang="zh-Hans-CN"
    -		data-prismjs-copy="复制文本"
    -		data-prismjs-copy-error="按Ctrl+C复制"
    -		data-prismjs-copy-success="文本已复制!"
    -	><code class="language-js">console.log('你好,世界!');</code></pre>
    -</body>
    -</html>
    - -

    Output:

    - -
    -
    console.log('Hello, world!');
    - -
    console.log('Привет, мир!');
    - -
    console.log('你好,世界!');
    -
    -
    - -
    - - - - - - - - - - - diff --git a/plugins/copy-to-clipboard/prism-copy-to-clipboard.js b/plugins/copy-to-clipboard/prism-copy-to-clipboard.js deleted file mode 100644 index f6cac476ac..0000000000 --- a/plugins/copy-to-clipboard/prism-copy-to-clipboard.js +++ /dev/null @@ -1,160 +0,0 @@ -(function () { - - if (typeof Prism === 'undefined' || typeof document === 'undefined') { - return; - } - - if (!Prism.plugins.toolbar) { - console.warn('Copy to Clipboard plugin loaded before Toolbar plugin.'); - - return; - } - - /** - * When the given elements is clicked by the user, the given text will be copied to clipboard. - * - * @param {HTMLElement} element - * @param {CopyInfo} copyInfo - * - * @typedef CopyInfo - * @property {() => string} getText - * @property {() => void} success - * @property {(reason: unknown) => void} error - */ - function registerClipboard(element, copyInfo) { - element.addEventListener('click', function () { - copyTextToClipboard(copyInfo); - }); - } - - // https://stackoverflow.com/a/30810322/7595472 - - /** @param {CopyInfo} copyInfo */ - function fallbackCopyTextToClipboard(copyInfo) { - var textArea = document.createElement('textarea'); - textArea.value = copyInfo.getText(); - - // Avoid scrolling to bottom - textArea.style.top = '0'; - textArea.style.left = '0'; - textArea.style.position = 'fixed'; - - document.body.appendChild(textArea); - textArea.focus(); - textArea.select(); - - try { - var successful = document.execCommand('copy'); - setTimeout(function () { - if (successful) { - copyInfo.success(); - } else { - copyInfo.error(); - } - }, 1); - } catch (err) { - setTimeout(function () { - copyInfo.error(err); - }, 1); - } - - document.body.removeChild(textArea); - } - /** @param {CopyInfo} copyInfo */ - function copyTextToClipboard(copyInfo) { - if (navigator.clipboard) { - navigator.clipboard.writeText(copyInfo.getText()).then(copyInfo.success, function () { - // try the fallback in case `writeText` didn't work - fallbackCopyTextToClipboard(copyInfo); - }); - } else { - fallbackCopyTextToClipboard(copyInfo); - } - } - - /** - * Selects the text content of the given element. - * - * @param {Element} element - */ - function selectElementText(element) { - // https://stackoverflow.com/a/20079910/7595472 - window.getSelection().selectAllChildren(element); - } - - /** - * Traverses up the DOM tree to find data attributes that override the default plugin settings. - * - * @param {Element} startElement An element to start from. - * @returns {Settings} The plugin settings. - * @typedef {Record<"copy" | "copy-error" | "copy-success" | "copy-timeout", string | number>} Settings - */ - function getSettings(startElement) { - /** @type {Settings} */ - var settings = { - 'copy': 'Copy', - 'copy-error': 'Press Ctrl+C to copy', - 'copy-success': 'Copied!', - 'copy-timeout': 5000 - }; - - var prefix = 'data-prismjs-'; - for (var key in settings) { - var attr = prefix + key; - var element = startElement; - while (element && !element.hasAttribute(attr)) { - element = element.parentElement; - } - if (element) { - settings[key] = element.getAttribute(attr); - } - } - return settings; - } - - Prism.plugins.toolbar.registerButton('copy-to-clipboard', function (env) { - var element = env.element; - - var settings = getSettings(element); - - var linkCopy = document.createElement('button'); - linkCopy.className = 'copy-to-clipboard-button'; - linkCopy.setAttribute('type', 'button'); - var linkSpan = document.createElement('span'); - linkCopy.appendChild(linkSpan); - - setState('copy'); - - registerClipboard(linkCopy, { - getText: function () { - return element.textContent; - }, - success: function () { - setState('copy-success'); - - resetText(); - }, - error: function () { - setState('copy-error'); - - setTimeout(function () { - selectElementText(element); - }, 1); - - resetText(); - } - }); - - return linkCopy; - - function resetText() { - setTimeout(function () { setState('copy'); }, settings['copy-timeout']); - } - - /** @param {"copy" | "copy-error" | "copy-success"} state */ - function setState(state) { - linkSpan.textContent = settings[state]; - linkCopy.setAttribute('data-copy-state', state); - } - }); -}()); diff --git a/plugins/copy-to-clipboard/prism-copy-to-clipboard.min.js b/plugins/copy-to-clipboard/prism-copy-to-clipboard.min.js deleted file mode 100644 index 7915ce9c13..0000000000 --- a/plugins/copy-to-clipboard/prism-copy-to-clipboard.min.js +++ /dev/null @@ -1 +0,0 @@ -!function(){function t(t){var e=document.createElement("textarea");e.value=t.getText(),e.style.top="0",e.style.left="0",e.style.position="fixed",document.body.appendChild(e),e.focus(),e.select();try{var o=document.execCommand("copy");setTimeout((function(){o?t.success():t.error()}),1)}catch(e){setTimeout((function(){t.error(e)}),1)}document.body.removeChild(e)}"undefined"!=typeof Prism&&"undefined"!=typeof document&&(Prism.plugins.toolbar?Prism.plugins.toolbar.registerButton("copy-to-clipboard",(function(e){var o=e.element,n=function(t){var e={copy:"Copy","copy-error":"Press Ctrl+C to copy","copy-success":"Copied!","copy-timeout":5e3};for(var o in e){for(var n="data-prismjs-"+o,c=t;c&&!c.hasAttribute(n);)c=c.parentElement;c&&(e[o]=c.getAttribute(n))}return e}(o),c=document.createElement("button");c.className="copy-to-clipboard-button",c.setAttribute("type","button");var r=document.createElement("span");return c.appendChild(r),u("copy"),function(e,o){e.addEventListener("click",(function(){!function(e){navigator.clipboard?navigator.clipboard.writeText(e.getText()).then(e.success,(function(){t(e)})):t(e)}(o)}))}(c,{getText:function(){return o.textContent},success:function(){u("copy-success"),i()},error:function(){u("copy-error"),setTimeout((function(){!function(t){window.getSelection().selectAllChildren(t)}(o)}),1),i()}}),c;function i(){setTimeout((function(){u("copy")}),n["copy-timeout"])}function u(t){r.textContent=n[t],c.setAttribute("data-copy-state",t)}})):console.warn("Copy to Clipboard plugin loaded before Toolbar plugin."))}(); \ No newline at end of file diff --git a/plugins/custom-class/index.html b/plugins/custom-class/index.html deleted file mode 100644 index ec94c122d8..0000000000 --- a/plugins/custom-class/index.html +++ /dev/null @@ -1,186 +0,0 @@ - - - - - - -Custom Class ▲ Prism plugins - - - - - - - - - -
    - -
    -

    Motivation

    - -

    Prism default classes are sensible but fixed and too generic. This plugin provide some ways to customize those classes to suit your needs. Example usages:

    - -
      -
    • - You want to add namespace for all of them (like .prism--comment) to avoid conflict with your existing classes. -
    • -
    • - You use a naming convention (like BEM). You want to write classes like .editor__comment. -
    • -
    • You use - CSS Modules. You want to use your hashed classes, like .comment_7sh3a. -
    • -
    • You need more granular control about the classes of certain tokens. - You can define functions which will add new classes to tokens, so selectively change the highlighting of certain parts of your code. -
    • -
    -
    - -
    -

    How to use

    - -

    Prefix all Prism classes

    - -
    Prism.plugins.customClass.prefix('prism--')
    - -

    Replace some Prism classes with ones you defined

    - -
    Prism.plugins.customClass.map({
    -	keyword: 'special-keyword',
    -	string: 'string_ch29s',
    -	comment: 'comment_93jsa'
    -});
    - -

    Object's keys are the classes you want to replace (eg: comment), with their values being the classes you want to use (eg: my-comment). Classes which are not specified will stay as they are.

    - -

    Alternatively you can also pass a function that takes the original class and returns the mapped class. This function can also be used implement language specific mapped classes.
    Example:

    - -
    Prism.plugins.customClass.map((className, language) => {
    -	if (language === 'css') {
    -		return cssSpecificMap[className] || className;
    -	} else {
    -		return className;
    -	}
    -});
    - -

    Add new classes

    - -

    You can add new classes with per-token and per-language precision.

    - -
    Prism.plugins.customClass.add(({content, type, language}) => {
    -	if (content === 'content' && type === 'property' && language === 'css') {
    -		return 'content-property';
    -	}
    -});
    - -

    Note: The given content is the inner HTML of the current token. All < and & characters are escaped and it might contain the HTML code of nested tokens.

    - -
    - -
    -

    Notes

    - -
      -
    • -

      Feature functions must be called AFTER Prism and this plugin. For example:

      - -
      <!-- 1. load prism -->
      -<script src="prism.js"></script>
      -<!-- 2. load the plugin if you don't include it inside prism when download -->
      -<script src="plugins/custom-class/custom-class.js"></script>
      -<!-- 3. call the feature you want to use -->
      -<script>
      -	Prism.plugins.customClass.map(myClassMap);
      -	Prism.plugins.customClass.prefix(myPrefixString);
      -</script>
      - -
    • - -
    • In most cases, using 1 feature is enough. However, it is possible to use both of them together if you want (Result will be like .my-namespace--comment_93jsa).
    • - -
    - -

    CSS Modules Usage:

    - -

    The initial purpose of this plugin is to be used with CSS Modules. It works perfectly with the class map object returned by CSS Modules. For example:

    - -
    import Prism from 'prismjs';
    -import classMap from 'styles/editor-class-map.css';
    -Prism.plugins.customClass.map(classMap)
    - -

    Note: This plugin only affects generated token elements (usually of the form span.token). The classes of code and pre elements as well as all elements generated by other plugins (e.g. Toolbar elements and line number elements) will not be changed.

    -
    - -
    -

    Example

    - -

    Prefix and map classes

    - -

    Input

    -
    <pre class="language-javascript"><code>
    -	var foo = 'bar';
    -</code></pre>
    - -

    Options

    -
    Prism.plugins.customClass.map({
    -	keyword: 'special-keyword',
    -	string: 'my-string'
    -});
    -Prism.plugins.customClass.prefix('pr-');
    - -

    Output

    -
    <pre class="language-javascript"><code class="language-markup">
    -	<span class="pr-token pr-special-keyword">var</span>
    -	foo
    -	<span class="pr-token pr-operator">=</span>
    -	<span class="pr-token pr-my-string">'bar'</span>
    -	<span class="pr-token pr-punctuation">;</span>
    -</code></pre>
    - -

    Note that this plugin only affects tokens. The classes of the code and pre elements won't be prefixed.

    - -

    Add new classes

    - -

    Input

    -
    <pre class="language-css"><code>
    -a::after {
    -	content: '\2b00 ';
    -	opacity: .7;
    -}
    -</code></pre>
    - -

    Options

    -
    Prism.plugins.customClass.add(({language, type, content}) => {
    -	if (content === 'content' && type === 'property' && language === 'css') {
    -		return 'content-property';
    -	}
    -});
    - -

    Output

    -
    <pre class=" language-css"><code class=" language-css">
    -<span class="token selector">a::after</span>
    -<span class="token punctuation">{</span>
    -	<span class="token property content-property">content</span>
    -	<span class="token punctuation">:</span>
    -	<span class="token string">'\2b00 '</span>
    -	<span class="token punctuation">;</span>
    -	<span class="token property">opacity</span>
    -	<span class="token punctuation">:</span>
    -	 .7
    -	<span class="token punctuation">;</span>
    -<span class="token punctuation">}</span>
    -</code></pre>
    - -
    - -
    - - - - - - - - - diff --git a/plugins/custom-class/prism-custom-class.js b/plugins/custom-class/prism-custom-class.js deleted file mode 100644 index a8dca48f98..0000000000 --- a/plugins/custom-class/prism-custom-class.js +++ /dev/null @@ -1,110 +0,0 @@ -(function () { - - if (typeof Prism === 'undefined') { - return; - } - - /** - * @callback ClassMapper - * @param {string} className - * @param {string} language - * @returns {string} - * - * @callback ClassAdder - * @param {ClassAdderEnvironment} env - * @returns {undefined | string | string[]} - * - * @typedef ClassAdderEnvironment - * @property {string} language - * @property {string} type - * @property {string} content - */ - - // options - - /** @type {ClassAdder | undefined} */ - var adder; - /** @type {ClassMapper | undefined} */ - var mapper; - /** @type {string} */ - var prefixString = ''; - - - /** - * @param {string} className - * @param {string} language - */ - function apply(className, language) { - return prefixString + (mapper ? mapper(className, language) : className); - } - - - Prism.plugins.customClass = { - /** - * Sets the function which can be used to add custom aliases to any token. - * - * @param {ClassAdder} classAdder - */ - add: function (classAdder) { - adder = classAdder; - }, - /** - * Maps all class names using the given object or map function. - * - * This does not affect the prefix. - * - * @param {Object | ClassMapper} classMapper - */ - map: function map(classMapper) { - if (typeof classMapper === 'function') { - mapper = classMapper; - } else { - mapper = function (className) { - return classMapper[className] || className; - }; - } - }, - /** - * Adds the given prefix to all class names. - * - * @param {string} string - */ - prefix: function prefix(string) { - prefixString = string || ''; - }, - /** - * Applies the current mapping and prefix to the given class name. - * - * @param {string} className A single class name. - * @param {string} language The language of the code that contains this class name. - * - * If the language is unknown, pass `"none"`. - */ - apply: apply - }; - - Prism.hooks.add('wrap', function (env) { - if (adder) { - var result = adder({ - content: env.content, - type: env.type, - language: env.language - }); - - if (Array.isArray(result)) { - env.classes.push.apply(env.classes, result); - } else if (result) { - env.classes.push(result); - } - } - - if (!mapper && !prefixString) { - return; - } - - env.classes = env.classes.map(function (c) { - return apply(c, env.language); - }); - }); - -}()); diff --git a/plugins/custom-class/prism-custom-class.min.js b/plugins/custom-class/prism-custom-class.min.js deleted file mode 100644 index cfb51961bd..0000000000 --- a/plugins/custom-class/prism-custom-class.min.js +++ /dev/null @@ -1 +0,0 @@ -!function(){if("undefined"!=typeof Prism){var n,s,a="";Prism.plugins.customClass={add:function(s){n=s},map:function(n){s="function"==typeof n?n:function(s){return n[s]||s}},prefix:function(n){a=n||""},apply:t},Prism.hooks.add("wrap",(function(e){if(n){var u=n({content:e.content,type:e.type,language:e.language});Array.isArray(u)?e.classes.push.apply(e.classes,u):u&&e.classes.push(u)}(s||a)&&(e.classes=e.classes.map((function(n){return t(n,e.language)})))}))}function t(n,t){return a+(s?s(n,t):n)}}(); \ No newline at end of file diff --git a/plugins/data-uri-highlight/index.html b/plugins/data-uri-highlight/index.html deleted file mode 100644 index 0c986aae69..0000000000 --- a/plugins/data-uri-highlight/index.html +++ /dev/null @@ -1,55 +0,0 @@ - - - - - - -Data-URI Highlight ▲ Prism plugins - - - - - - - - - - - -
    - -
    -

    How to use

    -

    Data-URIs will be highlighted automatically, provided the needed grammar is loaded. - The grammar to use is guessed using the MIME type information.

    -
    - -
    -

    Example

    - -
    div {
    -    border: 40px solid transparent;
    -    border-image: 33.334% url('data:image/svg+xml,<svg xmlns="http://www.w3.org/2000/svg" width="30" height="30"> \
    -                          <circle cx="5" cy="5" r="5" fill="%23ab4"/><circle cx="15" cy="5" r="5" fill="%23655"/> \
    -                          <circle cx="25" cy="5" r="5" fill="%23e07"/><circle cx="5" cy="15" r="5" fill="%23655"/> \
    -                          <circle cx="15" cy="15" r="5" fill="hsl(15, 25%, 75%)"/> \
    -                          <circle cx="25" cy="15" r="5" fill="%23655"/><circle cx="5" cy="25" r="5" fill="%23fb3"/> \
    -                          <circle cx="15" cy="25" r="5" fill="%23655"/><circle cx="25" cy="25" r="5" fill="%2358a"/></svg>');
    -    padding: 1em;
    -    max-width: 20em;
    -    font: 130%/1.6 Baskerville, Palatino, serif;
    -}
    - -
    - -
    - - - - - - - - - - diff --git a/plugins/data-uri-highlight/prism-data-uri-highlight.js b/plugins/data-uri-highlight/prism-data-uri-highlight.js deleted file mode 100644 index ea1f4b3a34..0000000000 --- a/plugins/data-uri-highlight/prism-data-uri-highlight.js +++ /dev/null @@ -1,94 +0,0 @@ -(function () { - - if (typeof Prism === 'undefined') { - return; - } - - var autoLinkerProcess = function (grammar) { - if (Prism.plugins.autolinker) { - Prism.plugins.autolinker.processGrammar(grammar); - } - return grammar; - }; - var dataURI = { - pattern: /(.)\bdata:[^\/]+\/[^,]+,(?:(?!\1)[\s\S]|\\\1)+(?=\1)/, - lookbehind: true, - inside: { - 'language-css': { - pattern: /(data:[^\/]+\/(?:[^+,]+\+)?css,)[\s\S]+/, - lookbehind: true - }, - 'language-javascript': { - pattern: /(data:[^\/]+\/(?:[^+,]+\+)?javascript,)[\s\S]+/, - lookbehind: true - }, - 'language-json': { - pattern: /(data:[^\/]+\/(?:[^+,]+\+)?json,)[\s\S]+/, - lookbehind: true - }, - 'language-markup': { - pattern: /(data:[^\/]+\/(?:[^+,]+\+)?(?:html|xml),)[\s\S]+/, - lookbehind: true - } - } - }; - - // Tokens that may contain URLs - var candidates = ['url', 'attr-value', 'string']; - - Prism.plugins.dataURIHighlight = { - processGrammar: function (grammar) { - // Abort if grammar has already been processed - if (!grammar || grammar['data-uri']) { - return; - } - - Prism.languages.DFS(grammar, function (key, def, type) { - if (candidates.indexOf(type) > -1 && !Array.isArray(def)) { - if (!def.pattern) { - def = this[key] = { - pattern: def - }; - } - - def.inside = def.inside || {}; - - if (type == 'attr-value') { - Prism.languages.insertBefore('inside', def.inside['url-link'] ? 'url-link' : 'punctuation', { - 'data-uri': dataURI - }, def); - } else { - if (def.inside['url-link']) { - Prism.languages.insertBefore('inside', 'url-link', { - 'data-uri': dataURI - }, def); - } else { - def.inside['data-uri'] = dataURI; - } - } - } - }); - grammar['data-uri'] = dataURI; - } - }; - - Prism.hooks.add('before-highlight', function (env) { - // Prepare the needed grammars for this code block - if (dataURI.pattern.test(env.code)) { - for (var p in dataURI.inside) { - if (dataURI.inside.hasOwnProperty(p)) { - if (!dataURI.inside[p].inside && dataURI.inside[p].pattern.test(env.code)) { - var lang = p.match(/^language-(.+)/)[1]; - if (Prism.languages[lang]) { - dataURI.inside[p].inside = { - rest: autoLinkerProcess(Prism.languages[lang]) - }; - } - } - } - } - } - - Prism.plugins.dataURIHighlight.processGrammar(env.grammar); - }); -}()); diff --git a/plugins/data-uri-highlight/prism-data-uri-highlight.min.js b/plugins/data-uri-highlight/prism-data-uri-highlight.min.js deleted file mode 100644 index a56d6c9251..0000000000 --- a/plugins/data-uri-highlight/prism-data-uri-highlight.min.js +++ /dev/null @@ -1 +0,0 @@ -!function(){if("undefined"!=typeof Prism){var i={pattern:/(.)\bdata:[^\/]+\/[^,]+,(?:(?!\1)[\s\S]|\\\1)+(?=\1)/,lookbehind:!0,inside:{"language-css":{pattern:/(data:[^\/]+\/(?:[^+,]+\+)?css,)[\s\S]+/,lookbehind:!0},"language-javascript":{pattern:/(data:[^\/]+\/(?:[^+,]+\+)?javascript,)[\s\S]+/,lookbehind:!0},"language-json":{pattern:/(data:[^\/]+\/(?:[^+,]+\+)?json,)[\s\S]+/,lookbehind:!0},"language-markup":{pattern:/(data:[^\/]+\/(?:[^+,]+\+)?(?:html|xml),)[\s\S]+/,lookbehind:!0}}},a=["url","attr-value","string"];Prism.plugins.dataURIHighlight={processGrammar:function(n){n&&!n["data-uri"]&&(Prism.languages.DFS(n,(function(n,r,e){a.indexOf(e)>-1&&!Array.isArray(r)&&(r.pattern||(r=this[n]={pattern:r}),r.inside=r.inside||{},"attr-value"==e?Prism.languages.insertBefore("inside",r.inside["url-link"]?"url-link":"punctuation",{"data-uri":i},r):r.inside["url-link"]?Prism.languages.insertBefore("inside","url-link",{"data-uri":i},r):r.inside["data-uri"]=i)})),n["data-uri"]=i)}},Prism.hooks.add("before-highlight",(function(a){if(i.pattern.test(a.code))for(var n in i.inside)if(i.inside.hasOwnProperty(n)&&!i.inside[n].inside&&i.inside[n].pattern.test(a.code)){var r=n.match(/^language-(.+)/)[1];Prism.languages[r]&&(i.inside[n].inside={rest:(e=Prism.languages[r],Prism.plugins.autolinker&&Prism.plugins.autolinker.processGrammar(e),e)})}var e;Prism.plugins.dataURIHighlight.processGrammar(a.grammar)}))}}(); \ No newline at end of file diff --git a/plugins/diff-highlight/index.html b/plugins/diff-highlight/index.html deleted file mode 100644 index d94f9c3d0c..0000000000 --- a/plugins/diff-highlight/index.html +++ /dev/null @@ -1,100 +0,0 @@ - - - - - - - Diff Highlight ▲ Prism plugins - - - - - - - - - - - - -
    - -
    -

    How to use

    - -

    Replace the language-diff of your code block with a language-diff-xxxx class to enable syntax highlighting for diff blocks.

    - -

    - Optional:
    - You can add the diff-highlight class to your code block to indicate changes using the background color of a line rather than the color of the text. -

    - -

    Autoloader

    - -

    The Autoloader plugin understands the language-diff-xxxx format and will ensure that the language definitions for both Diff and the code language are loaded.

    -
    - -
    -

    Example

    - -

    Using class="language-diff":

    - -
    @@ -4,6 +4,5 @@
    --    let foo = bar.baz([1, 2, 3]);
    --    foo = foo + 1;
    -+    const foo = bar.baz([1, 2, 3]) + 1;
    -     console.log(`foo: ${foo}`);
    - -

    Using class="language-diff diff-highlight":

    - -
    @@ -4,6 +4,5 @@
    --    let foo = bar.baz([1, 2, 3]);
    --    foo = foo + 1;
    -+    const foo = bar.baz([1, 2, 3]) + 1;
    -     console.log(`foo: ${foo}`);
    - -

    Using class="language-diff-javascript":

    - -
    @@ -4,6 +4,5 @@
    --    let foo = bar.baz([1, 2, 3]);
    --    foo = foo + 1;
    -+    const foo = bar.baz([1, 2, 3]) + 1;
    -     console.log(`foo: ${foo}`);
    - -

    Using class="language-diff-javascript diff-highlight":

    - -
    @@ -4,6 +4,5 @@
    --    let foo = bar.baz([1, 2, 3]);
    --    foo = foo + 1;
    -+    const foo = bar.baz([1, 2, 3]) + 1;
    -     console.log(`foo: ${foo}`);
    - -

    - Using class="language-diff-rust diff-highlight":
    - (Autoloader is used to load the Rust language definition.) -

    - -
    @@ -111,6 +114,9 @@
    -         nasty_btree_map.insert(i, MyLeafNode(i));
    -     }
    -
    -+    let mut zst_btree_map: BTreeMap<(), ()> = BTreeMap::new();
    -+    zst_btree_map.insert((), ());
    -+
    -     // VecDeque
    -     let mut vec_deque = VecDeque::new();
    -     vec_deque.push_back(5);
    -
    - -
    - - - - - - - - - - - diff --git a/plugins/diff-highlight/prism-diff-highlight.css b/plugins/diff-highlight/prism-diff-highlight.css deleted file mode 100644 index 0d9eb0c52b..0000000000 --- a/plugins/diff-highlight/prism-diff-highlight.css +++ /dev/null @@ -1,13 +0,0 @@ -pre.diff-highlight > code .token.deleted:not(.prefix), -pre > code.diff-highlight .token.deleted:not(.prefix) { - background-color: rgba(255, 0, 0, .1); - color: inherit; - display: block; -} - -pre.diff-highlight > code .token.inserted:not(.prefix), -pre > code.diff-highlight .token.inserted:not(.prefix) { - background-color: rgba(0, 255, 128, .1); - color: inherit; - display: block; -} diff --git a/plugins/diff-highlight/prism-diff-highlight.js b/plugins/diff-highlight/prism-diff-highlight.js deleted file mode 100644 index aa7bcf3f3f..0000000000 --- a/plugins/diff-highlight/prism-diff-highlight.js +++ /dev/null @@ -1,90 +0,0 @@ -(function () { - - if (typeof Prism === 'undefined') { - return; - } - - - var LANGUAGE_REGEX = /^diff-([\w-]+)/i; - var HTML_TAG = /<\/?(?!\d)[^\s>\/=$<%]+(?:\s(?:\s*[^\s>\/=]+(?:\s*=\s*(?:"[^"]*"|'[^']*'|[^\s'">=]+(?=[\s>]))|(?=[\s/>])))+)?\s*\/?>/g; - //this will match a line plus the line break while ignoring the line breaks HTML tags may contain. - var HTML_LINE = RegExp(/(?:__|[^\r\n<])*(?:\r\n?|\n|(?:__|[^\r\n<])(?![^\r\n]))/.source.replace(/__/g, function () { return HTML_TAG.source; }), 'gi'); - - var warningLogged = false; - - Prism.hooks.add('before-sanity-check', function (env) { - var lang = env.language; - if (LANGUAGE_REGEX.test(lang) && !env.grammar) { - env.grammar = Prism.languages[lang] = Prism.languages.diff; - } - }); - Prism.hooks.add('before-tokenize', function (env) { - if (!warningLogged && !Prism.languages.diff && !Prism.plugins.autoloader) { - warningLogged = true; - console.warn("Prism's Diff Highlight plugin requires the Diff language definition (prism-diff.js)." + - "Make sure the language definition is loaded or use Prism's Autoloader plugin."); - } - - var lang = env.language; - if (LANGUAGE_REGEX.test(lang) && !Prism.languages[lang]) { - Prism.languages[lang] = Prism.languages.diff; - } - }); - - Prism.hooks.add('wrap', function (env) { - var diffLanguage; var diffGrammar; - - if (env.language !== 'diff') { - var langMatch = LANGUAGE_REGEX.exec(env.language); - if (!langMatch) { - return; // not a language specific diff - } - - diffLanguage = langMatch[1]; - diffGrammar = Prism.languages[diffLanguage]; - } - - var PREFIXES = Prism.languages.diff && Prism.languages.diff.PREFIXES; - - // one of the diff tokens without any nested tokens - if (PREFIXES && env.type in PREFIXES) { - /** @type {string} */ - var content = env.content.replace(HTML_TAG, ''); // remove all HTML tags - - /** @type {string} */ - var decoded = content.replace(/</g, '<').replace(/&/g, '&'); - - // remove any one-character prefix - var code = decoded.replace(/(^|[\r\n])./g, '$1'); - - // highlight, if possible - var highlighted; - if (diffGrammar) { - highlighted = Prism.highlight(code, diffGrammar, diffLanguage); - } else { - highlighted = Prism.util.encode(code); - } - - // get the HTML source of the prefix token - var prefixToken = new Prism.Token('prefix', PREFIXES[env.type], [/\w+/.exec(env.type)[0]]); - var prefix = Prism.Token.stringify(prefixToken, env.language); - - // add prefix - var lines = []; var m; - HTML_LINE.lastIndex = 0; - while ((m = HTML_LINE.exec(highlighted))) { - lines.push(prefix + m[0]); - } - if (/(?:^|[\r\n]).$/.test(decoded)) { - // because both "+a\n+" and "+a\n" will map to "a\n" after the line prefixes are removed - lines.push(prefix); - } - env.content = lines.join(''); - - if (diffGrammar) { - env.classes.push('language-' + diffLanguage); - } - } - }); - -}()); diff --git a/plugins/diff-highlight/prism-diff-highlight.min.css b/plugins/diff-highlight/prism-diff-highlight.min.css deleted file mode 100644 index 9b8f6a7528..0000000000 --- a/plugins/diff-highlight/prism-diff-highlight.min.css +++ /dev/null @@ -1 +0,0 @@ -pre.diff-highlight>code .token.deleted:not(.prefix),pre>code.diff-highlight .token.deleted:not(.prefix){background-color:rgba(255,0,0,.1);color:inherit;display:block}pre.diff-highlight>code .token.inserted:not(.prefix),pre>code.diff-highlight .token.inserted:not(.prefix){background-color:rgba(0,255,128,.1);color:inherit;display:block} \ No newline at end of file diff --git a/plugins/diff-highlight/prism-diff-highlight.min.js b/plugins/diff-highlight/prism-diff-highlight.min.js deleted file mode 100644 index 38a97b41eb..0000000000 --- a/plugins/diff-highlight/prism-diff-highlight.min.js +++ /dev/null @@ -1 +0,0 @@ -!function(){if("undefined"!=typeof Prism){var e=/^diff-([\w-]+)/i,i=/<\/?(?!\d)[^\s>\/=$<%]+(?:\s(?:\s*[^\s>\/=]+(?:\s*=\s*(?:"[^"]*"|'[^']*'|[^\s'">=]+(?=[\s>]))|(?=[\s/>])))+)?\s*\/?>/g,a=RegExp("(?:__|[^\r\n<])*(?:\r\n?|\n|(?:__|[^\r\n<])(?![^\r\n]))".replace(/__/g,(function(){return i.source})),"gi"),s=!1;Prism.hooks.add("before-sanity-check",(function(i){var a=i.language;e.test(a)&&!i.grammar&&(i.grammar=Prism.languages[a]=Prism.languages.diff)})),Prism.hooks.add("before-tokenize",(function(i){s||Prism.languages.diff||Prism.plugins.autoloader||(s=!0,console.warn("Prism's Diff Highlight plugin requires the Diff language definition (prism-diff.js).Make sure the language definition is loaded or use Prism's Autoloader plugin."));var a=i.language;e.test(a)&&!Prism.languages[a]&&(Prism.languages[a]=Prism.languages.diff)})),Prism.hooks.add("wrap",(function(s){var r,n;if("diff"!==s.language){var g=e.exec(s.language);if(!g)return;r=g[1],n=Prism.languages[r]}var f=Prism.languages.diff&&Prism.languages.diff.PREFIXES;if(f&&s.type in f){var u,l=s.content.replace(i,"").replace(/</g,"<").replace(/&/g,"&"),t=l.replace(/(^|[\r\n])./g,"$1");u=n?Prism.highlight(t,n,r):Prism.util.encode(t);var o,m=new Prism.Token("prefix",f[s.type],[/\w+/.exec(s.type)[0]]),d=Prism.Token.stringify(m,s.language),c=[];for(a.lastIndex=0;o=a.exec(u);)c.push(d+o[0]);/(?:^|[\r\n]).$/.test(l)&&c.push(d),s.content=c.join(""),n&&s.classes.push("language-"+r)}}))}}(); \ No newline at end of file diff --git a/plugins/download-button/index.html b/plugins/download-button/index.html deleted file mode 100644 index 2f7c29c91f..0000000000 --- a/plugins/download-button/index.html +++ /dev/null @@ -1,53 +0,0 @@ - - - - - - -Download Button ▲ Prism plugins - - - - - - - - - - - -
    - -
    -

    How to use

    - -

    Use the data-src and data-download-link attribute on a <pre> elements similar to Autoloader, like so:

    - -
    <pre data-src="myfile.js" data-download-link></pre>
    - -

    Optionally, the text of the button can also be customized by using a data-download-link-label attribute.

    -
    <pre data-src="myfile.js" data-download-link data-download-link-label="Download this file"></pre>
    -
    - -
    -

    Examples

    - -

    The plugin’s JS code:

    -
    
    -
    -	

    This page:

    -
    
    -
    - -
    - - - - - - - - - - - diff --git a/plugins/download-button/prism-download-button.js b/plugins/download-button/prism-download-button.js deleted file mode 100644 index 8a5bd90539..0000000000 --- a/plugins/download-button/prism-download-button.js +++ /dev/null @@ -1,20 +0,0 @@ -(function () { - - if (typeof Prism === 'undefined' || typeof document === 'undefined' || !document.querySelector) { - return; - } - - Prism.plugins.toolbar.registerButton('download-file', function (env) { - var pre = env.element.parentNode; - if (!pre || !/pre/i.test(pre.nodeName) || !pre.hasAttribute('data-src') || !pre.hasAttribute('data-download-link')) { - return; - } - var src = pre.getAttribute('data-src'); - var a = document.createElement('a'); - a.textContent = pre.getAttribute('data-download-link-label') || 'Download'; - a.setAttribute('download', ''); - a.href = src; - return a; - }); - -}()); diff --git a/plugins/download-button/prism-download-button.min.js b/plugins/download-button/prism-download-button.min.js deleted file mode 100644 index dc10f65d60..0000000000 --- a/plugins/download-button/prism-download-button.min.js +++ /dev/null @@ -1 +0,0 @@ -"undefined"!=typeof Prism&&"undefined"!=typeof document&&document.querySelector&&Prism.plugins.toolbar.registerButton("download-file",(function(t){var e=t.element.parentNode;if(e&&/pre/i.test(e.nodeName)&&e.hasAttribute("data-src")&&e.hasAttribute("data-download-link")){var n=e.getAttribute("data-src"),a=document.createElement("a");return a.textContent=e.getAttribute("data-download-link-label")||"Download",a.setAttribute("download",""),a.href=n,a}})); \ No newline at end of file diff --git a/plugins/file-highlight/index.html b/plugins/file-highlight/index.html deleted file mode 100644 index 2033ef017a..0000000000 --- a/plugins/file-highlight/index.html +++ /dev/null @@ -1,71 +0,0 @@ - - - - - - -File Highlight ▲ Prism plugins - - - - - - - - - - - -
    - -
    -

    How to use

    - -

    Use the data-src attribute on empty <pre> elements, like so:

    - -
    <pre data-src="myfile.js"></pre>
    - -

    You don’t need to specify the language, it’s automatically determined by the file extension. - If, however, the language cannot be determined from the file extension or the file extension is incorrect, you may specify a language as well (with the usual class name way).

    - -

    Use the data-range attribute to display only a selected range of lines from the file, like so:

    - -
    <pre data-src="myfile.js" data-range="1,5"></pre>
    - -

    Lines start at 1, so "1,5" will display line 1 up to and including line 5. It's also possible to specify just a single line (e.g. "5" for just line 5) and open ranges (e.g. "3," for all lines starting at line 3). Negative integers can be used to specify the n-th last line, e.g. -2 for the second last line.

    - -

    When data-range is used in conjunction with the Line Numbers plugin, this plugin will add the proper data-start according to the specified range. This behavior can be overridden by setting the data-start attribute manually.

    - -

    Please note that the files are fetched with XMLHttpRequest. This means that if the file is on a different origin, fetching it will fail, unless CORS is enabled on that website.

    -
    - -
    -

    Examples

    - -

    The plugin’s JS code:

    -
    
    -
    -	

    This page:

    -
    
    -
    -	

    File that doesn’t exist:

    -
    
    -
    -	

    With line numbers, and data-range="12,111":

    -
    
    -
    -	

    For more examples, browse around the Prism website. Most large code samples are actually files fetched with this plugin.

    -
    - -
    - - - - - - - - - - - diff --git a/plugins/file-highlight/prism-file-highlight.js b/plugins/file-highlight/prism-file-highlight.js deleted file mode 100644 index 1247e19fae..0000000000 --- a/plugins/file-highlight/prism-file-highlight.js +++ /dev/null @@ -1,195 +0,0 @@ -(function () { - - if (typeof Prism === 'undefined' || typeof document === 'undefined') { - return; - } - - // https://developer.mozilla.org/en-US/docs/Web/API/Element/matches#Polyfill - if (!Element.prototype.matches) { - Element.prototype.matches = Element.prototype.msMatchesSelector || Element.prototype.webkitMatchesSelector; - } - - var LOADING_MESSAGE = 'Loading…'; - var FAILURE_MESSAGE = function (status, message) { - return '✖ Error ' + status + ' while fetching file: ' + message; - }; - var FAILURE_EMPTY_MESSAGE = '✖ Error: File does not exist or is empty'; - - var EXTENSIONS = { - 'js': 'javascript', - 'py': 'python', - 'rb': 'ruby', - 'ps1': 'powershell', - 'psm1': 'powershell', - 'sh': 'bash', - 'bat': 'batch', - 'h': 'c', - 'tex': 'latex' - }; - - var STATUS_ATTR = 'data-src-status'; - var STATUS_LOADING = 'loading'; - var STATUS_LOADED = 'loaded'; - var STATUS_FAILED = 'failed'; - - var SELECTOR = 'pre[data-src]:not([' + STATUS_ATTR + '="' + STATUS_LOADED + '"])' - + ':not([' + STATUS_ATTR + '="' + STATUS_LOADING + '"])'; - - /** - * Loads the given file. - * - * @param {string} src The URL or path of the source file to load. - * @param {(result: string) => void} success - * @param {(reason: string) => void} error - */ - function loadFile(src, success, error) { - var xhr = new XMLHttpRequest(); - xhr.open('GET', src, true); - xhr.onreadystatechange = function () { - if (xhr.readyState == 4) { - if (xhr.status < 400 && xhr.responseText) { - success(xhr.responseText); - } else { - if (xhr.status >= 400) { - error(FAILURE_MESSAGE(xhr.status, xhr.statusText)); - } else { - error(FAILURE_EMPTY_MESSAGE); - } - } - } - }; - xhr.send(null); - } - - /** - * Parses the given range. - * - * This returns a range with inclusive ends. - * - * @param {string | null | undefined} range - * @returns {[number, number | undefined] | undefined} - */ - function parseRange(range) { - var m = /^\s*(\d+)\s*(?:(,)\s*(?:(\d+)\s*)?)?$/.exec(range || ''); - if (m) { - var start = Number(m[1]); - var comma = m[2]; - var end = m[3]; - - if (!comma) { - return [start, start]; - } - if (!end) { - return [start, undefined]; - } - return [start, Number(end)]; - } - return undefined; - } - - Prism.hooks.add('before-highlightall', function (env) { - env.selector += ', ' + SELECTOR; - }); - - Prism.hooks.add('before-sanity-check', function (env) { - var pre = /** @type {HTMLPreElement} */ (env.element); - if (pre.matches(SELECTOR)) { - env.code = ''; // fast-path the whole thing and go to complete - - pre.setAttribute(STATUS_ATTR, STATUS_LOADING); // mark as loading - - // add code element with loading message - var code = pre.appendChild(document.createElement('CODE')); - code.textContent = LOADING_MESSAGE; - - var src = pre.getAttribute('data-src'); - - var language = env.language; - if (language === 'none') { - // the language might be 'none' because there is no language set; - // in this case, we want to use the extension as the language - var extension = (/\.(\w+)$/.exec(src) || [, 'none'])[1]; - language = EXTENSIONS[extension] || extension; - } - - // set language classes - Prism.util.setLanguage(code, language); - Prism.util.setLanguage(pre, language); - - // preload the language - var autoloader = Prism.plugins.autoloader; - if (autoloader) { - autoloader.loadLanguages(language); - } - - // load file - loadFile( - src, - function (text) { - // mark as loaded - pre.setAttribute(STATUS_ATTR, STATUS_LOADED); - - // handle data-range - var range = parseRange(pre.getAttribute('data-range')); - if (range) { - var lines = text.split(/\r\n?|\n/g); - - // the range is one-based and inclusive on both ends - var start = range[0]; - var end = range[1] == null ? lines.length : range[1]; - - if (start < 0) { start += lines.length; } - start = Math.max(0, Math.min(start - 1, lines.length)); - if (end < 0) { end += lines.length; } - end = Math.max(0, Math.min(end, lines.length)); - - text = lines.slice(start, end).join('\n'); - - // add data-start for line numbers - if (!pre.hasAttribute('data-start')) { - pre.setAttribute('data-start', String(start + 1)); - } - } - - // highlight code - code.textContent = text; - Prism.highlightElement(code); - }, - function (error) { - // mark as failed - pre.setAttribute(STATUS_ATTR, STATUS_FAILED); - - code.textContent = error; - } - ); - } - }); - - Prism.plugins.fileHighlight = { - /** - * Executes the File Highlight plugin for all matching `pre` elements under the given container. - * - * Note: Elements which are already loaded or currently loading will not be touched by this method. - * - * @param {ParentNode} [container=document] - */ - highlight: function highlight(container) { - var elements = (container || document).querySelectorAll(SELECTOR); - - for (var i = 0, element; (element = elements[i++]);) { - Prism.highlightElement(element); - } - } - }; - - var logged = false; - /** @deprecated Use `Prism.plugins.fileHighlight.highlight` instead. */ - Prism.fileHighlight = function () { - if (!logged) { - console.warn('Prism.fileHighlight is deprecated. Use `Prism.plugins.fileHighlight.highlight` instead.'); - logged = true; - } - Prism.plugins.fileHighlight.highlight.apply(this, arguments); - }; - -}()); diff --git a/plugins/file-highlight/prism-file-highlight.min.js b/plugins/file-highlight/prism-file-highlight.min.js deleted file mode 100644 index e8c9594ae1..0000000000 --- a/plugins/file-highlight/prism-file-highlight.min.js +++ /dev/null @@ -1 +0,0 @@ -!function(){if("undefined"!=typeof Prism&&"undefined"!=typeof document){Element.prototype.matches||(Element.prototype.matches=Element.prototype.msMatchesSelector||Element.prototype.webkitMatchesSelector);var t={js:"javascript",py:"python",rb:"ruby",ps1:"powershell",psm1:"powershell",sh:"bash",bat:"batch",h:"c",tex:"latex"},e="data-src-status",i='pre[data-src]:not([data-src-status="loaded"]):not([data-src-status="loading"])';Prism.hooks.add("before-highlightall",(function(t){t.selector+=", "+i})),Prism.hooks.add("before-sanity-check",(function(a){var n=a.element;if(n.matches(i)){a.code="",n.setAttribute(e,"loading");var s=n.appendChild(document.createElement("CODE"));s.textContent="Loading…";var r=n.getAttribute("data-src"),l=a.language;if("none"===l){var o=(/\.(\w+)$/.exec(r)||[,"none"])[1];l=t[o]||o}Prism.util.setLanguage(s,l),Prism.util.setLanguage(n,l);var h=Prism.plugins.autoloader;h&&h.loadLanguages(l),function(t,i,a){var r=new XMLHttpRequest;r.open("GET",t,!0),r.onreadystatechange=function(){4==r.readyState&&(r.status<400&&r.responseText?function(t){n.setAttribute(e,"loaded");var i=function(t){var e=/^\s*(\d+)\s*(?:(,)\s*(?:(\d+)\s*)?)?$/.exec(t||"");if(e){var i=Number(e[1]),a=e[2],n=e[3];return a?n?[i,Number(n)]:[i,void 0]:[i,i]}}(n.getAttribute("data-range"));if(i){var a=t.split(/\r\n?|\n/g),r=i[0],l=null==i[1]?a.length:i[1];r<0&&(r+=a.length),r=Math.max(0,Math.min(r-1,a.length)),l<0&&(l+=a.length),l=Math.max(0,Math.min(l,a.length)),t=a.slice(r,l).join("\n"),n.hasAttribute("data-start")||n.setAttribute("data-start",String(r+1))}s.textContent=t,Prism.highlightElement(s)}(r.responseText):r.status>=400?a("✖ Error "+r.status+" while fetching file: "+r.statusText):a("✖ Error: File does not exist or is empty"))},r.send(null)}(r,0,(function(t){n.setAttribute(e,"failed"),s.textContent=t}))}})),Prism.plugins.fileHighlight={highlight:function(t){for(var e,a=(t||document).querySelectorAll(i),n=0;e=a[n++];)Prism.highlightElement(e)}};var a=!1;Prism.fileHighlight=function(){a||(console.warn("Prism.fileHighlight is deprecated. Use `Prism.plugins.fileHighlight.highlight` instead."),a=!0),Prism.plugins.fileHighlight.highlight.apply(this,arguments)}}}(); \ No newline at end of file diff --git a/plugins/filter-highlight-all/index.html b/plugins/filter-highlight-all/index.html deleted file mode 100644 index 58523c593e..0000000000 --- a/plugins/filter-highlight-all/index.html +++ /dev/null @@ -1,146 +0,0 @@ - - - - - - - Filter highlightAll ▲ Prism plugins - - - - - - - - - - - -
    - -
    -

    How to use

    - -

    Filter highlightAll provides you with ways to filter the element the highlightAll and highlightAllUnder methods actually highlight. This can be very useful when you use Prism's automatic highlighting when loading the page but want to exclude certain code blocks.

    -
    - -
    -

    API

    - -

    In Prism.plugins.filterHighlightAll you can find the following:

    - -
    -
    add(condition: (value: { element, language: string }) => boolean): void
    -
    - Adds a new filter which will only allow an element to be highlighted if the given function returns true for that element.
    - This can be used to define a custom language filter. -
    - -
    addSelector(selector: string): void
    -
    - Adds a new filter which will only allow an element to be highlighted if the element matches the given CSS selector. -
    - -
    reject.add(condition: (value: { element, language: string }) => boolean): void
    -
    - Same as add, but only elements which do not fulfill the condition will be highlighted. -
    - -
    reject.addSelector(selector: string): void
    -
    - Same as addSelector, but only elements which do not match the selector will be highlighted. -
    - -
    filterKnown: boolean = false
    -
    - Set this to true to only allow known languages. - Code blocks without a set language or an unknown language will not be highlighted. -
    -
    - -

    An element will only be highlighted by the highlightAll and highlightAllUnder methods if all of the above accept the element.

    - -

    Attributes

    - -

    You can also add the following data-* attributes to the script which contains the Filter highlightAll plugin.

    - -
    -
    <script src="..." data-filter-selector="<css selector>">
    -
    - This attribute is a shorthand for Prism.plugins.filterHighlightAll.addSelector. - The value of the attribute will be passed as is to the addSelector function. -
    - -
    <script src="..." data-reject-selector="<css selector>">
    -
    - This attribute is a shorthand for Prism.plugins.filterHighlightAll.reject.addSelector. - The value of the attribute will be passed as is to the rejectSelector function. -
    - -
    <script src="..." data-filter-known>
    -
    - This attribute can be used to set the value of Prism.plugins.filterHighlightAll.filterKnown. - filterKnown will be set to true if the attribute is present, false otherwise. -
    -
    - -
    - -
    -

    Examples

    - -

    The following code is used to define a filter on this page.

    - -
    // <code> elements with a .no-highlight class will be ignored
    -Prism.plugins.filterHighlightAll.reject.addSelector('code.no-highlight');
    -Prism.plugins.filterHighlightAll.reject.addSelector('pre.no-highlight > code');
    -
    -// don't highlight CSS code
    -Prism.plugins.filterHighlightAll.add(function (env) {
    -	return env.language !== 'css';
    -});
    - -

    The results:

    - -
    let foo = "I'm not being highlighted";
    - -
    a.link::after {
    -	content: 'also not being highlighted';
    -	color: #F00;
    -}
    - -

    Prism will ignore these blocks, so you can even define your own static highlighting which Prism would normally remove.

    - -
    a.link::before {
    -	content: 'I just do my own highlighting';
    -	color: #F00;
    -}
    - -
    - -
    - - - - - - - - - - - - diff --git a/plugins/filter-highlight-all/prism-filter-highlight-all.js b/plugins/filter-highlight-all/prism-filter-highlight-all.js deleted file mode 100644 index 03d61d8db5..0000000000 --- a/plugins/filter-highlight-all/prism-filter-highlight-all.js +++ /dev/null @@ -1,127 +0,0 @@ -(function () { - - if (typeof Prism === 'undefined' || typeof document === 'undefined') { - return; - } - - // https://developer.mozilla.org/en-US/docs/Web/API/Element/matches#Polyfill - if (!Element.prototype.matches) { - Element.prototype.matches = Element.prototype.msMatchesSelector || Element.prototype.webkitMatchesSelector; - } - - var script = Prism.util.currentScript(); - - - /** - * @type {Array<(element: HTMLElement) => boolean>} - */ - var filters = []; - - var config = Prism.plugins.filterHighlightAll = { - - /** - * Adds a new filter for the elements of `highlightAll` and `highlightAllUnder` such that only elements for - * which the given function returns `true` will be highlighted. - * - * @param {(value: { element: HTMLElement, language: string }) => boolean} condition - */ - add: function (condition) { - filters.push(function (element) { - return condition({ - element: element, - language: Prism.util.getLanguage(element) - }); - }); - }, - - /** - * Adds a new filter for the elements of `highlightAll` and `highlightAllUnder` such that only elements that - * match the given CSS selection will be highlighted. - * - * @param {string} selector - */ - addSelector: function (selector) { - filters.push(function (element) { - return element.matches(selector); - }); - }, - - reject: { - - /** - * Adds a new filter for the elements of `highlightAll` and `highlightAllUnder` such that only elements for - * which the given function returns `false` will be highlighted. - * - * @param {(value: { element: HTMLElement, language: string }) => boolean} condition - */ - add: function (condition) { - filters.push(function (element) { - return !condition({ - element: element, - language: Prism.util.getLanguage(element) - }); - }); - }, - - /** - * Adds a new filter for the elements of `highlightAll` and `highlightAllUnder` such that only elements that do - * not match the given CSS selection will be highlighted. - * - * @param {string} selector - */ - addSelector: function (selector) { - filters.push(function (element) { - return !element.matches(selector); - }); - }, - - }, - - /** - * Filters the elements of `highlightAll` and `highlightAllUnder` such that only elements with a known language - * will be highlighted. All elements with an unset or unknown language will be ignored. - * - * __Note:__ This will effectively disable the AutoLoader plugin. - * - * @type {boolean} - */ - filterKnown: !!script && script.hasAttribute('data-filter-known') - }; - - config.add(function filterKnown(env) { - return !config.filterKnown || typeof Prism.languages[env.language] === 'object'; - }); - - if (script) { - var attr; - attr = script.getAttribute('data-filter-selector'); - if (attr) { - config.addSelector(attr); - } - attr = script.getAttribute('data-reject-selector'); - if (attr) { - config.reject.addSelector(attr); - } - } - - /** - * Applies all filters to the given element and returns true if and only if every filter returned true on the - * given element. - * - * @param {HTMLElement} element - * @returns {boolean} - */ - function combinedFilter(element) { - for (var i = 0, l = filters.length; i < l; i++) { - if (!filters[i](element)) { - return false; - } - } - return true; - } - - Prism.hooks.add('before-all-elements-highlight', function (env) { - env.elements = env.elements.filter(combinedFilter); - }); - -}()); diff --git a/plugins/filter-highlight-all/prism-filter-highlight-all.min.js b/plugins/filter-highlight-all/prism-filter-highlight-all.min.js deleted file mode 100644 index 94b828a311..0000000000 --- a/plugins/filter-highlight-all/prism-filter-highlight-all.min.js +++ /dev/null @@ -1 +0,0 @@ -!function(){if("undefined"!=typeof Prism&&"undefined"!=typeof document){Element.prototype.matches||(Element.prototype.matches=Element.prototype.msMatchesSelector||Element.prototype.webkitMatchesSelector);var e,t=Prism.util.currentScript(),n=[],r=Prism.plugins.filterHighlightAll={add:function(e){n.push((function(t){return e({element:t,language:Prism.util.getLanguage(t)})}))},addSelector:function(e){n.push((function(t){return t.matches(e)}))},reject:{add:function(e){n.push((function(t){return!e({element:t,language:Prism.util.getLanguage(t)})}))},addSelector:function(e){n.push((function(t){return!t.matches(e)}))}},filterKnown:!!t&&t.hasAttribute("data-filter-known")};r.add((function(e){return!r.filterKnown||"object"==typeof Prism.languages[e.language]})),t&&((e=t.getAttribute("data-filter-selector"))&&r.addSelector(e),(e=t.getAttribute("data-reject-selector"))&&r.reject.addSelector(e)),Prism.hooks.add("before-all-elements-highlight",(function(e){e.elements=e.elements.filter(i)}))}function i(e){for(var t=0,r=n.length;t - - - - - -Highlight Keywords ▲ Prism plugins - - - - - - - - - - -
    - -
    -

    How to use

    - -

    This plugin adds a special class for every keyword, so keyword-specific styles can be applied. These special classes allow for fine-grained control over the appearance of keywords using your own CSS rules.

    - -

    For example, the keyword if will have the class keyword-if added. A CSS rule used to apply special highlighting could look like this:

    - -
    .token.keyword.keyword-if { /* styles for 'if' */ }
    - -

    Note: This plugin does not come with CSS styles. You have to define the keyword-specific CSS rules yourself.

    -
    - -
    -

    Examples

    - -

    This example shows the plugin in action. The keywords if and return will be highlighted in red. The color of all other keywords will be determined by the current theme. The CSS rules used to implement the keyword-specific highlighting can be seen in the HTML file below.

    - -

    JavaScript

    -
    
    -
    -	

    HTML (Markup)

    -
    
    -
    -
    - - - - - - - - - - diff --git a/plugins/highlight-keywords/prism-highlight-keywords.js b/plugins/highlight-keywords/prism-highlight-keywords.js deleted file mode 100644 index 523fc964fe..0000000000 --- a/plugins/highlight-keywords/prism-highlight-keywords.js +++ /dev/null @@ -1,14 +0,0 @@ -(function () { - - if (typeof Prism === 'undefined') { - return; - } - - Prism.hooks.add('wrap', function (env) { - if (env.type !== 'keyword') { - return; - } - env.classes.push('keyword-' + env.content); - }); - -}()); diff --git a/plugins/highlight-keywords/prism-highlight-keywords.min.js b/plugins/highlight-keywords/prism-highlight-keywords.min.js deleted file mode 100644 index 1cd1203df5..0000000000 --- a/plugins/highlight-keywords/prism-highlight-keywords.min.js +++ /dev/null @@ -1 +0,0 @@ -"undefined"!=typeof Prism&&Prism.hooks.add("wrap",(function(e){"keyword"===e.type&&e.classes.push("keyword-"+e.content)})); \ No newline at end of file diff --git a/plugins/index.html b/plugins/index.html deleted file mode 100644 index cdab97fbb0..0000000000 --- a/plugins/index.html +++ /dev/null @@ -1,42 +0,0 @@ - - - - - - -Plugins ▲ Prism - - - - - - - - - - - -
    -
    -
    - -
    -

    Available plugins

    -
      -
      - -
      -

      Contribute

      -

      Writing Prism plugins is easy! Read how at the “Extending Prism” section. -

      - -
      - - - - - - - - - diff --git a/plugins/inline-color/index.html b/plugins/inline-color/index.html deleted file mode 100644 index 3639e065cf..0000000000 --- a/plugins/inline-color/index.html +++ /dev/null @@ -1,75 +0,0 @@ - - - - - - -Inline color ▲ Prism plugins - - - - - - - - - - - - - -
      - -
      -

      Examples

      - -

      CSS

      -
      span.foo {
      -	background-color: navy;
      -	color: #BFD;
      -}
      -
      -span.bar {
      -	background: rgba(105, 0, 12, .38);
      -	color: hsl(30, 100%, 50%);
      -	border-color: transparent;
      -}
      - -
      
      -
      -	

      HTML (Markup)

      -
      <!DOCTYPE html>
      -<html lang="en">
      -<head>
      -
      -<meta charset="utf-8" />
      -<title>Example</title>
      -<style>
      -/* Also works here */
      -a.not-a-class {
      -	color: red;
      -}
      -</style>
      -<body style="color: black">
      -
      -</body>
      -</html>
      - -
      -
      - - - - - - - - - - - diff --git a/plugins/inline-color/prism-inline-color.css b/plugins/inline-color/prism-inline-color.css deleted file mode 100644 index d83787461e..0000000000 --- a/plugins/inline-color/prism-inline-color.css +++ /dev/null @@ -1,33 +0,0 @@ -span.inline-color-wrapper { - /* - * The background image is the following SVG inline in base 64: - * - * - * - * - * - * - * SVG-inlining explained: - * https://stackoverflow.com/a/21626701/7595472 - */ - background: url("data:image/svg+xml;base64,PHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHZpZXdCb3g9IjAgMCAyIDIiPjxwYXRoIGZpbGw9ImdyYXkiIGQ9Ik0wIDBoMnYySDB6Ii8+PHBhdGggZmlsbD0id2hpdGUiIGQ9Ik0wIDBoMXYxSDB6TTEgMWgxdjFIMXoiLz48L3N2Zz4="); - /* This is to prevent visual glitches where one pixel from the repeating pattern could be seen. */ - background-position: center; - background-size: 110%; - - display: inline-block; - height: 1.333ch; - width: 1.333ch; - margin: 0 .333ch; - box-sizing: border-box; - border: 1px solid white; - outline: 1px solid rgba(0,0,0,.5); - overflow: hidden; -} - -span.inline-color { - display: block; - /* To prevent visual glitches again */ - height: 120%; - width: 120%; -} diff --git a/plugins/inline-color/prism-inline-color.js b/plugins/inline-color/prism-inline-color.js deleted file mode 100644 index 6e7b9edaa7..0000000000 --- a/plugins/inline-color/prism-inline-color.js +++ /dev/null @@ -1,105 +0,0 @@ -(function () { - - if (typeof Prism === 'undefined' || typeof document === 'undefined') { - return; - } - - // Copied from the markup language definition - var HTML_TAG = /<\/?(?!\d)[^\s>\/=$<%]+(?:\s(?:\s*[^\s>\/=]+(?:\s*=\s*(?:"[^"]*"|'[^']*'|[^\s'">=]+(?=[\s>]))|(?=[\s/>])))+)?\s*\/?>/g; - - // a regex to validate hexadecimal colors - var HEX_COLOR = /^#?((?:[\da-f]){3,4}|(?:[\da-f]{2}){3,4})$/i; - - /** - * Parses the given hexadecimal representation and returns the parsed RGBA color. - * - * If the format of the given string is invalid, `undefined` will be returned. - * Valid formats are: `RGB`, `RGBA`, `RRGGBB`, and `RRGGBBAA`. - * - * Hexadecimal colors are parsed because they are not fully supported by older browsers, so converting them to - * `rgba` functions improves browser compatibility. - * - * @param {string} hex - * @returns {string | undefined} - */ - function parseHexColor(hex) { - var match = HEX_COLOR.exec(hex); - if (!match) { - return undefined; - } - hex = match[1]; // removes the leading "#" - - // the width and number of channels - var channelWidth = hex.length >= 6 ? 2 : 1; - var channelCount = hex.length / channelWidth; - - // the scale used to normalize 4bit and 8bit values - var scale = channelWidth == 1 ? 1 / 15 : 1 / 255; - - // normalized RGBA channels - var channels = []; - for (var i = 0; i < channelCount; i++) { - var int = parseInt(hex.substr(i * channelWidth, channelWidth), 16); - channels.push(int * scale); - } - if (channelCount == 3) { - channels.push(1); // add alpha of 100% - } - - // output - var rgb = channels.slice(0, 3).map(function (x) { - return String(Math.round(x * 255)); - }).join(','); - var alpha = String(Number(channels[3].toFixed(3))); // easy way to round 3 decimal places - - return 'rgba(' + rgb + ',' + alpha + ')'; - } - - /** - * Validates the given Color using the current browser's internal implementation. - * - * @param {string} color - * @returns {string | undefined} - */ - function validateColor(color) { - var s = new Option().style; - s.color = color; - return s.color ? color : undefined; - } - - /** - * An array of function which parse a given string representation of a color. - * - * These parser serve as validators and as a layer of compatibility to support color formats which the browser - * might not support natively. - * - * @type {((value: string) => (string|undefined))[]} - */ - var parsers = [ - parseHexColor, - validateColor - ]; - - - Prism.hooks.add('wrap', function (env) { - if (env.type === 'color' || env.classes.indexOf('color') >= 0) { - var content = env.content; - - // remove all HTML tags inside - var rawText = content.split(HTML_TAG).join(''); - - var color; - for (var i = 0, l = parsers.length; i < l && !color; i++) { - color = parsers[i](rawText); - } - - if (!color) { - return; - } - - var previewElement = ''; - env.content = previewElement + content; - } - }); - -}()); diff --git a/plugins/inline-color/prism-inline-color.min.css b/plugins/inline-color/prism-inline-color.min.css deleted file mode 100644 index c161187fe4..0000000000 --- a/plugins/inline-color/prism-inline-color.min.css +++ /dev/null @@ -1 +0,0 @@ -span.inline-color-wrapper{background:url(data:image/svg+xml;base64,PHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHZpZXdCb3g9IjAgMCAyIDIiPjxwYXRoIGZpbGw9ImdyYXkiIGQ9Ik0wIDBoMnYySDB6Ii8+PHBhdGggZmlsbD0id2hpdGUiIGQ9Ik0wIDBoMXYxSDB6TTEgMWgxdjFIMXoiLz48L3N2Zz4=);background-position:center;background-size:110%;display:inline-block;height:1.333ch;width:1.333ch;margin:0 .333ch;box-sizing:border-box;border:1px solid #fff;outline:1px solid rgba(0,0,0,.5);overflow:hidden}span.inline-color{display:block;height:120%;width:120%} \ No newline at end of file diff --git a/plugins/inline-color/prism-inline-color.min.js b/plugins/inline-color/prism-inline-color.min.js deleted file mode 100644 index 31a8d033ef..0000000000 --- a/plugins/inline-color/prism-inline-color.min.js +++ /dev/null @@ -1 +0,0 @@ -!function(){if("undefined"!=typeof Prism&&"undefined"!=typeof document){var n=/<\/?(?!\d)[^\s>\/=$<%]+(?:\s(?:\s*[^\s>\/=]+(?:\s*=\s*(?:"[^"]*"|'[^']*'|[^\s'">=]+(?=[\s>]))|(?=[\s/>])))+)?\s*\/?>/g,r=/^#?((?:[\da-f]){3,4}|(?:[\da-f]{2}){3,4})$/i,o=[function(n){var o=r.exec(n);if(o){for(var s=(n=o[1]).length>=6?2:1,e=n.length/s,t=1==s?1/15:1/255,i=[],a=0;a=0){for(var s,e=r.content,t=e.split(n).join(""),i=0,a=o.length;i';r.content=c+e}}))}}(); \ No newline at end of file diff --git a/plugins/jsonp-highlight/index.html b/plugins/jsonp-highlight/index.html deleted file mode 100644 index 14b0278ee7..0000000000 --- a/plugins/jsonp-highlight/index.html +++ /dev/null @@ -1,169 +0,0 @@ - - - - - - -JSONP Highlight ▲ Prism plugins - - - - - - - - - - -
      - -
      -

      How to use

      - -

      Use the data-jsonp attribute on <pre> elements, like so:

      - -
      <pre
      -	class="language-javascript"
      -	data-jsonp="https://api.github.com/repos/leaverou/prism/contents/prism.js">
      -</pre>
      - -

      - Don't specify the callback query parameter in the URL; this will be added - automatically. If the API expects a different callback parameter name however, use the - data-callback parameter to specify the name: -

      - -
      <pre class="…" data-jsonp="…" data-callback="cb"></pre>
      - -

      - The next trick is of course actually extracting something from the JSONP response worth - highlighting, which means processing the response to extract the interesting data. -

      - -

      The following JSONP APIs are automatically detected and parsed:

      - - - -

      If you need to do your own parsing, you can hook your your own data adapters in two ways:

      -
        -
      1. - Supply the data-adapter parameter on the <pre> element. - This must be the name of a globally defined function. - The plugin will use only this adapter to parse the response. -
      2. -
      3. - Register your adapter function by calling - Prism.plugins.jsonphighlight.registerAdapter(function(rsp) { … }). - It will be added to the list of inbuilt adapters and used if no other registered - adapter (e.g. GitHub/Bitbucket) can parse the response. -
      4. -
      - -

      - In either case, the function must accept at least a single parameter (the JSONP response) and - returns a string of the content to highlight. If your adapter cannot parse the response, you - must return null. The DOM node that will contain the highlighted code will also - be passed in as the second argument, incase you need to use it to query any extra information - (maybe you wish to inspect the class or data-jsonp attributes to - assist in parsing the response). -

      - -

      - The following example demonstrates both methods of using a custom adapter, to simply return - the stringified JSONP response (i.e highlight the entire JSONP data): -

      - -
      <!-- perhaps this is in a .js file elsewhere -->
      -<script>
      -	function dump_json(rsp) {
      -		return "using dump_json: " + JSON.stringify(rsp,null,2);
      -	}
      -</script>
      -
      -<!-- … include prism.js … -->
      -<script>
      -	Prism.plugins.jsonphighlight.registerAdapter(function(rsp) {
      -		return "using registerAdapter: " + JSON.stringify(rsp,null,2);
      -	})
      -</script>
      -
      - -

      And later in your HTML:

      - -
      <!-- using the data-adapter attribute -->
      -<pre class="language-javascript" data-jsonp="…" data-adapter="dump_json"></pre>
      -
      -<!-- using whatever data adapters are available -->
      -<pre class="language-javascript" data-jsonp="…"></pre>
      -
      - -

      - Finally, unlike like the File Highlight - plugin, you do need to supply the appropriate class with the language - to highlight. This could have been auto-detected, but since you're not actually linking to - a file it's not always possible (see below in the example using GitHub status). - Furthermore, if you're linking to files with a .xaml extension for example, - this plugin then needs to somehow map that to highlight as markup, which just - means more bloat. You know what you're trying to highlight, just say so :) -

      - -

      Caveat for Gists

      - -

      - There's a bit of a catch with gists, as they can actually contain multiple files. - There are two options to handle this: -

      - -
        -
      1. - If your gist only contains one file, you don't need to to anything; the one and only - file will automatically be chosen and highlighted -
      2. -
      3. - If your file contains multiple files, the first one will be chosen by default. - However, you can supply the filename in the data-filename attribute, and - this file will be highlighted instead: -
        <pre class="…" data-jsonp="…" data-filename="mydemo.js"></pre>
        -
      4. -
      -
      - -
      -

      Examples

      - -

      The plugin’s JS code (from GitHub):

      -
      
      -
      -	

      GitHub Gist (gist contains a single file, automatically selected):

      -
      
      -
      -	

      GitHub Gist (gist contains a multiple files, file to load specified):

      -
      
      -
      -	

      Bitbucket API:

      -
      
      -
      -	

      Custom adapter (JSON.stringify showing the GitHub REST API for Prism's repository):

      -
      
      -
      -	

      Registered adapter (as above, but without explicitly declaring the data-adapter attribute):

      -
      
      -
      - -
      - - - - - - - - - - - - diff --git a/plugins/jsonp-highlight/prism-jsonp-highlight.js b/plugins/jsonp-highlight/prism-jsonp-highlight.js deleted file mode 100644 index 28541a3f3d..0000000000 --- a/plugins/jsonp-highlight/prism-jsonp-highlight.js +++ /dev/null @@ -1,303 +0,0 @@ -(function () { - - if (typeof Prism === 'undefined' || typeof document === 'undefined') { - return; - } - - /** - * @callback Adapter - * @param {any} response - * @param {HTMLPreElement} [pre] - * @returns {string | null} - */ - - /** - * The list of adapter which will be used if `data-adapter` is not specified. - * - * @type {Array<{adapter: Adapter, name: string}>} - */ - var adapters = []; - - /** - * Adds a new function to the list of adapters. - * - * If the given adapter is already registered or not a function or there is an adapter with the given name already, - * nothing will happen. - * - * @param {Adapter} adapter The adapter to be registered. - * @param {string} [name] The name of the adapter. Defaults to the function name of `adapter`. - */ - function registerAdapter(adapter, name) { - name = name || adapter.name; - if (typeof adapter === 'function' && !getAdapter(adapter) && !getAdapter(name)) { - adapters.push({ adapter: adapter, name: name }); - } - } - /** - * Returns the given adapter itself, if registered, or a registered adapter with the given name. - * - * If no fitting adapter is registered, `null` will be returned. - * - * @param {string|Function} adapter The adapter itself or the name of an adapter. - * @returns {Adapter} A registered adapter or `null`. - */ - function getAdapter(adapter) { - if (typeof adapter === 'function') { - for (var i = 0, item; (item = adapters[i++]);) { - if (item.adapter.valueOf() === adapter.valueOf()) { - return item.adapter; - } - } - } else if (typeof adapter === 'string') { - // eslint-disable-next-line no-redeclare - for (var i = 0, item; (item = adapters[i++]);) { - if (item.name === adapter) { - return item.adapter; - } - } - } - return null; - } - /** - * Remove the given adapter or the first registered adapter with the given name from the list of - * registered adapters. - * - * @param {string|Function} adapter The adapter itself or the name of an adapter. - */ - function removeAdapter(adapter) { - if (typeof adapter === 'string') { - adapter = getAdapter(adapter); - } - if (typeof adapter === 'function') { - var index = adapters.findIndex(function (item) { - return item.adapter === adapter; - }); - if (index >= 0) { - adapters.splice(index, 1); - } - } - } - - registerAdapter(function github(rsp) { - if (rsp && rsp.meta && rsp.data) { - if (rsp.meta.status && rsp.meta.status >= 400) { - return 'Error: ' + (rsp.data.message || rsp.meta.status); - } else if (typeof (rsp.data.content) === 'string') { - return typeof (atob) === 'function' - ? atob(rsp.data.content.replace(/\s/g, '')) - : 'Your browser cannot decode base64'; - } - } - return null; - }, 'github'); - registerAdapter(function gist(rsp, el) { - if (rsp && rsp.meta && rsp.data && rsp.data.files) { - if (rsp.meta.status && rsp.meta.status >= 400) { - return 'Error: ' + (rsp.data.message || rsp.meta.status); - } - - var files = rsp.data.files; - var filename = el.getAttribute('data-filename'); - if (filename == null) { - // Maybe in the future we can somehow render all files - // But the standard - - - - - - -
      - -
      - -

      How to use

      - -

      You have nothing to do. The plugin is active by default. With this plugin loaded, all markup inside code will be kept.

      - -

      However, you can deactivate the plugin for certain code element by adding the no-keep-markup class to it. You can also deactivate the plugin for the whole page by adding the no-keep-markup class to the body of the page and then selectively activate it again by adding the keep-markup class to code elements.

      - -

      Double highlighting

      - -

      Some plugins (e.g. Autoloader) need to re-highlight code blocks. This is a problem for Keep Markup because it will keep the markup of the first highlighting pass resulting in a lot of unnecessary DOM nodes and causing problems for themes and other plugins.

      - -

      This problem can be fixed by adding a drop-tokens class to a code block or any of its ancestors. If drop-tokens is present, Keep Markup will ignore all span.token elements created by Prism.

      - -

      Examples

      - -

      The following source code

      -
      <pre><code class="language-css">
      -@media <mark>screen</mark> {
      -	div {
      -		<mark>text</mark>-decoration: <mark><mark>under</mark>line</mark>;
      -		back<mark>ground: url</mark>('foo.png');
      -	}
      -}</code></pre>
      - -

      would render like this:

      -
      
      -@media screen {
      -	div {
      -		text-decoration: underline;
      -		background: url('foo.png');
      -	}
      -}
      - -

      - It also works for inline code: - var bar = function () { /* foo */ }; -

      - -
      - -
      - - - - - - - - - diff --git a/plugins/keep-markup/prism-keep-markup.js b/plugins/keep-markup/prism-keep-markup.js deleted file mode 100644 index dd3a108041..0000000000 --- a/plugins/keep-markup/prism-keep-markup.js +++ /dev/null @@ -1,126 +0,0 @@ -(function () { - - if (typeof Prism === 'undefined' || typeof document === 'undefined' || !document.createRange) { - return; - } - - Prism.plugins.KeepMarkup = true; - - Prism.hooks.add('before-highlight', function (env) { - if (!env.element.children.length) { - return; - } - - if (!Prism.util.isActive(env.element, 'keep-markup', true)) { - return; - } - - var dropTokens = Prism.util.isActive(env.element, 'drop-tokens', false); - /** - * Returns whether the given element should be kept. - * - * @param {HTMLElement} element - * @returns {boolean} - */ - function shouldKeep(element) { - if (dropTokens && element.nodeName.toLowerCase() === 'span' && element.classList.contains('token')) { - return false; - } - return true; - } - - var pos = 0; - var data = []; - function processElement(element) { - if (!shouldKeep(element)) { - // don't keep this element and just process its children - processChildren(element); - return; - } - - var o = { - // Store original element so we can restore it after highlighting - element: element, - posOpen: pos - }; - data.push(o); - - processChildren(element); - - o.posClose = pos; - } - function processChildren(element) { - for (var i = 0, l = element.childNodes.length; i < l; i++) { - var child = element.childNodes[i]; - if (child.nodeType === 1) { // element - processElement(child); - } else if (child.nodeType === 3) { // text - pos += child.data.length; - } - } - } - processChildren(env.element); - - if (data.length) { - // data is an array of all existing tags - env.keepMarkup = data; - } - }); - - Prism.hooks.add('after-highlight', function (env) { - if (env.keepMarkup && env.keepMarkup.length) { - - var walk = function (elt, nodeState) { - for (var i = 0, l = elt.childNodes.length; i < l; i++) { - - var child = elt.childNodes[i]; - - if (child.nodeType === 1) { // element - if (!walk(child, nodeState)) { - return false; - } - - } else if (child.nodeType === 3) { // text - if (!nodeState.nodeStart && nodeState.pos + child.data.length > nodeState.node.posOpen) { - // We found the start position - nodeState.nodeStart = child; - nodeState.nodeStartPos = nodeState.node.posOpen - nodeState.pos; - } - if (nodeState.nodeStart && nodeState.pos + child.data.length >= nodeState.node.posClose) { - // We found the end position - nodeState.nodeEnd = child; - nodeState.nodeEndPos = nodeState.node.posClose - nodeState.pos; - } - - nodeState.pos += child.data.length; - } - - if (nodeState.nodeStart && nodeState.nodeEnd) { - // Select the range and wrap it with the element - var range = document.createRange(); - range.setStart(nodeState.nodeStart, nodeState.nodeStartPos); - range.setEnd(nodeState.nodeEnd, nodeState.nodeEndPos); - nodeState.node.element.innerHTML = ''; - nodeState.node.element.appendChild(range.extractContents()); - range.insertNode(nodeState.node.element); - range.detach(); - - // Process is over - return false; - } - } - return true; - }; - - // For each tag, we walk the DOM to reinsert it - env.keepMarkup.forEach(function (node) { - walk(env.element, { - node: node, - pos: 0 - }); - }); - // Store new highlightedCode for later hooks calls - env.highlightedCode = env.element.innerHTML; - } - }); -}()); diff --git a/plugins/keep-markup/prism-keep-markup.min.js b/plugins/keep-markup/prism-keep-markup.min.js deleted file mode 100644 index 9076248398..0000000000 --- a/plugins/keep-markup/prism-keep-markup.min.js +++ /dev/null @@ -1 +0,0 @@ -"undefined"!=typeof Prism&&"undefined"!=typeof document&&document.createRange&&(Prism.plugins.KeepMarkup=!0,Prism.hooks.add("before-highlight",(function(e){if(e.element.children.length&&Prism.util.isActive(e.element,"keep-markup",!0)){var n=Prism.util.isActive(e.element,"drop-tokens",!1),t=0,o=[];r(e.element),o.length&&(e.keepMarkup=o)}function d(e){if(function(e){return!n||"span"!==e.nodeName.toLowerCase()||!e.classList.contains("token")}(e)){var d={element:e,posOpen:t};o.push(d),r(e),d.posClose=t}else r(e)}function r(e){for(var n=0,o=e.childNodes.length;nt.node.posOpen&&(t.nodeStart=r,t.nodeStartPos=t.node.posOpen-t.pos),t.nodeStart&&t.pos+r.data.length>=t.node.posClose&&(t.nodeEnd=r,t.nodeEndPos=t.node.posClose-t.pos),t.pos+=r.data.length);if(t.nodeStart&&t.nodeEnd){var s=document.createRange();return s.setStart(t.nodeStart,t.nodeStartPos),s.setEnd(t.nodeEnd,t.nodeEndPos),t.node.element.innerHTML="",t.node.element.appendChild(s.extractContents()),s.insertNode(t.node.element),s.detach(),!1}}return!0};e.keepMarkup.forEach((function(t){n(e.element,{node:t,pos:0})})),e.highlightedCode=e.element.innerHTML}}))); \ No newline at end of file diff --git a/plugins/line-highlight/index.html b/plugins/line-highlight/index.html deleted file mode 100644 index f06b5a53a1..0000000000 --- a/plugins/line-highlight/index.html +++ /dev/null @@ -1,98 +0,0 @@ - - - - - - -Line highlight ▲ Prism plugins - - - - - - - - - - - - -
      - -
      -

      How to use

      - -

      Obviously, this only works on code blocks (<pre><code>) and not for inline code. - -

      You specify the lines to be highlighted through the data-line attribute on the <pre> element, in the following simple format:

      -
        -
      • A single number refers to the line with that number
      • -
      • Ranges are denoted by two numbers, separated with a hyphen (-)
      • -
      • Multiple line numbers or ranges are separated by commas.
      • -
      • Whitespace is allowed anywhere and will be stripped off.
      • -
      - -

      Examples:

      -
      -
      5
      -
      The 5th line
      - -
      1-5
      -
      Lines 1 through 5
      - -
      1,4
      -
      Line 1 and line 4
      - -
      1-2, 5, 9-20
      -
      Lines 1 through 2, line 5, lines 9 through 20
      -
      - -

      In case you want the line numbering to be offset by a certain number (for example, you want the 1st line to be number 41 instead of 1, which is an offset of 40), you can additionally use the data-line-offset attribute. - -

      You can also link to specific lines on any code snippet, by using the following as a url hash: #{element-id}.{lines} where - {element-id} is the id of the <pre> element and {lines} is one or more lines or line ranges that follow the format - outlined above. For example, if there is an element with id="play" on the page, you can link to lines 5-6 by linking to #play.5-6

      - -

      If line numbers are also enabled for a code block and the <pre> element has an id, you can add the linkable-line-numbers class to the <pre> element. This will make all line numbers clickable and when clicking any line number, it will change the hash of the current page to link to that specific line.

      -
      - -
      -

      Examples

      - -

      Line 2

      -
      
      -
      -	

      Lines 15-25

      -
      
      -
      -	

      Line 1 and lines 3-4 and line 42

      -
      
      -
      -	

      Line 43, starting from line 41

      -
      
      -
      -	

      Linking example

      - -

      Compatible with Line numbers

      -
      
      -
      -	

      Even with some extra content before the code element.

      -
      Some content

      - - -

      With linkable line numbers

      -
      
      -
      -
      - -
      - - - - - - - - - - diff --git a/plugins/line-highlight/prism-line-highlight.css b/plugins/line-highlight/prism-line-highlight.css deleted file mode 100644 index ae47c89a28..0000000000 --- a/plugins/line-highlight/prism-line-highlight.css +++ /dev/null @@ -1,70 +0,0 @@ -pre[data-line] { - position: relative; - padding: 1em 0 1em 3em; -} - -.line-highlight { - position: absolute; - left: 0; - right: 0; - padding: inherit 0; - margin-top: 1em; /* Same as .prism’s padding-top */ - - background: hsla(24, 20%, 50%,.08); - background: linear-gradient(to right, hsla(24, 20%, 50%,.1) 70%, hsla(24, 20%, 50%,0)); - - pointer-events: none; - - line-height: inherit; - white-space: pre; -} - -@media print { - .line-highlight { - /* - * This will prevent browsers from replacing the background color with white. - * It's necessary because the element is layered on top of the displayed code. - */ - -webkit-print-color-adjust: exact; - color-adjust: exact; - } -} - - .line-highlight:before, - .line-highlight[data-end]:after { - content: attr(data-start); - position: absolute; - top: .4em; - left: .6em; - min-width: 1em; - padding: 0 .5em; - background-color: hsla(24, 20%, 50%,.4); - color: hsl(24, 20%, 95%); - font: bold 65%/1.5 sans-serif; - text-align: center; - vertical-align: .3em; - border-radius: 999px; - text-shadow: none; - box-shadow: 0 1px white; - } - - .line-highlight[data-end]:after { - content: attr(data-end); - top: auto; - bottom: .4em; - } - -.line-numbers .line-highlight:before, -.line-numbers .line-highlight:after { - content: none; -} - -pre[id].linkable-line-numbers span.line-numbers-rows { - pointer-events: all; -} -pre[id].linkable-line-numbers span.line-numbers-rows > span:before { - cursor: pointer; -} -pre[id].linkable-line-numbers span.line-numbers-rows > span:hover:before { - background-color: rgba(128, 128, 128, .2); -} diff --git a/plugins/line-highlight/prism-line-highlight.js b/plugins/line-highlight/prism-line-highlight.js deleted file mode 100644 index 79e045c516..0000000000 --- a/plugins/line-highlight/prism-line-highlight.js +++ /dev/null @@ -1,346 +0,0 @@ -(function () { - - if (typeof Prism === 'undefined' || typeof document === 'undefined' || !document.querySelector) { - return; - } - - var LINE_NUMBERS_CLASS = 'line-numbers'; - var LINKABLE_LINE_NUMBERS_CLASS = 'linkable-line-numbers'; - var NEW_LINE_EXP = /\n(?!$)/g; - - /** - * @param {string} selector - * @param {ParentNode} [container] - * @returns {HTMLElement[]} - */ - function $$(selector, container) { - return Array.prototype.slice.call((container || document).querySelectorAll(selector)); - } - - /** - * Returns whether the given element has the given class. - * - * @param {Element} element - * @param {string} className - * @returns {boolean} - */ - function hasClass(element, className) { - return element.classList.contains(className); - } - - /** - * Calls the given function. - * - * @param {() => any} func - * @returns {void} - */ - function callFunction(func) { - func(); - } - - // Some browsers round the line-height, others don't. - // We need to test for it to position the elements properly. - var isLineHeightRounded = (function () { - var res; - return function () { - if (typeof res === 'undefined') { - var d = document.createElement('div'); - d.style.fontSize = '13px'; - d.style.lineHeight = '1.5'; - d.style.padding = '0'; - d.style.border = '0'; - d.innerHTML = ' 
       '; - document.body.appendChild(d); - // Browsers that round the line-height should have offsetHeight === 38 - // The others should have 39. - res = d.offsetHeight === 38; - document.body.removeChild(d); - } - return res; - }; - }()); - - /** - * Returns the top offset of the content box of the given parent and the content box of one of its children. - * - * @param {HTMLElement} parent - * @param {HTMLElement} child - */ - function getContentBoxTopOffset(parent, child) { - var parentStyle = getComputedStyle(parent); - var childStyle = getComputedStyle(child); - - /** - * Returns the numeric value of the given pixel value. - * - * @param {string} px - */ - function pxToNumber(px) { - return +px.substr(0, px.length - 2); - } - - return child.offsetTop - + pxToNumber(childStyle.borderTopWidth) - + pxToNumber(childStyle.paddingTop) - - pxToNumber(parentStyle.paddingTop); - } - - /** - * Returns whether the Line Highlight plugin is active for the given element. - * - * If this function returns `false`, do not call `highlightLines` for the given element. - * - * @param {HTMLElement | null | undefined} pre - * @returns {boolean} - */ - function isActiveFor(pre) { - if (!pre || !/pre/i.test(pre.nodeName)) { - return false; - } - - if (pre.hasAttribute('data-line')) { - return true; - } - - if (pre.id && Prism.util.isActive(pre, LINKABLE_LINE_NUMBERS_CLASS)) { - // Technically, the line numbers plugin is also necessary but this plugin doesn't control the classes of - // the line numbers plugin, so we can't assume that they are present. - return true; - } - - return false; - } - - var scrollIntoView = true; - - Prism.plugins.lineHighlight = { - /** - * Highlights the lines of the given pre. - * - * This function is split into a DOM measuring and mutate phase to improve performance. - * The returned function mutates the DOM when called. - * - * @param {HTMLElement} pre - * @param {string | null} [lines] - * @param {string} [classes=''] - * @returns {() => void} - */ - highlightLines: function highlightLines(pre, lines, classes) { - lines = typeof lines === 'string' ? lines : (pre.getAttribute('data-line') || ''); - - var ranges = lines.replace(/\s+/g, '').split(',').filter(Boolean); - var offset = +pre.getAttribute('data-line-offset') || 0; - - var parseMethod = isLineHeightRounded() ? parseInt : parseFloat; - var lineHeight = parseMethod(getComputedStyle(pre).lineHeight); - var hasLineNumbers = Prism.util.isActive(pre, LINE_NUMBERS_CLASS); - var codeElement = pre.querySelector('code'); - var parentElement = hasLineNumbers ? pre : codeElement || pre; - var mutateActions = /** @type {(() => void)[]} */ ([]); - var lineBreakMatch = codeElement.textContent.match(NEW_LINE_EXP); - var numberOfLines = lineBreakMatch ? lineBreakMatch.length + 1 : 1; - /** - * The top offset between the content box of the element and the content box of the parent element of - * the line highlight element (either `
      ` or ``).
      -			 *
      -			 * This offset might not be zero for some themes where the  element has a top margin. Some plugins
      -			 * (or users) might also add element above the  element. Because the line highlight is aligned relative
      -			 * to the 
       element, we have to take this into account.
      -			 *
      -			 * This offset will be 0 if the parent element of the line highlight element is the `` element.
      -			 */
      -			var codePreOffset = !codeElement || parentElement == codeElement ? 0 : getContentBoxTopOffset(pre, codeElement);
      -
      -			ranges.forEach(function (currentRange) {
      -				var range = currentRange.split('-');
      -
      -				var start = +range[0];
      -				var end = +range[1] || start;
      -				end = Math.min(numberOfLines + offset, end);
      -
      -				if (end < start) {
      -					return;
      -				}
      -
      -				/** @type {HTMLElement} */
      -				var line = pre.querySelector('.line-highlight[data-range="' + currentRange + '"]') || document.createElement('div');
      -
      -				mutateActions.push(function () {
      -					line.setAttribute('aria-hidden', 'true');
      -					line.setAttribute('data-range', currentRange);
      -					line.className = (classes || '') + ' line-highlight';
      -				});
      -
      -				// if the line-numbers plugin is enabled, then there is no reason for this plugin to display the line numbers
      -				if (hasLineNumbers && Prism.plugins.lineNumbers) {
      -					var startNode = Prism.plugins.lineNumbers.getLine(pre, start);
      -					var endNode = Prism.plugins.lineNumbers.getLine(pre, end);
      -
      -					if (startNode) {
      -						var top = startNode.offsetTop + codePreOffset + 'px';
      -						mutateActions.push(function () {
      -							line.style.top = top;
      -						});
      -					}
      -
      -					if (endNode) {
      -						var height = (endNode.offsetTop - startNode.offsetTop) + endNode.offsetHeight + 'px';
      -						mutateActions.push(function () {
      -							line.style.height = height;
      -						});
      -					}
      -				} else {
      -					mutateActions.push(function () {
      -						line.setAttribute('data-start', String(start));
      -
      -						if (end > start) {
      -							line.setAttribute('data-end', String(end));
      -						}
      -
      -						line.style.top = (start - offset - 1) * lineHeight + codePreOffset + 'px';
      -
      -						line.textContent = new Array(end - start + 2).join(' \n');
      -					});
      -				}
      -
      -				mutateActions.push(function () {
      -					line.style.width = pre.scrollWidth + 'px';
      -				});
      -
      -				mutateActions.push(function () {
      -					// allow this to play nicely with the line-numbers plugin
      -					// need to attack to pre as when line-numbers is enabled, the code tag is relatively which screws up the positioning
      -					parentElement.appendChild(line);
      -				});
      -			});
      -
      -			var id = pre.id;
      -			if (hasLineNumbers && Prism.util.isActive(pre, LINKABLE_LINE_NUMBERS_CLASS) && id) {
      -				// This implements linkable line numbers. Linkable line numbers use Line Highlight to create a link to a
      -				// specific line. For this to work, the pre element has to:
      -				//  1) have line numbers,
      -				//  2) have the `linkable-line-numbers` class or an ascendant that has that class, and
      -				//  3) have an id.
      -
      -				if (!hasClass(pre, LINKABLE_LINE_NUMBERS_CLASS)) {
      -					// add class to pre
      -					mutateActions.push(function () {
      -						pre.classList.add(LINKABLE_LINE_NUMBERS_CLASS);
      -					});
      -				}
      -
      -				var start = parseInt(pre.getAttribute('data-start') || '1');
      -
      -				// iterate all line number spans
      -				$$('.line-numbers-rows > span', pre).forEach(function (lineSpan, i) {
      -					var lineNumber = i + start;
      -					lineSpan.onclick = function () {
      -						var hash = id + '.' + lineNumber;
      -
      -						// this will prevent scrolling since the span is obviously in view
      -						scrollIntoView = false;
      -						location.hash = hash;
      -						setTimeout(function () {
      -							scrollIntoView = true;
      -						}, 1);
      -					};
      -				});
      -			}
      -
      -			return function () {
      -				mutateActions.forEach(callFunction);
      -			};
      -		}
      -	};
      -
      -
      -	function applyHash() {
      -		var hash = location.hash.slice(1);
      -
      -		// Remove pre-existing temporary lines
      -		$$('.temporary.line-highlight').forEach(function (line) {
      -			line.parentNode.removeChild(line);
      -		});
      -
      -		var range = (hash.match(/\.([\d,-]+)$/) || [, ''])[1];
      -
      -		if (!range || document.getElementById(hash)) {
      -			return;
      -		}
      -
      -		var id = hash.slice(0, hash.lastIndexOf('.'));
      -		var pre = document.getElementById(id);
      -
      -		if (!pre) {
      -			return;
      -		}
      -
      -		if (!pre.hasAttribute('data-line')) {
      -			pre.setAttribute('data-line', '');
      -		}
      -
      -		var mutateDom = Prism.plugins.lineHighlight.highlightLines(pre, range, 'temporary ');
      -		mutateDom();
      -
      -		if (scrollIntoView) {
      -			document.querySelector('.temporary.line-highlight').scrollIntoView();
      -		}
      -	}
      -
      -	var fakeTimer = 0; // Hack to limit the number of times applyHash() runs
      -
      -	Prism.hooks.add('before-sanity-check', function (env) {
      -		var pre = env.element.parentElement;
      -		if (!isActiveFor(pre)) {
      -			return;
      -		}
      -
      -		/*
      -		 * Cleanup for other plugins (e.g. autoloader).
      -		 *
      -		 * Sometimes  blocks are highlighted multiple times. It is necessary
      -		 * to cleanup any left-over tags, because the whitespace inside of the 
      - * tags change the content of the tag. - */ - var num = 0; - $$('.line-highlight', pre).forEach(function (line) { - num += line.textContent.length; - line.parentNode.removeChild(line); - }); - // Remove extra whitespace - if (num && /^(?: \n)+$/.test(env.code.slice(-num))) { - env.code = env.code.slice(0, -num); - } - }); - - Prism.hooks.add('complete', function completeHook(env) { - var pre = env.element.parentElement; - if (!isActiveFor(pre)) { - return; - } - - clearTimeout(fakeTimer); - - var hasLineNumbers = Prism.plugins.lineNumbers; - var isLineNumbersLoaded = env.plugins && env.plugins.lineNumbers; - - if (hasClass(pre, LINE_NUMBERS_CLASS) && hasLineNumbers && !isLineNumbersLoaded) { - Prism.hooks.add('line-numbers', completeHook); - } else { - var mutateDom = Prism.plugins.lineHighlight.highlightLines(pre); - mutateDom(); - fakeTimer = setTimeout(applyHash, 1); - } - }); - - window.addEventListener('hashchange', applyHash); - window.addEventListener('resize', function () { - var actions = $$('pre') - .filter(isActiveFor) - .map(function (pre) { - return Prism.plugins.lineHighlight.highlightLines(pre); - }); - actions.forEach(callFunction); - }); - -}()); diff --git a/plugins/line-highlight/prism-line-highlight.min.css b/plugins/line-highlight/prism-line-highlight.min.css deleted file mode 100644 index 6cd87723b4..0000000000 --- a/plugins/line-highlight/prism-line-highlight.min.css +++ /dev/null @@ -1 +0,0 @@ -pre[data-line]{position:relative;padding:1em 0 1em 3em}.line-highlight{position:absolute;left:0;right:0;padding:inherit 0;margin-top:1em;background:hsla(24,20%,50%,.08);background:linear-gradient(to right,hsla(24,20%,50%,.1) 70%,hsla(24,20%,50%,0));pointer-events:none;line-height:inherit;white-space:pre}@media print{.line-highlight{-webkit-print-color-adjust:exact;color-adjust:exact}}.line-highlight:before,.line-highlight[data-end]:after{content:attr(data-start);position:absolute;top:.4em;left:.6em;min-width:1em;padding:0 .5em;background-color:hsla(24,20%,50%,.4);color:#f4f1ef;font:bold 65%/1.5 sans-serif;text-align:center;vertical-align:.3em;border-radius:999px;text-shadow:none;box-shadow:0 1px #fff}.line-highlight[data-end]:after{content:attr(data-end);top:auto;bottom:.4em}.line-numbers .line-highlight:after,.line-numbers .line-highlight:before{content:none}pre[id].linkable-line-numbers span.line-numbers-rows{pointer-events:all}pre[id].linkable-line-numbers span.line-numbers-rows>span:before{cursor:pointer}pre[id].linkable-line-numbers span.line-numbers-rows>span:hover:before{background-color:rgba(128,128,128,.2)} \ No newline at end of file diff --git a/plugins/line-highlight/prism-line-highlight.min.js b/plugins/line-highlight/prism-line-highlight.min.js deleted file mode 100644 index 65c243692c..0000000000 --- a/plugins/line-highlight/prism-line-highlight.min.js +++ /dev/null @@ -1 +0,0 @@ -!function(){if("undefined"!=typeof Prism&&"undefined"!=typeof document&&document.querySelector){var e,t="line-numbers",i="linkable-line-numbers",n=/\n(?!$)/g,r=!0;Prism.plugins.lineHighlight={highlightLines:function(o,u,c){var h=(u="string"==typeof u?u:o.getAttribute("data-line")||"").replace(/\s+/g,"").split(",").filter(Boolean),d=+o.getAttribute("data-line-offset")||0,f=(function(){if(void 0===e){var t=document.createElement("div");t.style.fontSize="13px",t.style.lineHeight="1.5",t.style.padding="0",t.style.border="0",t.innerHTML=" 
       ",document.body.appendChild(t),e=38===t.offsetHeight,document.body.removeChild(t)}return e}()?parseInt:parseFloat)(getComputedStyle(o).lineHeight),p=Prism.util.isActive(o,t),g=o.querySelector("code"),m=p?o:g||o,v=[],y=g.textContent.match(n),b=y?y.length+1:1,A=g&&m!=g?function(e,t){var i=getComputedStyle(e),n=getComputedStyle(t);function r(e){return+e.substr(0,e.length-2)}return t.offsetTop+r(n.borderTopWidth)+r(n.paddingTop)-r(i.paddingTop)}(o,g):0;h.forEach((function(e){var t=e.split("-"),i=+t[0],n=+t[1]||i;if(!((n=Math.min(b+d,n))i&&r.setAttribute("data-end",String(n)),r.style.top=(i-d-1)*f+A+"px",r.textContent=new Array(n-i+2).join(" \n")}));v.push((function(){r.style.width=o.scrollWidth+"px"})),v.push((function(){m.appendChild(r)}))}}));var P=o.id;if(p&&Prism.util.isActive(o,i)&&P){l(o,i)||v.push((function(){o.classList.add(i)}));var E=parseInt(o.getAttribute("data-start")||"1");s(".line-numbers-rows > span",o).forEach((function(e,t){var i=t+E;e.onclick=function(){var e=P+"."+i;r=!1,location.hash=e,setTimeout((function(){r=!0}),1)}}))}return function(){v.forEach(a)}}};var o=0;Prism.hooks.add("before-sanity-check",(function(e){var t=e.element.parentElement;if(u(t)){var i=0;s(".line-highlight",t).forEach((function(e){i+=e.textContent.length,e.parentNode.removeChild(e)})),i&&/^(?: \n)+$/.test(e.code.slice(-i))&&(e.code=e.code.slice(0,-i))}})),Prism.hooks.add("complete",(function e(i){var n=i.element.parentElement;if(u(n)){clearTimeout(o);var r=Prism.plugins.lineNumbers,s=i.plugins&&i.plugins.lineNumbers;l(n,t)&&r&&!s?Prism.hooks.add("line-numbers",e):(Prism.plugins.lineHighlight.highlightLines(n)(),o=setTimeout(c,1))}})),window.addEventListener("hashchange",c),window.addEventListener("resize",(function(){s("pre").filter(u).map((function(e){return Prism.plugins.lineHighlight.highlightLines(e)})).forEach(a)}))}function s(e,t){return Array.prototype.slice.call((t||document).querySelectorAll(e))}function l(e,t){return e.classList.contains(t)}function a(e){e()}function u(e){return!!(e&&/pre/i.test(e.nodeName)&&(e.hasAttribute("data-line")||e.id&&Prism.util.isActive(e,i)))}function c(){var e=location.hash.slice(1);s(".temporary.line-highlight").forEach((function(e){e.parentNode.removeChild(e)}));var t=(e.match(/\.([\d,-]+)$/)||[,""])[1];if(t&&!document.getElementById(e)){var i=e.slice(0,e.lastIndexOf(".")),n=document.getElementById(i);n&&(n.hasAttribute("data-line")||n.setAttribute("data-line",""),Prism.plugins.lineHighlight.highlightLines(n,t,"temporary ")(),r&&document.querySelector(".temporary.line-highlight").scrollIntoView())}}}(); \ No newline at end of file diff --git a/plugins/line-numbers/index.html b/plugins/line-numbers/index.html deleted file mode 100644 index a6c93b1ace..0000000000 --- a/plugins/line-numbers/index.html +++ /dev/null @@ -1,84 +0,0 @@ - - - - - - -Line Numbers ▲ Prism plugins - - - - - - - - - - - -
      - -
      -

      How to use

      - -

      Obviously, this is supposed to work only for code blocks (<pre><code>) and not for inline code.

      -

      Add the line-numbers class to your desired <pre> or any of its ancestors, and the Line Numbers plugin will take care of the rest. To give all code blocks line numbers, add the line-numbers class to the <body> of the page. This is part of a general activation mechanism where adding the line-numbers (or no-line-numbers) class to any element will enable (or disable) the Line Numbers plugin for all code blocks in that element.
      Example:

      - -
      <body class="line-numbers"> <!-- enabled for the whole page -->
      -
      -	<!-- with line numbers -->
      -	<pre><code>...</code></pre>
      -	<!-- disabled for a specific element - without line numbers -->
      -	<pre class="no-line-numbers"><code>...</code></pre>
      -
      -	<div class="no-line-numbers"> <!-- disabled for this subtree -->
      -
      -		<!-- without line numbers -->
      -		<pre><code>...</code></pre>
      -		<!-- enabled for a specific element - with line numbers -->
      -		<pre class="line-numbers"><code>...</code></pre>
      -
      -	</div>
      -</body>
      - -

      Optional: You can specify the data-start (Number) attribute on the <pre> element. It will shift the line counter.

      -

      Optional: To support multiline line numbers using soft wrap, apply the CSS white-space: pre-line; or white-space: pre-wrap; to your desired <pre>.

      -
      - -
      -

      Examples

      - -

      JavaScript

      -
      
      -
      -  

      CSS

      -

      Please note that this <pre> does not have the line-numbers class but its parent does.

      -
      
      -
      -  

      HTML

      -

      Please note the data-start="-5" in the code below.

      -
      
      -
      -  

      Unknown languages

      -
      This raw text
      -is not highlighted
      -but it still has
      -line numbers
      - -

      Soft wrap support

      -

      Please note the style="white-space:pre-wrap;" in the code below.

      -
      
      -
      -
      - -
      - - - - - - - - - - diff --git a/plugins/line-numbers/prism-line-numbers.css b/plugins/line-numbers/prism-line-numbers.css deleted file mode 100644 index 57705307cb..0000000000 --- a/plugins/line-numbers/prism-line-numbers.css +++ /dev/null @@ -1,40 +0,0 @@ -pre[class*="language-"].line-numbers { - position: relative; - padding-left: 3.8em; - counter-reset: linenumber; -} - -pre[class*="language-"].line-numbers > code { - position: relative; - white-space: inherit; -} - -.line-numbers .line-numbers-rows { - position: absolute; - pointer-events: none; - top: 0; - font-size: 100%; - left: -3.8em; - width: 3em; /* works for line-numbers below 1000 lines */ - letter-spacing: -1px; - border-right: 1px solid #999; - - -webkit-user-select: none; - -moz-user-select: none; - -ms-user-select: none; - user-select: none; - -} - - .line-numbers-rows > span { - display: block; - counter-increment: linenumber; - } - - .line-numbers-rows > span:before { - content: counter(linenumber); - color: #999; - display: block; - padding-right: 0.8em; - text-align: right; - } diff --git a/plugins/line-numbers/prism-line-numbers.js b/plugins/line-numbers/prism-line-numbers.js deleted file mode 100644 index 71e8b6963a..0000000000 --- a/plugins/line-numbers/prism-line-numbers.js +++ /dev/null @@ -1,252 +0,0 @@ -(function () { - - if (typeof Prism === 'undefined' || typeof document === 'undefined') { - return; - } - - /** - * Plugin name which is used as a class name for
       which is activating the plugin
      -	 *
      -	 * @type {string}
      -	 */
      -	var PLUGIN_NAME = 'line-numbers';
      -
      -	/**
      -	 * Regular expression used for determining line breaks
      -	 *
      -	 * @type {RegExp}
      -	 */
      -	var NEW_LINE_EXP = /\n(?!$)/g;
      -
      -
      -	/**
      -	 * Global exports
      -	 */
      -	var config = Prism.plugins.lineNumbers = {
      -		/**
      -		 * Get node for provided line number
      -		 *
      -		 * @param {Element} element pre element
      -		 * @param {number} number line number
      -		 * @returns {Element|undefined}
      -		 */
      -		getLine: function (element, number) {
      -			if (element.tagName !== 'PRE' || !element.classList.contains(PLUGIN_NAME)) {
      -				return;
      -			}
      -
      -			var lineNumberRows = element.querySelector('.line-numbers-rows');
      -			if (!lineNumberRows) {
      -				return;
      -			}
      -			var lineNumberStart = parseInt(element.getAttribute('data-start'), 10) || 1;
      -			var lineNumberEnd = lineNumberStart + (lineNumberRows.children.length - 1);
      -
      -			if (number < lineNumberStart) {
      -				number = lineNumberStart;
      -			}
      -			if (number > lineNumberEnd) {
      -				number = lineNumberEnd;
      -			}
      -
      -			var lineIndex = number - lineNumberStart;
      -
      -			return lineNumberRows.children[lineIndex];
      -		},
      -
      -		/**
      -		 * Resizes the line numbers of the given element.
      -		 *
      -		 * This function will not add line numbers. It will only resize existing ones.
      -		 *
      -		 * @param {HTMLElement} element A `
      ` element with line numbers.
      -		 * @returns {void}
      -		 */
      -		resize: function (element) {
      -			resizeElements([element]);
      -		},
      -
      -		/**
      -		 * Whether the plugin can assume that the units font sizes and margins are not depended on the size of
      -		 * the current viewport.
      -		 *
      -		 * Setting this to `true` will allow the plugin to do certain optimizations for better performance.
      -		 *
      -		 * Set this to `false` if you use any of the following CSS units: `vh`, `vw`, `vmin`, `vmax`.
      -		 *
      -		 * @type {boolean}
      -		 */
      -		assumeViewportIndependence: true
      -	};
      -
      -	/**
      -	 * Resizes the given elements.
      -	 *
      -	 * @param {HTMLElement[]} elements
      -	 */
      -	function resizeElements(elements) {
      -		elements = elements.filter(function (e) {
      -			var codeStyles = getStyles(e);
      -			var whiteSpace = codeStyles['white-space'];
      -			return whiteSpace === 'pre-wrap' || whiteSpace === 'pre-line';
      -		});
      -
      -		if (elements.length == 0) {
      -			return;
      -		}
      -
      -		var infos = elements.map(function (element) {
      -			var codeElement = element.querySelector('code');
      -			var lineNumbersWrapper = element.querySelector('.line-numbers-rows');
      -			if (!codeElement || !lineNumbersWrapper) {
      -				return undefined;
      -			}
      -
      -			/** @type {HTMLElement} */
      -			var lineNumberSizer = element.querySelector('.line-numbers-sizer');
      -			var codeLines = codeElement.textContent.split(NEW_LINE_EXP);
      -
      -			if (!lineNumberSizer) {
      -				lineNumberSizer = document.createElement('span');
      -				lineNumberSizer.className = 'line-numbers-sizer';
      -
      -				codeElement.appendChild(lineNumberSizer);
      -			}
      -
      -			lineNumberSizer.innerHTML = '0';
      -			lineNumberSizer.style.display = 'block';
      -
      -			var oneLinerHeight = lineNumberSizer.getBoundingClientRect().height;
      -			lineNumberSizer.innerHTML = '';
      -
      -			return {
      -				element: element,
      -				lines: codeLines,
      -				lineHeights: [],
      -				oneLinerHeight: oneLinerHeight,
      -				sizer: lineNumberSizer,
      -			};
      -		}).filter(Boolean);
      -
      -		infos.forEach(function (info) {
      -			var lineNumberSizer = info.sizer;
      -			var lines = info.lines;
      -			var lineHeights = info.lineHeights;
      -			var oneLinerHeight = info.oneLinerHeight;
      -
      -			lineHeights[lines.length - 1] = undefined;
      -			lines.forEach(function (line, index) {
      -				if (line && line.length > 1) {
      -					var e = lineNumberSizer.appendChild(document.createElement('span'));
      -					e.style.display = 'block';
      -					e.textContent = line;
      -				} else {
      -					lineHeights[index] = oneLinerHeight;
      -				}
      -			});
      -		});
      -
      -		infos.forEach(function (info) {
      -			var lineNumberSizer = info.sizer;
      -			var lineHeights = info.lineHeights;
      -
      -			var childIndex = 0;
      -			for (var i = 0; i < lineHeights.length; i++) {
      -				if (lineHeights[i] === undefined) {
      -					lineHeights[i] = lineNumberSizer.children[childIndex++].getBoundingClientRect().height;
      -				}
      -			}
      -		});
      -
      -		infos.forEach(function (info) {
      -			var lineNumberSizer = info.sizer;
      -			var wrapper = info.element.querySelector('.line-numbers-rows');
      -
      -			lineNumberSizer.style.display = 'none';
      -			lineNumberSizer.innerHTML = '';
      -
      -			info.lineHeights.forEach(function (height, lineNumber) {
      -				wrapper.children[lineNumber].style.height = height + 'px';
      -			});
      -		});
      -	}
      -
      -	/**
      -	 * Returns style declarations for the element
      -	 *
      -	 * @param {Element} element
      -	 */
      -	function getStyles(element) {
      -		if (!element) {
      -			return null;
      -		}
      -
      -		return window.getComputedStyle ? getComputedStyle(element) : (element.currentStyle || null);
      -	}
      -
      -	var lastWidth = undefined;
      -	window.addEventListener('resize', function () {
      -		if (config.assumeViewportIndependence && lastWidth === window.innerWidth) {
      -			return;
      -		}
      -		lastWidth = window.innerWidth;
      -
      -		resizeElements(Array.prototype.slice.call(document.querySelectorAll('pre.' + PLUGIN_NAME)));
      -	});
      -
      -	Prism.hooks.add('complete', function (env) {
      -		if (!env.code) {
      -			return;
      -		}
      -
      -		var code = /** @type {Element} */ (env.element);
      -		var pre = /** @type {HTMLElement} */ (code.parentNode);
      -
      -		// works only for  wrapped inside 
       (not inline)
      -		if (!pre || !/pre/i.test(pre.nodeName)) {
      -			return;
      -		}
      -
      -		// Abort if line numbers already exists
      -		if (code.querySelector('.line-numbers-rows')) {
      -			return;
      -		}
      -
      -		// only add line numbers if  or one of its ancestors has the `line-numbers` class
      -		if (!Prism.util.isActive(code, PLUGIN_NAME)) {
      -			return;
      -		}
      -
      -		// Remove the class 'line-numbers' from the 
      -		code.classList.remove(PLUGIN_NAME);
      -		// Add the class 'line-numbers' to the 
      -		pre.classList.add(PLUGIN_NAME);
      -
      -		var match = env.code.match(NEW_LINE_EXP);
      -		var linesNum = match ? match.length + 1 : 1;
      -		var lineNumbersWrapper;
      -
      -		var lines = new Array(linesNum + 1).join('');
      -
      -		lineNumbersWrapper = document.createElement('span');
      -		lineNumbersWrapper.setAttribute('aria-hidden', 'true');
      -		lineNumbersWrapper.className = 'line-numbers-rows';
      -		lineNumbersWrapper.innerHTML = lines;
      -
      -		if (pre.hasAttribute('data-start')) {
      -			pre.style.counterReset = 'linenumber ' + (parseInt(pre.getAttribute('data-start'), 10) - 1);
      -		}
      -
      -		env.element.appendChild(lineNumbersWrapper);
      -
      -		resizeElements([pre]);
      -
      -		Prism.hooks.run('line-numbers', env);
      -	});
      -
      -	Prism.hooks.add('line-numbers', function (env) {
      -		env.plugins = env.plugins || {};
      -		env.plugins.lineNumbers = true;
      -	});
      -
      -}());
      diff --git a/plugins/line-numbers/prism-line-numbers.min.css b/plugins/line-numbers/prism-line-numbers.min.css
      deleted file mode 100644
      index 8170f64670..0000000000
      --- a/plugins/line-numbers/prism-line-numbers.min.css
      +++ /dev/null
      @@ -1 +0,0 @@
      -pre[class*=language-].line-numbers{position:relative;padding-left:3.8em;counter-reset:linenumber}pre[class*=language-].line-numbers>code{position:relative;white-space:inherit}.line-numbers .line-numbers-rows{position:absolute;pointer-events:none;top:0;font-size:100%;left:-3.8em;width:3em;letter-spacing:-1px;border-right:1px solid #999;-webkit-user-select:none;-moz-user-select:none;-ms-user-select:none;user-select:none}.line-numbers-rows>span{display:block;counter-increment:linenumber}.line-numbers-rows>span:before{content:counter(linenumber);color:#999;display:block;padding-right:.8em;text-align:right}
      \ No newline at end of file
      diff --git a/plugins/line-numbers/prism-line-numbers.min.js b/plugins/line-numbers/prism-line-numbers.min.js
      deleted file mode 100644
      index 1f12d2d476..0000000000
      --- a/plugins/line-numbers/prism-line-numbers.min.js
      +++ /dev/null
      @@ -1 +0,0 @@
      -!function(){if("undefined"!=typeof Prism&&"undefined"!=typeof document){var e="line-numbers",n=/\n(?!$)/g,t=Prism.plugins.lineNumbers={getLine:function(n,t){if("PRE"===n.tagName&&n.classList.contains(e)){var i=n.querySelector(".line-numbers-rows");if(i){var r=parseInt(n.getAttribute("data-start"),10)||1,s=r+(i.children.length-1);ts&&(t=s);var l=t-r;return i.children[l]}}},resize:function(e){r([e])},assumeViewportIndependence:!0},i=void 0;window.addEventListener("resize",(function(){t.assumeViewportIndependence&&i===window.innerWidth||(i=window.innerWidth,r(Array.prototype.slice.call(document.querySelectorAll("pre.line-numbers"))))})),Prism.hooks.add("complete",(function(t){if(t.code){var i=t.element,s=i.parentNode;if(s&&/pre/i.test(s.nodeName)&&!i.querySelector(".line-numbers-rows")&&Prism.util.isActive(i,e)){i.classList.remove(e),s.classList.add(e);var l,o=t.code.match(n),a=o?o.length+1:1,u=new Array(a+1).join("");(l=document.createElement("span")).setAttribute("aria-hidden","true"),l.className="line-numbers-rows",l.innerHTML=u,s.hasAttribute("data-start")&&(s.style.counterReset="linenumber "+(parseInt(s.getAttribute("data-start"),10)-1)),t.element.appendChild(l),r([s]),Prism.hooks.run("line-numbers",t)}}})),Prism.hooks.add("line-numbers",(function(e){e.plugins=e.plugins||{},e.plugins.lineNumbers=!0}))}function r(e){if(0!=(e=e.filter((function(e){var n,t=(n=e,n?window.getComputedStyle?getComputedStyle(n):n.currentStyle||null:null)["white-space"];return"pre-wrap"===t||"pre-line"===t}))).length){var t=e.map((function(e){var t=e.querySelector("code"),i=e.querySelector(".line-numbers-rows");if(t&&i){var r=e.querySelector(".line-numbers-sizer"),s=t.textContent.split(n);r||((r=document.createElement("span")).className="line-numbers-sizer",t.appendChild(r)),r.innerHTML="0",r.style.display="block";var l=r.getBoundingClientRect().height;return r.innerHTML="",{element:e,lines:s,lineHeights:[],oneLinerHeight:l,sizer:r}}})).filter(Boolean);t.forEach((function(e){var n=e.sizer,t=e.lines,i=e.lineHeights,r=e.oneLinerHeight;i[t.length-1]=void 0,t.forEach((function(e,t){if(e&&e.length>1){var s=n.appendChild(document.createElement("span"));s.style.display="block",s.textContent=e}else i[t]=r}))})),t.forEach((function(e){for(var n=e.sizer,t=e.lineHeights,i=0,r=0;r
      -
      -
      -
      -
      -
      -Match braces ▲ Prism plugins
      -
      -
      -
      -
      -
      -
      -
      -
      -
      -
      -
      -
      - -
      -

      How to use

      - -

      To enable this plugin add the match-braces class to a code block:

      - -
      <pre><code class="language-xxxx match-braces">...</pre></code>
      - -

      Just like language-xxxx, the match-braces class is inherited, so you can add the class to the <body> to enable the plugin for the whole page.

      - -

      The plugin will highlight brace pairs when the cursor hovers over one of the braces. The highlighting effect will disappear as soon as the cursor leaves the brace pair.
      - The hover effect can be disabled by adding the no-brace-hover to the code block. This class can also be inherited.

      - -

      You can also click on a brace to select the brace pair. To deselect the pair, click anywhere within the code block or select another pair.
      - The selection effect can be disabled by adding the no-brace-select to the code block. This class can also be - inherited.

      - -

      Rainbow braces 🌈

      - -

      To enable rainbow braces, simply add the rainbow-braces class to a code block. This class can also get inherited.

      -
      - -
      -

      Examples

      - -

      JavaScript

      -
      
      -	
      const func = (a, b) => {
      -	return `${a}:${b}`;
      -}
      - -

      Lisp

      -
      (defun factorial (n)
      -	(if (= n 0) 1
      -		(* n (factorial (- n 1)))))
      - -

      Lisp with rainbow braces 🌈 but without hover

      -
      (defun factorial (n)
      -	(if (= n 0) 1
      -		(* n (factorial (- n 1)))))
      -
      - -
      - - - - - - - - - - - diff --git a/plugins/match-braces/prism-match-braces.css b/plugins/match-braces/prism-match-braces.css deleted file mode 100644 index 9ca6981da3..0000000000 --- a/plugins/match-braces/prism-match-braces.css +++ /dev/null @@ -1,29 +0,0 @@ -.token.punctuation.brace-hover, -.token.punctuation.brace-selected { - outline: solid 1px; -} - -.rainbow-braces .token.punctuation.brace-level-1, -.rainbow-braces .token.punctuation.brace-level-5, -.rainbow-braces .token.punctuation.brace-level-9 { - color: #E50; - opacity: 1; -} -.rainbow-braces .token.punctuation.brace-level-2, -.rainbow-braces .token.punctuation.brace-level-6, -.rainbow-braces .token.punctuation.brace-level-10 { - color: #0B3; - opacity: 1; -} -.rainbow-braces .token.punctuation.brace-level-3, -.rainbow-braces .token.punctuation.brace-level-7, -.rainbow-braces .token.punctuation.brace-level-11 { - color: #26F; - opacity: 1; -} -.rainbow-braces .token.punctuation.brace-level-4, -.rainbow-braces .token.punctuation.brace-level-8, -.rainbow-braces .token.punctuation.brace-level-12 { - color: #E0E; - opacity: 1; -} diff --git a/plugins/match-braces/prism-match-braces.js b/plugins/match-braces/prism-match-braces.js deleted file mode 100644 index 478f344ff3..0000000000 --- a/plugins/match-braces/prism-match-braces.js +++ /dev/null @@ -1,190 +0,0 @@ -(function () { - - if (typeof Prism === 'undefined' || typeof document === 'undefined') { - return; - } - - function mapClassName(name) { - var customClass = Prism.plugins.customClass; - if (customClass) { - return customClass.apply(name, 'none'); - } else { - return name; - } - } - - var PARTNER = { - '(': ')', - '[': ']', - '{': '}', - }; - - // The names for brace types. - // These names have two purposes: 1) they can be used for styling and 2) they are used to pair braces. Only braces - // of the same type are paired. - var NAMES = { - '(': 'brace-round', - '[': 'brace-square', - '{': 'brace-curly', - }; - - // A map for brace aliases. - // This is useful for when some braces have a prefix/suffix as part of the punctuation token. - var BRACE_ALIAS_MAP = { - '${': '{', // JS template punctuation (e.g. `foo ${bar + 1}`) - }; - - var LEVEL_WARP = 12; - - var pairIdCounter = 0; - - var BRACE_ID_PATTERN = /^(pair-\d+-)(close|open)$/; - - /** - * Returns the brace partner given one brace of a brace pair. - * - * @param {HTMLElement} brace - * @returns {HTMLElement} - */ - function getPartnerBrace(brace) { - var match = BRACE_ID_PATTERN.exec(brace.id); - return document.querySelector('#' + match[1] + (match[2] == 'open' ? 'close' : 'open')); - } - - /** - * @this {HTMLElement} - */ - function hoverBrace() { - if (!Prism.util.isActive(this, 'brace-hover', true)) { - return; - } - - [this, getPartnerBrace(this)].forEach(function (e) { - e.classList.add(mapClassName('brace-hover')); - }); - } - /** - * @this {HTMLElement} - */ - function leaveBrace() { - [this, getPartnerBrace(this)].forEach(function (e) { - e.classList.remove(mapClassName('brace-hover')); - }); - } - /** - * @this {HTMLElement} - */ - function clickBrace() { - if (!Prism.util.isActive(this, 'brace-select', true)) { - return; - } - - [this, getPartnerBrace(this)].forEach(function (e) { - e.classList.add(mapClassName('brace-selected')); - }); - } - - Prism.hooks.add('complete', function (env) { - - /** @type {HTMLElement} */ - var code = env.element; - var pre = code.parentElement; - - if (!pre || pre.tagName != 'PRE') { - return; - } - - // find the braces to match - /** @type {string[]} */ - var toMatch = []; - if (Prism.util.isActive(code, 'match-braces')) { - toMatch.push('(', '[', '{'); - } - - if (toMatch.length == 0) { - // nothing to match - return; - } - - if (!pre.__listenerAdded) { - // code blocks might be highlighted more than once - pre.addEventListener('mousedown', function removeBraceSelected() { - // the code element might have been replaced - var code = pre.querySelector('code'); - var className = mapClassName('brace-selected'); - Array.prototype.slice.call(code.querySelectorAll('.' + className)).forEach(function (e) { - e.classList.remove(className); - }); - }); - Object.defineProperty(pre, '__listenerAdded', { value: true }); - } - - /** @type {HTMLSpanElement[]} */ - var punctuation = Array.prototype.slice.call( - code.querySelectorAll('span.' + mapClassName('token') + '.' + mapClassName('punctuation')) - ); - - /** @type {{ index: number, open: boolean, element: HTMLElement }[]} */ - var allBraces = []; - - toMatch.forEach(function (open) { - var close = PARTNER[open]; - var name = mapClassName(NAMES[open]); - - /** @type {[number, number][]} */ - var pairs = []; - /** @type {number[]} */ - var openStack = []; - - for (var i = 0; i < punctuation.length; i++) { - var element = punctuation[i]; - if (element.childElementCount == 0) { - var text = element.textContent; - text = BRACE_ALIAS_MAP[text] || text; - if (text === open) { - allBraces.push({ index: i, open: true, element: element }); - element.classList.add(name); - element.classList.add(mapClassName('brace-open')); - openStack.push(i); - } else if (text === close) { - allBraces.push({ index: i, open: false, element: element }); - element.classList.add(name); - element.classList.add(mapClassName('brace-close')); - if (openStack.length) { - pairs.push([i, openStack.pop()]); - } - } - } - } - - pairs.forEach(function (pair) { - var pairId = 'pair-' + (pairIdCounter++) + '-'; - - var opening = punctuation[pair[0]]; - var closing = punctuation[pair[1]]; - - opening.id = pairId + 'open'; - closing.id = pairId + 'close'; - - [opening, closing].forEach(function (e) { - e.addEventListener('mouseenter', hoverBrace); - e.addEventListener('mouseleave', leaveBrace); - e.addEventListener('click', clickBrace); - }); - }); - }); - - var level = 0; - allBraces.sort(function (a, b) { return a.index - b.index; }); - allBraces.forEach(function (brace) { - if (brace.open) { - brace.element.classList.add(mapClassName('brace-level-' + (level % LEVEL_WARP + 1))); - level++; - } else { - level = Math.max(0, level - 1); - brace.element.classList.add(mapClassName('brace-level-' + (level % LEVEL_WARP + 1))); - } - }); - }); - -}()); diff --git a/plugins/match-braces/prism-match-braces.min.css b/plugins/match-braces/prism-match-braces.min.css deleted file mode 100644 index 367b166b5a..0000000000 --- a/plugins/match-braces/prism-match-braces.min.css +++ /dev/null @@ -1 +0,0 @@ -.token.punctuation.brace-hover,.token.punctuation.brace-selected{outline:solid 1px}.rainbow-braces .token.punctuation.brace-level-1,.rainbow-braces .token.punctuation.brace-level-5,.rainbow-braces .token.punctuation.brace-level-9{color:#e50;opacity:1}.rainbow-braces .token.punctuation.brace-level-10,.rainbow-braces .token.punctuation.brace-level-2,.rainbow-braces .token.punctuation.brace-level-6{color:#0b3;opacity:1}.rainbow-braces .token.punctuation.brace-level-11,.rainbow-braces .token.punctuation.brace-level-3,.rainbow-braces .token.punctuation.brace-level-7{color:#26f;opacity:1}.rainbow-braces .token.punctuation.brace-level-12,.rainbow-braces .token.punctuation.brace-level-4,.rainbow-braces .token.punctuation.brace-level-8{color:#e0e;opacity:1} \ No newline at end of file diff --git a/plugins/match-braces/prism-match-braces.min.js b/plugins/match-braces/prism-match-braces.min.js deleted file mode 100644 index b6888df1c0..0000000000 --- a/plugins/match-braces/prism-match-braces.min.js +++ /dev/null @@ -1 +0,0 @@ -!function(){if("undefined"!=typeof Prism&&"undefined"!=typeof document){var e={"(":")","[":"]","{":"}"},t={"(":"brace-round","[":"brace-square","{":"brace-curly"},n={"${":"{"},r=0,c=/^(pair-\d+-)(close|open)$/;Prism.hooks.add("complete",(function(c){var i=c.element,d=i.parentElement;if(d&&"PRE"==d.tagName){var u=[];if(Prism.util.isActive(i,"match-braces")&&u.push("(","[","{"),0!=u.length){d.__listenerAdded||(d.addEventListener("mousedown",(function(){var e=d.querySelector("code"),t=s("brace-selected");Array.prototype.slice.call(e.querySelectorAll("."+t)).forEach((function(e){e.classList.remove(t)}))})),Object.defineProperty(d,"__listenerAdded",{value:!0}));var f=Array.prototype.slice.call(i.querySelectorAll("span."+s("token")+"."+s("punctuation"))),h=[];u.forEach((function(c){for(var i=e[c],d=s(t[c]),u=[],p=[],v=0;v -
      - -
      -
      -	
      -
      -
      -		var example = {
      -			foo: true,
      -
      -			bar: false
      -		};
      -
      -
      -	
      -
      -
      - -
      -
      -	
      -
      -
      -		var there_is_a_very_very_very_very_long_line_it_can_break_it_for_you = true;
      -
      -		if (there_is_a_very_very_very_very_long_line_it_can_break_it_for_you === true) {
      -		};
      -
      -
      -	
      -
      -
      - -
      - - - - - \ No newline at end of file diff --git a/plugins/normalize-whitespace/index.html b/plugins/normalize-whitespace/index.html deleted file mode 100644 index a145fc6332..0000000000 --- a/plugins/normalize-whitespace/index.html +++ /dev/null @@ -1,185 +0,0 @@ - - - - - - - Normalize Whitespace ▲ Prism plugins - - - - - - - - - - - - -
      - -
      -

      How to use

      - -

      Obviously, this is supposed to work only for code blocks (<pre><code>) and not for inline code.

      -

      By default the plugin trims all leading and trailing whitespace of every code block. - It also removes extra indents and trailing whitespace on every line.

      - -

      The plugin can be disabled for a particular code block by adding the class no-whitespace-normalization to - either the <pre> or <code> tag.

      - -

      The default settings can be overridden with the setDefaults() method - like so:

      - -
      
      -Prism.plugins.NormalizeWhitespace.setDefaults({
      -	'remove-trailing': true,
      -	'remove-indent': true,
      -	'left-trim': true,
      -	'right-trim': true,
      -	/*'break-lines': 80,
      -	'indent': 2,
      -	'remove-initial-line-feed': false,
      -	'tabs-to-spaces': 4,
      -	'spaces-to-tabs': 4*/
      -});
      -
      - -

      The following settings are available and can be set via the data-[setting] attribute on the <pre< element:

      - -
      -
      remove-trailing
      -
      Removes trailing whitespace on all lines.
      -
      remove-indent
      -
      If the whole code block is indented too much it removes the extra indent.
      -
      left-trim
      -
      Removes all whitespace from the top of the code block.
      -
      right-trim
      -
      Removes all whitespace from the bottom of the code block.
      -
      break-lines
      -
      Simple way of breaking long lines at a certain length (default is 80 characters).
      -
      indent
      -
      Adds a certain number of tabs to every line.
      -
      remove-initial-line-feed
      -
      Less aggressive version of left-trim. - It only removes a single line feed from the top of the code block.
      -
      tabs-to-spaces
      -
      Converts all tabs to a certain number of spaces (default is 4 spaces).
      -
      spaces-to-tabs
      -
      Converts a certain number of spaces to a tab (default is 4 spaces).
      -
      -
      - -
      -

      Examples

      - -

      The following example demonstrates the use of this plugin:

      - -
      
      -
      -	

      The result looks like this:

      - -
      -
      -	
      -
      -
      -		var example = {
      -			foo: true,
      -
      -			bar: false
      -		};
      -
      -
      -		var
      -		there_is_a_very_very_very_very_long_line_it_can_break_it_for_you
      -		 = true;
      -		
      -		if 
      -		(there_is_a_very_very_very_very_long_line_it_can_break_it_for_you
      -		 === true) {
      -		};
      -
      -
      -	
      -
      -
      - -

      It is also compatible with the keep-markup plugin:

      - -
      -
      -	
      -
      -
      -	@media screen {
      -		div {
      -			text-decoration: underline;
      -			background: url('foo.png');
      -		}
      -	}
      -
      -
      -
      - -

      This plugin can also be used on the server or on the command line with Node.js:

      - -
      
      -var Prism = require('prismjs');
      -var Normalizer = require('prismjs/plugins/normalize-whitespace/prism-normalize-whitespace');
      -// Create a new Normalizer object
      -var nw = new Normalizer({
      -	'remove-trailing': true,
      -	'remove-indent': true,
      -	'left-trim': true,
      -	'right-trim': true,
      -	/*'break-lines': 80,
      -	'indent': 2,
      -	'remove-initial-line-feed': false,
      -	'tabs-to-spaces': 4,
      -	'spaces-to-tabs': 4*/
      -});
      -
      -// ..or use the default object from Prism
      -nw = Prism.plugins.NormalizeWhitespace;
      -
      -// The code snippet you want to highlight, as a string
      -var code = "\t\t\tvar data = 1;    ";
      -
      -// Removes leading and trailing whitespace
      -// and then indents by 1 tab
      -code = nw.normalize(code, {
      -	// Extra settings
      -	indent: 1
      -});
      -
      -// Returns a highlighted HTML string
      -var html = Prism.highlight(code, Prism.languages.javascript);
      -	
      - - -
      - -
      - - - - - - - - - - diff --git a/plugins/normalize-whitespace/prism-normalize-whitespace.js b/plugins/normalize-whitespace/prism-normalize-whitespace.js deleted file mode 100644 index 4dc89bcf2d..0000000000 --- a/plugins/normalize-whitespace/prism-normalize-whitespace.js +++ /dev/null @@ -1,229 +0,0 @@ -(function () { - - if (typeof Prism === 'undefined') { - return; - } - - var assign = Object.assign || function (obj1, obj2) { - for (var name in obj2) { - if (obj2.hasOwnProperty(name)) { - obj1[name] = obj2[name]; - } - } - return obj1; - }; - - function NormalizeWhitespace(defaults) { - this.defaults = assign({}, defaults); - } - - function toCamelCase(value) { - return value.replace(/-(\w)/g, function (match, firstChar) { - return firstChar.toUpperCase(); - }); - } - - function tabLen(str) { - var res = 0; - for (var i = 0; i < str.length; ++i) { - if (str.charCodeAt(i) == '\t'.charCodeAt(0)) { - res += 3; - } - } - return str.length + res; - } - - var settingsConfig = { - 'remove-trailing': 'boolean', - 'remove-indent': 'boolean', - 'left-trim': 'boolean', - 'right-trim': 'boolean', - 'break-lines': 'number', - 'indent': 'number', - 'remove-initial-line-feed': 'boolean', - 'tabs-to-spaces': 'number', - 'spaces-to-tabs': 'number', - }; - - NormalizeWhitespace.prototype = { - setDefaults: function (defaults) { - this.defaults = assign(this.defaults, defaults); - }, - normalize: function (input, settings) { - settings = assign(this.defaults, settings); - - for (var name in settings) { - var methodName = toCamelCase(name); - if (name !== 'normalize' && methodName !== 'setDefaults' && - settings[name] && this[methodName]) { - input = this[methodName].call(this, input, settings[name]); - } - } - - return input; - }, - - /* - * Normalization methods - */ - leftTrim: function (input) { - return input.replace(/^\s+/, ''); - }, - rightTrim: function (input) { - return input.replace(/\s+$/, ''); - }, - tabsToSpaces: function (input, spaces) { - spaces = spaces|0 || 4; - return input.replace(/\t/g, new Array(++spaces).join(' ')); - }, - spacesToTabs: function (input, spaces) { - spaces = spaces|0 || 4; - return input.replace(RegExp(' {' + spaces + '}', 'g'), '\t'); - }, - removeTrailing: function (input) { - return input.replace(/\s*?$/gm, ''); - }, - // Support for deprecated plugin remove-initial-line-feed - removeInitialLineFeed: function (input) { - return input.replace(/^(?:\r?\n|\r)/, ''); - }, - removeIndent: function (input) { - var indents = input.match(/^[^\S\n\r]*(?=\S)/gm); - - if (!indents || !indents[0].length) { - return input; - } - - indents.sort(function (a, b) { return a.length - b.length; }); - - if (!indents[0].length) { - return input; - } - - return input.replace(RegExp('^' + indents[0], 'gm'), ''); - }, - indent: function (input, tabs) { - return input.replace(/^[^\S\n\r]*(?=\S)/gm, new Array(++tabs).join('\t') + '$&'); - }, - breakLines: function (input, characters) { - characters = (characters === true) ? 80 : characters|0 || 80; - - var lines = input.split('\n'); - for (var i = 0; i < lines.length; ++i) { - if (tabLen(lines[i]) <= characters) { - continue; - } - - var line = lines[i].split(/(\s+)/g); - var len = 0; - - for (var j = 0; j < line.length; ++j) { - var tl = tabLen(line[j]); - len += tl; - if (len > characters) { - line[j] = '\n' + line[j]; - len = tl; - } - } - lines[i] = line.join(''); - } - return lines.join('\n'); - } - }; - - // Support node modules - if (typeof module !== 'undefined' && module.exports) { - module.exports = NormalizeWhitespace; - } - - Prism.plugins.NormalizeWhitespace = new NormalizeWhitespace({ - 'remove-trailing': true, - 'remove-indent': true, - 'left-trim': true, - 'right-trim': true, - /*'break-lines': 80, - 'indent': 2, - 'remove-initial-line-feed': false, - 'tabs-to-spaces': 4, - 'spaces-to-tabs': 4*/ - }); - - Prism.hooks.add('before-sanity-check', function (env) { - var Normalizer = Prism.plugins.NormalizeWhitespace; - - // Check settings - if (env.settings && env.settings['whitespace-normalization'] === false) { - return; - } - - // Check classes - if (!Prism.util.isActive(env.element, 'whitespace-normalization', true)) { - return; - } - - // Simple mode if there is no env.element - if ((!env.element || !env.element.parentNode) && env.code) { - env.code = Normalizer.normalize(env.code, env.settings); - return; - } - - // Normal mode - var pre = env.element.parentNode; - if (!env.code || !pre || pre.nodeName.toLowerCase() !== 'pre') { - return; - } - - if (env.settings == null) { env.settings = {}; } - - // Read settings from 'data-' attributes - for (var key in settingsConfig) { - if (Object.hasOwnProperty.call(settingsConfig, key)) { - var settingType = settingsConfig[key]; - if (pre.hasAttribute('data-' + key)) { - try { - var value = JSON.parse(pre.getAttribute('data-' + key) || 'true'); - if (typeof value === settingType) { - env.settings[key] = value; - } - } catch (_error) { - // ignore error - } - } - } - } - - var children = pre.childNodes; - var before = ''; - var after = ''; - var codeFound = false; - - // Move surrounding whitespace from the
       tag into the  tag
      -		for (var i = 0; i < children.length; ++i) {
      -			var node = children[i];
      -
      -			if (node == env.element) {
      -				codeFound = true;
      -			} else if (node.nodeName === '#text') {
      -				if (codeFound) {
      -					after += node.nodeValue;
      -				} else {
      -					before += node.nodeValue;
      -				}
      -
      -				pre.removeChild(node);
      -				--i;
      -			}
      -		}
      -
      -		if (!env.element.children.length || !Prism.plugins.KeepMarkup) {
      -			env.code = before + env.code + after;
      -			env.code = Normalizer.normalize(env.code, env.settings);
      -		} else {
      -			// Preserve markup for keep-markup plugin
      -			var html = before + env.element.innerHTML + after;
      -			env.element.innerHTML = Normalizer.normalize(html, env.settings);
      -			env.code = env.element.textContent;
      -		}
      -	});
      -
      -}());
      diff --git a/plugins/normalize-whitespace/prism-normalize-whitespace.min.js b/plugins/normalize-whitespace/prism-normalize-whitespace.min.js
      deleted file mode 100644
      index 56918926b3..0000000000
      --- a/plugins/normalize-whitespace/prism-normalize-whitespace.min.js
      +++ /dev/null
      @@ -1 +0,0 @@
      -!function(){if("undefined"!=typeof Prism){var e=Object.assign||function(e,t){for(var n in t)t.hasOwnProperty(n)&&(e[n]=t[n]);return e},t={"remove-trailing":"boolean","remove-indent":"boolean","left-trim":"boolean","right-trim":"boolean","break-lines":"number",indent:"number","remove-initial-line-feed":"boolean","tabs-to-spaces":"number","spaces-to-tabs":"number"};n.prototype={setDefaults:function(t){this.defaults=e(this.defaults,t)},normalize:function(t,n){for(var r in n=e(this.defaults,n)){var i=r.replace(/-(\w)/g,(function(e,t){return t.toUpperCase()}));"normalize"!==r&&"setDefaults"!==i&&n[r]&&this[i]&&(t=this[i].call(this,t,n[r]))}return t},leftTrim:function(e){return e.replace(/^\s+/,"")},rightTrim:function(e){return e.replace(/\s+$/,"")},tabsToSpaces:function(e,t){return t=0|t||4,e.replace(/\t/g,new Array(++t).join(" "))},spacesToTabs:function(e,t){return t=0|t||4,e.replace(RegExp(" {"+t+"}","g"),"\t")},removeTrailing:function(e){return e.replace(/\s*?$/gm,"")},removeInitialLineFeed:function(e){return e.replace(/^(?:\r?\n|\r)/,"")},removeIndent:function(e){var t=e.match(/^[^\S\n\r]*(?=\S)/gm);return t&&t[0].length?(t.sort((function(e,t){return e.length-t.length})),t[0].length?e.replace(RegExp("^"+t[0],"gm"),""):e):e},indent:function(e,t){return e.replace(/^[^\S\n\r]*(?=\S)/gm,new Array(++t).join("\t")+"$&")},breakLines:function(e,t){t=!0===t?80:0|t||80;for(var n=e.split("\n"),i=0;it&&(o[l]="\n"+o[l],a=s)}n[i]=o.join("")}return n.join("\n")}},"undefined"!=typeof module&&module.exports&&(module.exports=n),Prism.plugins.NormalizeWhitespace=new n({"remove-trailing":!0,"remove-indent":!0,"left-trim":!0,"right-trim":!0}),Prism.hooks.add("before-sanity-check",(function(e){var n=Prism.plugins.NormalizeWhitespace;if((!e.settings||!1!==e.settings["whitespace-normalization"])&&Prism.util.isActive(e.element,"whitespace-normalization",!0))if(e.element&&e.element.parentNode||!e.code){var r=e.element.parentNode;if(e.code&&r&&"pre"===r.nodeName.toLowerCase()){for(var i in null==e.settings&&(e.settings={}),t)if(Object.hasOwnProperty.call(t,i)){var o=t[i];if(r.hasAttribute("data-"+i))try{var a=JSON.parse(r.getAttribute("data-"+i)||"true");typeof a===o&&(e.settings[i]=a)}catch(e){}}for(var l=r.childNodes,s="",c="",u=!1,m=0;m
      -
      -
      -
      -	
      -	
      -	Previewers ▲ Prism plugins
      -	
      -	
      -	
      -	
      -	
      -
      -	
      -	
      -
      -
      -
      -
      - -
      -

      How to use

      - -

      You don't need to do anything. With this plugin loaded, a previewer will appear on hovering some values in code blocks. - The following previewers are supported:

      -
        -
      • angle for angles
      • -
      • color for colors
      • -
      • gradient for gradients
      • -
      • easing for easing functions
      • -
      • time for durations
      • -
      -

      This plugin is compatible with CSS, Less, Markup attributes, Sass, Scss and Stylus.

      -
      - -
      -

      Examples

      - -

      CSS

      -
      .example-gradient {
      -	background: -webkit-linear-gradient(left,     #cb60b3 0%, #c146a1 50%, #a80077 51%, #db36a4 100%); /* Chrome10+, Safari5.1+ */
      -	background:    -moz-linear-gradient(left,     #cb60b3 0%, #c146a1 50%, #a80077 51%, #db36a4 100%); /* FF3.6+ */
      -	background:     -ms-linear-gradient(left,     #cb60b3 0%, #c146a1 50%, #a80077 51%, #db36a4 100%); /* IE10+ */
      -	background:      -o-linear-gradient(left,     #cb60b3 0%, #c146a1 50%, #a80077 51%, #db36a4 100%); /* Opera 11.10+ */
      -	background:         linear-gradient(to right, #cb60b3 0%, #c146a1 50%, #a80077 51%, #db36a4 100%); /* W3C */
      -}
      -.example-angle {
      -	transform: rotate(10deg);
      -}
      -.example-color {
      -	color: rgba(255, 0, 0, 0.2);
      -	background: purple;
      -	border: 1px solid hsl(100, 70%, 40%);
      -}
      -.example-easing {
      -	transition-timing-function: linear;
      -}
      -.example-time {
      -	transition-duration: 3s;
      -}
      - -

      Markup attributes

      -
      <table bgcolor="#6E5494">
      -<tr style="background: lightblue;">
      - -

      Less

      -
      @gradient: linear-gradient(135deg, #9dd53a 0%, #a1d54f 50%, #80c217 51%, #7cbc0a 100%);
      -.example-gradient {
      -	background: -webkit-linear-gradient(-45deg, #9dd53a 0%, #a1d54f 50%, #80c217 51%, #7cbc0a 100%); /* Chrome10+, Safari5.1+ */
      -	background:    -moz-linear-gradient(-45deg, #9dd53a 0%, #a1d54f 50%, #80c217 51%, #7cbc0a 100%); /* FF3.6+ */
      -	background:     -ms-linear-gradient(-45deg, #9dd53a 0%, #a1d54f 50%, #80c217 51%, #7cbc0a 100%); /* IE10+ */
      -	background:      -o-linear-gradient(-45deg, #9dd53a 0%, #a1d54f 50%, #80c217 51%, #7cbc0a 100%); /* Opera 11.10+ */
      -	background:         linear-gradient(135deg, #9dd53a 0%, #a1d54f 50%, #80c217 51%, #7cbc0a 100%); /* W3C */
      -}
      -@angle: 3rad;
      -.example-angle {
      -	transform: rotate(.4turn)
      -}
      -@nice-blue: #5B83AD;
      -.example-color {
      -	color: hsla(102, 53%, 42%, 0.4);
      -}
      -@easing: cubic-bezier(0.1, 0.3, 1, .4);
      -.example-easing {
      -	transition-timing-function: ease;
      -}
      -@time: 1s;
      -.example-time {
      -	transition-duration: 2s;
      -}
      - -

      Sass

      -
      $gradient: linear-gradient(135deg, #9dd53a 0%, #a1d54f 50%, #80c217 51%, #7cbc0a 100%)
      -@mixin example-gradient
      -	background: -moz-radial-gradient(center, ellipse cover, #f2f6f8 0%, #d8e1e7 50%, #b5c6d0 51%, #e0eff9 100%)
      -	background: radial-gradient(ellipse at center, #f2f6f8 0%, #d8e1e7 50%, #b5c6d0 51%, #e0eff9 100%)
      -$angle: 380grad
      -@mixin example-angle
      -	transform: rotate(-120deg)
      -.example-angle
      -	transform: rotate(18rad)
      -$color: blue
      -@mixin example-color
      -	color: rgba(147, 32, 34, 0.8)
      -.example-color
      -	color: pink
      -$easing: ease-out
      -.example-easing
      -	transition-timing-function: ease-in-out
      -$time: 3s
      -@mixin example-time
      -	transition-duration: 800ms
      -.example-time
      -	transition-duration: 0.8s
      -
      - -

      Scss

      -
      $gradient: linear-gradient(135deg, #9dd53a 0%, #a1d54f 50%, #80c217 51%, #7cbc0a 100%);
      -$attr: background;
      -.example-gradient {
      -	#{$attr}-image: repeating-linear-gradient(10deg, rgba(255, 0, 0, 0), rgba(255, 0, 0, 1) 10px, rgba(255, 0, 0, 0) 20px);
      -}
      -$angle: 1.8turn;
      -.example-angle {
      -	transform: rotate(-3rad)
      -}
      -$color: blue;
      -.example-color {
      -	#{$attr}-color: rgba(255, 255, 0, 0.75);
      -}
      -$easing: linear;
      -.example-easing {
      -	transition-timing-function: cubic-bezier(0.9, 0.1, .2, .4);
      -}
      -$time: 1s;
      -.example-time {
      -	transition-duration: 10s
      -}
      - -

      Stylus

      -
      gradient = linear-gradient(135deg, #9dd53a 0%, #a1d54f 50%, #80c217 51%, #7cbc0a 100%)
      -.example-gradient
      -	background-image: repeating-radial-gradient(circle, rgba(255, 0, 0, 0), rgba(255, 0, 0, 1) 10px, rgba(255, 0, 0, 0) 20px)
      -angle = 357deg
      -.example-angle
      -	transform: rotate(100grad)
      -color = olive
      -.example-color
      -	color: #000
      -easing = ease-in
      -.example-easing
      -	transition-timing-function: ease-out
      -time = 3s
      -.example-time
      -	transition-duration: 0.5s
      -
      - -
      -

      Disabling a previewer

      -

      All previewers are enabled by default. To enable only a subset of them, a data-previewers attribute - can be added on a code block or any ancestor. Its value should be a space-separated list of previewers - representing the subset.

      -

      For example:

      -
      <pre class="language-css" data-previewers="color time"><code>div {
      -	/* Only the previewer for color and time are enabled */
      -	color: red;
      -	transition-duration: 1s;
      -	/* The previewer for angles is not enabled. */
      -	transform: rotate(10deg);
      -}</code></pre>
      -

      will give the following result:

      -
      div {
      -	/* Only the previewers for color and time are enabled */
      -	color: red;
      -	transition-duration: 1s;
      -	/* The previewer for angles is not enabled. */
      -	transform: rotate(10deg);
      -}
      -
      - -
      -

      API

      -

      This plugins provides a constructor that can be accessed through Prism.plugins.Previewer.

      -

      Once a previewer has been instantiated, an HTML element is appended to the document body. - This element will appear when specific tokens are hovered.

      - -

      new Prism.plugins.Previewer(type, updater, supportedLanguages)

      - -
        -
      • -

        type: the token type this previewer is associated to. - The previewer will be shown when hovering tokens of this type.

        -
      • -
      • -

        updater: the function that will be called each time an associated token is hovered. - This function takes the text content of the token as its only parameter. - The previewer HTML element can be accessed through the keyword this. - This function must return true for the previewer to be shown.

        -
      • -
      • -

        supportedLanguages: an optional array of supported languages. - The previewer will be available only for those. - Defaults to '*', which means every languages.

        -
      • -
      • -

        initializer: an optional function. - This function will be called when the previewer is initialized, - right after the HTML element has been appended to the document body.

        -
      • -
      - -
      - -
      - - - - - - - - - - - - - - - diff --git a/plugins/previewers/prism-previewers.css b/plugins/previewers/prism-previewers.css deleted file mode 100644 index 2d5e9570c0..0000000000 --- a/plugins/previewers/prism-previewers.css +++ /dev/null @@ -1,243 +0,0 @@ -.prism-previewer, -.prism-previewer:before, -.prism-previewer:after { - position: absolute; - pointer-events: none; -} -.prism-previewer, -.prism-previewer:after { - left: 50%; -} -.prism-previewer { - margin-top: -48px; - width: 32px; - height: 32px; - margin-left: -16px; - z-index: 10; - - opacity: 0; - -webkit-transition: opacity .25s; - -o-transition: opacity .25s; - transition: opacity .25s; -} -.prism-previewer.flipped { - margin-top: 0; - margin-bottom: -48px; -} -.prism-previewer:before, -.prism-previewer:after { - content: ''; - position: absolute; - pointer-events: none; -} -.prism-previewer:before { - top: -5px; - right: -5px; - left: -5px; - bottom: -5px; - border-radius: 10px; - border: 5px solid #fff; - box-shadow: 0 0 3px rgba(0, 0, 0, 0.5) inset, 0 0 10px rgba(0, 0, 0, 0.75); -} -.prism-previewer:after { - top: 100%; - width: 0; - height: 0; - margin: 5px 0 0 -7px; - border: 7px solid transparent; - border-color: rgba(255, 0, 0, 0); - border-top-color: #fff; -} -.prism-previewer.flipped:after { - top: auto; - bottom: 100%; - margin-top: 0; - margin-bottom: 5px; - border-top-color: rgba(255, 0, 0, 0); - border-bottom-color: #fff; -} -.prism-previewer.active { - opacity: 1; -} - -.prism-previewer-angle:before { - border-radius: 50%; - background: #fff; -} -.prism-previewer-angle:after { - margin-top: 4px; -} -.prism-previewer-angle svg { - width: 32px; - height: 32px; - -webkit-transform: rotate(-90deg); - -moz-transform: rotate(-90deg); - -ms-transform: rotate(-90deg); - -o-transform: rotate(-90deg); - transform: rotate(-90deg); -} -.prism-previewer-angle[data-negative] svg { - -webkit-transform: scaleX(-1) rotate(-90deg); - -moz-transform: scaleX(-1) rotate(-90deg); - -ms-transform: scaleX(-1) rotate(-90deg); - -o-transform: scaleX(-1) rotate(-90deg); - transform: scaleX(-1) rotate(-90deg); -} -.prism-previewer-angle circle { - fill: transparent; - stroke: hsl(200, 10%, 20%); - stroke-opacity: 0.9; - stroke-width: 32; - stroke-dasharray: 0, 500; -} - -.prism-previewer-gradient { - background-image: linear-gradient(45deg, #bbb 25%, transparent 25%, transparent 75%, #bbb 75%, #bbb), linear-gradient(45deg, #bbb 25%, #eee 25%, #eee 75%, #bbb 75%, #bbb); - background-size: 10px 10px; - background-position: 0 0, 5px 5px; - - width: 64px; - margin-left: -32px; -} -.prism-previewer-gradient:before { - content: none; -} -.prism-previewer-gradient div { - position: absolute; - top: -5px; - left: -5px; - right: -5px; - bottom: -5px; - border-radius: 10px; - border: 5px solid #fff; - box-shadow: 0 0 3px rgba(0, 0, 0, 0.5) inset, 0 0 10px rgba(0, 0, 0, 0.75); -} - -.prism-previewer-color { - background-image: linear-gradient(45deg, #bbb 25%, transparent 25%, transparent 75%, #bbb 75%, #bbb), linear-gradient(45deg, #bbb 25%, #eee 25%, #eee 75%, #bbb 75%, #bbb); - background-size: 10px 10px; - background-position: 0 0, 5px 5px; -} -.prism-previewer-color:before { - background-color: inherit; - background-clip: padding-box; -} - -.prism-previewer-easing { - margin-top: -76px; - margin-left: -30px; - width: 60px; - height: 60px; - background: #333; -} -.prism-previewer-easing.flipped { - margin-bottom: -116px; -} -.prism-previewer-easing svg { - width: 60px; - height: 60px; -} -.prism-previewer-easing circle { - fill: hsl(200, 10%, 20%); - stroke: white; -} -.prism-previewer-easing path { - fill: none; - stroke: white; - stroke-linecap: round; - stroke-width: 4; -} -.prism-previewer-easing line { - stroke: white; - stroke-opacity: 0.5; - stroke-width: 2; -} - -@-webkit-keyframes prism-previewer-time { - 0% { - stroke-dasharray: 0, 500; - stroke-dashoffset: 0; - } - 50% { - stroke-dasharray: 100, 500; - stroke-dashoffset: 0; - } - 100% { - stroke-dasharray: 0, 500; - stroke-dashoffset: -100; - } -} - -@-o-keyframes prism-previewer-time { - 0% { - stroke-dasharray: 0, 500; - stroke-dashoffset: 0; - } - 50% { - stroke-dasharray: 100, 500; - stroke-dashoffset: 0; - } - 100% { - stroke-dasharray: 0, 500; - stroke-dashoffset: -100; - } -} - -@-moz-keyframes prism-previewer-time { - 0% { - stroke-dasharray: 0, 500; - stroke-dashoffset: 0; - } - 50% { - stroke-dasharray: 100, 500; - stroke-dashoffset: 0; - } - 100% { - stroke-dasharray: 0, 500; - stroke-dashoffset: -100; - } -} - -@keyframes prism-previewer-time { - 0% { - stroke-dasharray: 0, 500; - stroke-dashoffset: 0; - } - 50% { - stroke-dasharray: 100, 500; - stroke-dashoffset: 0; - } - 100% { - stroke-dasharray: 0, 500; - stroke-dashoffset: -100; - } -} - -.prism-previewer-time:before { - border-radius: 50%; - background: #fff; -} -.prism-previewer-time:after { - margin-top: 4px; -} -.prism-previewer-time svg { - width: 32px; - height: 32px; - -webkit-transform: rotate(-90deg); - -moz-transform: rotate(-90deg); - -ms-transform: rotate(-90deg); - -o-transform: rotate(-90deg); - transform: rotate(-90deg); -} -.prism-previewer-time circle { - fill: transparent; - stroke: hsl(200, 10%, 20%); - stroke-opacity: 0.9; - stroke-width: 32; - stroke-dasharray: 0, 500; - stroke-dashoffset: 0; - -webkit-animation: prism-previewer-time linear infinite 3s; - -moz-animation: prism-previewer-time linear infinite 3s; - -o-animation: prism-previewer-time linear infinite 3s; - animation: prism-previewer-time linear infinite 3s; -} \ No newline at end of file diff --git a/plugins/previewers/prism-previewers.js b/plugins/previewers/prism-previewers.js deleted file mode 100644 index 89ac73f029..0000000000 --- a/plugins/previewers/prism-previewers.js +++ /dev/null @@ -1,712 +0,0 @@ -(function () { - - if (typeof Prism === 'undefined' || typeof document === 'undefined' || !Function.prototype.bind) { - return; - } - - var previewers = { - // gradient must be defined before color and angle - 'gradient': { - create: (function () { - - // Stores already processed gradients so that we don't - // make the conversion every time the previewer is shown - var cache = {}; - - /** - * Returns a W3C-valid linear gradient - * - * @param {string} prefix Vendor prefix if any ("-moz-", "-webkit-", etc.) - * @param {string} func Gradient function name ("linear-gradient") - * @param {string[]} values Array of the gradient function parameters (["0deg", "red 0%", "blue 100%"]) - */ - var convertToW3CLinearGradient = function (prefix, func, values) { - // Default value for angle - var angle = '180deg'; - - if (/^(?:-?(?:\d+(?:\.\d+)?|\.\d+)(?:deg|rad)|to\b|top|right|bottom|left)/.test(values[0])) { - angle = values.shift(); - if (angle.indexOf('to ') < 0) { - // Angle uses old keywords - // W3C syntax uses "to" + opposite keywords - if (angle.indexOf('top') >= 0) { - if (angle.indexOf('left') >= 0) { - angle = 'to bottom right'; - } else if (angle.indexOf('right') >= 0) { - angle = 'to bottom left'; - } else { - angle = 'to bottom'; - } - } else if (angle.indexOf('bottom') >= 0) { - if (angle.indexOf('left') >= 0) { - angle = 'to top right'; - } else if (angle.indexOf('right') >= 0) { - angle = 'to top left'; - } else { - angle = 'to top'; - } - } else if (angle.indexOf('left') >= 0) { - angle = 'to right'; - } else if (angle.indexOf('right') >= 0) { - angle = 'to left'; - } else if (prefix) { - // Angle is shifted by 90deg in prefixed gradients - if (angle.indexOf('deg') >= 0) { - angle = (90 - parseFloat(angle)) + 'deg'; - } else if (angle.indexOf('rad') >= 0) { - angle = (Math.PI / 2 - parseFloat(angle)) + 'rad'; - } - } - } - } - - return func + '(' + angle + ',' + values.join(',') + ')'; - }; - - /** - * Returns a W3C-valid radial gradient - * - * @param {string} prefix Vendor prefix if any ("-moz-", "-webkit-", etc.) - * @param {string} func Gradient function name ("linear-gradient") - * @param {string[]} values Array of the gradient function parameters (["0deg", "red 0%", "blue 100%"]) - */ - var convertToW3CRadialGradient = function (prefix, func, values) { - if (values[0].indexOf('at') < 0) { - // Looks like old syntax - - // Default values - var position = 'center'; - var shape = 'ellipse'; - var size = 'farthest-corner'; - - if (/\b(?:bottom|center|left|right|top)\b|^\d+/.test(values[0])) { - // Found a position - // Remove angle value, if any - position = values.shift().replace(/\s*-?\d+(?:deg|rad)\s*/, ''); - } - if (/\b(?:circle|closest|contain|cover|ellipse|farthest)\b/.test(values[0])) { - // Found a shape and/or size - var shapeSizeParts = values.shift().split(/\s+/); - if (shapeSizeParts[0] && (shapeSizeParts[0] === 'circle' || shapeSizeParts[0] === 'ellipse')) { - shape = shapeSizeParts.shift(); - } - if (shapeSizeParts[0]) { - size = shapeSizeParts.shift(); - } - - // Old keywords are converted to their synonyms - if (size === 'cover') { - size = 'farthest-corner'; - } else if (size === 'contain') { - size = 'clothest-side'; - } - } - - return func + '(' + shape + ' ' + size + ' at ' + position + ',' + values.join(',') + ')'; - } - return func + '(' + values.join(',') + ')'; - }; - - /** - * Converts a gradient to a W3C-valid one - * Does not support old webkit syntax (-webkit-gradient(linear...) and -webkit-gradient(radial...)) - * - * @param {string} gradient The CSS gradient - */ - var convertToW3CGradient = function (gradient) { - if (cache[gradient]) { - return cache[gradient]; - } - var parts = gradient.match(/^(\b|\B-[a-z]{1,10}-)((?:repeating-)?(?:linear|radial)-gradient)/); - // "", "-moz-", etc. - var prefix = parts && parts[1]; - // "linear-gradient", "radial-gradient", etc. - var func = parts && parts[2]; - - var values = gradient.replace(/^(?:\b|\B-[a-z]{1,10}-)(?:repeating-)?(?:linear|radial)-gradient\(|\)$/g, '').split(/\s*,\s*/); - - if (func.indexOf('linear') >= 0) { - return cache[gradient] = convertToW3CLinearGradient(prefix, func, values); - } else if (func.indexOf('radial') >= 0) { - return cache[gradient] = convertToW3CRadialGradient(prefix, func, values); - } - return cache[gradient] = func + '(' + values.join(',') + ')'; - }; - - return function () { - new Prism.plugins.Previewer('gradient', function (value) { - this.firstChild.style.backgroundImage = ''; - this.firstChild.style.backgroundImage = convertToW3CGradient(value); - return !!this.firstChild.style.backgroundImage; - }, '*', function () { - this._elt.innerHTML = '
      '; - }); - }; - }()), - tokens: { - 'gradient': { - pattern: /(?:\b|\B-[a-z]{1,10}-)(?:repeating-)?(?:linear|radial)-gradient\((?:(?:hsl|rgb)a?\(.+?\)|[^\)])+\)/gi, - inside: { - 'function': /[\w-]+(?=\()/, - 'punctuation': /[(),]/ - } - } - }, - languages: { - 'css': true, - 'less': true, - 'sass': [ - { - lang: 'sass', - before: 'punctuation', - inside: 'inside', - root: Prism.languages.sass && Prism.languages.sass['variable-line'] - }, - { - lang: 'sass', - before: 'punctuation', - inside: 'inside', - root: Prism.languages.sass && Prism.languages.sass['property-line'] - } - ], - 'scss': true, - 'stylus': [ - { - lang: 'stylus', - before: 'func', - inside: 'rest', - root: Prism.languages.stylus && Prism.languages.stylus['property-declaration'].inside - }, - { - lang: 'stylus', - before: 'func', - inside: 'rest', - root: Prism.languages.stylus && Prism.languages.stylus['variable-declaration'].inside - } - ] - } - }, - 'angle': { - create: function () { - new Prism.plugins.Previewer('angle', function (value) { - var num = parseFloat(value); - var unit = value.match(/[a-z]+$/i); - var max; var percentage; - if (!num || !unit) { - return false; - } - unit = unit[0]; - - switch (unit) { - case 'deg': - max = 360; - break; - case 'grad': - max = 400; - break; - case 'rad': - max = 2 * Math.PI; - break; - case 'turn': - max = 1; - } - - percentage = 100 * num / max; - percentage %= 100; - - this[(num < 0 ? 'set' : 'remove') + 'Attribute']('data-negative', ''); - this.querySelector('circle').style.strokeDasharray = Math.abs(percentage) + ',500'; - return true; - }, '*', function () { - this._elt.innerHTML = '' + - '' + - ''; - }); - }, - tokens: { - 'angle': /(?:\b|\B-|(?=\B\.))(?:\d+(?:\.\d+)?|\.\d+)(?:deg|g?rad|turn)\b/i - }, - languages: { - 'css': true, - 'less': true, - 'markup': { - lang: 'markup', - before: 'punctuation', - inside: 'inside', - root: Prism.languages.markup && Prism.languages.markup['tag'].inside['attr-value'] - }, - 'sass': [ - { - lang: 'sass', - inside: 'inside', - root: Prism.languages.sass && Prism.languages.sass['property-line'] - }, - { - lang: 'sass', - before: 'operator', - inside: 'inside', - root: Prism.languages.sass && Prism.languages.sass['variable-line'] - } - ], - 'scss': true, - 'stylus': [ - { - lang: 'stylus', - before: 'func', - inside: 'rest', - root: Prism.languages.stylus && Prism.languages.stylus['property-declaration'].inside - }, - { - lang: 'stylus', - before: 'func', - inside: 'rest', - root: Prism.languages.stylus && Prism.languages.stylus['variable-declaration'].inside - } - ] - } - }, - 'color': { - create: function () { - new Prism.plugins.Previewer('color', function (value) { - this.style.backgroundColor = ''; - this.style.backgroundColor = value; - return !!this.style.backgroundColor; - }); - }, - tokens: { - 'color': [Prism.languages.css['hexcode']].concat(Prism.languages.css['color']) - }, - languages: { - // CSS extras is required, so css and scss are not necessary - 'css': false, - 'less': true, - 'markup': { - lang: 'markup', - before: 'punctuation', - inside: 'inside', - root: Prism.languages.markup && Prism.languages.markup['tag'].inside['attr-value'] - }, - 'sass': [ - { - lang: 'sass', - before: 'punctuation', - inside: 'inside', - root: Prism.languages.sass && Prism.languages.sass['variable-line'] - }, - { - lang: 'sass', - inside: 'inside', - root: Prism.languages.sass && Prism.languages.sass['property-line'] - } - ], - 'scss': false, - 'stylus': [ - { - lang: 'stylus', - before: 'hexcode', - inside: 'rest', - root: Prism.languages.stylus && Prism.languages.stylus['property-declaration'].inside - }, - { - lang: 'stylus', - before: 'hexcode', - inside: 'rest', - root: Prism.languages.stylus && Prism.languages.stylus['variable-declaration'].inside - } - ] - } - }, - 'easing': { - create: function () { - new Prism.plugins.Previewer('easing', function (value) { - - value = { - 'linear': '0,0,1,1', - 'ease': '.25,.1,.25,1', - 'ease-in': '.42,0,1,1', - 'ease-out': '0,0,.58,1', - 'ease-in-out': '.42,0,.58,1' - }[value] || value; - - var p = value.match(/-?(?:\d+(?:\.\d+)?|\.\d+)/g); - - if (p.length === 4) { - p = p.map(function (p, i) { return (i % 2 ? 1 - p : p) * 100; }); - - this.querySelector('path').setAttribute('d', 'M0,100 C' + p[0] + ',' + p[1] + ', ' + p[2] + ',' + p[3] + ', 100,0'); - - var lines = this.querySelectorAll('line'); - lines[0].setAttribute('x2', p[0]); - lines[0].setAttribute('y2', p[1]); - lines[1].setAttribute('x2', p[2]); - lines[1].setAttribute('y2', p[3]); - - return true; - } - - return false; - }, '*', function () { - this._elt.innerHTML = '' + - '' + - '' + - '' + - '' + - '' + - '' + - '' + - '' + - ''; - }); - }, - tokens: { - 'easing': { - pattern: /\bcubic-bezier\((?:-?(?:\d+(?:\.\d+)?|\.\d+),\s*){3}-?(?:\d+(?:\.\d+)?|\.\d+)\)\B|\b(?:ease(?:-in)?(?:-out)?|linear)(?=\s|[;}]|$)/i, - inside: { - 'function': /[\w-]+(?=\()/, - 'punctuation': /[(),]/ - } - } - }, - languages: { - 'css': true, - 'less': true, - 'sass': [ - { - lang: 'sass', - inside: 'inside', - before: 'punctuation', - root: Prism.languages.sass && Prism.languages.sass['variable-line'] - }, - { - lang: 'sass', - inside: 'inside', - root: Prism.languages.sass && Prism.languages.sass['property-line'] - } - ], - 'scss': true, - 'stylus': [ - { - lang: 'stylus', - before: 'hexcode', - inside: 'rest', - root: Prism.languages.stylus && Prism.languages.stylus['property-declaration'].inside - }, - { - lang: 'stylus', - before: 'hexcode', - inside: 'rest', - root: Prism.languages.stylus && Prism.languages.stylus['variable-declaration'].inside - } - ] - } - }, - - 'time': { - create: function () { - new Prism.plugins.Previewer('time', function (value) { - var num = parseFloat(value); - var unit = value.match(/[a-z]+$/i); - if (!num || !unit) { - return false; - } - unit = unit[0]; - this.querySelector('circle').style.animationDuration = 2 * num + unit; - return true; - }, '*', function () { - this._elt.innerHTML = '' + - '' + - ''; - }); - }, - tokens: { - 'time': /(?:\b|\B-|(?=\B\.))(?:\d+(?:\.\d+)?|\.\d+)m?s\b/i - }, - languages: { - 'css': true, - 'less': true, - 'markup': { - lang: 'markup', - before: 'punctuation', - inside: 'inside', - root: Prism.languages.markup && Prism.languages.markup['tag'].inside['attr-value'] - }, - 'sass': [ - { - lang: 'sass', - inside: 'inside', - root: Prism.languages.sass && Prism.languages.sass['property-line'] - }, - { - lang: 'sass', - before: 'operator', - inside: 'inside', - root: Prism.languages.sass && Prism.languages.sass['variable-line'] - } - ], - 'scss': true, - 'stylus': [ - { - lang: 'stylus', - before: 'hexcode', - inside: 'rest', - root: Prism.languages.stylus && Prism.languages.stylus['property-declaration'].inside - }, - { - lang: 'stylus', - before: 'hexcode', - inside: 'rest', - root: Prism.languages.stylus && Prism.languages.stylus['variable-declaration'].inside - } - ] - } - } - }; - - /** - * Returns the absolute X, Y offsets for an element - * - * @param {HTMLElement} element - * @returns {{top: number, right: number, bottom: number, left: number, width: number, height: number}} - */ - var getOffset = function (element) { - var elementBounds = element.getBoundingClientRect(); - var left = elementBounds.left; - var top = elementBounds.top; - var documentBounds = document.documentElement.getBoundingClientRect(); - left -= documentBounds.left; - top -= documentBounds.top; - - return { - top: top, - right: innerWidth - left - elementBounds.width, - bottom: innerHeight - top - elementBounds.height, - left: left, - width: elementBounds.width, - height: elementBounds.height - }; - }; - - var TOKEN_CLASS = 'token'; - var ACTIVE_CLASS = 'active'; - var FLIPPED_CLASS = 'flipped'; - - /** - * Previewer constructor - * - * @param {string} type Unique previewer type - * @param {Function} updater Function that will be called on mouseover. - * @param {string[]|string} [supportedLanguages] Aliases of the languages this previewer must be enabled for. Defaults to "*", all languages. - * @param {Function} [initializer] Function that will be called on initialization. - * @class - */ - var Previewer = function (type, updater, supportedLanguages, initializer) { - this._elt = null; - this._type = type; - this._token = null; - this.updater = updater; - this._mouseout = this.mouseout.bind(this); - this.initializer = initializer; - - var self = this; - - if (!supportedLanguages) { - supportedLanguages = ['*']; - } - if (!Array.isArray(supportedLanguages)) { - supportedLanguages = [supportedLanguages]; - } - supportedLanguages.forEach(function (lang) { - if (typeof lang !== 'string') { - lang = lang.lang; - } - if (!Previewer.byLanguages[lang]) { - Previewer.byLanguages[lang] = []; - } - if (Previewer.byLanguages[lang].indexOf(self) < 0) { - Previewer.byLanguages[lang].push(self); - } - }); - Previewer.byType[type] = this; - }; - - /** - * Creates the HTML element for the previewer. - */ - Previewer.prototype.init = function () { - if (this._elt) { - return; - } - this._elt = document.createElement('div'); - this._elt.className = 'prism-previewer prism-previewer-' + this._type; - document.body.appendChild(this._elt); - if (this.initializer) { - this.initializer(); - } - }; - - /** - * @param {Element} token - * @returns {boolean} - */ - Previewer.prototype.isDisabled = function (token) { - do { - if (token.hasAttribute && token.hasAttribute('data-previewers')) { - var previewers = token.getAttribute('data-previewers'); - return (previewers || '').split(/\s+/).indexOf(this._type) === -1; - } - } while ((token = token.parentNode)); - return false; - }; - - /** - * Checks the class name of each hovered element - * - * @param {Element} token - */ - Previewer.prototype.check = function (token) { - if (token.classList.contains(TOKEN_CLASS) && this.isDisabled(token)) { - return; - } - do { - if (token.classList && token.classList.contains(TOKEN_CLASS) && token.classList.contains(this._type)) { - break; - } - } while ((token = token.parentNode)); - - if (token && token !== this._token) { - this._token = token; - this.show(); - } - }; - - /** - * Called on mouseout - */ - Previewer.prototype.mouseout = function () { - this._token.removeEventListener('mouseout', this._mouseout, false); - this._token = null; - this.hide(); - }; - - /** - * Shows the previewer positioned properly for the current token. - */ - Previewer.prototype.show = function () { - if (!this._elt) { - this.init(); - } - if (!this._token) { - return; - } - - if (this.updater.call(this._elt, this._token.textContent)) { - this._token.addEventListener('mouseout', this._mouseout, false); - - var offset = getOffset(this._token); - this._elt.classList.add(ACTIVE_CLASS); - - if (offset.top - this._elt.offsetHeight > 0) { - this._elt.classList.remove(FLIPPED_CLASS); - this._elt.style.top = offset.top + 'px'; - this._elt.style.bottom = ''; - } else { - this._elt.classList.add(FLIPPED_CLASS); - this._elt.style.bottom = offset.bottom + 'px'; - this._elt.style.top = ''; - } - - this._elt.style.left = offset.left + Math.min(200, offset.width / 2) + 'px'; - } else { - this.hide(); - } - }; - - /** - * Hides the previewer. - */ - Previewer.prototype.hide = function () { - this._elt.classList.remove(ACTIVE_CLASS); - }; - - /** - * Map of all registered previewers by language - * - * @type {{}} - */ - Previewer.byLanguages = {}; - - /** - * Map of all registered previewers by type - * - * @type {{}} - */ - Previewer.byType = {}; - - /** - * Initializes the mouseover event on the code block. - * - * @param {HTMLElement} elt The code block (env.element) - * @param {string} lang The language (env.language) - */ - Previewer.initEvents = function (elt, lang) { - var previewers = []; - if (Previewer.byLanguages[lang]) { - previewers = previewers.concat(Previewer.byLanguages[lang]); - } - if (Previewer.byLanguages['*']) { - previewers = previewers.concat(Previewer.byLanguages['*']); - } - elt.addEventListener('mouseover', function (e) { - var target = e.target; - previewers.forEach(function (previewer) { - previewer.check(target); - }); - }, false); - }; - Prism.plugins.Previewer = Previewer; - - Prism.hooks.add('before-highlight', function (env) { - for (var previewer in previewers) { - var languages = previewers[previewer].languages; - if (env.language && languages[env.language] && !languages[env.language].initialized) { - var lang = languages[env.language]; - if (!Array.isArray(lang)) { - lang = [lang]; - } - lang.forEach(function (lang) { - var before; var inside; var root; var skip; - if (lang === true) { - before = 'important'; - inside = env.language; - lang = env.language; - } else { - before = lang.before || 'important'; - inside = lang.inside || lang.lang; - root = lang.root || Prism.languages; - skip = lang.skip; - lang = env.language; - } - - if (!skip && Prism.languages[lang]) { - Prism.languages.insertBefore(inside, before, previewers[previewer].tokens, root); - env.grammar = Prism.languages[lang]; - - languages[env.language] = { initialized: true }; - } - }); - } - } - }); - - // Initialize the previewers only when needed - Prism.hooks.add('after-highlight', function (env) { - if (Previewer.byLanguages['*'] || Previewer.byLanguages[env.language]) { - Previewer.initEvents(env.element, env.language); - } - }); - - for (var previewer in previewers) { - previewers[previewer].create(); - } - -}()); diff --git a/plugins/previewers/prism-previewers.min.css b/plugins/previewers/prism-previewers.min.css deleted file mode 100644 index 8ba1b5b301..0000000000 --- a/plugins/previewers/prism-previewers.min.css +++ /dev/null @@ -1 +0,0 @@ -.prism-previewer,.prism-previewer:after,.prism-previewer:before{position:absolute;pointer-events:none}.prism-previewer,.prism-previewer:after{left:50%}.prism-previewer{margin-top:-48px;width:32px;height:32px;margin-left:-16px;z-index:10;opacity:0;-webkit-transition:opacity .25s;-o-transition:opacity .25s;transition:opacity .25s}.prism-previewer.flipped{margin-top:0;margin-bottom:-48px}.prism-previewer:after,.prism-previewer:before{content:'';position:absolute;pointer-events:none}.prism-previewer:before{top:-5px;right:-5px;left:-5px;bottom:-5px;border-radius:10px;border:5px solid #fff;box-shadow:0 0 3px rgba(0,0,0,.5) inset,0 0 10px rgba(0,0,0,.75)}.prism-previewer:after{top:100%;width:0;height:0;margin:5px 0 0 -7px;border:7px solid transparent;border-color:rgba(255,0,0,0);border-top-color:#fff}.prism-previewer.flipped:after{top:auto;bottom:100%;margin-top:0;margin-bottom:5px;border-top-color:rgba(255,0,0,0);border-bottom-color:#fff}.prism-previewer.active{opacity:1}.prism-previewer-angle:before{border-radius:50%;background:#fff}.prism-previewer-angle:after{margin-top:4px}.prism-previewer-angle svg{width:32px;height:32px;-webkit-transform:rotate(-90deg);-moz-transform:rotate(-90deg);-ms-transform:rotate(-90deg);-o-transform:rotate(-90deg);transform:rotate(-90deg)}.prism-previewer-angle[data-negative] svg{-webkit-transform:scaleX(-1) rotate(-90deg);-moz-transform:scaleX(-1) rotate(-90deg);-ms-transform:scaleX(-1) rotate(-90deg);-o-transform:scaleX(-1) rotate(-90deg);transform:scaleX(-1) rotate(-90deg)}.prism-previewer-angle circle{fill:transparent;stroke:#2d3438;stroke-opacity:.9;stroke-width:32;stroke-dasharray:0,500}.prism-previewer-gradient{background-image:linear-gradient(45deg,#bbb 25%,transparent 25%,transparent 75%,#bbb 75%,#bbb),linear-gradient(45deg,#bbb 25%,#eee 25%,#eee 75%,#bbb 75%,#bbb);background-size:10px 10px;background-position:0 0,5px 5px;width:64px;margin-left:-32px}.prism-previewer-gradient:before{content:none}.prism-previewer-gradient div{position:absolute;top:-5px;left:-5px;right:-5px;bottom:-5px;border-radius:10px;border:5px solid #fff;box-shadow:0 0 3px rgba(0,0,0,.5) inset,0 0 10px rgba(0,0,0,.75)}.prism-previewer-color{background-image:linear-gradient(45deg,#bbb 25%,transparent 25%,transparent 75%,#bbb 75%,#bbb),linear-gradient(45deg,#bbb 25%,#eee 25%,#eee 75%,#bbb 75%,#bbb);background-size:10px 10px;background-position:0 0,5px 5px}.prism-previewer-color:before{background-color:inherit;background-clip:padding-box}.prism-previewer-easing{margin-top:-76px;margin-left:-30px;width:60px;height:60px;background:#333}.prism-previewer-easing.flipped{margin-bottom:-116px}.prism-previewer-easing svg{width:60px;height:60px}.prism-previewer-easing circle{fill:#2d3438;stroke:#fff}.prism-previewer-easing path{fill:none;stroke:#fff;stroke-linecap:round;stroke-width:4}.prism-previewer-easing line{stroke:#fff;stroke-opacity:.5;stroke-width:2}@-webkit-keyframes prism-previewer-time{0%{stroke-dasharray:0,500;stroke-dashoffset:0}50%{stroke-dasharray:100,500;stroke-dashoffset:0}100%{stroke-dasharray:0,500;stroke-dashoffset:-100}}@-o-keyframes prism-previewer-time{0%{stroke-dasharray:0,500;stroke-dashoffset:0}50%{stroke-dasharray:100,500;stroke-dashoffset:0}100%{stroke-dasharray:0,500;stroke-dashoffset:-100}}@-moz-keyframes prism-previewer-time{0%{stroke-dasharray:0,500;stroke-dashoffset:0}50%{stroke-dasharray:100,500;stroke-dashoffset:0}100%{stroke-dasharray:0,500;stroke-dashoffset:-100}}@keyframes prism-previewer-time{0%{stroke-dasharray:0,500;stroke-dashoffset:0}50%{stroke-dasharray:100,500;stroke-dashoffset:0}100%{stroke-dasharray:0,500;stroke-dashoffset:-100}}.prism-previewer-time:before{border-radius:50%;background:#fff}.prism-previewer-time:after{margin-top:4px}.prism-previewer-time svg{width:32px;height:32px;-webkit-transform:rotate(-90deg);-moz-transform:rotate(-90deg);-ms-transform:rotate(-90deg);-o-transform:rotate(-90deg);transform:rotate(-90deg)}.prism-previewer-time circle{fill:transparent;stroke:#2d3438;stroke-opacity:.9;stroke-width:32;stroke-dasharray:0,500;stroke-dashoffset:0;-webkit-animation:prism-previewer-time linear infinite 3s;-moz-animation:prism-previewer-time linear infinite 3s;-o-animation:prism-previewer-time linear infinite 3s;animation:prism-previewer-time linear infinite 3s} \ No newline at end of file diff --git a/plugins/previewers/prism-previewers.min.js b/plugins/previewers/prism-previewers.min.js deleted file mode 100644 index 5bead1c761..0000000000 --- a/plugins/previewers/prism-previewers.min.js +++ /dev/null @@ -1 +0,0 @@ -!function(){if("undefined"!=typeof Prism&&"undefined"!=typeof document&&Function.prototype.bind){var e,s,t={gradient:{create:(e={},s=function(s){if(e[s])return e[s];var t=s.match(/^(\b|\B-[a-z]{1,10}-)((?:repeating-)?(?:linear|radial)-gradient)/),i=t&&t[1],a=t&&t[2],n=s.replace(/^(?:\b|\B-[a-z]{1,10}-)(?:repeating-)?(?:linear|radial)-gradient\(|\)$/g,"").split(/\s*,\s*/);return a.indexOf("linear")>=0?e[s]=function(e,s,t){var i="180deg";return/^(?:-?(?:\d+(?:\.\d+)?|\.\d+)(?:deg|rad)|to\b|top|right|bottom|left)/.test(t[0])&&(i=t.shift()).indexOf("to ")<0&&(i.indexOf("top")>=0?i=i.indexOf("left")>=0?"to bottom right":i.indexOf("right")>=0?"to bottom left":"to bottom":i.indexOf("bottom")>=0?i=i.indexOf("left")>=0?"to top right":i.indexOf("right")>=0?"to top left":"to top":i.indexOf("left")>=0?i="to right":i.indexOf("right")>=0?i="to left":e&&(i.indexOf("deg")>=0?i=90-parseFloat(i)+"deg":i.indexOf("rad")>=0&&(i=Math.PI/2-parseFloat(i)+"rad"))),s+"("+i+","+t.join(",")+")"}(i,a,n):a.indexOf("radial")>=0?e[s]=function(e,s,t){if(t[0].indexOf("at")<0){var i="center",a="ellipse",n="farthest-corner";if(/\b(?:bottom|center|left|right|top)\b|^\d+/.test(t[0])&&(i=t.shift().replace(/\s*-?\d+(?:deg|rad)\s*/,"")),/\b(?:circle|closest|contain|cover|ellipse|farthest)\b/.test(t[0])){var r=t.shift().split(/\s+/);!r[0]||"circle"!==r[0]&&"ellipse"!==r[0]||(a=r.shift()),r[0]&&(n=r.shift()),"cover"===n?n="farthest-corner":"contain"===n&&(n="clothest-side")}return s+"("+a+" "+n+" at "+i+","+t.join(",")+")"}return s+"("+t.join(",")+")"}(0,a,n):e[s]=a+"("+n.join(",")+")"},function(){new Prism.plugins.Previewer("gradient",(function(e){return this.firstChild.style.backgroundImage="",this.firstChild.style.backgroundImage=s(e),!!this.firstChild.style.backgroundImage}),"*",(function(){this._elt.innerHTML="
      "}))}),tokens:{gradient:{pattern:/(?:\b|\B-[a-z]{1,10}-)(?:repeating-)?(?:linear|radial)-gradient\((?:(?:hsl|rgb)a?\(.+?\)|[^\)])+\)/gi,inside:{function:/[\w-]+(?=\()/,punctuation:/[(),]/}}},languages:{css:!0,less:!0,sass:[{lang:"sass",before:"punctuation",inside:"inside",root:Prism.languages.sass&&Prism.languages.sass["variable-line"]},{lang:"sass",before:"punctuation",inside:"inside",root:Prism.languages.sass&&Prism.languages.sass["property-line"]}],scss:!0,stylus:[{lang:"stylus",before:"func",inside:"rest",root:Prism.languages.stylus&&Prism.languages.stylus["property-declaration"].inside},{lang:"stylus",before:"func",inside:"rest",root:Prism.languages.stylus&&Prism.languages.stylus["variable-declaration"].inside}]}},angle:{create:function(){new Prism.plugins.Previewer("angle",(function(e){var s,t,i=parseFloat(e),a=e.match(/[a-z]+$/i);if(!i||!a)return!1;switch(a=a[0]){case"deg":s=360;break;case"grad":s=400;break;case"rad":s=2*Math.PI;break;case"turn":s=1}return t=100*i/s,t%=100,this[(i<0?"set":"remove")+"Attribute"]("data-negative",""),this.querySelector("circle").style.strokeDasharray=Math.abs(t)+",500",!0}),"*",(function(){this._elt.innerHTML=''}))},tokens:{angle:/(?:\b|\B-|(?=\B\.))(?:\d+(?:\.\d+)?|\.\d+)(?:deg|g?rad|turn)\b/i},languages:{css:!0,less:!0,markup:{lang:"markup",before:"punctuation",inside:"inside",root:Prism.languages.markup&&Prism.languages.markup.tag.inside["attr-value"]},sass:[{lang:"sass",inside:"inside",root:Prism.languages.sass&&Prism.languages.sass["property-line"]},{lang:"sass",before:"operator",inside:"inside",root:Prism.languages.sass&&Prism.languages.sass["variable-line"]}],scss:!0,stylus:[{lang:"stylus",before:"func",inside:"rest",root:Prism.languages.stylus&&Prism.languages.stylus["property-declaration"].inside},{lang:"stylus",before:"func",inside:"rest",root:Prism.languages.stylus&&Prism.languages.stylus["variable-declaration"].inside}]}},color:{create:function(){new Prism.plugins.Previewer("color",(function(e){return this.style.backgroundColor="",this.style.backgroundColor=e,!!this.style.backgroundColor}))},tokens:{color:[Prism.languages.css.hexcode].concat(Prism.languages.css.color)},languages:{css:!1,less:!0,markup:{lang:"markup",before:"punctuation",inside:"inside",root:Prism.languages.markup&&Prism.languages.markup.tag.inside["attr-value"]},sass:[{lang:"sass",before:"punctuation",inside:"inside",root:Prism.languages.sass&&Prism.languages.sass["variable-line"]},{lang:"sass",inside:"inside",root:Prism.languages.sass&&Prism.languages.sass["property-line"]}],scss:!1,stylus:[{lang:"stylus",before:"hexcode",inside:"rest",root:Prism.languages.stylus&&Prism.languages.stylus["property-declaration"].inside},{lang:"stylus",before:"hexcode",inside:"rest",root:Prism.languages.stylus&&Prism.languages.stylus["variable-declaration"].inside}]}},easing:{create:function(){new Prism.plugins.Previewer("easing",(function(e){var s=(e={linear:"0,0,1,1",ease:".25,.1,.25,1","ease-in":".42,0,1,1","ease-out":"0,0,.58,1","ease-in-out":".42,0,.58,1"}[e]||e).match(/-?(?:\d+(?:\.\d+)?|\.\d+)/g);if(4===s.length){s=s.map((function(e,s){return 100*(s%2?1-e:e)})),this.querySelector("path").setAttribute("d","M0,100 C"+s[0]+","+s[1]+", "+s[2]+","+s[3]+", 100,0");var t=this.querySelectorAll("line");return t[0].setAttribute("x2",s[0]),t[0].setAttribute("y2",s[1]),t[1].setAttribute("x2",s[2]),t[1].setAttribute("y2",s[3]),!0}return!1}),"*",(function(){this._elt.innerHTML=''}))},tokens:{easing:{pattern:/\bcubic-bezier\((?:-?(?:\d+(?:\.\d+)?|\.\d+),\s*){3}-?(?:\d+(?:\.\d+)?|\.\d+)\)\B|\b(?:ease(?:-in)?(?:-out)?|linear)(?=\s|[;}]|$)/i,inside:{function:/[\w-]+(?=\()/,punctuation:/[(),]/}}},languages:{css:!0,less:!0,sass:[{lang:"sass",inside:"inside",before:"punctuation",root:Prism.languages.sass&&Prism.languages.sass["variable-line"]},{lang:"sass",inside:"inside",root:Prism.languages.sass&&Prism.languages.sass["property-line"]}],scss:!0,stylus:[{lang:"stylus",before:"hexcode",inside:"rest",root:Prism.languages.stylus&&Prism.languages.stylus["property-declaration"].inside},{lang:"stylus",before:"hexcode",inside:"rest",root:Prism.languages.stylus&&Prism.languages.stylus["variable-declaration"].inside}]}},time:{create:function(){new Prism.plugins.Previewer("time",(function(e){var s=parseFloat(e),t=e.match(/[a-z]+$/i);return!(!s||!t||(t=t[0],this.querySelector("circle").style.animationDuration=2*s+t,0))}),"*",(function(){this._elt.innerHTML=''}))},tokens:{time:/(?:\b|\B-|(?=\B\.))(?:\d+(?:\.\d+)?|\.\d+)m?s\b/i},languages:{css:!0,less:!0,markup:{lang:"markup",before:"punctuation",inside:"inside",root:Prism.languages.markup&&Prism.languages.markup.tag.inside["attr-value"]},sass:[{lang:"sass",inside:"inside",root:Prism.languages.sass&&Prism.languages.sass["property-line"]},{lang:"sass",before:"operator",inside:"inside",root:Prism.languages.sass&&Prism.languages.sass["variable-line"]}],scss:!0,stylus:[{lang:"stylus",before:"hexcode",inside:"rest",root:Prism.languages.stylus&&Prism.languages.stylus["property-declaration"].inside},{lang:"stylus",before:"hexcode",inside:"rest",root:Prism.languages.stylus&&Prism.languages.stylus["variable-declaration"].inside}]}}},i="token",a="active",n="flipped",r=function(e,s,t,i){this._elt=null,this._type=e,this._token=null,this.updater=s,this._mouseout=this.mouseout.bind(this),this.initializer=i;var a=this;t||(t=["*"]),Array.isArray(t)||(t=[t]),t.forEach((function(e){"string"!=typeof e&&(e=e.lang),r.byLanguages[e]||(r.byLanguages[e]=[]),r.byLanguages[e].indexOf(a)<0&&r.byLanguages[e].push(a)})),r.byType[e]=this};for(var o in r.prototype.init=function(){this._elt||(this._elt=document.createElement("div"),this._elt.className="prism-previewer prism-previewer-"+this._type,document.body.appendChild(this._elt),this.initializer&&this.initializer())},r.prototype.isDisabled=function(e){do{if(e.hasAttribute&&e.hasAttribute("data-previewers"))return-1===(e.getAttribute("data-previewers")||"").split(/\s+/).indexOf(this._type)}while(e=e.parentNode);return!1},r.prototype.check=function(e){if(!e.classList.contains(i)||!this.isDisabled(e)){do{if(e.classList&&e.classList.contains(i)&&e.classList.contains(this._type))break}while(e=e.parentNode);e&&e!==this._token&&(this._token=e,this.show())}},r.prototype.mouseout=function(){this._token.removeEventListener("mouseout",this._mouseout,!1),this._token=null,this.hide()},r.prototype.show=function(){var e,s,t,i;if(this._elt||this.init(),this._token)if(this.updater.call(this._elt,this._token.textContent)){this._token.addEventListener("mouseout",this._mouseout,!1);var r=(s=(e=this._token.getBoundingClientRect()).left,t=e.top,s-=(i=document.documentElement.getBoundingClientRect()).left,{top:t-=i.top,right:innerWidth-s-e.width,bottom:innerHeight-t-e.height,left:s,width:e.width,height:e.height});this._elt.classList.add(a),r.top-this._elt.offsetHeight>0?(this._elt.classList.remove(n),this._elt.style.top=r.top+"px",this._elt.style.bottom=""):(this._elt.classList.add(n),this._elt.style.bottom=r.bottom+"px",this._elt.style.top=""),this._elt.style.left=r.left+Math.min(200,r.width/2)+"px"}else this.hide()},r.prototype.hide=function(){this._elt.classList.remove(a)},r.byLanguages={},r.byType={},r.initEvents=function(e,s){var t=[];r.byLanguages[s]&&(t=t.concat(r.byLanguages[s])),r.byLanguages["*"]&&(t=t.concat(r.byLanguages["*"])),e.addEventListener("mouseover",(function(e){var s=e.target;t.forEach((function(e){e.check(s)}))}),!1)},Prism.plugins.Previewer=r,Prism.hooks.add("before-highlight",(function(e){for(var s in t){var i=t[s].languages;if(e.language&&i[e.language]&&!i[e.language].initialized){var a=i[e.language];Array.isArray(a)||(a=[a]),a.forEach((function(a){var n,r,o,l;!0===a?(n="important",r=e.language,a=e.language):(n=a.before||"important",r=a.inside||a.lang,o=a.root||Prism.languages,l=a.skip,a=e.language),!l&&Prism.languages[a]&&(Prism.languages.insertBefore(r,n,t[s].tokens,o),e.grammar=Prism.languages[a],i[e.language]={initialized:!0})}))}}})),Prism.hooks.add("after-highlight",(function(e){(r.byLanguages["*"]||r.byLanguages[e.language])&&r.initEvents(e.element,e.language)})),t)t[o].create()}}(); \ No newline at end of file diff --git a/plugins/remove-initial-line-feed/index.html b/plugins/remove-initial-line-feed/index.html deleted file mode 100644 index 172fc1e881..0000000000 --- a/plugins/remove-initial-line-feed/index.html +++ /dev/null @@ -1,54 +0,0 @@ - - - - - - - Remove initial line feed ▲ Prism plugins - - - - - - - - - - -
      - -
      -

      How to use (DEPRECATED)

      - -

      This plugin will be removed in the future. Please use the general purpose Normalize Whitespace plugin instead.

      -

      Obviously, this is supposed to work only for code blocks (<pre><code>) and not for inline code.

      -

      With this plugin included, any initial line feed will be removed by default.

      -

      To bypass this behaviour, you may add the class keep-initial-line-feed to your desired <pre>.

      -
      - -
      -

      Examples

      - -

      Without adding the class

      -
      
      -<div></div>
      -
      - -

      With the class added

      -
      
      -<div></div>
      -
      - -
      - -
      - - - - - - - - - - diff --git a/plugins/remove-initial-line-feed/prism-remove-initial-line-feed.js b/plugins/remove-initial-line-feed/prism-remove-initial-line-feed.js deleted file mode 100644 index ffad4b9393..0000000000 --- a/plugins/remove-initial-line-feed/prism-remove-initial-line-feed.js +++ /dev/null @@ -1,21 +0,0 @@ -(function () { - - if (typeof Prism === 'undefined' || typeof document === 'undefined') { - return; - } - - Prism.hooks.add('before-sanity-check', function (env) { - if (env.code) { - var pre = env.element.parentNode; - var clsReg = /(?:^|\s)keep-initial-line-feed(?:\s|$)/; - if ( - pre && pre.nodeName.toLowerCase() === 'pre' && - // Apply only if nor the
       or the  have the class
      -				(!clsReg.test(pre.className) && !clsReg.test(env.element.className))
      -			) {
      -				env.code = env.code.replace(/^(?:\r?\n|\r)/, '');
      -			}
      -		}
      -	});
      -
      -}());
      diff --git a/plugins/remove-initial-line-feed/prism-remove-initial-line-feed.min.js b/plugins/remove-initial-line-feed/prism-remove-initial-line-feed.min.js
      deleted file mode 100644
      index a953fae81e..0000000000
      --- a/plugins/remove-initial-line-feed/prism-remove-initial-line-feed.min.js
      +++ /dev/null
      @@ -1 +0,0 @@
      -"undefined"!=typeof Prism&&"undefined"!=typeof document&&Prism.hooks.add("before-sanity-check",(function(e){if(e.code){var n=e.element.parentNode,o=/(?:^|\s)keep-initial-line-feed(?:\s|$)/;!n||"pre"!==n.nodeName.toLowerCase()||o.test(n.className)||o.test(e.element.className)||(e.code=e.code.replace(/^(?:\r?\n|\r)/,""))}}));
      \ No newline at end of file
      diff --git a/plugins/show-invisibles/index.html b/plugins/show-invisibles/index.html
      deleted file mode 100644
      index 664a1b94e6..0000000000
      --- a/plugins/show-invisibles/index.html
      +++ /dev/null
      @@ -1,41 +0,0 @@
      -
      -
      -
      -
      -
      -
      -Show Invisibles ▲ Prism plugins
      -
      -
      -
      -
      -
      -
      -
      -
      -
      -
      -
      -
      - -
      -

      Examples

      - -
      
      -
      -	
      
      -
      -	
      
      -
      - -
      - - - - - - - - - - diff --git a/plugins/show-invisibles/prism-show-invisibles.css b/plugins/show-invisibles/prism-show-invisibles.css deleted file mode 100644 index 6b39a32915..0000000000 --- a/plugins/show-invisibles/prism-show-invisibles.css +++ /dev/null @@ -1,34 +0,0 @@ -.token.tab:not(:empty), -.token.cr, -.token.lf, -.token.space { - position: relative; -} - -.token.tab:not(:empty):before, -.token.cr:before, -.token.lf:before, -.token.space:before { - color: #808080; - opacity: 0.6; - position: absolute; -} - -.token.tab:not(:empty):before { - content: '\21E5'; -} - -.token.cr:before { - content: '\240D'; -} - -.token.crlf:before { - content: '\240D\240A'; -} -.token.lf:before { - content: '\240A'; -} - -.token.space:before { - content: '\00B7'; -} diff --git a/plugins/show-invisibles/prism-show-invisibles.js b/plugins/show-invisibles/prism-show-invisibles.js deleted file mode 100644 index e1f97f9581..0000000000 --- a/plugins/show-invisibles/prism-show-invisibles.js +++ /dev/null @@ -1,83 +0,0 @@ -(function () { - - if (typeof Prism === 'undefined') { - return; - } - - - var invisibles = { - 'tab': /\t/, - 'crlf': /\r\n/, - 'lf': /\n/, - 'cr': /\r/, - 'space': / / - }; - - - /** - * Handles the recursive calling of `addInvisibles` for one token. - * - * @param {Object|Array} tokens The grammar or array which contains the token. - * @param {string|number} name The name or index of the token in `tokens`. - */ - function handleToken(tokens, name) { - var value = tokens[name]; - - var type = Prism.util.type(value); - switch (type) { - case 'RegExp': - var inside = {}; - tokens[name] = { - pattern: value, - inside: inside - }; - addInvisibles(inside); - break; - - case 'Array': - for (var i = 0, l = value.length; i < l; i++) { - handleToken(value, i); - } - break; - - default: // 'Object' - // eslint-disable-next-line no-redeclare - var inside = value.inside || (value.inside = {}); - addInvisibles(inside); - break; - } - } - - /** - * Recursively adds patterns to match invisible characters to the given grammar (if not added already). - * - * @param {Object} grammar - */ - function addInvisibles(grammar) { - if (!grammar || grammar['tab']) { - return; - } - - // assign invisibles here to "mark" the grammar in case of self references - for (var name in invisibles) { - if (invisibles.hasOwnProperty(name)) { - grammar[name] = invisibles[name]; - } - } - - // eslint-disable-next-line no-redeclare - for (var name in grammar) { - if (grammar.hasOwnProperty(name) && !invisibles[name]) { - if (name === 'rest') { - addInvisibles(grammar['rest']); - } else { - handleToken(grammar, name); - } - } - } - } - - Prism.hooks.add('before-highlight', function (env) { - addInvisibles(env.grammar); - }); -}()); diff --git a/plugins/show-invisibles/prism-show-invisibles.min.css b/plugins/show-invisibles/prism-show-invisibles.min.css deleted file mode 100644 index 0e2b048b90..0000000000 --- a/plugins/show-invisibles/prism-show-invisibles.min.css +++ /dev/null @@ -1 +0,0 @@ -.token.cr,.token.lf,.token.space,.token.tab:not(:empty){position:relative}.token.cr:before,.token.lf:before,.token.space:before,.token.tab:not(:empty):before{color:grey;opacity:.6;position:absolute}.token.tab:not(:empty):before{content:'\21E5'}.token.cr:before{content:'\240D'}.token.crlf:before{content:'\240D\240A'}.token.lf:before{content:'\240A'}.token.space:before{content:'\00B7'} \ No newline at end of file diff --git a/plugins/show-invisibles/prism-show-invisibles.min.js b/plugins/show-invisibles/prism-show-invisibles.min.js deleted file mode 100644 index 6298b3b9cc..0000000000 --- a/plugins/show-invisibles/prism-show-invisibles.min.js +++ /dev/null @@ -1 +0,0 @@ -!function(){if("undefined"!=typeof Prism){var r={tab:/\t/,crlf:/\r\n/,lf:/\n/,cr:/\r/,space:/ /};Prism.hooks.add("before-highlight",(function(r){i(r.grammar)}))}function e(r,a){var n=r[a];switch(Prism.util.type(n)){case"RegExp":var t={};r[a]={pattern:n,inside:t},i(t);break;case"Array":for(var f=0,s=n.length;f - - - - - -Show Language ▲ Prism plugins - - - - - - - - - - - -
      - -
      -

      Examples

      - -

      JavaScript

      -
      
      -
      -	

      CSS

      -
      
      -
      -	

      HTML (Markup)

      -
      
      -
      -	

      SVG

      -

      The data-language attribute can be used to display a specific label whether it has been defined as a language or not.

      -
      
      -
      -	

      Plain text

      -
      Just some text (aka. not code).
      -
      - -
      - - - - - - - - - - - diff --git a/plugins/show-language/prism-show-language.js b/plugins/show-language/prism-show-language.js deleted file mode 100644 index 6f28a8ef2b..0000000000 --- a/plugins/show-language/prism-show-language.js +++ /dev/null @@ -1,325 +0,0 @@ -(function () { - - if (typeof Prism === 'undefined' || typeof document === 'undefined') { - return; - } - - if (!Prism.plugins.toolbar) { - console.warn('Show Languages plugin loaded before Toolbar plugin.'); - - return; - } - - /* eslint-disable */ - - // The languages map is built automatically with gulp - var Languages = /*languages_placeholder[*/{ - "none": "Plain text", - "plain": "Plain text", - "plaintext": "Plain text", - "text": "Plain text", - "txt": "Plain text", - "html": "HTML", - "xml": "XML", - "svg": "SVG", - "mathml": "MathML", - "ssml": "SSML", - "rss": "RSS", - "css": "CSS", - "clike": "C-like", - "js": "JavaScript", - "abap": "ABAP", - "abnf": "ABNF", - "al": "AL", - "antlr4": "ANTLR4", - "g4": "ANTLR4", - "apacheconf": "Apache Configuration", - "apl": "APL", - "aql": "AQL", - "ino": "Arduino", - "arff": "ARFF", - "armasm": "ARM Assembly", - "arm-asm": "ARM Assembly", - "art": "Arturo", - "asciidoc": "AsciiDoc", - "adoc": "AsciiDoc", - "aspnet": "ASP.NET (C#)", - "asm6502": "6502 Assembly", - "asmatmel": "Atmel AVR Assembly", - "autohotkey": "AutoHotkey", - "autoit": "AutoIt", - "avisynth": "AviSynth", - "avs": "AviSynth", - "avro-idl": "Avro IDL", - "avdl": "Avro IDL", - "awk": "AWK", - "gawk": "GAWK", - "sh": "Shell", - "basic": "BASIC", - "bbcode": "BBcode", - "bbj": "BBj", - "bnf": "BNF", - "rbnf": "RBNF", - "bqn": "BQN", - "bsl": "BSL (1C:Enterprise)", - "oscript": "OneScript", - "csharp": "C#", - "cs": "C#", - "dotnet": "C#", - "cpp": "C++", - "cfscript": "CFScript", - "cfc": "CFScript", - "cil": "CIL", - "cilkc": "Cilk/C", - "cilk-c": "Cilk/C", - "cilkcpp": "Cilk/C++", - "cilk-cpp": "Cilk/C++", - "cilk": "Cilk/C++", - "cmake": "CMake", - "cobol": "COBOL", - "coffee": "CoffeeScript", - "conc": "Concurnas", - "csp": "Content-Security-Policy", - "css-extras": "CSS Extras", - "csv": "CSV", - "cue": "CUE", - "dataweave": "DataWeave", - "dax": "DAX", - "django": "Django/Jinja2", - "jinja2": "Django/Jinja2", - "dns-zone-file": "DNS zone file", - "dns-zone": "DNS zone file", - "dockerfile": "Docker", - "dot": "DOT (Graphviz)", - "gv": "DOT (Graphviz)", - "ebnf": "EBNF", - "editorconfig": "EditorConfig", - "ejs": "EJS", - "etlua": "Embedded Lua templating", - "erb": "ERB", - "excel-formula": "Excel Formula", - "xlsx": "Excel Formula", - "xls": "Excel Formula", - "fsharp": "F#", - "firestore-security-rules": "Firestore security rules", - "ftl": "FreeMarker Template Language", - "gml": "GameMaker Language", - "gamemakerlanguage": "GameMaker Language", - "gap": "GAP (CAS)", - "gcode": "G-code", - "gdscript": "GDScript", - "gedcom": "GEDCOM", - "gettext": "gettext", - "po": "gettext", - "glsl": "GLSL", - "gn": "GN", - "gni": "GN", - "linker-script": "GNU Linker Script", - "ld": "GNU Linker Script", - "go-module": "Go module", - "go-mod": "Go module", - "graphql": "GraphQL", - "hbs": "Handlebars", - "hs": "Haskell", - "hcl": "HCL", - "hlsl": "HLSL", - "http": "HTTP", - "hpkp": "HTTP Public-Key-Pins", - "hsts": "HTTP Strict-Transport-Security", - "ichigojam": "IchigoJam", - "icu-message-format": "ICU Message Format", - "idr": "Idris", - "ignore": ".ignore", - "gitignore": ".gitignore", - "hgignore": ".hgignore", - "npmignore": ".npmignore", - "inform7": "Inform 7", - "javadoc": "JavaDoc", - "javadoclike": "JavaDoc-like", - "javastacktrace": "Java stack trace", - "jq": "JQ", - "jsdoc": "JSDoc", - "js-extras": "JS Extras", - "json": "JSON", - "webmanifest": "Web App Manifest", - "json5": "JSON5", - "jsonp": "JSONP", - "jsstacktrace": "JS stack trace", - "js-templates": "JS Templates", - "keepalived": "Keepalived Configure", - "kts": "Kotlin Script", - "kt": "Kotlin", - "kumir": "KuMir (КуМир)", - "kum": "KuMir (КуМир)", - "latex": "LaTeX", - "tex": "TeX", - "context": "ConTeXt", - "lilypond": "LilyPond", - "ly": "LilyPond", - "emacs": "Lisp", - "elisp": "Lisp", - "emacs-lisp": "Lisp", - "llvm": "LLVM IR", - "log": "Log file", - "lolcode": "LOLCODE", - "magma": "Magma (CAS)", - "md": "Markdown", - "markup-templating": "Markup templating", - "matlab": "MATLAB", - "maxscript": "MAXScript", - "mel": "MEL", - "metafont": "METAFONT", - "mongodb": "MongoDB", - "moon": "MoonScript", - "n1ql": "N1QL", - "n4js": "N4JS", - "n4jsd": "N4JS", - "nand2tetris-hdl": "Nand To Tetris HDL", - "naniscript": "Naninovel Script", - "nani": "Naninovel Script", - "nasm": "NASM", - "neon": "NEON", - "nginx": "nginx", - "nsis": "NSIS", - "objectivec": "Objective-C", - "objc": "Objective-C", - "ocaml": "OCaml", - "opencl": "OpenCL", - "openqasm": "OpenQasm", - "qasm": "OpenQasm", - "parigp": "PARI/GP", - "objectpascal": "Object Pascal", - "psl": "PATROL Scripting Language", - "pcaxis": "PC-Axis", - "px": "PC-Axis", - "peoplecode": "PeopleCode", - "pcode": "PeopleCode", - "php": "PHP", - "phpdoc": "PHPDoc", - "php-extras": "PHP Extras", - "plant-uml": "PlantUML", - "plantuml": "PlantUML", - "plsql": "PL/SQL", - "powerquery": "PowerQuery", - "pq": "PowerQuery", - "mscript": "PowerQuery", - "powershell": "PowerShell", - "promql": "PromQL", - "properties": ".properties", - "protobuf": "Protocol Buffers", - "purebasic": "PureBasic", - "pbfasm": "PureBasic", - "purs": "PureScript", - "py": "Python", - "qsharp": "Q#", - "qs": "Q#", - "q": "Q (kdb+ database)", - "qml": "QML", - "rkt": "Racket", - "cshtml": "Razor C#", - "razor": "Razor C#", - "jsx": "React JSX", - "tsx": "React TSX", - "renpy": "Ren'py", - "rpy": "Ren'py", - "res": "ReScript", - "rest": "reST (reStructuredText)", - "robotframework": "Robot Framework", - "robot": "Robot Framework", - "rb": "Ruby", - "sas": "SAS", - "sass": "Sass (Sass)", - "scss": "Sass (SCSS)", - "shell-session": "Shell session", - "sh-session": "Shell session", - "shellsession": "Shell session", - "sml": "SML", - "smlnj": "SML/NJ", - "solidity": "Solidity (Ethereum)", - "sol": "Solidity (Ethereum)", - "solution-file": "Solution file", - "sln": "Solution file", - "soy": "Soy (Closure Template)", - "sparql": "SPARQL", - "rq": "SPARQL", - "splunk-spl": "Splunk SPL", - "sqf": "SQF: Status Quo Function (Arma 3)", - "sql": "SQL", - "stata": "Stata Ado", - "iecst": "Structured Text (IEC 61131-3)", - "supercollider": "SuperCollider", - "sclang": "SuperCollider", - "systemd": "Systemd configuration file", - "t4-templating": "T4 templating", - "t4-cs": "T4 Text Templates (C#)", - "t4": "T4 Text Templates (C#)", - "t4-vb": "T4 Text Templates (VB)", - "tap": "TAP", - "tt2": "Template Toolkit 2", - "toml": "TOML", - "trickle": "trickle", - "troy": "troy", - "trig": "TriG", - "ts": "TypeScript", - "tsconfig": "TSConfig", - "uscript": "UnrealScript", - "uc": "UnrealScript", - "uorazor": "UO Razor Script", - "uri": "URI", - "url": "URL", - "vbnet": "VB.Net", - "vhdl": "VHDL", - "vim": "vim", - "visual-basic": "Visual Basic", - "vba": "VBA", - "vb": "Visual Basic", - "wasm": "WebAssembly", - "web-idl": "Web IDL", - "webidl": "Web IDL", - "wgsl": "WGSL", - "wiki": "Wiki markup", - "wolfram": "Wolfram language", - "nb": "Mathematica Notebook", - "wl": "Wolfram language", - "xeoracube": "XeoraCube", - "xml-doc": "XML doc (.net)", - "xojo": "Xojo (REALbasic)", - "xquery": "XQuery", - "yaml": "YAML", - "yml": "YAML", - "yang": "YANG" - }/*]*/; - - /* eslint-enable */ - - Prism.plugins.toolbar.registerButton('show-language', function (env) { - var pre = env.element.parentNode; - if (!pre || !/pre/i.test(pre.nodeName)) { - return; - } - - /** - * Tries to guess the name of a language given its id. - * - * @param {string} id The language id. - * @returns {string} - */ - function guessTitle(id) { - if (!id) { - return id; - } - return (id.substring(0, 1).toUpperCase() + id.substring(1)).replace(/s(?=cript)/, 'S'); - } - - var language = pre.getAttribute('data-language') || Languages[env.language] || guessTitle(env.language); - - if (!language) { - return; - } - var element = document.createElement('span'); - element.textContent = language; - - return element; - }); - -}()); diff --git a/plugins/show-language/prism-show-language.min.js b/plugins/show-language/prism-show-language.min.js deleted file mode 100644 index 2f73ea1809..0000000000 --- a/plugins/show-language/prism-show-language.min.js +++ /dev/null @@ -1 +0,0 @@ -!function(){if("undefined"!=typeof Prism&&"undefined"!=typeof document)if(Prism.plugins.toolbar){var e={none:"Plain text",plain:"Plain text",plaintext:"Plain text",text:"Plain text",txt:"Plain text",html:"HTML",xml:"XML",svg:"SVG",mathml:"MathML",ssml:"SSML",rss:"RSS",css:"CSS",clike:"C-like",js:"JavaScript",abap:"ABAP",abnf:"ABNF",al:"AL",antlr4:"ANTLR4",g4:"ANTLR4",apacheconf:"Apache Configuration",apl:"APL",aql:"AQL",ino:"Arduino",arff:"ARFF",armasm:"ARM Assembly","arm-asm":"ARM Assembly",art:"Arturo",asciidoc:"AsciiDoc",adoc:"AsciiDoc",aspnet:"ASP.NET (C#)",asm6502:"6502 Assembly",asmatmel:"Atmel AVR Assembly",autohotkey:"AutoHotkey",autoit:"AutoIt",avisynth:"AviSynth",avs:"AviSynth","avro-idl":"Avro IDL",avdl:"Avro IDL",awk:"AWK",gawk:"GAWK",sh:"Shell",basic:"BASIC",bbcode:"BBcode",bbj:"BBj",bnf:"BNF",rbnf:"RBNF",bqn:"BQN",bsl:"BSL (1C:Enterprise)",oscript:"OneScript",csharp:"C#",cs:"C#",dotnet:"C#",cpp:"C++",cfscript:"CFScript",cfc:"CFScript",cil:"CIL",cilkc:"Cilk/C","cilk-c":"Cilk/C",cilkcpp:"Cilk/C++","cilk-cpp":"Cilk/C++",cilk:"Cilk/C++",cmake:"CMake",cobol:"COBOL",coffee:"CoffeeScript",conc:"Concurnas",csp:"Content-Security-Policy","css-extras":"CSS Extras",csv:"CSV",cue:"CUE",dataweave:"DataWeave",dax:"DAX",django:"Django/Jinja2",jinja2:"Django/Jinja2","dns-zone-file":"DNS zone file","dns-zone":"DNS zone file",dockerfile:"Docker",dot:"DOT (Graphviz)",gv:"DOT (Graphviz)",ebnf:"EBNF",editorconfig:"EditorConfig",ejs:"EJS",etlua:"Embedded Lua templating",erb:"ERB","excel-formula":"Excel Formula",xlsx:"Excel Formula",xls:"Excel Formula",fsharp:"F#","firestore-security-rules":"Firestore security rules",ftl:"FreeMarker Template Language",gml:"GameMaker Language",gamemakerlanguage:"GameMaker Language",gap:"GAP (CAS)",gcode:"G-code",gdscript:"GDScript",gedcom:"GEDCOM",gettext:"gettext",po:"gettext",glsl:"GLSL",gn:"GN",gni:"GN","linker-script":"GNU Linker Script",ld:"GNU Linker Script","go-module":"Go module","go-mod":"Go module",graphql:"GraphQL",hbs:"Handlebars",hs:"Haskell",hcl:"HCL",hlsl:"HLSL",http:"HTTP",hpkp:"HTTP Public-Key-Pins",hsts:"HTTP Strict-Transport-Security",ichigojam:"IchigoJam","icu-message-format":"ICU Message Format",idr:"Idris",ignore:".ignore",gitignore:".gitignore",hgignore:".hgignore",npmignore:".npmignore",inform7:"Inform 7",javadoc:"JavaDoc",javadoclike:"JavaDoc-like",javastacktrace:"Java stack trace",jq:"JQ",jsdoc:"JSDoc","js-extras":"JS Extras",json:"JSON",webmanifest:"Web App Manifest",json5:"JSON5",jsonp:"JSONP",jsstacktrace:"JS stack trace","js-templates":"JS Templates",keepalived:"Keepalived Configure",kts:"Kotlin Script",kt:"Kotlin",kumir:"KuMir (КуМир)",kum:"KuMir (КуМир)",latex:"LaTeX",tex:"TeX",context:"ConTeXt",lilypond:"LilyPond",ly:"LilyPond",emacs:"Lisp",elisp:"Lisp","emacs-lisp":"Lisp",llvm:"LLVM IR",log:"Log file",lolcode:"LOLCODE",magma:"Magma (CAS)",md:"Markdown","markup-templating":"Markup templating",matlab:"MATLAB",maxscript:"MAXScript",mel:"MEL",metafont:"METAFONT",mongodb:"MongoDB",moon:"MoonScript",n1ql:"N1QL",n4js:"N4JS",n4jsd:"N4JS","nand2tetris-hdl":"Nand To Tetris HDL",naniscript:"Naninovel Script",nani:"Naninovel Script",nasm:"NASM",neon:"NEON",nginx:"nginx",nsis:"NSIS",objectivec:"Objective-C",objc:"Objective-C",ocaml:"OCaml",opencl:"OpenCL",openqasm:"OpenQasm",qasm:"OpenQasm",parigp:"PARI/GP",objectpascal:"Object Pascal",psl:"PATROL Scripting Language",pcaxis:"PC-Axis",px:"PC-Axis",peoplecode:"PeopleCode",pcode:"PeopleCode",php:"PHP",phpdoc:"PHPDoc","php-extras":"PHP Extras","plant-uml":"PlantUML",plantuml:"PlantUML",plsql:"PL/SQL",powerquery:"PowerQuery",pq:"PowerQuery",mscript:"PowerQuery",powershell:"PowerShell",promql:"PromQL",properties:".properties",protobuf:"Protocol Buffers",purebasic:"PureBasic",pbfasm:"PureBasic",purs:"PureScript",py:"Python",qsharp:"Q#",qs:"Q#",q:"Q (kdb+ database)",qml:"QML",rkt:"Racket",cshtml:"Razor C#",razor:"Razor C#",jsx:"React JSX",tsx:"React TSX",renpy:"Ren'py",rpy:"Ren'py",res:"ReScript",rest:"reST (reStructuredText)",robotframework:"Robot Framework",robot:"Robot Framework",rb:"Ruby",sas:"SAS",sass:"Sass (Sass)",scss:"Sass (SCSS)","shell-session":"Shell session","sh-session":"Shell session",shellsession:"Shell session",sml:"SML",smlnj:"SML/NJ",solidity:"Solidity (Ethereum)",sol:"Solidity (Ethereum)","solution-file":"Solution file",sln:"Solution file",soy:"Soy (Closure Template)",sparql:"SPARQL",rq:"SPARQL","splunk-spl":"Splunk SPL",sqf:"SQF: Status Quo Function (Arma 3)",sql:"SQL",stata:"Stata Ado",iecst:"Structured Text (IEC 61131-3)",supercollider:"SuperCollider",sclang:"SuperCollider",systemd:"Systemd configuration file","t4-templating":"T4 templating","t4-cs":"T4 Text Templates (C#)",t4:"T4 Text Templates (C#)","t4-vb":"T4 Text Templates (VB)",tap:"TAP",tt2:"Template Toolkit 2",toml:"TOML",trickle:"trickle",troy:"troy",trig:"TriG",ts:"TypeScript",tsconfig:"TSConfig",uscript:"UnrealScript",uc:"UnrealScript",uorazor:"UO Razor Script",uri:"URI",url:"URL",vbnet:"VB.Net",vhdl:"VHDL",vim:"vim","visual-basic":"Visual Basic",vba:"VBA",vb:"Visual Basic",wasm:"WebAssembly","web-idl":"Web IDL",webidl:"Web IDL",wgsl:"WGSL",wiki:"Wiki markup",wolfram:"Wolfram language",nb:"Mathematica Notebook",wl:"Wolfram language",xeoracube:"XeoraCube","xml-doc":"XML doc (.net)",xojo:"Xojo (REALbasic)",xquery:"XQuery",yaml:"YAML",yml:"YAML",yang:"YANG"};Prism.plugins.toolbar.registerButton("show-language",(function(a){var t=a.element.parentNode;if(t&&/pre/i.test(t.nodeName)){var o,i=t.getAttribute("data-language")||e[a.language]||((o=a.language)?(o.substring(0,1).toUpperCase()+o.substring(1)).replace(/s(?=cript)/,"S"):o);if(i){var s=document.createElement("span");return s.textContent=i,s}}}))}else console.warn("Show Languages plugin loaded before Toolbar plugin.")}(); \ No newline at end of file diff --git a/plugins/toolbar/index.html b/plugins/toolbar/index.html deleted file mode 100644 index 6c5b88c152..0000000000 --- a/plugins/toolbar/index.html +++ /dev/null @@ -1,139 +0,0 @@ - - - - - - - Toolbar ▲ Prism plugins - - - - - - - - - - - -
      - -
      -

      How to use

      -

      The Toolbar plugin allows for several methods to register your button, using the Prism.plugins.toolbar.registerButton function.

      - -

      The simplest method is through the HTML API. Add a data-label attribute to the pre element, and the Toolbar - plugin will read the value of that attribute and append a label to the code snippet.

      - -
      <pre data-src="plugins/toolbar/prism-toolbar.js" data-label="Hello World!"></pre>
      - -

      If you want to provide arbitrary HTML to the label, create a template element with the HTML you want in the label, and provide the - template element's id to data-label. The Toolbar plugin will use the template's content for the button. - You can also use to declare your event handlers inline:

      - -
      <pre data-src="plugins/toolbar/prism-toolbar.js" data-label="my-label-button"></pre>
      - -
      <template id="my-label-button"><button onclick="console.log('This is an inline-handler');">My button</button></template>
      - -

      Registering buttons

      - -

      For more flexibility, the Toolbar exposes a JavaScript function that can be used to register new buttons or labels to the Toolbar, - Prism.plugins.toolbar.registerButton.

      - -

      The function accepts a key for the button and an object with a text property string and an optional - onClick function or a url string. The onClick function will be called when the button is clicked, while the - url property will be set to the anchor tag's href.

      - -
      Prism.plugins.toolbar.registerButton('hello-world', {
      -	text: 'Hello World!', // required
      -	onClick: function (env) { // optional
      -		alert('This code snippet is written in ' + env.language + '.');
      -	}
      -});
      - -

      See how the above code registers the Hello World! button? You can use this in your plugins to register your own buttons with the toolbar.

      - -

      If you need more control, you can provide a function to registerButton that returns either a span, a, or - button element.

      - -
      Prism.plugins.toolbar.registerButton('select-code', function(env) {
      -	var button = document.createElement('button');
      -	button.innerHTML = 'Select Code';
      -
      -	button.addEventListener('click', function () {
      -		// Source: http://stackoverflow.com/a/11128179/2757940
      -		if (document.body.createTextRange) { // ms
      -			var range = document.body.createTextRange();
      -			range.moveToElementText(env.element);
      -			range.select();
      -		} else if (window.getSelection) { // moz, opera, webkit
      -			var selection = window.getSelection();
      -			var range = document.createRange();
      -			range.selectNodeContents(env.element);
      -			selection.removeAllRanges();
      -			selection.addRange(range);
      -		}
      -	});
      -
      -	return button;
      -});
      - -

      The above function creates the Select Code button you see, and when you click it, the code gets highlighted.

      - -

      Ordering buttons

      - -

      By default, the buttons will be added to the code snippet in the order they were registered. If more control over - the order is needed, the data-toolbar-order attribute can be used. Given a comma-separated list of button names, it will ensure that these buttons will be displayed in the given order.
      - Buttons not listed will not be displayed. This means that buttons can be disabled using this technique.

      - -

      Example: The "Hello World!" button will appear before the "Select Code" button and the custom label button will not be displayed.

      - -
      <pre data-toolbar-order="hello-world,select-code" data-label="Hello World!"><code></code></pre>
      - -

      The data-toolbar-order attribute is inherited, so you can define the button order for the whole document by adding the attribute to the body of the page.

      - -
      <body data-toolbar-order="select-code,hello-world,label">
      -
      - -
      - - - - - - - - - - - - diff --git a/plugins/toolbar/prism-toolbar.css b/plugins/toolbar/prism-toolbar.css deleted file mode 100644 index 59676aea4c..0000000000 --- a/plugins/toolbar/prism-toolbar.css +++ /dev/null @@ -1,65 +0,0 @@ -div.code-toolbar { - position: relative; -} - -div.code-toolbar > .toolbar { - position: absolute; - z-index: 10; - top: .3em; - right: .2em; - transition: opacity 0.3s ease-in-out; - opacity: 0; -} - -div.code-toolbar:hover > .toolbar { - opacity: 1; -} - -/* Separate line b/c rules are thrown out if selector is invalid. - IE11 and old Edge versions don't support :focus-within. */ -div.code-toolbar:focus-within > .toolbar { - opacity: 1; -} - -div.code-toolbar > .toolbar > .toolbar-item { - display: inline-block; -} - -div.code-toolbar > .toolbar > .toolbar-item > a { - cursor: pointer; -} - -div.code-toolbar > .toolbar > .toolbar-item > button { - background: none; - border: 0; - color: inherit; - font: inherit; - line-height: normal; - overflow: visible; - padding: 0; - -webkit-user-select: none; /* for button */ - -moz-user-select: none; - -ms-user-select: none; -} - -div.code-toolbar > .toolbar > .toolbar-item > a, -div.code-toolbar > .toolbar > .toolbar-item > button, -div.code-toolbar > .toolbar > .toolbar-item > span { - color: #bbb; - font-size: .8em; - padding: 0 .5em; - background: #f5f2f0; - background: rgba(224, 224, 224, 0.2); - box-shadow: 0 2px 0 0 rgba(0,0,0,0.2); - border-radius: .5em; -} - -div.code-toolbar > .toolbar > .toolbar-item > a:hover, -div.code-toolbar > .toolbar > .toolbar-item > a:focus, -div.code-toolbar > .toolbar > .toolbar-item > button:hover, -div.code-toolbar > .toolbar > .toolbar-item > button:focus, -div.code-toolbar > .toolbar > .toolbar-item > span:hover, -div.code-toolbar > .toolbar > .toolbar-item > span:focus { - color: inherit; - text-decoration: none; -} diff --git a/plugins/toolbar/prism-toolbar.js b/plugins/toolbar/prism-toolbar.js deleted file mode 100644 index f59b751d72..0000000000 --- a/plugins/toolbar/prism-toolbar.js +++ /dev/null @@ -1,179 +0,0 @@ -(function () { - - if (typeof Prism === 'undefined' || typeof document === 'undefined') { - return; - } - - var callbacks = []; - var map = {}; - var noop = function () {}; - - Prism.plugins.toolbar = {}; - - /** - * @typedef ButtonOptions - * @property {string} text The text displayed. - * @property {string} [url] The URL of the link which will be created. - * @property {Function} [onClick] The event listener for the `click` event of the created button. - * @property {string} [className] The class attribute to include with element. - */ - - /** - * Register a button callback with the toolbar. - * - * @param {string} key - * @param {ButtonOptions|Function} opts - */ - var registerButton = Prism.plugins.toolbar.registerButton = function (key, opts) { - var callback; - - if (typeof opts === 'function') { - callback = opts; - } else { - callback = function (env) { - var element; - - if (typeof opts.onClick === 'function') { - element = document.createElement('button'); - element.type = 'button'; - element.addEventListener('click', function () { - opts.onClick.call(this, env); - }); - } else if (typeof opts.url === 'string') { - element = document.createElement('a'); - element.href = opts.url; - } else { - element = document.createElement('span'); - } - - if (opts.className) { - element.classList.add(opts.className); - } - - element.textContent = opts.text; - - return element; - }; - } - - if (key in map) { - console.warn('There is a button with the key "' + key + '" registered already.'); - return; - } - - callbacks.push(map[key] = callback); - }; - - /** - * Returns the callback order of the given element. - * - * @param {HTMLElement} element - * @returns {string[] | undefined} - */ - function getOrder(element) { - while (element) { - var order = element.getAttribute('data-toolbar-order'); - if (order != null) { - order = order.trim(); - if (order.length) { - return order.split(/\s*,\s*/g); - } else { - return []; - } - } - element = element.parentElement; - } - } - - /** - * Post-highlight Prism hook callback. - * - * @param env - */ - var hook = Prism.plugins.toolbar.hook = function (env) { - // Check if inline or actual code block (credit to line-numbers plugin) - var pre = env.element.parentNode; - if (!pre || !/pre/i.test(pre.nodeName)) { - return; - } - - // Autoloader rehighlights, so only do this once. - if (pre.parentNode.classList.contains('code-toolbar')) { - return; - } - - // Create wrapper for
       to prevent scrolling toolbar with content
      -		var wrapper = document.createElement('div');
      -		wrapper.classList.add('code-toolbar');
      -		pre.parentNode.insertBefore(wrapper, pre);
      -		wrapper.appendChild(pre);
      -
      -		// Setup the toolbar
      -		var toolbar = document.createElement('div');
      -		toolbar.classList.add('toolbar');
      -
      -		// order callbacks
      -		var elementCallbacks = callbacks;
      -		var order = getOrder(env.element);
      -		if (order) {
      -			elementCallbacks = order.map(function (key) {
      -				return map[key] || noop;
      -			});
      -		}
      -
      -		elementCallbacks.forEach(function (callback) {
      -			var element = callback(env);
      -
      -			if (!element) {
      -				return;
      -			}
      -
      -			var item = document.createElement('div');
      -			item.classList.add('toolbar-item');
      -
      -			item.appendChild(element);
      -			toolbar.appendChild(item);
      -		});
      -
      -		// Add our toolbar to the currently created wrapper of 
       tag
      -		wrapper.appendChild(toolbar);
      -	};
      -
      -	registerButton('label', function (env) {
      -		var pre = env.element.parentNode;
      -		if (!pre || !/pre/i.test(pre.nodeName)) {
      -			return;
      -		}
      -
      -		if (!pre.hasAttribute('data-label')) {
      -			return;
      -		}
      -
      -		var element; var template;
      -		var text = pre.getAttribute('data-label');
      -		try {
      -			// Any normal text will blow up this selector.
      -			template = document.querySelector('template#' + text);
      -		} catch (e) { /* noop */ }
      -
      -		if (template) {
      -			element = template.content;
      -		} else {
      -			if (pre.hasAttribute('data-url')) {
      -				element = document.createElement('a');
      -				element.href = pre.getAttribute('data-url');
      -			} else {
      -				element = document.createElement('span');
      -			}
      -
      -			element.textContent = text;
      -		}
      -
      -		return element;
      -	});
      -
      -	/**
      -	 * Register the toolbar with Prism.
      -	 */
      -	Prism.hooks.add('complete', hook);
      -}());
      diff --git a/plugins/toolbar/prism-toolbar.min.css b/plugins/toolbar/prism-toolbar.min.css
      deleted file mode 100644
      index d4298ec8dc..0000000000
      --- a/plugins/toolbar/prism-toolbar.min.css
      +++ /dev/null
      @@ -1 +0,0 @@
      -div.code-toolbar{position:relative}div.code-toolbar>.toolbar{position:absolute;z-index:10;top:.3em;right:.2em;transition:opacity .3s ease-in-out;opacity:0}div.code-toolbar:hover>.toolbar{opacity:1}div.code-toolbar:focus-within>.toolbar{opacity:1}div.code-toolbar>.toolbar>.toolbar-item{display:inline-block}div.code-toolbar>.toolbar>.toolbar-item>a{cursor:pointer}div.code-toolbar>.toolbar>.toolbar-item>button{background:0 0;border:0;color:inherit;font:inherit;line-height:normal;overflow:visible;padding:0;-webkit-user-select:none;-moz-user-select:none;-ms-user-select:none}div.code-toolbar>.toolbar>.toolbar-item>a,div.code-toolbar>.toolbar>.toolbar-item>button,div.code-toolbar>.toolbar>.toolbar-item>span{color:#bbb;font-size:.8em;padding:0 .5em;background:#f5f2f0;background:rgba(224,224,224,.2);box-shadow:0 2px 0 0 rgba(0,0,0,.2);border-radius:.5em}div.code-toolbar>.toolbar>.toolbar-item>a:focus,div.code-toolbar>.toolbar>.toolbar-item>a:hover,div.code-toolbar>.toolbar>.toolbar-item>button:focus,div.code-toolbar>.toolbar>.toolbar-item>button:hover,div.code-toolbar>.toolbar>.toolbar-item>span:focus,div.code-toolbar>.toolbar>.toolbar-item>span:hover{color:inherit;text-decoration:none}
      \ No newline at end of file
      diff --git a/plugins/toolbar/prism-toolbar.min.js b/plugins/toolbar/prism-toolbar.min.js
      deleted file mode 100644
      index 54eb11854f..0000000000
      --- a/plugins/toolbar/prism-toolbar.min.js
      +++ /dev/null
      @@ -1 +0,0 @@
      -!function(){if("undefined"!=typeof Prism&&"undefined"!=typeof document){var e=[],t={},n=function(){};Prism.plugins.toolbar={};var a=Prism.plugins.toolbar.registerButton=function(n,a){var r;r="function"==typeof a?a:function(e){var t;return"function"==typeof a.onClick?((t=document.createElement("button")).type="button",t.addEventListener("click",(function(){a.onClick.call(this,e)}))):"string"==typeof a.url?(t=document.createElement("a")).href=a.url:t=document.createElement("span"),a.className&&t.classList.add(a.className),t.textContent=a.text,t},n in t?console.warn('There is a button with the key "'+n+'" registered already.'):e.push(t[n]=r)},r=Prism.plugins.toolbar.hook=function(a){var r=a.element.parentNode;if(r&&/pre/i.test(r.nodeName)&&!r.parentNode.classList.contains("code-toolbar")){var o=document.createElement("div");o.classList.add("code-toolbar"),r.parentNode.insertBefore(o,r),o.appendChild(r);var i=document.createElement("div");i.classList.add("toolbar");var l=e,d=function(e){for(;e;){var t=e.getAttribute("data-toolbar-order");if(null!=t)return(t=t.trim()).length?t.split(/\s*,\s*/g):[];e=e.parentElement}}(a.element);d&&(l=d.map((function(e){return t[e]||n}))),l.forEach((function(e){var t=e(a);if(t){var n=document.createElement("div");n.classList.add("toolbar-item"),n.appendChild(t),i.appendChild(n)}})),o.appendChild(i)}};a("label",(function(e){var t=e.element.parentNode;if(t&&/pre/i.test(t.nodeName)&&t.hasAttribute("data-label")){var n,a,r=t.getAttribute("data-label");try{a=document.querySelector("template#"+r)}catch(e){}return a?n=a.content:(t.hasAttribute("data-url")?(n=document.createElement("a")).href=t.getAttribute("data-url"):n=document.createElement("span"),n.textContent=r),n}})),Prism.hooks.add("complete",r)}}();
      \ No newline at end of file
      diff --git a/plugins/treeview/index.html b/plugins/treeview/index.html
      deleted file mode 100644
      index 8fc7f579fd..0000000000
      --- a/plugins/treeview/index.html
      +++ /dev/null
      @@ -1,83 +0,0 @@
      -
      -
      -
      -
      -	
      -	
      -	Treeview ▲ Prism plugins
      -	
      -	
      -	
      -	
      -	
      -
      -	
      -	
      -
      -
      -
      -
      - -
      -

      How to use

      -

      You may use tree -F to get a compatible text structure.

      - -
      root_folder/
      -|-- a first folder/
      -|   |-- holidays.mov
      -|   |-- javascript-file.js
      -|   `-- some_picture.jpg
      -|-- documents/
      -|   |-- spreadsheet.xls
      -|   |-- manual.pdf
      -|   |-- document.docx
      -|   `-- presentation.ppt
      -|       `-- test
      -|-- empty_folder/
      -|-- going deeper/
      -|   |-- going deeper/
      -|   |   `-- going deeper/
      -|   |        `-- going deeper/
      -|   |            `-- .secret_file
      -|   |-- style.css
      -|   `-- index.html
      -|-- music and movies/
      -|   |-- great-song.mp3
      -|   |-- S01E02.new.episode.avi
      -|   |-- S01E02.new.episode.nfo
      -|   `-- track 1.cda
      -|-- .gitignore
      -|-- .htaccess
      -|-- .npmignore
      -|-- archive 1.zip
      -|-- archive 2.tar.gz
      -|-- logo.svg
      -`-- README.md
      - -

      You can also use the following box-drawing characters to represent the tree:

      - -
      root_folder/
      -├── a first folder/
      -|   ├── holidays.mov
      -|   ├── javascript-file.js
      -|   └── some_picture.jpg
      -├── documents/
      -|   ├── spreadsheet.xls
      -|   ├── manual.pdf
      -|   ├── document.docx
      -|   └── presentation.ppt
      -└── etc.
      -
      - -
      - -
      - - - - - - - - - diff --git a/plugins/treeview/prism-treeview.css b/plugins/treeview/prism-treeview.css deleted file mode 100644 index 99ee658cb0..0000000000 --- a/plugins/treeview/prism-treeview.css +++ /dev/null @@ -1,168 +0,0 @@ -.token.treeview-part .entry-line { - position: relative; - text-indent: -99em; - display: inline-block; - vertical-align: top; - width: 1.2em; -} -.token.treeview-part .entry-line:before, -.token.treeview-part .line-h:after { - content: ""; - position: absolute; - top: 0; - left: 50%; - width: 50%; - height: 100%; -} -.token.treeview-part .line-h:before, -.token.treeview-part .line-v:before { - border-left: 1px solid #ccc; -} -.token.treeview-part .line-v-last:before { - height: 50%; - border-left: 1px solid #ccc; - border-bottom: 1px solid #ccc; -} -.token.treeview-part .line-h:after { - height: 50%; - border-bottom: 1px solid #ccc; -} -.token.treeview-part .entry-name { - position: relative; - display: inline-block; - vertical-align: top; -} -.token.treeview-part .entry-name.dotfile { - opacity: 0.5; -} - -/* @GENERATED-FONT */ -@font-face { - font-family: "PrismTreeview"; - /** - * This font is generated from the .svg files in the `icons` folder. See the `treeviewIconFont` function in - * `gulpfile.js/index.js` for more information. - * - * Use the following escape sequences to refer to a specific icon: - * - * - \ea01 file - * - \ea02 folder - * - \ea03 image - * - \ea04 audio - * - \ea05 video - * - \ea06 text - * - \ea07 code - * - \ea08 archive - * - \ea09 pdf - * - \ea0a excel - * - \ea0b powerpoint - * - \ea0c word - */ - src: url("data:application/font-woff;base64,d09GRgABAAAAAAgYAAsAAAAAEGAAAQAAAAAAAAAAAAAAAAAAAAAAAAAAAABHU1VCAAABCAAAADsAAABUIIslek9TLzIAAAFEAAAAPwAAAFY1UkH9Y21hcAAAAYQAAAB/AAACCtvO7yxnbHlmAAACBAAAA+MAAAlACm1VqmhlYWQAAAXoAAAAKgAAADZfxj5jaGhlYQAABhQAAAAYAAAAJAFbAMFobXR4AAAGLAAAAA4AAAA0CGQAAGxvY2EAAAY8AAAAHAAAABwM9A9CbWF4cAAABlgAAAAfAAAAIAEgAHZuYW1lAAAGeAAAATcAAAJSfUrk+HBvc3QAAAewAAAAZgAAAIka0DSfeJxjYGRgYOBiMGCwY2BycfMJYeDLSSzJY5BiYGGAAJA8MpsxJzM9kYEDxgPKsYBpDiBmg4gCACY7BUgAeJxjYGRYyjiBgZWBgaGQoRZISkLpUAYOBj0GBiYGVmYGrCAgzTWFweEV4ysehs1ArgDDFgZGIA3CDAB2tQjAAHic7ZHLEcMwCESfLCz/VEoKSEE5parURxMOC4c0Ec283WGFdABgBXrwCAzam4bOK9KWeefM3Hhmjyn3ed+hTRq1pS7Ra/HjYGPniHcXMy4G/zNTP7/KW5HTXArkvdBW3ArN19dCG/NRIN8K5HuB/CiQn4U26VeBfBbML9NEH78AeJyVVc1u20YQ3pn905JcSgr/YsuSDTEg3cR1bFEkYyS1HQcQ2jQF2hot6vYSoECKnnPLA/SWUy9NTr31Bfp+6azsNI0SGiolzu7ODnfn+2Z2lnHG3rxhr9nfLGKbLGesncAYYnUHpsVnMG/uwyzNdFIVd6HI6twp8+R3LpT4TSglLoTHwwJgG2/dFvKrl9yI507/p5CCq4LTxB/PlPjkFaMHnWB/0S9je7RTPS+utnGtom1T2q5pk/e3H0M1S18rsXAL7wgpxQuhAmteGGvNjmcfGXuwnFNOPCXxeOGmnjrBLWNyBeNtVq2Hs03yus1aPS3mzSyNVSfu588iW1Q93x/4fjcHn+5EkS2tMxr4xIRa8ese+4L9uKZnxEqs8+ldyN9atU02a5t5uQ8hZGms1QTKpaKYqnipiNNOAIeIADC0JNEOYY+jtSgFoOchiAjRGFACpUTRje8bwIYWGCDEgENY8MEu9bnCYCdAxftoNg0KiSpUtPaHcanYwzXRu6T4r40b5npal3V7UHWCPJW9niyl1vIHgoujEXZjudBkeWkOeMQBRmbEPhKzij1i52t6/TadL+3q7H0U1eq4E8cG4gIIwQLx8VX7ToPXgPrehVc5QXHR7gMSmwjKfaYAP4KvZV+yn9bE18y2IY37LvtyrSg3i7ZK++B603ndlg/gBJpZRsfpBI6hyiaQ6FjlnThz8lAC3LgBIMnXDOAXxBQ4SIgiEhx2AcGCAwAhwjXRpCQms42bwAUt75BvAwgONzdgOfWEwzk4Ylzj4mz+5YEzzXzWX9aNlk7ot65y5QnBHsNlm6zDTu7sspRqG4V+fgJ1lVBZ07Nm7s5nemo3Lf3PO7iwtnroQ5/YDGwPRUip6fV6L+27p+wCHwSvPs85UnHqId8NAn5IBsKdv95KrL9m31Gsf2a/rluDslk1y1J9GE+LUmmVT/OyOHaFKGnapt2H5XeJTmKd6qYNoVVZOy+pWzr7rMip3ndG/4mQSoUcMbAqG/YNIAdXhkAqTVruXhocSKN0iS4Rwj7vSS4fcF/La07BfeQSuRAcFeW+9igjwPhhYPpGCBCBHhxiKMyFMFT7ziRH7RtfIWdiha+TdW+Rqs7bLHdN2ZJIKl0um0x3op9saYr0REeRdj09pl43pMzz4tjztrY8L4o8bzT+oLY27PR/eFtXs/YY5vtwB5Iqad14eYN0ujveMaGWqkdU3TKbQSC5Uvxaf4fA7SAQ3r2tEfIhd4duld91bwMisjqBw22orthNcroXl7KqO1329HBgAexgoCfGAwiDPoBnriki3lmNojrzvD0tjo6E3vPYP6E2BMIAeJxjYGRgYADiY8t3FsTz23xl4GbYzIAB/v9nWM6wBcjgYGAC8QH+QQhZAAB4nGNgZGBg2MzAACeXMzAyoAJeADPyAh14nGNgAILNpGEA0fgIZQAAAAAAAAA2AHIAvgE+AZgCCAKMAv4DlgPsBEYEoHicY2BkYGDgZchi4GQAASYg5gJCBob/YD4DABTSAZcAeJx9kU1uwjAQhV/4qwpqhdSqi67cTTeVEmBXDgBbhBD7AHYISuLUMSD2PUdP0HNwjp6i676k3qQS9Ujjb968mYUNoI8zPJTHw02Vy9PAFatfbpLuHbfIT47b6MF33KH+6riLF0wc93CHN27wWtdUHvHuuIFbfDhuUv903CKfHbfxgC/HHerfjrtYen3HPTx7ambiIl0YKQ+xPM5ltE9CU9NqxVKaItaZGPqDmj6VmTShlRuxOoniEI2sVUIZnYqJzqxMEi1yo3dybf2ttfk4CJTT/bVOMYNBjAIpFiTJOLCWOGLOHGGPBCE7l32XO0tmw04MjQwCQ7774B//lDmrZkJY3hvOrHBiLuiJMKJqoVgrejQ3CP5Yubt0JwxNJa96Oypr6j621VSOMQKG+uP36eKmHylcb0MAeJxtwdEOgjAMBdBeWEFR/Mdl7bTJtMsygc/nwVfPoYF+QP+tGDAigDFhxgVXLLjhjhUPCtmKTtmLaGN7x6dy/Io5bybqoevRQ3LRObb0sk3HKpn1SFqW6ru26vbpYfcmRCccJhqsAAA=") - format("woff"); -} - -.token.treeview-part .entry-name:before { - content: "\ea01"; - font-family: "PrismTreeview"; - font-size: inherit; - font-style: normal; - -webkit-font-smoothing: antialiased; - -moz-osx-font-smoothing: grayscale; - width: 2.5ex; - display: inline-block; -} - -.token.treeview-part .entry-name.dir:before { - content: "\ea02"; -} -.token.treeview-part .entry-name.ext-bmp:before, -.token.treeview-part .entry-name.ext-eps:before, -.token.treeview-part .entry-name.ext-gif:before, -.token.treeview-part .entry-name.ext-jpe:before, -.token.treeview-part .entry-name.ext-jpg:before, -.token.treeview-part .entry-name.ext-jpeg:before, -.token.treeview-part .entry-name.ext-png:before, -.token.treeview-part .entry-name.ext-svg:before, -.token.treeview-part .entry-name.ext-tiff:before { - content: "\ea03"; -} -.token.treeview-part .entry-name.ext-cfg:before, -.token.treeview-part .entry-name.ext-conf:before, -.token.treeview-part .entry-name.ext-config:before, -.token.treeview-part .entry-name.ext-csv:before, -.token.treeview-part .entry-name.ext-ini:before, -.token.treeview-part .entry-name.ext-log:before, -.token.treeview-part .entry-name.ext-md:before, -.token.treeview-part .entry-name.ext-nfo:before, -.token.treeview-part .entry-name.ext-txt:before { - content: "\ea06"; -} -.token.treeview-part .entry-name.ext-asp:before, -.token.treeview-part .entry-name.ext-aspx:before, -.token.treeview-part .entry-name.ext-c:before, -.token.treeview-part .entry-name.ext-cc:before, -.token.treeview-part .entry-name.ext-cpp:before, -.token.treeview-part .entry-name.ext-cs:before, -.token.treeview-part .entry-name.ext-css:before, -.token.treeview-part .entry-name.ext-h:before, -.token.treeview-part .entry-name.ext-hh:before, -.token.treeview-part .entry-name.ext-htm:before, -.token.treeview-part .entry-name.ext-html:before, -.token.treeview-part .entry-name.ext-jav:before, -.token.treeview-part .entry-name.ext-java:before, -.token.treeview-part .entry-name.ext-js:before, -.token.treeview-part .entry-name.ext-php:before, -.token.treeview-part .entry-name.ext-rb:before, -.token.treeview-part .entry-name.ext-xml:before { - content: "\ea07"; -} -.token.treeview-part .entry-name.ext-7z:before, -.token.treeview-part .entry-name.ext-bz:before, -.token.treeview-part .entry-name.ext-bz2:before, -.token.treeview-part .entry-name.ext-gz:before, -.token.treeview-part .entry-name.ext-rar:before, -.token.treeview-part .entry-name.ext-tar:before, -.token.treeview-part .entry-name.ext-tgz:before, -.token.treeview-part .entry-name.ext-zip:before { - content: "\ea08"; -} -.token.treeview-part .entry-name.ext-aac:before, -.token.treeview-part .entry-name.ext-au:before, -.token.treeview-part .entry-name.ext-cda:before, -.token.treeview-part .entry-name.ext-flac:before, -.token.treeview-part .entry-name.ext-mp3:before, -.token.treeview-part .entry-name.ext-oga:before, -.token.treeview-part .entry-name.ext-ogg:before, -.token.treeview-part .entry-name.ext-wav:before, -.token.treeview-part .entry-name.ext-wma:before { - content: "\ea04"; -} -.token.treeview-part .entry-name.ext-avi:before, -.token.treeview-part .entry-name.ext-flv:before, -.token.treeview-part .entry-name.ext-mkv:before, -.token.treeview-part .entry-name.ext-mov:before, -.token.treeview-part .entry-name.ext-mp4:before, -.token.treeview-part .entry-name.ext-mpeg:before, -.token.treeview-part .entry-name.ext-mpg:before, -.token.treeview-part .entry-name.ext-ogv:before, -.token.treeview-part .entry-name.ext-webm:before { - content: "\ea05"; -} -.token.treeview-part .entry-name.ext-pdf:before { - content: "\ea09"; -} -.token.treeview-part .entry-name.ext-xls:before, -.token.treeview-part .entry-name.ext-xlsx:before { - content: "\ea0a"; -} -.token.treeview-part .entry-name.ext-doc:before, -.token.treeview-part .entry-name.ext-docm:before, -.token.treeview-part .entry-name.ext-docx:before { - content: "\ea0c"; -} -.token.treeview-part .entry-name.ext-pps:before, -.token.treeview-part .entry-name.ext-ppt:before, -.token.treeview-part .entry-name.ext-pptx:before { - content: "\ea0b"; -} diff --git a/plugins/treeview/prism-treeview.js b/plugins/treeview/prism-treeview.js deleted file mode 100644 index 945668320a..0000000000 --- a/plugins/treeview/prism-treeview.js +++ /dev/null @@ -1,70 +0,0 @@ -(function () { - - if (typeof Prism === 'undefined') { - return; - } - - Prism.languages.treeview = { - 'treeview-part': { - pattern: /^.+/m, - inside: { - 'entry-line': [ - { - pattern: /\|-- |├── /, - alias: 'line-h' - }, - { - pattern: /\| {3}|│ {3}/, - alias: 'line-v' - }, - { - pattern: /`-- |└── /, - alias: 'line-v-last' - }, - { - pattern: / {4}/, - alias: 'line-v-gap' - } - ], - 'entry-name': { - pattern: /.*\S.*/, - inside: { - // symlink - 'operator': / -> /, - } - } - } - } - }; - - Prism.hooks.add('wrap', function (env) { - if (env.language === 'treeview' && env.type === 'entry-name') { - var classes = env.classes; - - var folderPattern = /(^|[^\\])\/\s*$/; - if (folderPattern.test(env.content)) { - // folder - - // remove trailing / - env.content = env.content.replace(folderPattern, '$1'); - classes.push('dir'); - } else { - // file - - // remove trailing file marker - env.content = env.content.replace(/(^|[^\\])[=*|]\s*$/, '$1'); - - var parts = env.content.toLowerCase().replace(/\s+/g, '').split('.'); - while (parts.length > 1) { - parts.shift(); - // Ex. 'foo.min.js' would become 'foo.min.js' - classes.push('ext-' + parts.join('-')); - } - } - - if (env.content[0] === '.') { - classes.push('dotfile'); - } - } - }); -}()); diff --git a/plugins/treeview/prism-treeview.min.css b/plugins/treeview/prism-treeview.min.css deleted file mode 100644 index 9856725d67..0000000000 --- a/plugins/treeview/prism-treeview.min.css +++ /dev/null @@ -1 +0,0 @@ -.token.treeview-part .entry-line{position:relative;text-indent:-99em;display:inline-block;vertical-align:top;width:1.2em}.token.treeview-part .entry-line:before,.token.treeview-part .line-h:after{content:"";position:absolute;top:0;left:50%;width:50%;height:100%}.token.treeview-part .line-h:before,.token.treeview-part .line-v:before{border-left:1px solid #ccc}.token.treeview-part .line-v-last:before{height:50%;border-left:1px solid #ccc;border-bottom:1px solid #ccc}.token.treeview-part .line-h:after{height:50%;border-bottom:1px solid #ccc}.token.treeview-part .entry-name{position:relative;display:inline-block;vertical-align:top}.token.treeview-part .entry-name.dotfile{opacity:.5}@font-face{font-family:PrismTreeview;src:url(data:application/font-woff;base64,d09GRgABAAAAAAgYAAsAAAAAEGAAAQAAAAAAAAAAAAAAAAAAAAAAAAAAAABHU1VCAAABCAAAADsAAABUIIslek9TLzIAAAFEAAAAPwAAAFY1UkH9Y21hcAAAAYQAAAB/AAACCtvO7yxnbHlmAAACBAAAA+MAAAlACm1VqmhlYWQAAAXoAAAAKgAAADZfxj5jaGhlYQAABhQAAAAYAAAAJAFbAMFobXR4AAAGLAAAAA4AAAA0CGQAAGxvY2EAAAY8AAAAHAAAABwM9A9CbWF4cAAABlgAAAAfAAAAIAEgAHZuYW1lAAAGeAAAATcAAAJSfUrk+HBvc3QAAAewAAAAZgAAAIka0DSfeJxjYGRgYOBiMGCwY2BycfMJYeDLSSzJY5BiYGGAAJA8MpsxJzM9kYEDxgPKsYBpDiBmg4gCACY7BUgAeJxjYGRYyjiBgZWBgaGQoRZISkLpUAYOBj0GBiYGVmYGrCAgzTWFweEV4ysehs1ArgDDFgZGIA3CDAB2tQjAAHic7ZHLEcMwCESfLCz/VEoKSEE5parURxMOC4c0Ec283WGFdABgBXrwCAzam4bOK9KWeefM3Hhmjyn3ed+hTRq1pS7Ra/HjYGPniHcXMy4G/zNTP7/KW5HTXArkvdBW3ArN19dCG/NRIN8K5HuB/CiQn4U26VeBfBbML9NEH78AeJyVVc1u20YQ3pn905JcSgr/YsuSDTEg3cR1bFEkYyS1HQcQ2jQF2hot6vYSoECKnnPLA/SWUy9NTr31Bfp+6azsNI0SGiolzu7ODnfn+2Z2lnHG3rxhr9nfLGKbLGesncAYYnUHpsVnMG/uwyzNdFIVd6HI6twp8+R3LpT4TSglLoTHwwJgG2/dFvKrl9yI507/p5CCq4LTxB/PlPjkFaMHnWB/0S9je7RTPS+utnGtom1T2q5pk/e3H0M1S18rsXAL7wgpxQuhAmteGGvNjmcfGXuwnFNOPCXxeOGmnjrBLWNyBeNtVq2Hs03yus1aPS3mzSyNVSfu588iW1Q93x/4fjcHn+5EkS2tMxr4xIRa8ese+4L9uKZnxEqs8+ldyN9atU02a5t5uQ8hZGms1QTKpaKYqnipiNNOAIeIADC0JNEOYY+jtSgFoOchiAjRGFACpUTRje8bwIYWGCDEgENY8MEu9bnCYCdAxftoNg0KiSpUtPaHcanYwzXRu6T4r40b5npal3V7UHWCPJW9niyl1vIHgoujEXZjudBkeWkOeMQBRmbEPhKzij1i52t6/TadL+3q7H0U1eq4E8cG4gIIwQLx8VX7ToPXgPrehVc5QXHR7gMSmwjKfaYAP4KvZV+yn9bE18y2IY37LvtyrSg3i7ZK++B603ndlg/gBJpZRsfpBI6hyiaQ6FjlnThz8lAC3LgBIMnXDOAXxBQ4SIgiEhx2AcGCAwAhwjXRpCQms42bwAUt75BvAwgONzdgOfWEwzk4Ylzj4mz+5YEzzXzWX9aNlk7ot65y5QnBHsNlm6zDTu7sspRqG4V+fgJ1lVBZ07Nm7s5nemo3Lf3PO7iwtnroQ5/YDGwPRUip6fV6L+27p+wCHwSvPs85UnHqId8NAn5IBsKdv95KrL9m31Gsf2a/rluDslk1y1J9GE+LUmmVT/OyOHaFKGnapt2H5XeJTmKd6qYNoVVZOy+pWzr7rMip3ndG/4mQSoUcMbAqG/YNIAdXhkAqTVruXhocSKN0iS4Rwj7vSS4fcF/La07BfeQSuRAcFeW+9igjwPhhYPpGCBCBHhxiKMyFMFT7ziRH7RtfIWdiha+TdW+Rqs7bLHdN2ZJIKl0um0x3op9saYr0REeRdj09pl43pMzz4tjztrY8L4o8bzT+oLY27PR/eFtXs/YY5vtwB5Iqad14eYN0ujveMaGWqkdU3TKbQSC5Uvxaf4fA7SAQ3r2tEfIhd4duld91bwMisjqBw22orthNcroXl7KqO1329HBgAexgoCfGAwiDPoBnriki3lmNojrzvD0tjo6E3vPYP6E2BMIAeJxjYGRgYADiY8t3FsTz23xl4GbYzIAB/v9nWM6wBcjgYGAC8QH+QQhZAAB4nGNgZGBg2MzAACeXMzAyoAJeADPyAh14nGNgAILNpGEA0fgIZQAAAAAAAAA2AHIAvgE+AZgCCAKMAv4DlgPsBEYEoHicY2BkYGDgZchi4GQAASYg5gJCBob/YD4DABTSAZcAeJx9kU1uwjAQhV/4qwpqhdSqi67cTTeVEmBXDgBbhBD7AHYISuLUMSD2PUdP0HNwjp6i676k3qQS9Ujjb968mYUNoI8zPJTHw02Vy9PAFatfbpLuHbfIT47b6MF33KH+6riLF0wc93CHN27wWtdUHvHuuIFbfDhuUv903CKfHbfxgC/HHerfjrtYen3HPTx7ambiIl0YKQ+xPM5ltE9CU9NqxVKaItaZGPqDmj6VmTShlRuxOoniEI2sVUIZnYqJzqxMEi1yo3dybf2ttfk4CJTT/bVOMYNBjAIpFiTJOLCWOGLOHGGPBCE7l32XO0tmw04MjQwCQ7774B//lDmrZkJY3hvOrHBiLuiJMKJqoVgrejQ3CP5Yubt0JwxNJa96Oypr6j621VSOMQKG+uP36eKmHylcb0MAeJxtwdEOgjAMBdBeWEFR/Mdl7bTJtMsygc/nwVfPoYF+QP+tGDAigDFhxgVXLLjhjhUPCtmKTtmLaGN7x6dy/Io5bybqoevRQ3LRObb0sk3HKpn1SFqW6ru26vbpYfcmRCccJhqsAAA=) format("woff")}.token.treeview-part .entry-name:before{content:"\ea01";font-family:PrismTreeview;font-size:inherit;font-style:normal;-webkit-font-smoothing:antialiased;-moz-osx-font-smoothing:grayscale;width:2.5ex;display:inline-block}.token.treeview-part .entry-name.dir:before{content:"\ea02"}.token.treeview-part .entry-name.ext-bmp:before,.token.treeview-part .entry-name.ext-eps:before,.token.treeview-part .entry-name.ext-gif:before,.token.treeview-part .entry-name.ext-jpe:before,.token.treeview-part .entry-name.ext-jpeg:before,.token.treeview-part .entry-name.ext-jpg:before,.token.treeview-part .entry-name.ext-png:before,.token.treeview-part .entry-name.ext-svg:before,.token.treeview-part .entry-name.ext-tiff:before{content:"\ea03"}.token.treeview-part .entry-name.ext-cfg:before,.token.treeview-part .entry-name.ext-conf:before,.token.treeview-part .entry-name.ext-config:before,.token.treeview-part .entry-name.ext-csv:before,.token.treeview-part .entry-name.ext-ini:before,.token.treeview-part .entry-name.ext-log:before,.token.treeview-part .entry-name.ext-md:before,.token.treeview-part .entry-name.ext-nfo:before,.token.treeview-part .entry-name.ext-txt:before{content:"\ea06"}.token.treeview-part .entry-name.ext-asp:before,.token.treeview-part .entry-name.ext-aspx:before,.token.treeview-part .entry-name.ext-c:before,.token.treeview-part .entry-name.ext-cc:before,.token.treeview-part .entry-name.ext-cpp:before,.token.treeview-part .entry-name.ext-cs:before,.token.treeview-part .entry-name.ext-css:before,.token.treeview-part .entry-name.ext-h:before,.token.treeview-part .entry-name.ext-hh:before,.token.treeview-part .entry-name.ext-htm:before,.token.treeview-part .entry-name.ext-html:before,.token.treeview-part .entry-name.ext-jav:before,.token.treeview-part .entry-name.ext-java:before,.token.treeview-part .entry-name.ext-js:before,.token.treeview-part .entry-name.ext-php:before,.token.treeview-part .entry-name.ext-rb:before,.token.treeview-part .entry-name.ext-xml:before{content:"\ea07"}.token.treeview-part .entry-name.ext-7z:before,.token.treeview-part .entry-name.ext-bz2:before,.token.treeview-part .entry-name.ext-bz:before,.token.treeview-part .entry-name.ext-gz:before,.token.treeview-part .entry-name.ext-rar:before,.token.treeview-part .entry-name.ext-tar:before,.token.treeview-part .entry-name.ext-tgz:before,.token.treeview-part .entry-name.ext-zip:before{content:"\ea08"}.token.treeview-part .entry-name.ext-aac:before,.token.treeview-part .entry-name.ext-au:before,.token.treeview-part .entry-name.ext-cda:before,.token.treeview-part .entry-name.ext-flac:before,.token.treeview-part .entry-name.ext-mp3:before,.token.treeview-part .entry-name.ext-oga:before,.token.treeview-part .entry-name.ext-ogg:before,.token.treeview-part .entry-name.ext-wav:before,.token.treeview-part .entry-name.ext-wma:before{content:"\ea04"}.token.treeview-part .entry-name.ext-avi:before,.token.treeview-part .entry-name.ext-flv:before,.token.treeview-part .entry-name.ext-mkv:before,.token.treeview-part .entry-name.ext-mov:before,.token.treeview-part .entry-name.ext-mp4:before,.token.treeview-part .entry-name.ext-mpeg:before,.token.treeview-part .entry-name.ext-mpg:before,.token.treeview-part .entry-name.ext-ogv:before,.token.treeview-part .entry-name.ext-webm:before{content:"\ea05"}.token.treeview-part .entry-name.ext-pdf:before{content:"\ea09"}.token.treeview-part .entry-name.ext-xls:before,.token.treeview-part .entry-name.ext-xlsx:before{content:"\ea0a"}.token.treeview-part .entry-name.ext-doc:before,.token.treeview-part .entry-name.ext-docm:before,.token.treeview-part .entry-name.ext-docx:before{content:"\ea0c"}.token.treeview-part .entry-name.ext-pps:before,.token.treeview-part .entry-name.ext-ppt:before,.token.treeview-part .entry-name.ext-pptx:before{content:"\ea0b"} \ No newline at end of file diff --git a/plugins/treeview/prism-treeview.min.js b/plugins/treeview/prism-treeview.min.js deleted file mode 100644 index caf9c6d5e6..0000000000 --- a/plugins/treeview/prism-treeview.min.js +++ /dev/null @@ -1 +0,0 @@ -"undefined"!=typeof Prism&&(Prism.languages.treeview={"treeview-part":{pattern:/^.+/m,inside:{"entry-line":[{pattern:/\|-- |├── /,alias:"line-h"},{pattern:/\| {3}|│ {3}/,alias:"line-v"},{pattern:/`-- |└── /,alias:"line-v-last"},{pattern:/ {4}/,alias:"line-v-gap"}],"entry-name":{pattern:/.*\S.*/,inside:{operator:/ -> /}}}}},Prism.hooks.add("wrap",(function(e){if("treeview"===e.language&&"entry-name"===e.type){var t=e.classes,n=/(^|[^\\])\/\s*$/;if(n.test(e.content))e.content=e.content.replace(n,"$1"),t.push("dir");else{e.content=e.content.replace(/(^|[^\\])[=*|]\s*$/,"$1");for(var a=e.content.toLowerCase().replace(/\s+/g,"").split(".");a.length>1;)a.shift(),t.push("ext-"+a.join("-"))}"."===e.content[0]&&t.push("dotfile")}}))); \ No newline at end of file diff --git a/plugins/unescaped-markup/index.html b/plugins/unescaped-markup/index.html deleted file mode 100644 index c066d7cce0..0000000000 --- a/plugins/unescaped-markup/index.html +++ /dev/null @@ -1,198 +0,0 @@ - - - - - - - Unescaped markup ▲ Prism plugins - - - - - - - - - - - - -
      - -
      -

      How to use

      -

      This plugin provides several methods of achieving the same thing:

      - -
        -
      • - Instead of using <pre><code> elements, use <script type="text/plain">: - -
        <script type="text/plain" class="language-markup">
        -<p>Example</p>
        -</script>
        -
      • -
      • - Use an HTML-comment to escape your code: - -
        <pre class="language-markup"><code><!--
        -<p>Example</p>
        ---></code></pre>
        - - This will only work if the code element contains exactly one comment and nothing else (not even spaces). - E.g. <code> <!-- some text --></code> and <code>text<!-- more text --></code> will not work. -
      • -
      -
      - -
      -

      Examples

      - -

      View source to see that the following didn’t need escaping (except for </script>, that does):

      - - - -

      The next example uses the HTML-comment method:

      - -
      -
      - -
      -

      FAQ

      - -

      Why not use the HTML <template> tag?

      - -

      Because it is a PITA to get its textContent and needs to be pointlessly cloned. - Feel free to implement it yourself and send a pull request though, if you are so inclined.

      - -

      Can I use this inline?

      - -

      Not out of the box, because I figured it’s more of a hassle to type <script type="text/plain"> than escape the 1-2 < characters you need to escape in inline code. - Also inline code is not as frequently copy-pasted, which was the major source of annoyance that got me to write this plugin.

      -
      - -
      - - - - - - - - - diff --git a/plugins/unescaped-markup/prism-unescaped-markup.css b/plugins/unescaped-markup/prism-unescaped-markup.css deleted file mode 100644 index 3ba2a1e699..0000000000 --- a/plugins/unescaped-markup/prism-unescaped-markup.css +++ /dev/null @@ -1,10 +0,0 @@ -/* Fallback, in case JS does not run, to ensure the code is at least visible */ -[class*='lang-'] script[type='text/plain'], -[class*='language-'] script[type='text/plain'], -script[type='text/plain'][class*='lang-'], -script[type='text/plain'][class*='language-'] { - display: block; - font: 100% Consolas, Monaco, monospace; - white-space: pre; - overflow: auto; -} diff --git a/plugins/unescaped-markup/prism-unescaped-markup.js b/plugins/unescaped-markup/prism-unescaped-markup.js deleted file mode 100644 index 03dc4b15e1..0000000000 --- a/plugins/unescaped-markup/prism-unescaped-markup.js +++ /dev/null @@ -1,62 +0,0 @@ -(function () { - - if (typeof Prism === 'undefined' || typeof document === 'undefined') { - return; - } - - // https://developer.mozilla.org/en-US/docs/Web/API/Element/matches#Polyfill - if (!Element.prototype.matches) { - Element.prototype.matches = Element.prototype.msMatchesSelector || Element.prototype.webkitMatchesSelector; - } - - - Prism.plugins.UnescapedMarkup = true; - - Prism.hooks.add('before-highlightall', function (env) { - env.selector += ', [class*="lang-"] script[type="text/plain"]' - + ', [class*="language-"] script[type="text/plain"]' - + ', script[type="text/plain"][class*="lang-"]' - + ', script[type="text/plain"][class*="language-"]'; - }); - - Prism.hooks.add('before-sanity-check', function (env) { - /** @type {HTMLElement} */ - var element = env.element; - - if (element.matches('script[type="text/plain"]')) { - // found a - - - - - - -
      - -
      -

      How to use

      - -

      No setup required, just include the plugin in your download and you’re good to go!

      - -

      Tokens that currently link to documentation:

      - -
        -
      • HTML, MathML and SVG tags
      • -
      • HTML, MathML and SVG non-namespaced attributes
      • -
      • (Non-prefixed) CSS properties
      • -
      • (Non-prefixed) CSS @rules
      • -
      • (Non-prefixed) CSS pseudo-classes
      • -
      • (Non-prefixed) CSS pseudo-elements (starting with ::)
      • -
      - -

      Beta: This plugin is still in beta. Please help make it better: Test it and report any false positives etc!

      -
      - -
      -

      Examples

      - -

      CSS

      -
      
      -	
      
      -
      -	

      HTML

      -
      
      -
      -	

      SVG

      -
      
      -
      - -
      - - - - - - - - - diff --git a/plugins/wpd/prism-wpd.css b/plugins/wpd/prism-wpd.css deleted file mode 100644 index 43b7165a86..0000000000 --- a/plugins/wpd/prism-wpd.css +++ /dev/null @@ -1,11 +0,0 @@ -code[class*="language-"] a[href], -pre[class*="language-"] a[href] { - cursor: help; - text-decoration: none; -} - -code[class*="language-"] a[href]:hover, -pre[class*="language-"] a[href]:hover { - cursor: help; - text-decoration: underline; -} \ No newline at end of file diff --git a/plugins/wpd/prism-wpd.js b/plugins/wpd/prism-wpd.js deleted file mode 100644 index 6872638e46..0000000000 --- a/plugins/wpd/prism-wpd.js +++ /dev/null @@ -1,154 +0,0 @@ -(function () { - - if (typeof Prism === 'undefined') { - return; - } - - if (Prism.languages.css) { - // check whether the selector is an advanced pattern before extending it - if (Prism.languages.css.selector.pattern) { - Prism.languages.css.selector.inside['pseudo-class'] = /:[\w-]+/; - Prism.languages.css.selector.inside['pseudo-element'] = /::[\w-]+/; - } else { - Prism.languages.css.selector = { - pattern: Prism.languages.css.selector, - inside: { - 'pseudo-class': /:[\w-]+/, - 'pseudo-element': /::[\w-]+/ - } - }; - } - } - - if (Prism.languages.markup) { - Prism.languages.markup.tag.inside.tag.inside['tag-id'] = /[\w-]+/; - - var Tags = { - HTML: { - 'a': 1, 'abbr': 1, 'acronym': 1, 'b': 1, 'basefont': 1, 'bdo': 1, 'big': 1, 'blink': 1, 'cite': 1, 'code': 1, 'dfn': 1, 'em': 1, 'kbd': 1, 'i': 1, - 'rp': 1, 'rt': 1, 'ruby': 1, 's': 1, 'samp': 1, 'small': 1, 'spacer': 1, 'strike': 1, 'strong': 1, 'sub': 1, 'sup': 1, 'time': 1, 'tt': 1, 'u': 1, - 'var': 1, 'wbr': 1, 'noframes': 1, 'summary': 1, 'command': 1, 'dt': 1, 'dd': 1, 'figure': 1, 'figcaption': 1, 'center': 1, 'section': 1, 'nav': 1, - 'article': 1, 'aside': 1, 'hgroup': 1, 'header': 1, 'footer': 1, 'address': 1, 'noscript': 1, 'isIndex': 1, 'main': 1, 'mark': 1, 'marquee': 1, - 'meter': 1, 'menu': 1 - }, - SVG: { - 'animateColor': 1, 'animateMotion': 1, 'animateTransform': 1, 'glyph': 1, 'feBlend': 1, 'feColorMatrix': 1, 'feComponentTransfer': 1, - 'feFuncR': 1, 'feFuncG': 1, 'feFuncB': 1, 'feFuncA': 1, 'feComposite': 1, 'feConvolveMatrix': 1, 'feDiffuseLighting': 1, 'feDisplacementMap': 1, - 'feFlood': 1, 'feGaussianBlur': 1, 'feImage': 1, 'feMerge': 1, 'feMergeNode': 1, 'feMorphology': 1, 'feOffset': 1, 'feSpecularLighting': 1, - 'feTile': 1, 'feTurbulence': 1, 'feDistantLight': 1, 'fePointLight': 1, 'feSpotLight': 1, 'linearGradient': 1, 'radialGradient': 1, 'altGlyph': 1, - 'textPath': 1, 'tref': 1, 'altglyph': 1, 'textpath': 1, 'altglyphdef': 1, 'altglyphitem': 1, 'clipPath': 1, 'color-profile': 1, 'cursor': 1, - 'font-face': 1, 'font-face-format': 1, 'font-face-name': 1, 'font-face-src': 1, 'font-face-uri': 1, 'foreignObject': 1, 'glyphRef': 1, - 'hkern': 1, 'vkern': 1 - }, - MathML: {} - }; - } - - var language; - - Prism.hooks.add('wrap', function (env) { - if ((env.type == 'tag-id' - || (env.type == 'property' && env.content.indexOf('-') != 0) - || (env.type == 'rule' && env.content.indexOf('@-') != 0) - || (env.type == 'pseudo-class' && env.content.indexOf(':-') != 0) - || (env.type == 'pseudo-element' && env.content.indexOf('::-') != 0) - || (env.type == 'attr-name' && env.content.indexOf('data-') != 0) - ) && env.content.indexOf('<') === -1 - ) { - if (env.language == 'css' - || env.language == 'scss' - || env.language == 'markup' - ) { - var href = 'https://webplatform.github.io/docs/'; - var content = env.content; - - if (env.language == 'css' || env.language == 'scss') { - href += 'css/'; - - if (env.type == 'property') { - href += 'properties/'; - } else if (env.type == 'rule') { - href += 'atrules/'; - content = content.substring(1); - } else if (env.type == 'pseudo-class') { - href += 'selectors/pseudo-classes/'; - content = content.substring(1); - } else if (env.type == 'pseudo-element') { - href += 'selectors/pseudo-elements/'; - content = content.substring(2); - } - } else if (env.language == 'markup') { - if (env.type == 'tag-id') { - // Check language - language = getLanguage(env.content) || language; - - if (language) { - href += language + '/elements/'; - } else { - return; // Abort - } - } else if (env.type == 'attr-name') { - if (language) { - href += language + '/attributes/'; - } else { - return; // Abort - } - } - } - - href += content; - env.tag = 'a'; - env.attributes.href = href; - env.attributes.target = '_blank'; - } - } - }); - - function getLanguage(tag) { - var tagL = tag.toLowerCase(); - - if (Tags.HTML[tagL]) { - return 'html'; - } else if (Tags.SVG[tag]) { - return 'svg'; - } else if (Tags.MathML[tag]) { - return 'mathml'; - } - - // Not in dictionary, perform check - if (Tags.HTML[tagL] !== 0 && typeof document !== 'undefined') { - var htmlInterface = (document.createElement(tag).toString().match(/\[object HTML(.+)Element\]/) || [])[1]; - - if (htmlInterface && htmlInterface != 'Unknown') { - Tags.HTML[tagL] = 1; - return 'html'; - } - } - - Tags.HTML[tagL] = 0; - - if (Tags.SVG[tag] !== 0 && typeof document !== 'undefined') { - var svgInterface = (document.createElementNS('http://www.w3.org/2000/svg', tag).toString().match(/\[object SVG(.+)Element\]/) || [])[1]; - - if (svgInterface && svgInterface != 'Unknown') { - Tags.SVG[tag] = 1; - return 'svg'; - } - } - - Tags.SVG[tag] = 0; - - // Lame way to detect MathML, but browsers don’t expose interface names there :( - if (Tags.MathML[tag] !== 0) { - if (tag.indexOf('m') === 0) { - Tags.MathML[tag] = 1; - return 'mathml'; - } - } - - Tags.MathML[tag] = 0; - - return null; - } - -}()); diff --git a/plugins/wpd/prism-wpd.min.css b/plugins/wpd/prism-wpd.min.css deleted file mode 100644 index 43b0cf6112..0000000000 --- a/plugins/wpd/prism-wpd.min.css +++ /dev/null @@ -1 +0,0 @@ -code[class*=language-] a[href],pre[class*=language-] a[href]{cursor:help;text-decoration:none}code[class*=language-] a[href]:hover,pre[class*=language-] a[href]:hover{cursor:help;text-decoration:underline} \ No newline at end of file diff --git a/plugins/wpd/prism-wpd.min.js b/plugins/wpd/prism-wpd.min.js deleted file mode 100644 index c88b653526..0000000000 --- a/plugins/wpd/prism-wpd.min.js +++ /dev/null @@ -1 +0,0 @@ -!function(){if("undefined"!=typeof Prism){if(Prism.languages.css&&(Prism.languages.css.selector.pattern?(Prism.languages.css.selector.inside["pseudo-class"]=/:[\w-]+/,Prism.languages.css.selector.inside["pseudo-element"]=/::[\w-]+/):Prism.languages.css.selector={pattern:Prism.languages.css.selector,inside:{"pseudo-class":/:[\w-]+/,"pseudo-element":/::[\w-]+/}}),Prism.languages.markup){Prism.languages.markup.tag.inside.tag.inside["tag-id"]=/[\w-]+/;var e={HTML:{a:1,abbr:1,acronym:1,b:1,basefont:1,bdo:1,big:1,blink:1,cite:1,code:1,dfn:1,em:1,kbd:1,i:1,rp:1,rt:1,ruby:1,s:1,samp:1,small:1,spacer:1,strike:1,strong:1,sub:1,sup:1,time:1,tt:1,u:1,var:1,wbr:1,noframes:1,summary:1,command:1,dt:1,dd:1,figure:1,figcaption:1,center:1,section:1,nav:1,article:1,aside:1,hgroup:1,header:1,footer:1,address:1,noscript:1,isIndex:1,main:1,mark:1,marquee:1,meter:1,menu:1},SVG:{animateColor:1,animateMotion:1,animateTransform:1,glyph:1,feBlend:1,feColorMatrix:1,feComponentTransfer:1,feFuncR:1,feFuncG:1,feFuncB:1,feFuncA:1,feComposite:1,feConvolveMatrix:1,feDiffuseLighting:1,feDisplacementMap:1,feFlood:1,feGaussianBlur:1,feImage:1,feMerge:1,feMergeNode:1,feMorphology:1,feOffset:1,feSpecularLighting:1,feTile:1,feTurbulence:1,feDistantLight:1,fePointLight:1,feSpotLight:1,linearGradient:1,radialGradient:1,altGlyph:1,textPath:1,tref:1,altglyph:1,textpath:1,altglyphdef:1,altglyphitem:1,clipPath:1,"color-profile":1,cursor:1,"font-face":1,"font-face-format":1,"font-face-name":1,"font-face-src":1,"font-face-uri":1,foreignObject:1,glyphRef:1,hkern:1,vkern:1},MathML:{}}}var t;Prism.hooks.add("wrap",(function(n){if(("tag-id"==n.type||"property"==n.type&&0!=n.content.indexOf("-")||"rule"==n.type&&0!=n.content.indexOf("@-")||"pseudo-class"==n.type&&0!=n.content.indexOf(":-")||"pseudo-element"==n.type&&0!=n.content.indexOf("::-")||"attr-name"==n.type&&0!=n.content.indexOf("data-"))&&-1===n.content.indexOf("<")&&("css"==n.language||"scss"==n.language||"markup"==n.language)){var a="https://webplatform.github.io/docs/",s=n.content;if("css"==n.language||"scss"==n.language)a+="css/","property"==n.type?a+="properties/":"rule"==n.type?(a+="atrules/",s=s.substring(1)):"pseudo-class"==n.type?(a+="selectors/pseudo-classes/",s=s.substring(1)):"pseudo-element"==n.type&&(a+="selectors/pseudo-elements/",s=s.substring(2));else if("markup"==n.language)if("tag-id"==n.type){if(!(t=function(t){var n=t.toLowerCase();if(e.HTML[n])return"html";if(e.SVG[t])return"svg";if(e.MathML[t])return"mathml";if(0!==e.HTML[n]&&"undefined"!=typeof document){var a=(document.createElement(t).toString().match(/\[object HTML(.+)Element\]/)||[])[1];if(a&&"Unknown"!=a)return e.HTML[n]=1,"html"}if(e.HTML[n]=0,0!==e.SVG[t]&&"undefined"!=typeof document){var s=(document.createElementNS("http://www.w3.org/2000/svg",t).toString().match(/\[object SVG(.+)Element\]/)||[])[1];if(s&&"Unknown"!=s)return e.SVG[t]=1,"svg"}return e.SVG[t]=0,0!==e.MathML[t]&&0===t.indexOf("m")?(e.MathML[t]=1,"mathml"):(e.MathML[t]=0,null)}(n.content)||t))return;a+=t+"/elements/"}else if("attr-name"==n.type){if(!t)return;a+=t+"/attributes/"}a+=s,n.tag="a",n.attributes.href=a,n.attributes.target="_blank"}}))}}(); \ No newline at end of file diff --git a/prism.js b/prism.js deleted file mode 100644 index 4b9c9a0f8a..0000000000 --- a/prism.js +++ /dev/null @@ -1,1946 +0,0 @@ - -/* ********************************************** - Begin prism-core.js -********************************************** */ - -/// - -var _self = (typeof window !== 'undefined') - ? window // if in browser - : ( - (typeof WorkerGlobalScope !== 'undefined' && self instanceof WorkerGlobalScope) - ? self // if in worker - : {} // if in node js - ); - -/** - * Prism: Lightweight, robust, elegant syntax highlighting - * - * @license MIT - * @author Lea Verou - * @namespace - * @public - */ -var Prism = (function (_self) { - - // Private helper vars - var lang = /(?:^|\s)lang(?:uage)?-([\w-]+)(?=\s|$)/i; - var uniqueId = 0; - - // The grammar object for plaintext - var plainTextGrammar = {}; - - - var _ = { - /** - * By default, Prism will attempt to highlight all code elements (by calling {@link Prism.highlightAll}) on the - * current page after the page finished loading. This might be a problem if e.g. you wanted to asynchronously load - * additional languages or plugins yourself. - * - * By setting this value to `true`, Prism will not automatically highlight all code elements on the page. - * - * You obviously have to change this value before the automatic highlighting started. To do this, you can add an - * empty Prism object into the global scope before loading the Prism script like this: - * - * ```js - * window.Prism = window.Prism || {}; - * Prism.manual = true; - * // add a new + + + + + ``` + +- In most cases, using 1 feature is enough. However, it is possible to use both of them together if you want (Result will be like `.my-namespace--comment_93jsa`). + +## CSS Modules Usage + +The initial purpose of this plugin is to be used with CSS Modules. It works perfectly with the class map object returned by CSS Modules. For example: + +```js +import Prism from 'prismjs'; +import classMap from 'styles/editor-class-map.css'; +Prism.plugins.customClass.map(classMap) +``` + +**Note:** This plugin only affects generated token elements (usually of the form `span.token`). The classes of `code` and `pre` elements as well as all elements generated by other plugins (e.g. [Toolbar](../toolbar) elements and [line number](../line-numbers) elements) will not be changed. + + + +
      + +# Example + +## Prefix and map classes + +Input + +```html +
      
      +	var foo = 'bar';
      +
      +``` + +Options + +```js +Prism.plugins.customClass.map({ + keyword: 'special-keyword', + string: 'my-string' +}); +Prism.plugins.customClass.prefix('pr-'); +``` + +Output + +```html +
      
      +	var
      +	foo
      +	=
      +	'bar'
      +	;
      +
      +``` + +Note that this plugin only affects tokens. The classes of the `code` and `pre` elements won't be prefixed. + +## Add new classes + +Input + +```html +
      
      +a::after {
      +	content: '\2b00 ';
      +	opacity: .7;
      +}
      +
      +``` + +Options + +```js +Prism.plugins.customClass.add(({language, type, content}) => { + if (content === 'content' && type === 'property' && language === 'css') { + return 'content-property'; + } +}); +``` + +Output + +```html +
      
      +a::after
      +{
      +	content
      +	:
      +	'\2b00 '
      +	;
      +	opacity
      +	:
      +	 .7
      +	;
      +}
      +
      +``` + +
      diff --git a/src/plugins/custom-class/custom-class.js b/src/plugins/custom-class/custom-class.js new file mode 100644 index 0000000000..4dc2a610fe --- /dev/null +++ b/src/plugins/custom-class/custom-class.js @@ -0,0 +1,114 @@ +import prism from '../../global.js'; + +export class CustomClass { + /** + * @type {ClassAdder | undefined} + */ + adder; + + /** + * @type {ClassMapper | undefined} + */ + mapper; + + /** + * A prefix to add to all class names. + * + * @type {string} + * @default '' + */ + prefix = ''; + + /** + * Sets the function which can be used to add custom aliases to any token. + * + * @param {ClassAdder} classAdder + */ + add (classAdder) { + this.adder = classAdder; + } + + /** + * Maps all class names using the given object or map function. + * + * This does not affect the prefix. + * + * @param {object | ClassMapper} classMapper + */ + map (classMapper) { + if (typeof classMapper === 'function') { + this.mapper = classMapper; + } + else { + this.mapper = className => classMapper[className] || className; + } + } + + /** + * Applies the current mapping and prefix to the given class name. + * + * @param {string} className A single class name. + * @returns {string} + */ + apply (className) { + return this.prefix + (this.mapper ? this.mapper(className) : className); + } +} + +/** @type {import('../../types.d.ts').PluginProto<'custom-class'>} */ +const Self = { + id: 'custom-class', + plugin () { + return new CustomClass(); + }, + effect (Prism) { + /** @type {CustomClass} */ + const customClass = Prism.plugins.customClass; + + return Prism.hooks.add('wrap', env => { + if (customClass['adder']) { + const result = customClass['adder']({ + content: env.content, + type: env.type, + language: env.language, + }); + + if (Array.isArray(result)) { + env.classes.push(...result); + } + else if (result) { + env.classes.push(result); + } + } + + if (!customClass['mapper'] && !customClass.prefix) { + return; + } + + env.classes = env.classes.map(c => customClass.apply(c)); + }); + }, +}; + +export default Self; + +prism.components.add(Self); + +/** + * @callback ClassMapper + * @param {string} className + * @returns {string} + */ + +/** + * @callback ClassAdder + * @param {ClassAdderEnvironment} env + * @returns {undefined | string | string[]} + */ + +/** + * @typedef {object} ClassAdderEnvironment + * @property {string} language + * @property {string} type + * @property {string} content + */ diff --git a/src/plugins/data-uri-highlight/README.md b/src/plugins/data-uri-highlight/README.md new file mode 100644 index 0000000000..1e8eb3f94c --- /dev/null +++ b/src/plugins/data-uri-highlight/README.md @@ -0,0 +1,36 @@ +--- +title: Data URI Highlight +description: Highlights data-URI contents. +owner: Golmote +noCSS: true +resources: /plugins/autolinker.css +--- + +
      + +# How to use + +Data-URIs will be highlighted automatically, provided the needed grammar is loaded. The grammar to use is guessed using the MIME type information. + +
      + +
      + +# Example + +```css +div { + border: 40px solid transparent; + border-image: 33.334% url('data:image/svg+xml, \ + \ + \ + \ + \ + '); + padding: 1em; + max-width: 20em; + font: 130%/1.6 Baskerville, Palatino, serif; +} +``` + +
      diff --git a/src/plugins/data-uri-highlight/data-uri-highlight.js b/src/plugins/data-uri-highlight/data-uri-highlight.js new file mode 100644 index 0000000000..1f57c959ae --- /dev/null +++ b/src/plugins/data-uri-highlight/data-uri-highlight.js @@ -0,0 +1,47 @@ +import prism from '../../global.js'; +import { tokenizeStrings } from '../../shared/tokenize-strings.js'; + +/** @type {import('../../types.d.ts').PluginProto<'data-uri-highlight'>} */ +const Self = { + id: 'data-uri-highlight', + optional: 'diff-highlight', + effect (Prism) { + const uri = { + 'data-uri': { + pattern: + /(['"])data:[^,\/]+\/[^,]+,(?:(?!\1)[\s\S]|\\\1)+(?=\1)|^data:[^,\/]+\/[^,]+,[\s\S]+$/, + lookbehind: true, + inside: { + 'language-css': { + pattern: /(data:[^,\/]+\/(?:[^+,]+\+)?css,)[\s\S]+/, + lookbehind: true, + inside: 'css', + }, + 'language-javascript': { + pattern: /(data:[^,\/]+\/(?:[^+,]+\+)?javascript,)[\s\S]+/, + lookbehind: true, + inside: 'javascript', + }, + 'language-json': { + pattern: /(data:[^,\/]+\/(?:[^+,]+\+)?json,)[\s\S]+/, + lookbehind: true, + inside: 'json', + }, + 'language-markup': { + pattern: /(data:[^,\/]+\/(?:[^+,]+\+)?(?:html|xml),)[\s\S]+/, + lookbehind: true, + inside: 'markup', + }, + }, + }, + }; + + return Prism.hooks.add('after-tokenize', env => { + tokenizeStrings(env.tokens, code => Prism.tokenize(code, uri)); + }); + }, +}; + +export default Self; + +prism.components.add(Self); diff --git a/src/plugins/diff-highlight/README.md b/src/plugins/diff-highlight/README.md new file mode 100644 index 0000000000..f04c8a9ee0 --- /dev/null +++ b/src/plugins/diff-highlight/README.md @@ -0,0 +1,84 @@ +--- +title: Diff Highlight +description: Highlight the code inside diff blocks. +owner: RunDevelopment +require: diff +resources: /plugins/autoloader.js { type="module" } +--- + +
      + +# How to use + +Replace the `language-diff` of your code block with a `language-diff-xxxx` class to enable syntax highlighting for diff blocks. + +Optional: +You can add the `diff-highlight` class to your code block to indicate changes using the background color of a line rather than the color of the text. + +## Autoloader + +The [Autoloader plugin](../autoloader) understands the `language-diff-xxxx` format and will ensure that the language definitions for both Diff and the code language are loaded. + +
      + +
      + +# Example + +Using `class="language-diff"`: + +```diff +@@ -4,6 +4,5 @@ +- let foo = bar.baz([1, 2, 3]); +- foo = foo + 1; ++ const foo = bar.baz([1, 2, 3]) + 1; + console.log(`foo: ${foo}`); +``` + +Using `class="language-diff diff-highlight"`: + +```diff { .diff-highlight } +@@ -4,6 +4,5 @@ +- let foo = bar.baz([1, 2, 3]); +- foo = foo + 1; ++ const foo = bar.baz([1, 2, 3]) + 1; + console.log(`foo: ${foo}`); +``` + +Using `class="language-diff-javascript"`: + +```diff-javascript +@@ -4,6 +4,5 @@ +- let foo = bar.baz([1, 2, 3]); +- foo = foo + 1; ++ const foo = bar.baz([1, 2, 3]) + 1; + console.log(`foo: ${foo}`); +``` + +Using `class="language-diff-javascript diff-highlight"`: + +```diff-javascript { .diff-highlight } +@@ -4,6 +4,5 @@ +- let foo = bar.baz([1, 2, 3]); +- foo = foo + 1; ++ const foo = bar.baz([1, 2, 3]) + 1; + console.log(`foo: ${foo}`); +``` + +Using `class="language-diff-rust diff-highlight"`: +(Autoloader is used to load the Rust language definition.) + +```diff-rust { .diff-highlight } +@@ -111,6 +114,9 @@ + nasty_btree_map.insert(i, MyLeafNode(i)); + } + ++ let mut zst_btree_map: BTreeMap<(), ()> = BTreeMap::new(); ++ zst_btree_map.insert((), ()); ++ + // VecDeque + let mut vec_deque = VecDeque::new(); + vec_deque.push_back(5); +``` + +
      diff --git a/src/plugins/diff-highlight/diff-highlight.css b/src/plugins/diff-highlight/diff-highlight.css new file mode 100644 index 0000000000..44c42af20b --- /dev/null +++ b/src/plugins/diff-highlight/diff-highlight.css @@ -0,0 +1,13 @@ +pre.diff-highlight > code .token.deleted:not(.prefix), +pre > code.diff-highlight .token.deleted:not(.prefix) { + background-color: rgba(255, 0, 0, 0.1); + color: inherit; + display: block; +} + +pre.diff-highlight > code .token.inserted:not(.prefix), +pre > code.diff-highlight .token.inserted:not(.prefix) { + background-color: rgba(0, 255, 128, 0.1); + color: inherit; + display: block; +} diff --git a/src/plugins/diff-highlight/diff-highlight.js b/src/plugins/diff-highlight/diff-highlight.js new file mode 100644 index 0000000000..0f94684d65 --- /dev/null +++ b/src/plugins/diff-highlight/diff-highlight.js @@ -0,0 +1,138 @@ +import { getTextContent, Token } from '../../core/classes/token.js'; +import prism from '../../global.js'; +import diff, { PREFIXES } from '../../languages/diff.js'; + +/** @type {import('../../types.d.ts').PluginProto<'diff-highlight'>} */ +const Self = { + id: 'diff-highlight', + require: diff, + effect (Prism) { + const LANGUAGE_REGEX = /^diff-([\w-]+)/i; + + /** @param {HookEnv} env */ + const setMissingGrammar = env => { + const lang = env.language; + if (LANGUAGE_REGEX.test(lang) && !env.grammar) { + env.grammar = Prism.components.getLanguage('diff'); + } + }; + + return Prism.hooks.add({ + 'before-sanity-check': setMissingGrammar, + 'before-tokenize': setMissingGrammar, + 'after-tokenize': env => { + const langMatch = LANGUAGE_REGEX.exec(env.language); + if (!langMatch) { + return; // not a language specific diff + } + + const diffLanguage = langMatch[1]; + const diffGrammar = Prism.components.getLanguage(diffLanguage); + if (!diffGrammar) { + return; + } + + for (const token of env.tokens) { + if ( + typeof token === 'string' || + !(token.type in PREFIXES) || + !Array.isArray(token.content) + ) { + continue; + } + + const type = token.type; + let insertedPrefixes = 0; + const getPrefixToken = () => { + insertedPrefixes++; + return new Token('prefix', PREFIXES[type], /\w+/.exec(type)?.[0]); + }; + + const withoutPrefixes = token.content.filter( + t => typeof t === 'string' || t.type !== 'prefix' + ); + const prefixCount = token.content.length - withoutPrefixes.length; + + const diffTokens = Prism.tokenize(getTextContent(withoutPrefixes), diffGrammar); + + // re-insert prefixes + + // always add a prefix at the start + diffTokens.unshift(getPrefixToken()); + + const LINE_BREAK = /\r\n|\n/g; + /** + * + * @param {string} text + */ + const insertAfterLineBreakString = text => { + /** @type {TokenStream} */ + const result = []; + LINE_BREAK.lastIndex = 0; + let last = 0; + let m; + while (insertedPrefixes < prefixCount && (m = LINE_BREAK.exec(text))) { + const end = m.index + m[0].length; + result.push(text.slice(last, end)); + last = end; + result.push(getPrefixToken()); + } + + if (result.length === 0) { + return undefined; + } + + if (last < text.length) { + result.push(text.slice(last)); + } + return result; + }; + + /** + * + * @param {TokenStream} tokens + */ + const insertAfterLineBreak = tokens => { + for (let i = 0; i < tokens.length && insertedPrefixes < prefixCount; i++) { + const token = tokens[i]; + + if (typeof token === 'string') { + const inserted = insertAfterLineBreakString(token); + if (inserted) { + tokens.splice(i, 1, ...inserted); + i += inserted.length - 1; + } + } + else if (typeof token.content === 'string') { + const inserted = insertAfterLineBreakString(token.content); + if (inserted) { + token.content = inserted; + } + } + else { + insertAfterLineBreak(token.content); + } + } + }; + insertAfterLineBreak(diffTokens); + + if (insertedPrefixes < prefixCount) { + // we are missing the last prefix + diffTokens.push(getPrefixToken()); + } + + token.content = diffTokens; + } + }, + }); + }, +}; + +export default Self; + +prism.components.add(Self); + +/** + * @typedef {import('../../types.d.ts').HookEnv} HookEnv + * @typedef {import('../../types.d.ts').TokenStream} TokenStream + */ diff --git a/src/plugins/download-button/README.md b/src/plugins/download-button/README.md new file mode 100644 index 0000000000..64fbc8150f --- /dev/null +++ b/src/plugins/download-button/README.md @@ -0,0 +1,39 @@ +--- +title: Download Button +description: A button in the toolbar of a code block adding a convenient way to download a code file. +owner: Golmote +require: toolbar +noCSS: true +resources: + - /plugins/toolbar.css + - /plugins/toolbar.js { type="module" } +--- + +
      + +# How to use + +Use the `data-src` and `data-download-link` attribute on a `
      ` elements similar to [Autoloader](../autoloader), like so:
      +
      +```html
      +
      
      +```
      +
      +Optionally, the text of the button can also be customized by using a `data-download-link-label` attribute.
      +
      +```html
      +
      
      +```
      +
      +
      + +
      + +# Examples + +The plugin’s JS code: +
      
      +
      +This page:
      +
      
      +
      diff --git a/src/plugins/download-button/download-button.js b/src/plugins/download-button/download-button.js new file mode 100644 index 0000000000..d66a2f55d3 --- /dev/null +++ b/src/plugins/download-button/download-button.js @@ -0,0 +1,35 @@ +import prism from '../../global.js'; +import { getParentPre } from '../../shared/dom-util.js'; +import toolbar from '../toolbar/toolbar.js'; + +/** @type {import('../../types.d.ts').PluginProto<'download-button'>} */ +const Self = { + id: 'download-button', + require: toolbar, + effect (Prism) { + /** @type {import('../toolbar/toolbar.js').Toolbar} */ + const toolbar = Prism.plugins.toolbar; + + return toolbar.registerButton('download-file', env => { + const pre = getParentPre(env.element); + if (!pre) { + return; + } + + const src = pre.getAttribute('data-src') || pre.getAttribute('data-download-link'); + if (!src) { + return; + } + + const a = document.createElement('a'); + a.textContent = pre.getAttribute('data-download-link-label') || 'Download'; + a.setAttribute('download', ''); + a.href = src; + return a; + }); + }, +}; + +export default Self; + +prism.components.add(Self); diff --git a/src/plugins/file-highlight/README.md b/src/plugins/file-highlight/README.md new file mode 100644 index 0000000000..5d83a8444c --- /dev/null +++ b/src/plugins/file-highlight/README.md @@ -0,0 +1,59 @@ +--- +title: File Highlight +description: Fetch external files and highlight them with Prism. Used on the Prism website itself. +owner: LeaVerou +noCSS: true +resources: + - /plugins/line-numbers.css + - /plugins/line-numbers.js { type="module" } +--- + +
      + +# How to use + +Use the `data-src` attribute on empty `
      ` elements, like so:
      +
      +```
      +
      
      +```
      +
      +You don’t need to specify the language, it’s automatically determined by the file extension. If, however, the language cannot be determined from the file extension or the file extension is incorrect, you may specify a language as well (with the usual class name way).
      +
      +Use the `data-range` attribute to display only a selected range of lines from the file, like so:
      +
      +```
      +
      
      +```
      +
      +Lines start at 1, so `"1,5"` will display line 1 up to and including line 5. It's also possible to specify just a single line (e.g. `"5"` for just line 5) and open ranges (e.g. `"3,"` for all lines starting at line 3). Negative integers can be used to specify the n-th last line, e.g. `-2` for the second last line.
      +
      +When `data-range` is used in conjunction with the [Line Numbers plugin](../line-numbers), this plugin will add the proper `data-start` according to the specified range. This behavior can be overridden by setting the `data-start` attribute manually.
      +
      +Please note that the files are fetched with XMLHttpRequest. This means that if the file is on a different origin, fetching it will fail, unless CORS is enabled on that website.
      +
      +
      + +
      + +# Examples + +The plugin’s JS code: + +
      
      +
      +This page:
      +
      +
      
      +
      +File that doesn’t exist:
      +
      +
      
      +
      +With line numbers, and `data-range="12,111"`:
      +
      +
      
      +
      +For more examples, browse around the Prism website. Most large code samples are actually files fetched with this plugin.
      +
      +
      diff --git a/src/plugins/file-highlight/file-highlight.js b/src/plugins/file-highlight/file-highlight.js new file mode 100644 index 0000000000..e90763d03e --- /dev/null +++ b/src/plugins/file-highlight/file-highlight.js @@ -0,0 +1,235 @@ +import prism from '../../global.js'; +import { setLanguage } from '../../shared/dom-util.js'; + +/** + * + * @param {number} status + * @param {string} message + * @returns {string} + */ +const FAILURE_MESSAGE = (status, message) => { + return `✖ Error ${status} while fetching file: ${message}`; +}; +const LOADING_MESSAGE = 'Loading…'; +const FAILURE_EMPTY_MESSAGE = '✖ Error: File does not exist or is empty'; + +/** + * Loads the given file. + * + * @param {string} src The URL or path of the source file to load. + * @param {(result: string) => void} success + * @param {(reason: string) => void} error + */ +function loadFile (src, success, error) { + const xhr = new XMLHttpRequest(); + xhr.open('GET', src, true); + xhr.onreadystatechange = function () { + if (xhr.readyState === 4) { + if (xhr.status < 400 && xhr.responseText) { + success(xhr.responseText); + } + else { + if (xhr.status >= 400) { + error(FAILURE_MESSAGE(xhr.status, xhr.statusText)); + } + else { + error(FAILURE_EMPTY_MESSAGE); + } + } + } + }; + xhr.send(null); +} + +const EXTENSIONS = { + 'js': 'javascript', + 'py': 'python', + 'rb': 'ruby', + 'ps1': 'powershell', + 'psm1': 'powershell', + 'sh': 'bash', + 'bat': 'batch', + 'h': 'c', + 'tex': 'latex', +}; + +const STATUS_ATTR = 'data-src-status'; +const STATUS_LOADING = 'loading'; +const STATUS_LOADED = 'loaded'; +const STATUS_FAILED = 'failed'; + +const SELECTOR = + 'pre[data-src]:not([' + + STATUS_ATTR + + '="' + + STATUS_LOADED + + '"])' + + ':not([' + + STATUS_ATTR + + '="' + + STATUS_LOADING + + '"])'; + +export class FileHighlight { + /** + * @param {Prism} Prism + */ + Prism; + + /** + * @package + * @param {Prism} Prism + */ + constructor (Prism) { + this.Prism = Prism; + } + + /** + * Executes the File Highlight plugin for all matching `pre` elements under the given container. + * + * Note: Elements which are already loaded or currently loading will not be touched by this method. + * + * @param {ParentNode} [container=document] Defaults to `document`. + */ + highlight (container = document) { + const elements = container.querySelectorAll(SELECTOR); + + for (const element of elements) { + this.Prism.highlightElement(element); + } + } +} + +/** @type {import('../../types.d.ts').PluginProto<'file-highlight'>} */ +const Self = { + id: 'file-highlight', + plugin (Prism) { + return new FileHighlight(Prism); + }, + effect (Prism) { + /** + * Parses the given range. + * + * This returns a range with inclusive ends. + * + * @param {string | null | undefined} range + * @returns {Array | undefined} + */ + function parseRange (range) { + const m = /^\s*(\d+)\s*(?:(,)\s*(?:(\d+)\s*)?)?$/.exec(range || ''); + if (m) { + const start = Number(m[1]); + const comma = m[2]; + const end = m[3]; + + if (!comma) { + return [start, start]; + } + if (!end) { + return [start, undefined]; + } + return [start, Number(end)]; + } + return undefined; + } + + return Prism.hooks.add({ + 'before-highlightall': env => { + env.selector += ', ' + SELECTOR; + }, + 'before-sanity-check': env => { + /** @type {HTMLPreElement} */ + const pre = env.element; + + if (!pre.matches(SELECTOR)) { + return; + } + + const src = pre.getAttribute('data-src'); + if (!src) { + return; + } + + env.code = ''; // fast-path the whole thing and go to complete + + pre.setAttribute(STATUS_ATTR, STATUS_LOADING); // mark as loading + + // add code element with loading message + const code = pre.appendChild(document.createElement('CODE')); + code.textContent = LOADING_MESSAGE; + + let language = env.language; + if (language === 'none') { + // the language might be 'none' because there is no language set; + // in this case, we want to use the extension as the language + const extension = /\.(\w+)$/.exec(src)?.[1] || 'none'; + language = EXTENSIONS[extension] || extension; + } + + // set language classes + setLanguage(code, language); + setLanguage(pre, language); + + // preload the language + /** @type {import('../autoloader/autoloader.js').Autoloader} */ + const autoloader = Prism.plugins.autoloader; + if (autoloader) { + autoloader.preloadLanguages(language); + } + + // load file + loadFile( + src, + text => { + // mark as loaded + pre.setAttribute(STATUS_ATTR, STATUS_LOADED); + + // handle data-range + const range = parseRange(pre.getAttribute('data-range')); + if (range) { + const lines = text.split(/\r\n?|\n/); + + // the range is one-based and inclusive on both ends + let start = range[0]; + let end = range[1] == null ? lines.length : range[1]; + + if (start < 0) { + start += lines.length; + } + start = Math.max(0, Math.min(start - 1, lines.length)); + if (end < 0) { + end += lines.length; + } + end = Math.max(0, Math.min(end, lines.length)); + + text = lines.slice(start, end).join('\n'); + + // add data-start for line numbers + if (!pre.hasAttribute('data-start')) { + pre.setAttribute('data-start', String(start + 1)); + } + } + + // highlight code + code.textContent = text; + Prism.highlightElement(code); + }, + error => { + // mark as failed + pre.setAttribute(STATUS_ATTR, STATUS_FAILED); + + code.textContent = error; + } + ); + }, + }); + }, +}; + +export default Self; + +prism.components.add(Self); + +/** + * @typedef {import('../../core.js').Prism} Prism + */ diff --git a/src/plugins/filter-highlight-all/README.md b/src/plugins/filter-highlight-all/README.md new file mode 100644 index 0000000000..96c1aa400e --- /dev/null +++ b/src/plugins/filter-highlight-all/README.md @@ -0,0 +1,107 @@ +--- +title: Filter highlightAll +description: Filters the elements the `highlightAll` and `highlightAllUnder` methods actually highlight. +owner: RunDevelopment +noCSS: true +resources: + - /languages/typescript.js { type="module" } + - ./demo.js { defer } +--- + + + +
      + +# How to use + +Filter highlightAll provides you with ways to filter the element the `highlightAll` and `highlightAllUnder` methods actually highlight. This can be very useful when you use Prism's automatic highlighting when loading the page but want to exclude certain code blocks. + +
      + +
      + +# API + +In `Prism.plugins.filterHighlightAll` you can find the following: + +`add(condition: (value: { element, language: string }) => boolean): void` + +: Adds a new filter which will only allow an element to be highlighted if the given function returns `true` for that element. +This can be used to define a custom language filter. + +`addSelector(selector: string): void` + +: Adds a new filter which will only allow an element to be highlighted if the element matches the given CSS selector. + +`reject.add(condition: (value: { element, language: string }) => boolean): void` + +: Same as `add`, but only elements which do **not** fulfill the condition will be highlighted. + +`reject.addSelector(selector: string): void` + +: Same as `addSelector`, but only elements which do **not** match the selector will be highlighted. + +`filterKnown: boolean = false` + +: Set this to `true` to only allow known languages. Code blocks without a set language or an unknown language will not be highlighted. + +An element will only be highlighted by the `highlightAll` and `highlightAllUnder` methods if all of the above accept the element. + +## Attributes + +You can also add the following `data-*`{ .language-none } attributes to the script which contains the Filter highlightAll plugin. + +` + + + +``` + +And later in your HTML: + +```html + +
      
      +
      +
      +
      
      +```
      +
      +Finally, unlike like the [File Highlight](../file-highlight) plugin, you _do_ need to supply the appropriate `class` with the language to highlight. This could have been auto-detected, but since you're not actually linking to a file it's not always possible (see below in the example using GitHub status). Furthermore, if you're linking to files with a `.xaml` extension for example, this plugin then needs to somehow map that to highlight as `markup`, which just means more bloat. You know what you're trying to highlight, just say so. 🙂
      +
      +## Caveat for Gists
      +
      +There's a bit of a catch with gists, as they can actually contain multiple files. There are two options to handle this:
      +
      +1. If your gist only contains one file, you don't need to to anything; the one and only file will automatically be chosen and highlighted
      +2. If your file contains multiple files, the first one will be chosen by default. However, you can supply the filename in the `data-filename` attribute, and this file will be highlighted instead:
      +
      +```html
      +
      
      +```
      +
      +
      + +
      + +# Examples + +The plugin’s JS code (from GitHub): + +
      
      +
      +GitHub Gist (gist contains a single file, automatically selected):
      +
      +
      
      +
      +GitHub Gist (gist contains a multiple files, file to load specified):
      +
      +
      
      +
      +Bitbucket API:
      +
      +
      
      +
      +Custom adapter (JSON.stringify showing the GitHub REST API for [Prism's repository](https://api.github.com/repos/PrismJS/prism)):
      +
      +
      
      +
      +Registered adapter (as above, but without explicitly declaring the `data-adapter` attribute):
      +
      +
      
      +
      +
      diff --git a/src/plugins/jsonp-highlight/demo.js b/src/plugins/jsonp-highlight/demo.js new file mode 100644 index 0000000000..6a23863938 --- /dev/null +++ b/src/plugins/jsonp-highlight/demo.js @@ -0,0 +1,7 @@ +function dump_json (x) { + return `using dump_json: ${JSON.stringify(x, null, 2)}`; +} + +Prism.plugins.jsonphighlight.registerAdapter( + x => `using registerAdapter: ${JSON.stringify(x, null, 2)}` +); diff --git a/src/plugins/jsonp-highlight/jsonp-highlight.js b/src/plugins/jsonp-highlight/jsonp-highlight.js new file mode 100644 index 0000000000..b3d82e709f --- /dev/null +++ b/src/plugins/jsonp-highlight/jsonp-highlight.js @@ -0,0 +1,371 @@ +import prism from '../../global.js'; + +function getGlobal () { + return typeof window === 'object' ? window : {}; +} + +let jsonpCallbackCounter = 0; + +/** + * Makes a JSONP request. + * + * @param {string} src The URL of the resource to request. + * @param {string | undefined | null} callbackParameter The name of the callback parameter. If falsy, `"callback"` will be used. + * @param {number} timeout + * @param {(data: any) => void} onSuccess + * @param {(reason: 'timeout' | 'network') => void} onError + * @returns {void} + */ +function jsonp (src, callbackParameter, timeout, onSuccess, onError) { + const callbackName = `prismjsonp${jsonpCallbackCounter++}`; + + const uri = document.createElement('a'); + uri.href = src; + uri.href += (uri.search ? '&' : '?') + (callbackParameter || 'callback') + '=' + callbackName; + + const script = document.createElement('script'); + script.src = uri.href; + script.onerror = function () { + cleanup(); + onError('network'); + }; + + const timeoutId = setTimeout(() => { + cleanup(); + onError('timeout'); + }, timeout); + + const global = getGlobal(); + + function cleanup () { + clearTimeout(timeoutId); + document.head.removeChild(script); + delete global[callbackName]; + } + + /** + * The JSONP callback function + */ + global[callbackName] = response => { + cleanup(); + onSuccess(response); + }; + + document.head.appendChild(script); +} + +const STATUS_ATTR = 'data-jsonp-status'; +const STATUS_LOADING = 'loading'; +const STATUS_LOADED = 'loaded'; +const STATUS_FAILED = 'failed'; + +const SELECTOR = + 'pre[data-jsonp]:not([' + + STATUS_ATTR + + '="' + + STATUS_LOADED + + '"])' + + ':not([' + + STATUS_ATTR + + '="' + + STATUS_LOADING + + '"])'; + +export class JsonpHighlight { + /** + * The timeout after which an error message will be displayed. + * + * __Note:__ If the request succeeds after the timeout, it will still be processed and will override any + * displayed error messages. + */ + timeout = 5000; + + /** + * @type {Prism} + */ + Prism; + + /** + * The list of adapter which will be used if `data-adapter` is not specified. + * + * @type {{ adapter: Adapter, name: string }[]} + */ + adapters = []; + + /** + * @param {Prism} Prism + */ + constructor (Prism) { + this.Prism = Prism; + } + + /** + * Returns the given adapter itself, if registered, or a registered adapter with the given name. + * + * If no fitting adapter is registered, `null` will be returned. + * + * @param {string | Adapter} adapter The adapter itself or the name of an adapter. + */ + getAdapter (adapter) { + if (typeof adapter === 'function') { + for (const item of this.adapters) { + if (item.adapter.valueOf() === adapter.valueOf()) { + return item.adapter; + } + } + } + else if (typeof adapter === 'string') { + for (const item of this.adapters) { + if (item.name === adapter) { + return item.adapter; + } + } + } + return null; + } + + /** + * Adds a new function to the list of adapters. + * + * If the given adapter is already registered or not a function or there is an adapter with the given name already, + * nothing will happen. + * + * @param {string} name The name of the adapter. + * @param {Adapter} adapter The adapter to be registered. + */ + registerAdapter (name, adapter) { + if (typeof adapter === 'function' && !this.getAdapter(adapter) && !this.getAdapter(name)) { + this.adapters.push({ adapter, name }); + } + } + + /** + * Remove the given adapter or the first registered adapter with the given name from the list of + * registered adapters. + * + * @param {string | Adapter} adapter The adapter itself or the name of an adapter. + */ + removeAdapter (adapter) { + const resolvedAdapter = typeof adapter === 'string' ? this.getAdapter(adapter) : adapter; + if (resolvedAdapter) { + const index = this.adapters.findIndex(item => item.adapter === resolvedAdapter); + if (index >= 0) { + this.adapters.splice(index, 1); + } + } + } + + /** + * Runs all registered adapters in the order they were registered using + * the given arguments. The result of the first adapter that returns a + * string will be returned and iteration will be stopped. + * + * @param {Parameters} args + */ + runAdapters (...args) { + for (const adapter of this.adapters) { + const data = adapter.adapter(...args); + if (data !== null) { + return data; + } + } + return null; + } + + /** + * Highlights all `pre` elements under the given container with a `data-jsonp` attribute by requesting the + * specified JSON and using the specified adapter or a registered adapter to extract the code to highlight + * from the response. The highlighted code will be inserted into the `pre` element. + * + * Note: Elements which are already loaded or currently loading will not be touched by this method. + * + * @param {Element | Document} [container=document] Defaults to `document`. + */ + highlight (container = document) { + const elements = container.querySelectorAll(SELECTOR); + + for (const element of elements) { + this.Prism.highlightElement(element); + } + } +} + +/** @type {import('../../types.d.ts').PluginProto<'jsonp-highlight'>} */ +const Self = { + id: 'jsonp-highlight', + plugin (Prism) { + const config = new JsonpHighlight(Prism); + + config.registerAdapter('github', rsp => { + if (rsp && rsp.meta && rsp.data) { + if (rsp.meta.status && rsp.meta.status >= 400) { + return `Error: ${rsp.data.message || rsp.meta.status}`; + } + else if (typeof rsp.data.content === 'string') { + return typeof atob === 'function' + ? atob(rsp.data.content.replace(/\s/g, '')) + : 'Your browser cannot decode base64'; + } + } + return null; + }); + config.registerAdapter('gist', (rsp, el) => { + if (rsp && rsp.meta && rsp.data && rsp.data.files) { + if (rsp.meta.status && rsp.meta.status >= 400) { + return `Error: ${rsp.data.message || rsp.meta.status}`; + } + + const files = rsp.data.files; + let filename = el.getAttribute('data-filename'); + if (filename == null) { + // Maybe in the future we can somehow render all files + // But the standard + +## With linkable line numbers + +
      
      +
      +
      diff --git a/src/plugins/line-highlight/line-highlight.css b/src/plugins/line-highlight/line-highlight.css
      new file mode 100644
      index 0000000000..3c87c61cd0
      --- /dev/null
      +++ b/src/plugins/line-highlight/line-highlight.css
      @@ -0,0 +1,70 @@
      +pre[data-line] {
      +	position: relative;
      +	padding: 1em 0 1em 3em;
      +}
      +
      +.line-highlight {
      +	position: absolute;
      +	left: 0;
      +	right: 0;
      +	padding: inherit 0;
      +	margin-top: 1em; /* Same as .prism’s padding-top */
      +
      +	background: hsla(24, 20%, 50%, 0.08);
      +	background: linear-gradient(to right, hsla(24, 20%, 50%, 0.1) 70%, hsla(24, 20%, 50%, 0));
      +
      +	pointer-events: none;
      +
      +	line-height: inherit;
      +	white-space: pre;
      +}
      +
      +@media print {
      +	.line-highlight {
      +		/*
      +		 * This will prevent browsers from replacing the background color with white.
      +		 * It's necessary because the element is layered on top of the displayed code.
      +		 */
      +		-webkit-print-color-adjust: exact;
      +		color-adjust: exact;
      +	}
      +}
      +
      +.line-highlight:before,
      +.line-highlight[data-end]:after {
      +	content: attr(data-start);
      +	position: absolute;
      +	top: 0.4em;
      +	left: 0.6em;
      +	min-width: 1em;
      +	padding: 0 0.5em;
      +	background-color: hsla(24, 20%, 50%, 0.4);
      +	color: hsl(24, 20%, 95%);
      +	font: bold 65%/1.5 sans-serif;
      +	text-align: center;
      +	vertical-align: 0.3em;
      +	border-radius: 999px;
      +	text-shadow: none;
      +	box-shadow: 0 1px white;
      +}
      +
      +.line-highlight[data-end]:after {
      +	content: attr(data-end);
      +	top: auto;
      +	bottom: 0.4em;
      +}
      +
      +.line-numbers .line-highlight:before,
      +.line-numbers .line-highlight:after {
      +	content: none;
      +}
      +
      +pre[id].linkable-line-numbers span.line-numbers-rows {
      +	pointer-events: all;
      +}
      +pre[id].linkable-line-numbers span.line-numbers-rows > span:before {
      +	cursor: pointer;
      +}
      +pre[id].linkable-line-numbers span.line-numbers-rows > span:hover:before {
      +	background-color: rgba(128, 128, 128, 0.2);
      +}
      diff --git a/src/plugins/line-highlight/line-highlight.js b/src/plugins/line-highlight/line-highlight.js
      new file mode 100644
      index 0000000000..8d7e72f58b
      --- /dev/null
      +++ b/src/plugins/line-highlight/line-highlight.js
      @@ -0,0 +1,401 @@
      +import prism from '../../global.js';
      +import { isActive } from '../../shared/dom-util.js';
      +import { lazy, noop } from '../../shared/util.js';
      +import { combineCallbacks } from '../../util/combine-callbacks.js';
      +
      +const LINE_NUMBERS_CLASS = 'line-numbers';
      +const LINKABLE_LINE_NUMBERS_CLASS = 'linkable-line-numbers';
      +const NEW_LINE_EXP = /\n(?!$)/g;
      +
      +/**
      + *
      + * @param {string} selector
      + * @param {ParentNode} [container=document]
      + * @returns {Element[]}
      + */
      +function $$ (selector, container = document) {
      +	return [...container.querySelectorAll(selector)];
      +}
      +
      +/**
      + * Returns the top offset of the content box of the given parent and the content box of one of its children.
      + *
      + * @param {HTMLElement} parent
      + * @param {HTMLElement} child
      + * @returns {number}
      + */
      +function getContentBoxTopOffset (parent, child) {
      +	const parentStyle = getComputedStyle(parent);
      +	const childStyle = getComputedStyle(child);
      +
      +	/**
      +	 * Returns the numeric value of the given pixel value.
      +	 *
      +	 * @param {string} px
      +	 * @returns {number}
      +	 */
      +	function pxToNumber (px) {
      +		return +px.substr(0, px.length - 2);
      +	}
      +
      +	return (
      +		child.offsetTop +
      +		pxToNumber(childStyle.borderTopWidth) +
      +		pxToNumber(childStyle.paddingTop) -
      +		pxToNumber(parentStyle.paddingTop)
      +	);
      +}
      +
      +/**
      + * Returns whether the given element has the given class.
      + *
      + * @param {Element} element
      + * @param {string} className
      + * @returns {boolean}
      + */
      +function hasClass (element, className) {
      +	return element.classList.contains(className);
      +}
      +
      +/**
      + * Calls the given function.
      + *
      + * @param {() => void} func
      + * @returns {void}
      + */
      +function callFunction (func) {
      +	func();
      +}
      +
      +// Some browsers round the line-height, others don't.
      +// We need to test for it to position the elements properly.
      +const isLineHeightRounded = lazy(() => {
      +	const d = document.createElement('div');
      +	d.style.fontSize = '13px';
      +	d.style.lineHeight = '1.5';
      +	d.style.padding = '0';
      +	d.style.border = '0';
      +	d.innerHTML = ' 
       '; + document.body.appendChild(d); + // Browsers that round the line-height should have offsetHeight === 38 + // The others should have 39. + const result = d.offsetHeight === 38; + document.body.removeChild(d); + return result; +}); + +export class LineHighlight { + /** + * @package + */ + scrollIntoView = true; + /** @type {Prism} */ + Prism; + + /** + * @param {Prism} Prism + */ + constructor (Prism) { + this.Prism = Prism; + } + /** + * Highlights the lines of the given pre. + * + * This function is split into a DOM measuring and mutate phase to improve performance. + * The returned function mutates the DOM when called. + * + * @param {HTMLElement} pre + * @param {string | null} [lines] + * @param {string} [classes=''] + */ + highlightLines (pre, lines, classes = '') { + lines = typeof lines === 'string' ? lines : pre.getAttribute('data-line') || ''; + + const ranges = lines.replace(/\s+/g, '').split(',').filter(Boolean); + const offset = Number(pre.getAttribute('data-line-offset')) || 0; + + const parseMethod = isLineHeightRounded() ? parseInt : parseFloat; + const lineHeight = parseMethod(getComputedStyle(pre).lineHeight); + const hasLineNumbers = isActive(pre, LINE_NUMBERS_CLASS); + const codeElement = pre.querySelector('code'); + const parentElement = hasLineNumbers ? pre : codeElement || pre; + /** @type {(function():void)[]} */ + const mutateActions = []; + const lineBreakMatch = codeElement?.textContent?.match(NEW_LINE_EXP); + const numberOfLines = lineBreakMatch ? lineBreakMatch.length + 1 : 1; + /** + * The top offset between the content box of the element and the content box of the parent element of + * the line highlight element (either `
      ` or ``).
      +		 *
      +		 * This offset might not be zero for some themes where the  element has a top margin. Some plugins
      +		 * (or users) might also add element above the  element. Because the line highlight is aligned relative
      +		 * to the 
       element, we have to take this into account.
      +		 *
      +		 * This offset will be 0 if the parent element of the line highlight element is the `` element.
      +		 */
      +		const codePreOffset =
      +			!codeElement || parentElement === codeElement
      +				? 0
      +				: getContentBoxTopOffset(pre, codeElement);
      +
      +		ranges.forEach(currentRange => {
      +			const range = currentRange.split('-');
      +
      +			const start = +range[0];
      +			let end = +range[1] || start;
      +			end = Math.min(numberOfLines + offset, end);
      +
      +			if (end < start) {
      +				return;
      +			}
      +
      +			/** @type {HTMLElement} */
      +			const line =
      +				pre.querySelector('.line-highlight[data-range="' + currentRange + '"]') ||
      +				document.createElement('div');
      +
      +			mutateActions.push(() => {
      +				line.setAttribute('aria-hidden', 'true');
      +				line.setAttribute('data-range', currentRange);
      +				line.className = classes + ' line-highlight';
      +			});
      +
      +			// if the line-numbers plugin is enabled, then there is no reason for this plugin to display the line numbers
      +			if (hasLineNumbers && this.Prism.plugins.lineNumbers) {
      +				/** @type {LineNumbers} */
      +				const lineNumbers = this.Prism.plugins.lineNumbers;
      +				const startNode = lineNumbers.getLine(pre, start);
      +				const endNode = lineNumbers.getLine(pre, end);
      +
      +				if (startNode) {
      +					const top = `${startNode.offsetTop + codePreOffset}px`;
      +					mutateActions.push(() => {
      +						line.style.top = top;
      +					});
      +				}
      +
      +				if (startNode && endNode) {
      +					const height = `${endNode.offsetTop - startNode.offsetTop + endNode.offsetHeight}px`;
      +					mutateActions.push(() => {
      +						line.style.height = height;
      +					});
      +				}
      +			}
      +			else {
      +				mutateActions.push(() => {
      +					line.setAttribute('data-start', String(start));
      +
      +					if (end > start) {
      +						line.setAttribute('data-end', String(end));
      +					}
      +
      +					line.style.top = `${(start - offset - 1) * lineHeight + codePreOffset}px`;
      +
      +					line.textContent = new Array(end - start + 2).join(' \n');
      +				});
      +			}
      +
      +			mutateActions.push(() => {
      +				line.style.width = `${pre.scrollWidth}px`;
      +			});
      +
      +			mutateActions.push(() => {
      +				// allow this to play nicely with the line-numbers plugin
      +				// need to attack to pre as when line-numbers is enabled, the code tag is relatively which screws up the positioning
      +				parentElement.appendChild(line);
      +			});
      +		});
      +
      +		const id = pre.id;
      +		if (
      +			hasLineNumbers &&
      +			this.Prism.plugins.lineNumbers &&
      +			isActive(pre, LINKABLE_LINE_NUMBERS_CLASS) &&
      +			id
      +		) {
      +			// This implements linkable line numbers. Linkable line numbers use Line Highlight to create a link to a
      +			// specific line. For this to work, the pre element has to:
      +			//  1) have line numbers,
      +			//  2) have the `linkable-line-numbers` class or an ascendant that has that class, and
      +			//  3) have an id.
      +
      +			if (!hasClass(pre, LINKABLE_LINE_NUMBERS_CLASS)) {
      +				// add class to pre
      +				mutateActions.push(() => {
      +					pre.classList.add(LINKABLE_LINE_NUMBERS_CLASS);
      +				});
      +			}
      +
      +			const start = parseInt(pre.getAttribute('data-start') || '1');
      +
      +			// iterate all line number spans
      +			/** @type {LineNumbers} */
      +			const lineNumbers = this.Prism.plugins.lineNumbers;
      +			lineNumbers.getLines(pre)?.forEach((lineSpan, i) => {
      +				const lineNumber = i + start;
      +				lineSpan.onclick = () => {
      +					const hash = `${id}.${lineNumber}`;
      +
      +					// this will prevent scrolling since the span is obviously in view
      +					this.scrollIntoView = false;
      +					location.hash = hash;
      +					setTimeout(() => {
      +						this.scrollIntoView = true;
      +					}, 1);
      +				};
      +			});
      +		}
      +
      +		return function () {
      +			mutateActions.forEach(callFunction);
      +		};
      +	}
      +}
      +
      +/** @type {import('../../types.d.ts').PluginProto<'line-highlight'>} */
      +const Self = {
      +	id: 'line-highlight',
      +	optional: 'line-numbers',
      +	plugin (Prism) {
      +		return new LineHighlight(Prism);
      +	},
      +	effect (Prism) {
      +		if (typeof document === 'undefined') {
      +			return noop;
      +		}
      +
      +		/**
      +		 * Returns whether the Line Highlight plugin is active for the given element.
      +		 *
      +		 * If this function returns `false`, do not call `highlightLines` for the given element.
      +		 *
      +		 * @param {Element | null | undefined} pre
      +		 * @returns {pre is HTMLPreElement}
      +		 */
      +		function isActiveFor (pre) {
      +			if (!pre || !/pre/i.test(pre.nodeName)) {
      +				return false;
      +			}
      +
      +			if (pre.hasAttribute('data-line')) {
      +				return true;
      +			}
      +
      +			if (pre.id && isActive(pre, LINKABLE_LINE_NUMBERS_CLASS)) {
      +				// Technically, the line numbers plugin is also necessary but this plugin doesn't control the classes of
      +				// the line numbers plugin, so we can't assume that they are present.
      +				return true;
      +			}
      +
      +			return false;
      +		}
      +
      +		const applyHash = () => {
      +			const hash = location.hash.slice(1);
      +
      +			// Remove pre-existing temporary lines
      +			$$('.temporary.line-highlight').forEach(line => {
      +				line.remove();
      +			});
      +
      +			const range = (hash.match(/\.([\d,-]+)$/) || [, ''])[1];
      +
      +			if (!range || document.getElementById(hash)) {
      +				return;
      +			}
      +
      +			const id = hash.slice(0, hash.lastIndexOf('.'));
      +			const pre = document.getElementById(id);
      +
      +			if (!pre) {
      +				return;
      +			}
      +
      +			if (!pre.hasAttribute('data-line')) {
      +				pre.setAttribute('data-line', '');
      +			}
      +
      +			/** @type {LineHighlight} */
      +			const lineHighlight = Prism.plugins.lineHighlight;
      +			const mutateDom = lineHighlight.highlightLines(pre, range, 'temporary ');
      +			mutateDom();
      +
      +			if (lineHighlight.scrollIntoView) {
      +				document.querySelector('.temporary.line-highlight')?.scrollIntoView();
      +			}
      +		};
      +		const onResize = () => {
      +			$$('pre')
      +				.filter(isActiveFor)
      +				.map(pre => {
      +					/** @type {LineHighlight} */
      +					const lineHighlight = Prism.plugins.lineHighlight;
      +					return lineHighlight.highlightLines(pre);
      +				})
      +				.forEach(callFunction);
      +		};
      +
      +		window.addEventListener('hashchange', applyHash);
      +		window.addEventListener('resize', onResize);
      +
      +		const removeEventListeners = () => {
      +			window.removeEventListener('hashchange', applyHash);
      +			window.removeEventListener('resize', onResize);
      +		};
      +
      +		/** @type {number | NodeJS.Timeout | undefined} */
      +		let fakeTimer = undefined; // Hack to limit the number of times applyHash() runs
      +
      +		const beforeSanityHook = Prism.hooks.add('before-sanity-check', env => {
      +			const pre = env.element.parentElement;
      +			if (!isActiveFor(pre)) {
      +				return;
      +			}
      +
      +			/*
      +			 * Cleanup for other plugins (e.g. autoloader).
      +			 *
      +			 * Sometimes  blocks are highlighted multiple times. It is necessary
      +			 * to cleanup any left-over tags, because the whitespace inside of the 
      + * tags change the content of the tag. + */ + let num = 0; + $$('.line-highlight', pre).forEach(line => { + num += (line.textContent || '').length; + line.remove(); + }); + // Remove extra whitespace + if (num && /^(?: \n)+$/.test(env.code.slice(-num))) { + env.code = env.code.slice(0, -num); + } + }); + + const completeHook = Prism.hooks.add('complete', env => { + const pre = env.element.parentElement; + if (!isActiveFor(pre)) { + return; + } + + if (fakeTimer !== undefined) { + clearTimeout(fakeTimer); + } + + /** @type {LineHighlight} */ + const lineHighlight = Prism.plugins.lineHighlight; + const mutateDom = lineHighlight.highlightLines(pre); + mutateDom(); + fakeTimer = setTimeout(applyHash, 1); + }); + + return combineCallbacks(removeEventListeners, beforeSanityHook, completeHook); + }, +}; + +export default Self; + +prism.components.add(Self); + +/** + * @typedef {import('../../core.js').Prism} Prism + * @typedef {import('../line-numbers/line-numbers.js').LineNumbers} LineNumbers + */ diff --git a/src/plugins/line-numbers/README.md b/src/plugins/line-numbers/README.md new file mode 100644 index 0000000000..63e6d10755 --- /dev/null +++ b/src/plugins/line-numbers/README.md @@ -0,0 +1,76 @@ +--- +title: Line Numbers +description: Line number at the beginning of code lines. +owner: kuba-kubula +--- + +
      + +# How to use + +Obviously, this is supposed to work only for code blocks (`
      `) and not for inline code.
      +
      +Add the `line-numbers` class to your desired `
      ` or any of its ancestors, and the Line Numbers plugin will take care of the rest. To give all code blocks line numbers, add the `line-numbers` class to the `` of the page. This is part of a general activation mechanism where adding the `line-numbers` (or `no-line-numbers`) class to any element will enable (or disable) the Line Numbers plugin for all code blocks in that element.  
      +Example:
      +
      +```html
      + 
      +
      +	
      +	
      ...
      + +
      ...
      + +
      + + +
      ...
      + +
      ...
      + +
      + +``` + +Optional: You can specify the `data-start` (Number) attribute on the `
      ` element. It will shift the line counter.
      +
      +Optional: To support multiline line numbers using soft wrap, apply the CSS `white-space: pre-line;` or `white-space: pre-wrap;` to your desired `
      `.
      +
      +
      + +
      + +# Examples + +## JavaScript + +
      
      +
      +## CSS
      +
      +Please note that this `
      ` does not have the `line-numbers` class but its parent does.
      +
      +
      
      +
      +## HTML
      +
      +Please note the `data-start="-5"` in the code below.
      +
      +
      
      +
      +## Unknown languages
      +
      +```{ .language-none .line-numbers }
      +This raw text
      +is not highlighted
      +but it still has
      +line numbers
      +```
      +
      +## Soft wrap support
      +
      +Please note the `style="white-space: pre-wrap;"` in the code below.
      +
      +
      
      +
      +
      diff --git a/src/plugins/line-numbers/line-numbers.css b/src/plugins/line-numbers/line-numbers.css new file mode 100644 index 0000000000..609ee3c1ac --- /dev/null +++ b/src/plugins/line-numbers/line-numbers.css @@ -0,0 +1,39 @@ +pre[class*="language-"].line-numbers { + position: relative; + padding-left: 3.8em; + counter-reset: linenumber; +} + +pre[class*="language-"].line-numbers > code { + position: relative; + white-space: inherit; +} + +.line-numbers .line-numbers-rows { + position: absolute; + pointer-events: none; + top: 0; + font-size: 100%; + left: -3.8em; + width: 3em; /* works for line-numbers below 1000 lines */ + letter-spacing: -1px; + border-right: 1px solid #999; + + -webkit-user-select: none; + -moz-user-select: none; + -ms-user-select: none; + user-select: none; +} + +.line-numbers-rows > span { + display: block; + counter-increment: linenumber; +} + +.line-numbers-rows > span:before { + content: counter(linenumber); + color: #999; + display: block; + padding-right: 0.8em; + text-align: right; +} diff --git a/src/plugins/line-numbers/line-numbers.js b/src/plugins/line-numbers/line-numbers.js new file mode 100644 index 0000000000..178906a9b6 --- /dev/null +++ b/src/plugins/line-numbers/line-numbers.js @@ -0,0 +1,290 @@ +import prism from '../../global.js'; +import { getParentPre, isActive } from '../../shared/dom-util.js'; +import { isNonNull, noop } from '../../shared/util.js'; +import { combineCallbacks } from '../../util/combine-callbacks.js'; + +/** + * Plugin name which is used as a class name for
       which is activating the plugin
      + */
      +const PLUGIN_NAME = 'line-numbers';
      +
      +/**
      + * Regular expression used for determining line breaks
      + */
      +const NEW_LINE_EXP = /\n(?!$)/g;
      +
      +/**
      + * Queries for the `line-numbers-rows` element.
      + *
      + * @param {Element} element
      + * @returns {HTMLElement | null}
      + */
      +function getLineNumbersRows (element) {
      +	return element.querySelector('.line-numbers-rows');
      +}
      +
      +/**
      + * Resizes the given elements.
      + *
      + * @param {Element[]} elements
      + */
      +function resizeElements (elements) {
      +	elements = elements.filter(e => {
      +		const codeStyles = getComputedStyle(e);
      +		const whiteSpace = codeStyles.whiteSpace;
      +		return whiteSpace === 'pre-wrap' || whiteSpace === 'pre-line';
      +	});
      +
      +	if (elements.length === 0) {
      +		return;
      +	}
      +
      +	const infos = /** @type {Info[]} */ (
      +		elements
      +			.map(element => {
      +				const codeElement = element.querySelector('code');
      +				const lineNumbersWrapper = getLineNumbersRows(element);
      +				if (!codeElement || !lineNumbersWrapper) {
      +					return undefined;
      +				}
      +
      +				/** @type {HTMLElement | null} */
      +				let lineNumberSizer = element.querySelector('.line-numbers-sizer');
      +				// @ts-expect-error - codeElement.textContent is not null
      +				const codeLines = codeElement.textContent.split(NEW_LINE_EXP);
      +
      +				if (!lineNumberSizer) {
      +					lineNumberSizer = document.createElement('span');
      +					lineNumberSizer.className = 'line-numbers-sizer';
      +
      +					codeElement.appendChild(lineNumberSizer);
      +				}
      +
      +				lineNumberSizer.innerHTML = '0';
      +				lineNumberSizer.style.display = 'block';
      +
      +				const oneLinerHeight = lineNumberSizer.getBoundingClientRect().height;
      +				lineNumberSizer.innerHTML = '';
      +
      +				return {
      +					element,
      +					lines: codeLines,
      +					lineHeights: [],
      +					oneLinerHeight,
      +					sizer: lineNumberSizer,
      +					wrapper: lineNumbersWrapper,
      +				};
      +			})
      +			.filter(isNonNull)
      +	);
      +
      +	infos.forEach(info => {
      +		const lineNumberSizer = info.sizer;
      +		const lines = info.lines;
      +		const lineHeights = info.lineHeights;
      +		const oneLinerHeight = info.oneLinerHeight;
      +
      +		lineHeights[lines.length - 1] = undefined;
      +		lines.forEach((line, index) => {
      +			if (line && line.length > 1) {
      +				const e = lineNumberSizer.appendChild(document.createElement('span'));
      +				e.style.display = 'block';
      +				e.textContent = line;
      +			}
      +			else {
      +				lineHeights[index] = oneLinerHeight;
      +			}
      +		});
      +	});
      +
      +	infos.forEach(info => {
      +		const lineNumberSizer = info.sizer;
      +		const lineHeights = info.lineHeights;
      +
      +		let childIndex = 0;
      +		for (let i = 0; i < lineHeights.length; i++) {
      +			if (lineHeights[i] === undefined) {
      +				lineHeights[i] =
      +					lineNumberSizer.children[childIndex++].getBoundingClientRect().height;
      +			}
      +		}
      +	});
      +
      +	infos.forEach(info => {
      +		const lineNumberSizer = info.sizer;
      +
      +		lineNumberSizer.style.display = 'none';
      +		lineNumberSizer.innerHTML = '';
      +
      +		info.lineHeights.forEach((height, lineNumber) => {
      +			if (height !== undefined) {
      +				const child = /** @type {HTMLElement} */ (info.wrapper.children[lineNumber]);
      +				child.style.height = `${height}px`;
      +			}
      +		});
      +	});
      +}
      +
      +export class LineNumbers {
      +	/**
      +	 * Whether the plugin can assume that the units font sizes and margins are not depended on the size of
      +	 * the current viewport.
      +	 *
      +	 * Setting this to `true` will allow the plugin to do certain optimizations for better performance.
      +	 *
      +	 * Set this to `false` if you use any of the following CSS units: `vh`, `vw`, `vmin`, `vmax`.
      +	 */
      +	assumeViewportIndependence = true;
      +
      +	/**
      +	 * Get node for provided line number
      +	 *
      +	 * @param {Element} element pre element
      +	 * @param {number} number number
      +	 * @returns {HTMLElement | undefined}
      +	 */
      +	getLine (element, number) {
      +		if (element.tagName !== 'PRE' || !element.classList.contains(PLUGIN_NAME)) {
      +			return;
      +		}
      +
      +		const lineNumberRows = getLineNumbersRows(element);
      +		if (!lineNumberRows) {
      +			return;
      +		}
      +		const lineNumberStart = parseInt(String(element.getAttribute('data-start')), 10) || 1;
      +		const lineNumberEnd = lineNumberStart + (lineNumberRows.children.length - 1);
      +
      +		if (number < lineNumberStart) {
      +			number = lineNumberStart;
      +		}
      +		if (number > lineNumberEnd) {
      +			number = lineNumberEnd;
      +		}
      +
      +		const lineIndex = number - lineNumberStart;
      +
      +		return /** @type {HTMLElement} */ (lineNumberRows.children[lineIndex]);
      +	}
      +
      +	/**
      +	 * Returns the nodes of all line numbers.
      +	 *
      +	 * @param {Element} element pre element
      +	 * @returns {HTMLElement[] | undefined}
      +	 */
      +	getLines (element) {
      +		if (element.tagName !== 'PRE' || !element.classList.contains(PLUGIN_NAME)) {
      +			return;
      +		}
      +
      +		const lineNumberRows = getLineNumbersRows(element);
      +		if (!lineNumberRows) {
      +			return;
      +		}
      +
      +		return /** @type {HTMLElement[]} */ ([...lineNumberRows.children]);
      +	}
      +
      +	/**
      +	 * Resizes the line numbers of the given element.
      +	 *
      +	 * This function will not add line numbers. It will only resize existing ones.
      +	 *
      +	 * @param {Element} element A `
      ` element with line numbers.
      +	 * @returns {void}
      +	 */
      +	resize (element) {
      +		resizeElements([element]);
      +	}
      +}
      +
      +/** @type {import('../../types.d.ts').PluginProto<'line-numbers'>} */
      +const Self = {
      +	id: 'line-numbers',
      +	plugin () {
      +		return new LineNumbers();
      +	},
      +	effect (Prism) {
      +		if (typeof document === 'undefined') {
      +			return noop;
      +		}
      +
      +		let lastWidth = NaN;
      +		const listener = () => {
      +			/** @type {LineNumbers} */
      +			const lineNumbers = Prism.plugins.lineNumbers;
      +			if (lineNumbers.assumeViewportIndependence && lastWidth === window.innerWidth) {
      +				return;
      +			}
      +			lastWidth = window.innerWidth;
      +
      +			resizeElements([...document.querySelectorAll('pre.' + PLUGIN_NAME)]);
      +		};
      +		window.addEventListener('resize', listener);
      +		const removeListener = () => {
      +			window.removeEventListener('resize', listener);
      +		};
      +
      +		const completeHook = Prism.hooks.add('complete', env => {
      +			if (!env.code) {
      +				return;
      +			}
      +
      +			const code = env.element;
      +			const pre = getParentPre(code);
      +
      +			// works only for  wrapped inside 
       (not inline)
      +			if (!pre) {
      +				return;
      +			}
      +
      +			// Abort if line numbers already exists
      +			if (getLineNumbersRows(code)) {
      +				return;
      +			}
      +
      +			// only add line numbers if  or one of its ancestors has the `line-numbers` class
      +			if (!isActive(code, PLUGIN_NAME)) {
      +				return;
      +			}
      +
      +			// Remove the class 'line-numbers' from the 
      +			code.classList.remove(PLUGIN_NAME);
      +			// Add the class 'line-numbers' to the 
      +			pre.classList.add(PLUGIN_NAME);
      +
      +			const match = env.code.match(NEW_LINE_EXP);
      +			const linesNum = match ? match.length + 1 : 1;
      +
      +			const lineNumbersWrapper = document.createElement('span');
      +			lineNumbersWrapper.setAttribute('aria-hidden', 'true');
      +			lineNumbersWrapper.className = 'line-numbers-rows';
      +			lineNumbersWrapper.innerHTML = ''.repeat(linesNum);
      +
      +			if (pre.hasAttribute('data-start')) {
      +				pre.style.counterReset = `linenumber ${parseInt(String(pre.getAttribute('data-start')), 10) - 1}`;
      +			}
      +
      +			env.element.appendChild(lineNumbersWrapper);
      +
      +			resizeElements([pre]);
      +		});
      +
      +		return combineCallbacks(removeListener, completeHook);
      +	},
      +};
      +
      +export default Self;
      +
      +prism.components.add(Self);
      +
      +/**
      + * @typedef {object} Info
      + * @property {Element} element
      + * @property {string[]} lines
      + * @property {(number | undefined)[]} lineHeights
      + * @property {number} oneLinerHeight
      + * @property {HTMLElement} sizer
      + * @property {HTMLElement} wrapper
      + */
      diff --git a/src/plugins/match-braces/README.md b/src/plugins/match-braces/README.md
      new file mode 100644
      index 0000000000..44d5584c32
      --- /dev/null
      +++ b/src/plugins/match-braces/README.md
      @@ -0,0 +1,62 @@
      +---
      +title: Match braces
      +description: Highlights matching braces.
      +owner: RunDevelopment
      +resources: /plugins/autoloader.js { type="module" }
      +---
      +
      +
      + +# How to use + +To enable this plugin add the `match-braces` class to a code block: + +```html +
      ...
      +``` + +Just like `language-xxxx`, the `match-braces` class is inherited, so you can add the class to the `` to enable the plugin for the whole page. + +The plugin will highlight brace pairs when the cursor hovers over one of the braces. The highlighting effect will disappear as soon as the cursor leaves the brace pair. +The hover effect can be disabled by adding the `no-brace-hover` to the code block. This class can also be inherited. + +You can also click on a brace to select the brace pair. To deselect the pair, click anywhere within the code block or select another pair. +The selection effect can be disabled by adding the `no-brace-select` to the code block. This class can also be inherited. + +## Rainbow braces 🌈 + +To enable rainbow braces, simply add the `rainbow-braces` class to a code block. This class can also get inherited. + +
      + +
      + +# Examples + +## JavaScript + +
      
      +
      +```js
      +const func = (a, b) => {
      +	return `${a}:${b}`;
      +}
      +```
      +
      +## Lisp
      +
      +```lisp
      +(defun factorial (n)
      +	(if (= n 0) 1
      +		(* n (factorial (- n 1)))))
      +```
      +
      +## Lisp with rainbow braces 🌈 but without hover
      +
      +```lisp { .rainbow-braces .no-brace-hover }
      +(defun factorial (n)
      +	(if (= n 0) 1
      +		(* n (factorial (- n 1)))))
      +```
      +
      +
      diff --git a/src/plugins/match-braces/match-braces.css b/src/plugins/match-braces/match-braces.css new file mode 100644 index 0000000000..85b69208bb --- /dev/null +++ b/src/plugins/match-braces/match-braces.css @@ -0,0 +1,29 @@ +.token.punctuation.brace-hover, +.token.punctuation.brace-selected { + outline: solid 1px; +} + +.rainbow-braces .token.punctuation.brace-level-1, +.rainbow-braces .token.punctuation.brace-level-5, +.rainbow-braces .token.punctuation.brace-level-9 { + color: #e50; + opacity: 1; +} +.rainbow-braces .token.punctuation.brace-level-2, +.rainbow-braces .token.punctuation.brace-level-6, +.rainbow-braces .token.punctuation.brace-level-10 { + color: #0b3; + opacity: 1; +} +.rainbow-braces .token.punctuation.brace-level-3, +.rainbow-braces .token.punctuation.brace-level-7, +.rainbow-braces .token.punctuation.brace-level-11 { + color: #26f; + opacity: 1; +} +.rainbow-braces .token.punctuation.brace-level-4, +.rainbow-braces .token.punctuation.brace-level-8, +.rainbow-braces .token.punctuation.brace-level-12 { + color: #e0e; + opacity: 1; +} diff --git a/src/plugins/match-braces/match-braces.js b/src/plugins/match-braces/match-braces.js new file mode 100644 index 0000000000..700229c7c0 --- /dev/null +++ b/src/plugins/match-braces/match-braces.js @@ -0,0 +1,228 @@ +import prism from '../../global.js'; +import { getParentPre, isActive } from '../../shared/dom-util.js'; + +/** @type {import('../../types.d.ts').PluginProto<'match-braces'>} */ +const Self = { + id: 'match-braces', + effect (Prism) { + /** + * @param {string} name + */ + function mapClassName (name) { + /** @type {import('../custom-class/custom-class.js').CustomClass} */ + const customClass = Prism.plugins.customClass; + if (customClass) { + return customClass.apply(name); + } + else { + return name; + } + } + + const PARTNER = { + '(': ')', + '[': ']', + '{': '}', + }; + + // The names for brace types. + // These names have two purposes: 1) they can be used for styling and 2) they are used to pair braces. Only braces + // of the same type are paired. + const NAMES = { + '(': 'brace-round', + '[': 'brace-square', + '{': 'brace-curly', + }; + + // A map for brace aliases. + // This is useful for when some braces have a prefix/suffix as part of the punctuation token. + const BRACE_ALIAS_MAP = { + '${': '{', // JS template punctuation (e.g. `foo ${bar + 1}`) + }; + + const LEVEL_WARP = 12; + + let pairIdCounter = 0; + + const BRACE_ID_PATTERN = /^(pair-\d+-)(close|open)$/; + + /** + * Returns the brace partner given one brace of a brace pair. + * + * @param {Element} brace + */ + function getPartnerBrace (brace) { + const match = BRACE_ID_PATTERN.exec(brace.id); + if (!match) { + return null; + } + return document.querySelector( + '#' + match[1] + (match[2] === 'open' ? 'close' : 'open') + ); + } + + /** + * @this {Element} + */ + function hoverBrace () { + if (!isActive(this, 'brace-hover', true)) { + return; + } + + const partner = getPartnerBrace(this); + if (!partner) { + return; + } + + [this, partner].forEach(e => { + e.classList.add(mapClassName('brace-hover')); + }); + } + + /** + * @this {Element} + */ + function leaveBrace () { + const partner = getPartnerBrace(this); + if (!partner) { + return; + } + + [this, partner].forEach(e => { + e.classList.remove(mapClassName('brace-hover')); + }); + } + + /** + * @this {Element} + */ + function clickBrace () { + if (!isActive(this, 'brace-select', true)) { + return; + } + + const partner = getPartnerBrace(this); + if (!partner) { + return; + } + + [this, partner].forEach(e => { + e.classList.add(mapClassName('brace-selected')); + }); + } + + /** @type {WeakSet} */ + const withEventListener = new WeakSet(); + + return Prism.hooks.add('complete', env => { + const code = env.element; + + const pre = getParentPre(code); + if (!pre) { + return; + } + + // find the braces to match + const toMatch = []; + if (isActive(code, 'match-braces')) { + toMatch.push('(', '[', '{'); + } + + if (toMatch.length === 0) { + // nothing to match + return; + } + + if (!withEventListener.has(pre)) { + // code blocks might be highlighted more than once + withEventListener.add(pre); + pre.addEventListener('mousedown', () => { + // the code element might have been replaced + const code = pre.querySelector('code'); + const className = mapClassName('brace-selected'); + code?.querySelectorAll('.' + className).forEach(e => { + e.classList.remove(className); + }); + }); + } + + const punctuation = [ + ...code.querySelectorAll( + 'span.' + mapClassName('token') + '.' + mapClassName('punctuation') + ), + ]; + + /** @type {{ index: number, open: boolean, element: Element }[]} */ + const allBraces = []; + + toMatch.forEach(open => { + const close = PARTNER[open]; + const name = mapClassName(NAMES[open]); + + const pairs = []; + /** @type {number[]} */ + const openStack = []; + + for (let i = 0; i < punctuation.length; i++) { + const element = punctuation[i]; + if (element.childElementCount === 0) { + let text = element.textContent || ''; + text = BRACE_ALIAS_MAP[text] || text; + if (text === open) { + allBraces.push({ index: i, open: true, element }); + element.classList.add(name); + element.classList.add(mapClassName('brace-open')); + openStack.push(i); + } + else if (text === close) { + allBraces.push({ index: i, open: false, element }); + element.classList.add(name); + element.classList.add(mapClassName('brace-close')); + const popped = openStack.pop(); + if (popped !== undefined) { + pairs.push([i, popped]); + } + } + } + } + + pairs.forEach(pair => { + const pairId = `pair-${pairIdCounter++}-`; + + const opening = punctuation[pair[0]]; + const closing = punctuation[pair[1]]; + + opening.id = pairId + 'open'; + closing.id = pairId + 'close'; + + [opening, closing].forEach(e => { + e.addEventListener('mouseenter', hoverBrace); + e.addEventListener('mouseleave', leaveBrace); + e.addEventListener('click', clickBrace); + }); + }); + }); + + let level = 0; + allBraces.sort((a, b) => a.index - b.index); + allBraces.forEach(brace => { + if (brace.open) { + brace.element.classList.add( + mapClassName(`brace-level-${(level % LEVEL_WARP) + 1}`) + ); + level++; + } + else { + level = Math.max(0, level - 1); + brace.element.classList.add( + mapClassName(`brace-level-${(level % LEVEL_WARP) + 1}`) + ); + } + }); + }); + }, +}; + +export default Self; + +prism.components.add(Self); diff --git a/src/plugins/normalize-whitespace/README.md b/src/plugins/normalize-whitespace/README.md new file mode 100644 index 0000000000..b146599599 --- /dev/null +++ b/src/plugins/normalize-whitespace/README.md @@ -0,0 +1,172 @@ +--- +title: Normalize Whitespace +description: Supports multiple operations to normalize whitespace in code blocks. +owner: zeitgeist87 +optional: unescaped-markup +noCSS: true +body_classes: language-markup +resources: /plugins/keep-markup.js { type="module" } +--- + + + +
      + +# How to use + +Obviously, this is supposed to work only for code blocks (`
      `) and not for inline code.
      +
      +By default the plugin trims all leading and trailing whitespace of every code block. It also removes extra indents and trailing whitespace on every line.
      +
      +The plugin can be disabled for a particular code block by adding the class `no-whitespace-normalization` to either the `
      ` or `` tag.
      +
      +The default settings can be overridden with the `setDefaults()`{ .language-javascript } method like so:
      +
      +```js
      +Prism.plugins.NormalizeWhitespace.setDefaults({
      +	"remove-trailing": true,
      +	"remove-indent": true,
      +	"left-trim": true,
      +	"right-trim": true,
      +	/*"break-lines": 80,
      +	"indent": 2,
      +	"remove-initial-line-feed": false,
      +	"tabs-to-spaces": 4,
      +	"spaces-to-tabs": 4*/
      +});
      +```
      +
      +The following settings are available and can be set via the `data-[setting]` attribute on the `
      ` element:
      +
      +`remove-trailing`
      +
      +: Removes trailing whitespace on all lines.
      +
      +`remove-indent`
      +
      +: If the whole code block is indented too much it removes the extra indent.
      +
      +`left-trim`
      +
      +: Removes all whitespace from the top of the code block.
      +
      +`right-trim`
      +
      +: Removes all whitespace from the bottom of the code block.
      +
      +`break-lines`
      +
      +: Simple way of breaking long lines at a certain length (default is 80 characters).
      +
      +`indent`
      +
      +: Adds a certain number of tabs to every line.
      +
      +`remove-initial-line-feed`
      +
      +: Less aggressive version of left-trim. It only removes a single line feed from the top of the code block.
      +
      +`tabs-to-spaces`
      +
      +: Converts all tabs to a certain number of spaces (default is 4 spaces).
      +
      +`spaces-to-tabs`
      +
      +: Converts a certain number of spaces to a tab (default is 4 spaces).
      +
      +
      + +
      + +# Examples + +The following example demonstrates the use of this plugin: + +
      
      +
      +The result looks like this:
      +
      +
      +
      +	
      +
      +
      +		let example = {
      +			foo: true,
      +
      +			bar: false
      +		};
      +
      +
      +		let
      +		there_is_a_very_very_very_very_long_line_it_can_break_it_for_you
      +		 = true;
      +		
      +		if 
      +		(there_is_a_very_very_very_very_long_line_it_can_break_it_for_you
      +		 === true) {
      +		};
      +
      +
      +	
      +
      +
      + +It is also compatible with the [keep-markup](../keep-markup) plugin: + +
      
      +
      +
      +@media screen {
      +	div {
      +		text-decoration: underline;
      +		background: url('foo.png');
      +	}
      +}
      + +This plugin can also be used on the server or on the command line with Node.js: + +```js +let Prism = require("prismjs"); +let Normalizer = require("prismjs/plugins/normalize-whitespace/normalize-whitespace"); +// Create a new Normalizer object +let nw = new Normalizer({ + "remove-trailing": true, + "remove-indent": true, + "left-trim": true, + "right-trim": true, + /*"break-lines": 80, + "indent": 2, + "remove-initial-line-feed": false, + "tabs-to-spaces": 4, + "spaces-to-tabs": 4*/ +}); + +// ..or use the default object from Prism +nw = Prism.plugins.NormalizeWhitespace; + +// The code snippet you want to highlight, as a string +let code = "\t\t\tlet data = 1; "; + +// Removes leading and trailing whitespace +// and then indents by 1 tab +code = nw.normalize(code, { + // Extra settings + indent: 1 +}); + +// Returns a highlighted HTML string +let html = Prism.highlight(code, Prism.languages.javascript); +``` + +
      diff --git a/src/plugins/normalize-whitespace/demo.md b/src/plugins/normalize-whitespace/demo.md new file mode 100644 index 0000000000..72389c0b6f --- /dev/null +++ b/src/plugins/normalize-whitespace/demo.md @@ -0,0 +1,53 @@ +--- +layout: null +eleventyExcludeFromCollections: true +--- + + +
      + +
      +
      +	
      +
      +
      +		let example = {
      +			foo: true,
      +
      +			bar: false
      +		};
      +
      +
      +	
      +
      +
      + +
      +
      +	
      +
      +
      +		let there_is_a_very_very_very_very_long_line_it_can_break_it_for_you = true;
      +
      +		if (there_is_a_very_very_very_very_long_line_it_can_break_it_for_you === true) {
      +		};
      +
      +
      +	
      +
      +
      + +
      + + + + + diff --git a/src/plugins/normalize-whitespace/normalize-whitespace.js b/src/plugins/normalize-whitespace/normalize-whitespace.js new file mode 100644 index 0000000000..1e46eb515a --- /dev/null +++ b/src/plugins/normalize-whitespace/normalize-whitespace.js @@ -0,0 +1,243 @@ +import prism from '../../global.js'; +import { getParentPre, isActive } from '../../shared/dom-util.js'; + +/** + * @param {string} str + * @returns {number} + */ +function tabLength (str) { + let res = 0; + for (let i = 0; i < str.length; ++i) { + if (str.charCodeAt(i) === '\t'.charCodeAt(0)) { + res += 3; + } + } + return str.length + res; +} + +/** @type {(keyof NormalizeWhitespaceDefaults)[]} */ +const normalizationOrder = [ + 'remove-trailing', + 'remove-indent', + 'left-trim', + 'right-trim', + 'break-lines', + 'indent', + 'remove-initial-line-feed', + 'tabs-to-spaces', + 'spaces-to-tabs', +]; + +const settingsConfig = { + 'remove-trailing': 'boolean', + 'remove-indent': 'boolean', + 'left-trim': 'boolean', + 'right-trim': 'boolean', + 'break-lines': 'number', + 'indent': 'number', + 'remove-initial-line-feed': 'boolean', + 'tabs-to-spaces': 'number', + 'spaces-to-tabs': 'number', +}; + +/** + * Reads normalizations settings from the given elements's `data-*` attributes. + * + * @param {Element} element + */ +function readSetting (element) { + const settings = {}; + for (const key of normalizationOrder) { + const attr = element.getAttribute('data-' + key); + const type = settingsConfig[key]; + if (attr !== null) { + try { + const value = JSON.parse(attr || 'true'); + if (typeof value === type) { + settings[key] = value; + } + } + catch { + // ignore error + } + } + } + return settings; +} + +const normalizationMethods = { + 'left-trim': input => input.replace(/^\s+/, ''), + 'right-trim': input => input.replace(/(^|\S)\s+$/, '$1'), + 'tabs-to-spaces': (input, spaces) => input.replace(/\t/g, ' '.repeat(spaces)), + 'spaces-to-tabs': (input, spaces) => input.replace(RegExp(` {${spaces}}`, 'g'), '\t'), + 'remove-trailing': input => input.replace(/\s*?$/gm, ''), + 'remove-initial-line-feed': input => input.replace(/^(?:\r?\n|\r)/, ''), + 'remove-indent': input => { + const indents = input.match(/^[^\S\n\r]*(?=\S)/gm); + + if (!indents || !indents[0].length) { + return input; + } + + indents.sort((a, b) => a.length - b.length); + + if (!indents[0].length) { + return input; + } + + return input.replace(RegExp('^' + indents[0], 'gm'), ''); + }, + 'indent': (input, tabs) => input.replace(/^[^\S\n\r]*(?=\S)/gm, '\t'.repeat(tabs) + '$&'), + 'break-lines': (input, characters) => { + const lines = input.split('\n'); + for (let i = 0; i < lines.length; ++i) { + if (tabLength(lines[i]) <= characters) { + continue; + } + + const line = lines[i].split(/(\s+)/); + let len = 0; + + for (let j = 0; j < line.length; ++j) { + const tl = tabLength(line[j]); + len += tl; + if (len > characters) { + line[j] = '\n' + line[j]; + len = tl; + } + } + lines[i] = line.join(''); + } + return lines.join('\n'); + }, +}; + +export class NormalizeWhitespace { + defaults; + constructor (defaults) { + this.defaults = { ...defaults }; + } + + setDefaults (defaults) { + Object.assign(this.defaults, defaults); + } + + /** + * @param {string} input + * @param {object} [settings] + * @returns {string} + */ + normalize (input, settings) { + settings = { ...this.defaults, ...settings }; + + for (const name of normalizationOrder) { + const value = settings[name]; + if (value !== undefined && value !== false) { + input = normalizationMethods[name](input, value); + } + } + + return input; + } +} + +/** @type {import('../../types.d.ts').PluginProto<'normalize-whitespace'>} */ +const Self = { + id: 'normalize-whitespace', + optional: 'unescaped-markup', + plugin () { + return new NormalizeWhitespace({ + 'remove-trailing': true, + 'remove-indent': true, + 'left-trim': true, + 'right-trim': true, + /*'break-lines': 80, + 'indent': 2, + 'remove-initial-line-feed': false, + 'tabs-to-spaces': 4, + 'spaces-to-tabs': 4*/ + }); + }, + effect (Prism) { + /** @type {NormalizeWhitespace} */ + const Normalizer = Prism.plugins.normalizeWhitespace; + + return Prism.hooks.add('before-sanity-check', env => { + if (!env.code) { + return; + } + + // Check classes + if (!isActive(env.element, 'whitespace-normalization', true)) { + return; + } + + // Simple mode if there is no env.element + if (!env.element.parentNode) { + env.code = Normalizer.normalize(env.code); + return; + } + + // Normal mode + const pre = getParentPre(env.element); + if (!pre) { + return; + } + + const settings = readSetting(pre); + + const children = pre.childNodes; + let before = ''; + let after = ''; + let codeFound = false; + + // Move surrounding whitespace from the
       tag into the  tag
      +			for (let i = 0; i < children.length; ++i) {
      +				const node = children[i];
      +
      +				if (node === env.element) {
      +					codeFound = true;
      +				}
      +				else if (node.nodeName === '#text') {
      +					if (codeFound) {
      +						after += node.nodeValue;
      +					}
      +					else {
      +						before += node.nodeValue;
      +					}
      +
      +					pre.removeChild(node);
      +					--i;
      +				}
      +			}
      +
      +			if (!env.element.children.length || !Prism.components.has('keep-markup')) {
      +				env.code = before + env.code + after;
      +				env.code = Normalizer.normalize(env.code, settings);
      +			}
      +			else {
      +				// Preserve markup for keep-markup plugin
      +				const html = before + env.element.innerHTML + after;
      +				env.element.innerHTML = Normalizer.normalize(html, settings);
      +				env.code = env.element.textContent || '';
      +			}
      +		});
      +	},
      +};
      +
      +export default Self;
      +
      +prism.components.add(Self);
      +
      +/**
      + * @typedef {object} NormalizeWhitespaceDefaults
      + * @property {number} break-lines
      + * @property {number} indent
      + * @property {boolean} left-trim
      + * @property {boolean} remove-indent
      + * @property {boolean} remove-initial-line-feed
      + * @property {boolean} remove-trailing
      + * @property {boolean} right-trim
      + * @property {number} spaces-to-tabs
      + * @property {number} tabs-to-spaces
      + */
      diff --git a/src/plugins/previewers/README.md b/src/plugins/previewers/README.md
      new file mode 100644
      index 0000000000..2a53e0786b
      --- /dev/null
      +++ b/src/plugins/previewers/README.md
      @@ -0,0 +1,221 @@
      +---
      +title: Previewers
      +description: Previewers for angles, colors, gradients, easing and time.
      +owner: Golmote
      +require: css-extras
      +resources:
      +  - /languages/css-extras.js { type="module" }
      +  - /languages/less.js { type="module" }
      +  - /languages/sass.js { type="module" }
      +  - /languages/scss.js { type="module" }
      +  - /languages/stylus.js { type="module" }
      +---
      +
      +
      + +# How to use + +You don't need to do anything. With this plugin loaded, a previewer will appear on hovering some values in code blocks. The following previewers are supported: + +- `angle` for angles +- `color` for colors +- `gradient` for gradients +- `easing` for easing functions +- `time` for durations + +This plugin is compatible with CSS, Less, Markup attributes, Sass, Scss and Stylus. + +
      + +
      + +# Examples + +## CSS + +```css +.example-gradient { + background: -webkit-linear-gradient(left, #cb60b3 0%, #c146a1 50%, #a80077 51%, #db36a4 100%); /* Chrome10+, Safari5.1+ */ + background: -moz-linear-gradient(left, #cb60b3 0%, #c146a1 50%, #a80077 51%, #db36a4 100%); /* FF3.6+ */ + background: -ms-linear-gradient(left, #cb60b3 0%, #c146a1 50%, #a80077 51%, #db36a4 100%); /* IE10+ */ + background: -o-linear-gradient(left, #cb60b3 0%, #c146a1 50%, #a80077 51%, #db36a4 100%); /* Opera 11.10+ */ + background: linear-gradient(to right, #cb60b3 0%, #c146a1 50%, #a80077 51%, #db36a4 100%); /* W3C */ +} +.example-angle { + transform: rotate(10deg); +} +.example-color { + color: rgba(255, 0, 0, 0.2); + background: purple; + border: 1px solid hsl(100, 70%, 40%); +} +.example-easing { + transition-timing-function: linear; +} +.example-time { + transition-duration: 3s; +} +``` + +## Markup attributes + +```html + + +``` + +## Less + +```less +@gradient: linear-gradient(135deg, #9dd53a 0%, #a1d54f 50%, #80c217 51%, #7cbc0a 100%); +.example-gradient { + background: -webkit-linear-gradient(-45deg, #9dd53a 0%, #a1d54f 50%, #80c217 51%, #7cbc0a 100%); /* Chrome10+, Safari5.1+ */ + background: -moz-linear-gradient(-45deg, #9dd53a 0%, #a1d54f 50%, #80c217 51%, #7cbc0a 100%); /* FF3.6+ */ + background: -ms-linear-gradient(-45deg, #9dd53a 0%, #a1d54f 50%, #80c217 51%, #7cbc0a 100%); /* IE10+ */ + background: -o-linear-gradient(-45deg, #9dd53a 0%, #a1d54f 50%, #80c217 51%, #7cbc0a 100%); /* Opera 11.10+ */ + background: linear-gradient(135deg, #9dd53a 0%, #a1d54f 50%, #80c217 51%, #7cbc0a 100%); /* W3C */ +} +@angle: 3rad; +.example-angle { + transform: rotate(.4turn) +} +@nice-blue: #5B83AD; +.example-color { + color: hsla(102, 53%, 42%, 0.4); +} +@easing: cubic-bezier(0.1, 0.3, 1, .4); +.example-easing { + transition-timing-function: ease; +} +@time: 1s; +.example-time { + transition-duration: 2s; +} +``` + +## Sass + +```sass +$gradient: linear-gradient(135deg, #9dd53a 0%, #a1d54f 50%, #80c217 51%, #7cbc0a 100%) +@mixin example-gradient + background: -moz-radial-gradient(center, ellipse cover, #f2f6f8 0%, #d8e1e7 50%, #b5c6d0 51%, #e0eff9 100%) + background: radial-gradient(ellipse at center, #f2f6f8 0%, #d8e1e7 50%, #b5c6d0 51%, #e0eff9 100%) +$angle: 380grad +@mixin example-angle + transform: rotate(-120deg) +.example-angle + transform: rotate(18rad) +$color: blue +@mixin example-color + color: rgba(147, 32, 34, 0.8) +.example-color + color: pink +$easing: ease-out +.example-easing + transition-timing-function: ease-in-out +$time: 3s +@mixin example-time + transition-duration: 800ms +.example-time + transition-duration: 0.8s +``` + +## Scss + +```scss +$gradient: linear-gradient(135deg, #9dd53a 0%, #a1d54f 50%, #80c217 51%, #7cbc0a 100%); +$attr: background; +.example-gradient { + #{$attr}-image: repeating-linear-gradient(10deg, rgba(255, 0, 0, 0), rgba(255, 0, 0, 1) 10px, rgba(255, 0, 0, 0) 20px); +} +$angle: 1.8turn; +.example-angle { + transform: rotate(-3rad) +} +$color: blue; +.example-color { + #{$attr}-color: rgba(255, 255, 0, 0.75); +} +$easing: linear; +.example-easing { + transition-timing-function: cubic-bezier(0.9, 0.1, .2, .4); +} +$time: 1s; +.example-time { + transition-duration: 10s +} +``` + +## Stylus + +```stylus +gradient = linear-gradient(135deg, #9dd53a 0%, #a1d54f 50%, #80c217 51%, #7cbc0a 100%) +.example-gradient + background-image: repeating-radial-gradient(circle, rgba(255, 0, 0, 0), rgba(255, 0, 0, 1) 10px, rgba(255, 0, 0, 0) 20px) +angle = 357deg +.example-angle + transform: rotate(100grad) +color = olive +.example-color + color: #000 +easing = ease-in +.example-easing + transition-timing-function: ease-out +time = 3s +.example-time + transition-duration: 0.5s +``` + + + +
      + +# Disabling a previewer + +All previewers are enabled by default. To enable only a subset of them, a `data-previewers` attribute can be added on a code block or any ancestor. Its value should be a space-separated list of previewers representing the subset. + +For example: + +```html +
      div {
      +	/* Only the previewer for color and time are enabled */
      +	color: red;
      +	transition-duration: 1s;
      +	/* The previewer for angles is not enabled. */
      +	transform: rotate(10deg);
      +}
      +``` + +will give the following result: + +```css { data-previewers="color time" } +div { + /* Only the previewers for color and time are enabled */ + color: red; + transition-duration: 1s; + /* The previewer for angles is not enabled. */ + transform: rotate(10deg); +} +``` + +
      + +
      + +# API + +This plugins provides a constructor that can be accessed through `Prism.plugins.Previewer`. + +Once a previewer has been instantiated, an HTML element is appended to the document body. This element will appear when specific tokens are hovered. + +## `new Prism.plugins.Previewer(type, updater, supportedLanguages)` + +- `type`: the token type this previewer is associated to. The previewer will be shown when hovering tokens of this type. + +- `updater`: the function that will be called each time an associated token is hovered. This function takes the text content of the token as its only parameter. The previewer HTML element can be accessed through the keyword `this`. This function must return `true` for the previewer to be shown. + +- `supportedLanguages`: an optional array of supported languages. The previewer will be available only for those. Defaults to `'*'`, which means every languages. + +- `initializer`: an optional function. This function will be called when the previewer is initialized, right after the HTML element has been appended to the document body. + +
      diff --git a/src/plugins/previewers/previewers.css b/src/plugins/previewers/previewers.css new file mode 100644 index 0000000000..b8e933111e --- /dev/null +++ b/src/plugins/previewers/previewers.css @@ -0,0 +1,255 @@ +.prism-previewer, +.prism-previewer:before, +.prism-previewer:after { + position: absolute; + pointer-events: none; +} +.prism-previewer, +.prism-previewer:after { + left: 50%; +} +.prism-previewer { + margin-top: -48px; + width: 32px; + height: 32px; + margin-left: -16px; + z-index: 10; + + opacity: 0; + -webkit-transition: opacity 0.25s; + -o-transition: opacity 0.25s; + transition: opacity 0.25s; +} +.prism-previewer.flipped { + margin-top: 0; + margin-bottom: -48px; +} +.prism-previewer:before, +.prism-previewer:after { + content: ""; + position: absolute; + pointer-events: none; +} +.prism-previewer:before { + top: -5px; + right: -5px; + left: -5px; + bottom: -5px; + border-radius: 10px; + border: 5px solid #fff; + box-shadow: + 0 0 3px rgba(0, 0, 0, 0.5) inset, + 0 0 10px rgba(0, 0, 0, 0.75); +} +.prism-previewer:after { + top: 100%; + width: 0; + height: 0; + margin: 5px 0 0 -7px; + border: 7px solid transparent; + border-color: rgba(255, 0, 0, 0); + border-top-color: #fff; +} +.prism-previewer.flipped:after { + top: auto; + bottom: 100%; + margin-top: 0; + margin-bottom: 5px; + border-top-color: rgba(255, 0, 0, 0); + border-bottom-color: #fff; +} +.prism-previewer.active { + opacity: 1; +} + +.prism-previewer-angle:before { + border-radius: 50%; + background: #fff; +} +.prism-previewer-angle:after { + margin-top: 4px; +} +.prism-previewer-angle svg { + width: 32px; + height: 32px; + -webkit-transform: rotate(-90deg); + -moz-transform: rotate(-90deg); + -ms-transform: rotate(-90deg); + -o-transform: rotate(-90deg); + transform: rotate(-90deg); +} +.prism-previewer-angle[data-negative] svg { + -webkit-transform: scaleX(-1) rotate(-90deg); + -moz-transform: scaleX(-1) rotate(-90deg); + -ms-transform: scaleX(-1) rotate(-90deg); + -o-transform: scaleX(-1) rotate(-90deg); + transform: scaleX(-1) rotate(-90deg); +} +.prism-previewer-angle circle { + fill: transparent; + stroke: hsl(200, 10%, 20%); + stroke-opacity: 0.9; + stroke-width: 32; + stroke-dasharray: 0, 500; +} + +.prism-previewer-gradient { + background-image: + linear-gradient(45deg, #bbb 25%, transparent 25%, transparent 75%, #bbb 75%, #bbb), + linear-gradient(45deg, #bbb 25%, #eee 25%, #eee 75%, #bbb 75%, #bbb); + background-size: 10px 10px; + background-position: + 0 0, + 5px 5px; + + width: 64px; + margin-left: -32px; +} +.prism-previewer-gradient:before { + content: none; +} +.prism-previewer-gradient div { + position: absolute; + top: -5px; + left: -5px; + right: -5px; + bottom: -5px; + border-radius: 10px; + border: 5px solid #fff; + box-shadow: + 0 0 3px rgba(0, 0, 0, 0.5) inset, + 0 0 10px rgba(0, 0, 0, 0.75); +} + +.prism-previewer-color { + background-image: + linear-gradient(45deg, #bbb 25%, transparent 25%, transparent 75%, #bbb 75%, #bbb), + linear-gradient(45deg, #bbb 25%, #eee 25%, #eee 75%, #bbb 75%, #bbb); + background-size: 10px 10px; + background-position: + 0 0, + 5px 5px; +} +.prism-previewer-color:before { + background-color: inherit; + background-clip: padding-box; +} + +.prism-previewer-easing { + margin-top: -76px; + margin-left: -30px; + width: 60px; + height: 60px; + background: #333; +} +.prism-previewer-easing.flipped { + margin-bottom: -116px; +} +.prism-previewer-easing svg { + width: 60px; + height: 60px; +} +.prism-previewer-easing circle { + fill: hsl(200, 10%, 20%); + stroke: white; +} +.prism-previewer-easing path { + fill: none; + stroke: white; + stroke-linecap: round; + stroke-width: 4; +} +.prism-previewer-easing line { + stroke: white; + stroke-opacity: 0.5; + stroke-width: 2; +} + +@-webkit-keyframes prism-previewer-time { + 0% { + stroke-dasharray: 0, 500; + stroke-dashoffset: 0; + } + 50% { + stroke-dasharray: 100, 500; + stroke-dashoffset: 0; + } + 100% { + stroke-dasharray: 0, 500; + stroke-dashoffset: -100; + } +} + +@-o-keyframes prism-previewer-time { + 0% { + stroke-dasharray: 0, 500; + stroke-dashoffset: 0; + } + 50% { + stroke-dasharray: 100, 500; + stroke-dashoffset: 0; + } + 100% { + stroke-dasharray: 0, 500; + stroke-dashoffset: -100; + } +} + +@-moz-keyframes prism-previewer-time { + 0% { + stroke-dasharray: 0, 500; + stroke-dashoffset: 0; + } + 50% { + stroke-dasharray: 100, 500; + stroke-dashoffset: 0; + } + 100% { + stroke-dasharray: 0, 500; + stroke-dashoffset: -100; + } +} + +@keyframes prism-previewer-time { + 0% { + stroke-dasharray: 0, 500; + stroke-dashoffset: 0; + } + 50% { + stroke-dasharray: 100, 500; + stroke-dashoffset: 0; + } + 100% { + stroke-dasharray: 0, 500; + stroke-dashoffset: -100; + } +} + +.prism-previewer-time:before { + border-radius: 50%; + background: #fff; +} +.prism-previewer-time:after { + margin-top: 4px; +} +.prism-previewer-time svg { + width: 32px; + height: 32px; + -webkit-transform: rotate(-90deg); + -moz-transform: rotate(-90deg); + -ms-transform: rotate(-90deg); + -o-transform: rotate(-90deg); + transform: rotate(-90deg); +} +.prism-previewer-time circle { + fill: transparent; + stroke: hsl(200, 10%, 20%); + stroke-opacity: 0.9; + stroke-width: 32; + stroke-dasharray: 0, 500; + stroke-dashoffset: 0; + -webkit-animation: prism-previewer-time linear infinite 3s; + -moz-animation: prism-previewer-time linear infinite 3s; + -o-animation: prism-previewer-time linear infinite 3s; + animation: prism-previewer-time linear infinite 3s; +} diff --git a/src/plugins/previewers/previewers.js b/src/plugins/previewers/previewers.js new file mode 100644 index 0000000000..b3376586c4 --- /dev/null +++ b/src/plugins/previewers/previewers.js @@ -0,0 +1,870 @@ +import prism from '../../global.js'; +import cssExtras from '../../languages/css-extras.js'; +import { forEach } from '../../util/iterables.js'; + +/** + * Returns the absolute X, Y offsets for an element. + * + * @param {Element} element + * @returns {{ top: number, right: number, bottom: number, left: number, width: number, height: number }} + */ +const getOffset = element => { + const elementBounds = element.getBoundingClientRect(); + let left = elementBounds.left; + let top = elementBounds.top; + const documentBounds = document.documentElement.getBoundingClientRect(); + left -= documentBounds.left; + top -= documentBounds.top; + + return { + top, + right: innerWidth - left - elementBounds.width, + bottom: innerHeight - top - elementBounds.height, + left, + width: elementBounds.width, + height: elementBounds.height, + }; +}; + +const TOKEN_CLASS = 'token'; +const ACTIVE_CLASS = 'active'; +const FLIPPED_CLASS = 'flipped'; + +/** + * @callback Updater + * @this {HTMLDivElement} + * @param {string} value + * @returns {boolean} + */ + +/** + * @typedef {Previewer & { _elt: HTMLDivElement }} PreviewerE + */ + +/** + * @callback Initializer + * @this {PreviewerE} + * @returns {void} + */ + +class Previewer { + /** @type {string} */ + type; + /** @type {string | string[]} */ + supportedLanguages; + /** @type {Updater} */ + updater; + /** @type {Initializer | undefined} */ + initializer; + + /** + * @type {HTMLDivElement | null} + */ + _elt = null; + + /** + * @type {Element | null} + */ + _token = null; + + /** + * Previewer constructor + * + * @param {string} type Unique previewer type + * @param {Updater} updater Function that will be called on mouseover. + * @param {string[] | string} [supportedLanguages='*'] Aliases of the languages this previewer must be enabled for. Defaults to "*", all languages. + * @param {Initializer} [initializer] Function that will be called on initialization. + */ + constructor (type, updater, supportedLanguages = '*', initializer) { + this.type = type; + this.supportedLanguages = supportedLanguages; + this.updater = updater; + this.initializer = initializer; + } + /** + * Creates the HTML element for the previewer. + * + * @returns {asserts this is PreviewerE} + */ + init () { + if (this._elt) { + return; + } + this._elt = document.createElement('div'); + this._elt.className = 'prism-previewer prism-previewer-' + this.type; + document.body.appendChild(this._elt); + if (this.initializer) { + this.initializer.call(/** @type {PreviewerE} */ (this)); + } + } + + /** + * @param {Element} token + * @returns {boolean} + */ + isDisabled (token) { + const previewers = token.closest('[data-previewers]')?.getAttribute('data-previewers'); + const parts = (previewers || '').split(/\s+/); + return !parts.includes(this.type); + } + /** + * Checks the class name of each hovered element. + * + * @param {Element} token + * @returns {void} + */ + tryShow (token) { + if (token.classList.contains(TOKEN_CLASS) && this.isDisabled(token)) { + return; + } + const target = token.closest(`.${TOKEN_CLASS}.${this.type}`); + if (target && target !== this._token) { + this._token = target; + this.show(); + } + } + /** + * Called on mouseout + */ + mouseout = () => { + this._token?.removeEventListener('mouseout', this.mouseout, false); + this._token = null; + this.hide(); + }; + /** + * Shows the previewer positioned properly for the current token. + */ + show () { + this.init(); + + if (!this._token) { + return; + } + + if (this.updater.call(this._elt, this._token.textContent || '')) { + this._token.addEventListener('mouseout', this.mouseout, false); + + const offset = getOffset(this._token); + this._elt.classList.add(ACTIVE_CLASS); + + if (offset.top - this._elt.offsetHeight > 0) { + this._elt.classList.remove(FLIPPED_CLASS); + this._elt.style.top = `${offset.top}px`; + this._elt.style.bottom = ''; + } + else { + this._elt.classList.add(FLIPPED_CLASS); + this._elt.style.bottom = `${offset.bottom}px`; + this._elt.style.top = ''; + } + + this._elt.style.left = `${offset.left + Math.min(200, offset.width / 2)}px`; + } + else { + this.hide(); + } + } + /** + * Hides the previewer. + */ + hide () { + this._elt?.classList.remove(ACTIVE_CLASS); + } +} + +export class PreviewerCollection { + /** + * Map of all registered previewers by language. + * + * @type {Map} + */ + byLanguages = new Map(); + /** + * Map of all registered previewers by type. + * + * @type {Map} + */ + byType = new Map(); + + /** + * @param {Previewer} previewer + */ + add (previewer) { + forEach(previewer.supportedLanguages, lang => { + let list = this.byLanguages.get(lang); + if (list === undefined) { + list = []; + this.byLanguages.set(lang, list); + } + if (!list.includes(previewer)) { + list.push(previewer); + } + }); + + this.byType.set(previewer.type, previewer); + } + + /** + * Initializes the mouseover event on the code block. + * + * @param {Element} elt The code block (`env.element`) + * @param {string} lang The language (`env.language`) + */ + initEvents (elt, lang) { + /** @type {Previewer[]} */ + const previewers = []; + previewers.push(...(this.byLanguages.get(lang) ?? [])); + previewers.push(...(this.byLanguages.get('*') ?? [])); + if (previewers.length === 0) { + return; + } + elt.addEventListener( + 'mouseover', + e => { + const target = e.target; + if (target) { + previewers.forEach(previewer => { + previewer.tryShow(/** @type {Element} */ (target)); + }); + } + }, + false + ); + } +} + +// TODO: Filthy hack to be able to load this script +const Prism = { languages: {} }; + +const previewers = { + // gradient must be defined before color and angle + 'gradient': { + create () { + /** + * Stores already processed gradients so that we don't + * make the conversion every time the previewer is shown + */ + const cache = {}; + + /** + * Returns a W3C-valid linear gradient + * + * @param {string} prefix Vendor prefix if any ("-moz-", "-webkit-", etc.) + * @param {string} func Gradient function name ("linear-gradient") + * @param {string[]} values Array of the gradient function parameters (["0deg", "red 0%", "blue 100%"]) + */ + function convertToW3CLinearGradient (prefix, func, values) { + // Default value for angle + let angle = '180deg'; + + const first = values[0]; + if ( + first && + /^(?:-?(?:\d+(?:\.\d+)?|\.\d+)(?:deg|rad)|bottom|left|right|to\b|top)/.test( + first + ) + ) { + angle = first; + values.shift(); + if (!angle.includes('to ')) { + // Angle uses old keywords + // W3C syntax uses "to" + opposite keywords + if (angle.includes('top')) { + if (angle.includes('left')) { + angle = 'to bottom right'; + } + else if (angle.includes('right')) { + angle = 'to bottom left'; + } + else { + angle = 'to bottom'; + } + } + else if (angle.includes('bottom')) { + if (angle.includes('left')) { + angle = 'to top right'; + } + else if (angle.includes('right')) { + angle = 'to top left'; + } + else { + angle = 'to top'; + } + } + else if (angle.includes('left')) { + angle = 'to right'; + } + else if (angle.includes('right')) { + angle = 'to left'; + } + else if (prefix) { + // Angle is shifted by 90deg in prefixed gradients + if (angle.includes('deg')) { + angle = `${90 - parseFloat(angle)}deg`; + } + else if (angle.includes('rad')) { + angle = `${Math.PI / 2 - parseFloat(angle)}rad`; + } + } + } + } + + return func + '(' + angle + ',' + values.join(',') + ')'; + } + + /** + * Returns a W3C-valid radial gradient + * + * @param {string} prefix Vendor prefix if any ("-moz-", "-webkit-", etc.) + * @param {string} func Gradient function name ("linear-gradient") + * @param {string[]} values Array of the gradient function parameters (["0deg", "red 0%", "blue 100%"]) + */ + function convertToW3CRadialGradient (prefix, func, values) { + if (!values[0].includes('at')) { + // Looks like old syntax + + // Default values + let position = 'center'; + let shape = 'ellipse'; + let size = 'farthest-corner'; + + if (/\b(?:bottom|center|left|right|top)\b|^\d+/.test(values[0])) { + // Found a position + // Remove angle value, if any + position = /** @type {string} */ (values.shift()).replace( + /\s*-?\d+(?:deg|rad)\s*/, + '' + ); + } + if (/\b(?:circle|closest|contain|cover|ellipse|farthest)\b/.test(values[0])) { + // Found a shape and/or size + const shapeSizeParts = /** @type {string} */ (values.shift()).split(/\s+/); + if ( + shapeSizeParts[0] && + (shapeSizeParts[0] === 'circle' || shapeSizeParts[0] === 'ellipse') + ) { + shape = /** @type {string} */ (shapeSizeParts.shift()); + } + if (shapeSizeParts[0]) { + size = /** @type {string} */ (shapeSizeParts.shift()); + } + + // Old keywords are converted to their synonyms + if (size === 'cover') { + size = 'farthest-corner'; + } + else if (size === 'contain') { + size = 'clothest-side'; + } + } + + return ( + func + + '(' + + shape + + ' ' + + size + + ' at ' + + position + + ',' + + values.join(',') + + ')' + ); + } + return func + '(' + values.join(',') + ')'; + } + + /** + * Converts a gradient to a W3C-valid one + * Does not support old webkit syntax (-webkit-gradient(linear...) and -webkit-gradient(radial...)) + * + * @param {string} gradient The CSS gradient + */ + function convertToW3CGradient (gradient) { + if (cache[gradient]) { + return cache[gradient]; + } + + const values = gradient + .replace( + /^(?:\b|\B-[a-z]{1,10}-)(?:repeating-)?(?:linear|radial)-gradient\(|\)$/g, + '' + ) + .split(/\s*,\s*/); + const parts = gradient.match( + /^(\b|\B-[a-z]{1,10}-)((?:repeating-)?(?:linear|radial)-gradient)/ + ); + + if (!parts) { + return (cache[gradient] = ''); + } + + // "", "-moz-", etc. + const prefix = parts[1]; + // "linear-gradient", "radial-gradient", etc. + const func = parts[2]; + + if (func.includes('linear')) { + return (cache[gradient] = convertToW3CLinearGradient(prefix, func, values)); + } + else if (func.includes('radial')) { + return (cache[gradient] = convertToW3CRadialGradient(prefix, func, values)); + } + return (cache[gradient] = func + '(' + values.join(',') + ')'); + } + + return new Previewer( + 'gradient', + function (value) { + const first = /** @type {HTMLElement | null} */ (this.firstChild); + if (!first) { + return false; + } + first.style.backgroundImage = ''; + first.style.backgroundImage = convertToW3CGradient(value); + return !!first.style.backgroundImage; + }, + '*', + function () { + this._elt.innerHTML = '
      '; + } + ); + }, + tokens: { + 'gradient': { + pattern: + /(?:\b|\B-[a-z]{1,10}-)(?:repeating-)?(?:linear|radial)-gradient\((?:(?:hsl|rgb)a?\(.+?\)|[^\)])+\)/gi, + inside: { + 'function': /[\w-]+(?=\()/, + 'punctuation': /[(),]/, + }, + }, + }, + languages: { + 'css': true, + 'less': true, + 'sass': [ + { + lang: 'sass', + before: 'punctuation', + inside: 'inside', + root: Prism.languages.sass && Prism.languages.sass['variable-line'], + }, + { + lang: 'sass', + before: 'punctuation', + inside: 'inside', + root: Prism.languages.sass && Prism.languages.sass['property-line'], + }, + ], + 'scss': true, + 'stylus': [ + { + lang: 'stylus', + before: 'func', + inside: 'rest', + root: + Prism.languages.stylus && + Prism.languages.stylus['property-declaration'].inside, + }, + { + lang: 'stylus', + before: 'func', + inside: 'rest', + root: + Prism.languages.stylus && + Prism.languages.stylus['variable-declaration'].inside, + }, + ], + }, + }, + 'angle': { + create () { + return new Previewer( + 'angle', + function (value) { + const num = parseFloat(value); + const unit = value.match(/[a-z]+$/i); + let max = 1; + if (!num || !unit) { + return false; + } + + switch (unit[0]) { + case 'deg': + max = 360; + break; + case 'grad': + max = 400; + break; + case 'rad': + max = 2 * Math.PI; + break; + case 'turn': + max = 1; + } + + const percentage = ((100 * num) / max) % 100; + this[`${num < 0 ? 'set' : 'remove'}Attribute`]('data-negative', ''); + const circle = this.querySelector('circle'); + if (circle) { + circle.style.strokeDasharray = `${Math.abs(percentage)},500`; + } + return true; + }, + '*', + function () { + this._elt.innerHTML = + '' + + '' + + ''; + } + ); + }, + tokens: { + 'angle': /(?:\b|\B-|(?=\B\.))(?:\d+(?:\.\d+)?|\.\d+)(?:deg|g?rad|turn)\b/i, + }, + languages: { + 'css': true, + 'less': true, + 'markup': { + lang: 'markup', + before: 'punctuation', + inside: 'inside', + root: Prism.languages.markup && Prism.languages.markup['tag'].inside['attr-value'], + }, + 'sass': [ + { + lang: 'sass', + inside: 'inside', + root: Prism.languages.sass && Prism.languages.sass['property-line'], + }, + { + lang: 'sass', + before: 'operator', + inside: 'inside', + root: Prism.languages.sass && Prism.languages.sass['variable-line'], + }, + ], + 'scss': true, + 'stylus': [ + { + lang: 'stylus', + before: 'func', + inside: 'rest', + root: + Prism.languages.stylus && + Prism.languages.stylus['property-declaration'].inside, + }, + { + lang: 'stylus', + before: 'func', + inside: 'rest', + root: + Prism.languages.stylus && + Prism.languages.stylus['variable-declaration'].inside, + }, + ], + }, + }, + 'color': { + create () { + return new Previewer('color', function (value) { + this.style.backgroundColor = ''; + this.style.backgroundColor = value; + return !!this.style.backgroundColor; + }); + }, + tokens: { + 'color': [Prism.languages.css?.['hexcode']].concat(Prism.languages.css?.['color']), + }, + languages: { + // CSS extras is required, so css and scss are not necessary + 'css': false, + 'less': true, + 'markup': { + lang: 'markup', + before: 'punctuation', + inside: 'inside', + root: Prism.languages.markup && Prism.languages.markup['tag'].inside['attr-value'], + }, + 'sass': [ + { + lang: 'sass', + before: 'punctuation', + inside: 'inside', + root: Prism.languages.sass && Prism.languages.sass['variable-line'], + }, + { + lang: 'sass', + inside: 'inside', + root: Prism.languages.sass && Prism.languages.sass['property-line'], + }, + ], + 'scss': false, + 'stylus': [ + { + lang: 'stylus', + before: 'hexcode', + inside: 'rest', + root: + Prism.languages.stylus && + Prism.languages.stylus['property-declaration'].inside, + }, + { + lang: 'stylus', + before: 'hexcode', + inside: 'rest', + root: + Prism.languages.stylus && + Prism.languages.stylus['variable-declaration'].inside, + }, + ], + }, + }, + 'easing': { + create () { + const identifierMap = { + 'linear': '0,0,1,1', + 'ease': '.25,.1,.25,1', + 'ease-in': '.42,0,1,1', + 'ease-out': '0,0,.58,1', + 'ease-in-out': '.42,0,.58,1', + }; + return new Previewer( + 'easing', + function (value) { + value = identifierMap[value] || value; + + const p = value.match(/-?(?:\d+(?:\.\d+)?|\.\d+)/g); + + if (p && p.length === 4) { + const values = p + .map(Number) + .map((p, i) => (i % 2 ? 1 - p : p) * 100) + .map(String); + + this.querySelector('path')?.setAttribute( + 'd', + 'M0,100 C' + + values[0] + + ',' + + values[1] + + ', ' + + values[2] + + ',' + + values[3] + + ', 100,0' + ); + + const lines = this.querySelectorAll('line'); + lines[0].setAttribute('x2', values[0]); + lines[0].setAttribute('y2', values[1]); + lines[1].setAttribute('x2', values[2]); + lines[1].setAttribute('y2', values[3]); + + return true; + } + + return false; + }, + '*', + function () { + this._elt.innerHTML = + '' + + '' + + '' + + '' + + '' + + '' + + '' + + '' + + '' + + ''; + } + ); + }, + tokens: { + 'easing': { + pattern: + /\bcubic-bezier\((?:-?(?:\d+(?:\.\d+)?|\.\d+),\s*){3}-?(?:\d+(?:\.\d+)?|\.\d+)\)\B|\b(?:ease(?:-in)?(?:-out)?|linear)(?=\s|[;}]|$)/i, + inside: { + 'function': /[\w-]+(?=\()/, + 'punctuation': /[(),]/, + }, + }, + }, + languages: { + 'css': true, + 'less': true, + 'sass': [ + { + lang: 'sass', + inside: 'inside', + before: 'punctuation', + root: Prism.languages.sass && Prism.languages.sass['variable-line'], + }, + { + lang: 'sass', + inside: 'inside', + root: Prism.languages.sass && Prism.languages.sass['property-line'], + }, + ], + 'scss': true, + 'stylus': [ + { + lang: 'stylus', + before: 'hexcode', + inside: 'rest', + root: + Prism.languages.stylus && + Prism.languages.stylus['property-declaration'].inside, + }, + { + lang: 'stylus', + before: 'hexcode', + inside: 'rest', + root: + Prism.languages.stylus && + Prism.languages.stylus['variable-declaration'].inside, + }, + ], + }, + }, + + 'time': { + create () { + return new Previewer( + 'time', + function (value) { + const num = parseFloat(value); + const unit = value.match(/[a-z]+$/i); + if (!num || !unit) { + return false; + } + const u = unit[0]; + const circle = this.querySelector('circle'); + if (circle) { + circle.style.animationDuration = `${2 * num}${u}`; + } + return true; + }, + '*', + function () { + this._elt.innerHTML = + '' + + '' + + ''; + } + ); + }, + tokens: { + 'time': /(?:\b|\B-|(?=\B\.))(?:\d+(?:\.\d+)?|\.\d+)m?s\b/i, + }, + languages: { + 'css': true, + 'less': true, + 'markup': { + lang: 'markup', + before: 'punctuation', + inside: 'inside', + root: Prism.languages.markup && Prism.languages.markup['tag'].inside['attr-value'], + }, + 'sass': [ + { + lang: 'sass', + inside: 'inside', + root: Prism.languages.sass && Prism.languages.sass['property-line'], + }, + { + lang: 'sass', + before: 'operator', + inside: 'inside', + root: Prism.languages.sass && Prism.languages.sass['variable-line'], + }, + ], + 'scss': true, + 'stylus': [ + { + lang: 'stylus', + before: 'hexcode', + inside: 'rest', + root: + Prism.languages.stylus && + Prism.languages.stylus['property-declaration'].inside, + }, + { + lang: 'stylus', + before: 'hexcode', + inside: 'rest', + root: + Prism.languages.stylus && + Prism.languages.stylus['variable-declaration'].inside, + }, + ], + }, + }, +}; + +/** @type {import('../../types.d.ts').PluginProto<'previewers'>} */ +const Self = { + id: 'previewers', + require: cssExtras, + plugin () { + const collection = new PreviewerCollection(); + + if (typeof document !== 'undefined') { + for (const previewer of Object.values(previewers)) { + collection.add(previewer.create()); + } + } + + return collection; + }, + effect (Prism) { + /* + Prism.hooks.add('before-highlight', (env) => { + for (const previewer of Object.values(previewers)) { + const languages = previewer.languages; + if (languages[env.language] && !languages[env.language].initialized) { + let lang = languages[env.language]; + if (!Array.isArray(lang)) { + lang = [lang]; + } + lang.forEach((lang) => { + let before; let inside; let root; let skip; + if (lang === true) { + before = 'important'; + inside = env.language; + lang = env.language; + } else { + before = lang.before || 'important'; + inside = lang.inside || lang.lang; + root = lang.root || Prism.languages; + skip = lang.skip; + lang = env.language; + } + + if (!skip && Prism.languages[lang]) { + Prism.languages.insertBefore(inside, before, previewer.tokens, root); + env.grammar = Prism.languages[lang]; + + languages[env.language] = { initialized: true }; + } + }); + } + } + }); + */ + + return Prism.hooks.add('after-highlight', env => { + /** @type {PreviewerCollection} */ + const previewers = Prism.plugins.previewers; + previewers.initEvents(env.element, env.language); + }); + }, +}; + +export default Self; + +prism.components.add(Self); diff --git a/src/plugins/show-invisibles/README.md b/src/plugins/show-invisibles/README.md new file mode 100644 index 0000000000..43cd63587e --- /dev/null +++ b/src/plugins/show-invisibles/README.md @@ -0,0 +1,20 @@ +--- +title: Show Invisibles +description: Show hidden characters such as tabs and line breaks. +owner: LeaVerou +optional: + - autolinker + - data-uri-highlight +--- + +
      + +# Examples + +
      
      +
      +
      
      +
      +
      
      +
      +
      diff --git a/src/plugins/show-invisibles/show-invisibles.css b/src/plugins/show-invisibles/show-invisibles.css new file mode 100644 index 0000000000..1bdc7513a6 --- /dev/null +++ b/src/plugins/show-invisibles/show-invisibles.css @@ -0,0 +1,34 @@ +.token.tab:not(:empty), +.token.cr, +.token.lf, +.token.space { + position: relative; +} + +.token.tab:not(:empty):before, +.token.cr:before, +.token.lf:before, +.token.space:before { + color: #808080; + opacity: 0.6; + position: absolute; +} + +.token.tab:not(:empty):before { + content: "\21E5"; +} + +.token.cr:before { + content: "\240D"; +} + +.token.crlf:before { + content: "\240D\240A"; +} +.token.lf:before { + content: "\240A"; +} + +.token.space:before { + content: "\00B7"; +} diff --git a/src/plugins/show-invisibles/show-invisibles.js b/src/plugins/show-invisibles/show-invisibles.js new file mode 100644 index 0000000000..404d0cdbc1 --- /dev/null +++ b/src/plugins/show-invisibles/show-invisibles.js @@ -0,0 +1,25 @@ +import prism from '../../global.js'; +import { tokenizeStrings } from '../../shared/tokenize-strings.js'; + +/** @type {import('../../types.d.ts').PluginProto<'show-invisibles'>} */ +const Self = { + id: 'show-invisibles', + optional: ['autolinker', 'data-uri-highlight', 'diff-highlight'], + effect (Prism) { + const invisibles = { + 'tab': /\t/, + 'crlf': /\r\n/, + 'lf': /\n/, + 'cr': /\r/, + 'space': / /, + }; + + return Prism.hooks.add('after-tokenize', env => { + tokenizeStrings(env.tokens, code => Prism.tokenize(code, invisibles)); + }); + }, +}; + +export default Self; + +prism.components.add(Self); diff --git a/src/plugins/show-language/README.md b/src/plugins/show-language/README.md new file mode 100644 index 0000000000..1d071abeb6 --- /dev/null +++ b/src/plugins/show-language/README.md @@ -0,0 +1,40 @@ +--- +title: Show Language +description: Display the highlighted language in code blocks (inline code does not show the label). +owner: nauzilus +require: toolbar +noCSS: true +resources: + - /plugins/toolbar.css + - /plugins/toolbar.js { type="module" } +--- + +
      + +# Examples + +## JavaScript + +
      
      +
      +## CSS
      +
      +
      
      +
      +## HTML (Markup)
      +
      +
      
      +
      +## SVG
      +
      +The `data-language`{ .language-markup } attribute can be used to display a specific label whether it has been defined as a language or not.
      +
      +
      
      +
      +## Plain text
      +
      +```none
      +Just some text (aka. not code).
      +```
      +
      +
      diff --git a/src/plugins/show-language/show-language.js b/src/plugins/show-language/show-language.js new file mode 100644 index 0000000000..ba37e80b85 --- /dev/null +++ b/src/plugins/show-language/show-language.js @@ -0,0 +1,34 @@ +import prism from '../../global.js'; +import { getParentPre } from '../../shared/dom-util.js'; +import { getTitle } from '../../shared/meta/title-data.js'; +import toolbar from '../toolbar/toolbar.js'; + +/** @type {import('../../types.d.ts').PluginProto<'show-language'>} */ +const Self = { + id: 'show-language', + require: toolbar, + effect (Prism) { + /** @type {import('../toolbar/toolbar.js').Toolbar} */ + const toolbar = Prism.plugins.toolbar; + + return toolbar.registerButton('show-language', env => { + const pre = getParentPre(env.element); + if (!pre) { + return; + } + + const title = pre.getAttribute('data-language') || getTitle(env.language); + if (!title) { + return; + } + + const element = document.createElement('span'); + element.textContent = title; + return element; + }); + }, +}; + +export default Self; + +prism.components.add(Self); diff --git a/src/plugins/toolbar/README.md b/src/plugins/toolbar/README.md new file mode 100644 index 0000000000..2c6b8183e4 --- /dev/null +++ b/src/plugins/toolbar/README.md @@ -0,0 +1,98 @@ +--- +title: Toolbar +description: Attach a toolbar for plugins to easily register buttons on the top of a code block. +owner: mAAdhaTTah +body_classes: language-markup +resources: ./demo.js { defer } +--- + +
      + +# How to use + +The Toolbar plugin allows for several methods to register your button, using the `Prism.plugins.toolbar.registerButton` function. + +The simplest method is through the HTML API. Add a `data-label` attribute to the `pre` element, and the Toolbar plugin will read the value of that attribute and append a label to the code snippet. + +```html { data-label="Hello World!" } +
      
      +```
      +
      +If you want to provide arbitrary HTML to the label, create a `template` element with the HTML you want in the label, and provide the `template` element's `id` to `data-label`. The Toolbar plugin will use the template's content for the button. You can also use to declare your event handlers inline:
      +
      +```html { data-label="my-label-button" }
      +
      
      +```
      +
      +```html
      +
      +```
      +
      +## Registering buttons
      +
      +For more flexibility, the Toolbar exposes a JavaScript function that can be used to register new buttons or labels to the Toolbar, `Prism.plugins.toolbar.registerButton`.
      +
      +The function accepts a key for the button and an object with a `text` property string and an optional `onClick` function or a `url` string. The `onClick` function will be called when the button is clicked, while the `url` property will be set to the anchor tag's `href`.
      +
      +```js
      +Prism.plugins.toolbar.registerButton('hello-world', {
      +	text: 'Hello World!', // required
      +	onClick: function (env) {
      +		// optional
      +		alert(`This code snippet is written in ${env.language}.`);
      +	},
      +});
      +```
      +
      +See how the above code registers the `Hello World!` button? You can use this in your plugins to register your own buttons with the toolbar.
      +
      +If you need more control, you can provide a function to `registerButton` that returns either a `span`, `a`, or `button` element.
      +
      +```js
      +Prism.plugins.toolbar.registerButton('select-code', env => {
      +	let button = document.createElement('button');
      +	button.innerHTML = 'Select Code';
      +
      +	button.addEventListener('click', () => {
      +		// Source: http://stackoverflow.com/a/11128179/2757940
      +		if (document.body.createTextRange) {
      +			// ms
      +			let range = document.body.createTextRange();
      +			range.moveToElementText(env.element);
      +			range.select();
      +		} else if (window.getSelection) {
      +			// moz, opera, webkit
      +			let selection = window.getSelection();
      +			let range = document.createRange();
      +			range.selectNodeContents(env.element);
      +			selection.removeAllRanges();
      +			selection.addRange(range);
      +		}
      +	});
      +
      +	return button;
      +});
      +```
      +
      +The above function creates the Select Code button you see, and when you click it, the code gets highlighted.
      +
      +## Ordering buttons
      +
      +By default, the buttons will be added to the code snippet in the order they were registered. If more control over the order is needed, the `data-toolbar-order` attribute can be used. Given a comma-separated list of button names, it will ensure that these buttons will be displayed in the given order.  
      +Buttons not listed will not be displayed. This means that buttons can be disabled using this technique.
      +
      +Example: The "Hello World!" button will appear before the "Select Code" button and the custom label button will not be displayed.
      +
      +```html { data-toolbar-order="hello-world,select-code" data-label="Hello World!" }
      +
      +``` + +The `data-toolbar-order` attribute is inherited, so you can define the button order for the whole document by adding the attribute to the `body` of the page. + +```html + +``` + +
      + + diff --git a/src/plugins/toolbar/demo.js b/src/plugins/toolbar/demo.js new file mode 100644 index 0000000000..388f4532f9 --- /dev/null +++ b/src/plugins/toolbar/demo.js @@ -0,0 +1,32 @@ +Prism.plugins.toolbar.registerButton('hello-world', { + text: 'Hello World!', // required + onClick: function (env) { + // optional + alert(`This code snippet is written in ${env.language}.`); + }, +}); + +Prism.plugins.toolbar.registerButton('select-code', env => { + let button = document.createElement('button'); + button.innerHTML = 'Select Code'; + + button.addEventListener('click', () => { + // Source: http://stackoverflow.com/a/11128179/2757940 + if (document.body.createTextRange) { + // ms + let range = document.body.createTextRange(); + range.moveToElementText(env.element); + range.select(); + } + else if (window.getSelection) { + // moz, opera, webkit + let selection = window.getSelection(); + let range = document.createRange(); + range.selectNodeContents(env.element); + selection.removeAllRanges(); + selection.addRange(range); + } + }); + + return button; +}); diff --git a/src/plugins/toolbar/toolbar.css b/src/plugins/toolbar/toolbar.css new file mode 100644 index 0000000000..2ddda3dbdd --- /dev/null +++ b/src/plugins/toolbar/toolbar.css @@ -0,0 +1,65 @@ +div.code-toolbar { + position: relative; +} + +div.code-toolbar > .toolbar { + position: absolute; + z-index: 10; + top: 0.3em; + right: 0.2em; + transition: opacity 0.3s ease-in-out; + opacity: 0; +} + +div.code-toolbar:hover > .toolbar { + opacity: 1; +} + +/* Separate line b/c rules are thrown out if selector is invalid. + IE11 and old Edge versions don't support :focus-within. */ +div.code-toolbar:focus-within > .toolbar { + opacity: 1; +} + +div.code-toolbar > .toolbar > .toolbar-item { + display: inline-block; +} + +div.code-toolbar > .toolbar > .toolbar-item > a { + cursor: pointer; +} + +div.code-toolbar > .toolbar > .toolbar-item > button { + background: none; + border: 0; + color: inherit; + font: inherit; + line-height: normal; + overflow: visible; + padding: 0; + -webkit-user-select: none; /* for button */ + -moz-user-select: none; + -ms-user-select: none; +} + +div.code-toolbar > .toolbar > .toolbar-item > a, +div.code-toolbar > .toolbar > .toolbar-item > button, +div.code-toolbar > .toolbar > .toolbar-item > span { + color: #bbb; + font-size: 0.8em; + padding: 0 0.5em; + background: #f5f2f0; + background: rgba(224, 224, 224, 0.2); + box-shadow: 0 2px 0 0 rgba(0, 0, 0, 0.2); + border-radius: 0.5em; +} + +div.code-toolbar > .toolbar > .toolbar-item > a:hover, +div.code-toolbar > .toolbar > .toolbar-item > a:focus, +div.code-toolbar > .toolbar > .toolbar-item > button:hover, +div.code-toolbar > .toolbar > .toolbar-item > button:focus, +div.code-toolbar > .toolbar > .toolbar-item > span:hover, +div.code-toolbar > .toolbar > .toolbar-item > span:focus { + color: inherit; + text-decoration: none; +} diff --git a/src/plugins/toolbar/toolbar.js b/src/plugins/toolbar/toolbar.js new file mode 100644 index 0000000000..d6f3f8e8ce --- /dev/null +++ b/src/plugins/toolbar/toolbar.js @@ -0,0 +1,238 @@ +import prism from '../../global.js'; +import { getParentPre } from '../../shared/dom-util.js'; +import { noop } from '../../shared/util.js'; + +/** + * Returns the callback order of the given element. + * + * @param {Element} element + */ +function getOrder (element) { + /** @type {Element | null} */ + let e = element; + for (; e; e = e.parentElement) { + let order = e.getAttribute('data-toolbar-order'); + if (order != null) { + order = order.trim(); + if (order.length) { + return order.split(/\s*,\s*/); + } + else { + return []; + } + } + } +} + +export class Toolbar { + /** + * @type {ButtonFactory[]} + */ + callbacks = []; + + /** + * @type {Map} + */ + map = new Map(); + + /** + * Register a button callback with the toolbar. + * + * The returned function will remove the added callback again when called. + * + * @param {string} key + * @param {ButtonOptions | ButtonFactory} opts + * @returns {function():void} + */ + registerButton (key, opts) { + /** @type {ButtonFactory} */ + let callback; + + if (typeof opts === 'function') { + callback = opts; + } + else { + callback = function (env) { + const { text, url, onClick, className } = opts; + + let element; + if (typeof onClick === 'function') { + element = document.createElement('button'); + element.type = 'button'; + element.addEventListener('click', function () { + onClick.call(this, env); + }); + } + else if (typeof url === 'string') { + element = document.createElement('a'); + element.href = url; + } + else { + element = document.createElement('span'); + } + + if (className) { + element.classList.add(className); + } + + element.textContent = text; + + return element; + }; + } + + if (this.map.has(key)) { + console.warn('There is a button with the key "' + key + '" registered already.'); + return noop; + } + + this.map.set(key, callback); + this.callbacks.push(callback); + + return () => { + this.map.delete(key); + const index = this.callbacks.indexOf(callback); + if (index !== -1) { + this.callbacks.splice(index, 1); + } + }; + } + + /** + * @type {HookCallback} + */ + hook = env => { + // Check if inline or actual code block (credit to line-numbers plugin) + const pre = getParentPre(env.element); + if (!pre) { + return; + } + + const container = pre.parentElement; + if (!container) { + return; + } + + // Autoloader rehighlights, so only do this once. + if (container.classList.contains('code-toolbar')) { + return; + } + + // Create wrapper for
       to prevent scrolling toolbar with content
      +		const wrapper = document.createElement('div');
      +		wrapper.classList.add('code-toolbar');
      +		container.insertBefore(wrapper, pre);
      +		wrapper.appendChild(pre);
      +
      +		// Setup the toolbar
      +		const toolbar = document.createElement('div');
      +		toolbar.classList.add('toolbar');
      +
      +		// order callbacks
      +		let elementCallbacks = this.callbacks;
      +		const order = getOrder(env.element);
      +		if (order) {
      +			elementCallbacks = /** @type {ButtonFactory[]} */ (
      +				order.map(key => this.map.get(key) || noop)
      +			);
      +		}
      +
      +		elementCallbacks.forEach(callback => {
      +			const element = callback(env);
      +
      +			if (!element) {
      +				return;
      +			}
      +
      +			const item = document.createElement('div');
      +			item.classList.add('toolbar-item');
      +
      +			item.appendChild(element);
      +			toolbar.appendChild(item);
      +		});
      +
      +		// Add our toolbar to the currently created wrapper of 
       tag
      +		wrapper.appendChild(toolbar);
      +	};
      +}
      +
      +/** @type {ButtonFactory} */
      +const label = env => {
      +	const pre = getParentPre(env.element);
      +	if (!pre) {
      +		return;
      +	}
      +
      +	if (!pre.hasAttribute('data-label')) {
      +		return;
      +	}
      +
      +	let element;
      +	let template;
      +	const text = pre.getAttribute('data-label');
      +	try {
      +		// Any normal text will blow up this selector.
      +		if (text) {
      +			template = document.querySelector('template#' + text);
      +		}
      +	}
      +	catch {
      +		/* noop */
      +	}
      +
      +	if (template) {
      +		element = /** @type {HTMLTemplateElement} */ (template).content;
      +	}
      +	else {
      +		const url = pre.getAttribute('data-url');
      +		if (url) {
      +			element = document.createElement('a');
      +			element.href = url;
      +		}
      +		else {
      +			element = document.createElement('span');
      +		}
      +
      +		element.textContent = text;
      +	}
      +
      +	return element;
      +};
      +
      +/** @type {import('../../types.d.ts').PluginProto<'toolbar'>} */
      +const Self = {
      +	id: 'toolbar',
      +	plugin () {
      +		const toolbar = new Toolbar();
      +		toolbar.registerButton('label', label);
      +		return toolbar;
      +	},
      +	effect (Prism) {
      +		/** @type {Toolbar} */
      +		const toolbar = Prism.plugins.toolbar;
      +		return Prism.hooks.add('complete', toolbar.hook);
      +	},
      +};
      +
      +export default Self;
      +
      +prism.components.add(Self);
      +
      +/**
      + * @typedef {import('../../types.d.ts').HookEnv} HookEnv
      + * @typedef {import('../../types.d.ts').HookCallback} HookCallback
      + */
      +
      +/**
      + * @typedef {object} ButtonOptions
      + * @property {string} text The text displayed.
      + * @property {string} [url] The URL of the link which will be created.
      + * @property {(env: HookEnv) => void} [onClick] The event listener for the `click` event of the created button.
      + * @property {string} [className] The class attribute to include with the element.
      + */
      +
      +/**
      + * @callback ButtonFactory
      + * @param {HookEnv} env
      + * @returns {Node | undefined}
      + */
      diff --git a/src/plugins/treeview-icons/README.md b/src/plugins/treeview-icons/README.md
      new file mode 100644
      index 0000000000..dd14042925
      --- /dev/null
      +++ b/src/plugins/treeview-icons/README.md
      @@ -0,0 +1,63 @@
      +---
      +title: Treeview
      +description: A language with special styles to highlight file system tree structures.
      +owner: Golmote
      +---
      +
      +
      + +# How to use + +You may use `tree -F` to get a compatible text structure. + +```treeview +root_folder/ +|-- a first folder/ +| |-- holidays.mov +| |-- javascript-file.js +| `-- some_picture.jpg +|-- documents/ +| |-- spreadsheet.xls +| |-- manual.pdf +| |-- document.docx +| `-- presentation.ppt +| `-- test +|-- empty_folder/ +|-- going deeper/ +| |-- going deeper/ +| | `-- going deeper/ +| | `-- going deeper/ +| | `-- .secret_file +| |-- style.css +| `-- index.html +|-- music and movies/ +| |-- great-song.mp3 +| |-- S01E02.new.episode.avi +| |-- S01E02.new.episode.nfo +| `-- track 1.cda +|-- .gitignore +|-- .htaccess +|-- .npmignore +|-- archive 1.zip +|-- archive 2.tar.gz +|-- logo.svg +`-- README.md +``` + +You can also use the following box-drawing characters to represent the tree: + +```treeview +root_folder/ +├── a first folder/ +| ├── holidays.mov +| ├── javascript-file.js +| └── some_picture.jpg +├── documents/ +| ├── spreadsheet.xls +| ├── manual.pdf +| ├── document.docx +| └── presentation.ppt +└── etc. +``` + +
      diff --git a/plugins/treeview/icons/archive.svg b/src/plugins/treeview-icons/icons/archive.svg similarity index 100% rename from plugins/treeview/icons/archive.svg rename to src/plugins/treeview-icons/icons/archive.svg diff --git a/plugins/treeview/icons/audio.svg b/src/plugins/treeview-icons/icons/audio.svg similarity index 100% rename from plugins/treeview/icons/audio.svg rename to src/plugins/treeview-icons/icons/audio.svg diff --git a/plugins/treeview/icons/code.svg b/src/plugins/treeview-icons/icons/code.svg similarity index 100% rename from plugins/treeview/icons/code.svg rename to src/plugins/treeview-icons/icons/code.svg diff --git a/plugins/treeview/icons/excel.svg b/src/plugins/treeview-icons/icons/excel.svg similarity index 100% rename from plugins/treeview/icons/excel.svg rename to src/plugins/treeview-icons/icons/excel.svg diff --git a/plugins/treeview/icons/file.svg b/src/plugins/treeview-icons/icons/file.svg similarity index 100% rename from plugins/treeview/icons/file.svg rename to src/plugins/treeview-icons/icons/file.svg diff --git a/plugins/treeview/icons/folder.svg b/src/plugins/treeview-icons/icons/folder.svg similarity index 100% rename from plugins/treeview/icons/folder.svg rename to src/plugins/treeview-icons/icons/folder.svg diff --git a/plugins/treeview/icons/image.svg b/src/plugins/treeview-icons/icons/image.svg similarity index 100% rename from plugins/treeview/icons/image.svg rename to src/plugins/treeview-icons/icons/image.svg diff --git a/plugins/treeview/icons/pdf.svg b/src/plugins/treeview-icons/icons/pdf.svg similarity index 100% rename from plugins/treeview/icons/pdf.svg rename to src/plugins/treeview-icons/icons/pdf.svg diff --git a/plugins/treeview/icons/powerpoint.svg b/src/plugins/treeview-icons/icons/powerpoint.svg similarity index 100% rename from plugins/treeview/icons/powerpoint.svg rename to src/plugins/treeview-icons/icons/powerpoint.svg diff --git a/plugins/treeview/icons/text.svg b/src/plugins/treeview-icons/icons/text.svg similarity index 100% rename from plugins/treeview/icons/text.svg rename to src/plugins/treeview-icons/icons/text.svg diff --git a/plugins/treeview/icons/video.svg b/src/plugins/treeview-icons/icons/video.svg similarity index 100% rename from plugins/treeview/icons/video.svg rename to src/plugins/treeview-icons/icons/video.svg diff --git a/plugins/treeview/icons/word.svg b/src/plugins/treeview-icons/icons/word.svg similarity index 100% rename from plugins/treeview/icons/word.svg rename to src/plugins/treeview-icons/icons/word.svg diff --git a/src/plugins/treeview-icons/treeview-icons.css b/src/plugins/treeview-icons/treeview-icons.css new file mode 100644 index 0000000000..792a13c5f2 --- /dev/null +++ b/src/plugins/treeview-icons/treeview-icons.css @@ -0,0 +1,168 @@ +.token.treeview-part .entry-line { + position: relative; + text-indent: -99em; + display: inline-block; + vertical-align: top; + width: 1.2em; +} +.token.treeview-part .entry-line:before, +.token.treeview-part .line-h:after { + content: ""; + position: absolute; + top: 0; + left: 50%; + width: 50%; + height: 100%; +} +.token.treeview-part .line-h:before, +.token.treeview-part .line-v:before { + border-left: 1px solid #ccc; +} +.token.treeview-part .line-v-last:before { + height: 50%; + border-left: 1px solid #ccc; + border-bottom: 1px solid #ccc; +} +.token.treeview-part .line-h:after { + height: 50%; + border-bottom: 1px solid #ccc; +} +.token.treeview-part .entry-name { + position: relative; + display: inline-block; + vertical-align: top; +} +.token.treeview-part .entry-name.dotfile { + opacity: 0.5; +} + +/* @GENERATED-FONT */ +@font-face { + font-family: "PrismTreeview"; + /** + * This font is generated from the .svg files in the `icons` folder. See the `treeviewIconFont` function in + * `scripts/build.js` for more information. + * + * Use the following escape sequences to refer to a specific icon: + * + * - \ea01 file + * - \ea02 folder + * - \ea03 image + * - \ea04 audio + * - \ea05 video + * - \ea06 text + * - \ea07 code + * - \ea08 archive + * - \ea09 pdf + * - \ea0a excel + * - \ea0b powerpoint + * - \ea0c word + */ + src: url("data:application/font-woff;base64,d09GRgABAAAAAAmEAAsAAAAAEzwAAQAAAAAAAAAAAAAAAAAAAAAAAAAAAABHU1VCAAABCAAAAMUAAAE2JkkqGE9TLzIAAAHQAAAAQQAAAGBLtUI0Y21hcAAAAhQAAAEfAAADPGXJZIpnbHlmAAADNAAAA+MAAAlACm1VqmhlYWQAAAcYAAAAKgAAADZfxj5jaGhlYQAAB0QAAAAYAAAAJAFbANRobXR4AAAHXAAAABAAAACACGQAAGxvY2EAAAdsAAAAJQAAAEI7NDjibWF4cAAAB5QAAAAfAAAAIAEzAHZuYW1lAAAHtAAAATcAAAJSfUrk+HBvc3QAAAjsAAAAlQAAANURv2OieJxNjksSwVAQRU9IEOTnG4nPFowMjZSRoTI3UqpSRgaWYAVWYDFWYD1uOlR5Vf3S5/W9N40DtFmyprbZ7vaExfF6IcOlOuX8v3eK8+lI60eaufZtqd74pKzYcuDGnQdPXtRoMLA7IaJHTN98oSi2ro4nxZDRl9vijFwUmW+k9KZcOVO5Ur27UoyVFSrTMfLUl9kVN1SxMiZGTVVi0zJtSkd/SJjbJjN1IQspfe3RIzBH1xx9saP3QIpY+6VS5XLMPw6UD6QAAAB4nGNgYXBmnMDAysDAUMhQCyQloXQoAweDHgMDEwMrMwNWEJDmmsJwgCHxFQ/DZiBXgOEwAyOQZkRRxAUAq90IcAAAAHicvdLbboJAEAbgf0XxBKiI4AEh6WXTlzL2ZNKDMbb1AZo+UK/6TPsS9h9mkt72pl3yOZlBmM0yADoAArqiNuC+4CDrk1XX1AMMmnobH8wT9NBCiA122OOAk4/OZ9Y32OKB+dG7Jv9Zjs8kWOKC1yXzGVZIMUaMHCXvjJChxgRrTLFAgTkq/tuxS8CeHfbqsmefuxgi4utC/P3iHtNxnJcJMMrqSbO1Yl4t/6H1r1YkP+7dshpy/mpGW7Oia5PSjRnTrYnpzuR0b0raGZ4Cv60a0aPJ6MnIHp7NhPZmTQczpaNZ0Isp6NXM6c1UdDI8eu+UzKVvKUgMlMyxbyuZZd9RMuM+VJDYVZDYU5DYV5A4UDL7fqggMVKIvgF69jrmAHiclVXNbttGEN6Z/dOSXEoK/2LLkg0xIN3EdWxRJGMktR0HENo0BdoaLer2EqBAip5zywP0llMvTU699QX6fums7DSNEhoqJc7uzg535/tmdpZxxt68Ya/Z3yximyxnrJ3AGGJ1B6bFZzBv7sMszXRSFXehyOrcKfPkdy6U+E0oJS6Ex8MCYBtv3Rbyq5fciOdO/6eQgquC08Qfz5T45BWjB51gf9EvY3u0Uz0vrrZxraJtU9quaZP3tx9DNUtfK7FwC+8IKcULoQJrXhhrzY5nHxl7sJxTTjwl8Xjhpp46wS1jcgXjbVath7NN8rrNWj0t5s0sjVUn7ufPIltUPd8f+H43B5/uRJEtrTMa+MSEWvHrHvuC/bimZ8RKrPPpXcjfWrVNNmubebkPIWRprNUEyqWimKp4qYjTTgCHiAAwtCTRDmGPo7UoBaDnIYgI0RhQAqVE0Y3vG8CGFhggxIBDWPDBLvW5wmAnQMX7aDYNCokqVLT2h3Gp2MM10buk+K+NG+Z6Wpd1e1B1gjyVvZ4spdbyB4KLoxF2Y7nQZHlpDnjEAUZmxD4Ss4o9Yudrev02nS/t6ux9FNXquBPHBuICCMEC8fFV+06D14D63oVXOUFx0e4DEpsIyn2mAD+Cr2Vfsp/WxNfMtiGN+y77cq0oN4u2SvvgetN53ZYP4ASaWUbH6QSOocomkOhY5Z04c/JQAty4ASDJ1wzgF8QUOEiIIhIcdgHBggMAIcI10aQkJrONm8AFLe+QbwMIDjc3YDn1hMM5OGJc4+Js/uWBM8181l/WjZZO6LeucuUJwR7DZZusw07u7LKUahuFfn4CdZVQWdOzZu7OZ3pqNy39zzu4sLZ66EOf2AxsD0VIqen1ei/tu6fsAh8Erz7POVJx6iHfDQJ+SAbCnb/eSqy/Zt9RrH9mv65bg7JZNctSfRhPi1JplU/zsjh2hShp2qbdh+V3iU5ineqmDaFVWTsvqVs6+6zIqd53Rv+JkEqFHDGwKhv2DSAHV4ZAKk1a7l4aHEijdIkuEcI+70kuH3Bfy2tOwX3kErkQHBXlvvYoI8D4YWD6RggQgR4cYijMhTBU+84kR+0bXyFnYoWvk3VvkarO2yx3TdmSSCpdLptMd6KfbGmK9ERHkXY9PaZeN6TM8+LY87a2PC+KPG80/qC2Nuz0f3hbV7P2GOb7cAeSKmndeHmDdLo73jGhlqpHVN0ym0EguVL8Wn+HwO0gEN69rRHyIXeHbpXfdW8DIrI6gcNtqK7YTXK6F5eyqjtd9vRwYAHsYKAnxgMIgz6AZ64pIt5ZjaI687w9LY6OhN7z2D+hNgTCAHicY2BkYGAAYv3Xf7Li+W2+MnAzbGbAAP//Myxn2AJkcDAwgfgA+ZUIQwAAeJxjYGRgYNjMwAAnlzMwMqACBQA0BQIweJxjYACCzSRiKgIAUCEIZXicY2AAAjOGIoZ9jHaMM5g4mHqY/jFPY37D4saygDgIABq6EnkAAAB4nGNgZGBgUGDIYuBkAAEmIOYCQgaG/2A+AwAW0wGqAHicfZFNbsIwEIVf+KsKaoXUqouu3E03lRJgVw4AW4QQ+wB2CEri1DEg9j1HT9BzcI6eouu+pN6kEvVI42/evJmFDaCPMzyUx8NNlcvTwBWrX26S7h23yE+O2+jBd9yh/uq4ixdMHPdwhzdu8FrXVB7x7riBW3w4blL/dNwinx238YAvxx3q3467WHp9xz08e2pm4iJdGCkPsTzOZbRPQlPTasVSmiLWmRj6g5o+lZk0oZUbsTqJ4hCNrFVCGZ2Kic6sTBItcqN3cm39rbX5OAiU0/21TjGDQYwCKRYkyTiwljhizhxhjwQhO5d9lztLZsNODI0MAkO+++Af/5Q5q2ZCWN4bzqxwYi7oiTCiaqFYK3o0Nwj+WLm7dCcMTSWvejsqa+o+ttVUjjEChvrj9+niph8pXG9DAHicbcHJDoIwFEDRXm3FeZ5H/DRCX7UJWtIg8Pku3HqO6qgf1H8pHbpoDD0S+gwYMmLMhCkz5ixYsmLNhi079hw4cuLMhSs3Uu5KO19Iz4XCSjT+lT3EZB/rg6m9laAraSudBytJFvOnr6VbWmekzaUYlqGRWAb/rnQTosXhKRAClsiLjAcfaipacp6UNLyV+gLQNSS+AAAA") + format("woff"); +} + +.token.treeview-part .entry-name:before { + content: "\ea01"; + font-family: "PrismTreeview"; + font-size: inherit; + font-style: normal; + -webkit-font-smoothing: antialiased; + -moz-osx-font-smoothing: grayscale; + width: 2.5ex; + display: inline-block; +} + +.token.treeview-part .entry-name.dir:before { + content: "\ea02"; +} +.token.treeview-part .entry-name.ext-bmp:before, +.token.treeview-part .entry-name.ext-eps:before, +.token.treeview-part .entry-name.ext-gif:before, +.token.treeview-part .entry-name.ext-jpe:before, +.token.treeview-part .entry-name.ext-jpg:before, +.token.treeview-part .entry-name.ext-jpeg:before, +.token.treeview-part .entry-name.ext-png:before, +.token.treeview-part .entry-name.ext-svg:before, +.token.treeview-part .entry-name.ext-tiff:before { + content: "\ea03"; +} +.token.treeview-part .entry-name.ext-cfg:before, +.token.treeview-part .entry-name.ext-conf:before, +.token.treeview-part .entry-name.ext-config:before, +.token.treeview-part .entry-name.ext-csv:before, +.token.treeview-part .entry-name.ext-ini:before, +.token.treeview-part .entry-name.ext-log:before, +.token.treeview-part .entry-name.ext-md:before, +.token.treeview-part .entry-name.ext-nfo:before, +.token.treeview-part .entry-name.ext-txt:before { + content: "\ea06"; +} +.token.treeview-part .entry-name.ext-asp:before, +.token.treeview-part .entry-name.ext-aspx:before, +.token.treeview-part .entry-name.ext-c:before, +.token.treeview-part .entry-name.ext-cc:before, +.token.treeview-part .entry-name.ext-cpp:before, +.token.treeview-part .entry-name.ext-cs:before, +.token.treeview-part .entry-name.ext-css:before, +.token.treeview-part .entry-name.ext-h:before, +.token.treeview-part .entry-name.ext-hh:before, +.token.treeview-part .entry-name.ext-htm:before, +.token.treeview-part .entry-name.ext-html:before, +.token.treeview-part .entry-name.ext-jav:before, +.token.treeview-part .entry-name.ext-java:before, +.token.treeview-part .entry-name.ext-js:before, +.token.treeview-part .entry-name.ext-php:before, +.token.treeview-part .entry-name.ext-rb:before, +.token.treeview-part .entry-name.ext-xml:before { + content: "\ea07"; +} +.token.treeview-part .entry-name.ext-7z:before, +.token.treeview-part .entry-name.ext-bz:before, +.token.treeview-part .entry-name.ext-bz2:before, +.token.treeview-part .entry-name.ext-gz:before, +.token.treeview-part .entry-name.ext-rar:before, +.token.treeview-part .entry-name.ext-tar:before, +.token.treeview-part .entry-name.ext-tgz:before, +.token.treeview-part .entry-name.ext-zip:before { + content: "\ea08"; +} +.token.treeview-part .entry-name.ext-aac:before, +.token.treeview-part .entry-name.ext-au:before, +.token.treeview-part .entry-name.ext-cda:before, +.token.treeview-part .entry-name.ext-flac:before, +.token.treeview-part .entry-name.ext-mp3:before, +.token.treeview-part .entry-name.ext-oga:before, +.token.treeview-part .entry-name.ext-ogg:before, +.token.treeview-part .entry-name.ext-wav:before, +.token.treeview-part .entry-name.ext-wma:before { + content: "\ea04"; +} +.token.treeview-part .entry-name.ext-avi:before, +.token.treeview-part .entry-name.ext-flv:before, +.token.treeview-part .entry-name.ext-mkv:before, +.token.treeview-part .entry-name.ext-mov:before, +.token.treeview-part .entry-name.ext-mp4:before, +.token.treeview-part .entry-name.ext-mpeg:before, +.token.treeview-part .entry-name.ext-mpg:before, +.token.treeview-part .entry-name.ext-ogv:before, +.token.treeview-part .entry-name.ext-webm:before { + content: "\ea05"; +} +.token.treeview-part .entry-name.ext-pdf:before { + content: "\ea09"; +} +.token.treeview-part .entry-name.ext-xls:before, +.token.treeview-part .entry-name.ext-xlsx:before { + content: "\ea0a"; +} +.token.treeview-part .entry-name.ext-doc:before, +.token.treeview-part .entry-name.ext-docm:before, +.token.treeview-part .entry-name.ext-docx:before { + content: "\ea0c"; +} +.token.treeview-part .entry-name.ext-pps:before, +.token.treeview-part .entry-name.ext-ppt:before, +.token.treeview-part .entry-name.ext-pptx:before { + content: "\ea0b"; +} diff --git a/src/plugins/treeview-icons/treeview-icons.js b/src/plugins/treeview-icons/treeview-icons.js new file mode 100644 index 0000000000..afeafe2590 --- /dev/null +++ b/src/plugins/treeview-icons/treeview-icons.js @@ -0,0 +1,12 @@ +import prism from '../../global.js'; +import treeview from '../../languages/treeview.js'; + +/** @type {import('../../types.d.ts').PluginProto<'treeview-icons'>} */ +const Self = { + id: 'treeview-icons', + require: treeview, +}; + +export default Self; + +prism.components.add(Self); diff --git a/src/plugins/unescaped-markup/README.md b/src/plugins/unescaped-markup/README.md new file mode 100644 index 0000000000..7847526e69 --- /dev/null +++ b/src/plugins/unescaped-markup/README.md @@ -0,0 +1,159 @@ +--- +title: Unescaped Markup +description: Write markup without having to escape anything. +owner: LeaVerou +--- + +
      + +# How to use + +This plugin provides several methods of achieving the same thing: + +- Instead of using `
      ` elements, use `
      +```
      +
      +- Use an HTML-comment to escape your code:
      +
      +```html
      +
      +``` + +This will only work if the `code` element contains exactly one comment and nothing else (not even spaces). E.g. ` ` and `text` will not work. + +
      + +
      + +# Examples + +View source to see that the following didn’t need escaping (except for </script>, that does): + + + +

      The next example uses the HTML-comment method:

      + +
      + +
      + +
      + +# FAQ + +Why not use the HTML `