aboutsummaryrefslogtreecommitdiff
path: root/node_modules/@vue/component-compiler-utils/dist/templateCompilerModules
diff options
context:
space:
mode:
Diffstat (limited to 'node_modules/@vue/component-compiler-utils/dist/templateCompilerModules')
-rw-r--r--node_modules/@vue/component-compiler-utils/dist/templateCompilerModules/assetUrl.d.ts8
-rw-r--r--node_modules/@vue/component-compiler-utils/dist/templateCompilerModules/assetUrl.js44
-rw-r--r--node_modules/@vue/component-compiler-utils/dist/templateCompilerModules/srcset.d.ts5
-rw-r--r--node_modules/@vue/component-compiler-utils/dist/templateCompilerModules/srcset.js51
-rw-r--r--node_modules/@vue/component-compiler-utils/dist/templateCompilerModules/utils.d.ts9
-rw-r--r--node_modules/@vue/component-compiler-utils/dist/templateCompilerModules/utils.js44
6 files changed, 161 insertions, 0 deletions
diff --git a/node_modules/@vue/component-compiler-utils/dist/templateCompilerModules/assetUrl.d.ts b/node_modules/@vue/component-compiler-utils/dist/templateCompilerModules/assetUrl.d.ts
new file mode 100644
index 00000000..5f7668e0
--- /dev/null
+++ b/node_modules/@vue/component-compiler-utils/dist/templateCompilerModules/assetUrl.d.ts
@@ -0,0 +1,8 @@
+import { ASTNode } from './utils';
+export interface AssetURLOptions {
+ [name: string]: string | string[];
+}
+declare const _default: (userOptions?: AssetURLOptions | undefined) => {
+ postTransformNode: (node: ASTNode) => void;
+};
+export default _default;
diff --git a/node_modules/@vue/component-compiler-utils/dist/templateCompilerModules/assetUrl.js b/node_modules/@vue/component-compiler-utils/dist/templateCompilerModules/assetUrl.js
new file mode 100644
index 00000000..ef95f951
--- /dev/null
+++ b/node_modules/@vue/component-compiler-utils/dist/templateCompilerModules/assetUrl.js
@@ -0,0 +1,44 @@
+"use strict";
+// vue compiler module for transforming `<tag>:<attribute>` to `require`
+Object.defineProperty(exports, "__esModule", { value: true });
+const utils_1 = require("./utils");
+const defaultOptions = {
+ video: ['src', 'poster'],
+ source: 'src',
+ img: 'src',
+ image: ['xlink:href', 'href']
+};
+exports.default = (userOptions) => {
+ const options = userOptions
+ ? Object.assign({}, defaultOptions, userOptions)
+ : defaultOptions;
+ return {
+ postTransformNode: (node) => {
+ transform(node, options);
+ }
+ };
+};
+function transform(node, options) {
+ for (const tag in options) {
+ if ((tag === '*' || node.tag === tag) && node.attrs) {
+ const attributes = options[tag];
+ if (typeof attributes === 'string') {
+ node.attrs.some(attr => rewrite(attr, attributes));
+ }
+ else if (Array.isArray(attributes)) {
+ attributes.forEach(item => node.attrs.some(attr => rewrite(attr, item)));
+ }
+ }
+ }
+}
+function rewrite(attr, name) {
+ if (attr.name === name) {
+ const value = attr.value;
+ // only transform static URLs
+ if (value.charAt(0) === '"' && value.charAt(value.length - 1) === '"') {
+ attr.value = utils_1.urlToRequire(value.slice(1, -1));
+ return true;
+ }
+ }
+ return false;
+}
diff --git a/node_modules/@vue/component-compiler-utils/dist/templateCompilerModules/srcset.d.ts b/node_modules/@vue/component-compiler-utils/dist/templateCompilerModules/srcset.d.ts
new file mode 100644
index 00000000..9c57ef90
--- /dev/null
+++ b/node_modules/@vue/component-compiler-utils/dist/templateCompilerModules/srcset.d.ts
@@ -0,0 +1,5 @@
+import { ASTNode } from './utils';
+declare const _default: () => {
+ postTransformNode: (node: ASTNode) => void;
+};
+export default _default;
diff --git a/node_modules/@vue/component-compiler-utils/dist/templateCompilerModules/srcset.js b/node_modules/@vue/component-compiler-utils/dist/templateCompilerModules/srcset.js
new file mode 100644
index 00000000..398d065e
--- /dev/null
+++ b/node_modules/@vue/component-compiler-utils/dist/templateCompilerModules/srcset.js
@@ -0,0 +1,51 @@
+"use strict";
+// vue compiler module for transforming `img:srcset` to a number of `require`s
+Object.defineProperty(exports, "__esModule", { value: true });
+const utils_1 = require("./utils");
+exports.default = () => ({
+ postTransformNode: (node) => {
+ transform(node);
+ }
+});
+// http://w3c.github.io/html/semantics-embedded-content.html#ref-for-image-candidate-string-5
+const escapedSpaceCharacters = /( |\\t|\\n|\\f|\\r)+/g;
+function transform(node) {
+ const tags = ['img', 'source'];
+ if (tags.indexOf(node.tag) !== -1 && node.attrs) {
+ node.attrs.forEach(attr => {
+ if (attr.name === 'srcset') {
+ // same logic as in transform-require.js
+ const value = attr.value;
+ const isStatic = value.charAt(0) === '"' && value.charAt(value.length - 1) === '"';
+ if (!isStatic) {
+ return;
+ }
+ const imageCandidates = value
+ .substr(1, value.length - 2)
+ .split(',')
+ .map(s => {
+ // The attribute value arrives here with all whitespace, except
+ // normal spaces, represented by escape sequences
+ const [url, descriptor] = s
+ .replace(escapedSpaceCharacters, ' ')
+ .trim()
+ .split(' ', 2);
+ return { require: utils_1.urlToRequire(url), descriptor };
+ });
+ // "require(url1)"
+ // "require(url1) 1x"
+ // "require(url1), require(url2)"
+ // "require(url1), require(url2) 2x"
+ // "require(url1) 1x, require(url2)"
+ // "require(url1) 1x, require(url2) 2x"
+ const code = imageCandidates
+ .map(({ require, descriptor }) => `${require} + "${descriptor ? ' ' + descriptor : ''}, " + `)
+ .join('')
+ .slice(0, -6)
+ .concat('"')
+ .replace(/ \+ ""$/, '');
+ attr.value = code;
+ }
+ });
+ }
+}
diff --git a/node_modules/@vue/component-compiler-utils/dist/templateCompilerModules/utils.d.ts b/node_modules/@vue/component-compiler-utils/dist/templateCompilerModules/utils.d.ts
new file mode 100644
index 00000000..f0b821ba
--- /dev/null
+++ b/node_modules/@vue/component-compiler-utils/dist/templateCompilerModules/utils.d.ts
@@ -0,0 +1,9 @@
+export interface Attr {
+ name: string;
+ value: string;
+}
+export interface ASTNode {
+ tag: string;
+ attrs: Attr[];
+}
+export declare function urlToRequire(url: string): string;
diff --git a/node_modules/@vue/component-compiler-utils/dist/templateCompilerModules/utils.js b/node_modules/@vue/component-compiler-utils/dist/templateCompilerModules/utils.js
new file mode 100644
index 00000000..71224c12
--- /dev/null
+++ b/node_modules/@vue/component-compiler-utils/dist/templateCompilerModules/utils.js
@@ -0,0 +1,44 @@
+"use strict";
+Object.defineProperty(exports, "__esModule", { value: true });
+const url_1 = require("url");
+function urlToRequire(url) {
+ 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;
+}
+exports.urlToRequire = urlToRequire;
+/**
+ * vuejs/component-compiler-utils#22 Support uri fragment in transformed require
+ * @param urlString an url as a string
+ */
+function parseUriParts(urlString) {
+ // initialize return value
+ const returnValue = url_1.parse('');
+ 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 url_1.parse(urlString); // take apart the uri
+ }
+ }
+ return returnValue;
+}