gitextract_si943cgs/ ├── .eslintrc.js ├── .gitattributes ├── .github/ │ └── ISSUE_TEMPLATE/ │ ├── bug_report.md │ └── feature_request.md ├── .gitignore ├── .travis.yml ├── CHANGELOG.md ├── LICENSE ├── README.md ├── commitlint.config.js ├── elevate/ │ └── cr.yml ├── lerna.json ├── package.json ├── packages/ │ ├── babel-plugin-chameleon-import/ │ │ ├── .editorconfig │ │ ├── .eslintignore │ │ ├── .eslintrc │ │ ├── .gitignore │ │ ├── .npmignore │ │ ├── .travis.yml │ │ ├── package.json │ │ ├── src/ │ │ │ ├── Plugin.js │ │ │ └── index.js │ │ └── test/ │ │ └── fixtures/ │ │ ├── array-expression/ │ │ │ ├── actual.js │ │ │ └── expected.js │ │ ├── as-arguments/ │ │ │ ├── actual.js │ │ │ └── expected.js │ │ ├── as-arguments-identifier/ │ │ │ ├── actual.js │ │ │ └── expected.js │ │ ├── binary-expression/ │ │ │ ├── actual.js │ │ │ └── expected.js │ │ ├── conditions/ │ │ │ ├── actual.js │ │ │ └── expected.js │ │ ├── custom-name/ │ │ │ ├── actual.js │ │ │ └── expected.js │ │ ├── custom-style-path/ │ │ │ ├── actual.js │ │ │ └── expected.js │ │ ├── custom-style-path-ignore/ │ │ │ ├── actual.js │ │ │ └── expected.js │ │ ├── execute-direct/ │ │ │ ├── actual.js │ │ │ └── expected.js │ │ ├── execute-member/ │ │ │ ├── actual.js │ │ │ └── expected.js │ │ ├── export-import/ │ │ │ ├── actual.js │ │ │ └── expected.js │ │ ├── expression-statement/ │ │ │ ├── actual.js │ │ │ └── expected.js │ │ ├── file-name/ │ │ │ ├── actual.js │ │ │ └── expected.js │ │ ├── import-alias/ │ │ │ ├── actual.js │ │ │ └── expected.js │ │ ├── import-css/ │ │ │ ├── actual.js │ │ │ └── expected.js │ │ ├── keep-named-import/ │ │ │ ├── actual.js │ │ │ └── expected.js │ │ ├── material-ui/ │ │ │ ├── actual.js │ │ │ └── expected.js │ │ ├── member-expression/ │ │ │ ├── actual.js │ │ │ └── expected.js │ │ ├── modules-false/ │ │ │ ├── actual.js │ │ │ └── expected.js │ │ ├── multiple-libraries/ │ │ │ ├── actual.js │ │ │ └── expected.js │ │ ├── multiple-libraries-hilojs/ │ │ │ ├── actual.js │ │ │ └── expected.js │ │ ├── multiple-words/ │ │ │ ├── actual.js │ │ │ └── expected.js │ │ ├── new-expression/ │ │ │ ├── actual.js │ │ │ └── expected.js │ │ ├── object-shorthand/ │ │ │ ├── actual.js │ │ │ └── expected.js │ │ ├── property/ │ │ │ ├── actual.js │ │ │ └── expected.js │ │ ├── react-element/ │ │ │ ├── actual.js │ │ │ └── expected.js │ │ ├── react-toolbox/ │ │ │ ├── actual.js │ │ │ └── expected.js │ │ ├── return/ │ │ │ ├── actual.js │ │ │ └── expected.js │ │ ├── specifier-alias/ │ │ │ ├── actual.js │ │ │ └── expected.js │ │ ├── use-multiple-times/ │ │ │ ├── actual.js │ │ │ └── expected.js │ │ ├── variable-declarator/ │ │ │ ├── actual.js │ │ │ └── expected.js │ │ └── variable-scope/ │ │ ├── actual.js │ │ └── expected.js │ ├── chameleon-css-loader/ │ │ ├── .eslintrc │ │ ├── .gitignore │ │ ├── handler/ │ │ │ └── lines.js │ │ ├── index.js │ │ ├── package.json │ │ ├── parser/ │ │ │ ├── media.js │ │ │ ├── miniapp.js │ │ │ ├── web.js │ │ │ └── weex.js │ │ ├── postcss/ │ │ │ ├── add-alipay-class.js │ │ │ ├── cpx.js │ │ │ ├── weex-plus.js │ │ │ └── weex.js │ │ ├── proxy/ │ │ │ ├── proxyMiniapp.js │ │ │ └── proxyWeb.js │ │ ├── test/ │ │ │ ├── parser-test/ │ │ │ │ ├── media.test.js │ │ │ │ ├── miniapp.test.js │ │ │ │ ├── web.test.js │ │ │ │ └── weex.test.js │ │ │ ├── postcss-test/ │ │ │ │ └── weex-plus.test.js │ │ │ ├── proxy-test/ │ │ │ │ ├── proxyMiniapp.test.js │ │ │ │ └── proxyWeb.test.js │ │ │ ├── transform/ │ │ │ │ └── weex.test.js │ │ │ └── utils.test.js │ │ ├── transform/ │ │ │ ├── color.js │ │ │ └── weex.js │ │ └── utils.js │ ├── chameleon-dev-proxy/ │ │ ├── .gitignore │ │ ├── index.js │ │ └── package.json │ ├── chameleon-errors-webpack-plugin/ │ │ ├── .gitignore │ │ ├── LICENSE │ │ ├── index.js │ │ ├── package.json │ │ └── src/ │ │ ├── core/ │ │ │ ├── extractWebpackError.js │ │ │ ├── formatErrors.js │ │ │ └── transformErrors.js │ │ ├── formatters/ │ │ │ ├── defaultError.js │ │ │ ├── eslintError.js │ │ │ └── moduleNotFound.js │ │ ├── friendly-errors-plugin.js │ │ ├── output.js │ │ ├── transformers/ │ │ │ ├── babelSyntax.js │ │ │ ├── esLintError.js │ │ │ └── moduleNotFound.js │ │ └── utils/ │ │ ├── colors.js │ │ └── index.js │ ├── chameleon-linter/ │ │ ├── .eslintrc │ │ ├── .gitignore │ │ ├── bin/ │ │ │ └── cli.js │ │ ├── checkers/ │ │ │ ├── index.js │ │ │ ├── json.js │ │ │ ├── script.js │ │ │ ├── style.js │ │ │ └── template/ │ │ │ ├── index.js │ │ │ └── lib/ │ │ │ ├── js-ast-parser.js │ │ │ ├── json-ast-parser.js │ │ │ └── template-ast-parser/ │ │ │ ├── classes/ │ │ │ │ ├── customized-node.js │ │ │ │ ├── rule-loader.js │ │ │ │ └── suspicious-node.js │ │ │ ├── index.js │ │ │ ├── lib/ │ │ │ │ ├── ast-tree-traversal.js │ │ │ │ ├── customized-node-dispatcher.js │ │ │ │ └── suspicious-node-dispatcher.js │ │ │ ├── options.js │ │ │ ├── rules/ │ │ │ │ ├── component/ │ │ │ │ │ ├── attr.js │ │ │ │ │ ├── cml-method-node.js │ │ │ │ │ ├── cml-prop-node.js │ │ │ │ │ ├── cml.js │ │ │ │ │ ├── index.js │ │ │ │ │ ├── vue-method-node.js │ │ │ │ │ ├── vue-prop-node.js │ │ │ │ │ └── vue.js │ │ │ │ └── template/ │ │ │ │ ├── cml.js │ │ │ │ ├── index.js │ │ │ │ ├── method-node.js │ │ │ │ ├── mustache-node.js │ │ │ │ ├── vue-directive-node.js │ │ │ │ └── vue.js │ │ │ └── tools/ │ │ │ ├── dash-to-camelcase.js │ │ │ ├── flat-array.js │ │ │ ├── get-offset-pos-from-text.js │ │ │ ├── get-props-from-object-expression.js │ │ │ ├── index.js │ │ │ ├── is-origin-component.js │ │ │ ├── is-suspicious-textnode.js │ │ │ ├── loop-scope-handler.js │ │ │ ├── parse-single-expression.js │ │ │ └── rule-filter-match.js │ │ ├── classes/ │ │ │ └── message.js │ │ ├── config/ │ │ │ ├── .cmllintrc │ │ │ ├── built-in-components/ │ │ │ │ └── index.js │ │ │ ├── common-events.json │ │ │ ├── fakeComps/ │ │ │ │ └── index.js │ │ │ ├── globalVars.js │ │ │ ├── index.js │ │ │ ├── parser-config.js │ │ │ ├── tag-embed-rules.json │ │ │ └── white-list/ │ │ │ ├── cml-white-list.js │ │ │ ├── index.js │ │ │ ├── vue-white-list.js │ │ │ ├── web-white-list.js │ │ │ ├── weex-white-list.js │ │ │ └── wx-white-list.js │ │ ├── docs/ │ │ │ ├── cml-file-specification.md │ │ │ ├── components/ │ │ │ │ ├── buildin/ │ │ │ │ │ ├── button.md │ │ │ │ │ ├── checkbox.md │ │ │ │ │ ├── input.md │ │ │ │ │ ├── list.md │ │ │ │ │ ├── page.md │ │ │ │ │ ├── radio.md │ │ │ │ │ ├── richtext.md │ │ │ │ │ ├── scroller.md │ │ │ │ │ ├── switch.md │ │ │ │ │ ├── textarea.md │ │ │ │ │ └── video.md │ │ │ │ └── chameleon-ui/ │ │ │ │ ├── c-actionsheet.md │ │ │ │ ├── c-aside.md │ │ │ │ ├── c-checkbox-group.md │ │ │ │ ├── c-col.md │ │ │ │ ├── c-container.md │ │ │ │ ├── c-dialog.md │ │ │ │ ├── c-foot.md │ │ │ │ ├── c-form-item.md │ │ │ │ ├── c-form.md │ │ │ │ ├── c-head.md │ │ │ │ ├── c-main.md │ │ │ │ ├── c-picker-item.md │ │ │ │ ├── c-picker-panel.md │ │ │ │ ├── c-picker.md │ │ │ │ ├── c-popup.md │ │ │ │ ├── c-radio-group.md │ │ │ │ ├── c-refresh.md │ │ │ │ ├── c-row.md │ │ │ │ ├── c-tab-pane-item.md │ │ │ │ ├── c-tab-pane.md │ │ │ │ ├── c-tabs-item.md │ │ │ │ ├── c-tabs.md │ │ │ │ ├── c-tip.md │ │ │ │ └── c-toast.md │ │ │ ├── directory-specification.md │ │ │ ├── interface-specification.md │ │ │ └── templates/ │ │ │ ├── template-functionalities.md │ │ │ ├── template-internal.md │ │ │ └── template.md │ │ ├── file-spec.js │ │ ├── file-structure.js │ │ ├── index.js │ │ ├── linters/ │ │ │ ├── index.js │ │ │ ├── json.js │ │ │ ├── script.js │ │ │ ├── style.js │ │ │ └── template.js │ │ ├── package.json │ │ ├── test/ │ │ │ ├── checker/ │ │ │ │ └── cml/ │ │ │ │ ├── json/ │ │ │ │ │ ├── nonstandard.cml │ │ │ │ │ ├── nonstandard.interface │ │ │ │ │ ├── nonstandard.weex.cml │ │ │ │ │ ├── nonstandard.wx.cml │ │ │ │ │ └── standard.cml │ │ │ │ └── script/ │ │ │ │ ├── global-variable/ │ │ │ │ │ ├── standard.interface │ │ │ │ │ ├── standard.web.cml │ │ │ │ │ ├── standard.weex.cml │ │ │ │ │ └── standard.wx.cml │ │ │ │ ├── include/ │ │ │ │ │ ├── include-interface-fail.interface │ │ │ │ │ ├── include-src-cml-fail.interface │ │ │ │ │ ├── include-src-cml-mis-prop-fail.interface │ │ │ │ │ ├── include-src-js-class-name-fail.interface │ │ │ │ │ ├── include-src-js-fail.interface │ │ │ │ │ ├── include-src-js-mis-prop-fail.interface │ │ │ │ │ ├── origin-comp-interface.interface │ │ │ │ │ ├── origin-interface.interface │ │ │ │ │ └── src/ │ │ │ │ │ ├── someplatform-mis-class.js │ │ │ │ │ ├── someplatform-mis-prop.cml │ │ │ │ │ └── someplatform-mis-prop.js │ │ │ │ ├── interfaces/ │ │ │ │ │ └── prop-not-defined.interface │ │ │ │ ├── no-global-variable/ │ │ │ │ │ ├── standard.interface │ │ │ │ │ ├── standard.web.cml │ │ │ │ │ ├── standard.weex.cml │ │ │ │ │ └── standard.wx.cml │ │ │ │ ├── nointerface/ │ │ │ │ │ └── nonstandard.wx.cml │ │ │ │ ├── nonstandard.cml │ │ │ │ ├── properties-methods/ │ │ │ │ │ ├── event-not-defined.interface │ │ │ │ │ ├── event-not-defined.web.cml │ │ │ │ │ ├── property-not-defined.interface │ │ │ │ │ └── property-not-defined.wx.cml │ │ │ │ ├── standard/ │ │ │ │ │ ├── standard.interface │ │ │ │ │ ├── standard.web.cml │ │ │ │ │ ├── standard.weex.cml │ │ │ │ │ └── standard.wx.cml │ │ │ │ └── standard.cml │ │ │ ├── cml.test.js │ │ │ ├── config.test.js │ │ │ ├── core/ │ │ │ │ └── standard/ │ │ │ │ ├── chameleon.config.js │ │ │ │ └── src/ │ │ │ │ ├── app/ │ │ │ │ │ └── app.cml │ │ │ │ ├── router.config.json │ │ │ │ └── store/ │ │ │ │ └── index.js │ │ │ ├── core.test.js │ │ │ ├── interface/ │ │ │ │ └── common.interface │ │ │ ├── interface.test.js │ │ │ ├── linter/ │ │ │ │ └── cml/ │ │ │ │ ├── cml/ │ │ │ │ │ ├── nointerface/ │ │ │ │ │ │ └── standard.web.cml │ │ │ │ │ ├── nonstandard.cml │ │ │ │ │ ├── standard/ │ │ │ │ │ │ ├── standard.interface │ │ │ │ │ │ ├── standard.web.cml │ │ │ │ │ │ ├── standard.weex.cml │ │ │ │ │ │ └── standard.wx.cml │ │ │ │ │ ├── standard.cml │ │ │ │ │ └── syntaxError/ │ │ │ │ │ ├── standard.interface │ │ │ │ │ ├── standard.web.cml │ │ │ │ │ ├── standard.weex.cml │ │ │ │ │ └── standard.wx.cml │ │ │ │ ├── json/ │ │ │ │ │ ├── .cmllintrc │ │ │ │ │ ├── no-bracket.cml │ │ │ │ │ ├── no-comma.cml │ │ │ │ │ ├── no-quotes.cml │ │ │ │ │ └── standard.cml │ │ │ │ ├── script/ │ │ │ │ │ ├── nonstandard-arrow.cml │ │ │ │ │ ├── nonstandard.cml │ │ │ │ │ └── standard.cml │ │ │ │ └── style/ │ │ │ │ ├── .cmllintrc │ │ │ │ ├── nest.cml │ │ │ │ ├── no-bracket.cml │ │ │ │ ├── no-semicolon.cml │ │ │ │ ├── no-standard-important.cml │ │ │ │ ├── no-standard.stylus.cml │ │ │ │ ├── standard.cml │ │ │ │ └── standard.stylus.cml │ │ │ ├── lintrc/ │ │ │ │ ├── nonstandard/ │ │ │ │ │ └── .cmllintrc │ │ │ │ └── standard/ │ │ │ │ └── .cmllintrc │ │ │ ├── template/ │ │ │ │ ├── checker/ │ │ │ │ │ ├── template-lib-class.test.js │ │ │ │ │ ├── template-lib-export.test.js │ │ │ │ │ ├── template-lib-js.test.js │ │ │ │ │ ├── template-lib-json.test.js │ │ │ │ │ ├── template-lib-template.test.js │ │ │ │ │ └── template.test.js │ │ │ │ ├── docs/ │ │ │ │ │ ├── check/ │ │ │ │ │ │ ├── fail/ │ │ │ │ │ │ │ ├── index-props-events-cml.cml │ │ │ │ │ │ │ ├── index-props-events-vue.cml │ │ │ │ │ │ │ ├── index-props-methods-polymorphic.cml │ │ │ │ │ │ │ ├── index-props-methods-single.cml │ │ │ │ │ │ │ ├── index-vars-events.cml │ │ │ │ │ │ │ ├── index-vars-methods-cml.cml │ │ │ │ │ │ │ └── index-vars-methods-vue.cml │ │ │ │ │ │ └── success/ │ │ │ │ │ │ ├── index-lib-check-class.cml │ │ │ │ │ │ ├── index-lib-check-export.cml │ │ │ │ │ │ ├── index-lib-check-implements.cml │ │ │ │ │ │ ├── index-lib-check-plugin.cml │ │ │ │ │ │ ├── index-lib-check-vue-class.cml │ │ │ │ │ │ ├── index-lib-js-class.cml │ │ │ │ │ │ ├── index-lib-js-export.cml │ │ │ │ │ │ ├── index-lib-json-polymorphic.cml │ │ │ │ │ │ ├── index-lib-json-single.cml │ │ │ │ │ │ ├── index-lib-template-cml.cml │ │ │ │ │ │ └── index-lib-template-vue.cml │ │ │ │ │ └── components/ │ │ │ │ │ ├── c-checkbox/ │ │ │ │ │ │ └── c-checkbox.cml │ │ │ │ │ ├── radio/ │ │ │ │ │ │ └── radio.cml │ │ │ │ │ ├── scroller/ │ │ │ │ │ │ ├── scroller.interface │ │ │ │ │ │ ├── scroller.web.cml │ │ │ │ │ │ ├── scroller.weex.cml │ │ │ │ │ │ └── scroller.wx.cml │ │ │ │ │ ├── show-component/ │ │ │ │ │ │ ├── scroller.interface │ │ │ │ │ │ ├── scroller.web.cml │ │ │ │ │ │ ├── scroller.weex.cml │ │ │ │ │ │ └── scroller.wx.cml │ │ │ │ │ └── single/ │ │ │ │ │ └── single.cml │ │ │ │ └── linter/ │ │ │ │ ├── cases/ │ │ │ │ │ ├── fail/ │ │ │ │ │ │ ├── built-in-embed-rule-excludes-error.js │ │ │ │ │ │ ├── built-in-embed-rule-includes-error.js │ │ │ │ │ │ ├── built-in-props-error.js │ │ │ │ │ │ ├── built-in-props-lang-vue-error.js │ │ │ │ │ │ ├── directive-cml-error.js │ │ │ │ │ │ ├── directive-vue-error.js │ │ │ │ │ │ ├── index.js │ │ │ │ │ │ ├── lang-error.js │ │ │ │ │ │ ├── origin-component-cml-directive-forbiden-error.js │ │ │ │ │ │ ├── origin-component-skip-rules-error.js │ │ │ │ │ │ ├── platform-specific-tags-error.js │ │ │ │ │ │ ├── template-tag-error.js │ │ │ │ │ │ └── usingcomponent-ref-error.js │ │ │ │ │ └── pass/ │ │ │ │ │ ├── built-in-embed-rule-excludes-pass.js │ │ │ │ │ ├── built-in-embed-rule-includes-pass.js │ │ │ │ │ ├── built-in-props-lang-vue-pass.js │ │ │ │ │ ├── built-in-props-pass.js │ │ │ │ │ ├── component-is-pass.js │ │ │ │ │ ├── index.js │ │ │ │ │ ├── lang-pass.js │ │ │ │ │ ├── origin-component-skip-rules-pass.js │ │ │ │ │ ├── platform-specific-tags-pass.js │ │ │ │ │ ├── tag-close.js │ │ │ │ │ └── usingcomponent-ref-pass.js │ │ │ │ └── template.test.js │ │ │ └── utils.test.js │ │ └── utils.js │ ├── chameleon-loader/ │ │ ├── .eslintrc │ │ ├── .gitignore │ │ ├── .npmignore │ │ ├── .scripts/ │ │ │ └── version.js │ │ ├── LICENSE │ │ ├── gulpfile.js │ │ ├── package.json │ │ ├── src/ │ │ │ ├── cml-compile/ │ │ │ │ ├── handle-platform-css.js │ │ │ │ ├── json-handle.js │ │ │ │ ├── runtime/ │ │ │ │ │ ├── app.js │ │ │ │ │ ├── common/ │ │ │ │ │ │ └── util.js │ │ │ │ │ ├── component.js │ │ │ │ │ ├── index.js │ │ │ │ │ ├── page.js │ │ │ │ │ ├── web/ │ │ │ │ │ │ ├── app.js │ │ │ │ │ │ ├── component.js │ │ │ │ │ │ ├── page.js │ │ │ │ │ │ └── util.js │ │ │ │ │ ├── weex/ │ │ │ │ │ │ └── util.js │ │ │ │ │ └── wx/ │ │ │ │ │ └── util.js │ │ │ │ └── wxml-selector.js │ │ │ ├── helpers.js │ │ │ ├── index.js │ │ │ ├── interface-check/ │ │ │ │ ├── check.js │ │ │ │ └── getScriptCode.js │ │ │ ├── load-icon.js │ │ │ ├── loader.js │ │ │ ├── loaderMethods.js │ │ │ ├── miniapp-script.js │ │ │ ├── parser.js │ │ │ ├── runtime/ │ │ │ │ ├── check.js │ │ │ │ └── component-normalizer.js │ │ │ ├── selector.js │ │ │ └── utils/ │ │ │ ├── normalize.js │ │ │ ├── prehandle.js │ │ │ └── try-require.js │ │ └── test/ │ │ └── src/ │ │ ├── cml-compile.test/ │ │ │ └── runtime/ │ │ │ ├── all-properties.js │ │ │ ├── common-utils.test.js │ │ │ ├── web-utils.test.js │ │ │ ├── weex-utils.test.js │ │ │ └── wx-utils.test.js │ │ ├── load-icon.test.js │ │ ├── loader.test.js │ │ ├── loaderMethods.test.js │ │ ├── parser.cml │ │ ├── parser.test.js │ │ ├── project/ │ │ │ └── src/ │ │ │ ├── components/ │ │ │ │ └── coma.cml │ │ │ └── pages/ │ │ │ └── pagea.cml │ │ └── utils.test/ │ │ ├── normalize.test.js │ │ ├── prehandle.test.js │ │ └── try-require.test.js │ ├── chameleon-miniapp-target/ │ │ ├── .eslintrc │ │ ├── .gitignore │ │ ├── .npmignore │ │ ├── gulpfile.js │ │ ├── package.json │ │ └── src/ │ │ ├── JsonpChunkTemplatePlugin.js │ │ ├── JsonpHotUpdateChunkTemplatePlugin.js │ │ ├── JsonpMainTemplatePlugin.js │ │ ├── JsonpTemplatePlugin.js │ │ └── index.js │ ├── chameleon-mixins/ │ │ ├── .eslintrc │ │ ├── .gitignore │ │ ├── .npmignore │ │ ├── alipay-mixins.js │ │ ├── common.js │ │ ├── miniapp-utils/ │ │ │ └── px2cpx.js │ │ ├── package.json │ │ ├── test/ │ │ │ ├── common.test.js │ │ │ ├── utils.test.js │ │ │ ├── web-mixins.test.js │ │ │ ├── weex-mixins.test.js │ │ │ └── wx-mixins.test.js │ │ ├── utils.js │ │ ├── web-mixins.js │ │ ├── web-utils/ │ │ │ └── px2cpx.js │ │ ├── weex-mixins.js │ │ ├── wx-alipay-common-mixins.js │ │ └── wx-mixins.js │ ├── chameleon-template-parse/ │ │ ├── .eslintrc │ │ ├── .gitignore │ │ ├── .npmignore │ │ ├── LICENSE │ │ ├── gulpfile.js │ │ ├── index.html │ │ ├── index.js │ │ ├── package.json │ │ ├── src/ │ │ │ ├── common/ │ │ │ │ ├── cml-map.js │ │ │ │ ├── process-template.js │ │ │ │ └── utils.js │ │ │ ├── compile-template-cml.js │ │ │ ├── compile-template-vue.js │ │ │ ├── index.js │ │ │ └── parser/ │ │ │ ├── index.js │ │ │ ├── parse-animation-tag.js │ │ │ ├── parse-attribute.js │ │ │ ├── parse-class.js │ │ │ ├── parse-condition.js │ │ │ ├── parse-directive.js │ │ │ ├── parse-event.js │ │ │ ├── parse-interation.js │ │ │ ├── parse-ref.js │ │ │ ├── parse-style.js │ │ │ └── parse-vue2wx.js │ │ ├── test/ │ │ │ ├── common/ │ │ │ │ ├── process-template.test.js │ │ │ │ └── utils.test.js │ │ │ ├── index.js │ │ │ └── parser/ │ │ │ ├── cml.test.js │ │ │ ├── index.cml.test.js │ │ │ ├── index.vue.test.js │ │ │ └── vue.test.js │ │ └── webpack.config.js │ ├── chameleon-templates/ │ │ ├── .eslintrc │ │ ├── .gitignore │ │ ├── component/ │ │ │ ├── component/ │ │ │ │ └── index.cml │ │ │ ├── interface-component/ │ │ │ │ ├── index.alipay.cml │ │ │ │ ├── index.baidu.cml │ │ │ │ ├── index.interface │ │ │ │ ├── index.qq.cml │ │ │ │ ├── index.tt.cml │ │ │ │ ├── index.web.cml │ │ │ │ ├── index.weex.cml │ │ │ │ └── index.wx.cml │ │ │ └── interface-js/ │ │ │ └── index.interface │ │ ├── index.js │ │ ├── package.json │ │ ├── page/ │ │ │ └── index.cml │ │ ├── project/ │ │ │ ├── .gitignore │ │ │ ├── chameleon.config.js │ │ │ ├── mock/ │ │ │ │ ├── api/ │ │ │ │ │ └── index.js │ │ │ │ └── template/ │ │ │ │ └── index.php │ │ │ ├── package.json │ │ │ └── src/ │ │ │ ├── app/ │ │ │ │ └── app.cml │ │ │ ├── components/ │ │ │ │ └── demo-com/ │ │ │ │ └── demo-com.cml │ │ │ ├── pages/ │ │ │ │ └── index/ │ │ │ │ └── index.cml │ │ │ ├── router.config.json │ │ │ └── store/ │ │ │ ├── actions.js │ │ │ ├── getters.js │ │ │ ├── index.js │ │ │ ├── mutations.js │ │ │ └── state.js │ │ ├── server/ │ │ │ ├── fisdata/ │ │ │ │ ├── FISData.class.php │ │ │ │ ├── Manager.class.php │ │ │ │ ├── README.md │ │ │ │ ├── TestData.class.php │ │ │ │ ├── bookmark.js │ │ │ │ ├── index.tpl │ │ │ │ ├── libs/ │ │ │ │ │ ├── JsonPro/ │ │ │ │ │ │ ├── CommonHelper.php │ │ │ │ │ │ ├── Demo.php │ │ │ │ │ │ ├── adocParser.php │ │ │ │ │ │ ├── genArray.php │ │ │ │ │ │ ├── genCase.php │ │ │ │ │ │ ├── genConf.php │ │ │ │ │ │ ├── genFile.php │ │ │ │ │ │ ├── genInterface.php │ │ │ │ │ │ ├── genLog.php │ │ │ │ │ │ └── genValue.php │ │ │ │ │ └── Util.class.php │ │ │ │ ├── package.json │ │ │ │ └── plugin/ │ │ │ │ ├── ChameleonData.class.php │ │ │ │ ├── FISADOCData.class.php │ │ │ │ ├── FISJSONData.class.php │ │ │ │ ├── FISPHPData.class.php │ │ │ │ ├── gen_plugins.php.sh │ │ │ │ └── plugins.php │ │ │ ├── index.php │ │ │ ├── rewrite/ │ │ │ │ ├── README.md │ │ │ │ └── Rewrite.php │ │ │ ├── smarty/ │ │ │ │ ├── Smarty.class.php │ │ │ │ ├── SmartyBC.class.php │ │ │ │ ├── debug.tpl │ │ │ │ ├── plugins/ │ │ │ │ │ ├── block.textformat.php │ │ │ │ │ ├── function.counter.php │ │ │ │ │ ├── function.cycle.php │ │ │ │ │ ├── function.fetch.php │ │ │ │ │ ├── function.html_checkboxes.php │ │ │ │ │ ├── function.html_image.php │ │ │ │ │ ├── function.html_options.php │ │ │ │ │ ├── function.html_radios.php │ │ │ │ │ ├── function.html_select_date.php │ │ │ │ │ ├── function.html_select_time.php │ │ │ │ │ ├── function.html_table.php │ │ │ │ │ ├── function.mailto.php │ │ │ │ │ ├── function.math.php │ │ │ │ │ ├── modifier.capitalize.php │ │ │ │ │ ├── modifier.date_format.php │ │ │ │ │ ├── modifier.debug_print_var.php │ │ │ │ │ ├── modifier.escape.php │ │ │ │ │ ├── modifier.regex_replace.php │ │ │ │ │ ├── modifier.replace.php │ │ │ │ │ ├── modifier.spacify.php │ │ │ │ │ ├── modifier.truncate.php │ │ │ │ │ ├── modifiercompiler.cat.php │ │ │ │ │ ├── modifiercompiler.count_characters.php │ │ │ │ │ ├── modifiercompiler.count_paragraphs.php │ │ │ │ │ ├── modifiercompiler.count_sentences.php │ │ │ │ │ ├── modifiercompiler.count_words.php │ │ │ │ │ ├── modifiercompiler.default.php │ │ │ │ │ ├── modifiercompiler.escape.php │ │ │ │ │ ├── modifiercompiler.from_charset.php │ │ │ │ │ ├── modifiercompiler.indent.php │ │ │ │ │ ├── modifiercompiler.lower.php │ │ │ │ │ ├── modifiercompiler.noprint.php │ │ │ │ │ ├── modifiercompiler.string_format.php │ │ │ │ │ ├── modifiercompiler.strip.php │ │ │ │ │ ├── modifiercompiler.strip_tags.php │ │ │ │ │ ├── modifiercompiler.to_charset.php │ │ │ │ │ ├── modifiercompiler.unescape.php │ │ │ │ │ ├── modifiercompiler.upper.php │ │ │ │ │ ├── modifiercompiler.wordwrap.php │ │ │ │ │ ├── outputfilter.trimwhitespace.php │ │ │ │ │ ├── shared.escape_special_chars.php │ │ │ │ │ ├── shared.literal_compiler_param.php │ │ │ │ │ ├── shared.make_timestamp.php │ │ │ │ │ ├── shared.mb_str_replace.php │ │ │ │ │ ├── shared.mb_unicode.php │ │ │ │ │ ├── shared.mb_wordwrap.php │ │ │ │ │ └── variablefilter.htmlspecialchars.php │ │ │ │ └── sysplugins/ │ │ │ │ ├── smarty_cacheresource.php │ │ │ │ ├── smarty_cacheresource_custom.php │ │ │ │ ├── smarty_cacheresource_keyvaluestore.php │ │ │ │ ├── smarty_config_source.php │ │ │ │ ├── smarty_internal_cacheresource_file.php │ │ │ │ ├── smarty_internal_compile_append.php │ │ │ │ ├── smarty_internal_compile_assign.php │ │ │ │ ├── smarty_internal_compile_block.php │ │ │ │ ├── smarty_internal_compile_break.php │ │ │ │ ├── smarty_internal_compile_call.php │ │ │ │ ├── smarty_internal_compile_capture.php │ │ │ │ ├── smarty_internal_compile_config_load.php │ │ │ │ ├── smarty_internal_compile_continue.php │ │ │ │ ├── smarty_internal_compile_debug.php │ │ │ │ ├── smarty_internal_compile_eval.php │ │ │ │ ├── smarty_internal_compile_extends.php │ │ │ │ ├── smarty_internal_compile_for.php │ │ │ │ ├── smarty_internal_compile_foreach.php │ │ │ │ ├── smarty_internal_compile_function.php │ │ │ │ ├── smarty_internal_compile_if.php │ │ │ │ ├── smarty_internal_compile_include.php │ │ │ │ ├── smarty_internal_compile_include_php.php │ │ │ │ ├── smarty_internal_compile_insert.php │ │ │ │ ├── smarty_internal_compile_ldelim.php │ │ │ │ ├── smarty_internal_compile_nocache.php │ │ │ │ ├── smarty_internal_compile_private_block_plugin.php │ │ │ │ ├── smarty_internal_compile_private_function_plugin.php │ │ │ │ ├── smarty_internal_compile_private_modifier.php │ │ │ │ ├── smarty_internal_compile_private_object_block_function.php │ │ │ │ ├── smarty_internal_compile_private_object_function.php │ │ │ │ ├── smarty_internal_compile_private_print_expression.php │ │ │ │ ├── smarty_internal_compile_private_registered_block.php │ │ │ │ ├── smarty_internal_compile_private_registered_function.php │ │ │ │ ├── smarty_internal_compile_private_special_variable.php │ │ │ │ ├── smarty_internal_compile_rdelim.php │ │ │ │ ├── smarty_internal_compile_section.php │ │ │ │ ├── smarty_internal_compile_setfilter.php │ │ │ │ ├── smarty_internal_compile_while.php │ │ │ │ ├── smarty_internal_compilebase.php │ │ │ │ ├── smarty_internal_config.php │ │ │ │ ├── smarty_internal_config_file_compiler.php │ │ │ │ ├── smarty_internal_configfilelexer.php │ │ │ │ ├── smarty_internal_configfileparser.php │ │ │ │ ├── smarty_internal_data.php │ │ │ │ ├── smarty_internal_debug.php │ │ │ │ ├── smarty_internal_filter_handler.php │ │ │ │ ├── smarty_internal_function_call_handler.php │ │ │ │ ├── smarty_internal_get_include_path.php │ │ │ │ ├── smarty_internal_nocache_insert.php │ │ │ │ ├── smarty_internal_parsetree.php │ │ │ │ ├── smarty_internal_resource_eval.php │ │ │ │ ├── smarty_internal_resource_extends.php │ │ │ │ ├── smarty_internal_resource_file.php │ │ │ │ ├── smarty_internal_resource_php.php │ │ │ │ ├── smarty_internal_resource_registered.php │ │ │ │ ├── smarty_internal_resource_stream.php │ │ │ │ ├── smarty_internal_resource_string.php │ │ │ │ ├── smarty_internal_smartytemplatecompiler.php │ │ │ │ ├── smarty_internal_template.php │ │ │ │ ├── smarty_internal_templatebase.php │ │ │ │ ├── smarty_internal_templatecompilerbase.php │ │ │ │ ├── smarty_internal_templatelexer.php │ │ │ │ ├── smarty_internal_templateparser.php │ │ │ │ ├── smarty_internal_utility.php │ │ │ │ ├── smarty_internal_write_file.php │ │ │ │ ├── smarty_resource.php │ │ │ │ ├── smarty_resource_custom.php │ │ │ │ ├── smarty_resource_recompiled.php │ │ │ │ ├── smarty_resource_uncompiled.php │ │ │ │ └── smarty_security.php │ │ │ └── smarty.conf │ │ └── todo-demo/ │ │ ├── .gitignore │ │ ├── chameleon.config.js │ │ ├── mock/ │ │ │ ├── api/ │ │ │ │ └── index.js │ │ │ └── template/ │ │ │ └── index.php │ │ ├── package.json │ │ └── src/ │ │ ├── app/ │ │ │ └── app.cml │ │ ├── components/ │ │ │ ├── c-checkbox/ │ │ │ │ └── c-checkbox.cml │ │ │ └── c-todoitem/ │ │ │ └── c-todoitem.cml │ │ ├── pages/ │ │ │ └── index/ │ │ │ └── index.cml │ │ ├── router.config.json │ │ └── store/ │ │ ├── action-types.js │ │ ├── actions.js │ │ ├── getter-types.js │ │ ├── getters.js │ │ ├── index/ │ │ │ ├── action-types.js │ │ │ ├── actions.js │ │ │ ├── getter-types.js │ │ │ ├── getters.js │ │ │ ├── mutation-types.js │ │ │ ├── mutations.js │ │ │ └── state.js │ │ ├── index.js │ │ ├── mutation-types.js │ │ ├── mutations.js │ │ ├── state.js │ │ └── utils.js │ ├── chameleon-tool/ │ │ ├── .babelrc │ │ ├── .eslintrc │ │ ├── .gitignore │ │ ├── .istanbul.yml │ │ ├── .npmignore │ │ ├── .travis.yml │ │ ├── README.md │ │ ├── chameleon.js │ │ ├── commanders/ │ │ │ ├── alipay/ │ │ │ │ └── index.js │ │ │ ├── baidu/ │ │ │ │ └── index.js │ │ │ ├── build/ │ │ │ │ └── index.js │ │ │ ├── dev/ │ │ │ │ └── index.js │ │ │ ├── ext/ │ │ │ │ └── index.js │ │ │ ├── extPlatform.js │ │ │ ├── info/ │ │ │ │ └── index.js │ │ │ ├── init/ │ │ │ │ ├── index.js │ │ │ │ └── platform.json │ │ │ ├── qq/ │ │ │ │ └── index.js │ │ │ ├── server/ │ │ │ │ └── index.js │ │ │ ├── tt/ │ │ │ │ └── index.js │ │ │ ├── utils.js │ │ │ ├── web/ │ │ │ │ ├── apiMiddleware.js │ │ │ │ ├── dev-client.js │ │ │ │ ├── dev-server.js │ │ │ │ ├── dynamicApiMiddleware.js │ │ │ │ ├── index.js │ │ │ │ ├── liveload-dev-client.js │ │ │ │ ├── php_cgi_middleware.js │ │ │ │ ├── responseTime.js │ │ │ │ └── web-socket.js │ │ │ ├── weex/ │ │ │ │ ├── index.js │ │ │ │ └── socket-server.js │ │ │ └── wx/ │ │ │ └── index.js │ │ ├── configs/ │ │ │ ├── cml-loader.conf.js │ │ │ ├── component_export/ │ │ │ │ ├── dependencies.js │ │ │ │ ├── export-loader.js │ │ │ │ ├── exportPlugin.js │ │ │ │ ├── getMiniAppExportConfig.js │ │ │ │ ├── getWebExportConfig.js │ │ │ │ ├── getWebExportConfig_new.js │ │ │ │ ├── getWeexExportConfig.js │ │ │ │ ├── getWeexExportConfig_new.js │ │ │ │ ├── postcssPlugin.js │ │ │ │ ├── utils.js │ │ │ │ ├── webpack.web.config.js │ │ │ │ └── webpack.weex.config.js │ │ │ ├── config.js │ │ │ ├── default/ │ │ │ │ ├── app.cml │ │ │ │ ├── entry.js │ │ │ │ ├── html_entry.html │ │ │ │ ├── miniappPolyfill.js │ │ │ │ ├── rem.js │ │ │ │ ├── router.js │ │ │ │ ├── smarty_entry.html │ │ │ │ ├── weexPolyfill.js │ │ │ │ └── weex_liveload_entry.js │ │ │ ├── entryLoader.js │ │ │ ├── getCommonConfig.js │ │ │ ├── getMiniAppBuildConfig.js │ │ │ ├── getMiniAppCommonConfig.js │ │ │ ├── getMiniAppDevConfig.js │ │ │ ├── getWebBuildConfig.js │ │ │ ├── getWebCommonConfig.js │ │ │ ├── getWebDevConfig.js │ │ │ ├── getWebExportConfig.js │ │ │ ├── getWeexBuildConfig.js │ │ │ ├── getWeexCommonConfig.js │ │ │ ├── getWeexDevConfig.js │ │ │ ├── index.js │ │ │ ├── mvvm/ │ │ │ │ ├── getExtendConfig.js │ │ │ │ └── originSourceLoader.js │ │ │ ├── plugins/ │ │ │ │ ├── CopyNpmPLugin.js │ │ │ │ ├── miniAppBaseCssAdd.js │ │ │ │ └── miniAppSubPkg.js │ │ │ ├── postcss/ │ │ │ │ ├── alipay/ │ │ │ │ │ └── .postcssrc.js │ │ │ │ ├── baidu/ │ │ │ │ │ └── .postcssrc.js │ │ │ │ ├── export/ │ │ │ │ │ └── .postcssrc.js │ │ │ │ ├── extend/ │ │ │ │ │ └── .postcssrc.js │ │ │ │ ├── qq/ │ │ │ │ │ └── .postcssrc.js │ │ │ │ ├── tt/ │ │ │ │ │ └── .postcssrc.js │ │ │ │ ├── web/ │ │ │ │ │ └── .postcssrc.js │ │ │ │ ├── weex/ │ │ │ │ │ └── .postcssrc.js │ │ │ │ └── wx/ │ │ │ │ └── .postcssrc.js │ │ │ ├── preview-assets/ │ │ │ │ └── qrcode.js │ │ │ ├── preview.html │ │ │ ├── routerLoader.js │ │ │ ├── utils.js │ │ │ ├── web_empty.html │ │ │ ├── web_global.css │ │ │ ├── web_global.js │ │ │ └── weex_liveload/ │ │ │ ├── WeexWebSocket.js │ │ │ └── liveLoad.js │ │ ├── lib/ │ │ │ ├── cli.js │ │ │ ├── config.js │ │ │ ├── index.js │ │ │ ├── log.js │ │ │ └── utils.js │ │ ├── npm-shrinkwrap.json │ │ ├── package.json │ │ └── test/ │ │ ├── commander/ │ │ │ ├── index.cml │ │ │ ├── index.interface │ │ │ └── init.test.js │ │ ├── configs/ │ │ │ └── utils.js │ │ └── lib/ │ │ ├── cli.test.js │ │ ├── config.test.js │ │ ├── index.test.js │ │ └── log.test.js │ ├── chameleon-tool-utils/ │ │ ├── .eslintrc │ │ ├── .gitignore │ │ ├── .istanbul.yml │ │ ├── .npmignore │ │ ├── .travis.yml │ │ ├── gulpfile.js │ │ ├── package.json │ │ ├── src/ │ │ │ ├── index.js │ │ │ ├── lib/ │ │ │ │ └── splitParts.js │ │ │ └── log.js │ │ └── test/ │ │ ├── index.test.js │ │ ├── log.test.js │ │ └── testlib/ │ │ ├── alipay/ │ │ │ ├── alipay.axml │ │ │ └── alipay.json │ │ ├── baidu/ │ │ │ ├── baidu.json │ │ │ └── baidu.swan │ │ ├── cli/ │ │ │ └── config.js │ │ ├── demo-project/ │ │ │ ├── .gitignore │ │ │ ├── chameleon.config.js │ │ │ ├── coma/ │ │ │ │ └── coma.interface │ │ │ ├── comb/ │ │ │ │ └── comb.cml │ │ │ ├── index.cml │ │ │ ├── package.json │ │ │ └── src/ │ │ │ ├── app/ │ │ │ │ └── app.cml │ │ │ ├── components/ │ │ │ │ ├── com1/ │ │ │ │ │ └── com1.cml │ │ │ │ ├── com2/ │ │ │ │ │ ├── com2.interface │ │ │ │ │ ├── com2.web.cml │ │ │ │ │ └── com2.wx.cml │ │ │ │ └── com3/ │ │ │ │ └── com3.interface │ │ │ ├── pages/ │ │ │ │ ├── pagea/ │ │ │ │ │ └── pagea.cml │ │ │ │ └── pageb/ │ │ │ │ └── pageb.cml │ │ │ └── router.config.json │ │ ├── index.cml │ │ ├── index.interface │ │ └── wx/ │ │ ├── wx.json │ │ └── wx.wxml │ ├── chameleon-vue-precompiler/ │ │ ├── .gitignore │ │ ├── .npmignore │ │ ├── lib/ │ │ │ ├── index.js │ │ │ └── precompiler/ │ │ │ ├── components/ │ │ │ │ ├── div.js │ │ │ │ ├── index.js │ │ │ │ └── span.js │ │ │ ├── config.js │ │ │ ├── hooks/ │ │ │ │ ├── events.js │ │ │ │ ├── index.js │ │ │ │ ├── style-binding.js │ │ │ │ └── style.js │ │ │ ├── index.js │ │ │ ├── node/ │ │ │ │ └── tag.js │ │ │ └── util/ │ │ │ ├── ast.js │ │ │ └── index.js │ │ └── package.json │ ├── chameleon-webpack-plugin/ │ │ ├── .eslintrc │ │ ├── .gitignore │ │ ├── index.js │ │ ├── lib/ │ │ │ ├── chunkhash.js │ │ │ ├── moduleId.js │ │ │ └── utils.js │ │ ├── package.json │ │ └── test/ │ │ └── utils.test.js │ ├── chameleon-weex-vue-loader/ │ │ ├── .gitignore │ │ ├── index.js │ │ ├── lib/ │ │ │ ├── gen-id.js │ │ │ ├── loader.js │ │ │ ├── normalize.js │ │ │ ├── parser.js │ │ │ ├── script-loader.js │ │ │ ├── selector.js │ │ │ ├── style-loader.js │ │ │ ├── style-rewriter.js │ │ │ ├── template-compiler.js │ │ │ └── template-loader.js │ │ └── package.json │ ├── cml-component-parser/ │ │ ├── .eslintrc │ │ ├── .gitignore │ │ ├── bin/ │ │ │ └── cli.js │ │ ├── config/ │ │ │ └── parse-config.js │ │ ├── index.js │ │ ├── package.json │ │ ├── src/ │ │ │ ├── entrance-flat.js │ │ │ └── readme-builder.js │ │ └── test/ │ │ ├── docs/ │ │ │ ├── built-in-components/ │ │ │ │ ├── input/ │ │ │ │ │ ├── input.interface │ │ │ │ │ ├── input.web.cml │ │ │ │ │ ├── input.weex.cml │ │ │ │ │ └── input.wx.cml │ │ │ │ └── layout/ │ │ │ │ ├── aside/ │ │ │ │ │ └── aside.cml │ │ │ │ ├── col/ │ │ │ │ │ └── col.cml │ │ │ │ ├── container/ │ │ │ │ │ └── container.cml │ │ │ │ └── foot/ │ │ │ │ └── foot.cml │ │ │ ├── export-default.cml │ │ │ └── index.interface │ │ └── test.js │ ├── cml-extract-css-webpack-plugin/ │ │ ├── LICENSE │ │ ├── README.md │ │ ├── dist/ │ │ │ ├── cjs.js │ │ │ ├── helper.js │ │ │ ├── index.js │ │ │ ├── lib/ │ │ │ │ ├── ExtractTextPluginCompilation.js │ │ │ │ ├── ExtractedModule.js │ │ │ │ ├── OrderUndefinedError.js │ │ │ │ └── helpers.js │ │ │ └── loader.js │ │ ├── package.json │ │ ├── schema/ │ │ │ ├── loader.json │ │ │ └── plugin.json │ │ └── test/ │ │ └── index.js │ ├── cml-htmllinter/ │ │ ├── AUTHORS │ │ ├── HISTORY │ │ ├── LICENSE │ │ ├── docs/ │ │ │ └── gen_options.js │ │ ├── gulpfile.js │ │ ├── lib/ │ │ │ ├── config.js │ │ │ ├── hook/ │ │ │ │ ├── index.js │ │ │ │ ├── skip-empty-text.js │ │ │ │ ├── skip-normal-tag.js │ │ │ │ └── skip_origin_tag.js │ │ │ ├── index.js │ │ │ ├── inline_config.js │ │ │ ├── issue.js │ │ │ ├── knife/ │ │ │ │ ├── README.md │ │ │ │ ├── apply_rules.js │ │ │ │ ├── attr_parse.js │ │ │ │ ├── boolean_attrs.js │ │ │ │ ├── index.js │ │ │ │ ├── is_cml_directives.js │ │ │ │ ├── is_common_attrs.js │ │ │ │ ├── is_common_events.js │ │ │ │ ├── is_labeable.js │ │ │ │ ├── is_origin_tag.js │ │ │ │ ├── is_void_element.js │ │ │ │ ├── lang_tag.js │ │ │ │ ├── match_filter.js │ │ │ │ ├── relative_line_col.js │ │ │ │ ├── shred.js │ │ │ │ └── tag_utils.js │ │ │ ├── linter.js │ │ │ ├── messages.js │ │ │ ├── parser/ │ │ │ │ ├── dom_builder.js │ │ │ │ └── index.js │ │ │ ├── presets/ │ │ │ │ ├── accessibility.js │ │ │ │ ├── default.js │ │ │ │ ├── global.js │ │ │ │ ├── index.js │ │ │ │ └── validate.js │ │ │ ├── process_option.js │ │ │ ├── rules/ │ │ │ │ ├── attr-bans.js │ │ │ │ ├── attr-name-style.js │ │ │ │ ├── attr-new-line.js │ │ │ │ ├── attr-no-dup.js │ │ │ │ ├── attr-no-unsafe-char.js │ │ │ │ ├── attr-order.js │ │ │ │ ├── attr-quote-style.js │ │ │ │ ├── attr-req-value.js │ │ │ │ ├── attr-validate.js │ │ │ │ ├── attr.js │ │ │ │ ├── class-no-dup.js │ │ │ │ ├── class-style.js │ │ │ │ ├── class.js │ │ │ │ ├── component-attr-check.js │ │ │ │ ├── directive-cml-valid-value.js │ │ │ │ ├── directive-cml.js │ │ │ │ ├── directive-name-forbiden.js │ │ │ │ ├── doctype-first.js │ │ │ │ ├── doctype-html5.js │ │ │ │ ├── dom.js │ │ │ │ ├── fig-req-figcaption.js │ │ │ │ ├── focusable-tabindex-style.js │ │ │ │ ├── free-options.js │ │ │ │ ├── head-req-title.js │ │ │ │ ├── head-valid-content-model.js │ │ │ │ ├── href-style.js │ │ │ │ ├── html-valid-content-model.js │ │ │ │ ├── id-class-no-ad.js │ │ │ │ ├── id-no-dup.js │ │ │ │ ├── id-style.js │ │ │ │ ├── img-req-alt.js │ │ │ │ ├── img-req-src.js │ │ │ │ ├── indent-style.js │ │ │ │ ├── index.js │ │ │ │ ├── input-radio-req-name.js │ │ │ │ ├── input-req-label.js │ │ │ │ ├── label-req-for.js │ │ │ │ ├── lang.js │ │ │ │ ├── line-end-style.js │ │ │ │ ├── line-max-len.js │ │ │ │ ├── line-no-trailing-whitespace.js │ │ │ │ ├── line.js │ │ │ │ ├── link-req-noopener.js │ │ │ │ ├── origin-tag-forbidden-directive.js │ │ │ │ ├── origin-tag.js │ │ │ │ ├── spec-char-escape.js │ │ │ │ ├── table-req-caption.js │ │ │ │ ├── table-req-header.js │ │ │ │ ├── tag-bans.js │ │ │ │ ├── tag-close.js │ │ │ │ ├── tag-embed.js │ │ │ │ ├── tag-name-lowercase.js │ │ │ │ ├── tag-req-attr.js │ │ │ │ ├── tag-white-list.js │ │ │ │ ├── tag.js │ │ │ │ ├── template-lang.js │ │ │ │ ├── text-forbid-raw.js │ │ │ │ ├── text.js │ │ │ │ ├── title-max-len.js │ │ │ │ ├── title-no-dup.js │ │ │ │ └── title.js │ │ │ └── tools/ │ │ │ ├── index.js │ │ │ └── is_origin_component.js │ │ ├── package.json │ │ ├── repl.js │ │ └── test/ │ │ ├── .eslintrc │ │ ├── fixtures/ │ │ │ ├── .gitkeep │ │ │ ├── const_rule.js │ │ │ └── sanity.html │ │ ├── functional/ │ │ │ ├── attr-bans.js │ │ │ ├── attr-name-style.js │ │ │ ├── attr-new-line.js │ │ │ ├── attr-no-dup.js │ │ │ ├── attr-no-unsafe-char.js │ │ │ ├── attr-order.js │ │ │ ├── attr-quote-style.js │ │ │ ├── attr-req-value.js │ │ │ ├── attr-validate.js │ │ │ ├── class-no-dup.js │ │ │ ├── class-style.js │ │ │ ├── component-attr-check.js │ │ │ ├── doctype-first.js │ │ │ ├── doctype-html5.js │ │ │ ├── fig-req-figcaption.js │ │ │ ├── focusable-tabindex-style.js │ │ │ ├── head-req-title.js │ │ │ ├── head-valid-content-model.js │ │ │ ├── href-style.js │ │ │ ├── html-valid-content-model.js │ │ │ ├── id-class-no-ad.js │ │ │ ├── id-no-dup.js │ │ │ ├── id-style.js │ │ │ ├── img-req-alt.js │ │ │ ├── img-req-src.js │ │ │ ├── indent-delta.js │ │ │ ├── indent-style.js │ │ │ ├── input-radio-req-name.js │ │ │ ├── input-req-label.js │ │ │ ├── label-req-for.js │ │ │ ├── lang.js │ │ │ ├── line-end-style.js │ │ │ ├── line-max-len.js │ │ │ ├── line-no-trailing-whitespace.js │ │ │ ├── link-req-noopener.js │ │ │ ├── raw-ignore-regex.js │ │ │ ├── runner.test.js │ │ │ ├── spec-char-escape.js │ │ │ ├── table-req-caption.js │ │ │ ├── table-req-header.js │ │ │ ├── tag-bans.js │ │ │ ├── tag-name-lowercase.js │ │ │ ├── tag-req-attr.js │ │ │ ├── title-max-len.js │ │ │ └── title-no-dup.js │ │ └── unit/ │ │ ├── htmllint.js │ │ ├── inline-config-html/ │ │ │ └── inline-all.html │ │ ├── knife.apply_rules.js │ │ ├── knife.is_labeable.js │ │ ├── knife.relative_line_col.js │ │ ├── linter.js │ │ ├── messages.js │ │ ├── parser.dom_builder.js │ │ ├── parser.js │ │ ├── raw-ignore-regex.js │ │ ├── rules.doctype-first.js │ │ ├── rules.focusable-tabindex-style.js │ │ ├── rules.js │ │ └── runner.test.js │ ├── cml-interface-parser/ │ │ ├── .eslintrc │ │ ├── .gitignore │ │ ├── config/ │ │ │ └── babel-parser-config.js │ │ ├── index.js │ │ ├── package.json │ │ ├── src/ │ │ │ ├── ast-tree-parser.js │ │ │ └── file-reader.js │ │ └── test/ │ │ ├── docs/ │ │ │ ├── include-interface.interface │ │ │ └── index.interface │ │ └── test.js │ ├── cml-js-parser/ │ │ ├── .eslintrc │ │ ├── .gitignore │ │ ├── config/ │ │ │ └── babel-parser-config.js │ │ ├── index.js │ │ ├── package.json │ │ ├── src/ │ │ │ ├── file-reader.js │ │ │ └── visitors/ │ │ │ ├── containerPathVisitor.js │ │ │ ├── exportPathVisitor.js │ │ │ └── index.js │ │ └── test/ │ │ ├── docs/ │ │ │ ├── export-class.cml │ │ │ └── export-default.cml │ │ └── test.js │ ├── cml-vue-loader/ │ │ ├── .gitignore │ │ ├── LICENSE │ │ ├── README.md │ │ ├── index.js │ │ ├── lib/ │ │ │ ├── helpers.js │ │ │ ├── loader.js │ │ │ ├── parser.js │ │ │ ├── runtime/ │ │ │ │ └── component-normalizer.js │ │ │ ├── selector.js │ │ │ ├── style-compiler/ │ │ │ │ ├── index.js │ │ │ │ ├── load-postcss-config.js │ │ │ │ └── plugins/ │ │ │ │ ├── scope-id.js │ │ │ │ └── trim.js │ │ │ ├── template-compiler/ │ │ │ │ ├── index.js │ │ │ │ ├── modules/ │ │ │ │ │ ├── transform-require.js │ │ │ │ │ └── transform-srcset.js │ │ │ │ ├── preprocessor.js │ │ │ │ └── url-to-require.js │ │ │ └── utils/ │ │ │ ├── normalize.js │ │ │ ├── options-cache.js │ │ │ └── try-require.js │ │ └── package.json │ ├── easy-chameleon/ │ │ ├── .babelrc │ │ ├── .gitignore │ │ ├── bin/ │ │ │ └── index.js │ │ ├── config/ │ │ │ ├── getWebpackConfig.js │ │ │ └── utils.js │ │ ├── entry/ │ │ │ ├── web_global.css │ │ │ └── web_global.js │ │ ├── index.js │ │ ├── npm-shrinkwrap.json │ │ ├── package.json │ │ └── postcss/ │ │ ├── web/ │ │ │ └── .postcssrc.js │ │ ├── weex/ │ │ │ └── .postcssrc.js │ │ └── wx/ │ │ └── .postcssrc.js │ ├── interface-loader/ │ │ ├── .eslintrc │ │ ├── .gitignore │ │ ├── .npmignore │ │ ├── package.json │ │ ├── src/ │ │ │ ├── index.js │ │ │ └── lib/ │ │ │ └── check.js │ │ └── test/ │ │ └── lib.test/ │ │ ├── check.js │ │ ├── check.test.js │ │ ├── generator.test.js │ │ └── interface.test │ ├── mvvm-babel-generator/ │ │ ├── LICENSE │ │ ├── lib/ │ │ │ ├── buffer.js │ │ │ ├── generators/ │ │ │ │ ├── base.js │ │ │ │ ├── classes.js │ │ │ │ ├── expressions.js │ │ │ │ ├── flow.js │ │ │ │ ├── index.js │ │ │ │ ├── jsx.js │ │ │ │ ├── methods.js │ │ │ │ ├── modules.js │ │ │ │ ├── statements.js │ │ │ │ ├── template-literals.js │ │ │ │ ├── types.js │ │ │ │ └── typescript.js │ │ │ ├── index.js │ │ │ ├── node/ │ │ │ │ ├── index.js │ │ │ │ ├── parentheses.js │ │ │ │ └── whitespace.js │ │ │ ├── printer.js │ │ │ └── source-map.js │ │ └── package.json │ ├── mvvm-babel-parser/ │ │ ├── .eslintrc │ │ ├── .gitignore │ │ ├── .istanbul.yml │ │ ├── .travis.yml │ │ ├── LICENSE │ │ ├── README.md │ │ ├── lib/ │ │ │ └── index.js │ │ ├── package.json │ │ └── test/ │ │ ├── brace.js │ │ └── testjsx.tpl │ ├── mvvm-cml-loader/ │ │ ├── .eslintrc │ │ ├── .gitignore │ │ ├── helper.js │ │ ├── index.js │ │ ├── package.json │ │ └── selector.js │ ├── mvvm-file-loader/ │ │ ├── README.md │ │ ├── dist/ │ │ │ ├── cjs.js │ │ │ ├── index.js │ │ │ └── options.json │ │ └── package.json │ ├── mvvm-interface-parser/ │ │ ├── .eslintrc │ │ ├── .gitignore │ │ ├── README.md │ │ ├── index.js │ │ ├── lib/ │ │ │ ├── check.js │ │ │ ├── getInterfaceCode.js │ │ │ ├── getInterfaceCode_old.js │ │ │ ├── getMethodCode.js │ │ │ ├── getMethodCode_old.js │ │ │ └── resolveRequire.js │ │ ├── package.json │ │ ├── runtime/ │ │ │ ├── checkWrapper.js │ │ │ └── copyProto.js │ │ └── test/ │ │ ├── check.test.js │ │ ├── checkWrapper.test.js │ │ ├── copyProto.test.js │ │ ├── getInterfaceCode.test.js │ │ ├── getMethodCode.test.js │ │ └── lib/ │ │ └── components/ │ │ ├── coma/ │ │ │ ├── coma.alipay.cml │ │ │ ├── coma.baidu.cml │ │ │ ├── coma.interface │ │ │ ├── coma.web.cml │ │ │ ├── coma.weex.cml │ │ │ └── coma.wx.cml │ │ ├── comb/ │ │ │ ├── comb.baidu.cml │ │ │ └── comb.interface │ │ ├── demo-com/ │ │ │ └── demo-com.cml │ │ ├── first/ │ │ │ ├── first.interface │ │ │ └── test.js │ │ ├── methodinclude.interface │ │ ├── methodsrcerror.interface │ │ ├── partsrcerror.interface │ │ ├── ph-com/ │ │ │ ├── ph-com.alipay.cml │ │ │ ├── ph-com.baidu.cml │ │ │ ├── ph-com.interface │ │ │ ├── ph-com.web.cml │ │ │ ├── ph-com.weex.cml │ │ │ └── ph-com.wx.cml │ │ ├── second/ │ │ │ └── second.interface │ │ ├── third/ │ │ │ ├── double.interface │ │ │ ├── includea.interface │ │ │ ├── includeb.interface │ │ │ ├── multi.interface │ │ │ ├── not.interface │ │ │ └── third.interface │ │ ├── third.interface │ │ ├── thirdinterface.js │ │ └── thirdmethod.js │ ├── mvvm-miniapp-loader/ │ │ ├── .eslintrc │ │ ├── .gitignore │ │ ├── helper.js │ │ ├── index.js │ │ ├── package.json │ │ └── selector.js │ ├── mvvm-pack/ │ │ ├── .eslintrc │ │ ├── cmlNode.js │ │ ├── compiler.js │ │ ├── index.js │ │ ├── lib/ │ │ │ ├── amd.js │ │ │ ├── amdbootstrap.global.js │ │ │ ├── amdbootstrap.module.js │ │ │ ├── amdwrapper.js │ │ │ └── handleScript.js │ │ ├── log.js │ │ ├── minimize/ │ │ │ ├── uglifycss.js │ │ │ └── uglifyjs.js │ │ ├── mvvmGraphPlugin.js │ │ ├── package.json │ │ └── test/ │ │ ├── cmlNode.test.js │ │ ├── demo-project/ │ │ │ ├── .gitignore │ │ │ ├── chameleon.config.js │ │ │ ├── coma/ │ │ │ │ └── coma.interface │ │ │ ├── comb/ │ │ │ │ └── comb.cml │ │ │ ├── index.cml │ │ │ ├── package.json │ │ │ └── src/ │ │ │ ├── app/ │ │ │ │ └── app.cml │ │ │ ├── components/ │ │ │ │ ├── coma/ │ │ │ │ │ └── coma.cml │ │ │ │ ├── comb/ │ │ │ │ │ ├── comb.interface │ │ │ │ │ ├── comb.web.cml │ │ │ │ │ └── comb.wx.cml │ │ │ │ └── comc/ │ │ │ │ └── comc.interface │ │ │ ├── pages/ │ │ │ │ ├── pagea/ │ │ │ │ │ └── pagea.cml │ │ │ │ └── pageb/ │ │ │ │ └── pageb.cml │ │ │ └── router.config.json │ │ ├── demoPlugin.js │ │ ├── lib/ │ │ │ ├── amd.test.js │ │ │ ├── amdbootstrap.global.test.js │ │ │ ├── amdbootstrap.module.test.js │ │ │ ├── amdwrapper.test.js │ │ │ ├── handleScript.node.js │ │ │ └── handleScript.test.js │ │ ├── log.test.js │ │ ├── mvvmGraphPlugin.test.js │ │ ├── test.wxml │ │ ├── uglifycss.test.js │ │ └── uglifyjs.test.js │ ├── mvvm-style-loader/ │ │ ├── index.js │ │ ├── lib.js │ │ ├── package.json │ │ └── test/ │ │ └── index.test.js │ ├── mvvm-template-parser/ │ │ ├── .eslintrc │ │ ├── .gitignore │ │ ├── README.md │ │ ├── index.js │ │ ├── lib/ │ │ │ └── process-template.js │ │ ├── package.json │ │ └── test/ │ │ ├── index.test.js │ │ └── process-template.test.js │ ├── runtime-check/ │ │ ├── .eslintrc │ │ ├── .gitignore │ │ ├── getDefines.js │ │ ├── index.js │ │ ├── package.json │ │ ├── parsePlugins.js │ │ └── test/ │ │ ├── index.test.js │ │ └── interface.test │ ├── url-loader/ │ │ ├── .babelrc │ │ ├── .circleci/ │ │ │ └── config.yml │ │ ├── .eslintignore │ │ ├── .eslintrc │ │ ├── .gitattributes │ │ ├── .github/ │ │ │ ├── CODEOWNERS │ │ │ ├── CONTRIBUTING.md │ │ │ ├── ISSUE_TEMPLATE.md │ │ │ └── PULL_REQUEST_TEMPLATE.md │ │ ├── .gitignore │ │ ├── .prettierrc │ │ ├── CHANGELOG.md │ │ ├── LICENSE │ │ ├── codecov.yml │ │ ├── commitlint.config.js │ │ ├── package.json │ │ └── src/ │ │ ├── cjs.js │ │ ├── index.js │ │ ├── options.json │ │ └── utils/ │ │ └── normalizeFallback.js │ ├── webpack-check-plugin/ │ │ ├── .eslintrc │ │ ├── .gitignore │ │ ├── index.js │ │ ├── lib/ │ │ │ ├── check.js │ │ │ └── tokensMap.js │ │ ├── package.json │ │ └── test/ │ │ └── check.test.js │ └── webpack-liveload-middleware/ │ ├── .eslintrc │ ├── .gitignore │ ├── .npmignore │ ├── LICENSE │ ├── client.js │ ├── helpers.js │ ├── middleware.js │ ├── package.json │ └── test/ │ └── helpers.test.js └── test/ └── test.sh