@dcloudio/uni-mp-compiler 0.0.1-nvue3.3030820220125001

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.
Files changed (65) hide show
  1. package/LICENSE +202 -0
  2. package/dist/ast.d.ts +16 -0
  3. package/dist/ast.js +91 -0
  4. package/dist/codegen.d.ts +14 -0
  5. package/dist/codegen.js +322 -0
  6. package/dist/compile.d.ts +13 -0
  7. package/dist/compile.js +108 -0
  8. package/dist/decodeHtml.d.ts +2 -0
  9. package/dist/decodeHtml.js +131 -0
  10. package/dist/errors.d.ts +16 -0
  11. package/dist/errors.js +19 -0
  12. package/dist/identifier.d.ts +7 -0
  13. package/dist/identifier.js +35 -0
  14. package/dist/index.d.ts +12 -0
  15. package/dist/index.js +40 -0
  16. package/dist/namedChars.json +2233 -0
  17. package/dist/options.d.ts +88 -0
  18. package/dist/options.js +2 -0
  19. package/dist/parserOptions.d.ts +7 -0
  20. package/dist/parserOptions.js +63 -0
  21. package/dist/runtimeHelpers.d.ts +13 -0
  22. package/dist/runtimeHelpers.js +32 -0
  23. package/dist/template/codegen.d.ts +19 -0
  24. package/dist/template/codegen.js +381 -0
  25. package/dist/transform.d.ts +73 -0
  26. package/dist/transform.js +518 -0
  27. package/dist/transforms/transformClass.d.ts +5 -0
  28. package/dist/transforms/transformClass.js +162 -0
  29. package/dist/transforms/transformComponent.d.ts +11 -0
  30. package/dist/transforms/transformComponent.js +179 -0
  31. package/dist/transforms/transformElement.d.ts +9 -0
  32. package/dist/transforms/transformElement.js +191 -0
  33. package/dist/transforms/transformExpression.d.ts +5 -0
  34. package/dist/transforms/transformExpression.js +283 -0
  35. package/dist/transforms/transformIdentifier.d.ts +2 -0
  36. package/dist/transforms/transformIdentifier.js +95 -0
  37. package/dist/transforms/transformKey.d.ts +4 -0
  38. package/dist/transforms/transformKey.js +18 -0
  39. package/dist/transforms/transformRef.d.ts +3 -0
  40. package/dist/transforms/transformRef.js +126 -0
  41. package/dist/transforms/transformRoot.d.ts +2 -0
  42. package/dist/transforms/transformRoot.js +42 -0
  43. package/dist/transforms/transformSlot.d.ts +3 -0
  44. package/dist/transforms/transformSlot.js +144 -0
  45. package/dist/transforms/transformStyle.d.ts +5 -0
  46. package/dist/transforms/transformStyle.js +156 -0
  47. package/dist/transforms/transformTag.d.ts +2 -0
  48. package/dist/transforms/transformTag.js +15 -0
  49. package/dist/transforms/utils.d.ts +25 -0
  50. package/dist/transforms/utils.js +133 -0
  51. package/dist/transforms/vBind.d.ts +2 -0
  52. package/dist/transforms/vBind.js +49 -0
  53. package/dist/transforms/vFor.d.ts +35 -0
  54. package/dist/transforms/vFor.js +299 -0
  55. package/dist/transforms/vHtml.d.ts +2 -0
  56. package/dist/transforms/vHtml.js +35 -0
  57. package/dist/transforms/vIf.d.ts +13 -0
  58. package/dist/transforms/vIf.js +139 -0
  59. package/dist/transforms/vModel.d.ts +2 -0
  60. package/dist/transforms/vModel.js +178 -0
  61. package/dist/transforms/vOn.d.ts +8 -0
  62. package/dist/transforms/vOn.js +166 -0
  63. package/dist/transforms/vSlot.d.ts +16 -0
  64. package/dist/transforms/vSlot.js +274 -0
  65. package/package.json +36 -0
@@ -0,0 +1,108 @@
1
+ "use strict";
2
+ var __importDefault = (this && this.__importDefault) || function (mod) {
3
+ return (mod && mod.__esModule) ? mod : { "default": mod };
4
+ };
5
+ Object.defineProperty(exports, "__esModule", { value: true });
6
+ exports.baseCompile = exports.getBaseTransformPreset = void 0;
7
+ const fs_1 = __importDefault(require("fs"));
8
+ const compiler_core_1 = require("@vue/compiler-core");
9
+ const shared_1 = require("@vue/shared");
10
+ const uni_cli_shared_1 = require("@dcloudio/uni-cli-shared");
11
+ const codegen_1 = require("./codegen");
12
+ const transform_1 = require("./transform");
13
+ const transformExpression_1 = require("./transforms/transformExpression");
14
+ const transformIdentifier_1 = require("./transforms/transformIdentifier");
15
+ const vIf_1 = require("./transforms/vIf");
16
+ const vFor_1 = require("./transforms/vFor");
17
+ const codegen_2 = require("./template/codegen");
18
+ const vOn_1 = require("./transforms/vOn");
19
+ const transformElement_1 = require("./transforms/transformElement");
20
+ const vBind_1 = require("./transforms/vBind");
21
+ const transformComponent_1 = require("./transforms/transformComponent");
22
+ const vSlot_1 = require("./transforms/vSlot");
23
+ const transformRoot_1 = require("./transforms/transformRoot");
24
+ const transformTag_1 = require("./transforms/transformTag");
25
+ const vHtml_1 = require("./transforms/vHtml");
26
+ function getBaseTransformPreset({ prefixIdentifiers, skipTransformIdentifier, }) {
27
+ // order is important
28
+ const nodeTransforms = [
29
+ transformRoot_1.transformRoot,
30
+ transformTag_1.transformTag,
31
+ vHtml_1.transformHtml,
32
+ vIf_1.transformIf,
33
+ vFor_1.transformFor,
34
+ vSlot_1.transformSlot,
35
+ ];
36
+ if (!skipTransformIdentifier) {
37
+ nodeTransforms.push(transformIdentifier_1.transformIdentifier);
38
+ }
39
+ nodeTransforms.push(transformElement_1.transformElement);
40
+ nodeTransforms.push(transformComponent_1.transformComponent);
41
+ if (prefixIdentifiers) {
42
+ nodeTransforms.push(transformExpression_1.transformExpression);
43
+ }
44
+ return [
45
+ nodeTransforms,
46
+ { on: vOn_1.transformOn, bind: vBind_1.transformBind },
47
+ ];
48
+ }
49
+ exports.getBaseTransformPreset = getBaseTransformPreset;
50
+ function baseCompile(template, options = {}) {
51
+ var _a, _b;
52
+ const prefixIdentifiers = options.prefixIdentifiers === true || options.mode === 'module';
53
+ const ast = ((0, shared_1.isString)(template) ? (0, compiler_core_1.baseParse)(template, options) : template);
54
+ const [nodeTransforms, directiveTransforms] = getBaseTransformPreset({
55
+ prefixIdentifiers,
56
+ skipTransformIdentifier: options.skipTransformIdentifier === true,
57
+ });
58
+ options.hashId = genHashId(options);
59
+ if (options.filename) {
60
+ if (!options.filters && ((_a = options.miniProgram) === null || _a === void 0 ? void 0 : _a.filter)) {
61
+ options.filters = parseFilters(options.miniProgram.filter.lang, options.filename);
62
+ }
63
+ }
64
+ const context = (0, transform_1.transform)(ast, (0, shared_1.extend)({}, options, {
65
+ prefixIdentifiers,
66
+ nodeTransforms: [...nodeTransforms, ...(options.nodeTransforms || [])],
67
+ directiveTransforms: (0, shared_1.extend)({}, directiveTransforms, options.directiveTransforms || {}),
68
+ }));
69
+ const result = (0, shared_1.extend)((0, codegen_1.generate)((0, shared_1.extend)(ast, {
70
+ bindingComponents: context.bindingComponents,
71
+ }), options), { ast });
72
+ if (options.filename && ((_b = options.miniProgram) === null || _b === void 0 ? void 0 : _b.emitFile)) {
73
+ const { class: clazz, directive, emitFile, event, slot, lazyElement, component, } = options.miniProgram;
74
+ (0, codegen_2.generate)(ast, {
75
+ class: clazz,
76
+ scopeId: options.scopeId,
77
+ filename: options.filename,
78
+ directive,
79
+ emitFile,
80
+ event,
81
+ slot,
82
+ lazyElement,
83
+ component,
84
+ isBuiltInComponent: context.isBuiltInComponent,
85
+ });
86
+ }
87
+ return result;
88
+ }
89
+ exports.baseCompile = baseCompile;
90
+ function genHashId(options) {
91
+ if (options.hashId) {
92
+ return options.hashId;
93
+ }
94
+ if (options.scopeId) {
95
+ return options.scopeId.replace('data-v-', '');
96
+ }
97
+ if (options.filename) {
98
+ return (0, uni_cli_shared_1.hash)(options.filename);
99
+ }
100
+ return '';
101
+ }
102
+ function parseFilters(lang, filename) {
103
+ filename = filename.split('?')[0];
104
+ if (fs_1.default.existsSync(filename)) {
105
+ return (0, uni_cli_shared_1.parseFilterNames)(lang, fs_1.default.readFileSync(filename, 'utf8'));
106
+ }
107
+ return [];
108
+ }
@@ -0,0 +1,2 @@
1
+ import { ParserOptions } from '@vue/compiler-core';
2
+ export declare const decodeHtml: ParserOptions['decodeEntities'];
@@ -0,0 +1,131 @@
1
+ "use strict";
2
+ var __importDefault = (this && this.__importDefault) || function (mod) {
3
+ return (mod && mod.__esModule) ? mod : { "default": mod };
4
+ };
5
+ Object.defineProperty(exports, "__esModule", { value: true });
6
+ exports.decodeHtml = void 0;
7
+ const namedChars_json_1 = __importDefault(require("./namedChars.json"));
8
+ // lazy compute this to make this file tree-shakable for browser
9
+ let maxCRNameLength;
10
+ const decodeHtml = (rawText, asAttr) => {
11
+ let offset = 0;
12
+ const end = rawText.length;
13
+ let decodedText = '';
14
+ function advance(length) {
15
+ offset += length;
16
+ rawText = rawText.slice(length);
17
+ }
18
+ while (offset < end) {
19
+ const head = /&(?:#x?)?/i.exec(rawText);
20
+ if (!head || offset + head.index >= end) {
21
+ const remaining = end - offset;
22
+ decodedText += rawText.slice(0, remaining);
23
+ advance(remaining);
24
+ break;
25
+ }
26
+ // Advance to the "&".
27
+ decodedText += rawText.slice(0, head.index);
28
+ advance(head.index);
29
+ if (head[0] === '&') {
30
+ // Named character reference.
31
+ let name = '';
32
+ let value = undefined;
33
+ if (/[0-9a-z]/i.test(rawText[1])) {
34
+ if (!maxCRNameLength) {
35
+ maxCRNameLength = Object.keys(namedChars_json_1.default).reduce((max, name) => Math.max(max, name.length), 0);
36
+ }
37
+ for (let length = maxCRNameLength; !value && length > 0; --length) {
38
+ name = rawText.substr(1, length);
39
+ value = namedChars_json_1.default[name];
40
+ }
41
+ if (value) {
42
+ const semi = name.endsWith(';');
43
+ if (asAttr &&
44
+ !semi &&
45
+ /[=a-z0-9]/i.test(rawText[name.length + 1] || '')) {
46
+ decodedText += '&' + name;
47
+ advance(1 + name.length);
48
+ }
49
+ else {
50
+ decodedText += value;
51
+ advance(1 + name.length);
52
+ }
53
+ }
54
+ else {
55
+ decodedText += '&' + name;
56
+ advance(1 + name.length);
57
+ }
58
+ }
59
+ else {
60
+ decodedText += '&';
61
+ advance(1);
62
+ }
63
+ }
64
+ else {
65
+ // Numeric character reference.
66
+ const hex = head[0] === '&#x';
67
+ const pattern = hex ? /^&#x([0-9a-f]+);?/i : /^&#([0-9]+);?/;
68
+ const body = pattern.exec(rawText);
69
+ if (!body) {
70
+ decodedText += head[0];
71
+ advance(head[0].length);
72
+ }
73
+ else {
74
+ // https://html.spec.whatwg.org/multipage/parsing.html#numeric-character-reference-end-state
75
+ let cp = Number.parseInt(body[1], hex ? 16 : 10);
76
+ if (cp === 0) {
77
+ cp = 0xfffd;
78
+ }
79
+ else if (cp > 0x10ffff) {
80
+ cp = 0xfffd;
81
+ }
82
+ else if (cp >= 0xd800 && cp <= 0xdfff) {
83
+ cp = 0xfffd;
84
+ }
85
+ else if ((cp >= 0xfdd0 && cp <= 0xfdef) || (cp & 0xfffe) === 0xfffe) {
86
+ // noop
87
+ }
88
+ else if ((cp >= 0x01 && cp <= 0x08) ||
89
+ cp === 0x0b ||
90
+ (cp >= 0x0d && cp <= 0x1f) ||
91
+ (cp >= 0x7f && cp <= 0x9f)) {
92
+ cp = CCR_REPLACEMENTS[cp] || cp;
93
+ }
94
+ decodedText += String.fromCodePoint(cp);
95
+ advance(body[0].length);
96
+ }
97
+ }
98
+ }
99
+ return decodedText;
100
+ };
101
+ exports.decodeHtml = decodeHtml;
102
+ // https://html.spec.whatwg.org/multipage/parsing.html#numeric-character-reference-end-state
103
+ const CCR_REPLACEMENTS = {
104
+ 0x80: 0x20ac,
105
+ 0x82: 0x201a,
106
+ 0x83: 0x0192,
107
+ 0x84: 0x201e,
108
+ 0x85: 0x2026,
109
+ 0x86: 0x2020,
110
+ 0x87: 0x2021,
111
+ 0x88: 0x02c6,
112
+ 0x89: 0x2030,
113
+ 0x8a: 0x0160,
114
+ 0x8b: 0x2039,
115
+ 0x8c: 0x0152,
116
+ 0x8e: 0x017d,
117
+ 0x91: 0x2018,
118
+ 0x92: 0x2019,
119
+ 0x93: 0x201c,
120
+ 0x94: 0x201d,
121
+ 0x95: 0x2022,
122
+ 0x96: 0x2013,
123
+ 0x97: 0x2014,
124
+ 0x98: 0x02dc,
125
+ 0x99: 0x2122,
126
+ 0x9a: 0x0161,
127
+ 0x9b: 0x203a,
128
+ 0x9c: 0x0153,
129
+ 0x9e: 0x017e,
130
+ 0x9f: 0x0178,
131
+ };
@@ -0,0 +1,16 @@
1
+ import { CompilerError, SourceLocation } from '@vue/compiler-core';
2
+ export declare const enum MPErrorCodes {
3
+ X_V_ON_NO_ARGUMENT = 0,
4
+ X_V_ON_DYNAMIC_EVENT = 1,
5
+ X_V_BIND_NO_ARGUMENT = 2,
6
+ X_V_BIND_DYNAMIC_ARGUMENT = 3,
7
+ X_V_BIND_MODIFIER_PROP = 4,
8
+ X_V_BIND_MODIFIER_ATTR = 5,
9
+ X_V_IS_NOT_SUPPORTED = 6,
10
+ X_NOT_SUPPORTED = 7,
11
+ X_DYNAMIC_COMPONENT_NOT_SUPPORTED = 8
12
+ }
13
+ export interface MPCompilerError extends CompilerError {
14
+ code: MPErrorCodes;
15
+ }
16
+ export declare function createMPCompilerError(code: MPErrorCodes, loc?: SourceLocation, additionalMessage?: string): MPCompilerError;
package/dist/errors.js ADDED
@@ -0,0 +1,19 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.createMPCompilerError = void 0;
4
+ const compiler_core_1 = require("@vue/compiler-core");
5
+ const MPErrorMessages = {
6
+ [0 /* X_V_ON_NO_ARGUMENT */]: 'v-on="" is not supported',
7
+ [1 /* X_V_ON_DYNAMIC_EVENT */]: 'v-on:[event]="" is not supported.',
8
+ [2 /* X_V_BIND_NO_ARGUMENT */]: 'v-bind="" is not supported.',
9
+ [3 /* X_V_BIND_DYNAMIC_ARGUMENT */]: 'v-bind:[name]="" is not supported.',
10
+ [4 /* X_V_BIND_MODIFIER_PROP */]: 'v-bind .prop is not supported',
11
+ [5 /* X_V_BIND_MODIFIER_ATTR */]: 'v-bind .attr is not supported',
12
+ [8 /* X_DYNAMIC_COMPONENT_NOT_SUPPORTED */]: '<component is=""/> is not supported',
13
+ [7 /* X_NOT_SUPPORTED */]: 'not supported: ',
14
+ [6 /* X_V_IS_NOT_SUPPORTED */]: 'v-is not supported',
15
+ };
16
+ function createMPCompilerError(code, loc, additionalMessage) {
17
+ return (0, compiler_core_1.createCompilerError)(code, loc, MPErrorMessages, additionalMessage);
18
+ }
19
+ exports.createMPCompilerError = createMPCompilerError;
@@ -0,0 +1,7 @@
1
+ export default class IdentifierGenerator {
2
+ private _chars;
3
+ private _nextIds;
4
+ next(): string;
5
+ _increment(): void;
6
+ [Symbol.iterator](): Generator<string, void, unknown>;
7
+ }
@@ -0,0 +1,35 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ class IdentifierGenerator {
4
+ constructor() {
5
+ // u 被框架占用了,不提供 u 开头的变量名
6
+ this._chars = 'abcdefghijklmnopqrstvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ';
7
+ this._nextIds = [0];
8
+ }
9
+ next() {
10
+ const r = [];
11
+ for (const char of this._nextIds) {
12
+ r.unshift(this._chars[char]);
13
+ }
14
+ this._increment();
15
+ return r.join('');
16
+ }
17
+ _increment() {
18
+ for (let i = 0; i < this._nextIds.length; i++) {
19
+ const val = ++this._nextIds[i];
20
+ if (val >= this._chars.length) {
21
+ this._nextIds[i] = 0;
22
+ }
23
+ else {
24
+ return;
25
+ }
26
+ }
27
+ this._nextIds.push(0);
28
+ }
29
+ *[Symbol.iterator]() {
30
+ while (true) {
31
+ yield this.next();
32
+ }
33
+ }
34
+ }
35
+ exports.default = IdentifierGenerator;
@@ -0,0 +1,12 @@
1
+ import { CodegenResult, ParserOptions, RootNode } from '@vue/compiler-core';
2
+ import { CompilerOptions } from './options';
3
+ export { findProp } from '@vue/compiler-core';
4
+ export type { CompilerOptions, DirectiveNode, NodeTransform, DirectiveTransform, TransformContext, SimpleExpressionNode, } from '@vue/compiler-core';
5
+ export { genExpr } from './codegen';
6
+ export { rewriteExpression } from './transforms/utils';
7
+ export { isForElementNode } from './transforms/vFor';
8
+ export { transformOn } from './transforms/vOn';
9
+ export { transformModel } from './transforms/vModel';
10
+ export * from './runtimeHelpers';
11
+ export declare function parse(template: string, options?: ParserOptions): RootNode;
12
+ export declare function compile(template: string, options?: CompilerOptions): CodegenResult;
package/dist/index.js ADDED
@@ -0,0 +1,40 @@
1
+ "use strict";
2
+ var __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) {
3
+ if (k2 === undefined) k2 = k;
4
+ Object.defineProperty(o, k2, { enumerable: true, get: function() { return m[k]; } });
5
+ }) : (function(o, m, k, k2) {
6
+ if (k2 === undefined) k2 = k;
7
+ o[k2] = m[k];
8
+ }));
9
+ var __exportStar = (this && this.__exportStar) || function(m, exports) {
10
+ for (var p in m) if (p !== "default" && !Object.prototype.hasOwnProperty.call(exports, p)) __createBinding(exports, m, p);
11
+ };
12
+ Object.defineProperty(exports, "__esModule", { value: true });
13
+ exports.compile = exports.parse = exports.transformModel = exports.transformOn = exports.isForElementNode = exports.rewriteExpression = exports.genExpr = exports.findProp = void 0;
14
+ const shared_1 = require("@vue/shared");
15
+ const compiler_core_1 = require("@vue/compiler-core");
16
+ const compile_1 = require("./compile");
17
+ const parserOptions_1 = require("./parserOptions");
18
+ var compiler_core_2 = require("@vue/compiler-core");
19
+ Object.defineProperty(exports, "findProp", { enumerable: true, get: function () { return compiler_core_2.findProp; } });
20
+ var codegen_1 = require("./codegen");
21
+ Object.defineProperty(exports, "genExpr", { enumerable: true, get: function () { return codegen_1.genExpr; } });
22
+ var utils_1 = require("./transforms/utils");
23
+ Object.defineProperty(exports, "rewriteExpression", { enumerable: true, get: function () { return utils_1.rewriteExpression; } });
24
+ var vFor_1 = require("./transforms/vFor");
25
+ Object.defineProperty(exports, "isForElementNode", { enumerable: true, get: function () { return vFor_1.isForElementNode; } });
26
+ var vOn_1 = require("./transforms/vOn");
27
+ Object.defineProperty(exports, "transformOn", { enumerable: true, get: function () { return vOn_1.transformOn; } });
28
+ var vModel_1 = require("./transforms/vModel");
29
+ Object.defineProperty(exports, "transformModel", { enumerable: true, get: function () { return vModel_1.transformModel; } });
30
+ __exportStar(require("./runtimeHelpers"), exports);
31
+ function parse(template, options = {}) {
32
+ return (0, compiler_core_1.baseParse)(template, (0, shared_1.extend)({}, parserOptions_1.parserOptions, options));
33
+ }
34
+ exports.parse = parse;
35
+ function compile(template, options = {}) {
36
+ return (0, compile_1.baseCompile)(template, (0, shared_1.extend)({}, parserOptions_1.parserOptions, options, {
37
+ directiveTransforms: (0, shared_1.extend)({}, options.directiveTransforms || {}),
38
+ }));
39
+ }
40
+ exports.compile = compile;