diff --git a/README.md b/README.md new file mode 100644 index 0000000..935bafb --- /dev/null +++ b/README.md @@ -0,0 +1,3 @@ +# Vue Pages Router + +Unsafe component to load dynamic components using vue-sfc-compiler. \ No newline at end of file diff --git a/compiler/dist/core/pages-router.js b/compiler/dist/core/pages-router.js new file mode 100644 index 0000000..049a3a4 --- /dev/null +++ b/compiler/dist/core/pages-router.js @@ -0,0 +1 @@ +!function(t){var n={};function e(r){if(n[r])return n[r].exports;var o=n[r]={i:r,l:!1,exports:{}};return t[r].call(o.exports,o,o.exports,e),o.l=!0,o.exports}e.m=t,e.c=n,e.d=function(t,n,r){e.o(t,n)||Object.defineProperty(t,n,{enumerable:!0,get:r})},e.r=function(t){"undefined"!=typeof Symbol&&Symbol.toStringTag&&Object.defineProperty(t,Symbol.toStringTag,{value:"Module"}),Object.defineProperty(t,"__esModule",{value:!0})},e.t=function(t,n){if(1&n&&(t=e(t)),8&n)return t;if(4&n&&"object"==typeof t&&t&&t.__esModule)return t;var r=Object.create(null);if(e.r(r),Object.defineProperty(r,"default",{enumerable:!0,value:t}),2&n&&"string"!=typeof t)for(var o in t)e.d(r,o,function(n){return t[n]}.bind(null,o));return r},e.n=function(t){var n=t&&t.__esModule?function(){return t.default}:function(){return t};return e.d(n,"a",n),n},e.o=function(t,n){return Object.prototype.hasOwnProperty.call(t,n)},e.p="",e(e.s=77)}([function(t,n){var e=t.exports="undefined"!=typeof window&&window.Math==Math?window:"undefined"!=typeof self&&self.Math==Math?self:Function("return this")();"number"==typeof __g&&(__g=e)},function(t,n,e){var r=e(21)("wks"),o=e(22),i=e(0).Symbol,c="function"==typeof i;(t.exports=function(t){return r[t]||(r[t]=c&&i[t]||(c?i:o)("Symbol."+t))}).store=r},function(t,n,e){var r=e(4);t.exports=function(t){if(!r(t))throw TypeError(t+" is not an object!");return t}},function(t,n,e){t.exports=!e(10)(function(){return 7!=Object.defineProperty({},"a",{get:function(){return 7}}).a})},function(t,n){t.exports=function(t){return"object"==typeof t?null!==t:"function"==typeof t}},function(t,n,e){var r=e(2),o=e(29),i=e(18),c=Object.defineProperty;n.f=e(3)?Object.defineProperty:function(t,n,e){if(r(t),n=i(n,!0),r(e),o)try{return c(t,n,e)}catch(t){}if("get"in e||"set"in e)throw TypeError("Accessors not supported!");return"value"in e&&(t[n]=e.value),t}},function(t,n){var e=t.exports={version:"2.6.9"};"number"==typeof __e&&(__e=e)},function(t,n,e){var r=e(5),o=e(23);t.exports=e(3)?function(t,n,e){return r.f(t,n,o(1,e))}:function(t,n,e){return t[n]=e,t}},function(t,n,e){var r=e(0),o=e(7),i=e(9),c=e(22)("src"),u=e(42),a=(""+u).split("toString");e(6).inspectSource=function(t){return u.call(t)},(t.exports=function(t,n,e,u){var s="function"==typeof e;s&&(i(e,"name")||o(e,"name",n)),t[n]!==e&&(s&&(i(e,c)||o(e,c,t[n]?""+t[n]:a.join(String(n)))),t===r?t[n]=e:u?t[n]?t[n]=e:o(t,n,e):(delete t[n],o(t,n,e)))})(Function.prototype,"toString",function(){return"function"==typeof this&&this[c]||u.call(this)})},function(t,n){var e={}.hasOwnProperty;t.exports=function(t,n){return e.call(t,n)}},function(t,n){t.exports=function(t){try{return!!t()}catch(t){return!0}}},function(t,n,e){var r=e(14);t.exports=function(t,n,e){if(r(t),void 0===n)return t;switch(e){case 1:return function(e){return t.call(n,e)};case 2:return function(e,r){return t.call(n,e,r)};case 3:return function(e,r,o){return t.call(n,e,r,o)}}return function(){return t.apply(n,arguments)}}},function(t,n){var e={}.toString;t.exports=function(t){return e.call(t).slice(8,-1)}},function(t,n){t.exports={}},function(t,n){t.exports=function(t){if("function"!=typeof t)throw TypeError(t+" is not a function!");return t}},function(t,n,e){var r=e(0),o=e(6),i=e(7),c=e(8),u=e(11),a=function(t,n,e){var s,f,p,l,v=t&a.F,h=t&a.G,d=t&a.S,y=t&a.P,_=t&a.B,m=h?r:d?r[n]||(r[n]={}):(r[n]||{}).prototype,g=h?o:o[n]||(o[n]={}),x=g.prototype||(g.prototype={});for(s in h&&(e=n),e)p=((f=!v&&m&&void 0!==m[s])?m:e)[s],l=_&&f?u(p,r):y&&"function"==typeof p?u(Function.call,p):p,m&&c(m,s,p,t&a.U),g[s]!=p&&i(g,s,l),y&&x[s]!=p&&(x[s]=p)};r.core=o,a.F=1,a.G=2,a.S=4,a.P=8,a.B=16,a.W=32,a.U=64,a.R=128,t.exports=a},function(t,n,e){var r=e(60),o=e(25);t.exports=function(t){return r(o(t))}},function(t,n,e){var r=e(4),o=e(0).document,i=r(o)&&r(o.createElement);t.exports=function(t){return i?o.createElement(t):{}}},function(t,n,e){var r=e(4);t.exports=function(t,n){if(!r(t))return t;var e,o;if(n&&"function"==typeof(e=t.toString)&&!r(o=e.call(t)))return o;if("function"==typeof(e=t.valueOf)&&!r(o=e.call(t)))return o;if(!n&&"function"==typeof(e=t.toString)&&!r(o=e.call(t)))return o;throw TypeError("Can't convert object to primitive value")}},function(t,n){t.exports=!1},function(t,n,e){var r=e(12),o=e(1)("toStringTag"),i="Arguments"==r(function(){return arguments}());t.exports=function(t){var n,e,c;return void 0===t?"Undefined":null===t?"Null":"string"==typeof(e=function(t,n){try{return t[n]}catch(t){}}(n=Object(t),o))?e:i?r(n):"Object"==(c=r(n))&&"function"==typeof n.callee?"Arguments":c}},function(t,n,e){var r=e(6),o=e(0),i=o["__core-js_shared__"]||(o["__core-js_shared__"]={});(t.exports=function(t,n){return i[t]||(i[t]=void 0!==n?n:{})})("versions",[]).push({version:r.version,mode:e(19)?"pure":"global",copyright:"© 2019 Denis Pushkarev (zloirock.ru)"})},function(t,n){var e=0,r=Math.random();t.exports=function(t){return"Symbol(".concat(void 0===t?"":t,")_",(++e+r).toString(36))}},function(t,n){t.exports=function(t,n){return{enumerable:!(1&t),configurable:!(2&t),writable:!(4&t),value:n}}},function(t,n,e){var r=e(5).f,o=e(9),i=e(1)("toStringTag");t.exports=function(t,n,e){t&&!o(t=e?t:t.prototype,i)&&r(t,i,{configurable:!0,value:n})}},function(t,n){t.exports=function(t){if(null==t)throw TypeError("Can't call method on "+t);return t}},function(t,n,e){var r=e(37),o=e(28);t.exports=Object.keys||function(t){return r(t,o)}},function(t,n,e){var r=e(21)("keys"),o=e(22);t.exports=function(t){return r[t]||(r[t]=o(t))}},function(t,n){t.exports="constructor,hasOwnProperty,isPrototypeOf,propertyIsEnumerable,toLocaleString,toString,valueOf".split(",")},function(t,n,e){t.exports=!e(3)&&!e(10)(function(){return 7!=Object.defineProperty(e(17)("div"),"a",{get:function(){return 7}}).a})},function(t,n,e){var r=e(31),o=Math.min;t.exports=function(t){return t>0?o(r(t),9007199254740991):0}},function(t,n){var e=Math.ceil,r=Math.floor;t.exports=function(t){return isNaN(t=+t)?0:(t>0?r:e)(t)}},function(t,n,e){var r,o,i,c=e(11),u=e(49),a=e(33),s=e(17),f=e(0),p=f.process,l=f.setImmediate,v=f.clearImmediate,h=f.MessageChannel,d=f.Dispatch,y=0,_={},m=function(){var t=+this;if(_.hasOwnProperty(t)){var n=_[t];delete _[t],n()}},g=function(t){m.call(t.data)};l&&v||(l=function(t){for(var n=[],e=1;arguments.length>e;)n.push(arguments[e++]);return _[++y]=function(){u("function"==typeof t?t:Function(t),n)},r(y),y},v=function(t){delete _[t]},"process"==e(12)(p)?r=function(t){p.nextTick(c(m,t,1))}:d&&d.now?r=function(t){d.now(c(m,t,1))}:h?(i=(o=new h).port2,o.port1.onmessage=g,r=c(i.postMessage,i,1)):f.addEventListener&&"function"==typeof postMessage&&!f.importScripts?(r=function(t){f.postMessage(t+"","*")},f.addEventListener("message",g,!1)):r="onreadystatechange"in s("script")?function(t){a.appendChild(s("script")).onreadystatechange=function(){a.removeChild(this),m.call(t)}}:function(t){setTimeout(c(m,t,1),0)}),t.exports={set:l,clear:v}},function(t,n,e){var r=e(0).document;t.exports=r&&r.documentElement},function(t,n,e){"use strict";var r=e(14);function o(t){var n,e;this.promise=new t(function(t,r){if(void 0!==n||void 0!==e)throw TypeError("Bad Promise constructor");n=t,e=r}),this.resolve=r(n),this.reject=r(e)}t.exports.f=function(t){return new o(t)}},function(t,n,e){"use strict";var r=e(58),o=e(59),i=e(13),c=e(16);t.exports=e(61)(Array,"Array",function(t,n){this._t=c(t),this._i=0,this._k=n},function(){var t=this._t,n=this._k,e=this._i++;return!t||e>=t.length?(this._t=void 0,o(1)):o(0,"keys"==n?e:"values"==n?t[e]:[e,t[e]])},"values"),i.Arguments=i.Array,r("keys"),r("values"),r("entries")},function(t,n,e){var r=e(2),o=e(63),i=e(28),c=e(27)("IE_PROTO"),u=function(){},a=function(){var t,n=e(17)("iframe"),r=i.length;for(n.style.display="none",e(33).appendChild(n),n.src="javascript:",(t=n.contentWindow.document).open(),t.write(" diff --git a/compiler/src/core/rp-page-loader.vue b/compiler/src/core/components/loader.vue similarity index 65% rename from compiler/src/core/rp-page-loader.vue rename to compiler/src/core/components/loader.vue index c1b2874..93fbe3d 100644 --- a/compiler/src/core/rp-page-loader.vue +++ b/compiler/src/core/components/loader.vue @@ -4,7 +4,5 @@ p Loading... diff --git a/compiler/src/core/rp-pages.vue b/compiler/src/core/pages-router.vue similarity index 50% rename from compiler/src/core/rp-pages.vue rename to compiler/src/core/pages-router.vue index 493cfeb..2c1246a 100644 --- a/compiler/src/core/rp-pages.vue +++ b/compiler/src/core/pages-router.vue @@ -1,33 +1,24 @@ diff --git a/compiler/src/test1.vue b/compiler/src/test1.vue index 5098bb1..42a7fcd 100644 --- a/compiler/src/test1.vue +++ b/compiler/src/test1.vue @@ -4,18 +4,14 @@ p {{ yolol }} diff --git a/compiler/src/test2.vue b/compiler/src/test2.vue index dd33c4c..43dfe8f 100644 --- a/compiler/src/test2.vue +++ b/compiler/src/test2.vue @@ -2,20 +2,16 @@ p {{ yolo }} - \ No newline at end of file diff --git a/compiler/tsconfig.json b/compiler/tsconfig.json new file mode 100644 index 0000000..c5f7de3 --- /dev/null +++ b/compiler/tsconfig.json @@ -0,0 +1,9 @@ +{ + "compilerOptions": { + "target": "es5", + "strict": true, + "module": "es2015", + "moduleResolution": "node", + "experimentalDecorators": true, + } +} \ No newline at end of file diff --git a/compiler/vue-shims.d.ts b/compiler/vue-shims.d.ts new file mode 100644 index 0000000..ad17f79 --- /dev/null +++ b/compiler/vue-shims.d.ts @@ -0,0 +1,4 @@ +declare module "*.vue" { + import Vue from "vue"; + export default Vue; +} \ No newline at end of file diff --git a/compiler/webpack.config.js b/compiler/webpack.config.js index 2bda998..4973d11 100644 --- a/compiler/webpack.config.js +++ b/compiler/webpack.config.js @@ -6,10 +6,10 @@ // webpack --env.file="./path/to/file" --relative to the src folder // Import dependencies -const path = require('path'); -const OptimizeCSSPlugin = require('optimize-css-assets-webpack-plugin'); +const path = require('path'); +const OptimizeCSSPlugin = require('optimize-css-assets-webpack-plugin'); const StringReplacePlugin = require('string-replace-webpack-plugin'); -const VueLoaderPlugin = require('vue-loader/lib/plugin'); +const VueLoaderPlugin = require('vue-loader/lib/plugin'); function resolve(dir) { return path.resolve(__dirname, dir); @@ -21,31 +21,29 @@ module.exports = (env) => { const filepath = path.dirname(env.file); return { - mode : 'production', - entry : { - [filename] : './entry.js' + mode: 'production', + entry: { + [filename]: './entry.js' }, - output : { - filename : '[name].js', + output: { + filename: '[name].js', path: path.resolve(__dirname, 'dist', filepath) }, - resolve : { - extensions : ['.vue', '.js'], - alias : { - 'vue$' : resolve('node_modules/vue/dist/vue.min.js'), - '@' : resolve('src') + resolve: { + extensions: ['.ts', '.vue', '.js'], + alias: { + 'vue$': resolve('node_modules/vue/dist/vue.min.js'), + '@': resolve('src') } }, - externals : { - vue : 'Vue', - lodash: 'lodash', - API: 'API' + externals: { + vue: 'Vue' }, - module : { - rules : [ + module: { + rules: [ { - test : /entry\.js$/, - loader : StringReplacePlugin.replace({ + test: /entry\.js$/, + loader: StringReplacePlugin.replace({ replacements: [ { pattern: /__FILE__/ig, @@ -53,16 +51,25 @@ module.exports = (env) => { return env.file; } } - ]}) + ] + }) }, { - test : /\.vue$/, - loader : 'vue-loader' + test: /\.vue$/, + loader: 'vue-loader' }, { - test : /\.js$/, - loader : 'babel-loader', - include : [ + test: /\.tsx?$/, + loader: 'ts-loader', + exclude: /node_modules/, + options: { + appendTsSuffixTo: [/\.vue$/], + } + }, + { + test: /\.js$/, + loader: 'babel-loader', + include: [ resolve('src') ], exclude: file => ( @@ -71,37 +78,37 @@ module.exports = (env) => { ) }, { - test : /\.css$/, - use : [ + test: /\.css$/, + use: [ 'vue-style-loader', 'css-loader' ] }, { - test : /\.less$/, - use : [ + test: /\.less$/, + use: [ 'vue-style-loader', 'css-loader', 'less-loader' ] }, { - test : /\.scss$/, - use : [ + test: /\.scss$/, + use: [ 'vue-style-loader', 'css-loader', 'sass-loader' ] }, { - test : /\.sass$/, - use : [ + test: /\.sass$/, + use: [ 'vue-style-loader', 'css-loader', { - loader : 'sass-loader', - options : { - indentedSyntax : true + loader: 'sass-loader', + options: { + indentedSyntax: true } } ] @@ -112,7 +119,14 @@ module.exports = (env) => { } ] }, - plugins : [ + devServer: { + historyApiFallback: true, + noInfo: true + }, + performance: { + hints: false + }, + plugins: [ new VueLoaderPlugin(), new OptimizeCSSPlugin({ cssProcessorOptions: { diff --git a/index.html b/index.html index 24f6ff9..71f1dbf 100755 --- a/index.html +++ b/index.html @@ -4,20 +4,24 @@ - Raith + Vue Pages Router - - +
- - + +
diff --git a/lib/API.js b/lib/API.js deleted file mode 100644 index 678242b..0000000 --- a/lib/API.js +++ /dev/null @@ -1,14 +0,0 @@ -const _api = axios.create({ - baseURL: './', - timeout: 1000/*, - headers: { - 'X-Custom-Header': 'foobar' - }*/ -}) - -const API = { - http: _api, - pages() { - return _api.get('pages.json') - } -} \ No newline at end of file