From 26105034da4fcce7ac883c899d781f016559310d Mon Sep 17 00:00:00 2001 From: ruki Date: Thu, 8 Nov 2018 00:38:48 +0800 Subject: switch to vuepress --- .../lib/templateCompilerModules/utils.ts | 54 ++++++++++++++++++++++ 1 file changed, 54 insertions(+) create mode 100644 node_modules/@vue/component-compiler-utils/lib/templateCompilerModules/utils.ts (limited to 'node_modules/@vue/component-compiler-utils/lib/templateCompilerModules/utils.ts') diff --git a/node_modules/@vue/component-compiler-utils/lib/templateCompilerModules/utils.ts b/node_modules/@vue/component-compiler-utils/lib/templateCompilerModules/utils.ts new file mode 100644 index 00000000..893d8a41 --- /dev/null +++ b/node_modules/@vue/component-compiler-utils/lib/templateCompilerModules/utils.ts @@ -0,0 +1,54 @@ +export interface Attr { + name: string + value: string +} + +export interface ASTNode { + tag: string + attrs: Attr[] +} + +import { UrlWithStringQuery, parse as uriParse } from 'url' + +export function urlToRequire(url: string): string { + const returnValue = `"${url}"` + // same logic as in transform-require.js + const firstChar = url.charAt(0) + if (firstChar === '.' || firstChar === '~' || firstChar === '@') { + if (firstChar === '~') { + const secondChar = url.charAt(1) + url = url.slice(secondChar === '/' ? 2 : 1) + } + + const uriParts = parseUriParts(url) + + if (!uriParts.hash) { + return `require("${url}")` + } else { + // support uri fragment case by excluding it from + // the require and instead appending it as string; + // assuming that the path part is sufficient according to + // the above caseing(t.i. no protocol-auth-host parts expected) + return `require("${uriParts.path}") + "${uriParts.hash}"` + } + } + return returnValue +} + +/** + * vuejs/component-compiler-utils#22 Support uri fragment in transformed require + * @param urlString an url as a string + */ +function parseUriParts(urlString: string): UrlWithStringQuery { + // initialize return value + const returnValue: UrlWithStringQuery = uriParse('') + if (urlString) { + // A TypeError is thrown if urlString is not a string + // @see https://nodejs.org/api/url.html#url_url_parse_urlstring_parsequerystring_slashesdenotehost + if ('string' === typeof urlString) { + // check is an uri + return uriParse(urlString) // take apart the uri + } + } + return returnValue +} -- cgit v1.2.3