@babel/plugin-transform-unicode-escapes
Advanced tools
+1
-1
@@ -5,3 +5,3 @@ import { declare } from '@babel/helper-plugin-utils'; | ||
| const index = declare(api => { | ||
| api.assertVersion("^7.0.0-0 || ^8.0.0 || 8.0.0-rc.6"); | ||
| api.assertVersion("^7.0.0-0 || ^8.0.0"); | ||
| const surrogate = /[\ud800-\udfff]/g; | ||
@@ -8,0 +8,0 @@ const unicodeEscape = /(\\+)u\{([0-9a-fA-F]+)\}/g; |
+1
-1
@@ -1,1 +0,1 @@ | ||
| {"version":3,"file":"index.js","sources":["../src/index.ts"],"sourcesContent":["import { declare } from \"@babel/helper-plugin-utils\";\nimport { types as t, type NodePath } from \"@babel/core\";\n\nexport default declare(api => {\n api.assertVersion(REQUIRED_VERSION(\"^7.0.0-0 || ^8.0.0\"));\n\n const surrogate = /[\\ud800-\\udfff]/g;\n const unicodeEscape = /(\\\\+)u\\{([0-9a-fA-F]+)\\}/g;\n\n function escape(code: number) {\n return \"\\\\u\" + code.toString(16).padStart(4, \"0\");\n }\n\n function replacer(match: string, backslashes: string, code: string) {\n if (backslashes.length % 2 === 0) {\n return match;\n }\n\n const char = String.fromCodePoint(parseInt(code, 16));\n const escaped = backslashes.slice(0, -1) + escape(char.charCodeAt(0));\n\n return char.length === 1 ? escaped : escaped + escape(char.charCodeAt(1));\n }\n\n function replaceUnicodeEscapes(str: string) {\n return str.replace(unicodeEscape, replacer);\n }\n\n function getUnicodeEscape(str: string) {\n let match;\n while ((match = unicodeEscape.exec(str))) {\n if (match[1].length % 2 === 0) continue;\n unicodeEscape.lastIndex = 0;\n return match[0];\n }\n return null;\n }\n\n return {\n name: \"transform-unicode-escapes\",\n manipulateOptions({ generatorOpts }) {\n // Babel 8 will enable jsesc minimal mode by default, which outputs\n // unescaped unicode string\n if (!generatorOpts.jsescOption) {\n generatorOpts.jsescOption = {};\n }\n generatorOpts.jsescOption.minimal ??= false;\n },\n visitor: api.traverse.explode({\n Identifier(path) {\n const { node, key } = path;\n const { name } = node;\n const replaced = name.replace(surrogate, c => {\n return `_u${c.charCodeAt(0).toString(16)}`;\n });\n if (name === replaced) return;\n\n const str = t.inherits(t.stringLiteral(name), node);\n\n if (key === \"key\") {\n path.replaceWith(str);\n return;\n }\n\n const { parentPath, scope } = path;\n if (\n parentPath.isMemberExpression({ property: node }) ||\n parentPath.isOptionalMemberExpression({ property: node })\n ) {\n parentPath.node.computed = true;\n path.replaceWith(str);\n return;\n }\n\n const binding = scope.getBinding(name);\n if (binding) {\n scope.rename(name, scope.generateUid(replaced));\n return;\n }\n\n throw path.buildCodeFrameError(\n `Can't reference '${name}' as a bare identifier`,\n );\n },\n\n \"StringLiteral|DirectiveLiteral\"(\n path: NodePath<t.StringLiteral | t.DirectiveLiteral>,\n ) {\n const { node } = path;\n const { extra } = node;\n\n if (extra?.raw) extra.raw = replaceUnicodeEscapes(extra.raw as string);\n },\n\n TemplateElement(path) {\n const { node, parentPath } = path;\n const { value } = node;\n\n const firstEscape = getUnicodeEscape(value.raw);\n if (!firstEscape) return;\n\n const grandParent = parentPath.parentPath;\n if (grandParent.isTaggedTemplateExpression()) {\n throw path.buildCodeFrameError(\n `Can't replace Unicode escape '${firstEscape}' inside tagged template literals. You can enable '@babel/plugin-transform-template-literals' to compile them to classic strings.`,\n );\n }\n\n value.raw = replaceUnicodeEscapes(value.raw);\n },\n }),\n };\n});\n"],"names":["declare","api","assertVersion","surrogate","unicodeEscape","escape","code","toString","padStart","replacer","match","backslashes","length","char","String","fromCodePoint","parseInt","escaped","slice","charCodeAt","replaceUnicodeEscapes","str","replace","getUnicodeEscape","exec","lastIndex","name","manipulateOptions","generatorOpts","jsescOption","minimal","visitor","traverse","explode","Identifier","path","node","key","replaced","c","t","inherits","stringLiteral","replaceWith","parentPath","scope","isMemberExpression","property","isOptionalMemberExpression","computed","binding","getBinding","rename","generateUid","buildCodeFrameError","StringLiteral|DirectiveLiteral","extra","raw","TemplateElement","value","firstEscape","grandParent","isTaggedTemplateExpression"],"mappings":"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"} | ||
| {"version":3,"file":"index.js","sources":["../src/index.ts"],"sourcesContent":["import { declare } from \"@babel/helper-plugin-utils\";\nimport { types as t, type NodePath } from \"@babel/core\";\n\nexport default declare(api => {\n api.assertVersion(REQUIRED_VERSION(\"^7.0.0-0 || ^8.0.0\"));\n\n const surrogate = /[\\ud800-\\udfff]/g;\n const unicodeEscape = /(\\\\+)u\\{([0-9a-fA-F]+)\\}/g;\n\n function escape(code: number) {\n return \"\\\\u\" + code.toString(16).padStart(4, \"0\");\n }\n\n function replacer(match: string, backslashes: string, code: string) {\n if (backslashes.length % 2 === 0) {\n return match;\n }\n\n const char = String.fromCodePoint(parseInt(code, 16));\n const escaped = backslashes.slice(0, -1) + escape(char.charCodeAt(0));\n\n return char.length === 1 ? escaped : escaped + escape(char.charCodeAt(1));\n }\n\n function replaceUnicodeEscapes(str: string) {\n return str.replace(unicodeEscape, replacer);\n }\n\n function getUnicodeEscape(str: string) {\n let match;\n while ((match = unicodeEscape.exec(str))) {\n if (match[1].length % 2 === 0) continue;\n unicodeEscape.lastIndex = 0;\n return match[0];\n }\n return null;\n }\n\n return {\n name: \"transform-unicode-escapes\",\n manipulateOptions({ generatorOpts }) {\n // Babel 8 will enable jsesc minimal mode by default, which outputs\n // unescaped unicode string\n if (!generatorOpts.jsescOption) {\n generatorOpts.jsescOption = {};\n }\n generatorOpts.jsescOption.minimal ??= false;\n },\n visitor: api.traverse.explode({\n Identifier(path) {\n const { node, key } = path;\n const { name } = node;\n const replaced = name.replace(surrogate, c => {\n return `_u${c.charCodeAt(0).toString(16)}`;\n });\n if (name === replaced) return;\n\n const str = t.inherits(t.stringLiteral(name), node);\n\n if (key === \"key\") {\n path.replaceWith(str);\n return;\n }\n\n const { parentPath, scope } = path;\n if (\n parentPath.isMemberExpression({ property: node }) ||\n parentPath.isOptionalMemberExpression({ property: node })\n ) {\n parentPath.node.computed = true;\n path.replaceWith(str);\n return;\n }\n\n const binding = scope.getBinding(name);\n if (binding) {\n scope.rename(name, scope.generateUid(replaced));\n return;\n }\n\n throw path.buildCodeFrameError(\n `Can't reference '${name}' as a bare identifier`,\n );\n },\n\n \"StringLiteral|DirectiveLiteral\"(\n path: NodePath<t.StringLiteral | t.DirectiveLiteral>,\n ) {\n const { node } = path;\n const { extra } = node;\n\n if (extra?.raw) extra.raw = replaceUnicodeEscapes(extra.raw as string);\n },\n\n TemplateElement(path) {\n const { node, parentPath } = path;\n const { value } = node;\n\n const firstEscape = getUnicodeEscape(value.raw);\n if (!firstEscape) return;\n\n const grandParent = parentPath.parentPath;\n if (grandParent.isTaggedTemplateExpression()) {\n throw path.buildCodeFrameError(\n `Can't replace Unicode escape '${firstEscape}' inside tagged template literals. You can enable '@babel/plugin-transform-template-literals' to compile them to classic strings.`,\n );\n }\n\n value.raw = replaceUnicodeEscapes(value.raw);\n },\n }),\n };\n});\n"],"names":["t","StringLiteral|DirectiveLiteral"],"mappings":"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"} |
+5
-5
| { | ||
| "name": "@babel/plugin-transform-unicode-escapes", | ||
| "version": "8.0.0-rc.6", | ||
| "version": "8.0.0", | ||
| "description": "Compile ES2015 Unicode escapes to ES5", | ||
@@ -19,10 +19,10 @@ "repository": { | ||
| "dependencies": { | ||
| "@babel/helper-plugin-utils": "^8.0.0-rc.6" | ||
| "@babel/helper-plugin-utils": "^8.0.0" | ||
| }, | ||
| "peerDependencies": { | ||
| "@babel/core": "^8.0.0-rc.6" | ||
| "@babel/core": "^8.0.0" | ||
| }, | ||
| "devDependencies": { | ||
| "@babel/core": "^8.0.0-rc.6", | ||
| "@babel/helper-plugin-test-runner": "^8.0.0-rc.6" | ||
| "@babel/core": "^8.0.0", | ||
| "@babel/helper-plugin-test-runner": "^8.0.0" | ||
| }, | ||
@@ -29,0 +29,0 @@ "homepage": "https://babel.dev/docs/en/next/babel-plugin-transform-unicode-escapes", |
No v1
QualityPackage is not semver >=1. This means it is not stable and does not support ^ ranges.
Found 1 instance in 1 package
0
-100%12840
-7.26%