@vue-storefront/nuxt 2.5.5 → 2.5.11

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.
@@ -0,0 +1,16 @@
1
+ "use strict";Object.defineProperty(exports,"__esModule",{value:!0});var e=require("fs"),t=require("path"),n=require("consola"),r=require("chalk"),o=require("lodash");function s(e){return e&&"object"==typeof e&&"default"in e?e:{default:e}}var i=s(e),u=s(t),l=s(n),c=s(r),a=Object.freeze({info:function(e){return l.default.info(c.default.bold("VSF"),e)},success:function(e){return l.default.success(c.default.bold("VSF"),e)},warning:function(e){return l.default.warn(c.default.bold("VSF"),e)},error:function(e){return l.default.error(c.default.bold("VSF"),e)}}),d=function(e,t){return o.mergeWith(e,t,(function(e,t){if(o.isArray(e))return e.concat(t)}))};function p(e){try{return require.resolve(e,{paths:[process.cwd()]})}catch(e){return""}}function f(){this.options.render=o.merge(this.options.render,{http2:{push:!0,pushAssets:function(e,t,n,r){return r.filter((function(e){return"script"===e.asType})).map((function(e){var t=e.file,r=e.asType;return"<".concat(n).concat(t,">; rel=preload; as=").concat(r)}))}}})}function h(e){this.nuxt.hook("modules:done",(function(t){return t.addModule(["nuxt-purgecss",e])}))}function g(e){var t=e.performance,n=t.httpPush,r=t.purgeCSS;n&&f.call(this),r&&r.enabled&&h.call(this,r)}function v(e){var t=["@storefront-ui/vue","@storefront-ui/shared"];e.useRawSource=d(e.useRawSource,{dev:t,prod:t})}function m(e){v.call(this,e)}function b(e){var t=this;e.useRawSource[function(e){return"production"===process.env.NODE_ENV||e.coreDevelopment}(e)?"prod":"dev"].map((function(e){return function(e){var n=p("".concat(e,"/package.json")),r=require(n||"");r.module&&t.extendBuild((function(t){t.resolve.alias[r.name+"$"]=p("".concat(e,"/").concat(r.module))})),t.options.build.transpile.push(e),a.info("Using raw source/ESM for ".concat(r.name))}(e)}))}
2
+ /*! *****************************************************************************
3
+ Copyright (c) Microsoft Corporation.
4
+
5
+ Permission to use, copy, modify, and/or distribute this software for any
6
+ purpose with or without fee is hereby granted.
7
+
8
+ THE SOFTWARE IS PROVIDED "AS IS" AND THE AUTHOR DISCLAIMS ALL WARRANTIES WITH
9
+ REGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED WARRANTIES OF MERCHANTABILITY
10
+ AND FITNESS. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR ANY SPECIAL, DIRECT,
11
+ INDIRECT, OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES WHATSOEVER RESULTING FROM
12
+ LOSS OF USE, DATA OR PROFITS, WHETHER IN AN ACTION OF CONTRACT, NEGLIGENCE OR
13
+ OTHER TORTIOUS ACTION, ARISING OUT OF OR IN CONNECTION WITH THE USE OR
14
+ PERFORMANCE OF THIS SOFTWARE.
15
+ ***************************************************************************** */var x=function(){return x=Object.assign||function(e){for(var t,n=1,r=arguments.length;n<r;n++)for(var o in t=arguments[n])Object.prototype.hasOwnProperty.call(t,o)&&(e[o]=t[o]);return e},x.apply(this,arguments)};function S(){var e,t,n,r,o=this,s=null===(t=null===(e=this.options)||void 0===e?void 0:e.publicRuntimeConfig)||void 0===t?void 0:t.middlewareUrl,i=null===(r=null===(n=this.options)||void 0===n?void 0:n.publicRuntimeConfig)||void 0===r?void 0:r.ssrMiddlewareUrl;s&&i||this.nuxt.hook("listen",(function(e,t){var n=t.https,r=t.host,s=t.port,i=new URL("","http".concat(n?"s":"","://").concat(r,":").concat(s));o.options.publicRuntimeConfig=x(x({},o.options.publicRuntimeConfig),{middlewareUrl:i.origin})}))}var j={name:"@vue-storefront/nuxt",version:"2.5.11",main:"lib/index.cjs.js",module:"lib/index.es.js",types:"lib/src/index.d.ts",scripts:{build:"rimraf lib && rollup -c",test:'echo "Error: no test specified" && exit 1',prepublish:"yarn build"},author:"Vue Storefront",license:"MIT",dependencies:{"@nuxt/typescript-build":"^2.0.0","@nuxtjs/composition-api":"^0.29.3","@nuxtjs/style-resources":"^1.0.0",chalk:"^2.4.2",chokidar:"^3.3.1",consola:"^2.10.1",lodash:"^4.17.15","nuxt-purgecss":"^1.0.0"},devDependencies:{"@nuxt/types":"^2.15.8","@rollup/plugin-json":"~4.1.0"},publishConfig:{access:"public"},files:["lib/**/*","plugins/**/*"]};exports.default=function(e){var t=d({coreDevelopment:!1,i18nExtension:!0,e2e:!0,logger:!0,ssr:!0,context:!0,sfui:!0,performance:{httpPush:!0,purgeCSS:{enabled:!1,paths:["**/*.vue"]}},useRawSource:{dev:[],prod:[]}},e);this.options.head.meta.push({name:"generator",content:"Vue Storefront 2"}),a.info("Starting Vue Storefront Nuxt Module"),t.performance.httpPush&&(this.options.render=d(this.options.render,{http2:{push:!0,pushAssets:function(e,t,n,r){return r.filter((function(e){return"script"===e.asType})).map((function(e){var t=e.file,r=e.asType;return"<".concat(n).concat(t,">; rel=preload; as=").concat(r)}))}}})),t.context&&(this.addPlugin(u.default.resolve(__dirname,"../plugins/context.js")),a.success("Installed Vue Storefront Context plugin")),t.ssr&&(this.addPlugin(u.default.resolve(__dirname,"../plugins/ssr.js")),a.success("Installed Vue Storefront SSR plugin")),t.logger&&(this.addPlugin({src:u.default.resolve(__dirname,"../plugins/logger.js"),options:e.logger||{}}),a.success("Installed VSF Logger plugin")),t.e2e&&(this.addPlugin(u.default.resolve(__dirname,"../plugins/e2e-testing.js")),a.success("Installed Vue Storefront E2E testing plugin")),t.i18nExtension&&(this.addPlugin({src:u.default.resolve(__dirname,"../plugins/i18n-cookies.js"),options:this.options.i18n}),a.success("Installed Internationalization Cookies plugin")),i.default.existsSync(p("@storefront-ui/vue"))&&t.sfui&&(m.call(this,t),a.success("Installed StorefrontUI Module")),g.call(this,t),a.success("Installed Performance Module"),S.call(this),a.success("Checked server API URL"),b.call(this,t)},exports.meta=j;
16
+ //# sourceMappingURL=index.cjs.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.cjs.js","sources":["../src/helpers/log.ts","../src/helpers/merge.ts","../src/helpers/resolveDependency.ts","../src/modules/performance.ts","../src/modules/storefront-ui.ts","../src/modules/raw-sources-loader.ts","../src/helpers/isProduction.ts","../src/modules/server-url.ts","../src/index.ts"],"sourcesContent":["import consola from 'consola';\nimport chalk from 'chalk';\nimport { Log } from '../types';\n\nconst log: Log = Object.freeze({\n info: (message) => consola.info(chalk.bold('VSF'), message),\n success: (message) => consola.success(chalk.bold('VSF'), message),\n warning: (message) => consola.warn(chalk.bold('VSF'), message),\n error: (message) => consola.error(chalk.bold('VSF'), message)\n});\n\nexport default log;\n","import { mergeWith, isArray } from 'lodash';\n\nexport default (source, destination) => mergeWith(source, destination, (objValue, srcValue) => {\n if (isArray(objValue)) {\n return objValue.concat(srcValue);\n }\n});\n","export default function resolveDependency(name: string): string {\n try {\n return require.resolve(name, { paths: [process.cwd()] });\n } catch (error) {\n return '';\n }\n}\n","import { merge } from 'lodash';\nimport { ModuleOptions, PurgeCSSOptions } from '../types';\n\nfunction pushScripts(): void {\n this.options.render = merge(this.options.render, {\n http2: {\n push: true,\n pushAssets: (request, response, publicPath, preloadFiles) => {\n return preloadFiles\n .filter(({ asType }) => asType === 'script')\n .map(({ file, asType }) => `<${publicPath}${file}>; rel=preload; as=${asType}`);\n }\n }\n });\n}\n\nfunction loadPurgeCss(options: PurgeCSSOptions): void {\n // PurgeCSS module should be installed after all other modules\n this.nuxt.hook('modules:done', moduleContainer => moduleContainer.addModule(['nuxt-purgecss', options]));\n}\n\nexport default function VueStorefrontPerformanceModule(options: ModuleOptions): void {\n const { httpPush, purgeCSS } = options.performance;\n\n if (httpPush) {\n pushScripts.call(this);\n }\n\n if (purgeCSS && purgeCSS.enabled) {\n loadPurgeCss.call(this, purgeCSS);\n }\n}\n","import merge from '../helpers/merge';\nimport { ModuleOptions } from '../types';\n\n// TODO: Create a separate nuxt module for storefront ui\nfunction loadStorefrontRawSources(options: ModuleOptions): void {\n const rawSources = [\n '@storefront-ui/vue',\n '@storefront-ui/shared'\n ];\n\n options.useRawSource = merge(options.useRawSource, {\n dev: rawSources,\n prod: rawSources\n });\n}\n\nexport default function VueStorefrontPerformanceModule(options: ModuleOptions): void {\n loadStorefrontRawSources.call(this, options);\n}\n","import log from '../helpers/log';\nimport isProduction from '../helpers/isProduction';\nimport resolveDependency from '../helpers/resolveDependency';\nimport { ModuleOptions } from '../types';\n\nexport default function VueStorefrontPerformanceModule(options: ModuleOptions): void {\n const useRawSource = (pckg) => {\n const pkgPath = resolveDependency(`${pckg}/package.json`);\n // eslint-disable-next-line global-require\n const pkg = require(pkgPath || '');\n\n if (pkg.module) {\n this.extendBuild(config => {\n config.resolve.alias[pkg.name + '$'] = resolveDependency(`${pckg}/${pkg.module}`);\n });\n }\n\n this.options.build.transpile.push(pckg);\n log.info(`Using raw source/ESM for ${pkg.name}`);\n };\n\n options.useRawSource[isProduction(options) ? 'prod' : 'dev'].map(pckg => useRawSource(pckg));\n}\n","import { ModuleOptions } from '../types';\n\nexport default (options: ModuleOptions): boolean => process.env.NODE_ENV === 'production' || options.coreDevelopment;\n","export default function VueStorefrontServerUrl(): void {\n const hasMiddlewareUrl = this.options?.publicRuntimeConfig?.middlewareUrl;\n const hasSSRUrl = this.options?.publicRuntimeConfig?.ssrMiddlewareUrl;\n\n if (!hasMiddlewareUrl || !hasSSRUrl) {\n this.nuxt.hook('listen', (server, { https, host, port }) => {\n const baseURL = new URL('', `http${https ? 's' : ''}://${host}:${port}`);\n\n this.options.publicRuntimeConfig = {\n ...this.options.publicRuntimeConfig,\n middlewareUrl: baseURL.origin\n };\n });\n }\n}\n","// TODO proper bundling, for now it's just to experiment with nuxt modules api\nimport fs from 'fs';\nimport path from 'path';\nimport log from './helpers/log';\nimport merge from './helpers/merge';\nimport resolveDependency from './helpers/resolveDependency';\nimport performanceModule from './modules/performance';\nimport storefrontUiModule from './modules/storefront-ui';\nimport rawSourcesModule from './modules/raw-sources-loader';\nimport serverUrl from './modules/server-url';\nimport { ModuleOptions } from './types';\n\nexport { default as meta } from '../package.json';\n\n/**\n * VueStorefrontNuxtModule\n * @param moduleOptions\n */\nexport default function VueStorefrontNuxtModule(moduleOptions: ModuleOptions) {\n const defaultOptions = {\n coreDevelopment: false,\n i18nExtension: true,\n e2e: true,\n logger: true,\n ssr: true,\n context: true,\n sfui: true,\n performance: {\n httpPush: true,\n purgeCSS: {\n enabled: false,\n paths: ['**/*.vue']\n }\n },\n useRawSource: {\n dev: [],\n prod: []\n }\n };\n\n const options = merge(defaultOptions, moduleOptions);\n\n // Add meta data\n this.options.head.meta.push({\n name: 'generator',\n content: 'Vue Storefront 2'\n });\n\n log.info('Starting Vue Storefront Nuxt Module');\n\n // Enable HTTP/2 push for JS files\n if (options.performance.httpPush) {\n this.options.render = merge(this.options.render, {\n http2: {\n push: true,\n pushAssets: (request, response, publicPath, preloadFiles) => {\n return preloadFiles\n .filter(({ asType }) => asType === 'script')\n .map(({ file, asType }) => `<${publicPath}${file}>; rel=preload; as=${asType}`);\n }\n }\n });\n }\n\n if (options.context) {\n // Context plugin\n this.addPlugin(path.resolve(__dirname, '../plugins/context.js'));\n log.success('Installed Vue Storefront Context plugin');\n }\n if (options.ssr) {\n // SSR plugin\n this.addPlugin(path.resolve(__dirname, '../plugins/ssr.js'));\n log.success('Installed Vue Storefront SSR plugin');\n }\n\n if (options.logger) {\n // Logger plugin\n this.addPlugin({\n src: path.resolve(__dirname, '../plugins/logger.js'),\n options: moduleOptions.logger || {}\n });\n log.success('Installed VSF Logger plugin');\n }\n\n if (options.e2e) {\n // Context plugin\n this.addPlugin(path.resolve(__dirname, '../plugins/e2e-testing.js'));\n log.success('Installed Vue Storefront E2E testing plugin');\n }\n\n // i18n-cookies plugin\n if (options.i18nExtension) {\n this.addPlugin({\n src: path.resolve(__dirname, '../plugins/i18n-cookies.js'),\n options: this.options.i18n\n });\n log.success('Installed Internationalization Cookies plugin');\n }\n\n // StorefrontUI module\n if (fs.existsSync(resolveDependency('@storefront-ui/vue')) && options.sfui) {\n storefrontUiModule.call(this, options);\n log.success('Installed StorefrontUI Module');\n }\n\n // Performance module\n performanceModule.call(this, options);\n log.success('Installed Performance Module');\n\n // Validating Server URL\n serverUrl.call(this);\n log.success('Checked server API URL');\n\n // Raw sources loader\n rawSourcesModule.call(this, options);\n}\n"],"names":["log","Object","freeze","info","message","consola","chalk","bold","success","warning","warn","error","merge","source","destination","mergeWith","objValue","srcValue","isArray","concat","resolveDependency","name","require","resolve","paths","process","cwd","pushScripts","this","options","render","http2","push","pushAssets","request","response","publicPath","preloadFiles","filter","_a","asType","map","file","loadPurgeCss","nuxt","hook","moduleContainer","addModule","VueStorefrontPerformanceModule","performance","httpPush","purgeCSS","call","enabled","loadStorefrontRawSources","rawSources","useRawSource","dev","prod","_this","env","NODE_ENV","coreDevelopment","isProduction","pckg","pkgPath","pkg","module","extendBuild","config","alias","build","transpile","VueStorefrontServerUrl","hasMiddlewareUrl","_b","publicRuntimeConfig","middlewareUrl","hasSSRUrl","_d","_c","ssrMiddlewareUrl","server","https","host","port","baseURL","URL","__assign","origin","moduleOptions","i18nExtension","e2e","logger","ssr","context","sfui","head","meta","content","addPlugin","path","__dirname","src","i18n","fs","existsSync","storefrontUiModule","performanceModule","serverUrl","rawSourcesModule"],"mappings":"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"}
@@ -0,0 +1,16 @@
1
+ import e from"fs";import n from"path";import t from"consola";import o from"chalk";import{mergeWith as s,isArray as r,merge as i}from"lodash";var u=Object.freeze({info:function(e){return t.info(o.bold("VSF"),e)},success:function(e){return t.success(o.bold("VSF"),e)},warning:function(e){return t.warn(o.bold("VSF"),e)},error:function(e){return t.error(o.bold("VSF"),e)}}),c=function(e,n){return s(e,n,(function(e,n){if(r(e))return e.concat(n)}))};function l(e){try{return require.resolve(e,{paths:[process.cwd()]})}catch(e){return""}}function a(){this.options.render=i(this.options.render,{http2:{push:!0,pushAssets:function(e,n,t,o){return o.filter((function(e){return"script"===e.asType})).map((function(e){var n=e.file,o=e.asType;return"<".concat(t).concat(n,">; rel=preload; as=").concat(o)}))}}})}function p(e){this.nuxt.hook("modules:done",(function(n){return n.addModule(["nuxt-purgecss",e])}))}function d(e){var n=e.performance,t=n.httpPush,o=n.purgeCSS;t&&a.call(this),o&&o.enabled&&p.call(this,o)}function f(e){var n=["@storefront-ui/vue","@storefront-ui/shared"];e.useRawSource=c(e.useRawSource,{dev:n,prod:n})}function h(e){f.call(this,e)}function g(e){var n=this;e.useRawSource[function(e){return"production"===process.env.NODE_ENV||e.coreDevelopment}(e)?"prod":"dev"].map((function(e){return function(e){var t=l("".concat(e,"/package.json")),o=require(t||"");o.module&&n.extendBuild((function(n){n.resolve.alias[o.name+"$"]=l("".concat(e,"/").concat(o.module))})),n.options.build.transpile.push(e),u.info("Using raw source/ESM for ".concat(o.name))}(e)}))}
2
+ /*! *****************************************************************************
3
+ Copyright (c) Microsoft Corporation.
4
+
5
+ Permission to use, copy, modify, and/or distribute this software for any
6
+ purpose with or without fee is hereby granted.
7
+
8
+ THE SOFTWARE IS PROVIDED "AS IS" AND THE AUTHOR DISCLAIMS ALL WARRANTIES WITH
9
+ REGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED WARRANTIES OF MERCHANTABILITY
10
+ AND FITNESS. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR ANY SPECIAL, DIRECT,
11
+ INDIRECT, OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES WHATSOEVER RESULTING FROM
12
+ LOSS OF USE, DATA OR PROFITS, WHETHER IN AN ACTION OF CONTRACT, NEGLIGENCE OR
13
+ OTHER TORTIOUS ACTION, ARISING OUT OF OR IN CONNECTION WITH THE USE OR
14
+ PERFORMANCE OF THIS SOFTWARE.
15
+ ***************************************************************************** */var m=function(){return m=Object.assign||function(e){for(var n,t=1,o=arguments.length;t<o;t++)for(var s in n=arguments[t])Object.prototype.hasOwnProperty.call(n,s)&&(e[s]=n[s]);return e},m.apply(this,arguments)};function v(){var e,n,t,o,s=this,r=null===(n=null===(e=this.options)||void 0===e?void 0:e.publicRuntimeConfig)||void 0===n?void 0:n.middlewareUrl,i=null===(o=null===(t=this.options)||void 0===t?void 0:t.publicRuntimeConfig)||void 0===o?void 0:o.ssrMiddlewareUrl;r&&i||this.nuxt.hook("listen",(function(e,n){var t=n.https,o=n.host,r=n.port,i=new URL("","http".concat(t?"s":"","://").concat(o,":").concat(r));s.options.publicRuntimeConfig=m(m({},s.options.publicRuntimeConfig),{middlewareUrl:i.origin})}))}var b={name:"@vue-storefront/nuxt",version:"2.5.11",main:"lib/index.cjs.js",module:"lib/index.es.js",types:"lib/src/index.d.ts",scripts:{build:"rimraf lib && rollup -c",test:'echo "Error: no test specified" && exit 1',prepublish:"yarn build"},author:"Vue Storefront",license:"MIT",dependencies:{"@nuxt/typescript-build":"^2.0.0","@nuxtjs/composition-api":"^0.29.3","@nuxtjs/style-resources":"^1.0.0",chalk:"^2.4.2",chokidar:"^3.3.1",consola:"^2.10.1",lodash:"^4.17.15","nuxt-purgecss":"^1.0.0"},devDependencies:{"@nuxt/types":"^2.15.8","@rollup/plugin-json":"~4.1.0"},publishConfig:{access:"public"},files:["lib/**/*","plugins/**/*"]};function S(t){var o=c({coreDevelopment:!1,i18nExtension:!0,e2e:!0,logger:!0,ssr:!0,context:!0,sfui:!0,performance:{httpPush:!0,purgeCSS:{enabled:!1,paths:["**/*.vue"]}},useRawSource:{dev:[],prod:[]}},t);this.options.head.meta.push({name:"generator",content:"Vue Storefront 2"}),u.info("Starting Vue Storefront Nuxt Module"),o.performance.httpPush&&(this.options.render=c(this.options.render,{http2:{push:!0,pushAssets:function(e,n,t,o){return o.filter((function(e){return"script"===e.asType})).map((function(e){var n=e.file,o=e.asType;return"<".concat(t).concat(n,">; rel=preload; as=").concat(o)}))}}})),o.context&&(this.addPlugin(n.resolve(__dirname,"../plugins/context.js")),u.success("Installed Vue Storefront Context plugin")),o.ssr&&(this.addPlugin(n.resolve(__dirname,"../plugins/ssr.js")),u.success("Installed Vue Storefront SSR plugin")),o.logger&&(this.addPlugin({src:n.resolve(__dirname,"../plugins/logger.js"),options:t.logger||{}}),u.success("Installed VSF Logger plugin")),o.e2e&&(this.addPlugin(n.resolve(__dirname,"../plugins/e2e-testing.js")),u.success("Installed Vue Storefront E2E testing plugin")),o.i18nExtension&&(this.addPlugin({src:n.resolve(__dirname,"../plugins/i18n-cookies.js"),options:this.options.i18n}),u.success("Installed Internationalization Cookies plugin")),e.existsSync(l("@storefront-ui/vue"))&&o.sfui&&(h.call(this,o),u.success("Installed StorefrontUI Module")),d.call(this,o),u.success("Installed Performance Module"),v.call(this),u.success("Checked server API URL"),g.call(this,o)}export{S as default,b as meta};
16
+ //# sourceMappingURL=index.es.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.es.js","sources":["../src/helpers/log.ts","../src/helpers/merge.ts","../src/helpers/resolveDependency.ts","../src/modules/performance.ts","../src/modules/storefront-ui.ts","../src/modules/raw-sources-loader.ts","../src/helpers/isProduction.ts","../src/modules/server-url.ts","../src/index.ts"],"sourcesContent":["import consola from 'consola';\nimport chalk from 'chalk';\nimport { Log } from '../types';\n\nconst log: Log = Object.freeze({\n info: (message) => consola.info(chalk.bold('VSF'), message),\n success: (message) => consola.success(chalk.bold('VSF'), message),\n warning: (message) => consola.warn(chalk.bold('VSF'), message),\n error: (message) => consola.error(chalk.bold('VSF'), message)\n});\n\nexport default log;\n","import { mergeWith, isArray } from 'lodash';\n\nexport default (source, destination) => mergeWith(source, destination, (objValue, srcValue) => {\n if (isArray(objValue)) {\n return objValue.concat(srcValue);\n }\n});\n","export default function resolveDependency(name: string): string {\n try {\n return require.resolve(name, { paths: [process.cwd()] });\n } catch (error) {\n return '';\n }\n}\n","import { merge } from 'lodash';\nimport { ModuleOptions, PurgeCSSOptions } from '../types';\n\nfunction pushScripts(): void {\n this.options.render = merge(this.options.render, {\n http2: {\n push: true,\n pushAssets: (request, response, publicPath, preloadFiles) => {\n return preloadFiles\n .filter(({ asType }) => asType === 'script')\n .map(({ file, asType }) => `<${publicPath}${file}>; rel=preload; as=${asType}`);\n }\n }\n });\n}\n\nfunction loadPurgeCss(options: PurgeCSSOptions): void {\n // PurgeCSS module should be installed after all other modules\n this.nuxt.hook('modules:done', moduleContainer => moduleContainer.addModule(['nuxt-purgecss', options]));\n}\n\nexport default function VueStorefrontPerformanceModule(options: ModuleOptions): void {\n const { httpPush, purgeCSS } = options.performance;\n\n if (httpPush) {\n pushScripts.call(this);\n }\n\n if (purgeCSS && purgeCSS.enabled) {\n loadPurgeCss.call(this, purgeCSS);\n }\n}\n","import merge from '../helpers/merge';\nimport { ModuleOptions } from '../types';\n\n// TODO: Create a separate nuxt module for storefront ui\nfunction loadStorefrontRawSources(options: ModuleOptions): void {\n const rawSources = [\n '@storefront-ui/vue',\n '@storefront-ui/shared'\n ];\n\n options.useRawSource = merge(options.useRawSource, {\n dev: rawSources,\n prod: rawSources\n });\n}\n\nexport default function VueStorefrontPerformanceModule(options: ModuleOptions): void {\n loadStorefrontRawSources.call(this, options);\n}\n","import log from '../helpers/log';\nimport isProduction from '../helpers/isProduction';\nimport resolveDependency from '../helpers/resolveDependency';\nimport { ModuleOptions } from '../types';\n\nexport default function VueStorefrontPerformanceModule(options: ModuleOptions): void {\n const useRawSource = (pckg) => {\n const pkgPath = resolveDependency(`${pckg}/package.json`);\n // eslint-disable-next-line global-require\n const pkg = require(pkgPath || '');\n\n if (pkg.module) {\n this.extendBuild(config => {\n config.resolve.alias[pkg.name + '$'] = resolveDependency(`${pckg}/${pkg.module}`);\n });\n }\n\n this.options.build.transpile.push(pckg);\n log.info(`Using raw source/ESM for ${pkg.name}`);\n };\n\n options.useRawSource[isProduction(options) ? 'prod' : 'dev'].map(pckg => useRawSource(pckg));\n}\n","import { ModuleOptions } from '../types';\n\nexport default (options: ModuleOptions): boolean => process.env.NODE_ENV === 'production' || options.coreDevelopment;\n","export default function VueStorefrontServerUrl(): void {\n const hasMiddlewareUrl = this.options?.publicRuntimeConfig?.middlewareUrl;\n const hasSSRUrl = this.options?.publicRuntimeConfig?.ssrMiddlewareUrl;\n\n if (!hasMiddlewareUrl || !hasSSRUrl) {\n this.nuxt.hook('listen', (server, { https, host, port }) => {\n const baseURL = new URL('', `http${https ? 's' : ''}://${host}:${port}`);\n\n this.options.publicRuntimeConfig = {\n ...this.options.publicRuntimeConfig,\n middlewareUrl: baseURL.origin\n };\n });\n }\n}\n","// TODO proper bundling, for now it's just to experiment with nuxt modules api\nimport fs from 'fs';\nimport path from 'path';\nimport log from './helpers/log';\nimport merge from './helpers/merge';\nimport resolveDependency from './helpers/resolveDependency';\nimport performanceModule from './modules/performance';\nimport storefrontUiModule from './modules/storefront-ui';\nimport rawSourcesModule from './modules/raw-sources-loader';\nimport serverUrl from './modules/server-url';\nimport { ModuleOptions } from './types';\n\nexport { default as meta } from '../package.json';\n\n/**\n * VueStorefrontNuxtModule\n * @param moduleOptions\n */\nexport default function VueStorefrontNuxtModule(moduleOptions: ModuleOptions) {\n const defaultOptions = {\n coreDevelopment: false,\n i18nExtension: true,\n e2e: true,\n logger: true,\n ssr: true,\n context: true,\n sfui: true,\n performance: {\n httpPush: true,\n purgeCSS: {\n enabled: false,\n paths: ['**/*.vue']\n }\n },\n useRawSource: {\n dev: [],\n prod: []\n }\n };\n\n const options = merge(defaultOptions, moduleOptions);\n\n // Add meta data\n this.options.head.meta.push({\n name: 'generator',\n content: 'Vue Storefront 2'\n });\n\n log.info('Starting Vue Storefront Nuxt Module');\n\n // Enable HTTP/2 push for JS files\n if (options.performance.httpPush) {\n this.options.render = merge(this.options.render, {\n http2: {\n push: true,\n pushAssets: (request, response, publicPath, preloadFiles) => {\n return preloadFiles\n .filter(({ asType }) => asType === 'script')\n .map(({ file, asType }) => `<${publicPath}${file}>; rel=preload; as=${asType}`);\n }\n }\n });\n }\n\n if (options.context) {\n // Context plugin\n this.addPlugin(path.resolve(__dirname, '../plugins/context.js'));\n log.success('Installed Vue Storefront Context plugin');\n }\n if (options.ssr) {\n // SSR plugin\n this.addPlugin(path.resolve(__dirname, '../plugins/ssr.js'));\n log.success('Installed Vue Storefront SSR plugin');\n }\n\n if (options.logger) {\n // Logger plugin\n this.addPlugin({\n src: path.resolve(__dirname, '../plugins/logger.js'),\n options: moduleOptions.logger || {}\n });\n log.success('Installed VSF Logger plugin');\n }\n\n if (options.e2e) {\n // Context plugin\n this.addPlugin(path.resolve(__dirname, '../plugins/e2e-testing.js'));\n log.success('Installed Vue Storefront E2E testing plugin');\n }\n\n // i18n-cookies plugin\n if (options.i18nExtension) {\n this.addPlugin({\n src: path.resolve(__dirname, '../plugins/i18n-cookies.js'),\n options: this.options.i18n\n });\n log.success('Installed Internationalization Cookies plugin');\n }\n\n // StorefrontUI module\n if (fs.existsSync(resolveDependency('@storefront-ui/vue')) && options.sfui) {\n storefrontUiModule.call(this, options);\n log.success('Installed StorefrontUI Module');\n }\n\n // Performance module\n performanceModule.call(this, options);\n log.success('Installed Performance Module');\n\n // Validating Server URL\n serverUrl.call(this);\n log.success('Checked server API URL');\n\n // Raw sources loader\n rawSourcesModule.call(this, options);\n}\n"],"names":["log","Object","freeze","info","message","consola","chalk","bold","success","warning","warn","error","merge","source","destination","mergeWith","objValue","srcValue","isArray","concat","resolveDependency","name","require","resolve","paths","process","cwd","pushScripts","this","options","render","http2","push","pushAssets","request","response","publicPath","preloadFiles","filter","_a","asType","map","file","loadPurgeCss","nuxt","hook","moduleContainer","addModule","VueStorefrontPerformanceModule","performance","httpPush","purgeCSS","call","enabled","loadStorefrontRawSources","rawSources","useRawSource","dev","prod","_this","env","NODE_ENV","coreDevelopment","isProduction","pckg","pkgPath","pkg","module","extendBuild","config","alias","build","transpile","VueStorefrontServerUrl","hasMiddlewareUrl","_b","publicRuntimeConfig","middlewareUrl","hasSSRUrl","_d","_c","ssrMiddlewareUrl","server","https","host","port","baseURL","URL","__assign","origin","VueStorefrontNuxtModule","moduleOptions","i18nExtension","e2e","logger","ssr","context","sfui","head","meta","content","addPlugin","path","__dirname","src","i18n","fs","existsSync","storefrontUiModule","performanceModule","serverUrl","rawSourcesModule"],"mappings":"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"}
@@ -0,0 +1,10 @@
1
+ /**
2
+ * Core Vue Storefront 2 nuxt module.
3
+ *
4
+ * @remarks
5
+ * The `@vue-storefront/nuxt` library is responsible for loading core nuxt plugins.
6
+ *
7
+ * @packageDocumentation
8
+ */
9
+ export { default as VueStorefrontNuxtModule } from './index';
10
+ export { ModuleOptions } from './types';
@@ -0,0 +1,3 @@
1
+ import { ModuleOptions } from '../types';
2
+ declare const _default: (options: ModuleOptions) => boolean;
3
+ export default _default;
@@ -0,0 +1,3 @@
1
+ import { Log } from '../types';
2
+ declare const log: Log;
3
+ export default log;
@@ -0,0 +1,2 @@
1
+ declare const _default: (source: any, destination: any) => any;
2
+ export default _default;
@@ -0,0 +1 @@
1
+ export default function resolveDependency(name: string): string;
@@ -0,0 +1,7 @@
1
+ import { ModuleOptions } from './types';
2
+ export { default as meta } from '../package.json';
3
+ /**
4
+ * VueStorefrontNuxtModule
5
+ * @param moduleOptions
6
+ */
7
+ export default function VueStorefrontNuxtModule(moduleOptions: ModuleOptions): void;
@@ -0,0 +1,2 @@
1
+ import { ModuleOptions } from '../types';
2
+ export default function VueStorefrontPerformanceModule(options: ModuleOptions): void;
@@ -0,0 +1,2 @@
1
+ import { ModuleOptions } from '../types';
2
+ export default function VueStorefrontPerformanceModule(options: ModuleOptions): void;
@@ -0,0 +1 @@
1
+ export default function VueStorefrontServerUrl(): void;
@@ -0,0 +1,2 @@
1
+ import { ModuleOptions } from '../types';
2
+ export default function VueStorefrontPerformanceModule(options: ModuleOptions): void;
@@ -0,0 +1,27 @@
1
+ export interface PurgeCSSOptions {
2
+ enabled?: boolean;
3
+ paths?: string[];
4
+ }
5
+ export interface ModuleOptions {
6
+ coreDevelopment?: boolean;
7
+ i18nExtension?: boolean;
8
+ e2e?: boolean;
9
+ logger?: boolean;
10
+ ssr?: boolean;
11
+ context?: boolean;
12
+ sfui?: boolean;
13
+ performance?: {
14
+ httpPush?: boolean;
15
+ purgeCSS?: PurgeCSSOptions;
16
+ };
17
+ useRawSource?: {
18
+ dev: string[];
19
+ prod: string[];
20
+ };
21
+ }
22
+ export interface Log {
23
+ info: (message: string) => void;
24
+ success: (message: string) => void;
25
+ warning: (message: string) => void;
26
+ error: (message: string) => void;
27
+ }
package/package.json CHANGED
@@ -1,10 +1,13 @@
1
1
  {
2
2
  "name": "@vue-storefront/nuxt",
3
- "version": "2.5.5",
4
- "description": "",
5
- "main": "lib/module.js",
3
+ "version": "2.5.11",
4
+ "main": "lib/index.cjs.js",
5
+ "module": "lib/index.es.js",
6
+ "types": "lib/src/index.d.ts",
6
7
  "scripts": {
7
- "test": "echo \"Error: no test specified\" && exit 1"
8
+ "build": "rimraf lib && rollup -c",
9
+ "test": "echo \"Error: no test specified\" && exit 1",
10
+ "prepublish": "yarn build"
8
11
  },
9
12
  "author": "Vue Storefront",
10
13
  "license": "MIT",
@@ -19,9 +22,14 @@
19
22
  "nuxt-purgecss": "^1.0.0"
20
23
  },
21
24
  "devDependencies": {
22
- "@nuxt/types": "^2.15.8"
25
+ "@nuxt/types": "^2.15.8",
26
+ "@rollup/plugin-json": "~4.1.0"
23
27
  },
24
28
  "publishConfig": {
25
29
  "access": "public"
26
- }
30
+ },
31
+ "files": [
32
+ "lib/**/*",
33
+ "plugins/**/*"
34
+ ]
27
35
  }
@@ -1,4 +1,3 @@
1
-
2
1
  import { configureContext } from '@vue-storefront/core';
3
2
  import { useContext as useBaseContext } from '@nuxtjs/composition-api';
4
3
 
@@ -5,9 +5,9 @@ const e2eTestingPlugin = (ctx) => {
5
5
  bind: (element, binding) => {
6
6
  const enabled = ctx.isDev || ctx.env.NUXT_ENV_E2E === true.toString();
7
7
 
8
- return enabled && element.setAttribute(`data-e2e`, binding.value);
8
+ return enabled && element.setAttribute('data-e2e', binding.value);
9
9
  }
10
10
  });
11
11
  };
12
12
 
13
- export default e2eTestingPlugin;
13
+ export default e2eTestingPlugin;
File without changes
File without changes
File without changes
@@ -1 +0,0 @@
1
- module.exports = (options) => process.env.NODE_ENV === 'production' || options.coreDevelopment;
@@ -1,9 +0,0 @@
1
- const consola = require('consola');
2
- const chalk = require('chalk');
3
-
4
- module.exports = Object.freeze({
5
- info: (message) => consola.info(chalk.bold('VSF'), message),
6
- success: (message) => consola.success(chalk.bold('VSF'), message),
7
- warning: (message) => consola.warning(chalk.bold('VSF'), message),
8
- error: (message) => consola.error(chalk.bold('VSF'), message)
9
- });
@@ -1,7 +0,0 @@
1
- const { mergeWith, isArray } = require('lodash');
2
-
3
- module.exports = (source, destination) => mergeWith(source, destination, (objValue, srcValue) => {
4
- if (isArray(objValue)) {
5
- return objValue.concat(srcValue);
6
- }
7
- });
@@ -1,7 +0,0 @@
1
- module.exports = function resolveDependency (name) {
2
- try {
3
- return require.resolve(name, { paths: [ process.cwd() ] })
4
- } catch (error) {
5
- return false;
6
- }
7
- };
package/lib/module.js DELETED
@@ -1,93 +0,0 @@
1
- // TODO proper bundling, for now it's just to experiment with nuxt modules api
2
- const fs = require('fs');
3
- const path = require('path');
4
- const log = require('./helpers/log');
5
- const merge = require('./helpers/merge');
6
- const resolveDependency = require('./helpers/resolveDependency');
7
- const performanceModule = require('./modules/performance');
8
- const storefrontUiModule = require('./modules/storefront-ui');
9
- const rawSourcesModule = require('./modules/raw-sources-loader');
10
-
11
- module.exports = function VueStorefrontNuxtModule (moduleOptions) {
12
- const defaultOptions = {
13
- coreDevelopment: false,
14
- performance: {
15
- httpPush: true,
16
- purgeCSS: {
17
- enabled: false,
18
- paths: [
19
- '**/*.vue'
20
- ]
21
- }
22
- },
23
- useRawSource: {
24
- dev: [],
25
- prod: []
26
- }
27
- };
28
-
29
- const options = merge(defaultOptions, moduleOptions);
30
-
31
- // Add meta data
32
- this.options.head.meta.push({
33
- name: 'generator',
34
- content: 'Vue Storefront 2'
35
- });
36
-
37
- log.info('Starting Vue Storefront Nuxt Module');
38
-
39
- // Enable HTTP/2 push for JS files
40
- if (options.performance.httpPush) {
41
- this.options.render = merge(this.options.render, {
42
- http2: {
43
- push: true,
44
- pushAssets: (request, response, publicPath, preloadFiles) => {
45
- return preloadFiles
46
- .filter(({ asType }) => asType === 'script')
47
- .map(({ file, asType }) => `<${publicPath}${file}>; rel=preload; as=${asType}`);
48
- }
49
- }
50
- });
51
- }
52
-
53
- // Context plugin
54
- this.addPlugin(path.resolve(__dirname, 'plugins/context.js'))
55
- log.success('Installed Vue Storefront Context plugin');
56
-
57
- // SSR plugin
58
- this.addPlugin(path.resolve(__dirname, 'plugins/ssr.js'));
59
- log.success('Installed Vue Storefront SSR plugin');
60
-
61
- // Logger plugin
62
- this.addPlugin({
63
- src: path.resolve(__dirname, 'plugins/logger.js'),
64
- options: moduleOptions.logger || {}
65
- });
66
- log.success('Installed VSF Logger plugin');
67
-
68
- // Context plugin
69
- this.addPlugin(path.resolve(__dirname, 'plugins/e2e-testing.js'))
70
- log.success('Installed Vue Storefront E2E testing plugin');
71
-
72
- // i18n-cookies plugin
73
- this.addPlugin({
74
- src: path.resolve(__dirname, 'plugins/i18n-cookies.js'),
75
- options: this.options.i18n
76
- });
77
- log.success('Installed Internationalization Cookies plugin');
78
-
79
- // StorefrontUI module
80
- if (fs.existsSync(resolveDependency('@storefront-ui/vue'))) {
81
- storefrontUiModule.call(this, options);
82
- log.success('Installed StorefrontUI Module');
83
- }
84
-
85
- // Performance module
86
- performanceModule.call(this, options);
87
- log.success('Installed Performance Module');
88
-
89
- // Raw sources loader
90
- rawSourcesModule.call(this, options);
91
- };
92
-
93
- module.exports.meta = require('../package.json');
@@ -1,31 +0,0 @@
1
- const { merge } = require('lodash');
2
-
3
- function pushScripts() {
4
- this.options.render = merge(this.options.render, {
5
- http2: {
6
- push: true,
7
- pushAssets: (request, response, publicPath, preloadFiles) => {
8
- return preloadFiles
9
- .filter(({ asType }) => asType === 'script')
10
- .map(({ file, asType }) => `<${publicPath}${file}>; rel=preload; as=${asType}`);
11
- }
12
- }
13
- });
14
- }
15
-
16
- function loadPurgeCss(options) {
17
- // PurgeCSS module should be installed after all other modules
18
- this.nuxt.hook('modules:done', moduleContainer => moduleContainer.addModule([ 'nuxt-purgecss', options ]));
19
- }
20
-
21
- module.exports = function VueStorefrontPerformanceModule (options) {
22
- const { httpPush, purgeCSS } = options.performance;
23
-
24
- if (httpPush) {
25
- pushScripts.call(this);
26
- }
27
-
28
- if (purgeCSS && purgeCSS.enabled) {
29
- loadPurgeCss.call(this, purgeCSS);
30
- }
31
- };
@@ -1,21 +0,0 @@
1
- const log = require('../helpers/log');
2
- const isProduction = require('../helpers/isProduction');
3
- const resolveDependency = require('../helpers/resolveDependency');
4
-
5
- module.exports = function VueStorefrontPerformanceModule (options) {
6
- const useRawSource = (package) => {
7
- const pkgPath = resolveDependency(`${package}/package.json`);
8
- const pkg = require(pkgPath);
9
-
10
- if (pkg.module) {
11
- this.extendBuild(config => {
12
- config.resolve.alias[pkg.name + '$'] = resolveDependency(`${package}/${pkg.module}`);
13
- });
14
- }
15
-
16
- this.options.build.transpile.push(package);
17
- log.info(`Using raw source/ESM for ${pkg.name}`);
18
- };
19
-
20
- options.useRawSource[isProduction(options) ? 'prod' : 'dev'].map(package => useRawSource(package));
21
- };
@@ -1,18 +0,0 @@
1
- const merge = require('../helpers/merge');
2
-
3
- // TODO: Create a separate nuxt module for storefront ui
4
- function loadStorefrontRawSources (options) {
5
- const rawSources = [
6
- '@storefront-ui/vue',
7
- '@storefront-ui/shared'
8
- ];
9
-
10
- options.useRawSource = merge(options.useRawSource, {
11
- dev: rawSources,
12
- prod: rawSources
13
- });
14
- }
15
-
16
- module.exports = function VueStorefrontPerformanceModule (options) {
17
- loadStorefrontRawSources.call(this, options);
18
- };