@readme/syntax-highlighter 13.0.0 → 14.0.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/dist/index.js +1 -1
- package/dist/index.node.js +1 -1
- package/package.json +15 -26
- package/src/codeMirror/index.jsx +18 -6
- package/src/index.js +4 -2
- package/src/utils/uppercase.js +1 -0
package/dist/index.node.js
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
(()=>{var e={226:e=>{var l={aspx:"asp",bash:"shell","c++":"cplusplus","c#":"csharp",clj:"clojure",cljc:"clojure",cljx:"clojure",coffeescript:"javascript",cpp:"cplusplus",cql:"sql",cs:"csharp",docker:"dockerfile",ecmascript:"javascript",erl:"erlang",gql:"graphql",gradle:"groovy",handlebars:"html",hbs:"html",jl:"julia",jruby:"ruby",js:"javascript",kt:"kotlin",less:"css",macruby:"ruby",md:"markdown",ml:"ocaml",mssql:"sql",mysql:"sql",node:"javascript","obj-c":"objectivec","obj-c++":"objectivecplusplus","objc++":"objectivecplusplus",objc:"objectivec",objcpp:"objectivecplusplus",objectivecpp:"objectivecplusplus",pgsql:"sql",pl:"perl",plsql:"sql",postgres:"sql",postgresql:"sql",ps1:"powershell",py:"python",rake:"ruby",rb:"ruby",rbx:"ruby",rs:"rust",sass:"css",scss:"css",sh:"shell",solidity:"sol",sqlite:"sql",styl:"css",stylus:"css",xhtml:"html",yml:"yaml",zsh:"shell"};e.exports=function(e){return e in l?l[e]:e}},980:e=>{function l(e,l){return function(e){if(Array.isArray(e))return e}(e)||function(e,l){var t=null==e?null:"undefined"!=typeof Symbol&&e[Symbol.iterator]||e["@@iterator"];if(null!=t){var s,r,c,a,o=[],i=!0,p=!1;try{if(c=(t=t.call(e)).next,0===l){if(Object(t)!==t)return;i=!1}else for(;!(i=(s=c.call(t)).done)&&(o.push(s.value),o.length!==l);i=!0);}catch(e){p=!0,r=e}finally{try{if(!i&&null!=t.return&&(a=t.return(),Object(a)!==a))return}finally{if(p)throw r}}return o}}(e,l)||function(e,l){if(
|
|
1
|
+
(()=>{var e={226:e=>{var l={aspx:"asp",bash:"shell","c++":"cplusplus","c#":"csharp",clj:"clojure",cljc:"clojure",cljx:"clojure",coffeescript:"javascript",cpp:"cplusplus",cql:"sql",cs:"csharp",docker:"dockerfile",ecmascript:"javascript",erl:"erlang",gql:"graphql",gradle:"groovy",handlebars:"html",hbs:"html",jl:"julia",jruby:"ruby",js:"javascript",kt:"kotlin",less:"css",macruby:"ruby",md:"markdown",ml:"ocaml",mssql:"sql",mysql:"sql",node:"javascript","obj-c":"objectivec","obj-c++":"objectivecplusplus","objc++":"objectivecplusplus",objc:"objectivec",objcpp:"objectivecplusplus",objectivecpp:"objectivecplusplus",pgsql:"sql",pl:"perl",plsql:"sql",postgres:"sql",postgresql:"sql",ps1:"powershell",py:"python",rake:"ruby",rb:"ruby",rbx:"ruby",rs:"rust",sass:"css",scss:"css",sh:"shell",solidity:"sol",sqlite:"sql",styl:"css",stylus:"css",xhtml:"html",yml:"yaml",zsh:"shell"};e.exports=function(e){return e in l?l[e]:e}},548:e=>{var l={asp:"ASP.NET",aspx:"ASP.NET",bash:"Bash",c:"C","c#":"C#","c++":"C++",coffeescript:"CoffeeScript",clj:"Clojure",cljc:"Clojure",cljx:"Clojure",clojure:"Clojure",cplusplus:"C++",cpp:"C++",cql:"Cassandra",cs:"C#",csharp:"C#",css:"CSS",curl:"cURL",d:"D",dart:"Dart",diff:"Diff",dockerfile:"Dockerfile",ecmascript:"ECMAScript",erl:"Erlang",erlang:"Erlang",go:"Go",gql:"GraphQL",gradle:"Gradle",graphql:"GraphQL",groovy:"Groovy",handlebars:"Handlebars",hbs:"Handlebars",haml:"HAML",haxe:"Haxe",html:"HTML",http:"HTTP",java:"Java",javascript:"JavaScript",jinja2:"Jinja2",jl:"Julia",jruby:"JRuby",js:"JavaScript",json:"JSON",jsx:"JSX",julia:"Julia",kotlin:"Kotlin",kt:"Kotlin",less:"LESS",liquid:"Liquid",lua:"Lua",macruby:"MacRuby",markdown:"Markdown",md:"Markdown",mermaid:"Mermaid",ml:"OCaml",mssql:"SQL Server",mysql:"MySQL",node:"Node",objc:"Objective-C","objc++":"Objective-C++",objcpp:"Objective-C++",objectivec:"Objective-C",objectivecpp:"Objective-C++",objectivecplusplus:"Objective-C++",ocaml:"OCaml",perl:"Perl",php:"PHP",pl:"Perl",pgsql:"PL/pgSQL",plsql:"PL/SQL",postgres:"PostgreSQL",postgresql:"PostgreSQL",powershell:"PowerShell",ps1:"PowerShell",python:"Python",py:"Python",r:"R",rake:"Rake",rb:"Ruby",rbx:"Rubinius",rs:"Rust",ruby:"Ruby",rust:"Rust",sass:"Sass",scala:"Scala",scss:"SCSS",sh:"Shell",shell:"Shell",smarty:"Smarty",solidity:"Solidity",sql:"SQL",sqlite:"SQLite",stylus:"Stylus",styl:"Stylus",swift:"Swift",text:"Text",toml:"TOML",twig:"Twig",typescript:"TypeScript",xhtml:"XHTML",xml:"XML",yaml:"YAML",yml:"YAML",zsh:"Zsh"};e.exports=function(e){return e in l?l[e]:e}},980:e=>{function l(e,l){return function(e){if(Array.isArray(e))return e}(e)||function(e,l){var t=null==e?null:"undefined"!=typeof Symbol&&e[Symbol.iterator]||e["@@iterator"];if(null!=t){var s,r,c,a,o=[],i=!0,p=!1;try{if(c=(t=t.call(e)).next,0===l){if(Object(t)!==t)return;i=!1}else for(;!(i=(s=c.call(t)).done)&&(o.push(s.value),o.length!==l);i=!0);}catch(e){p=!0,r=e}finally{try{if(!i&&null!=t.return&&(a=t.return(),Object(a)!==a))return}finally{if(p)throw r}}return o}}(e,l)||function(e,l){if(e){if("string"==typeof e)return t(e,l);var s={}.toString.call(e).slice(8,-1);return"Object"===s&&e.constructor&&(s=e.constructor.name),"Map"===s||"Set"===s?Array.from(e):"Arguments"===s||/^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(s)?t(e,l):void 0}}(e,l)||function(){throw new TypeError("Invalid attempt to destructure non-iterable instance.\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.")}()}function t(e,l){(null==l||l>e.length)&&(l=e.length);for(var t=0,s=Array(l);t<l;t++)s[t]=e[t];return s}var s={asp:"clike",aspx:"clike",bash:"shell",c:"clike","c#":["clike","text/x-csharp"],"c++":["clike","text/x-c++src"],clj:"clojure",cljc:"clojure",cljx:"clojure",coffeescript:"javascript",cplusplus:["clike","text/x-c++src"],cpp:["clike","text/x-c++src"],cql:["sql","text/x-cassandra"],cs:["clike","text/x-csharp"],csharp:["clike","text/x-csharp"],curl:"shell",d:"d",diff:"diff",ecmascript:"javascript",erl:"erlang",go:["go","text/x-go"],gradle:"groovy",gql:"graphql",handlebars:"htmlmixed",hbs:"htmlmixed",html:"htmlmixed",java:["clike","text/x-java"],jl:"julia",js:"javascript",jsx:"jsx",json:["javascript","application/ld+json"],jruby:"ruby",kotlin:["clike","text/x-kotlin"],kt:["clike","text/x-kotlin"],less:"css",liquid:"htmlmixed",lua:"lua",node:"javascript",macruby:"ruby",markdown:"gfm",ml:["mllike","text/x-ocaml"],mssql:["sql","text/x-mssql"],mysql:["sql","text/x-mysql"],objc:["clike","text/x-objectivec"],"objc++":["clike","text/x-objectivec++"],objcpp:["clike","text/x-objectivec++"],objectivec:["clike","text/x-objectivec"],objectivecpp:["clike","text/x-objectivec++"],objectivecplusplus:["clike","text/x-objectivec++"],ocaml:["mllike","text/x-ocaml"],php:["php","text/x-php"],pgsql:["sql","text/x-pgsql"],pl:"perl",plsql:["sql","text/x-plsql"],postgres:["sql","text/x-pgsql"],postgresql:["sql","text/x-pgsql"],ps1:"powershell",py:"python",r:"r",rake:"ruby",rb:"ruby",rbx:"ruby",rs:"rust",sass:"css",scala:["clike","text/x-scala"],scss:"css",sh:"shell",sol:"solidity",solidity:"solidity",sql:["sql","text/x-sql"],sqlite:["sql","text/x-sqlite"],styl:"css",stylus:"css",text:["null","text/plain"],ts:["javascript","text/typescript"],typescript:["javascript","text/typescript"],xhtml:"htmlmixed",yml:"yaml",zsh:"shell"};e.exports={modes:s,getMode:function(e){var t=e;return t in s&&(t=s[t],Array.isArray(t)&&(t=l(t,2)[1])),t}}}},l={};function t(s){var r=l[s];if(void 0!==r)return r.exports;var c=l[s]={exports:{}};return e[s](c,c.exports,t),c.exports}t.n=e=>{var l=e&&e.__esModule?()=>e.default:()=>e;return t.d(l,{a:l}),l},t.d=(e,l)=>{for(var s in l)t.o(l,s)&&!t.o(e,s)&&Object.defineProperty(e,s,{enumerable:!0,get:l[s]})},t.o=(e,l)=>Object.prototype.hasOwnProperty.call(e,l),t.r=e=>{"undefined"!=typeof Symbol&&Symbol.toStringTag&&Object.defineProperty(e,Symbol.toStringTag,{value:"Module"}),Object.defineProperty(e,"__esModule",{value:!0})};var s={};(()=>{"use strict";t.r(s),t.d(s,{canonical:()=>l.a,getMode:()=>r.getMode,modes:()=>r.modes,uppercase:()=>a.a});var e=t(226),l=t.n(e),r=t(980),c=t(548),a=t.n(c)})(),module.exports=s})();
|
package/package.json
CHANGED
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@readme/syntax-highlighter",
|
|
3
3
|
"description": "ReadMe's React-based syntax highlighter",
|
|
4
|
-
"version": "
|
|
4
|
+
"version": "14.0.0",
|
|
5
5
|
"main": "dist/index.node.js",
|
|
6
6
|
"browser": "dist/index.js",
|
|
7
7
|
"license": "ISC",
|
|
@@ -11,7 +11,7 @@
|
|
|
11
11
|
},
|
|
12
12
|
"homepage": "https://readmeio.github.io/syntax-highlighter/",
|
|
13
13
|
"engines": {
|
|
14
|
-
"node": ">=
|
|
14
|
+
"node": ">=20"
|
|
15
15
|
},
|
|
16
16
|
"scripts": {
|
|
17
17
|
"build": "webpack --progress",
|
|
@@ -27,50 +27,39 @@
|
|
|
27
27
|
"codemirror": "^5.54.0",
|
|
28
28
|
"codemirror-graphql": "1.0.2",
|
|
29
29
|
"prop-types": "^15.7.2",
|
|
30
|
-
"react-codemirror2": "^
|
|
30
|
+
"react-codemirror2": "^8.0.0"
|
|
31
31
|
},
|
|
32
32
|
"peerDependencies": {
|
|
33
|
-
"@readme/variable": "
|
|
34
|
-
"react": "
|
|
35
|
-
"react-dom": "
|
|
33
|
+
"@readme/variable": "^17.0.0",
|
|
34
|
+
"react": "18.x",
|
|
35
|
+
"react-dom": "18.x"
|
|
36
36
|
},
|
|
37
37
|
"devDependencies": {
|
|
38
38
|
"@babel/preset-env": "^7.24.4",
|
|
39
39
|
"@babel/preset-react": "^7.24.1",
|
|
40
40
|
"@readme/eslint-config": "^14.0.0",
|
|
41
41
|
"@testing-library/jest-dom": "^6.4.2",
|
|
42
|
-
"@testing-library/react": "^
|
|
42
|
+
"@testing-library/react": "^16.3.0",
|
|
43
43
|
"babel-jest": "^29.7.0",
|
|
44
|
-
"babel-loader": "^
|
|
44
|
+
"babel-loader": "^10.0.0",
|
|
45
45
|
"core-js": "^3.36.1",
|
|
46
|
-
"css-loader": "^
|
|
46
|
+
"css-loader": "^7.1.1",
|
|
47
47
|
"eslint": "^8.57.0",
|
|
48
|
-
"glob": "^
|
|
48
|
+
"glob": "^11.0.0",
|
|
49
49
|
"html-webpack-plugin": "^5.6.0",
|
|
50
50
|
"identity-obj-proxy": "^3.0.0",
|
|
51
51
|
"jest": "^29.7.0",
|
|
52
52
|
"jest-environment-jsdom": "^29.7.0",
|
|
53
|
-
"node-sass": "^9.0.0",
|
|
54
53
|
"prettier": "^3.2.5",
|
|
54
|
+
"prettier-2": "npm:prettier@^2.8.8",
|
|
55
55
|
"regenerator-runtime": "^0.14.1",
|
|
56
|
+
"sass": "^1.89.2",
|
|
56
57
|
"sass-loader": "^13.3.2",
|
|
57
|
-
"style-loader": "^
|
|
58
|
+
"style-loader": "^4.0.0",
|
|
58
59
|
"terser-webpack-plugin": "^5.3.10",
|
|
59
60
|
"webpack": "^5.91.0",
|
|
60
|
-
"webpack-cli": "^
|
|
61
|
+
"webpack-cli": "^6.0.1",
|
|
61
62
|
"webpack-dev-server": "^5.0.4"
|
|
62
63
|
},
|
|
63
|
-
"prettier": "@readme/eslint-config/prettier"
|
|
64
|
-
"bundlewatch": {
|
|
65
|
-
"files": [
|
|
66
|
-
{
|
|
67
|
-
"path": "dist/index.js",
|
|
68
|
-
"maxSize": "500kb"
|
|
69
|
-
},
|
|
70
|
-
{
|
|
71
|
-
"path": "dist/index.node.js",
|
|
72
|
-
"maxSize": "10kb"
|
|
73
|
-
}
|
|
74
|
-
]
|
|
75
|
-
}
|
|
64
|
+
"prettier": "@readme/eslint-config/prettier"
|
|
76
65
|
}
|
package/src/codeMirror/index.jsx
CHANGED
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
import Variable, { VARIABLE_REGEXP, VariablesContext } from '@readme/variable';
|
|
1
|
+
import Variable, { MDX_VARIABLE_REGEXP, VARIABLE_REGEXP, VariablesContext } from '@readme/variable';
|
|
2
2
|
import CodeMirror from 'codemirror';
|
|
3
3
|
import 'codemirror/addon/fold/brace-fold';
|
|
4
4
|
import 'codemirror/addon/fold/foldgutter';
|
|
@@ -170,19 +170,26 @@ const extractVariables = (code, opts) => {
|
|
|
170
170
|
let offsetDelta = 0;
|
|
171
171
|
const variables = [];
|
|
172
172
|
|
|
173
|
-
const extracter = (match,
|
|
174
|
-
const unescaped =
|
|
173
|
+
const extracter = (match, ...rest) => {
|
|
174
|
+
const unescaped = opts.mdx
|
|
175
|
+
? match.replace(/^\\{/, '{').replace(/\\}$/, '}')
|
|
176
|
+
: match.replace(/^\\<</, '<<').replace(/\\>>$/, '>>');
|
|
177
|
+
|
|
175
178
|
if (unescaped !== match) {
|
|
176
179
|
return unescaped;
|
|
177
180
|
}
|
|
178
181
|
|
|
182
|
+
const capture = rest[opts.mdx ? 1 : 0];
|
|
183
|
+
const offset = rest[opts.mdx ? 3 : 1];
|
|
184
|
+
|
|
179
185
|
variables.push({ text: capture, offset: offset - offsetDelta });
|
|
180
186
|
offsetDelta += match.length;
|
|
181
187
|
|
|
182
188
|
return '';
|
|
183
189
|
};
|
|
184
190
|
|
|
185
|
-
const
|
|
191
|
+
const regexp = opts.mdx ? MDX_VARIABLE_REGEXP : VARIABLE_REGEXP;
|
|
192
|
+
const codeWithoutVars = code.replace(new RegExp(regexp, 'g'), extracter);
|
|
186
193
|
|
|
187
194
|
return [codeWithoutVars, makeReinserter(variables)];
|
|
188
195
|
};
|
|
@@ -199,11 +206,16 @@ StyledSyntaxHighlighter.propTypes = {
|
|
|
199
206
|
* @arg {{}} opts
|
|
200
207
|
* @return {[Element]} Array of DOM Elements
|
|
201
208
|
*/
|
|
202
|
-
const ReadmeCodeMirror = (
|
|
209
|
+
const ReadmeCodeMirror = (
|
|
210
|
+
code,
|
|
211
|
+
lang,
|
|
212
|
+
opts = { tokenizeVariables: false, highlightMode: false, ranges: [] },
|
|
213
|
+
{ mdx = false } = {},
|
|
214
|
+
) => {
|
|
203
215
|
const mode = getMode(lang);
|
|
204
216
|
const output = [];
|
|
205
217
|
|
|
206
|
-
const [codeWithoutVars, reinsertVariables] = extractVariables(code, { scrollbarStyle: 'overlay', ...opts });
|
|
218
|
+
const [codeWithoutVars, reinsertVariables] = extractVariables(code, { scrollbarStyle: 'overlay', mdx, ...opts });
|
|
207
219
|
|
|
208
220
|
let curStyle = null;
|
|
209
221
|
let accum = '';
|
package/src/index.js
CHANGED
|
@@ -18,8 +18,10 @@ const SyntaxHighlighter = (
|
|
|
18
18
|
inline: false,
|
|
19
19
|
tokenizeVariables: false,
|
|
20
20
|
},
|
|
21
|
-
|
|
21
|
+
props = {},
|
|
22
22
|
) => {
|
|
23
|
+
// eslint-disable-next-line react/prop-types
|
|
24
|
+
const { mdx, ...editorProps } = props;
|
|
23
25
|
let theme = opts.dark ? 'material-palenight' : 'neo';
|
|
24
26
|
if (opts.customTheme) {
|
|
25
27
|
theme = opts.customTheme;
|
|
@@ -57,7 +59,7 @@ const SyntaxHighlighter = (
|
|
|
57
59
|
return React.createElement(
|
|
58
60
|
wrapper,
|
|
59
61
|
{ className: classes.join(' '), 'data-testid': 'SyntaxHighlighter' },
|
|
60
|
-
codemirror(typeof code === 'string' ? code : '', lang, opts),
|
|
62
|
+
codemirror(typeof code === 'string' ? code : '', lang, opts, { mdx }),
|
|
61
63
|
);
|
|
62
64
|
};
|
|
63
65
|
|